Jump to content
  • 0
Quesooo

Hide the npc if not open

Question

good day masters i want to know if this possible if the event is not starting the npo is on hide

 

when the event is starting the npc now will show

 

this is the script please help me thank you

 

prontera,156,180,3	script	Disguise Event	795,{

	// Currently set to run every two hours.
	// To change times, edit the OnClock labels below.

	set [email protected],99;	// GM level required to access NPC.
	set [email protected]$,"[^0000FFDisguise NPC^000000]";

	if (getgmlevel()>[email protected]) {
		mes [email protected]$;
		mes "Select an option.";
		next;
		switch(select("Turn ON/OFF Event:Event Settings")) {
		case 1:
			mes [email protected]$;
			if (.EventON) {
				mes "The Event is currently: [^0000FFON^000000]";
				mes "Would you like to turn it OFF?";
			} else {
				mes "The Event is currently: [^FF0000OFF^000000]";
				mes "Would you like to turn it ON?";
			}
			if(select("Yes:No")==2) close;
			if (.EventON) {
				set .EventON,0; set .Timer,0;
				setnpctimer 0; stopnpctimer;
				announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",0,0x00CCFF;
				deletepset 1;
				setnpcdisplay "Disguise Event",795;
				close;
			}
			set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
			set .ResetCounter,.ResetCounter+1;
			announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
			announce "The Event is being held at the Middle Of prontera ",0,0x00CCFF;
			close;
		case 2:
			mes [email protected]$;
			mes "Pick a setting to modify.";
			next;
			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
			case 1:
				setarray [email protected]$[0],"Disguise as all monsters.","Disguise as MVPs only.";
				mes [email protected]$;
				mes "Choose a disguise rule.";
				next;
				set .Rule, select(implode([email protected]$,":"));
				mes [email protected]$;
				mes "The Disguise Rule has been set:";
				mes "  > ^0055FF"[email protected]$[.Rule-1]+"^000000";
				close;
			case 2:
				mes [email protected]$;
				mes "Input the number of rounds you want the event to last.";
				mes "Current number: [^0000FF"+.Rounds+"^000000]";
				next;
				input [email protected];
				set .Rounds,[email protected];
				mes [email protected]$;
				mes "The number of rounds has been changed to "+.Rounds+".";
				close;
			case 3:
				mes [email protected]$;
				mes "Input the Item ID of the prize given each round.";
				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
				next;
				input [email protected];
				mes [email protected]$;
				if (getitemname([email protected])=="" || getitemname([email protected])=="null") {
					mes "That item does not exist. Please try again.";
					close;
				}
				set .Prize,[email protected];
				mes "Input the amount to be given.";
				next;
				input [email protected];
				mes [email protected]$;
				if ([email protected]<=0 || [email protected]>=10000) {
					mes "That amount is invalid. Using default ammount of 1.";
					set [email protected],1;
					next;
					mes [email protected]$;
				}
				set .PrizeAmt,[email protected];
				mes "The Prize has been changed successfully.";
				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
				close;
			}
		}
	}
	if (.EventON) end;
	mes [email protected]$;
	mes "Welcome.";
	mes "How may I be of assistance?";
	if(select("Information:Nothing, just passing through.")==2) close;
	next;
	mes [email protected]$;
	mes "This event is quite simple.";
	mes "At the start of the event, I will";
	mes "disguise myself as a random";
	mes "monster. You have to shout";
	mes "that monter's name out loud.";
	next;
	mes "If you are correct, you will receive";
	mes "a prize. If not, keep trying!";
	mes "That's all that there is to this event.";
	close;

OnInit:
	set .EventON,0;
	set .Wait,0;
	set .Winner,0;
	set .ResetCounter,0;
	set .Rounds,10;
	set .Prize,675;
	set .PrizeAmt,1;
	set .Rule,1;
	setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
				   2156,2165;
	set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + 
	    "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + 
	    "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + 
	    "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + 
	    "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + 
	    "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + 
	    "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + 
	    "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + 
	    "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + 
	    "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
	end;
OnClock0000:
OnClock0400:
OnClock0800:
OnClock1200:
OnClock1600:
OnClock2000:
	set .ResetCounter,.ResetCounter+1;
	set .EventON,1;
	set .Timer,1;
	set .Wait,1;
	announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle.",0,0x00CCFF;
	setnpctimer 0;
	initnpctimer;
	end;
OnTimer10000:
	if (.Timer || .Change) end;
	set .Wait,0;
	goto iDisguise;
	end;
OnTimer30000:
	if (.Timer) end;
	set .Change,0;
	setnpcdisplay "Disguise Event",795;
	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
	specialeffect 725;
	set $MonsterName$,"";
	deletepset 1;
	stopnpctimer;
	setnpctimer 0;
	initnpctimer;
	end;
OnTimer60000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin in 2 minutes.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	end;
OnTimer120000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin 1 minute.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	end;
OnTimer180000:
	if (.Timer!=1) end;
	announce "The Disguise Event has begun!",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	set .Timer,0; stopnpctimer;
	setnpctimer 0; initnpctimer;
iDisguise:
	if (.Rule==1) {
		set .Winner,0;
		set .Monster,1000+rand(1,995);
		if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
		if (.Monster==.LastMonster) goto iDisguise;
		set .LastMonster,.Monster;
		set $MonsterName$,getmonsterinfo(.Monster,0);
	}
	if (.Rule==2) {
		set .Winner,0;
		set .Monster,rand(49);
		set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
	}
	deletepset 1;
	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
	activatepset 1;
	if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
	if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
	set .Change,1;
	setnpctimer 0;
	end;
iCorrect:
	if (.Winner) {
		dispbottom "Someone has already won this round.";
		end;
	}
	set .Winner,1;
	set .RoundCount,.RoundCount+1;
	deletepset 1;
	activatepset 1;
	getitem .Prize,.PrizeAmt;
	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",0,0x00CCFF;
	if (.RoundCount>=.Rounds) {
		setnpcdisplay "Disguise Event",795;
		set .RoundCount,0; set .Change,0; set .EventON,0;
		setnpctimer 0; stopnpctimer;
		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
		end;
	}
	setnpcdisplay "Disguise Event",795;
	set .Change,0;
	setnpctimer 0;
	end;
}

 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Try

prontera,156,180,3	script	Disguise Event	795,{

	// Currently set to run every two hours.
	// To change times, edit the OnClock labels below.

	set [email protected],99;	// GM level required to access NPC.
	set [email protected]$,"[^0000FFDisguise NPC^000000]";

	if (getgmlevel()>[email protected]) {
		mes [email protected]$;
		mes "Select an option.";
		next;
		switch(select("Turn ON/OFF Event:Event Settings")) {
		case 1:
			mes [email protected]$;
			if (.EventON) {
				mes "The Event is currently: [^0000FFON^000000]";
				mes "Would you like to turn it OFF?";
			} else {
				mes "The Event is currently: [^FF0000OFF^000000]";
				mes "Would you like to turn it ON?";
			}
			if(select("Yes:No")==2) close;
			if (.EventON) {
				set .EventON,0; set .Timer,0;
				setnpctimer 0; stopnpctimer;
				announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",0,0x00CCFF;
				deletepset 1;
				setnpcdisplay "Disguise Event",795;
				close;
			}
			set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
			set .ResetCounter,.ResetCounter+1;
			announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
			announce "The Event is being held at the Middle Of prontera ",0,0x00CCFF;
			close;
		case 2:
			mes [email protected]$;
			mes "Pick a setting to modify.";
			next;
			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
			case 1:
				setarray [email protected]$[0],"Disguise as all monsters.","Disguise as MVPs only.";
				mes [email protected]$;
				mes "Choose a disguise rule.";
				next;
				set .Rule, select(implode([email protected]$,":"));
				mes [email protected]$;
				mes "The Disguise Rule has been set:";
				mes "  > ^0055FF"[email protected]$[.Rule-1]+"^000000";
				close;
			case 2:
				mes [email protected]$;
				mes "Input the number of rounds you want the event to last.";
				mes "Current number: [^0000FF"+.Rounds+"^000000]";
				next;
				input [email protected];
				set .Rounds,[email protected];
				mes [email protected]$;
				mes "The number of rounds has been changed to "+.Rounds+".";
				close;
			case 3:
				mes [email protected]$;
				mes "Input the Item ID of the prize given each round.";
				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
				next;
				input [email protected];
				mes [email protected]$;
				if (getitemname([email protected])=="" || getitemname([email protected])=="null") {
					mes "That item does not exist. Please try again.";
					close;
				}
				set .Prize,[email protected];
				mes "Input the amount to be given.";
				next;
				input [email protected];
				mes [email protected]$;
				if ([email protected]<=0 || [email protected]>=10000) {
					mes "That amount is invalid. Using default ammount of 1.";
					set [email protected],1;
					next;
					mes [email protected]$;
				}
				set .PrizeAmt,[email protected];
				mes "The Prize has been changed successfully.";
				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
				close;
			}
		}
	}
	if (.EventON) end;
	mes [email protected]$;
	mes "Welcome.";
	mes "How may I be of assistance?";
	if(select("Information:Nothing, just passing through.")==2) close;
	next;
	mes [email protected]$;
	mes "This event is quite simple.";
	mes "At the start of the event, I will";
	mes "disguise myself as a random";
	mes "monster. You have to shout";
	mes "that monter's name out loud.";
	next;
	mes "If you are correct, you will receive";
	mes "a prize. If not, keep trying!";
	mes "That's all that there is to this event.";
	close;

OnInit:
	set .EventON,0;
	set .Wait,0;
	set .Winner,0;
	set .ResetCounter,0;
	set .Rounds,10;
	set .Prize,675;
	set .PrizeAmt,1;
	set .Rule,1;
	setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
				   2156,2165;
	set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + 
	    "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + 
	    "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + 
	    "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + 
	    "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + 
	    "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + 
	    "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + 
	    "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + 
	    "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + 
	    "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
	disablenpc "Disguise Event";
	end;
OnClock0000:
OnClock0400:
OnClock0800:
OnClock1200:
OnClock1600:
OnClock2000:
	enablenpc "Disguise Event";
	set .ResetCounter,.ResetCounter+1;
	set .EventON,1;
	set .Timer,1;
	set .Wait,1;
	announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle.",0,0x00CCFF;
	setnpctimer 0;
	initnpctimer;
	end;
OnTimer10000:
	if (.Timer || .Change) end;
	set .Wait,0;
	goto iDisguise;
	end;
OnTimer30000:
	if (.Timer) end;
	set .Change,0;
	setnpcdisplay "Disguise Event",795;
	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
	specialeffect 725;
	set $MonsterName$,"";
	deletepset 1;
	stopnpctimer;
	setnpctimer 0;
	initnpctimer;
	end;
OnTimer60000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin in 2 minutes.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	end;
OnTimer120000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin 1 minute.",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	end;
OnTimer180000:
	if (.Timer!=1) end;
	announce "The Disguise Event has begun!",0,0x00CCFF;
	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
	set .Timer,0; stopnpctimer;
	setnpctimer 0; initnpctimer;
iDisguise:
	if (.Rule==1) {
		set .Winner,0;
		set .Monster,1000+rand(1,995);
		if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
		if (.Monster==.LastMonster) goto iDisguise;
		set .LastMonster,.Monster;
		set $MonsterName$,getmonsterinfo(.Monster,0);
	}
	if (.Rule==2) {
		set .Winner,0;
		set .Monster,rand(49);
		set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
	}
	deletepset 1;
	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
	activatepset 1;
	if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
	if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
	set .Change,1;
	setnpctimer 0;
	end;
iCorrect:
	if (.Winner) {
		dispbottom "Someone has already won this round.";
		end;
	}
	set .Winner,1;
	set .RoundCount,.RoundCount+1;
	deletepset 1;
	activatepset 1;
	getitem .Prize,.PrizeAmt;
	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",0,0x00CCFF;
	if (.RoundCount>=.Rounds) {
		setnpcdisplay "Disguise Event",795;
		set .RoundCount,0; set .Change,0; set .EventON,0;
		setnpctimer 0; stopnpctimer;
		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
		sleep 2000;
		disablenpc "Disguise Event";
		end;
	}
	setnpcdisplay "Disguise Event",795;
	set .Change,0;
	setnpctimer 0;
	end;
}

 

The problem though, GM's won't be able to access the configuration since the npc will only be enabled during it was started.

  • Upvote 1
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...

Important Information

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