Jump to content
  • 0
Sign in to follow this  
dhaisuke

Help in KOTH Bug

Question

Hi Guys i need help regarding my KOTH script, after the the KOTH the winning guild can ecall inside the guild_vs1 what i want is to enable the skill when the koth is start then skill off when it end

here is my script

 

-	script	KoE	-1,{OnInit:	disablenpc "The King#KoE";	disablenpc "Exit#KoE";	bindatcmd "koe", strnpcinfo(0)+"::Oncommand", 99,99;	//bindatcmd "skillon","atcmd_pvp::OnAtcommand",60,99;	//bindatcmd "skilloff","atcmd_pvp::OnAtcommand2",60,99;	end;Oncommand:	if ( compare( .@atcmd_parameters$, "on" ) ) goto L_start;	else if ( compare( .@atcmd_parameters$, "off" ) ) goto L_end;	else {		dispbottom "type - '@koe on' to start the event";		dispbottom "type - '@koe off' to end the event";	}	end;L_start:	OnMinute35:	gvgon "guild_vs1";	announce "The King of Emperium Hill has begun!", bc_all;	.start = 1;	//OnAtcommand:	//atcommand "@skillon";	enablenpc "The King#KoE";	disablenpc "Exit#KoE";	$koegid = 0;	donpcevent "::OnRevKoE";	maprespawnguildid "guild_vs1", $koegid, 7;	monster "guild_vs1",49,49,"EMPERIUM",1288,1,"KoE::OnEmpDead";	end;		L_end:	OnMinute55:	gvgoff "guild_vs1";	announce "The King of Emperium Hill is over!", bc_all;	.start = 0;	//OnAtcommand2:	//atcommand "@skilloff";	enablenpc "Exit#KoE";	disablenpc "The King#KoE";	killmonsterall "guild_vs1";	maprespawnguildid "guild_vs1", $koegid, 6;	end;OnEmpDead:	$koegid = getcharid(2);	announce "The current King of Emperium Hill is the ["+ strcharinfo(2) +"] guild.", bc_all;	donpcevent "::OnRevKoE";	maprespawnguildid "guild_vs1", $koegid, 6;	sleep 500;	if ( .start )		monster "guild_vs1",49,49,"EMPERIUM",1288,1,"KoE::OnEmpDead";	end;}// KoE Entrancemellina,85,60,4	script	The King#KoE	58,{    mes "[The King]";	if ( !getcharid(2) ) {		mes "You must have a guild to participate in the ^FF0000King of Emperium Hill Tournament^000000.";		close;	}    switch( rand(1,4) ){        case 1:	warp "guild_vs1", 50, 88; end;        case 2:	warp "guild_vs1", 88, 50; end;        case 3:	warp "guild_vs1", 50, 11; end;        case 4:	warp "guild_vs1", 11, 50; end;	}}// KoE Exitguild_vs1,49,56,5	script	Exit#KoE	51,{	mes "[Exit]";	mes "Thank you for Joining";	mes "You Won PVP Tokens and Cash Points";	if ( getcharid(2) == $koegid )	close2;	getitem 8039,150;	set #CASHPOINTS,#CASHPOINTS + 50;	dispbottom "You got "+#CASHPOINTS+" cash points.";	warp "Save",0,0;	end;}// Flagsguild_vs1,49,38,4	script	King of Emperium Hill#1::koe_flag	722,{	if ( !$koegid ) end;	mes "[King of Emperium Hill]";	mes "The Current King of Emperium Hill is the ["+ getguildname($koegid) +"] guild.";	close;OnRevKoE:	flagemblem $koegid;	end;}guild_vs1,61,49,6	duplicate(koe_flag)	King of Emperium Hill#2	722guild_vs1,38,49,2	duplicate(koe_flag)	King of Emperium Hill#3	722guild_vs1,49,61,0	duplicate(koe_flag)	King of Emperium Hill#4	722guild_vs1	mapflag	nobranchguild_vs1	mapflag	nomemoguild_vs1	mapflag	nopenaltyguild_vs1	mapflag	noreturnguild_vs1	mapflag	nosave	SavePointguild_vs1	mapflag	noteleportguild_vs1	mapflag	gvg_nopartyguild_vs1	mapflag	nowarpguild_vs1	mapflag	nowarptoguild_vs1	mapflag	guildlockguild_vs1	mapflag	zone	GvG2

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

^ Did your post answered TS question? :)

what i want is to enable the skill when the koth is start then skill off when it end

 

 

definitely require source modification

 

in scripting the syntax is

if ( strcharinfo(3) == "guild_vs1" && gettime(3) != 21 )

 

so to do this in source code correctly is

 src/map/skill.c | 9 +++++++++ 1 file changed, 9 insertions(+)diff --git a/src/map/skill.c b/src/map/skill.cindex b0c6d7a..53b6380 100644--- a/src/map/skill.c+++ b/src/map/skill.c@@ -535,6 +535,15 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd) 				clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); 				return 1; 			}+			else if ( !strcmp( mapindex_id2name(sd->mapindex), "guild_vs1" ) ) {+				time_t clock;+				struct tm *t;+				time( &clock );+				t = localtime( &clock );+				if ( t->tm_hour != 21 ) // assuming KoE runs at 9pm to 10pm+					clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);+				return 1;+			} 			break; 		case BS_GREED: 		case WS_CARTBOOST:
.

.

seriously there is no need to do like that

I have received several reports about this prize abused

http://rathena.org/board/topic/81302-im-using-annie-koe-script-but-need-some-modifications/?p=192946

but only figured out recently due to reading skill.conf

// Emergency Recall Guild Skill setting (add as appropriate).

// Note that for the skill to be usable at all,

// you need at least one of 1/2 and 4/8

// 1: Skill is usable outside of woe.

// 2: Skill is usable during woe.

// 4: Skill is usable outside of GvG grounds

// 8: Skill is usable on GvG grounds

//16: Disable skill from "nowarpto" maps

// (it will work on GVG castles even if they are set to nowarpto, though)

emergency_call: 11

emergency recall allow to use in gvg mapflag,

and with default setting, it can also be use in nowarpto mapflag, that's the reason it can be abused

 

... or can just change 11 into 27 ... but that will disallow to use in this map totally

Share this post


Link to post
Share on other sites
  • 0

in my original koe script, I did

	mes "[Exit]";	mes "See ya.";	if ( getcharid(2) == $koegid )		getitem 501, 1; // configure prize here	close2;	warp "Save",0,0;	end;
so yeah, members can talk to this npc (claim the prize), don't press the close button

and wait for guild master recall them, and talk to this npc (claim the prize), don't press the close button

repeat

so yeah, that's how they abuse the prize

I just figured it out 2 days ago when I read bug report section about someone posting about guild aura bug

 

to fix it, simply move the condition of giving the prize into after the close2; button

	mes "[Exit]";	mes "See ya.";	close2;	if ( getcharid(2) == $koegid )		getitem 501, 1; // configure prize here	warp "Save",0,0;	end;
like this

 

 

so in your modified script, it should be

// KoE Exitguild_vs1,49,56,5	script	Exit#KoE	51,{	mes "[Exit]";	mes "Thank you for Joining";	mes "You Won PVP Tokens and Cash Points";	close2;	if ( getcharid(2) == $koegid ) {		getitem 8039,150;		set #CASHPOINTS,#CASHPOINTS + 50;		dispbottom "You got "+#CASHPOINTS+" cash points.";	}	warp "Save",0,0;	end;}
Edited by AnnieRuru

Share this post


Link to post
Share on other sites
  • 0

^ Did your post answered TS question? :)

 

what i want is to enable the skill when the koth is start then skill off when it end

Share this post


Link to post
Share on other sites

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.   Restore formatting

  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.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

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