Jump to content

Question

Posted

heres my script

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

post-3084-0-59407300-1405977376_thumb.jpg

4 answers to this question

Recommended Posts

Posted (edited)


//===== rAthena Script =======================================

//= Guild Prize Giveaway

//===== By: ==================================================

//= AnnieRuru / Mysterious

//===== Current Version: =====================================

//= 1.5

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

//============================================================

prontera,133,163,4 script Castle Rewards 871,{

mes "[Castle Rewards]";

if (agitcheck() || agitcheck2()) { mes "WoE is currently still in progress."; close; }

mes "Please select a castle:";

next;

for(set .@i,0; .@i<30; set .@i,.@i+1)

set .@menu$, .@menu$+getcastlename(.Castles$[.@i])+":";

set .@i, select(.@menu$)-1;

mes "[Castle Rewards]";

if (getcastledata(.Castles$[.@i],1) != getcharid(2)) { mes "You aren't the owner of this castle."; close; }

if (getguildmasterid(getcharid(2)) != getcharid(0)) { mes "Only the guild master can claim the reward."; close; }

if ($castle_claimed&(1<<.@i)) { mes "You've already claimed this castle's reward!"; close; }

mes "Here's your reward for conquering "+getcastlename(.Castles$[.@i])+".";

set $castle_claimed, $castle_claimed | (1<<.@i);

getitem 7539,300; //Set your prize here!

close;

OnAgitEnd:

set $castle_claimed, 0;

end;

OnInit:

setarray .Castles$[0],

"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;

}

try this script, check franciscos answer

Edited by Normynator
Posted (edited)
set .@reward,671,1;

The problem your mapserv described is a simple bad setting of the .@reward variable. It gives error because it doesn't expect a second argument (,1) on that command.

 

Are you trying to set a variable or an array?  Because later on you read .@reward as an array .

 

In that case, an array is set like

setarray .@reward[0],1;

Where [0] is the position and 1 the value and so on. 

 

It seems the array is used like this in your script : Item id, amount so try this

setarray .@reward[0],671,1;
Edited by Francisco
  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...