Jump to content
  • 0
Sign in to follow this  
karazu

Guild Prize Giver

Question

//===== 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?

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

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):

//===== 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;} 

Share this post


Link to post
Share on other sites
  • 0

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;

Share this post


Link to post
Share on other sites
  • 0

 

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

 

 

[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 

 

Edited by karazu

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

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