Jump to content
  • 0

RFYL - Stopping Event


BlackSnow

Question


  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  32
  • Reputation:   0
  • Joined:  02/19/16
  • Last Seen:  

When trying to stop the event in the middle of announcements zombie minion will disappear but the announcements kept on going. After he reappears the event will start again from the from the announcements. Is there a way to completely stop it? 

 

 

I kind of like this script but I just need someone to help me with my problem if it is even possible.


//===== rAthena Script =======================================
//= Run for Your Life
//===== By: ==================================================
//= Mysterious
//===== Current Version: =====================================
//= 2.8
//===== Compatible With: =====================================
//= rAthena SVN 
//===== Description: =========================================
//= A Run for your Life event (Based for Novices)
//===== TODO: ================================================
// - Change more coding
//===== Additional Comments: =================================
//= v1.0 - First release [Mysterious]
//= v2.0 - Overhaul of Entire Script [Mysterious]
//= v2.1 - Fixed Sentence structures [Mysterious]
//= v2.2 - Fixed a Typo and made it obvious what players had to change [Mysterious]
//= v2.3 - Removed unnecessary 'next;' thanks to soUPas [Mysterious]
//= v2.4 - Fixed an issue where the prize giver was showing up when not supposed to [Mysterious]
//= v2.5 - Added Friendly Messages [Mysterious]
//= v2.6 - Removed duplicated OnInIt labels [Mysterious]
//= v2.7 - Cleaning and organizing [Mysterious]
//= v2.8 - Optimized a little better [Mysterious]
//============================================================ 

-	script	RFYL#disable	-1,{

OnInit:
	disablenpc "Zombie Master";
	disablenpc "Present#RFYL";
}

prontera,150,183,4	script	Zombie Minion	1015,{

if (getgmlevel() >= 20) goto LMS_Admin;
	mes "[Minion]";
	if (!.Status){
		mes "My master seems to be slacking..";
	}else {
		mes "My master is currently busy! He has an invasion scheduled!";
	}
	close;

LMS_Admin:
	if (!.Status){
		mes "[Minion]";
		mes "My master has no invasion planned at the moment. Do you wish to schedule an invasion?";
		menu "- Start Event",M_RFYL,"- Spectate",M_warp,"- End Event",M_EndEvent,"- No Thanks",M_Leave;
	}else {
		mes "[Minion]";
                mes "What is my masters wish?";
                menu "- Spectate",M_warp,"- End Event",M_EndEvent;
	}
	close;

	M_RFYL:
		next;
		mes "[Minion]";
		mes "Hold on while I call my master.";
		close2;
		goto StartEvent;

	M_warp:
		next;
		mes "[Minion]";
		mes "Very well, I will warp you to the map!";
		warp "quiz_01",42,369;
		close;

	M_Leave:
		next;
		mes "[Minion]";
		mes "Ok " + strcharinfo(0) +"! Please come back after.";
		close;
		
	M_EndEvent:
		mes "[Minion]";
		mes "Ok master, I will stop the event for you right away!";
		next;
		set .Status,0;
		disablenpc "Zombie Master";
		disablenpc "Present#RFYL";
		killmonsterall "quiz_01";
		areawarp "quiz_01",10,10,450,450,"prontera",156,191;
		stopnpctimer;
		disablenpc "Zombie Minion";
		warp "prontera",156,191;
		sleep 60000;
		enablenpc "Zombie Minion";


// =========================
StartEvent: //Announcement to notify all players
// =========================
	set .Status,1;
	enablenpc "Zombie Master";
	announce "Zombie Vs. Novice event Will begin in 3 minutes. Head East/North",0;
	killmonsterall "quiz_01";
	sleep 10000;
	announce "Zombie Vs. Novice event will begin in 2 minutes! Head East/North",0;
	sleep 10000;
	announce "Zombie Master: It is almost time!",0;
	sleep 10000;
	announce "Zombie Vs. Novice event will begin in 1 minute!",0;
	sleep 10000;
	mapannounce "quiz_01","In 30 seconds the zombies will spawn!",0;
	sleep 10000;
	announce "Zombie Vs. Novice event will begin in ~5~",0;
	sleep 1000;
	announce "Zombie Vs. Novice event will begin in ~4~",0;
	sleep 1000;
	announce "Zombie Vs. Novice event will begin in ~3~",0;
	sleep 1000;
	announce "Zombie Vs. Novice event will begin in ~2~",0;
	sleep 1000;
	announce "Zombie Vs. Novice event will begin in ~1~",0;
	sleep 1000;
	announce "Zombie Vs. Novice event has now begun!",0,0x00FF00;
	disablenpc "Zombie Master";


// =========================
// Round 1
// =========================
	mapannounce "quiz_01","Round 1! Final Round!",0;
	sleep 10000;
	monster "quiz_01",42,369,"Zombie",1015,1;
	sleep 10000;
	monster "quiz_01",42,369,"Zombie",1015,1;
	initnpctimer;
	end;
// =========================
// End of Rounds
// =========================

OnTimer0500:
	if ( getmapusers("quiz_01") == 0 ) {
		killmonsterall "quiz_01";
		announce "RFYL Event: Event has ended. No one has joined.",0;
		stopnpctimer;
		end;
	} else if ( getmapusers("quiz_01") > 1 ) {
		mapannounce "quiz_01",getmapusers("quiz_01") +" has survived the event.",0,0x00FF00;;
		initnpctimer;
		end;
	}
	initnpctimer;
	end;

// =========================
// When players die
// =========================	
OnPCDieEvent:
	getmapxy .@mapnvz$,.@xnvz,.@ynvz,0;
	if ( .@mapnvz$ == "quiz_01") {
		sleep2 100;
		warp "prontera",156,191;
		atcommand "@alive "+ strcharinfo(0);
		dispbottom "Sorry, but you were killed.";
	}
	sleep2 500;
	if (.@mapnvz$ == "quiz_01" && getmapusers("quiz_01") == 1 ) {
		killmonsterall "quiz_01";
		mapannounce "quiz_01","You have won, approach the Present NPC please.",0;
		enablenpc "Present#RFYL";
		stopnpctimer;
		end;
	}
	end;
}

quiz_01,42,378,3	script	Present#RFYL	72,{

	mes "[Present For You]";
	mes "Please tell me your name:";
	next;
	input .@name$;
	if(.@name$ != strcharinfo(0)) {
		mes "[Present For You]";
		mes "Are you sure that is your name?";
		close;
	}
	mes "[Present For You]";
	mes "Congrats. You've won.";
	close2;
	announce "Present For You: We have a winner! "+.@name$+" has won the Novice vs Zombie event!",0;
	getitem 674, 3; // Change This item id to what ever you want
	warp "prontera",156,191;
	disablenpc "Present#RFYL";
	set .Status,0;
	end;
}

prontera,155,183,4	script	Zombie Master	1298,{
	if (BaseLevel > 1) goto L_ClassLevel; //Change '1' to your desired level
	if (class == 0) goto L_Event; //Checks if the player is a Novice, if so, proceeds into the event.
	if (class > 0) goto L_ClassLevel; //Checks if the Player is NOT a Novice. If they aren't, they are not allowed to participate.

 L_Event:
	mes "[ ^0000FFZombie Master^000000 ]";
	mes "You wish to participate the Zombie Vs. Novice event?";
	next;
	switch(select("- Yes","- No")) {
	case 1:
    sc_end SC_ALL;
    percentheal 100,100;
    warp "quiz_01",42,369;
    end;
    break;
	case 2:
    next;
    mes "[ ^0000FFZombie Master^000000 ]";
    mes "Come back when your ready.";
    close;
    break;

 L_ClassLevel:
	mes "[ ^0000FFZombie Master^000000 ]";
	mes "Sorry, but it seems you are not a Novice and Level 1.";
	close;
	}
}
// =========================
// Mapflags
// =========================
quiz_01	mapflag	nowarpto
quiz_01	mapflag	nowarp
quiz_01	mapflag	noteleport
quiz_01	mapflag	nomemo
quiz_01	mapflag	nosave	SavePoint
quiz_01	mapflag	nobranch
quiz_01	mapflag	noicewall
quiz_01	mapflag	nopenalty
quiz_01	mapflag	nobranch
quiz_01	mapflag	noexp
quiz_01	mapflag	noreturn
quiz_01	mapflag	pvp_noparty
quiz_01	mapflag	restricted	1
Edited by BlackSnow
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10015
  • Reputation:   2348
  • Joined:  10/28/11
  • Last Seen:  

if you're using sleep, and you try to terminate the script halfway the current script that using sleep is running, you have to provide another "variable" that used to store the progress of current event.

and keep check for the status/value of the event to terminate.

 

You could find a few examples from AnnieRuru's script in case you want.

 

anyway, using initnpctimer and stopnpctimer is way better in certain cases, example like the current case.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  51
  • Topics Per Day:  0.01
  • Content Count:  452
  • Reputation:   33
  • Joined:  12/18/14
  • Last Seen:  

	M_EndEvent:
		mes "[Minion]";
		mes "Ok master, I will stop the event for you right away!";
		next;
		set .Status,0;
		disablenpc "Zombie Master";
		disablenpc "Present#RFYL";
		killmonsterall "quiz_01";
		areawarp "quiz_01",10,10,450,450,"prontera",156,191;
		stopnpctimer;
		disablenpc "Zombie Minion";
		warp "prontera",156,191;
		sleep 60000;
		enablenpc "Zombie Minion";

The problem with that is it follows through to this part of the script because it lacks end;

// =========================
StartEvent: //Announcement to notify all players
// =========================

Try adding end; after enablenpc "Zombie Minion";

Edited by PandaLovesHamster
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  32
  • Reputation:   0
  • Joined:  02/19/16
  • Last Seen:  

I tested that already and it works fine. The problem is that I want to stop it mid-way while the event is still being announced.

LMS_Admin:
	if (!.Status){
		mes "[Minion]";
		mes "My master has no invasion planned at the moment. Do you wish to schedule an invasion?";
		menu "- Start Event",M_RFYL,"- Spectate",M_warp,"- End Event",M_EndEvent;
	}else {
		mes "[Minion]";
		mes "My master has no invasion planned at the moment. Do you wish to schedule an invasion?";
		menu "- Spectate",M_warp,"- End Event",M_EndEvent;
	}
	close;

	
	M_RFYL:
		mes "[Minion]";
		mes "Hold on while I call my master.";
		close2;
		goto StartEvent;

	M_warp:
		mes "[Minion]";
		mes "Very well, I will warp you to the map!";
		warp "quiz_01",42,369;
		close;

	M_EndEvent:
		mes "[Minion]";
		mes "Ok master, I will stop the event for you right away!";
		next;
		set .Status,0;
		disablenpc "Zombie Master";
		disablenpc "Shihiro";
		killmonsterall "quiz_01";
		areawarp "quiz_01",10,10,450,450,"prontera",156,191;
		stopnpctimer;
		announce "END TESTING",0;
		end;
		
// =========================
StartEvent: //Announcement to notify all players
// =========================
	set .Status,1;
	disablenpc "Shihiro";
	killmonsterall "quiz_01";
	enablenpc "Zombie Master";
	announce "Test1!",0;
	sleep 5000;
	announce "Test2!",0;
	sleep 5000;
	announce "Test3!",0;
	sleep 5000;
	announce "Test4!",0;
	sleep 1000;
	announce "Zombie Vs. Novice event has now begun!",0;
	disablenpc "Zombie Master";

http://oi68.tinypic.com/20hws1s.jpg

 

 

OnTimer0500: // 5 seconds?

Edited by BlackSnow
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  51
  • Topics Per Day:  0.01
  • Content Count:  452
  • Reputation:   33
  • Joined:  12/18/14
  • Last Seen:  

	M_EndEvent:
		mes "[Minion]";
		mes "Ok master, I will stop the event for you right away!";
		close2;
		awake "Zombie Minion";
		set .Status,0;
		disablenpc "Zombie Master";
		disablenpc "Shihiro";
		killmonsterall "quiz_01";
		areawarp "quiz_01",10,10,450,450,"prontera",156,191;
		stopnpctimer;
		announce "END TESTING",0;
		end;

https://rathena.org/wiki/Awake

Edited by PandaLovesHamster
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  32
  • Reputation:   0
  • Joined:  02/19/16
  • Last Seen:  

Tried that still didn't work.

 

http://oi63.tinypic.com/13ynptj.jpg

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  51
  • Topics Per Day:  0.01
  • Content Count:  452
  • Reputation:   33
  • Joined:  12/18/14
  • Last Seen:  

I'd suggest using initnpctimer then. Easier to control than sleeps.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  32
  • Reputation:   0
  • Joined:  02/19/16
  • Last Seen:  

Thanks Emistry! :)

Link to comment
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.   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.

×
×
  • Create New...