Guild Prize Giver

karazu

New member
Messages
1,115
Points
0
//===== rAthena Script =======================================//= Guild Prize Giveaway//===== By: ==================================================//= AnnieRuru / Mysterious / Joseph//===== Current Version: =====================================//= 1.7//===== Compatible With: =====================================//= rAthena SVN//===== Description: =========================================//= Rewards guild masters of castle owners after each//= War of Emperium session.//===== Additional Comments: =================================//= v1.0 - Intitial Re-release [Mysterious]//= v1.1 - Language structures [Mysterious]//= v1.2 - Added divisions [Mysterious]//= v1.3 - Added proper information [Mysterious]//= v1.4 - Optimized! [Euphy]//= v1.5 - Little bit of cleaning [Mysterious]//= v1.6 - Fixed Agit on/off corruption. [Joseph]//= v1.7 - Fixed overweight issues [Joseph]//============================================================prontera,163,166,4 script Castle Rewards 871,{ function GetCastle; set .@reward,671,1; //<Item_ID>,<Amount>{,...} set .@n$,"["+strnpcinfo(0)+"]"; mes "Your guild [^0000FF"+getguildname(getcharid(2))+"^000000] has conquered:"; for(set .@i,0;.@i<getarraysize(.Castles$);set .@i,.@i+1) if (getcastledata(.Castles$[.@i],1) == getcharid(2)) { mes " > "+getcastlename(.Castles$[.@i])+""; set .@c,1; setarray .@uh$[getarraysize(.@uh$)],.Castles$[.@i],(1<<.@i); } if (!.@c) { mes " > No castles."; close; } next; if (select(((getguildmasterid(getcharid(2))==getcharid(0))?((agitcheck()||agitcheck2())?"":"Redeem Reward"):"")+":Close")==2) close; mes .@n$; mes "Please select a castle to redeem your guild reward."; for(set .@i,0;.@i<getarraysize(.@uh$);set .@i,.@i+2) set .@m$,.@m$+($castle_reward&(1<<GetCastle(atoi(.@uh$[.@i+1])))?"^0000FF":"^FF0000")+getcastlename(.@uh$[.@i])+"^000000:"; next; set .@m,select(.@m$)-1; if ($castle_reward&(1<<GetCastle(atoi(.@uh$[.@m*2+1])))) { mes .@n$; mes "Here's your reward for conquering ^0000FF"+getcastlename(.@uh$[.@m*2])+"^000000."; mes "You should divide these among your guild members."; for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+1) if (!checkweight(.@reward[.@i],.@reward[.@i+1])) { mes " "; mes "^FF0000Overweight!^000000"; close; } for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+1) getitem .@reward[.@i],.@reward[.@i+1]; set $castle_reward,$castle_reward^(1<<GetCastle(atoi(.@uh$[.@m*2+1]))); close; } mes .@n$; mes "It seems like you've redeemed the reward."; close; function GetCastle { for(set .@j,0;.@j<getarraysize(.Castles$);set .@j,.@j+1) { set .@c1,.@c2|(1<<.@j); if (getarg(0)==.@c1) return .@j; } return -1; }OnAgitEnd:OnAgitEnd2: for(set .@i,0;.@i<getarraysize($WOE_CONTROL);set .@i,.@i+4) if (gettime(4)==$WOE_CONTROL[.@i] && gettime(3)==$WOE_CONTROL[.@i+2] && $castle_reward&(1<<GetCastle($WOE_CONTROL[.@i+3])) == 0) set $castle_reward,$castle_reward|(1<<GetCastle($WOE_CONTROL[.@i+3])); end; OnInit: setarray .Castles$, "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05", "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05", "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; end;} 
Can someone analyze this Script please.

Will this script give a prize everyday or only every after the WOE?

 
Yes every end of WOE

Code:
OnAgitEnd:OnAgitEnd2:    for(set .@i,0;.@i<getarraysize($WOE_CONTROL);set .@i,.@i+4)        if (gettime(4)==$WOE_CONTROL[.@i] && gettime(3)==$WOE_CONTROL[.@i+2] && $castle_reward&(1<<GetCastle($WOE_CONTROL[.@i+3])) == 0)            set $castle_reward,$castle_reward|(1<<GetCastle($WOE_CONTROL[.@i+3]));    end;
 
Yes every end of WOE

OnAgitEnd:OnAgitEnd2: for(set .@i,0;.@i<getarraysize($WOE_CONTROL);set .@i,.@i+4) if (gettime(4)==$WOE_CONTROL[.@i] && gettime(3)==$WOE_CONTROL[.@i+2] && $castle_reward&(1<<GetCastle($WOE_CONTROL[.@i+3])) == 0) set $castle_reward,$castle_reward|(1<<GetCastle($WOE_CONTROL[.@i+3])); end;
Thank you, because I saw a WOE Prize Giver before it gives everyday. 

error

Code:
[Error]:  Loading NPC file: npc/custom/MYNPC/WOEprizegiver.txtscript error on npc/custom/MYNPC/WOEprizegiver.txt line 25    parse_line: need ';'    23 : {    24 :     function    GetCastle;*   25 :     set .@reward,671','1;    //<Item_ID>,<Amount>{,...}    26 :     set .@n$,"["+strnpcinfo(0)+"]";    27 :     mes "Your guild [^0000FF"+getguildname(getcharid(2))+"^000000] has conquered:";    28 :     for(set .@i,0;.@i<getarraysize(.Castles$);set .@i,.@i+1)    29 :         if (getcastledata(.Castles$[.@i],1) == getcharid(2)) {    30 :             mes " > "+getcastlena 
 
Last edited by a moderator:
The script had an error by default.

Change line 25 to:

setarray .@reward[0],671,1; //<Item_ID>,<Amount>{,...}

And I think the loops at line 45 and 46 aren't correct. If you get problems try changing

for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+1) if (!checkweight(.@reward[.@i],.@reward[.@i+1])) { mes " "; mes "^FF0000Overweight!^000000"; close; } for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+1) getitem .@reward[.@i],.@reward[.@i+1];
to:

for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+2) if (!checkweight(.@reward[.@i],.@reward[.@i+1])) { mes " "; mes "^FF0000Overweight!^000000"; close; } for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+2) getitem .@reward[.@i],.@reward[.@i+1];

Full script fixed (I think):

Code:
//===== Hercules Script ======================================//= Guild Prize Giveaway//===== By: ==================================================//= AnnieRuru / Mysterious / Joseph//===== Current Version: =====================================//= 1.7//===== Compatible With: =====================================//= Hercules//===== Description: =========================================//= Rewards guild masters of castle owners after each//= War of Emperium session.//===== Additional Comments: =================================//= v1.0 - Intitial Re-release [Mysterious]//= v1.1 - Language structures [Mysterious]//= v1.2 - Added divisions [Mysterious]//= v1.3 - Added proper information [Mysterious]//= v1.4 - Optimized! [Euphy]//= v1.5 - Little bit of cleaning [Mysterious]//= v1.6 - Fixed Agit on/off corruption. [Joseph]//= v1.7 - Fixed overweight issues [Joseph]//= v1.8 - Fixed default script failing to parse, and a //=        possible issue on the getitem and overweight //=        checking loops [jaBote]//============================================================prontera,163,166,4	script	Castle Rewards	871,{    function    GetCastle;    setarray .@reward[0],671,1;    //<Item_ID>,<Amount>{,...}    set .@n$,"["+strnpcinfo(0)+"]";    mes "Your guild [^0000FF"+getguildname(getcharid(2))+"^000000] has conquered:";    for(set .@i,0;.@i<getarraysize(.Castles$);set .@i,.@i+1)        if (getcastledata(.Castles$[.@i],1) == getcharid(2)) {            mes " > "+getcastlename(.Castles$[.@i])+""; set .@c,1;            setarray .@uh$[getarraysize(.@uh$)],.Castles$[.@i],(1<<.@i);        }    if (!.@c) { mes " > No castles."; close; }    next;    if (select(((getguildmasterid(getcharid(2))==getcharid(0))?((agitcheck()||agitcheck2())?"":"Redeem Reward"):"")+":Close")==2) close;    mes .@n$;    mes "Please select a castle to redeem your guild reward.";    for(set .@i,0;.@i<getarraysize(.@uh$);set .@i,.@i+2) set .@m$,.@m$+($castle_reward&(1<<GetCastle(atoi(.@uh$[.@i+1])))?"^0000FF":"^FF0000")+getcastlename(.@uh$[.@i])+"^000000:";    next;    set .@m,select(.@m$)-1;    if ($castle_reward&(1<<GetCastle(atoi(.@uh$[.@m*2+1])))) {        mes .@n$;        mes "Here's your reward for conquering ^0000FF"+getcastlename(.@uh$[.@m*2])+"^000000.";        mes "You should divide these among your guild members.";        for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+2) if (!checkweight(.@reward[.@i],.@reward[.@i+1])) { mes " "; mes "^FF0000Overweight!^000000"; close; }        for(set .@i,0;.@i<getarraysize(.@reward);set .@i,.@i+2) getitem .@reward[.@i],.@reward[.@i+1];        set $castle_reward,$castle_reward^(1<<GetCastle(atoi(.@uh$[.@m*2+1])));        close;    }    mes .@n$;    mes "It seems like you've redeemed the reward.";    close;    function    GetCastle    {        for(set .@j,0;.@j<getarraysize(.Castles$);set .@j,.@j+1) {            set .@c1,.@c2|(1<<.@j);            if (getarg(0)==.@c1) return .@j;        }        return -1;    }OnAgitEnd:OnAgitEnd2:    for(set .@i,0;.@i<getarraysize($WOE_CONTROL);set .@i,.@i+4)        if (gettime(4)==$WOE_CONTROL[.@i] && gettime(3)==$WOE_CONTROL[.@i+2] && $castle_reward&(1<<GetCastle($WOE_CONTROL[.@i+3])) == 0)            set $castle_reward,$castle_reward|(1<<GetCastle($WOE_CONTROL[.@i+3]));    end;    OnInit:    setarray .Castles$,        "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",        "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",        "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",        "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",        "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",        "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";    end;}
 
Back
Top