Jump to content
  • 0

Help with Disguiser script


Question

Posted (edited)

This is a disguise script made by a friend of mine.

 

This part right here, blocks all the monster IDs that does not exist in the mob_db.txt or the ID you don't want the npc to choose:

 

while ($monster == 1003 || $monster == 1006 || $monster == 1017 || $monster == 1021 || $monster == 1027 || $monster == 1043 || $monster == 1075 || $monster == 1136 || $monster == 1137 || $monster == 1168 || $monster == 1171 || $monster == 1172 || $monster == 1173 || $monster == 1181 || $monster == 1182 || $monster == 1183 || $monster == 1184 || $monster == 1185 || $monster == 1187 || $monster == 1210 || $monster == 1217 || $monster == 1218 || $monster == 1220 || ($monster >= 1221 && $monster <= 1230) || $monster == 1232 || $monster == 1233 || ($monster >= 1235 && $monster <= 1241) || $monster == 1244 || $monster == 1245 || $monster == 1284 || ($monster >= 1324 && $monster <= 1363) || ($monster >= 1393 && $monster <= 1399) || $monster == 1407 || $monster == 1411 || $monster == 1414 || $monster == 1419 || $monster == 1421 || $monster == 1422 || $monster == 1424 || $monster == 1425 || $monster == 1426 || $monster == 1428 || $monster == 1432 || ($monster >= 1435 && $monster <= 1437) || $monster == 1440 || $monster == 1441 || $monster == 1444 || $monster == 1445 || ($monster >= 1447 && $monster <= 1454) || $monster == 1496 || $monster == 1456 || $monster == 1459 || $monster == 1460 || $monster == 1463 || ($monster >= 1465 && $monster <= 1470) || $monster == 1472 || $monster == 1475 || $monster == 1476 || $monster == 1478 || $monster == 1479 || $monster == 1496 || $monster == 1501 || $monster == 1502 || ($monster >= 1518 && $monster <= 1521) || ($monster >= 1523 && $monster <= 1530) || $monster == 1532 || $monster == 1533 || ($monster >= 1539 && $monster <= 1544) || ($monster >= 1548 && $monster <= 1557) || $monster == 1559 || $monster == 1561 || $monster == 1563 || $monster == 1565 || ($monster >= 1567 && $monster <= 1571) || ($monster >= 1573 && $monster <= 1577) || ($monster >= 1579 && $monster <= 1581) || $monster == 1585 || ($monster >= 1588 && $monster <= 1612) || $monster == 1626 || ($monster >= 1664 && $monster <= 1667) || $monster == 1674 || $monster == 1683 || ($monster >= 1689 && $monster <= 1691) || ($monster >= 1722 && $monster <= 1733) || ($monster >= 1739 && $monster <= 1750) || ($monster >= 1756 && $monster <= 1767) || ($monster >= 1786 && $monster <= 1795) || ($monster >= 1798 && $monster <= 1828) || ($monster >= 1840 && $monster <= 1863) || $monster == 1872 || $monster == 1873 || ($monster >= 1875 && $monster <= 1879) || ($monster >= 1887 && $monster <= 1893) || ($monster >= 1895 && $monster <= 1898) || ($monster >= 1895 && $monster <= 1916) || ($monster >= 1926 && $monster <= 1955) || ($monster >= 1958 && $monster <= 1973) || ($monster >= 1980 && $monster <= 1985) || $monster == 1996 || ($monster >= 2000 && $monster <= 2012) || ($monster >= 2025 && $monster <= 2067) || ($monster >= 2075 && $monster <= 2082) || ($monster >= 2093 && $monster <= 2130) || $monster == 2135 || ($monster >= 2138 && $monster <= 2150) || ($monster >= 2157 && $monster <= 2190) || $monster == 2193 || $monster == 2195 || $monster == 2196 || $monster == 2200 || $monster == 2205 || $monster == 2206 || $monster == 2207 || ($monster >= 2209 && $monster <= 2220) || ($monster >= 2242 && $monster <= 2308) || $monster == 2318 || ($monster >= 2321 && $monster <= 2329) || ($monster >= 2330 && $monster <= 2362) || ($monster >= 2372 && $monster <= 2474) );

 

I was wondering if someone could help me to write this part in  a simpler way? So  it is more organized and I could keep the unwanted IDs organized.

Because currently I think I am missing some of the IDs and the script has some mini glitches due to that.

 

Thank you for any help.

 
Edited by Phenex

2 answers to this question

Recommended Posts

Posted (edited)

Thanks, but I would like to use my script.

But may be I can learn a few things from your script....until someone helps with my question.

 

 

Edit: Nevermind, figured it.

Edited by Phenex
Posted

This is a disguise script made by a friend of mine.

 

This part right here, blocks all the monster IDs that does not exist in the mob_db.txt or the ID you don't want the npc to choose:

 

while ($monster == 1003 || $monster == 1006 || $monster == 1017 || $monster == 1021 || $monster == 1027 || $monster == 1043 || $monster == 1075 || $monster == 1136 || $monster == 1137 || $monster == 1168 || $monster == 1171 || $monster == 1172 || $monster == 1173 || $monster == 1181 || $monster == 1182 || $monster == 1183 || $monster == 1184 || $monster == 1185 || $monster == 1187 || $monster == 1210 || $monster == 1217 || $monster == 1218 || $monster == 1220 || ($monster >= 1221 && $monster <= 1230) || $monster == 1232 || $monster == 1233 || ($monster >= 1235 && $monster <= 1241) || $monster == 1244 || $monster == 1245 || $monster == 1284 || ($monster >= 1324 && $monster <= 1363) || ($monster >= 1393 && $monster <= 1399) || $monster == 1407 || $monster == 1411 || $monster == 1414 || $monster == 1419 || $monster == 1421 || $monster == 1422 || $monster == 1424 || $monster == 1425 || $monster == 1426 || $monster == 1428 || $monster == 1432 || ($monster >= 1435 && $monster <= 1437) || $monster == 1440 || $monster == 1441 || $monster == 1444 || $monster == 1445 || ($monster >= 1447 && $monster <= 1454) || $monster == 1496 || $monster == 1456 || $monster == 1459 || $monster == 1460 || $monster == 1463 || ($monster >= 1465 && $monster <= 1470) || $monster == 1472 || $monster == 1475 || $monster == 1476 || $monster == 1478 || $monster == 1479 || $monster == 1496 || $monster == 1501 || $monster == 1502 || ($monster >= 1518 && $monster <= 1521) || ($monster >= 1523 && $monster <= 1530) || $monster == 1532 || $monster == 1533 || ($monster >= 1539 && $monster <= 1544) || ($monster >= 1548 && $monster <= 1557) || $monster == 1559 || $monster == 1561 || $monster == 1563 || $monster == 1565 || ($monster >= 1567 && $monster <= 1571) || ($monster >= 1573 && $monster <= 1577) || ($monster >= 1579 && $monster <= 1581) || $monster == 1585 || ($monster >= 1588 && $monster <= 1612) || $monster == 1626 || ($monster >= 1664 && $monster <= 1667) || $monster == 1674 || $monster == 1683 || ($monster >= 1689 && $monster <= 1691) || ($monster >= 1722 && $monster <= 1733) || ($monster >= 1739 && $monster <= 1750) || ($monster >= 1756 && $monster <= 1767) || ($monster >= 1786 && $monster <= 1795) || ($monster >= 1798 && $monster <= 1828) || ($monster >= 1840 && $monster <= 1863) || $monster == 1872 || $monster == 1873 || ($monster >= 1875 && $monster <= 1879) || ($monster >= 1887 && $monster <= 1893) || ($monster >= 1895 && $monster <= 1898) || ($monster >= 1895 && $monster <= 1916) || ($monster >= 1926 && $monster <= 1955) || ($monster >= 1958 && $monster <= 1973) || ($monster >= 1980 && $monster <= 1985) || $monster == 1996 || ($monster >= 2000 && $monster <= 2012) || ($monster >= 2025 && $monster <= 2067) || ($monster >= 2075 && $monster <= 2082) || ($monster >= 2093 && $monster <= 2130) || $monster == 2135 || ($monster >= 2138 && $monster <= 2150) || ($monster >= 2157 && $monster <= 2190) || $monster == 2193 || $monster == 2195 || $monster == 2196 || $monster == 2200 || $monster == 2205 || $monster == 2206 || $monster == 2207 || ($monster >= 2209 && $monster <= 2220) || ($monster >= 2242 && $monster <= 2308) || $monster == 2318 || ($monster >= 2321 && $monster <= 2329) || ($monster >= 2330 && $monster <= 2362) || ($monster >= 2372 && $monster <= 2474) );

 

I was wondering if someone could help me to write this part in  a simpler way? So  it is more organized and I could keep the unwanted IDs organized.

Because currently I think I am missing some of the IDs and the script has some mini glitches due to that.

 

Thank you for any help.

 

 

Just use script below.

/*
To change times, edit the OnClock labels below.
*/

prontera,100,100,4	script	Disguise Event	795,{
	set .@GMLevel,99;	// GM level required to access NPC.
	set .@n$,"[^0000FFDisguise NPC^000000]";

	if (getgmlevel()>=.@GMLevel) {
		mes .@n$;
		mes "Select an option.";
		next;
		switch(select("Turn ON/OFF Event:Event Settings")) {
		case 1:
			mes .@n$;
			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.",bc_map | bc_blue;
				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.",bc_all | bc_blue;
			announce "The Event is being held in Viber Town.",bc_all | bc_blue;
			close;
		case 2:
			mes .@n$;
			mes "Pick a setting to modify.";
			next;
			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
			case 1:
				setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
				mes .@n$;
				mes "Choose a disguise rule.";
				next;
				set .Rule, select(implode(.@r$,":"));
				mes .@n$;
				mes "The Disguise Rule has been set:";
				mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
				close;
			case 2:
				mes .@n$;
				mes "Input the number of rounds you want the event to last.";
				mes "Current number: [^0000FF"+.Rounds+"^000000]";
				next;
				input .@Rounds;
				set .Rounds,.@Rounds;
				mes .@n$;
				mes "The number of rounds has been changed to "+.Rounds+".";
				close;
			case 3:
				mes .@n$;
				mes "Input the Item ID of the prize given each round.";
				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
				next;
				input .@Prize;
				mes .@n$;
				if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
					mes "That item does not exist. Please try again.";
					close;
				}
				set .Prize,.@Prize;
				mes "Input the amount to be given.";
				next;
				input .@amount;
				mes .@n$;
				if (.@amount<=0 || .@amount>=10000) {
					mes "That amount is invalid. Using default ammount of 1.";
					set .@amount,1;
					next;
					mes .@n$;
				}
				set .PrizeAmt,.@amount;
				mes "The Prize has been changed successfully.";
				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
				close;
			}
		}
	}
	if (.EventON) end;
	mes .@n$;
	mes "Welcome.";
	mes "How may I be of assistance?";
	if(select("Information:Nothing, just passing through.")==2) close;
	next;
	mes .@n$;
	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,501;
	set .PrizeAmt,10;
	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:
	set .ResetCounter,.ResetCounter+1;
	set .EventON,1;
	set .Timer,1;
	set .Wait,1;
	announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
	announce "The Event is being held in Viber Town.",bc_all | bc_blue;
	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 EF_DETECT2;
	set $MonsterName$,"";
	deletepset 1;
	stopnpctimer;
	setnpctimer 0;
	initnpctimer;
	end;
OnTimer60000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue;
	announce "The Event is being held in Prontera.",bc_all | bc_blue;
	end;
OnTimer120000:
	if (.Timer!=1) end;
	announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue;
	announce "The Event is being held in Prontera.",bc_all | bc_blue;
	end;
OnTimer180000:
	if (.Timer!=1) end;
	announce "The Disguise Event has begun!",bc_all | bc_blue;
	announce "The Event is being held in Prontera.",bc_all | bc_blue;
	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$+"",bc_map | bc_blue;
	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;
}

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