Jump to content

ted.lodestone

Members
  • Content Count

    25
  • Joined

  • Last visited

Posts posted by ted.lodestone


  1. I can't see the vote I made from the site.. Thus some of the scripts also changed since im using the old script that i had in 3cream.

     

    Please help thank you!

     

     

     helloworld,0,0,4    script    Vote For Vote    570,{    setarray @vote_item[0],		   30135, 30136, 30137, 30138, 30139, 30140, 30141;  // Item ID    setarray @vote_item_count[0],    1, 1, 1, 1, 1, 1, 1; // Item Count wich will be given    setarray @vote_cost[0],		    780, 780, 780, 780, 780, 780, 780; // Cost in Vote Points    set @min_vote, 0; // minimum count on Vote Points to see the Item List    set @npcname$,"[^ff0000Vote For Legendary Set^000000]";    query_sql ("SELECT `points` FROM `voting_points` WHERE `account_id` = ('"+getcharid(3)+"')", @vote);    mes @npcname$;    mes "You have ^ff0000"+@vote+"^000000 Vote Points!";    if( @vote < @min_vote ) {	    mes "^ff0000You will need "+@min_vote+" or more Vote Points to trade them with me!^000000";	    close;    }    if (select("Trade my Points!","Cancel~") == 2)	    close;    next;    mes "[^ff0000List^000000]";    mes "^0000ffItem^000000 = ^00aa00Cost^000000";    for( set .@i, 0; .@i < getarraysize(@vote_item); set .@i, .@i + 1 ) {	    mes "^0000ff"+@vote_item_count[.@i]+"x "+getitemname(@vote_item[.@i])+"^000000 = ^00aa00"+@vote_cost[.@i]+"^000000";	    if( .@i < 1 )		    set .@menu$, getitemname(@vote_item[.@i]);	    else		    set .@menu$, .@menu$+":"+getitemname(@vote_item[.@i]);    }    next;    select(.@menu$);    set @choice, @menu - 1;    mes @npcname$;    if( @vote_cost[@choice] > @vote ) {	    mes "^ff0000You dont have enought Vote Point for "+@vote_item_count[@choice]+"x '"+getitemname(@vote_item[@choice])+"' :/^000000";	    close;    }    mes "Are u realy sure to trade "+@vote_item_count[@choice]+"x '^ff0000"+getitemname(@vote_item[@choice])+"^000000' for ^00aa00"+@vote_cost[@choice]+"^000000 Vote Points?";    if(select("No! Cancel!:Yes, Trade me!") == 1 ) {	    mes "^ff0000Trade was canceled~^000000";	    close;    }    set .@new, @vote - @vote_cost[@choice];    if( .@new < 0 ) // safty first..	    set .@new, 0;    query_sql("UPDATE `voting_points` SET `points` = '"+.@new+"' WHERE `account_id` = ('"+getcharid(3)+"')");    getitem @vote_item[@choice], @vote_item_count[@choice];    mes "^00aa00Trade was Successfull  Hope to see u again =)!^000000";    close;} 

     


  2. I tried, changing some of the things here. but still doesn't work. can you guys help me with this please...

     

    //	....... if your server has { Overwriting user function [int__] } don't blame me ..........function	script	int__	{	set .@num, atoi(getarg(0));	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);	set .@l, getstrlen(.@num);	for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;		if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;	}	return .@num$;}//===== eAthena Script ======================================//= Private MVP/Branch Room//===== By: ===============================================//= by ~AnnieRuru~//===== Current Version: ======================================//= 1.3//===== Compatible With: ===================================== //= eAthena 11650 Trunk above or 11863 Stable above//===== Description: ========================================= //= Player can rent MVP room for the player him/herself, for party or for guilds//===== Topic =================================================//= http://www.eathena.ws/board/index.php?showtopic=187654//===== Additional Comments: ================================== //= 1.0 //= ---- break the tradition which a script only for a player, or only for a party.//=      now 1 room can be use for party and another room can use for guilds.//= ---- timeout feature to prevent player owns the room indefinitely,//=      by create a new account and sit/@at'ing inside overnight.//= ---- can disable mvp/boss summon via configuration and becomes a branch room script.//= ---- a double check to prevent players rent all the rooms for himself.//= 1.0a//= ---- fix a critial bug that the time count too fast -_-"//= 1.1//= ---- added item cost to rent or to summon//= ---- added a config to limit summoning per session//= ---- added flood control option//= 1.2//= ---- rewrite the waitingroom counter//= ---- optimize the script in a way can add custom summon group//= ---- add config to kill the monsters if the room just being left empty//= ---- add GM can kick room in use//= ---- add able to spawn in numbers//= ---- add limitspawn can configure to negative to limit spawn in that group instead of individual one//= 1.3//= ---- fix chatroom countdown issue due to rev13269//= ---- fix a bug if 2 people rent a room at same time, the later 1 will get the room//= ---- add a feature so the GM can know how long the room has rented or abandoned//= 1.4//= ---- update with new mvp and mini bosses//= ---- fix an exploit if server allow to use @mail, player can send item/zeny away to prevent item/zeny deletion when registering the room//= ---- players die inside mvp room shouldn't lose exp//========================================================//	This is the shop for this Branch room IF you already enable it. Can sell whatever things you want.-	shop	MVP room#branch	-1,604:100000,12103:1000000-	script	MVP Summoner	-1,{	goto L_Start;OnInit:	getmapxy .@map$, .@x, .@y, 1;	if ( .@map$ == "" ) {//	Config ---------------------------------------------------------------------------------------	// Time for rent a room IN MINUTES. When time out, players inside the room will kick out. Do Not set this as 0	set .timeout, 60;	// if the room left empty for # minutes, will be treated as give up the room. Do Not set this as 0	set .nobodygiveup, 5;	// NOTE : The script only search item OR zeny. if you specify item amount, then it will ask for the item. If item amount is 0, then it will ask for zeny.	// the cost to rent a room	set .rentitemid, 30105; // item id use for rent a room - 674 - mithil coin	set .rentitemamount, 25; // amount of items to rent a room	set .rentcost, 1000000; // otherwise, zeny cost to rent a room	// limit each room can only summon 1 monster at a time. (only the Summoning option)	// Turn it off (0) means the player can summon a lot of monsters as long as the player has enough zeny/item. High rate server players love the room with a lot MVPs	// Turn it on (1) means the player have to kill existing monster before can summon a new one. Low rate server player prefer to take out MVP 1 by 1	set .floodcontrol, 0;	// if .floodcontrol is turn off, your players might experience lag if they summoned too many MVPs	// so what is the maximum input to limit your players summon too many ?	set .inputlimit, 30;	// If the room has left over monsters while nobody in the room and the room not give up yet, shall we kill monsters in empty room ?	set .killmonster, 1; // Default is yes	//	Options menu setting for MVP Summoner NPC.	set .@menu[0], 1; // Turn Heal option On/Off	set .@menu[1], 1; // Turn Group 1 summons On/Off -> MVP	set .@menu[2], 0; // Turn Group 2 summons On/Off -> mini boss	set .@menu[3], 0; // Turn Group 3 summons On/Off	set .@menu[4], 0; // Turn Group 4 summons On/Off	set .@menu[5], 0; // Turn Group 5 summons On/Off	set .@menu[6], 0; // Turn Group 6 summons On/Off	set .@menu[7], 0; // Turn Group 7 summons On/Off	set .@menu[8], 0; // Turn Group 8 summons On/Off	set .@menu[9], 0; // Turn Group 9 summons On/Off	set .@menu[10], 0; // Sell shop items options On/Off ( shop npc above )	//	set respawn point when they leave the room. Obviously warp to the Private MVP Room Warper npc	set .respawnmap$, "prt_vilg02"; // Note : "SavePoint" does NOT work	set .respawnx, 150;	set .respawny, 174;	// The minimum GM level can kick a room in use	set .gmlvlkick, 80;	// .limitspawn in previous revision changed to .grouplimit .	// it is for limit each monster spawn per session, prevent them only killing same monster again and again	// Now you can configure one group has limited summon, and another group has unlimited summon	// Tips: if you server has an insane custom MVP, you can put your custom mob to Group 3~9 with insane item cost, and limit only 1 summon per session	// .grouplimit use amount, means if group1limit set to 10, then each session can only summon up to 10 amount of that kind of monster. 0 is unlimited	// ---------	// Group 1 -> MVP 	// ---------	set .group1name$, "MVP"; // Group 1 name	set .group1itemid, 12103; // item id use for summon any Group 1 monster - 674 - mithil coin	set .group1itemamount, 5; // amount of items to summon a Group 1 monster	set .group1cost, 10000000; // if no item is specify, zeny cost to summon a Group 1 monster	set .group1limit, 0; // limit of summon of Group 1 monster per session, prevent them only killing same monster again and again	setarray .group1id,		1647,// Assassin Cross Eremes		1649,// High Priest Magaleta		1651,// High Wizard Katrinn		1646,// Lord Knight Seyren		1650,// Sniper Shecil		1648;// Whitesmith Harword	// ---------	// Group 2 -> mini boss	// ---------	set .group2name$, "mini boss"; // Group 2 name	set .group2itemid, 674; // item id use for summon any Group 2 monster - 674 - mithil coin	set .group2itemamount, 0; // amount of items to summon a Group 2 monster	set .group2cost, 10000; // if no item is specify, zeny cost to summon a Group 2 monster	set .group2limit, 0; // limit of summon of Group 2 monster per session, prevent them only killing same monster again and again	setarray .group2id,		1096,// Angeling		1388,// Archangeling		1795,// Bloody Knight		1830,// Bow Guardian		1839,// Byorgue		1309,// Cat O' Nine Tail		1283,// Chimera		1302,// Dark Illusion		1198,// Dark Priest		1582,// Deviling		1091,// Dragon Fly		1093,// Eclipse		1205,// Executioner		1783,// Galion		1592,// Gangster		1120,// Ghostring		1259,// Gryphon		1720,// Hydro		1090,// Mastering		1289,// Maya Purple		1262,// Mutant Dragon		1203,// Mysteltainn		1870,// Necromancer		1295,// Owl Baron		1829,// Sword Guardian		1204,// Tirfing		1089,// Toad		1092,// Vagabond Wolf		1765;// Valkyrie	// ---------	// Group 3	// ---------	set .group3name$, "Poring-Family"; // Group 3 name	set .group3itemid, 12109; // item id use for summon any Group 3 monster - 12109 - Poring box	set .group3itemamount, 1; // amount of items to summon a Group 3 monster	set .group3cost, 0; // if no item is specify, zeny cost to summon a Group 3 monster	set .group3limit, -5; // limit of summon of Group 3 monster per session, prevent them only killing same monster again and again	setarray .group3id,		1002,// Poring		1113,// Drops		1031,// Poporing		1242,// Marin		1062,// Santa Poring		1613,// Metaling		1784,// Stapo		1090,// Mastering		1096,// Angeling		1120,// Ghostring		1582,// Deviling		1388,// Arc Angeling		1502;// Pori Pori	// ---------	// Group 4	// ---------	set .group4name$, ""; // Group 4 name	set .group4itemid, 0; // item id use for summon any Group 4 monster	set .group4itemamount, 0; // amount of items to summon a Group 4 monster	set .group4cost, 0; // if no item is specify, zeny cost to summon a Group 4 monster	set .group4limit, 0; // limit of summon of Group 4 monster per session, prevent them only killing same monster again and again	setarray .group4id,		1001,		1002;	// ---------	// Group 5	// ---------	set .group5name$, ""; // Group 5 name	set .group5itemid, 0; // item id use for summon any Group 5 monster	set .group5itemamount, 0; // amount of items to summon a Group 5 monster	set .group5cost, 0; // if no item is specify, zeny cost to summon a Group 5 monster	set .group5limit, 0; // limit of summon of Group 5 monster per session, prevent them only killing same monster again and again	setarray .group5id,		1001,		1002;	// ---------	// Group 6	// ---------	set .group6name$, ""; // Group 6 name	set .group6itemid, 0; // item id use for summon any Group 6 monster	set .group6itemamount, 0; // amount of items to summon a Group 6 monster	set .group6cost, 0; // if no item is specify, zeny cost to summon a Group 6 monster	set .group6limit, 0; // limit of summon of Group 6 monster per session, prevent them only killing same monster again and again	setarray .group6id,		1001,		1002;	// ---------	// Group 7	// ---------	set .group7name$, ""; // Group 7 name	set .group7itemid, 0; // item id use for summon any Group 7 monster	set .group7itemamount, 0; // amount of items to summon a Group 7 monster	set .group7cost, 0; // if no item is specify, zeny cost to summon a Group 7 monster	set .group7limit, 0; // limit of summon of Group 7 monster per session, prevent them only killing same monster again and again	setarray .group7id,		1001,		1002;	// ---------	// Group 8	// ---------	set .group8name$, ""; // Group 8 name	set .group8itemid, 0; // item id use for summon any Group 8 monster	set .group8itemamount, 0; // amount of items to summon a Group 8 monster	set .group8cost, 0; // if no item is specify, zeny cost to summon a Group 8 monster	set .group8limit, 0; // limit of summon of Group 8 monster per session, prevent them only killing same monster again and again	setarray .group8id,		1001,		1002;	// ---------	// Group 9	// ---------	set .group9name$, ""; // Group 9 name	set .group9itemid, 0; // item id use for summon any Group 9 monster	set .group9itemamount, 0; // amount of items to summon a Group 9 monster	set .group9cost, 0; // if no item is specify, zeny cost to summon a Group 9 monster	set .group9limit, 0; // limit of summon of Group 9 monster per session, prevent them only killing same monster again and again	setarray .group9id,		1001,		1002;//	Config Ends ------------------------------------------------------------------------		if ( .timeout == 0 ) set .timeout, 60;		if ( .nobodygiveup == 0 ) set .nobodygiveup, 5;		if ( .inputlimit < 1 ) set .inputlimit, 1;		if ( .rentitemid && .rentitemamount ) {			if ( getitemname(.rentitemid) == "null" ) {				debugmes "Private MVP Room: Rent a room is using invalid item id.";			}		}		set .@i, 1;		while ( .@i <= 9 ) {			if ( .@menu[.@i] && getd(".group"+ .@i +"itemid") && getd(".group"+ .@i +"itemamount") ) {				if ( getitemname( getd(".group"+ .@i +"itemid") ) == "null" ) {					debugmes "Private MVP Room: Group no. "+ .@i +" is using invalid item id.";				}			}			set .@i, .@i +1 ;		}		set .menu$, ( (.@menu[0])?"Heal":"" )+":"+( (.@menu[1])?"Summon "+ .group1name$:"" )+":"+( (.@menu[2])?"Summon "+ .group2name$:"" )+":"+( (.@menu[3])?"Summon "+ .group3name$:"" )+":"+( (.@menu[4])?"Summon "+ .group4name$:"" )+":"+( (.@menu[5])?"Summon "+ .group5name$:"" )+":"+( (.@menu[6])?"Summon "+ .group6name$:"" )+":"+( (.@menu[7])?"Summon "+ .group7name$:"" )+":"+( (.@menu[8])?"Summon "+ .group8name$:"" )+":"+( (.@menu[9])?"Summon "+ .group9name$:"" )+":"+( (.@menu[10])?"Buy branches":"" )+":Leave this room:Give up this room";		set .@i, 1;		while ( .@i <= 9 ) {			setd ".group"+ .@i +"idsize", getarraysize( getd(".group"+ .@i +"id") );			if ( .@menu[.@i] && getd(".group"+ .@i +"limit") <= 0 ) {				set .@j, 0;				while ( .@j < getd(".group"+ .@i +"idsize") ) {					setd ".group"+ .@i +"menu$", getd(".group"+ .@i +"menu$") + getmonsterinfo( getd(".group"+ .@i +"id["+ .@j +"]"), 0) +":";					set .@j, .@j +1 ;				}			}			set .@i, .@i +1 ;		}	}	else {		sleep 1;		mapannounce .@map$, "Admin has refresh the server, please register the room again.", 1;		mapwarp .@map$, .respawnmap$, .respawnx, .respawny;	}	end;L_Start: // I hate gotos ... but ...	set .@dif, strnpcinfo(2);	if ( .remind[.@dif] == 0 ) {		set .remind[.@dif], 1;		initnpctimer;	}	mes "[MVP Summoner]";	mes "Hi, what can I do for you ?";	next;	switch ( select(.menu$) ) {		case 1:			mes "[MVP Summoner]";			if ( getmapmobs("this") > 0 ) {				mes "I cannot offer heal service when there are monsters around.";				close;			}			sc_end sc_stone;			sc_end sc_slowdown;			sc_end sc_freeze;			sc_end sc_sleep;			sc_end sc_curse;			sc_end sc_silence;			sc_end sc_confusion;			sc_end sc_blind;			sc_end sc_bleeding;			sc_end sc_decreaseagi;			sc_end sc_poison;			sc_end sc_hallucination;			sc_end sc_stripweapon;			sc_end sc_striparmor;			sc_end sc_striphelm;			sc_end sc_stripshield;			sc_end sc_changeundead;			sc_end sc_orcish;			sc_end sc_berserk;			sc_end sc_ske;			sc_end sc_swoo;			sc_end sc_ska;			percentheal 100,100;			specialeffect2 7;			mes "You have completely healed.";			close;		default:			set .@group, @menu -1;			if ( .floodcontrol && getmapmobs("this") > 0 ) {				mes "[MVP Summoner]";				mes "I cannot summon another monster when there are monsters around.";				close;			}			else if ( getd(".group"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) {				mes "[MVP Summoner]";				mes "The cost to summon a "+ getd(".group"+ .@group +"name$") +" is "+ getd(".group"+ .@group +"itemamount") +" "+ getitemname( getd(".group"+ .@group +"itemid") ) +".";				if ( getd(".group"+ .@group +"limit") < 0 )					mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group.";				next;			}			else if ( getd(".group"+ .@group +"cost") ) {				mes "[MVP Summoner]";				mes "The cost to summon a "+ getd(".group"+ .@group +"name$") +" is "+ callfunc("int__", getd(".group"+ .@group +"cost") ) +" zeny.";				if ( getd(".group"+ .@group +"limit") < 0 )					mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group.";				next;			}			else if ( getd(".group"+ .@group +"limit") < 0 ) {				mes "[MVP Summoner]";				mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group.";				next;			}			if ( getd(".group"+ .@group +"limit") < 0 && getd(".group"+ .@group +"limit"+ .@dif) >= ~getd(".group"+ .@group +"limit")+1 ) {				mes "[MVP Summoner]";				mes "I'm sorry, but you can't summon any more monster for this group.";				close;			}			else if ( getd(".group"+ .@group +"limit") > 0 ) {				for ( set .@i, 0; .@i < getd(".group"+ .@group +"idsize"); set .@i, .@i +1 )					set .@menu$, .@menu$ +( ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") >= getd(".group"+ .@group +"limit") )?"^999999":"^000000" )+ getmonsterinfo( getd(".group"+ .@group +"id["+ .@i +"]"), 0) +" ("+ ( ( getd(".group"+ .@group +"limit") - getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") <= 0 )?0:( getd(".group"+ .@group +"limit") - getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") ) ) +")"+":";				set .@menu, select(.@menu$) -1;			}			else				set .@menu, select( getd(".group"+ .@group +"menu$") ) -1;			mes "[MVP Summoner]";			if ( .floodcontrol == 0 && .inputlimit > 1 ) {				mes "Input an amount of monsters to summon.";				next;				input .@amount;				if ( .@amount == 0 ) close;				else if ( .@amount > .inputlimit )					set .@amount, .inputlimit;				mes "[MVP Summoner]";			}			else				set .@amount, 1;			if ( getd(".group"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) {				if ( countitem( getd(".group"+ .@group +"itemid") ) < getd(".group"+ .@group +"itemamount") * .@amount ) {					mes "You don't have enough "+ getitemname( getd(".group"+ .@group +"itemid") ) +" to summon a "+ getd(".group"+ .@group +"name$") +".";					close;				}			}			else if ( getd(".group"+ .@group +"cost") ) {				if ( zeny < getd(".group"+ .@group +"cost") * .@amount ) {					mes "You don't have enough zeny to summon a "+ getd(".group"+ .@group +"name$") +".";					close;				}			}			if ( .floodcontrol && getmapmobs("this") > 0 ) {				mes "I cannot summon another monster when there are monsters around.";				close;			}			else if ( getd(".group"+ .@group +"limit") > 0 ) {				if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") >= getd(".group"+ .@group +"limit") ) {					mes "I'm sorry, but you already summoned that monster too much. Try summon another.";					close;				}				else if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount > getd(".group"+ .@group +"limit") ) {					mes "The amount you input is more than the limit you can summon. Try reduce the amount.";					close;				}			}			else if ( getd(".group"+ .@group +"limit") < 0 ) {				if ( getd(".group"+ .@group +"limit"+ .@dif) >= ~getd(".group"+ .@group +"limit")+1 ) {					mes "I'm sorry, but you can't summon any more monster for this group.";					close;				}				else if ( getd(".group"+ .@group +"limit"+ .@dif) + .@amount > ~getd(".group"+ .@group +"limit")+1 ) {					mes "The amount you input is more than the limit you can summon. Try reduce the amount.";					close;				}			}			mes "Summoning "+ .@amount +" "+ getmonsterinfo( getd(".group"+ .@group +"id["+ .@menu +"]"), 0) +".";			mes "Ok, get ready ?";			close2;			if ( .floodcontrol && getmapmobs("this") > 0 ) end;			if ( getd(".group"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) {				if ( countitem( getd(".group"+ .@group +"itemid") ) < getd(".group"+ .@group +"itemamount") * .@amount ) end;				delitem getd(".group"+ .@group +"itemid"), getd(".group"+ .@group +"itemamount") * .@amount;			}			else if ( getd(".group"+ .@group +"cost") ) {				if ( zeny < getd(".group"+ .@group +"cost") * .@amount ) end;				set zeny, zeny - getd(".group"+ .@group +"cost") * .@amount;			}			if ( getd(".group"+ .@group +"limit") > 0 ) {				if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount > getd(".group"+ .@group +"limit") ) end;				setd ".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]", getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount;			}			else if ( getd(".group"+ .@group +"limit") < 0 ) {				if ( getd(".group"+ .@group +"limit"+ .@dif) + .@amount > ~getd(".group"+ .@group +"limit")+1 ) end;				setd ".group"+ .@group +"limit"+ .@dif, getd(".group"+ .@group +"limit"+ .@dif) + .@amount;			}			monster "this", 0, 0, "--ja--", getd(".group"+ .@group +"id["+ .@menu +"]"), .@amount;			end;		case 11:			if ( getmapmobs("this") > 0 ) {				mes "[MVP Summoner]";				mes "I cannot offer this service when there are monsters around.";				close;			}			close2;			callshop "MVP room#branch", 0;			end;		case 12:			mes "[MVP Summoner]";			mes "Are you sure you want to leave this room ?";			mes "If this room left empty for more than "+ .nobodygiveup +" minutes, you lost ownership for this room.";			if ( select( "Yes:No") == 2 ) close;			warp .respawnmap$, .respawnx, .respawny;			end;		case 13:			mes "[MVP Summoner]";			getmapxy .@map$, .@x, .@y, 0;			if ( getmapusers(.@map$) > 1 ) {				mes "There are still some players in this room. Make sure you are the last member in this room to use this option.";				close;			}			mes "Are you sure you want to give up this room ?";			if ( .rentcost )				mes "You will need to pay again to enter this room.";			next;			if ( select( "Yes:No" ) == 2 ) close;			warp .respawnmap$, .respawnx, .respawny;			set .remaintime[.@dif], -1;			end;	}	close;OnEnterMap:	set .@dif, strnpcinfo(2);	set .remind[.@dif], 0;	for ( set .@i, 1; .@i <= 9; set .@i, .@i +1 )		deletearray getd(".group"+ .@i +"limit"+ .@dif), getd(".group"+ .@i +"idsize");	set .nobodycounter[.@dif], 0;	getmapxy .@map$, .@x, .@y ,1;	set .starttime[.@dif], gettimetick(2);	do {		set .remaintime[.@dif], .timeout * 60 + .starttime[.@dif] - gettimetick(2);		set .@hour[.@dif], .remainTime[.@dif] / 3600 ;		set .@min[.@dif], .remainTime[.@dif] % 3600 / 60 ;		set .@sec[.@dif], .remainTime[.@dif] % 3600 % 60 ;		delwaitingroom strnpcinfo(0);		waitingroom "Time Left = "+( ( .@hour[.@dif] )?( .@hour[.@dif] +":"):"" )+( ( .@min[.@dif] < 10 )?"0"+ .@min[.@dif]: .@min[.@dif] )+":"+( ( .@sec[.@dif] < 10 )?"0"+ .@sec[.@dif]: .@sec[.@dif] ), 0;		if ( getmapusers(.@map$) )			set .nobodycounter[.@dif], 0;		else {			set .nobodycounter[.@dif], .nobodycounter[.@dif] +1 ;			if ( .nobodycounter[.@dif] > .nobodygiveup * 60 ) break;		}		sleep 995;	} while ( .remaintime[.@dif] > 1 );	set .remaintime[.@dif], 0;	delwaitingroom "MVP Summoner#"+ .@dif;	mapwarp .@map$, .respawnmap$, .respawnx, .respawny;	end;OnTimer100:	stopnpctimer;	npctalk "Hi ~ the bubble above my head is the countdown for using this room.";	sleep 2000;	npctalk "Sometimes, I can skip for about 1 second in the countdown.";	sleep 3000;	npctalk "That is because the server is experiencing minor lag problem.";	sleep 3000;	npctalk "So, don't complain about me cheated for the countdown ~ ^.^";	sleep 3000;	npctalk "Have a nice day ~";	end;}Harbour,103,226,5	script	Private LHZ Room	596,{	mes "[Private MVP Room]";	mes "Please select a private MVP room.";	if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") )		mes "The cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is "+ getvariableofnpc(.rentitemamount, "MVP Summoner") +" "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +".";	else if ( getvariableofnpc(.rentcost, "MVP Summoner") )		mes "The cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is "+ callfunc("int__", getvariableofnpc(.rentcost, "MVP Summoner") ) +" zeny.";	else		mes "You can only use the room for only "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes.";	mes " ";	for ( set .@i, 1; .@i <= 8; set .@i, .@i +1 ) {		if ( getvariableofnpc(.remaintime[.@i],"MVP Summoner") ) {			switch ( .type[.@i] ) {				case 1: set .@color$, "^EE8800"; break;				case 2: set .@color$, "^70CC11"; break;				case 3: set .@color$, "^0000FF"; break;				default: set .@color$, "^000000";			}			mes "Room #"+ .@i +" = "+ .@color$ + .whoinuse$[.@i] +"^000000";		}	}	next;	set .@room, select("MVP Room 1 ["+ getmapusers("06guild_01") +"]",		"MVP Room 2 ["+ getmapusers("06guild_02") +"]",		"MVP Room 3 ["+ getmapusers("06guild_03") +"]",		"MVP Room 4 ["+ getmapusers("06guild_04") +"]",		"MVP Room 5 ["+ getmapusers("06guild_05") +"]",		"MVP Room 6 ["+ getmapusers("06guild_06") +"]",		"MVP Room 7 ["+ getmapusers("06guild_07") +"]",		"MVP Room 8 ["+ getmapusers("06guild_08") +"]");	if ( getvariableofnpc(.remaintime[.@room],"MVP Summoner") ) {		if ( .inuseid[.@room] == getcharid(.type[.@room]) ) {			if ( getvariableofnpc(.killmonster,"MVP Summoner") && getmapusers("06guild_0"+ .@room) == 0 )				killmonsterall "06guild_0"+ .@room;			warp "06guild_0"+ .@room, 0,0;			end;		} else {			mes "[Private MVP Room]";			switch ( .type[.@room] ) {				case 1: set .@color$, "^EE8800Party "; break;				case 2: set .@color$, "^70CC11Guild "; break;				case 3: set .@color$, "^0000FFPlayer ";			}			mes "This room is reserved for ";			mes .@color$ + .whoinuse$[.@room] +"^000000 .";			if ( getgmlevel() < getvariableofnpc(.gmlvlkick,"MVP Summoner") ) {				mes "Please select another.";				close;			}			mes " ";			mes "Currently there are "+ getmapusers("06guild_0"+ .@room) +" players";			mes "in that room.";			set .@remaintime, getvariableofnpc(.remaintime[.@room],"MVP Summoner");			mes "It still has "+( .@remaintime /60 )+"mn "+( .@remaintime %60 )+"s left.";			set .@nobodycounter, getvariableofnpc(.nobodycounter[.@room],"MVP Summoner");			if ( .@nobodycounter )				mes "And have left empty for "+( .@nobodycounter /60 )+"mn "+( .@nobodycounter %60 )+"s.";			mes "Kick them ?";			next;			if ( select ( "No:Yes" ) == 1 ) close;			set getvariableofnpc(.remaintime[.@room],"MVP Summoner"), -1;			mes "[Private MVP Room]";			mes "Room#"+ .@room +" is empty now.";			close;		}	}	mes "[Private MVP Room]";	if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {		if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) {			mes "You don't have enough "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +" to rent a room.";			close;		}	}	else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) {		if ( zeny < getvariableofnpc(.rentcost, "MVP Summoner") ) {			mes "You don't have enough zeny to rent a room.";			close;		}	}	mes "You reserve this room for ...";	next;	set .@type, select("For my party members", "For my guild members", "For personal account use" );	if ( getcharid(.@type) == 0 ) {		mes "[Private MVP Room]";		mes "You do not own a "+( (.@type == 1)?"Party":"Guild" )+".";		close;	}	else if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {		if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) {			mes "You don't have enough "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +" to rent a room.";			close;		}	}	else if ( getvariableofnpc(.remaintime[.@room],"MVP Summoner") ) {		mes "[Private MVP Room]";		mes "I'm sorry, somebody else has already register this room faster than you.";		close;	}	for ( set .@i, 1; .@i <= 8; set .@i, .@i +1 ) {		if ( getvariableofnpc(.remaintime[.@i],"MVP Summoner") && .@type == .type[.@i] && getcharid(.@type) == .inuseid[.@i] ) {			mes "[Private MVP Room]";			mes "You already rented Room#"+ .@i +". Use that room instead.";			close;		}	}	set .type[.@room], .@type;	set .inuseid[.@room], getcharid(.@type);	set .whoinuse$[.@room], strcharinfo( (.@type == 3)?0:.@type );	if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {		if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) end;		delitem getvariableofnpc(.rentitemid, "MVP Summoner"), getvariableofnpc(.rentitemamount, "MVP Summoner");	}	else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) {		if ( zeny < getvariableofnpc(.rentcost, "MVP Summoner") ) end;		set zeny, zeny - getvariableofnpc(.rentcost, "MVP Summoner");	}	warp "06guild_0"+ .@room, 0,0;	killmonsterall "06guild_0"+ .@room;	donpcevent "MVP Summoner#"+ .@room +"::OnEnterMap";	end;}06guild_01,49,49,4	duplicate(MVP Summoner)	MVP Summoner#1	11606guild_02,49,49,4	duplicate(MVP Summoner)	MVP Summoner#2	11606guild_03,49,49,4	duplicate(MVP Summoner)	MVP Summoner#3	11606guild_04,49,49,4	duplicate(MVP Summoner)	MVP Summoner#4	11606guild_05,49,49,4	duplicate(MVP Summoner)	MVP Summoner#5	11606guild_06,49,49,4	duplicate(MVP Summoner)	MVP Summoner#6	11606guild_07,49,49,4	duplicate(MVP Summoner)	MVP Summoner#7	11606guild_08,49,49,4	duplicate(MVP Summoner)	MVP Summoner#8	11606guild_01	mapflag	nowarpto06guild_02	mapflag	nowarpto06guild_03	mapflag	nowarpto06guild_04	mapflag	nowarpto06guild_05	mapflag	nowarpto06guild_06	mapflag	nowarpto06guild_07	mapflag	nowarpto06guild_08	mapflag	nowarpto06guild_01	mapflag	nomemo06guild_02	mapflag	nomemo06guild_03	mapflag	nomemo06guild_04	mapflag	nomemo06guild_05	mapflag	nomemo06guild_06	mapflag	nomemo06guild_07	mapflag	nomemo06guild_08	mapflag	nomemo06guild_01	mapflag	noteleport06guild_02	mapflag	noteleport06guild_03	mapflag	noteleport06guild_04	mapflag	noteleport06guild_05	mapflag	noteleport06guild_06	mapflag	noteleport06guild_07	mapflag	noteleport06guild_08	mapflag	noteleport06guild_01	mapflag	nosave	SavePoint06guild_02	mapflag	nosave	SavePoint06guild_03	mapflag	nosave	SavePoint06guild_04	mapflag	nosave	SavePoint06guild_05	mapflag	nosave	SavePoint06guild_06	mapflag	nosave	SavePoint06guild_07	mapflag	nosave	SavePoint06guild_08	mapflag	nosave	SavePoint06guild_01	mapflag	nopenalty06guild_02	mapflag	nopenalty06guild_03	mapflag	nopenalty06guild_04	mapflag	nopenalty06guild_05	mapflag	nopenalty06guild_06	mapflag	nopenalty06guild_07	mapflag	nopenalty06guild_08	mapflag	nopenalty

     

    Thank you..


  3. Help guys with regards to this issue.
     
     
    *** How can i patch System files for Ragnarok in neoncube?
    For example:
    I need to patch C:Program FilesRagnarokSystemiteminfo.lua


    and How can i patch client in neoncube?
    For example:
    I need to change my EXE clients for another one EXE?

    Thanks in advance! ***
     

  4. I have no idea on that ones, but maybe you're using the configuration that makes GMs ignore items and other requirements for skills?

    got it thank you! 

     

    And sir, what about.. patching the System Folder itself. Since I tried to include it to the patch but the client prefer to read the folder not the patch, then when I try to removed it from the ro folder, it errors me out. 

     

     

    using neoncube.

     

    is this the correct format perhaps? 

    43         FLD            System.zip


  5. Thanks for all the help guys!~ Thank you Jabote! almost forgot to close this thread, but yeah, before I closed it..got some more questions please.. does the latest ITEM_DB supports 3rd job skill requierements? since the Emergency cool seems not working.. and also mistress card won't count the red gemstone, and vulcan bullet doesn't count also as a requirement for Flamethrower and summon homun using embreyo doens't work either..

     

     

     

    *** well, just figured it out.. its already done, but the red gemstone and also the homun still doesn't work? any idea please?


  6. About the mob, when using a valid available ID (I tried 2955) there's no problem when using the mob I told you to try before:

    2955,WHISPORING,WHISPORING,WHISPORING,60,79523,0,4152,2173,1,669,890,54,58,1,65,80,74,65,105,10,12,1,8,66,0X37B5,180,1072,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

     

    [Status]: Done reading '1' entries in 'db/mob_db2.txt'.

     

     

    I have neither the mob's skills and/or sprite (or the mob_avail entry) so I can't be much more of help without that info.

     

    well that works.. thanks, but why 3006 ID doesn't.. :unsure:


  7. Let's go step by step even for the FCP, so that you get used to Hercules a bit faster.

     

    On Hercules (it's not present in 3CeAM) we have a db file which manages what status can be removed/dispelled by what event (death, dispell, etc.) and it's located in db/sc_config.txt. FCP is the sum of the individual alchemist strip protections, so on that DB they are these:

    SC_PROTECTWEAPON, 28SC_PROTECTSHIELD, 28SC_PROTECTARMOR, 28SC_PROTECTHELM, 28

     

    Which, according to the key at the start of the file, means 16 + 8 + 4 which means: buff, can't be reset by Dispell and can't be reset by Clearance. If Dispell was able to remove it something would be wrong since that file is shared among pre-re and re.

     


     

    For the sight range of players, maybe you mean this setting in /conf/battle/client.conf, line 45:

    // Visible area size (how many squares away from a player can they see)area_size: 14

     

    If changing it (and issuing @reloadbattleconf or restarting the server) doesn't change anything, then it's possible that the client has a maximum sight range hardcoded and then you won't be able to change it to more than it is. I don't know the truthfulness of this last thing.

    Reallly, I can't thank you enough! Issue was resolved.. but not the custom mobs though.. I might try replacing the exisiting non-usable mobs such as E_MARIN etc.. that might work, editing its sprite and all.. because I did try already to copy the stat of the existing mob and just changed its name, and ID but still it won't read it.. anyhow, Thank you so much guys for your help! I'm loving the assistance of the herc community! more power to us! :)


  8.  

    Trying that mob, only errors I get are these:

    [Error]: mob_parse_dbrow: Invalid monster ID 3147. Range 3001-3999 is reserved for player clones. Please increase MAX_MOB_DB (4000).[Error]: sv_readdb: Could not process contents of line 48 of "db/mob_db2.txt".

    Line 48 is the one that holds your Whisporing in the mob_db2 I tested.

     

    You can do two things for solving this:

    • Change the ID of the Whisporing to an available one (right now, checking renewal mob_db you can see IDs from 2381 onwards are free). Just in case, remember to also update the mob entries in db/mob_skill_db2.txt and db/mob_avail.txt, and whichever custom or modified scripts you have that reference the mob.
    • Increase the value of MAX_MOB_DB in src/map/mob.h, line 19. I don't know what happens if you use existent job IDs but it can't be pretty, so avoid collisions with job sprites. In case you modify this, when you get to monster ID 4000 it'd be clever if next mob ID starts in around 4500 for letting room for new jobs to accomodate (Oboro and Kagerou are using job IDs 4211 and 4212).

    Thank you so much will try that .. and one more thing, does dispel really dispell fcp's? and you know also about the visibility range because npc's vanishes automatically if you walk like 8 9 cells away.? since its pretty close,can i adjust that .. Sorry for raping you with questions;_;


  9. Last time I tried Toasty it worked but it was months ago. I'll make a try whenever I have time, but I haven't available a recent version of Herc server right now. That'd be a pity since on my old eA server I used Toasty's and would love to keep using it in case I have another server, this time Herc based.

     

    About the mob, after a quick manual check I find there's a problem on that mob, exactly what the DB says:

    Drop number 8 is item ID# 1500, which is unexistent and drops at 0.00% rate and I've counted 1 more column than necessary. Maybe removing that column will solve your error. Try this:

    3147,WHISPORING,WHISPORING,WHISPORING,60,79523,0,4152,2173,1,669,890,54,58,1,65,80,74,65,105,10,12,1,8,66,0X37B5,180,1072,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

     

    Hope this helps again.

     

    if you put the monster info in your mob_db.txt, you must put "1 blank line" after the last mob you put in your mob_db.txt

     I tried both but yeah, it won't read it.. I figured out how the change of stat on the mob will applied, but im still struggling with adding the custom mob.. it won't work. ;_; i put it on /db/mob_db2.txt but still same.. it wont read it.


  10. I'm using the pre-re, did commented out the //#define RENEWAL and the others.. but just weird that it wont edit it :/ i even remove the mob_db in sql.. and do @reloadmobdb.. but never tried to restart the server since.. i guess @reloadmobdb will do the job, like my old emu do.


  11. Yup just figured it out,. Correct, Thank you...  follow up question.. I was editing the HP and other stat of the mobs, but... It wont do it.. ? I'm editing it using the /pre-re/mob_db.txt do i need to *edit others for it to take effect?


  12. 3147,WHISPORING,WHISPORING,WHISPORING,60,79523,0,4152,2173,1,669,890,54,58,1,65,80,74,65,105,10,12,1,8,66,0X37B5,180,1072,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1500,0,0,0,0,0,0 

    I did but, still the same issue.. and im wondering if changing the stat of a mob,you just need to edit mob.txt, because. it seems it doesn't change like increasing the HP, do I need to edit like a other .txt files? sorry.. I'm new to herc.


  13. post WoE controller code

    //======================================================================================================//= Toasty's WoE Controller (formerly WoE Info Banner)//===== By: ============================================================================================//= ToastOfDoom (aka: iHeart)//===== Current Version: ===============================================================================//= 1.22//===== Description: ===================================================================================//= A WoE Controller function which controls castle based WoE by utilising npc events. //= Includes a NPC that provides information on the next WoE session//=//= This script is kinda @reloadscript/@loadnpc safe, provided that someone clicks the NPCs afterwards //= to start the OnInit function. That said..it is recommended that you don't use @reloadscript/@loadnpc //= but reset your server.//===== Changelog: =====================================================================================//= 1.22//= - Fixed an issue regarding the controller getting confused when using @reloadscript/loadnpc while//=   WoE was still active. (thanks to annie for pointing out)//= 1.21//= - Fixed a misspelt variable name (thanks to rahuldev345 for pointing out)//= 1.20//= - Project renamed to 'Toasty's WoE Controller'. The script originally was only used to display WoE //=   times then I 1st wrote it 3yrs ago and I feel it's purpose is more to control WoE these days. So //=   name change to better reflect purpose.//= - Added support for novice WoE. Region teleport goes to the Novice Warper NPC (default in prontera)//=   Change position in .region_maps, .region_x, .region_y if needed.//= - Region warp now only displays regions that have castles used at least once. (eg. If you don't //=   configure any castles for Payon region, payon will not show up)//= - Optimised WoE Active/Inactive map notifier. Old method used too many loops for something that//=   can happen alot.//= - Adjusted menus to be abit more friendly. 'next's will always display before 'menu's//= - Fixed bug with WoE autostarting when only configured for 2 sessions in one day//= - Added some nifty code that prevents catastrophic failure of the script if you try to run a trunk //=   version on a stable server (ie. if you do, it will show an error message, but script will still //=   run perfectly fine - check out WoEToggler function for those that want to peek at it =P)//= 1.11//= - Fixed timer glitch when players only configured sessions for one day of the week//= - Adjusted timer to show remaining time more accurately//= - Modified .num_woes calculation due to bug regarding 0's being counted as unset values in arrays//= 1.10//= - Expanded script to allow castle based configuration//= - Moved away from portal based woe control. Now using donpcevents to OnAgitEnd/2 events. Provided //=   castles are linked to the main agit commands in this manner, they will be controllable using this //=   script.//= - Added an onLoadMap WoE available notifier. Can be disabled by setting .notify_woe to 0 in the //=   CONFIG section.//= - Did some funky color coding.//= - Added Coordinate based warping per region (see .region_x & .region_y in the CONSTANTS section)//= 1.02//= - Added delwaitingroom to banner npc to prevent memory leaks from bug #2325//= - To reduce spamming of waitingroom packets to players banner NPC only now updates when the banner //=   text changes. Thus min time between updates is now 1sec regardless of setting.//= - Added setting for rate which banner time is updated (.banner_refresh_rate) in the CONFIG section.//= - Added agitstart2/end2 to provide WoE2 support (Hope it works ;)//= 1.01//= - Hardcoded in refresh value for banner npc instead of getting it from config from WoEInfoBase. Had //=   issues starting the script after @reloadscript/@loadnpc//======================================================================================================-	script	WoEInfoBase	-1,{	OnStartMenu:		if(.init == 0)			donpcevent strnpcinfo(3)+"::OnInit";		OnStartMenu2:		mes "The " + ((.state)?"^00DD00current":"^DD0000next") + "^000000 WoE session is: ";		mes " ";		mes "Day: ^0000DD" + .daysOfWeek$[.woe_day[.woe_index]];		mes "^000000Start time: ^00DD00" + .woe_0_str$[.woe_index];		mes "^000000End time: ^DD0000" + .woe_1_str$[.woe_index];		mes "^000000Region:";		set .@state_strs$, ".woe_state_str_" + .woe_state[.woe_index] + "$";		for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {			set .@output$, getd(.@state_strs$ + "[" + .@i + "]");			if(.@output$ != "")				mes "^000000- ^0000DD" + .@output$;		}		next;				if(getgmlevel() >= .gm_access)			select(				"Warp to Castle Grounds",				"View Castle Owners",				"View all WoE times", 				((!.state)?"Start next WoE":"End current WoE"),				((.state)?"":"Skip next WoE session")				);		else			select(				"Warp to Castle Grounds",				"View Castle Owners",				"View all WoE times");					switch(@menu) {			case 1:		//warp				mes "Which region would you like to warp to?";				next;				select(.region_warp$[.woe_state[.woe_index]]);				if(@menu < 1 || @menu > .num_regions)					close;												close2;				warp .region_maps$[@menu - 1], .region_x[@menu - 1], .region_y[@menu - 1];				end;			case 2:		//view							set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];				for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {					set .@k, 0;					set .@castles$, ".castles_" + .regions$[.@i] + "$";					set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");					while(.@castle_check && .@k < .num_castles[.@i]) {						if(.@castle_check & (1 << .@k)) {							set .@map$, getd(.@castles$+"["+.@k+"]");							if (GetCastleData(.@map$,1)) {								dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.";							} else {								dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.";							}							set .@castle_check, .@castle_check - (1 << .@k);						}						set .@k, .@k + 1;							}				}				break;			case 3:		//woe times				for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) {												dispbottom "- " + .daysOfWeek$[.woe_day[.@i]] + " " + .woe_0_str$[.@i] + "-" + .woe_1_str$[.@i];					set .@woe_state_str_array$, ".woe_state_str_" + .woe_state[.@i] + "$";					for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) {						set .@output$, getd(.@woe_state_str_array$ + "[" + .@k + "]");						if(.@output$ != "")							dispbottom "        " + .@output$;					}				}				break;			case 4:		//start next;				if(getgmlevel() <.gm_access) close;								mes "^FF0000Are you sure you want to " + ((!.state)?"start the next WoE session?":"end the current WoE session?");				next;				if(select("Yes:No") == 2) break;								set .remainTime, 0;	//might not work sometimes...you have like a 500ms window out of 505ms i guess..				sleep2 .timer_refresh_rate;	//wait abit so the menu doesn't screw up (how long it takes for the timer to update)				break;			case 5:		//skip next;				if(getgmlevel() <.gm_access || .state) close;								mes "^FF0000Are you sure you want to skip the next WoE session^000000";				next;				if(select("Yes:No") == 2) break;				if(.state) {	//you really can't do this with woe active					next;					mes "Sorry, in the time you took making your decision, WoE started";					mes "Please either manually end it first or wait";					break;							}				set .woe_index, (.woe_index + 1) % .num_woes;				donpcevent strnpcinfo(3)+"::OnUpdateCountTick";				sleep2 .timer_refresh_rate;				break;			default: close;				}		goto OnStartMenu2;		OnInit:		//-----------------------------------------------------------------------------------------//		//CONFIG START                                                                             //		//-----------------------------------------------------------------------------------------//				set .gm_access, 60;				//WoE timings needs to be ordered ascendingly unless you want to do weird 		//stuff like skip a region every other week or so...		//Also times can't overlap. Uses second of day(gettimetick(1)) for timing		// eg 1am -> 3600, 2:30pm -> 52200, midnight -> 86400 (anything past that doesn't work)		//Note: woe_0 is start times, woe_1 is end times. Ignore how it's called but		//		 don't change it either since it's dynamically used		//		 Also..woe has to end on the same day it starts (it's easier that way..)		setarray .woe_day[0],	0,    0,    1,    1,    2,    2,    3,    3,    4,    4,    5,    5,    6,    6;		setarray .woe_0[0],	21600,57600,18000,64800,18000,64800,18000,64800,18000,64800,18000,64800,21600,57600;		setarray .woe_1[0],	25200,61200,21600,68400,21600,68400,21600,68400,21600,68400,21600,68400,25200,61200;		setarray .woe_state[0],	0,    1,    0,    1,    0,    1,    0,    1,    0,    1,    0,    1,    0,    1;				//WoE state settings. Every WoE session can be defined as a particular state of castle configuration.		//.woe_state_#[%] = $		// # - state number		// % - region number		// $ - binary representation of castles that are active for that region in that state (		//     (ie. 0 is no castles, 5 is castle 0 and 2  (2^0 + 2^2 = 5))		setarray .woe_state_0[0],0,0,0,0,0,1,0;		setarray .woe_state_1[0],1,0,0,0,0,0,0;				//Setting for if script handles WoE controller function. Disable agit_controller.txt if you are using this.		//For if you want to use something else to handle your woe stuff but only this script		//to show info (1 - on, 0 - off...duh)		set .active_woe, 1;						//WoE inactive on map notifier. Basically notifies player if the castle they are entering is		//WoE active or not		set .notify_woe, 1;				//-----------------------------------------------------------------------------------------//		//CONFIG END                                                                               //		//-----------------------------------------------------------------------------------------//						//-----------------------------------------------------------------------------------------//		//CONSTANTS START - Don't touch this unless you know what you are doing                    //		//-----------------------------------------------------------------------------------------//				//castle maps by region		setarray .castles_prtg$[0],"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05";		setarray .castles_payg$[0],"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05";		setarray .castles_gefg$[0],"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05";		setarray .castles_aldeg$[0],"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05";		setarray .castles_arug$[0],"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05";		setarray .castles_schg$[0],"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";		setarray .castles_novi$[0],"nguild_alde","nguild_gef","nguild_pay","nguild_prt";				//woe kill functions for each castle		setarray .woe_kill_prtg$[0],"Agit#prtg_cas01::OnAgitEnd","Agit#prtg_cas02::OnAgitEnd","Agit#prtg_cas03::OnAgitEnd","Agit#prtg_cas04::OnAgitEnd","Agit#prtg_cas05::OnAgitEnd";		setarray .woe_kill_payg$[0],"Agit#payg_cas01::OnAgitEnd","Agit#payg_cas02::OnAgitEnd","Agit#payg_cas03::OnAgitEnd","Agit#payg_cas04::OnAgitEnd","Agit#payg_cas05::OnAgitEnd";		setarray .woe_kill_gefg$[0],"Agit#gefg_cas01::OnAgitEnd","Agit#gefg_cas02::OnAgitEnd","Agit#gefg_cas03::OnAgitEnd","Agit#gefg_cas04::OnAgitEnd","Agit#gefg_cas05::OnAgitEnd";		setarray .woe_kill_aldeg$[0],"Agit#aldeg_cas01::OnAgitEnd","Agit#aldeg_cas02::OnAgitEnd","Agit#aldeg_cas03::OnAgitEnd","Agit#aldeg_cas04::OnAgitEnd","Agit#aldeg_cas05::OnAgitEnd";		setarray .woe_kill_arug$[0],"Manager#aru01_02::OnAgitEnd2","Manager#aru02_02::OnAgitEnd2","Manager#aru03_02::OnAgitEnd2","Manager#aru04_02::OnAgitEnd2","Manager#aru05_02::OnAgitEnd2";		setarray .woe_kill_schg$[0],"Manager#sch01_02::OnAgitEnd2","Manager#sch02_02::OnAgitEnd2","Manager#sch03_02::OnAgitEnd2","Manager#sch04_02::OnAgitEnd2","Manager#sch05_02::OnAgitEnd2";		setarray .woe_kill_novi$[0],"Agit_N01::OnAgitEnd","Agit_N02::OnAgitEnd","Agit_N03::OnAgitEnd","Agit_N04::OnAgitEnd";				//region prefixs		setarray .regions$[0],"prtg","payg","gefg","aldeg","arug","schg","novi";				//region info		setarray .region_names$[0],"Prontera", "Payon", "Geffen", "Aldebaran", "Arunafeltz", "Schwarzwald", "Novice Castles";		setarray .region_maps$[0],"prt_gld", "pay_gld", "gef_fild13", "alde_gld", "aru_gld", "sch_gld", "prontera";		//coords to warp player to region (0 is random)		setarray .region_x[0],0, 0, 0, 0, 0, 0, 148;		setarray .region_y[0],0, 0, 0, 0, 0, 0, 163;		setarray .waitMsg$[0], "WoE Starts: ", "WoE Ends: ";		setarray .startMsg$[0], "WoE is Starting", "WoE is Ending";			set .ticks_in_day, 86400;	//mmm...magic numbers		setarray .daysOfWeek$[0], "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday";		set .timer_refresh_rate, 500;	//how many ms per timer refresh...keep less than 1000 (in milliseconds)		set .change_state_sleep, 3000;	//how long to show "WoE is Start|End-ing" msg for in ms. (in milliseconds)										//Make sure WoE sessions are longer than this xD		set .banner_refresh_rate, 10;	//how many seconds per banner refresh...keep 1 or above (in seconds)				//-----------------------------------------------------------------------------------------//		//CONSTANTS END                                                                            //		//-----------------------------------------------------------------------------------------//		set .num_regions, getarraysize(.regions$);		set .num_woes, getarraysize(.woe_1);				//force WoE to end if active		callfunc "WoEToggler", 0;				for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {			//count num castles per region			set .num_castles[.@i], getarraysize(getd(".castles_" + .regions$[.@i] + "$"));		}				//convert timestamps to readable format		for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1)		{			set .@hrs, .woe_0[.@i] / 3600;			set .@mins, .woe_0[.@i] % 3600 / 60;			set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM");							set .woe_0_str$[.@i], .@output$;								set .@hrs, .woe_1[.@i] / 3600;			set .@mins, .woe_1[.@i] % 3600 / 60;			set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM");							set .woe_1_str$[.@i], .@output$;				}				//calc number of woe states and consolidate states to create list of castles used		set .num_states, 0;		while(getarraysize(getd(".woe_state_" + (.num_states)))) {			set .@state$, ".woe_state_" + .num_states;			set .@i, 0;			while(.@i < getarraysize(getd(.@state$))) {				set .castleUsage[.@i], .castleUsage[.@i] | getd(.@state$ + "[" + .@i + "]");				set .@i, .@i + 1;			}			set .num_states, .num_states + 1;					}		for(set .@i, 0; .@i < .num_states; set .@i, .@i + 1) {										set .@woe_state_array$, ".woe_state_" + .@i;			for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) {				if(.castleUsage[.@k] > 0) {					set .@castles$, ".castles_" + .regions$[.@k] + "$";					set .@castle_check, getd(.@woe_state_array$ + "[" + .@k + "]");					if(.@castle_check == 0) { //region not in this state						//region warp menu string						set .region_warp$[.@i], .region_warp$[.@i] + "^DD0000" + .region_names$[.@k] + "^000000:";						continue;					} else {						if(.@castle_check >= ((1 << .num_castles[.@k]) - 1)) {							//includes all castles...just list as region.							setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k]);														//region warp menu string							set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + "^000000:";						} else {							set .@j, 0;							set .@output$, "";							while(.@j < .num_castles[.@k]) {								if(.@castle_check & (1 << .@j)) {									set .@output$, .@output$ + GetCastleName(getd(.@castles$+"["+.@j+"]"));									set .@castle_check, .@castle_check - (1 << .@j);									if(.@castle_check) {										if(.@output$ != "") 										set .@output$, .@output$ + ", ";									} else										break;								}								set .@j, .@j + 1;							}							setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k] + " ("+  .@output$ + ")");														//region warp menu string							set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + " ("+  .@output$ + ")^000000:";						}					}				} else {					set .region_warp$[.@i], .region_warp$[.@i] + ":";				}			}		}				donpcevent strnpcinfo(3)+"::OnFindCurIndex";		donpcevent strnpcinfo(3)+"::OnUpdateCountTick";					if(.active_woe) {			if(.notify_woe) {				//set mapflag for all castle maps				for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {					set .@region_array$, ".castles_" + .regions$[.@i] + "$";					for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) {						setmapflag getd(.@region_array$ + "[" + .@k + "]"), mf_loadevent;						setd(".loadmap_region_" + getd(.@region_array$ + "[" + .@k + "]"), .@i + 1);						setd(".loadmap_castleIndex_" + getd(.@region_array$ + "[" + .@k + "]"), .@k);					}				}			}			//activates WoE if needed			donpcevent strnpcinfo(3)+"::OnDoWoE";		}		//flag that init occured		set .init, 1;		OnWoETimer:		//timer stuff		while (1) {			set .remainTime, .count_tick - gettimetick(2);			set .bannerTimer, .remainTime - (.remainTime % .banner_refresh_rate) + .banner_refresh_rate;			set .min, .bannerTimer / 60;			set .sec, .bannerTimer - .min * 60;			set .hr, .min / 60;			set .min, .min - .hr * 60;			set .roomMsg$, .waitMsg$[.state] + .hr + ":" + ((.min < 10 )?"0":"") + .min + ":" + ((.sec < 10 )?"0":"") + .sec;			sleep .timer_refresh_rate;						if(.remainTime <= 0) {				if(.active_woe) {					donpcevent strnpcinfo(3)+"::OnDoWoE";					}				set .roomMsg$, .startMsg$[.state];								set .woe_index, (.woe_index + .state) % .num_woes;	//go to next index if needed				set .state, (.state + 1) % 2;						//flip state				donpcevent strnpcinfo(3)+"::OnUpdateCountTick";				sleep .change_state_sleep;			}		}		end;	//obligatory end =D			OnUpdateCountTick:		set .count_tick, getd(".woe_" + .state + "[" + .woe_index + "]");		set .count_tick, gettimetick(2) + .count_tick - gettimetick(1) + (.woe_day[.woe_index] - gettime(4) + 7) % 7 * .ticks_in_day;		if(gettimetick(2) > .count_tick)			set .count_tick, .count_tick + 7 * .ticks_in_day;		end;		OnFindCurIndex:			set .@cur_day, gettime(4);				set .@cur_tick, gettimetick(1);				set .woe_index, 0;		set .state, 0;		for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) {			if(.woe_day[.@i] < .@cur_day)				continue;					if(.woe_day[.@i] == .@cur_day) {				if(.woe_0[.@i] >= .@cur_tick) {					set .woe_index, .@i;					set .state, 0;					break;				}				if(.woe_1[.@i] >= .@cur_tick) {					set .woe_index, .@i;					set .state, 1;					break;				}			}			if(.woe_day[.@i] > .@cur_day) {				set .woe_index, .@i;				set .state, 0;				break;			}				}		end;				//On map notifier	//Comment out OnPCLoadMapEvent label if .notify_woe is disabled to prevent unnecessary triggering	OnPCLoadMapEvent:		if(.state && .notify_woe) {			getmapxy(.@map$, .@x, .@y, 0);			set .@region, getd(".loadmap_region_" + .@map$) - 1;			if(.@region >= 0) {				set .@castleIndex, getd(".loadmap_castleIndex_" + .@map$);				if(getd(".woe_state_" + .woe_state[.woe_index] + "[" + .@region + "]") & 1 << .@castleIndex)					dispbottom "The [" + GetCastleName(.@map$) + "] castle is available for conquering during this WoE session";				else					dispbottom "The [" + GetCastleName(.@map$) + "] castle is NOT available for conquering during this WoE session";			}		}		end;			//------------------------------------------------------------------------------	// WoE Controller Stuff Here	//------------------------------------------------------------------------------			OnDoWoE:			if((.state == 0 && .init) || (.state == 1 && !agitcheck())) {	//starting			callfunc "WoEToggler", 1;							//kills WoE in all castles that shouldn't have WoE			set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];			for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {				set .@castles$, ".castles_" + .regions$[.@i] + "$";				set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");								for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) {					set .@map$, getd(.@castles$+"["+.@k+"]");					if((.@castle_check & (1 << .@k)) == 0) {						donpcevent getd(".woe_kill_" + .regions$[.@i] + "$[" + .@k + "]");					}				}			}			announce "The War Of Emperium has begun!",bc_all;			donpcevent strnpcinfo(3)+"::OnDisplayOwners";		} else {			//ending			if(agitcheck()) {				callfunc "WoEToggler", 0;				announce "The War Of Emperium is over!",bc_all;				donpcevent strnpcinfo(3)+"::OnDisplayOwners";			}		}		end;			OnDisplayOwners:	//displays based on current region		set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];		for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {			set .@k, 0;						set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");			set .@castles$, ".castles_" + .regions$[.@i] + "$";						while(.@castle_check && .@k < .num_castles[.@i]) {				if(.@castle_check & (1 << .@k)) {					set .@map$, getd(.@castles$+"["+.@k+"]");					if (GetCastleData(.@map$,1)) {						announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.",bc_all;					} else {						announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.",bc_all;					}					set .@castle_check, .@castle_check - (1 << .@k);				}								set .@k, .@k + 1;					}		}		end;}prontera,163,194,4	script	WoE Info	837,{	if(getwaitingroomstate(3, strnpcinfo(3)) == -1)		donpcevent strnpcinfo(3)+"::OnInit";	doevent "WoEInfoBase::OnStartMenu";	end;		OnInit:		while (1) {			//only updates if msg is different			set .banner$, getwaitingroomstate(4, strnpcinfo(3));			if(getvariableofnpc(.roomMsg$, "WoEInfoBase") != .banner$) {				delwaitingroom;				waitingroom getvariableofnpc(.roomMsg$, "WoEInfoBase"), 0;			}			sleep 500;		}		end;}//zomg! it duplicates!!Harbour,178,234,6	duplicate(WoE Info)	WoE Info#2winfo	837//---------------------------------------------------------------------------------------------------------------------//These two functions handle WoE's activation/deactivation. Since stable does not have AgitStart2/AgitEnd2, //using the trunk version will result in catastrophic failure of the script. Double declaration of the following//functions fixes this (you will get warning messages though)function	script	WoEToggler	{ //<state> = 0|1	if(getarg(0)) {		AgitStart;		} else {		AgitEnd;	}	return;}//if stable script will fail parsing this function, but the rest of the script will still be usablefunction	script	WoEToggler	{ //<state> = 0|1	if(getarg(0)) {		AgitStart;		AgitStart2;			} else {		AgitEnd;		AgitEnd2;		}	return;}

    Here.. Thank you!


  14. Hello!

     

    Was wondering why the emp is not showing up even if the WoE started already, im using toasty WoE controller.

     

    did try to do it manually with @agitstart or agitstart2, @agitend.. agitend2, Help please, Thank you! :wacko:


  15. Post made on assumption you will be using Renewal on Hercules.

    First of all, make sure you have backups of whatever you're changing. It's common sense but it's sometimes necessary to remind them.

     

    Refines up to +30 must be a custom edit since 3CeAM only supports refines up to +10 and official servers support up to +20. Never mind, you can compare the db/refine_db.txt file from your local 3CeAM repository and try to port them to Hercules. Hercules refine db is in db/re/refine_db.txt (the db/pre-re path is reserved for pre-renewal servers and the files immediately inside db are shared for both re and pre-re). Its syntax is a bit more complicated but it's because of trying to accomodate to support official renewal refining mechanics, which 3CeAM explicitely doesn't support (see the Note). Remember that if you change your max refine on the refine_db.txt, you should also edit src/map/status.h, line 16 (assuming you haven't edited it) in Hercules to change MAX_REFINE parameter accordingly.

     

    As for the stone curse effect, it's due to what jTynne said: on a relatively recent commit some status effect names were changed and when you use an invalid status name it defaults to 0, which is Stone Curse in the status section of db/const.txt (line 687 right now). I've taken out all Hercules SCs and 3CeAM SCs and compared them both (Hercules is the left one; 3CeAM is the right one; link expires in 1 year) so that you may know the exact differences. You can change them by yourself just looking through that list and changing whatever status effects are invalid in your current scripts.

     

    I didn't get what you meant for rentals not working for mado gears. Maybe it's because the script commands changed? I can't get whatever 3CeAM is using for it, but as you can see in doc/script_commands.txt, lines 3623 to 3630, in Hercules those script commands are the ones that are specifically used for mado gears.

     

    For the mobs problems I'll be assuming you're using txt mob dbs as you previously said (if you aren't using them you must explicitely tell the server to use SQL dbs at the end of conf/inter-server.conf): As far as I'm concerned, mobs from eAthena/3CeAM/rAthena are directly compatible with Hercules, but if you don't show us the exact error on the custom mobs we can't be much of help, but maybe you are trying to overwrite official mobs (which are in db/re/mob_db.txt in Hercules and in db/mob_db.txt in 3CeAM) by directly copying and pasting the custom entries you previously had on your 3CeAM's db/mob_db2.txt to your Hercules' db/mob_db2.txt and since Hercules has like 200 more official mobs than 3CeAM, the ID of a custom mob you have in 3CeAM may collide with one that Hercules already has in its official mob db. I think the ones in mob_db2.txt take precedence over them, but maybe you should change your custom mobs IDs to take free IDs. Also remember their skills go in db/mob_skill_db2.txt and if you want a custom mob to use an existing sprite you use db/mob_avail.txt. Anyways, if this doesn't solve your errors please tell us.

     

    Hope I've been helpful here.

     

    Very indeed helpful, Thank you very very much for all of this information, Jabote! last question please, does herc got other script for WoE? toasty woe controller wont work with herc right? since like awhile ago, the woe started, but emp is not visible..


  16. For the +30 effect, all you need to do is modify your weapon scripts to include bonus bAllStats,30;, reload your item database, and voila.

    For the stone curse effect, you need to modify your scripts. About a month ago malufett I believe implemented all of the official names for SC_ status effects, so any old scripts that are using SC_ effects not found in our /db/const.txt file, cause stone curse effect.

     

    If you need help updating your scripts that cause Stone Curse, paste them as a response here and I'll be happy to look into them for you if no one else beats me to it. :)

     

    As for custom mobs.. are you using .txt based database or SQL? What emulator are you switching to Hercules from?

     

    Thank you so much for that quick respond, about the+30 effect, is it the same as the refine rate? does it still visible using herc? or this is because of my client, having harmony? and for the Stone curse.. so thats why :o i was like.. OMG what is happening.. *what a relief..

     

    yes, having problem adding custom mobs and the skill itself.. i was using an old 3cream revision.. so last night i decided to put the harmony and migrate all the server files to herc..

     

    &* addional question if thats ok..  about the visibility.. its somehow... got a very small range.. where can I edit it

     

    *edit: i believe im using text base database.

     

    Thanks!


  17. Hello,

     

    I got migrated to this awesome revision which is hercules like 12hours ago, and still im configuring and migrating stuff, just wondering.. does our emu provide +30 weapon? since all weapon that was +30 got nerfed back to +10? is it a client side issue? and.. im wondering how can I remove getting stoned, like if I put too much buff in the npc i got stoned, and for some occasional reason .. and the rental is not working for mado? lastly the mobs, how can I put additional custom mob, since when I try to copy the files from my old emu, then paste it to my new emu, it got error something to do with.. overlapping, something like that. :/ please do help me guys..  :wacko:

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.