Jump to content

Helena

Members
  • Content Count

    238
  • Joined

  • Last visited

Posts posted by Helena


  1. Hello Hercules,

     

    I was wondering if there's a way to increase the amounts of fire works when I set a mapflag for it?

     

    Currently, there is a fire work appearing once every <20 seconds. My question is, how to change the delay so that there are more fire works appearing? Like, once every 5 seconds?

     

    This is as much as I was able to find (script.c), not sure if that's the correct source?:

     

    if (map[m].flag.fireworks) {
    clif->specialeffect_single(&sd->bl, 297, fd);
    clif->specialeffect_single(&sd->bl, 299, fd);
    clif->specialeffect_single(&sd->bl, 301, fd);
     
     
    Thank you very much, help is appreciated! :)

  2. Hello everyone,

     

    Could someone to help me out with this query check?

     

    This is the script I'm using (see bottom), currently, the script checks if there any any open support tickets (@cu or @checkunread).

    However, it lists all the tickets I have... so say I have a total of 9 tickets, no matter open, closed, resolved or whatnot, it'll list all the 9 tickets in the @cu or @checkunread message

     

    what I want is for it to not list closed and resolved tickets in the "You currently have %s unread support tickets" message.

     

    The status (see image) shows the statuses of the tickets, to clarify, 0 = close, and 2 = resolved. The @checkunread needs to exclude these tickets in the message.

    So say, I have 9 tickets but 2 are closed and 1 is resolved, then when I use @checkunread, it'll show the remaining 6 tickets.

     

     

     

    I was thinking of something like this, but it's not working....

     

    (Thank you so much for whoever is able to help me! You have my forever gratitude)

     

    set .@unreadmsg$, "You have %d unread support tickets.";
    set .@sql$, "SELECT status FROM cp_support_tickets"; // <- this is the table.
    if (getgmlevel() > 0) {
    query_sql "select status from cp_support_tickets", .@status;
    if ( .@status == "0" ) {
    set .@sql$, .@sql$ - "1";
     
     
    Here is the whole script:
     
    -	script	atcmd_ticket_notify	-1,{	OnInit:		bindatcmd("checkunread", "atcmd_ticket_notify::OnAtcommand");		bindatcmd("cu", "atcmd_ticket_notify::OnAtcommand");	end;		OnAtcommand:		set .@unreadmsg$, "You have %d unread support tickets.";		set .@sql$, "SELECT id, department, ticket_read FROM cp_support_tickets WHERE ";				if (getgmlevel() > 0) {			set .@sql$, .@sql$ + "1";		} else {			set .@sql$, .@sql$ + "account_id = " + getcharid(3) + " AND unread = 1";		}		set .@count, query_sql(.@sql$, @id, @department, @ticket_read$);		if (.@count) {			if (getgmlevel() == 0) {				dispbottom(sprintf(.@unreadmsg$, .@count));				end;			}						if (.@count > 1) {				set .@ticket_count, 0;								for (set .@i, 0; .@i < getarraysize(@id); .@i++) {					set .@isRead, 0;										query_sql("SELECT group_id FROM cp_support_dep WHERE id = " + @department[.@i], @group_id);										if (@ticket_read$ != "") {						explode(.@tickets_read$, @ticket_read$[.@i], ",");												for (set .@j, 0; .@j < getarraysize(.@tickets_read$); .@j++) {							if (atoi(.@tickets_read$[.@j]) == getcharid(3)) {								set .@isRead, 1;								break;							}						}					}										if (@group_id <= getgmlevel() && .isRead == 0) {						.@ticket_count++;					}				}				dispbottom(sprintf(.@unreadmsg$, .@count));				end;			} else {				query_sql("SELECT group_id FROM cp_support_dep WHERE id = " + @department, @group_id);				set .@isRead, 0;								if (@ticket_read$ != "") {					explode(.@tickets_read$, @ticket_read$, ",");											for (set .@j, 0; .@j < getarraysize(.@tickets_read$); .@j++) {						if (atoi(.@tickets_read$[.@j]) == getcharid(3)) {							set .@isRead, 1;							break;						}					}				}								if (@group_id <= getgmlevel() && .@isRead == 0) {					dispbottom(sprintf(.@unreadmsg$, .@count));					end;				} else {					dispbottom(sprintf(.@unreadmsg$, 0));					end;				}			}		} else {			dispbottom(sprintf(.@unreadmsg$, 0));			end;		}	end;}

  3. Hello hercules,

     

    Could possibly anyone help me out ? :)  I don't know in what file i need to search.

     

    Currently, cash points are set so, say if you 2000 Cash Points, it will appear as 2,000 in the Cash Shop.

    What I want is to make it appear as 20,00 instead...

    And 100 to make it appear as 1,00 and less than 100 like 0,10. Pretty much how it works with money how 100 cents makes it  $1,00

     

    Is that possible? Thank you for anyone who is willing to help.


  4. I've resolved this.

     

    jaBote, apparently pets are the same as mobs so long as the max stats for them (pet.conf) has been set high enough, then pets adapt those stats (if within limit) - but , which answered my issue, pets stats are set to 99 by default in the configs.


  5. Hello Hercules,

     

    I'm having a issue with pets. When I @spawn a tendrillion, the attack he delivers is a good 16k+ per hit and his casting is almost instant. Now, when I catch a tendrillion with a taming item, and summon him as pet, he is only delivering 400 damage hits, and his cast takes a few seconds... while, with @summon, his attack is high.

     

    I've no idea how to increase his attack as pet or make his casting fast, usually, aren't a pets stats based on a monsters stats? I believe the numbers look okay...

     

    mob_db:

    1991,TENDRILRION,Tendrillion,Tendrilion,113,3657330,0,731466,365733,2,20000,24000,33,30,113,60,1,45,147,13,10,12,1,2,42,0x37B5,100,500,960,360,0,0,0,0,0,0,0,2544,500,1186,100,1637,100,6033,9000,6020,4000,7197,5335,7008,4850,0,0,0,0,0,0
     
     
    Could it be that pets are limited in stats? My question is, how to increase them. Thank you!

     

     


  6. Can't that also be done by simply setting a number in pet.conf on zero?

     

    I appreciate your reply and attempt to help, but I still want pets to be hungry, just not have the bar.

    Some of my monster/pet sprites are inaccurately positioned, and the hunger bar blocks a part of their sprite...  :(


  7. Can someone direct me to the right lines/files to edit?

     

    I already messed some around in clif.c but I couldn't get it working, (I got the HP bar from monsters removed though... but that's not the bar I wanted xD)

     

    Thanks in advance.


  8. Hi Hercules!

     

    I have this script (see below) and I was wondering if someone perhaps knows how to add the function in it that this person is asking for - I know it's a rAthena thread, but my request is literally the same, I just can't figure it out because both scripts I'm using are already complicated (for me).

     

    Would it work with Arrays? Currently, my script has over 128 items in its arrays and so it drops of the last few IDs (doesnt regocnize), and I hoped that perhaps throwing in a "next page" option would fix this issue. Would it?

     

    Any help would be greatly appreciated!

     

     

     

    Indoor2,52,50,4	script	Custom Headgear Trader	797,{    mes "[Custom Headgear Trader]";    mes "Hello " +strcharinfo(0)+ ", I can exchange your Custom Headgear. That means if you're ever bored of your current Custom Headgear sprite, I can easily give you another!";    next;    mes "[Custom Headgear Trader]";    mes "This service however is not free, if you want to change your Custom Headgear, I require:";	mes "1x Custom Headgear";	mes "3x Cash Points";    next;      if (select("Continue, please.:I'm not interested.") - 1) close;	if(#CASHPOINTS < 3) {        mes "[Custom Headgear Trader]";        mes "I'm sorry You do not meet the requirements. For you to use my service, I need 3 Cash Points and a Custom Headgear.";        close;    }      mes "[Custom Headgear Trader]";    mes "Very well, let's proceed with the process. Select the Customized Headgear that you want to exchange:";    getinventorylist;    for (.@i = 0; .@i < @inventorylist_count; .@i++) {                if (compare(.itemidcompare$, ":"+ @inventorylist_id[.@i] +":" ) ) {                        .@menu$ = .@menu$ + getitemname( @inventorylist_id[.@i] ) +":";                        .@select[ .@c ] = @inventorylist_id[.@i];                        .@c++;                }        }      if (.@c == 0) {	sleep2 2000;        mes "...Oh, it appears that you have no Custom Headgear, sorry but I can't help you.";        close;    }        .@pickid = .@select[select(.@menu$) - 1];    mes "You've selected your ^FF0000" +getitemname(.@pickid)+ "^000000, is that correct?";    if (select("Yes, it is.:No.") - 1) close;	next;    mes "[Custom Headgear Trader]";    mes "Very well then, now select the item you want to exchange your " +getitemname(.@pickid)+ " for:";	mes "^FF0000To see a list of available sprites, please talk to the Headgear NPC!^000000";    .@menu$ = getitemname(.itemid);    for (.@i = 1; .@i < .itemidsize; .@i++)         .@menu$ = .@menu$ + ":" + getitemname(.itemid[.@i]);        .@tradeid = .itemid[select( .@menu$ ) -1];	next;        mes "[Custom Headgear Trader]";        mes "Please confirm that you want to use 3 Cash Points for trading your ^FF0000" +getitemname(.@pickid) + "^000000 for a ^FF0000" + getitemname(.@tradeid)+ "^000000:";        next;        if (select("Confirm:Cancel") - 1) close;        if (countitem(.@pickid) == 0 || #CASHPOINTS < 3) {            mes "[Custom Headgear Trader]";            mes "It appears that you don't meet the requirements. In order to use my service, you need to have a Custom Headgear and 3 Cash Points.";            close;        }    getinventorylist;        for(set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){            if( @inventorylist_id[.@i] == .@pickid ) {                set .@refine_rate, @inventorylist_refine[.@i];            }        }        delitem .@pickid, 1;	if ( !.@refine_rate )         getitem .@tradeid, 1;    else         getitem2 .@tradeid,1,1,.@refine_rate,0,@card1,@card2,@card3,@card4;        //getitem .@tradeid, 1;        set #CASHPOINTS,#CASHPOINTS - 3;        mes "[Custom Headgear Trader]";        mes "===================================";        mes "Official Receipt";        mes "===================================";        mes "From : " +getitemname(.@pickid);        mes "To : " +getitemname(.@tradeid);        mes "===================================";	dispbottom "3 Cash Points have been deducted. Current Balance = "+#CASHPOINTS+" Cash Points.";        next;        mes "[Custom Headgear Trader]";        mes "Thank you for using my Custom Headgear trading system, " +strcharinfo(0)+ ". Have a nice day!";        close;      OnInit:            setarray .itemid,8005,8006,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8052,8053,8054,8055,8056,8057,8058,8059,8060,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8094,8095,8098,8100,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8112,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8130,8131,8132,8133,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077; // Put all Headgear's here             set .itemidsize, getarraysize( .itemid );            set .itemidcompare$, ":"+ .itemid[0];            for ( .@i = 1; .@i < .itemidsize; .@i++ )                    .itemidcompare$ = .itemidcompare$ +":"+ .itemid[.@i] +":";            end;}		} 

  9. Hi rAthena,

     

    In my revision union can't be activated. I know it goes per link, and that "knowledge" level 9 is needed, but when I link my character (max level) union remains grey.

     

    It works for GM characters weirdly enough, though.

     

    Can someone help me? :(


  10. Hi, Hercules!

     

    I'm using this poring catcher event and for some reason the actual Poring (with the real name) doesn't spawn, only the fake ones.

     

    I thought I was blind, but I tripple checked and my players have confirmed the same. I know it should spawn because it's in the code

    but it really doesn't.

     

    Can someone please help me?

     

     

    //=========== PORING CATCHER MADE ==============//=== BY: SHOGS-GFX and RAGNAROK DEVELOPERS ====//= Please Report if you encounter some errors =//===== https://www.facebook.com/ShogsGfx ======//==============================================//==FUNCTIONS===================================/* GM Can start the event manualy   GM Can also stop the event manualyHOW: just PM this npc (npc:pcatch)The Next Guide Will Be Given by the Manager 	*///======= PLEASE DO NOT REMOVE CREDITS =========//==============================================//== MORE UPDATES TO COME FOR BETTER FUNCTION ==//===== https://www.facebook.com/ShogsGfx ======//============================================== //====LEVEL OF GM CAN CONTROL THE EVENT========= -	script	GMCONTROL	-1,{OnInit:set $gmcontrol,60;end; }//---------------END OF SETUP------------------- //================ON WHISPER=========================-	script	pcatch	-1,{ //====LEVEL OF GM CAN CONTROL THE EVENT=========//OnInit://set $gmcontrol,60;//end;//---------------END OF SETUP------------------- OnWhisperGlobal:if(getgmlevel() >= $gmcontrol) {mes "^3399FF[Poring Catcher]^000000";	mes "Hello GameMaster!";mes "What do you want to do?";switch(select("Start Event:Stop Event:Nothing")){	case 1:	 {		next;		mes "^3399FF[Poring Catcher]^000000";		mes "Please confirm by typing START.";		 input .@confirm$;         		 if (.@confirm$ == "START")		 {			donpcevent "Announcer2::OnGMStart";			 close;		}		mes "Confirmation failed";		close;		break;	}	case 2:	{		next;		mes "^3399FF[Poring Catcher]^000000";		mes "Please confirm by typing STOP.";		 input .@confirm$;         		 if (.@confirm$ == "STOP")		 {			donpcevent "Announcer2::OnGMStop";			close;		}		mes "Confirmation failed";		close;		break;			}						case 3:	{		next; mes "^3399FF[Poring Catcher]^000000";		mes "Good bye";		 close;	} }}}  //====================ANNOUNCER====================== -	script	Announcer2	-1,{  OnGMStart:	killmonster "poring_w01.gat","All";	announce "(Poring Manager) : A Gamemaster started a Poring Catcher Event.",0;	sleep 3000;	announce "(Poring Manager) : If you want to join, proceed to the center of Prontera and enter the Warp Portal.",0;	enablenpc "PoringCatcher";	sleep 2000;	announce "(Poring Manager) : The portal will automatically close after 60 seconds.",0; 	 sleep 60000;	disablenpc "PoringCatcher";	if(getmapusers("poring_w01") == 0)	 {		disablenpc "Poring Banker";		announce "Event Poring Catcher didn't start because there's no players.",0;		end;	}	 donpcevent "Poring Banker::OnEnable";	end; OnGMStop:	 killmonster "poring_w01.gat","All";	announce "A Gamemaster has stopped the Poring Catcher Event",0;	mapwarp "poring_w01.gat","prontera.gat",155,173;	disablenpc "Poring Banker";	disablenpc "PoringCatcher";	end;  OnClock0015:OnClock0515:OnClock1015:OnClock1515:OnClock2015:	killmonster "poring_w01.gat","All";	announce "(Poring Manager) : The Poring Catcher Event will be starting shortly!",0;	sleep 3000;	announce "(Poring Manager) : If you want to join, please proceed to the center of Prontera and enter the Warp Portal.",0;	enablenpc "PoringCatcher";	sleep 2000;	announce "(Poring Manager) : The portal will automatically close after 60 seconds.",0; 	 sleep 60000;	disablenpc "PoringCatcher";	if(getmapusers("poring_w01") == 0)	 {		disablenpc "Poring Banker";		announce "Event: The Poring Catcher Event didn't start because the lack of participants!",0;		end;	}	 donpcevent "Poring Banker::OnEnable";	end; OnInit:	disablenpc "Poring Banker";	disablenpc "PoringCatcher";}//---------All Job Registration----------------------------------------prontera,155,173,0	warp	PoringCatcher	2,2,poring_w01,105,128 //---------------------------------------------------------------------  //----------------------------------------------------------------------	script	Poring Banker	-1,{ OnEnable:mapannounce "poring_w01","Poring Manager: The Poring Catcher Event will be start shortly.",0;sleep2 5000;mapannounce "poring_w01","Poring Manager: I'm going to summon 100 Porings, but only one Poring has the correct name.",0;sleep2 5000;mapannounce "poring_w01","Poring Manager: If you kill the Poring with the correct name, you'll be the winner of the event!",0;sleep2 5000;goto L_Start;end;L_Start:	if(getmapusers("poring_w01") == 0) goto L_None;	if(getmapusers("poring_w01") >= 1) {	 mapannounce "poring_w01","Poring Manager: Get ready! I'm going to count down...",0;	sleep2 3000;	mapannounce "poring_w01","Poring Manager: 5",0;	sleep2 3000;	mapannounce "poring_w01","Poring Manager: 4",0;	sleep2 2000;	mapannounce "poring_w01","Poring Manager: 3",0;	sleep2 2000;	mapannounce "poring_w01","Poring Manager: 2",0;	sleep2 2000;	mapannounce "poring_w01","Poring Manager: 1",0;	donpcevent "Poringsummoner::OnSummon";	end;	}	 L_None:	disablenpc "Poring Banker";	killmonster "poring_w01.gat","All";	end;} //==================SUMMONER OF PORINGS ======================-	script	Poringsummoner	-1,{ OnSummon:   if(getmapusers("poring_w01") == 0) goto L_2None;   monster "poring_w01.gat",0,0,"Poring",1002,1,"poringwin::OnMobKilled";   monster "poring_w01.gat",0,0,"Pouring",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Proing",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Poirng",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Poing",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"I'm not a Poring",1002,5,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Gnirop",1002,1,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Poring",1113,1,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Poring",1062,1,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Por|ng",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Por1ng",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Porong",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"P0ring",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"P@ring",1002,10,"poringlose::OnMobKilled";   monster "poring_w01.gat",0,0,"Porng",1002,1,"poringlose::OnMobKilled";end;L_2None:disablenpc "Poring Banker";killmonster "poring_w01.gat","All";end;} //==================REAL PORING FOR WIN======================-	script	poringwin	-1,{ OnMobKilled:   killmonster "poring_w01.gat","All";   atcommand "@doommap";   getitem 7146,3;   announce "Poring Banker: We have a winner! Well done " + strcharinfo(0) + ".",0;   warp "SavePoint",0,0;   end;} //==================DUMY PORINGS FOR LOSERS======================-	script	poringlose	-1,{OnMobKilled:   dispbottom "Event: You've been kicked out because you didn't catch the right Poring!";   sleep2 1500;   warp "SavePoint",0,0;   end;}  //==================Mapflags========================poring_w01	mapflag	nowarpporing_w01	mapflag	nowarptoporing_w01	mapflag	noteleportporing_w01	mapflag	nosaveporing_w01	mapflag	nomemoporing_w01	mapflag	nobranchporing_w01	mapflag	nolootporing_w01	mapflag	noskillporing_w01	mapflag	nopenalty

  11. Good day, community.
     
    I was wondering if someone could assist me with this script. It's from Annie Ruru, I actually combined two of her pvp ladders into one and the particular part with the chat bubble that I added from the other script is what gives me problems:
     
    The problem being, the bubble that displays #1 player doesn't update until I apply a @loadnpc or server restart.... I really would like it to update without having to do that.
     
    Thank you, help is very appreciated! 

    OnInit:	delwaitingroom strnpcinfo(1);	set .@nb, query_sql("select name, kills from pvpladder order by kills desc limit 1", .@name$, .@kills );	waitingroom "#1 Player: "+ .@name$ +" ("+ .@kills +" kills)",0;	end;

     
    Here's the whole script:

    //===== eAthena Script =======================================================//= PVP ladder script with dota announcement ( SQL only )//===== By: ==================================================================//= ~AnnieRuru~//===== Current Version: =====================================================//= 2.9//===== Compatible With: =====================================================//= eAthena SQL 14279, with MySQL 5.1//===== Description: =========================================================//= PVP ladder store in SQL table//= plus anti-sit-killer feature//===== Topic ================================================================//= http://www.eathena.ws/board/index.php?showtopic=177918//===== Additional Comments: =================================================//= still don't have modify value option, will be done ... in next year ...//============================================================================ //	add all the maps that you want this script to trigger ... all pvp and event maps perhaps ?//	but if you already enable "all" maps, then can comment all theseguild_vs1	mapflag	loadeventguild_vs3	mapflag	loadeventprtg_cas01	mapflag	loadevent -	script	DOTAPVP	-1,{OnInit:// Config	set .sound, 0; // soundeffect : 0 - disable, 1 - play soundeffect to all players on map, 2 - play soundeffect to an area around the killer, 3 - play soundeffect to killer only	set .announce, 1; // announce to : 0 - global, 1 - map	set .announcemap, 0; // announce the map name in the announcement ? : 0 - off, 1 - on	 set .announcekill, 1; // announce who pawn who's head : 0 - off, 1 - on	set .msg_die, 0; // show message who kill you when die : 0 - off, 1 - on	set .msg_kill, 0; // show message you kill who when killed someone : 0 - off, 1 - on	 set .gmnokill, 0; // GMs are not suppose to kill players. A GM with <this number> level or higher will do nothing. IF set to 60, GM60 and above kill any player will not get anything : 0 - off	 set .killingspree, 3;	set .dominating, 4;	set .megakill, 5;	set .unstoppable, 6;	set .wickedsick, 7;	set .monsterkill, 8;	set .godlike, 9;	set .holyshit, 10;	set .continue, 1; // after beyond-godlike, every <this number> kills will make announcement again	 set .owned, 5; // how many times the party/guild has to kill to announce ownage	set .owncontinue, 1; // after ownage, every <this number> party/guild cumulative kills will make ownage announce again	 set .min_gm_menu, 90; // minimum level of GM can use the GM menu on ladder npc	 set .showtotal, 10; // show the length of ladder. Note : Maximum value = 128	set .showpage, 10;	// set the views per page. Note : Maximum value = 128	set .loweststreak, 3; // mininum streak count allow to show in highest streak ladder. Default 3 means must at least have killing spree streak to display in ladder	set .lowestownage, 5; // mininum ownage count allow to show in longest ownage ladder. Default 5 means must at least have 5 ownage counts to display in ladder	 setarray .maptrigger$, // only these maps will trigger this script		//"all", // uncomment this to allow load all maps		"guild_vs1",		"guild_vs3",		"fwarena",		"prtg_cas01"; //	anti-sit-killer system	// a player must kill another player with this minimum <this number> base level to get the announcement and in the ladder.	// Otherwise only have streak ended announcement and killed player's streak reset.	// Its possible for a level 1 novice to kill a level 99 player and he/she will still get in the ladder	// but a level 99 kill a level 1 player will get nothing	// 0 - off this system ( default is 55, pk setting )	set .lvltokill, 0;	 // when a player kill another same player <this number> times in a row, the player is warp back to save point.	// and the player's streak, kills, and ownage count will deduct accordingly	// 0 - off this system	set .counttopunish, 0;	 // minimum level range to kill another player	// eg. when set to 20, player level 99 needs to kill another player with minimum level of 79 to get announcement and increase the kill rank.	// but a player with base level 50 kills a level 99 will also get the announcement	// higher base level cannot kill lower level, but lower level can kill higher level	// 0 - off this system	set .minlvlrange, 0;  // Config ends ------------------------------------------------------------------------------------------ //	to prevent bug happen	if ( .announce < 0 || .announce > 1 ) set .announce, 0;	if ( .continue < 1 ) set .continue, 1;	if ( .owncontinue < 1 ) set .owncontinue, 1;	if ( .gmnokill <= 0 ) set .gmnokill, 100;	if ( .lvltokill <= 1 ) set .lvltokill, 0;	if ( .counttopunish <= 1 ) set .counttopunish, 0;	set .maptriggersize, getarraysize(.maptrigger$);	end; //	script start.OnPCKillEvent:	if ( getgmlevel() >= .gmnokill ) end;	getmapxy .@map$, .@x, .@y, 0;	if ( .maptrigger$ != "all" ) {		for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {			if ( .@map$ == .maptrigger$[.@i] ) break;		}		if ( .@i == .maptriggersize ) end;	}	attachrid killedrid;	if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) {		if ( .msg_die ) message strcharinfo(0),"You have been killed by "+ rid2name(killerrid);		if ( .msg_kill ) message rid2name(killerrid),"You just killed "+ strcharinfo(0);	}	if ( @PlayersKilledStreak >= .holyshit )		set .@streakname$,"Beyond Godlike";	else if ( @PlayersKilledStreak >= .godlike )		set .@streakname$,"Godlike";	else if ( @PlayersKilledStreak >= .monsterkill )		set .@streakname$,"Monster Kill";	else if ( @PlayersKilledStreak >= .wickedsick )		set .@streakname$,"Wicked Sick";	else if ( @PlayersKilledStreak >= .unstoppable )		set .@streakname$,"Unstoppable";	else if ( @PlayersKilledStreak >= .megakill )		set .@streakname$,"Mega-kill";	else if ( @PlayersKilledStreak >= .dominating )		set .@streakname$,"Dominating";	else if ( @PlayersKilledStreak >= .killingspree )		set .@streakname$,"Killing Spree";	if ( @PlayersKilledStreak >= .killingspree && killerrid == getcharid(3) )		announce strcharinfo(0) +" has ended "+( (sex)?"him":"her" )+" own "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	else if ( @PlayersKilledStreak >= .killingspree )		announce rid2name(killerrid) +" has ended "+ strcharinfo(0) +"'s "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	else if ( .announcekill && killerrid != getcharid(3) )		announce rid2name(killerrid) +" has brutally slaughtered "+ strcharinfo(0) +"! "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	set @PlayersKilledStreak,0;	set @dota_sql_deaths, @dota_sql_deaths +1;	set @dota_multikills,0;	query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";	set .@killed_gid, getcharid(2);	if ( .@killed_gid ) {		setd ".dota_sql_"+ .@killed_gid +"_c", 0;		if ( getd(".dota_sql_"+ .@killed_gid +"_h") )			query_sql "replace into ownladder values ( "+ .@killed_gid +", '"+ escape_sql(getguildname(.@killed_gid)) +"', "+ getd(".dota_sql_"+ .@killed_gid +"_c") +", "+ getd(".dota_sql_"+ .@killed_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killed_gid +"_t") +") )";	}	if ( killerrid == getcharid(3) || baselevel < .lvltokill ) end;	if ( .minlvlrange ) set .@killedlvl, baselevel;	attachrid killerrid;	if ( .minlvlrange && .@killedlvl + .minlvlrange < baselevel ) end;	if ( .counttopunish ) {		if ( @sitkillminute != gettime(2) ) {			deletearray @sitkillid, 128;			deletearray @sitkilltimes, 128;			set @sitkillminute, gettime(2);		}		set .@sitkillsize, getarraysize(@sitkillid);		for ( set .@i,0; .@i < .@sitkillsize; set .@i, .@i +1 ) {			if ( @sitkillid[.@i] != killedrid ) continue;			else {				set @sitkilltimes[.@i], @sitkilltimes[.@i] +1 ;				if ( @sitkilltimes[.@i] >= .counttopunish ) {					warp "SavePoint",0,0;					announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0;					debugmes strcharinfo(0) +" is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] + " times";					logmes "is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] +" times";					if ( @PlayersKilledStreak == @dota_sql_streaks ) {						set @dota_sql_streaks, @dota_sql_streaks +1 - .counttopunish;						set @dota_sql_streaktime, gettimetick(2);					}					set @PlayersKilledStreak, @PlayersKilledStreak +1 - .counttopunish;					set @dota_sql_kills, @dota_sql_kills +1 - .counttopunish;					query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";					set .@killer_gid, getcharid(2);					if ( .@killer_gid ) {						if ( getd(".dota_sql_"+ .@killer_gid +"_c") == getd(".dota_sql_"+ .@killer_gid +"_h") ) {							setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_h") +1 - .counttopunish;							setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);						}						setd (".dota_sql_"+ .@killer_gid +"_c"), getd(".dota_sql_"+ .@killer_gid +"_c") +1 - .counttopunish;						query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";					}					end;				}				break;			}		}		if ( .@i == .@sitkillsize ) {			set @sitkillid[.@i], killedrid;			set @sitkilltimes[.@i], 1;		}	}	set @PlayersKilledStreak, @PlayersKilledStreak +1 ;	set @dota_sql_kills, @dota_sql_kills +1 ;	if ( @PlayersKilledStreak > @dota_sql_streaks ) {		set @dota_sql_streaks, @PlayersKilledStreak;		set @dota_sql_streaktime, gettimetick(2);	}	query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";	if ( @PlayersKilledStreak == .killingspree )		setarray .@streakname$,"killingspree.wav","is on a killing spree","!";	else if ( @PlayersKilledStreak == .dominating )		setarray .@streakname$,"dominating.wav","is dominating","!";	else if ( @PlayersKilledStreak == .megakill )		setarray .@streakname$,"megakill.wav","is owning","!";	else if ( @PlayersKilledStreak == .unstoppable )		setarray .@streakname$,"unstoppable.wav","is unstoppable","!!";	else if ( @PlayersKilledStreak == .wickedsick )		setarray .@streakname$,"wickedsick.wav","is owning everyone","!!";	else if ( @PlayersKilledStreak == .monsterkill )		setarray .@streakname$,"monsterkill.wav","made an amazing kill","!!";	else if ( @PlayersKilledStreak == .godlike )		setarray .@streakname$,"godlike.wav","is being god-like","!!!";	else if ( @PlayersKilledStreak >= .holyshit && ( (@PlayersKilledStreak - .holyshit) % .continue == 0 ) )		setarray .@streakname$,"holyshit.wav","is beyond god-like",". Someone stop "+( (sex)?"him":"her" ) +"!";	if ( .@streakname$[1] != "" ) {		announce strcharinfo(0) +" "+ .@streakname$[1] +"["+ @PlayersKilledStreak +"] "+( (.announcemap)?("at "+ .@map$):"") + .@streakname$[2],16|.announce;		if ( .sound == 1 ) soundeffectall .@streakname$[0],0,.@map$;		else if ( .sound == 2 ) soundeffectall .@streakname$[0],0;		else if ( .sound == 3 ) soundeffect .@streakname$[0],0;	}	set @dota_multikills, @dota_multikills + 1;	deltimer "DOTAPVP::OnStreakReset";	addtimer 18000,"DOTAPVP::OnStreakReset";	set .@killer_gid, getcharid(2);	if ( .@killer_gid && .@killer_gid != .@killed_gid ) {		setd ".dota_sql_"+ .@killer_gid +"_c", getd(".dota_sql_"+ .@killer_gid +"_c") +1 ;		if ( getd(".dota_sql_"+ .@killer_gid +"_c") > getd(".dota_sql_"+ .@killer_gid +"_h") ) {			setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_c");			setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);		}		query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";	}	set .@dota_multikills, @dota_multikills;	set .@origin, getcharid(3);	sleep 1500;	if ( .@killer_gid && .@killer_gid != .@killed_gid && getd(".dota_sql_"+ .@killer_gid +"_c") >= .owned && ( ( getd(".dota_sql_"+ .@killer_gid +"_c") - .owned ) % .owncontinue == 0 ) ) {		if ( .announce ) mapannounce .@map$, "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;		else announce "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;		if ( .sound == 1 ) soundeffectall "ownage.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "ownage.wav",0;		else if ( .sound == 3 && attachrid(.@origin) ) soundeffect "ownage.wav",0;	}	sleep 1250;	if ( !attachrid(.@origin) ) end;	if ( .@dota_multikills == 2 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Double Kill !",16;		else announce strcharinfo(0) +" just got a Double Kill !",16;		if ( .sound == 1 ) soundeffectall "doublekill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "doublekill.wav",0;		else if ( .sound == 3 ) soundeffect "doublekill.wav",0;	}	else if ( .@dota_multikills == 3 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Triple Kill !!!",16;		else announce strcharinfo(0) +" just got a Triple Kill !!!",16;		if ( .sound == 1 ) soundeffectall "triplekill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "triplekill.wav",0;		else if ( .sound == 3 ) soundeffect "triplekill.wav",0;	}	else if ( .@dota_multikills == 4 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Ultra Kill !!!",16;		else announce strcharinfo(0) +" just got a Ultra Kill !!!",16;		if ( .sound == 1 ) soundeffectall "ultrakill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "ultrakill.wav",0;		else if ( .sound == 3 ) soundeffect "ultrakill.wav",0;	}	else if ( .@dota_multikills >= 5 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" is on a Rampage !!!",16;		else announce strcharinfo(0) +" is on a Rampage !!!",16;		if ( .sound == 1 ) soundeffectall "rampage.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "rampage.wav",0;		else if ( .sound == 3 ) soundeffect "rampage.wav",0;	}	donpcevent "PvP Ranker::OnInit";	end;OnStreakReset:	set @dota_multikills, 0;	donpcevent "PvP Ranker::OnInit";	end;OnWhisperGlobal:	if ( @spam_dotapvp + 3 >= gettimetick(2) ) // 3 seconds interval so player don spam this command		end;	set @spam_dotapvp, gettimetick(2);	if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 )		query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime;	if ( @dota_sql_kills || @dota_sql_deaths ) {		dispbottom "Your current Streak      : "+ @PlayersKilledStreak;		dispbottom "Your total Kills               : "+ @dota_sql_kills;		dispbottom "Your total Deaths          : "+ @dota_sql_deaths;		dispbottom "Your highest Streak      : "+ @dota_sql_streaks;		query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", .@time1$;		dispbottom "Your highest Streak on : "+ .@time1$;	}	else		dispbottom "You are not in the pvp ladder yet.";	if ( getcharid(2) ) {		if ( getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {			query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;			setd ".dota_sql_"+ getcharid(2) +"_c", .@c;			setd ".dota_sql_"+ getcharid(2) +"_h", .@h;			setd ".dota_sql_"+ getcharid(2) +"_t", .@t;		}		if ( getd(".dota_sql_"+ getcharid(2) +"_h") ) {			dispbottom "Your guild current Own      : "+ getd(".dota_sql_"+ getcharid(2) +"_c");			dispbottom "Your guild highest Own      : "+ getd(".dota_sql_"+ getcharid(2) +"_h");			query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", .@time2$;			dispbottom "Your guild highest Own on : "+ .@time2$;		}		else			dispbottom "Your guild is not in the ladder yet.";	}	end;OnPCLoginEvent:	if ( .maptrigger$ != "all" ) end;OnPCLoadMapEvent:	if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) {		if ( .maptrigger$ != "all" ) {			getmapxy .@map$, .@x, .@y, 0;			for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {				if ( .@map$ == .maptrigger$[.@i] ) break;			}			if ( .@i == .maptriggersize ) end;		}		query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime;	}	if ( getcharid(2) && getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {		query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;		setd ".dota_sql_"+ getcharid(2) +"_c", .@c;		setd ".dota_sql_"+ getcharid(2) +"_h", .@h;		setd ".dota_sql_"+ getcharid(2) +"_t", .@t;	}	donpcevent "PvP Ranker::OnInit";	end;} prontera,146,174,5	script	PvP Ladder	733,{	set .@npcname$, strnpcinfo(0);	while (1) {		mes "["+ .@npcname$ +"]";		mes "Hello "+ strcharinfo(0) +"!";		mes "What can I do for you?";		next;		switch ( select ( "Display the PvP Ladder" ) ) {			case 1:				set .@nb, query_sql("select name, kills, deaths from pvpladder order by kills desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), .@name$, .@kills, .@deaths);				if ( .@nb == 0 ) {					mes "["+ .@npcname$ +"]";					mes "The ladder currently is empty.";					next;				}				for ( set .@j,0; .@j < .@nb; set .@j, .@j + getvariableofnpc(.showpage,"DOTAPVP") ) {						mes "[^006699Name^000000] [^00AA00Kills^000000] [^FF0000Deaths^000000]";					for ( set .@i, .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; set .@i, .@i + 1 ) {						mes "^996600"+ (.@i+1) +":^000000 [^006699"+ .@name$[.@i] +"^000000] [^00AA00"+ .@kills[.@i] +"^000000] [^FF0000"+ .@deaths[.@i] +"^000000]";						}						close;}end; //if not work < delete those 2. and add 2 {'s down. OnInit:	delwaitingroom strnpcinfo(1);	set .@nb, query_sql("select name, kills from pvpladder order by kills desc limit 1", .@name$, .@kills );	waitingroom "#1 Player: "+ .@name$ +" ("+ .@kills +" kills)",0;	end;}		}	} guild_vs3	mapflag	noteleportguild_vs3	mapflag	nowarpguild_vs1	mapflag	nowarpguild_vs1	mapflag	noteleport

  12. I'm currently using Euphy's WoE setter but it seems like it's impossible to control WoE.

     

    The server doesn't listen to the settings, WoE keeps activating at random times, no matter how I set it.

     

     

    Can anyone share a working WoE setter that works fine with Herc?

     

    Oh... I just realize someone else already made a topic like this: http://herc.ws/board/topic/2007-who-has-woe-setter-script-that-are-compatible-with-latest-hercules/

    Whoops. x.x


  13. Ever since I switched from rAthena to Hercules, donations no longer work as they should.

     

    After players make a donation, the credit balance remains zero but yet I'm receiving their donated money... It's just the balance doesn't update... :/

     

    Anyone know why? Here's my application.php

     

    'AcceptDonations'      => true,                     // Whether or not to accept donations.	'PayPalIpnUrl'         => 'www.paypal.com', // The URL for PayPal's IPN responses (www.paypal.com for live and www.sandbox.paypal.com for testing)	'PayPalBusinessEmail'  => '(myemailhere)',        // Enter the e-mail under which you have registered your business account.	'PayPalReceiverEmails' => array(                    // These are the receiver e-mail addresses who are allowed to receive payment.		//'admin2@localhost',                             // -- This array may be empty if you only use one e-mail		//'admin3@localhost'                              // -- because your Business Email is also checked.

  14. Hello, can anyone assist me here?

     

    I'm using Ghosts pvp ladder, but monster deaths are added into my "kill" window. :/

     

    I've really no idea why this is happening.

     

    *edit, monster deaths from ANY map. not just from the maps I've put in there.

     

     

    -	script	Versus	-1,{OnInit://--Configurationset .System, 1; //Toggle PvP System (0:Disable|1:Enable)set .ServerType, 1; //Are you using TXT or SQL? (0:TXT|1:SQL)set .GMLevel, 90; //GM levels above or equal this level will be ignored by the systemsetarray .PvPMap$[0], "guild_vs3","guild_vs1","fwarena","prtg_cas01"; //List all pvp maps here (Index 0:"All" to enable all maps) //PvP Ladderset .Top, 10; //What is the length of the list?set .Reset, 2; //Allow players to reset their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull)set .ZenyFee, 0; //How much zeny you want to charge to reset their pvp stat?set .CashFee, 3; //How much cashpoint you want to charge to reset their pvp stat?set .SkullFee, 0; //How much skull you want to charge to reset their pvp stat?set .AnnouncerFee, 0; //How much cashpoint per announcer? (DotA announcer is set as default) //Reward Setting (Every Kill)set .MaxZeny, 1000000000; //What is the max zeny of the server?set .Zeny, 0; //Earn zeny each kill? (0:Disable)set .Cash, 0; //How much #CASHPOINT every kill? (0:Disable)set .Skull, 1; //Collect player's skull each kill? (0:Disable|1:Enable)setarray .ItemID[0], 0; //Get items each kill? (0:Disable)setarray .Amount[0], 0; //How many items per kill? //Penalty Settingset .Feed, 10; //How many kills before feeding is called? (10:Recommended)set .Penalty, 1; //What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)set .Kick, 0; //Who to kick? (0:Feedee|1:Feeder|2:Both)set .Rollback, 10; //How many times should the kill count rollback when feeding is called? (10:Recommended) //Announcer Settingset .Broadcast, 0; //Where do you want to broadcast? (0:bc_all|1:bc_map)set .Streak, 1; //Show number of killing streak in broadcast? e.g. Ghost is Beyond Godlike(8)set .Multiple, 1; //Show number of multiple kill in broadcast? e.g. Makizushi just got an Ownage(5)set .Nemesis, 1; //Show number of nemesis in broadcast? e.g. Epoque is owning Jguy(9)set .Feeder, 1; //Show number of feed in broadcast? e.g. Cookies is feeding `KeiKun(10)set .RandomKillWord, 0; //Randomize the kill words? e.g. Arcenciel "Kill Word" jTynne (0:Disable|Default:"pwned")setarray .KillWord$[0], "pwned", "killed", "disintegrated", "neutralized"; //Enable above setting for this to work //Broadcast Color | See HexTable: http://johncfish.com/bggallery/otherchart/hextable.gifset .KColor$, "0xFFFF00"; //Kill Broadcast Color | e.g. Jguy pwned Mercurial set .KSColor$, "0xFFFF00"; //Killing Streak Broadcast Color | e.g. jTynne is on a Killing Spreeset .MKColor$, "0x33FF00"; //Multiple Kill Broadcast Color | e.g. Mercurial just got a Double Killset .ESColor$, "0xFF0000"; //End Streak Broadcast Color | e.g. BrianL just ended Jguy's Killing Spreeset .NMColor$, "0x0099FF"; //Nemesis Broadcast Color | e.g. Xazax is owning Cookiesset .PBColor$, "0xFF0000"; //Payback Broadcast Color | e.g. Makizushi just have a payback againts lilcooldude69set .FDColor$, "0xFF00CC"; //Feeder Broadcast Color | e.g. Cookies is feeding Z3R0 //--Warning: Critical Setting | Killing Streaks and Multiple Kills Announcersetarray .KSDotA$[0], "is on a Killing Spree", "is Dominating", "has a Mega-Kill", "is Unstoppable", "is Wicked Sick", "has a M-m-m-m....Monster Kill", "is Godlike", "is Beyond Godlike";setarray .KSHoN$[0], "is a Serial Killer", "is an Ultimate Warrior", "is Legendary", "is on an Onslaught!", "is Savage Sick", "is Dominating", "has a Bloodbath", "is Immortal"; //Took out #9. Champion of Newearthsetarray .MKDotA$[0], "just got a Double Kill", "just got a Triple Kill", "just got an Ultra Kill", "is on a Rampage", "is Owning his enemies";setarray .MKHoN$[0], "just got a Double Tap", "just got a Hat Trick", "just got an Quad Kill", "annihilated his enemies", "just got a Genocide";setarray .ESDotA$[0], "Killing Spree", "Dominating", "Mega-Kill", "Unstoppable", "Wicked Sick", "Monster Kill", "Godlike", "Beyond Godlike";setarray .ESHoN$[0], "Serial Killer", "Ultimate Warrior", "Legendary", "Onslaught", "Savage Sick", "Dominating", "Bloodbath", "Immortal"; //Took out #9. Champion of Newearthsetarray .EMDotA$[0], "Double Kill", "Triple Kill", "Ultra Kill", "Rampage", "Ownage";setarray .EMHoN$[0], "Double Tap", "Hat Trick", "Quad Kill", "Annihilation", "Genocide"; //--Warning: Fail Safe | Do Not Touchif(.System > 1){ set .System, 1; }if(.System < 0){ set .System, 0; }if(.ServerType > 1){ set .ServerType, 1; }if(.ServerType < 0){ set .ServerType, 0; }if(.GMLevel > 99){ set .GMLevel, 99; }if(.GMLevel < 0){ set .GMLevel, 0; }if((.PvPMap$[0] == "ALL")||(.PvPMap$[0] == "ALl")||(.PvPMap$[0] == "AlL")||(.PvPMap$[0] == "aLL")||(.PvPMap$[0] == "aLl") || (.PvPMap$[0] == "alL")){ setarray .PvPMap$[0], "All"; }if(.Ladder > 1){ set .Ladder, 1; }if(.Ladder < 0){ set .Ladder, 0; }if(.Top < 0){ set .Top, 0; }if(.Reset > 3){ set .Reset, 0; }if(.Reset < 0){ set .Reset, 0; }if((.Reset == 1)&&(.ZenyFee <= 0)){ set .Reset, 0; }if((.Reset == 1)&&(.ZenyFee >= .MaxZeny)){ set .Reset, 0; }if((.Reset == 2)&&(.CashFee <= 0)){ set .Reset, 0; }if((.Reset == 3)&&(.SkullFee <= 0)){ set .Reset, 0; }if(.Zeny > .MaxZeny){ set .Zeny, 0; }if(.Zeny < 0){ set .Zeny, 0; }if(.Cash < 0){ set .Cash, 0; }if(.Broadcast > 1){ set .Broadcast, 1; }if(.Broadcast < 0){ set .Broadcast, 0; }if(.Feed < 1){ set .Feed, 0; }if(.Penalty > 3){ set .Penalty, 3; }if(.Penalty < 1){ set .Penalty, 0; }if(.Rollback < 1){ set .Rollback, 0; }if(.Streak > 1){ set .Streak, 1; }if(.Streak < 1){ set .Streak, 0; }if(.Multiple > 1){ set .Multiple, 1; }if(.Multiple < 1){ set .Multiple, 0; }if(.Nemesis > 1){ set .Nemesis, 1; }if(.Nemesis < 0){ set .Nemesis, 0; }if(.Feeder > 1){ set .Feeder, 1; }if(.Feeder < 1){ set .Feeder, 0; }if(.RandomKillWord > 1){ set .RandomKillWord, 1; }if(.RandomKillWord < 0){ set .RandomKillWord, 0; }end; OnPCKillEvent:if(.System){if(getgmlevel() >= .GMLevel){ end; }if(.PvPMap$[0] != "All"){	for(set .@i, 0; .@i < (getarraysize(.PvPMap$) - 1); set .@i, .@i + 1){		if(strcharinfo(3) != .PvPMap$[.@i]){ end; }	}}if((@nm == .Feed) && (.Penalty)){callsub OnClearData;	switch(.Penalty){	case 0: break;	case 1: callsub OnRollback; break;	case 2: callsub OnRollback;		if(.Kick == 0){ atcommand "@kick "+strcharinfo(0); }		if(.Kick == 1){ atcommand "@kick "+rid2name(killedrid); }		if(.Kick == 2){ atcommand "@kick "+strcharinfo(0); atcommand "@kick "+rid2name(killedrid); }		break;	case 3: callsub OnRollback;		if(.Kick == 0){ atcommand "@block "+strcharinfo(0); }		if(.Kick == 1){ atcommand "@block "+rid2name(killedrid); }		if(.Kick == 2){ atcommand "@block "+strcharinfo(0);	atcommand "@block "+rid2name(killedrid); }		break;	default: break;	}}if(@nm < .Feed){	if(.Zeny && ((Zeny + .Zeny) < .MaxZeny)){ set Zeny, Zeny + .Zeny; }	if(.Cash){ dispbottom "[Point System] +1 Kill Point"; set #CASHPOINT, #CASHPOINT + .Cash; }	if(.Skull){ getnameditem 7420, rid2name(killedrid); }	for(set .@i, 0; .@i < getarraysize(.ItemID); set .@i, .@i + 1){ if(.ItemID){ getitem .ItemID[.@i], .Amount[.@i]; }}}if(.RandomKillTerm){ announce strcharinfo(0)+" "+.KillWord$[rand(0, getarraysize(.KillWord$) - 1)]+" "+rid2name(killedrid)+"'s head", ((.Broadcast)?bc_all:bc_map), .KColor$; } else { announce strcharinfo(0)+" pwned "+rid2name(killedrid)+"'s head", ((.Broadcast)?bc_all:bc_map), .KColor$; }set Kill, Kill + 1; if(@ks < 10){ set @ks, @ks + 1; }if(@mk < 6){ set @mk, @mk + 1; } if(!NemesisKilled){ set NemesisKilled, killedrid; }if(NemesisKilled == killedrid){ set @nm, @nm + 1; }deltimer "Versus::OnMKReset"; addtimer 18000, "Versus::OnMKReset"; callsub OnRecordStreak; callsub OnAnnounce; callsub OnDeath;end;} end; OnPCDieEvent:if(.System){if(getgmlevel() >= .GMLevel){ end; }if(.PvPMap$[0] != "All"){	 for(set .@i, 0; .@i < (getarraysize(.PvPMap$) - 1); set .@i, .@i + 1){		if(strcharinfo(3) != .PvPMap$[.@i]){ end; }		set Death, Death + 1;	}}} end; OnPCLogoutEvent:if(.System){if(getgmlevel() >= .GMLevel){ end; }if((.ServerType) && (Kill)){ query_sql("REPLACE INTO `pvp_rank` (`char_id`, `account_id`, `char`, `kill`, `death`, `kdr`, `killingstreak`, `multikill`,  `nemesiskill`, `feedcount`,`killingspree`, `dominating`, `megakill`, `unstoppable`, `wickedsick`, `monsterkill`, `godlike`, `beyondgodlike`, `doublekill`, `triplekill`, `ultrakill`, `rampage`, `ownage`) VALUES ("+getcharid(0)+","+getcharid(3)+", '"+rid2name(getcharid(3))+"', "+Kill+", "+Death+", '"+callfunc("KDR_Calc", Kill, Death)+"', "+KillingStreak+", "+MultiKill+",  "+NemesisKill+", "+FeedCount+", "+KillingSpree+", "+Dominating+", "+MegaKill+", "+Unstoppable+", "+WickedSick+", "+MonsterKill+", "+Godlike+", "+BeyondGodlike+", "+DoubleKill+", "+TripleKill+", "+UltraKill+", "+Rampage+", "+Ownage+")"); }if(.PvPMap$[0] != "All"){	for(set .@i, 0; .@i < (getarraysize(.PvPMap$) - 1); set .@i, .@i + 1){		if(strcharinfo(3) != .PvPMap$[.@i]){ end; }	}}callsub OnClearData; deltimer "Versus::OnMKReset";} end; OnRecordStreak:if(@ks > 2){	set KillingStreak, KillingStreak + 1;	switch(@ks){	case 0:	case 1:	case 2: break;	 case 3: set KillingSpree, KillingSpree + 1; break;	 case 4: set Dominating, Dominating + 1; break;	case 5: set MegaKill, MegaKill + 1; break;	 case 6: set Unstoppable, Unstoppable + 1; break;	 case 7: set WickedSick, WickedSick + 1; break;	case 8: set MonsterKill, MonsterKill + 1; break;	 case 9: set Godlike, Godlike + 1; break;	 case 10: set BeyondGodlike, BeyondGodlike + 1; break;	default: break;	}}if(@mk > 1){	set MultiKill, MultiKill + 1;	switch(@mk){	case 0:	case 1: break;	 case 2: set DoubleKill, DoubleKill + 1; break;	 case 3: set TripleKill, TripleKill + 1; break;	case 4: set UltraKill, UltraKill + 1; break;	case 5: set Rampage, Rampage + 1; break;	 case 6: set Ownage, Ownage + 1; break;	default: break;	}}if((@nm > 3) && (@nm < .Feed)){ set NemesisKill, NemesisKill + 1; }if(@nm >= .Feed){	set FeedCount, FeedCount + 1;}return; OnAnnounce:if((@ks == 1) && (#FirstBlood == 1)){	if(#Announcer == 0){ announce strcharinfo(0)+" drew first blood", ((.Broadcast)?bc_all:bc_map), .KSColor$; }	if(#Announcer > 1){ announce strcharinfo(0)+" got bloodlust", ((.Broadcast)?bc_all:bc_map), .KSColor$; }	set #FirstBlood, 0;	soundeffectall ""+#Announcer+"_KS"+1+".wav", 0, strcharinfo(3);}if(@ks > 2){	if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[@ks - 3]+" "+((.Streak)?"("+@ks+")":"")+"", ((.Broadcast)?bc_all:bc_map), .KSColor$; }	if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[@ks - 3]+" "+((.Streak)?"("+@ks+")":"")+"", ((.Broadcast)?bc_all:bc_map), .KSColor$; }	soundeffectall ""+#Announcer+"_KS"+@ks+".wav", 0, strcharinfo(3);}if(@mk > 1){	if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[@mk - 2]+" "+((.Multiple)?"("+@mk+")":"")+"", ((.Broadcast)?bc_all:bc_map), .MKColor$; }	if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[@mk - 2]+" "+((.Multiple)?"("+@mk+")":"")+"", ((.Broadcast)?bc_all:bc_map), .MKColor$; }	sleep2 1500;	soundeffectall ""+#Announcer+"_MK"+@mk+".wav", 0, strcharinfo(3);}if((@nm > 3) && (@nm < .Feed)){	announce strcharinfo(0)+" is owning "+rid2name(NemesisKilled)+" "+((.Nemesis)?"("+@nm+")":"")+"", ((.Broadcast)?bc_all:bc_map), .NMColor$;	sleep2 2000;	if(#Announcer > 0){ soundeffectall #Announcer+"_Nemesis.wav", 0, strcharinfo(3); } else { soundeffectall "1_Nemesis.wav", 0;}}if(@nm >= .Feed){	announce rid2name(NemesisKilled)+" is feeding "+strcharinfo(0)+" "+((.Feeder)?"("+@nm+")":"")+"", ((.Broadcast)?bc_all:bc_map), .FDColor$;	sleep2 1500;	soundeffectall "Feeder.wav", 0, strcharinfo(3);} return; OnDeath:if(@ks > 2){	if(#Announcer == 0){ announce rid2name(killedrid)+" just ended "+strcharinfo(0)+"'s "+.ESDotA$[@ks - 3]+" "+((.Streak)?"("+@ks+")":"")+"", ((.Broadcast)?bc_all:bc_map), .ESColor$; }	if(#Announcer > 1){ announce rid2name(killedrid)+" just ended "+strcharinfo(0)+"'s "+.ESHoN$[@ks - 3]+" "+((.Streak)?"("+@ks+")":"")+"", ((.Broadcast)?bc_all:bc_map), .ESColor$; }}if(@nm > 3){	soundeffectall #Announcer+"_Payback.wav", 0, rid2name(killedrid);	announce rid2name(killedrid)+" just have a payback againts "+strcharinfo(0)+" "+((.Nemesis)?"("+@nm+")":"")+"", ((.Broadcast)?bc_all:bc_map), .PBColor$;}attachrid(killedrid);	 callsub OnClearData;return; OnMKReset: set @mk, 0; end;OnClearData: sleep2 3000; set NemesisKilled, 0; set @ks, 0; set @mk, 0; set @nm, 0; return; OnRollback:if(.Zeny){ set Zeny, Zeny - (.Zeny * .Rollback); }if(.Cash){ dispbottom "[Point System] -"+(.Cash * .Rollback)+" Kill Point"; set #CASHPOINT, #CASHPOINT - (.Cash * .Rollback); }if(.Skull){ delitem 7420, .Rollback; }for(set .@i, 0; .@i < getarraysize(.ItemID); set .@i, .@i + 1){ if(.ItemID){ delitem .ItemID[.@i], .Amount[.@i] * .Rollback; }}if((Kill - .Rollback) > 0){ set Kill, Kill - .Rollback; } else { set Kill, 0; }if((KillingSpree - 1) > 0){ set KillingSpree, KillingSpree - 1; } else { set KillingSpree, 0; }if((Dominating - 1) > 0){ set Dominating, Dominating - 1; } else { set Dominating, 0; }if((MegaKill - 1) > 0){ set MegaKill, MegaKill - 1; } else { set MegaKill, 0; }if((Unstoppable - 1) > 0){ set Unstoppable, Unstoppable - 1; } else { set Unstoppable, 0; }if((WickedSick - 1) > 0){ set WickedSick, WickedSick - 1; } else { set WickedSick, 0; }if((MonsterKill - 1) > 0){ set MonsterKill, MonsterKill - 1; } else { set MonsterKill, 0; }if((Godlike - 1) > 0){ set Godlike, Godlike - 1; } else { set Godlike, 0; }if((BeyondGodlike - 1) > 0){ set BeyondGodlike, BeyondGodlike - 1; } else { set BeyondGodlike, 0; }if((DoubleKill - 1) > 0){ set DoubleKill, DoubleKill - 1; } else { set DoubleKill, 0; }if((TripleKill - 1) > 0){ set TripleKill, TripleKill - 1; } else { set TripleKill, 0; }if((UltraKill - 1) > 0){ set UltraKill, UltraKill - 1; } else { set UltraKill, 0; }if((Rampage - 1) > 0){ set Rampage, Rampage - 1; } else { set Rampage, 0; }if((Ownage - 1) > 0){ set Ownage, Ownage - 1; } else { set Ownage, 0; }if((NemesisKill - (.Rollback - 3)) > 0){ set NemesisKill, NemesisKill - (.Rollback - 3); } else { set NemesisKill, 0; }announce "[Anti-Feed] Your kill count has been rollbacked "+.Rollback+" times.",bc_self,0xFF0000;return;} quiz_test,95,84,5	script	Loki	467,{mes "[Loki]"; mes "What can I do for you today?";switch(select("Player Ranking:PvP Statistic:Announcer Setting")){case 1: //Player Ranking	next;	 if(getvariableofnpc(.ServerType, "Versus")){		mes "[Top "+getvariableofnpc(.Top, "Versus")+" PvP Players]";		mes "^0000FFKill^000000 | ^FF0000Death^000000 | ^FF22FFKDR^000000 | ^00FF00SK^000000 | ^666666MK^000000";		query_sql "SELECT `char`, `kill`, `death`, `kdr`, `killingstreak`, `multikill` FROM `pvp_rank` ORDER BY `pvp_rank`.`kill` DESC LIMIT "+getvariableofnpc(.Top, "Versus")+"", .@char$, .@kill, .@death, .@kdr$, .@sk, .@mk;		for(set .@i, 0; .@i < getarraysize(.@char$); set .@i, .@i + 1){			mes .@i+1+". "+.@char$[.@i]+" ^0000FF"+.@kill[.@i]+"^000000 ^FF0000"+.@death[.@i]+"^000000 ^FF22FF"+.@kdr$[.@i]+"^000000 ^00FF00"+.@sk[.@i]+"^000000 ^666666"+.@mk[.@i]+"^000000 ";		}		close;	} else {		 mes "Top "+getvariableofnpc(.Top, "Versus")+" ranking is not yet implemented for this server type.";	 }case 2: //PvP Statistic	next;	mes strcharinfo(0)+"'s PvP Statistic"; mes "^666666Kill:^000000 "+Kill+" ^666666Death:^000000 "+Death+" ^666666KDR:^000000 "+callfunc("KDR_Calc", Kill, Death)+"^000000";	mes "^666666Killing Streak:^000000 "+KillingStreak+" ^666666Multi-Kills:^000000 "+MultiKill+"";	switch(select("Killing Streak:Multi-Kill Streak:Nemesis Streak:"+(getvariableofnpc(.Reset, "Versus")?"Reset":"")+"")){	case 1: //Killing Streak		next;		setarray .LSDotA$[0], ""+KillingSpree+"", ""+Dominating+"", ""+MegaKill+"", ""+Unstoppable+"", ""+WickedSick+"", ""+MonsterKill+"", ""+Godlike+"", ""+BeyondGodlike+"";		mes "Killing Streak Stats";		switch(#Announcer){		case 0:			for(set .@i, 0; .@i < getarraysize(.LSDotA$); set .@i, .@i + 1){				mes "^666666"+getvariableofnpc(.ESDotA$[.@i], "Versus")+"^000000: "+ .LSDotA$[.@i];			 }			close;		default:			for(set .@i, 0; .@i < getarraysize(.LSDotA$); set .@i, .@i + 1){				mes "^666666"+getvariableofnpc(.ESHoN$[.@i], "Versus")+"^000000: "+ .LSDotA$[.@i];			 }			close;		}		close;	case 2: //Multi-Kill		next;		setarray .LMDotA$[0], ""+DoubleKill+"", ""+TripleKill+"", ""+UltraKill+"", ""+Rampage+"", ""+Ownage+"";		mes "Multi-Kill Stats";		switch(#Announcer){		case 0:			for(set .@i, 0; .@i < getarraysize(.LMDotA$); set .@i, .@i + 1){				mes "^666666"+getvariableofnpc(.EMDotA$[.@i], "Versus")+"^000000: "+ .LMDotA$[.@i];			 }			close;		default:			for(set .@i, 0; .@i < getarraysize(.LMDotA$); set .@i, .@i + 1){				mes "^666666"+getvariableofnpc(.EMHoN$[.@i], "Versus")+"^000000: "+ .LMDotA$[.@i];			 }			close;		}	case 3:	//Nemesis		next;		mes "Nemesis Stat";		mes "^666666Nemesis Kill^000000: "+NemesisKill;		mes "^666666Feed Count^000000: "+FeedCount;		close;	case 4: //Reset Stat		next;		set .Reset, getvariableofnpc(.Reset, "Versus");		set .ZenyFee, getvariableofnpc(.ZenyFee, "Versus");		set .CashFee, getvariableofnpc(.CashFee, "Versus");		set .SkullFee, getvariableofnpc(.SkullFee, "Versus");		mes "[Loki]"; mes "Are you sure you want to reset your PvP Statistics?";		if(.Reset == 1){ mes "^FF0000Reset Fee:^000000 "+.ZenyFee+" Zeny"; }		if(.Reset == 2){ mes "^FF0000Reset Fee:^000000 "+.CashFee+" Kill Point"; }		if(.Reset == 3){ mes "^FF0000Reset Fee:^000000 "+.SkullFee+" Skull"; }		switch(select("No:Yes")){			case 1: close;			case 2:			switch(.Reset){				case 0: break;				case 1:					if(Zeny < .ZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }					set Zeny, Zeny - .ZenyFee; break;				case 2:					if(#CASHPOINTS < .CashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }					set #CASHPOINTS, #CASHPOINTS - .CashFee; break;				case 3:					if(countitem(7420) < .SkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }					delitem 7420, .SkullFee; break;				default: break;			}		if(getvariableofnpc(.ServerType, "Versus")){ query_sql "DELETE FROM `pvp_rank` WHERE `pvp_rank`.`char_id` = "+getcharid(0)+""; }		callsub OnPvPReset; announce "[Loki] Your PvP Statistic has been reset.",bc_self,0xFF0000; close;		}		close;	}close;case 3: //Announcer Setting	next; mes "[Loki]"; mes "What kind of announcer you want to use?";	if(getvariableofnpc(.AnnouncerFee, "Versus")){ set .AnnouncerFee, getvariableofnpc(.AnnouncerFee, "Versus"); }	L_Announce:	switch(select(""+((#Announcer == 0)?"^FF0000DotA^000000":"DotA")+":"+((#Announcer == 1)?"^FF0000HoN^000000":"HoN")+":"+((#Announcer == 2)?"^FF0000Ms. Pudding^000000":"Ms. Pudding")+":"+((#Announcer == 3)?"^FF0000Flamboyant^000000":"Flamboyant")+":"+((#Announcer == 4)?"^FF0000English^000000":"English")+":"+((#Announcer == 5)?"^FF0000Balls of Steel^000000":"Balls of Steel")+":"+((#Announcer == 6)?"^FF0000BreakyCPK^000000":"BreakyCPK")+"")){		case 1: //DotA			if(#Announcer == 0){ goto L_Announce; }			soundeffect "0_KS1.wav", 0;			set #Announcer, 0;			announce "[Loki] DotA announcer has been configured to your account.",bc_self,0xFF0000;			close;		case 2: //HoN			if(#Announcer == 1){ goto L_Announce; }			if((.AnnouncerFee) && (!#Hon)){			next; mes "[Loki]"; mes "Do you want to purchase HoN announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #Hon, 1;			 }			}			soundeffect "1_KS1.wav", 0;			set #Announcer, 1;			announce "[Loki] HoN announcer has been configured to your account.",bc_self,0xFF0000;			close;		case 3: //Ms. Pudding			if(#Announcer == 2){ goto L_Announce; }			if((.AnnouncerFee) && (!#MsPudding)){			next; mes "[Loki]"; mes "Do you want to purchase Ms. Pudding announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #MsPudding, 1;			 }			}			soundeffect "2_KS1.wav", 0;			set #Announcer, 2;			announce "[Loki] Ms. Pudding announcer has been configured to your account.",bc_self,0xFF0000;			close;				case 4: //Flamboyant			if(#Announcer == 3){ goto L_Announce; }			if((.AnnouncerFee) && (!#Flamboyant)){			next; mes "[Loki]"; mes "Do you want to purchase Flamboyant announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #Flamboyant, 1;			 }			}			soundeffect "3_KS1.wav", 0;			set #Announcer, 3;			announce "[Loki] Flamboyant announcer has been configured to your account.",bc_self,0xFF0000;			close;					case 5: //English			if(#Announcer == 4){ goto L_Announce; }			if((.AnnouncerFee) && (!#English)){			next; mes "[Loki]"; mes "Do you want to purchase English announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #English, 1;			 }			}			soundeffect "4_KS1.wav", 0;			set #Announcer, 4;			announce "[Loki] English announcer has been configured to your account.",bc_self,0xFF0000;			close;		case 6: //Balls of Steel			if(#Announcer == 5){ goto L_Announce; }			if((.AnnouncerFee) && (!#BallsofSteel)){			next; mes "[Loki]"; mes "Do you want to purchase Balls of Steel announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #BallsofSteel, 1;			 }			}			soundeffect "5_KS1.wav", 0;			set #Announcer, 5;			announce "[Loki] Balls of Steel announcer has been configured to your account.",bc_self,0xFF0000;			close;		case 7: //BreakyCPK			if(#Announcer == 6){ goto L_Announce; }			if((.AnnouncerFee) && (!#BreakyCPK)){			next; mes "[Loki]"; mes "Do you want to purchase BreakyCPK announcer for "+.AnnouncerFee+" Kill Point?";			switch(select("No:Yes")){				case 1: close;				case 2:				 if(#CASHPOINTS < .AnnouncerFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }				set #CASHPOINTS, #CASHPOINTS - .AnnouncerFee;				set #BreakyCPK, 1;			 }			}			soundeffect "6_KS1.wav", 0;			set #Announcer, 6;			announce "[Loki] BreakyCPK announcer has been configured to your account.",bc_self,0xFF0000;			close;	default: close;	}end; }close; OnPvPReset:set Kill, 0;set Death, 0;set KillingStreak, 0; set MultiKill, 0;set KillingSpree, 0;set Dominating, 0;set MegaKill, 0;set Unstoppable, 0;set WickedSick, 0;set MonsterKill, 0;set Godlike, 0;set BeyondGodlike, 0;set DoubleKill, 0;set TripleKill, 0;set UltraKill, 0;set Rampage, 0;set Ownage, 0;set NemesisKill, 0;set FeedCount, 0;return;} //Ghost's KDR Algorithmfunction	script	KDR_Calc	{if(!getarg(1)) { debugmes "Error in KDR function, getarg(1) invalid value"; return 0; } // [Lighta]if(getarg(0) >= getarg(1)){	if(getarg(1)){		set .@i, getarg(0)/getarg(1);		if((getarg(0)%getarg(1)) == 0){ return .@i+".00"; }		set .@j, (getarg(0)%getarg(1))*100/getarg(1);		return .@i+"."+.@j;	} else {		return getarg(0)+".00";	}}if(getarg(0) < getarg(1)){	if(getarg(0)){		 set .@i, (getarg(0)*10)/getarg(1);		set .@j, ((getarg(0)*10)%getarg(1))*10/getarg(1);	return "0."+.@i +.@j;	} else {		return "0.00";	} }}

  15. Hello,

     

    I have troubles scripting set equipment. How to properly do this on Hercules?

     

    Here's one of the official sets scripts that I tried to modify to use with my custom set:

    http://ratemyserver.net/index.php?page=re_item_db&comid=164

     

    That code being:

    if(!isequipped(4172,4257,4230,4272)) bonus3 bAutoSpell,"RG_INTIMIDATE",1,20; 

     

    Now, doing that worked but not the way I wanted it to. The script triggers even without having those items/cards equipped.

     

    I tried another way that was recommended on rAthena:

    { if ((isequipped(2480)) && (isequipped(2581)) && (isequipped(2891))) { bonus bAllStats,4; bonus bMaxHPrate,5; } } ,{},{}

     

    But that did not work at all....  Anyone know where I went wrong?

     

    Thanks!

×
×
  • Create New...

Important Information

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