Jump to content
  • 0

Disguise Event - Certain Mobs


Nokia

Question


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  150
  • Reputation:   5
  • Joined:  12/28/11
  • Last Seen:  

Hello, im using this disguise event:




/*//----------------------------------------------------------------//
//----------------Scripted by Spera---------------------------------//
//------------------FinalStrikeRO-----------------------------------//
//--------------------Disguise Event NPC v2-------------------------//
/-------------------------------------------------------------------//*/


yuno_pre,33,95,2 script Disguise CP 968,{

if (getgmlevel()<50)
{
mes "^3399FF[Disguise CP]^000000";
mes "Sorry, you are not a GM!";
close;
}

mes "^3399FF[Disguise CP]^000000";
mes "Hello GameMaster!";
mes "What do you want to do?";
switch(select("Start Event:Stop Event:Set number of rounds[^E50000"+$guessrounds+"^000000]:Set prize^E50000 ["+getitemname($guessprize)+"]^000000 ^E50000 ["+ $guessprizecount + "]^000000:Nothing"))
{
case 1:
{
next;
mes "^3399FF[Disguise CP]^000000";
mes "Please confirm by typing START.";
input .@confirm$;		  
if (.@confirm$ == "START")
{
donpcevent "guessAnnouncer::OnGMStart";
close;
}
mes "Confirmation failed";
close;
break;
}
case 2:
{
next;
mes "^3399FF[Disguise CP]^000000";
mes "Please confirm by typing STOP.";
input .@confirm$;		  
if (.@confirm$ == "STOP")
{
donpcevent "guessAnnouncer::OnGMStop";
close;
}
mes "Confirmation failed";
close;
break;

}

case 3:
{
next; mes "^3399FF[Disguise CP]^000000";
mes "Please type in the new number.";
input $guessrounds;
if ($guessrounds > 30) set $guessrounds, 30;
else if ($guessrounds < 1) set $guessrounds, 1;
close;
}

case 4:
{
next; mes "^3399FF[Disguise CP]^000000";
mes "Please type in the new prize id.";
input .@guessprizeid;
if (getitemname(.@guessprizeid) == "null" || getitemname(.@guessprizeid) == "") {next; mes "^3399FF[Disguise CP]^000000"; mes "Error"; mes "This item does not exist in the database..."; close;}
set $guessprize, .@guessprizeid;
next; mes "^3399FF[Disguise CP]^000000";
mes "Please type in the amount.";
input .@guessprizeamount;
if (!.@guessprizeamount) set .@guessprizeamount,1 ;
set $guessprizecount,.@guessprizeamount;
next; mes "^3399FF[Disguise CP]^000000";
mes "Prize has been set to ^E50000 "+ getitemname($guessprize)+ "^000000 and the amount to ^E50000 " +$guessprizecount+"^000000";
close;
}


case 5:
{
next; mes "^3399FF[Disguise CP]^000000";
mes "Good bye";
close;
}

}


}








poring_c01,102,99,4 script Disguise NPC 794,{

if (!$guessbegin)
{
mes "^3399FF[Disguise NPC]^000000";
mes "The event is going to start soon!";
close;
}
end;

OnStart:
set $guessbegin, 1;
set .DisguiseWon, 0;
if (!$DisguiseRound)
{
npctalk "Alright. Let's get it over with ~.~ ";
sleep 4000;
npctalk "But first I will explain to you how to play the game.";
sleep 6000;
npctalk "I am going to disguise into a random monster.";
sleep 5000;
npctalk "You have to guess the monster's name and shout it out.";
sleep 5000;
npctalk "Don't bother about the use of capital and small initial letters.";
sleep 8000;
npctalk "Now get ready.";
sleep 5000;
}
else if ($DisguiseRound < $guessrounds-1)
{
npctalk "Get ready for the next round.";
setnpctimer 0;
sleep 8000;
}
else
{
npctalk "Last round now!";
sleep 2000;
npctalk "Get ready.";
sleep 6000;
}

do
{
set .@guessrepeat, 0;
set $monster, 1000 + rand(1,950);
for (set .@k, 0; .@k <getarraysize($Forbidden); set .@k, .@k+1)
{
if ($monster == $Forbidden[.@k])
{
set .@guessrepeat, 1;
break;
}
}
}
while (.@guessrepeat);
setnpctimer 0;
initnpctimer;
setnpcdisplay "Disguise NPC",$monster;
set $MonsterName$, strmobinfo(1,$monster);
defpattern 1, "([^:]+):.*\\s"+$MonsterName$+"(.*)", "winround";
activatepset 1;
npctalk "What's my name?";
sleep 3000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
end;

OnTimer10000:
if (!.DisguiseWon)
{
npctalk "Come on. What monster am I?";
sleep 3000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
if (!$guessactive)  {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
}
end;


OnTimer25000:
if (!.DisguiseWon)
{
npctalk "Nobody knows that monster?";
sleep 3000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;

OnTimer35000:
if (!.DisguiseWon)
{
npctalk "You get 10 more seconds to guess my name.";
sleep 3000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;

OnTimer45000:
if (!.DisguiseWon)
{
npctalk "Round is over.";
if (!$guessactive)  {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
set $DisguiseRound, $DisguiseRound + 1;
sleep 3000;
deletepset 1;
npctalk $MonsterName$ + " would have been the correct answer.";
sleep 5000;
if ($DisguiseRound >= $guessrounds)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Event is over now!";
sleep 3500;
npctalk "See ya guys";
sleep 2000;
emotion 12;
sleep 1000;
set $guessactive, 0;
mapwarp "poring_c01.gat","que_qsch05.gat",252,341;
setnpcdisplay "Disguise NPC",794;
disablenpc "Disguise NPC";
end;
}
goto OnStart;
}
end;

winround:
setnpctimer 0;
deletepset 1;
set .DisguiseWon, 1;
set $DisguiseRound, $DisguiseRound + 1;
npctalk strcharinfo(0) + " got my right name!",0;
sleep2 3000;
npctalk $MonsterName$ + " is the correct answer.";
sleep2 3000;
npctalk "Take this as a reward.";
getitem $guessprize, $guessprizecount;
if (!$guessactive)  {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
if ($DisguiseRound >= $guessrounds)
{
set $DisguiseRound, 0;
set $guessactive, 0;
sleep 3000;
npctalk "Event is over now!";
sleep 3500;
npctalk "See ya guys";
sleep 2000;
emotion 12;
sleep 1000;
mapwarp "poring_c01.gat","que_qsch05.gat",252,341;
setnpcdisplay "Disguise NPC",794;
disablenpc "Disguise NPC";
end;
}
sleep 5000;
goto OnStart;
end;



}

//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------

- script guessAnnouncer -1,{


OnGMStart:
if ($guessactive) end;
set $guessactive, 1;
announce "A Gamemaster has started the Disguise Event",0;
set $guessbegin, 0;
sleep 3000;
if (!$guessactive) end;
announce "If you want to join, come to the main town, head downwards and enter the warp portal.",0;
enablenpc "guesswarp";
enablenpc "Disguise NPC";
sleep 3000;
announce "Number of Rounds: "+$guessrounds,0;
sleep 2000;
announce "Prize: "+ getitemname($guessprize) + " x " + $guessprizecount,0;
sleep 2000;
if (!$guessactive) {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
announce "The portal is going to close in one minute.",0;  
sleep 60000;
if (!$guessactive) {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
announce "The portal has been closed.",0;
disablenpc "guesswarp";
set $DisguiseRound, 0;
sleep 5000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
if(getmapusers("poring_c01") == 0)
{
disablenpc "Disguise NPC";
set $guessactive, 0;
end;
}

donpcevent "Disguise NPC::OnStart";
end;

OnGMStop:
if ($guessactive)
{
set $guessactive, 0;
announce "A Gamemaster has stopped the Disguise Event",0;
set $DisguiseRound, 0;
mapwarp "poring_c01.gat","que_qsch05.gat",252,341;
setnpcdisplay "Disguise NPC",794;
disablenpc "Disguise NPC";
disablenpc "guesswarp";
}
end;


OnClock0200:
OnClock0400:
OnClock0600:
OnClock0800:
OnClock1000:
OnClock1200:
OnClock1400:
OnClock1600:
OnClock1800:
OnClock2000:
OnClock2200:
OnClock0000:
if ($guessactive) end;
set $guessactive, 1;
announce "The server is starting a Disguise Event now.",0;
set $guessbegin, 0;
sleep 3000;
if (!$guessactive) end;
announce "If you want to join, come to the main town, head downwards and enter the warp portal.",0;
enablenpc "guesswarp";
enablenpc "Disguise NPC";
sleep 2000;
announce "Prize: "+ getitemname($guessprize) + " x " + $guessprizecount,0;
sleep 2000;
if (!$guessactive)  {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
announce "The portal is going to close in one minute.",0;  
sleep 60000;
if (!$guessactive)  {disablenpc "guesswarp"; disablenpc "Disguise NPC"; end;}
announce "The portal has been closed.",0;
disablenpc "guesswarp";
sleep 5000;
if (!$guessactive)  {disablenpc "Disguise NPC"; end;}
announce "Next Event will start in 2 hours.",0;
set $DisguiseRound, 0;
if(getmapusers("poring_c01") == 0)
{
disablenpc "Disguise NPC";
set $guessactive, 0;
end;
}

donpcevent "Disguise NPC::OnStart";
end;

OnInit:
disablenpc "Disguise NPC";
disablenpc "guesswarp";
set $guessactive, 0;
setarray $Forbidden[0],1003,1006,1017,1021,1022,1027,1043,1136,1137,1168,1171,1172,1173,1181,1210,1217,1218,1223,1284,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1407,1411,1414,1496,1501,1900;

}

//-----------------------------------------------------------------------------------
//------------------Warp Portal------------------------------------------------------
que_qsch05,253,320,0 warp guesswarp 2,2,poring_c01,103,95
//-----------------------------------------------------------------------------------
//------------------Map Flags--------------------------------------------------------
poring_c01 mapflag nowarpto
poring_c01 mapflag noskill
poring_c01 mapflag nosave
poring_c01 mapflag nomemo
poring_c01 mapflag noteleport
//-----------------------------------------------------------------------------------




and now i want to use some certain mobs, like i can start rounds with only mvps, or only bio mobs and so one. how can i do this?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  130
  • Reputation:   43
  • Joined:  12/11/11
  • Last Seen:  

You should http://upaste.me/ the script with intendations (tabs, spaces etc).

If you want to use a list of mobs, you can change:

 for (set .@k, 0; .@k <getarraysize($Forbidden); set .@k, .@k+1) {
if ($monster == $Forbidden[.@k]) {

To

 for (set .@k, 0; .@k <getarraysize($Forbidden); set .@k, .@k+1) {
if ($monster != $Forbidden[.@k]) {

And it will treat the array $Forbidden[] as a list of monsters it is allowed to use. It will only use monsters in that list.

Note that it will only be able to randomly choose monsters between 1001 and 1950 unless you edit this row and change the red to a higher number:

set $monster, 1000 + rand(1,950);
Edited by plankt
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  150
  • Reputation:   5
  • Joined:  12/28/11
  • Last Seen:  

tried that, but its everytime disguise into an poporing :P

cant i just do it like that?

set $monster, 1029 + rand(1,030),1031 + rand(1,032);

just getting a error: parse line need ;

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  130
  • Reputation:   43
  • Joined:  12/11/11
  • Last Seen:  

If you want to change between 1029, 1030, 1031 and 1032 you write:

set $monster, 1029 + rand(4);

The green is the start value.

The red is how much it can increase at the most.

Edited by plankt
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  150
  • Reputation:   5
  • Joined:  12/28/11
  • Last Seen:  

hmm, the certain monster list is still not working. like changing between 1001 and 2102, etc.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  130
  • Reputation:   43
  • Joined:  12/11/11
  • Last Seen:  

Ah, mistake from my part. Ignore what I said about the for-loop.

Change:

do {
 set .@guessrepeat, 0;
 set $monster, 1000 + rand(1,950);
 for (set .@k, 0; .@k <getarraysize($Forbidden); set .@k, .@k+1){
if ($monster == $Forbidden[.@k]){
  set .@guessrepeat, 1;
  break;
}
 }
} while (.@guessrepeat);

To

set $monster, $Forbidden[rand(getarraysize($Forbidden))];

Note: It can ONLY choose ids from the $Forbidden array if you do this edit.

That way you can have arrays with monsters and select from them, ex:

setarray .@mvps, id1, id2, id3, ...;

set $monster, .@mvps[rand(getarraysize(.@mvps))];

Edited by plankt
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  150
  • Reputation:   5
  • Joined:  12/28/11
  • Last Seen:  

Hm, no more errors, but ther must be something wrong, its disguising into "0" mobs, map server says: no class view data for id 1217 / 1407 2011 etc.

my array:

setarray $Forbidden[0],1252,1515;

disguise part:

set $monster, $Forbidden[rand(getarraysize($Forbidden))];
setnpctimer 0;
initnpctimer;
setnpcdisplay "Disguise NPC",$monster;
set $MonsterName$, strmobinfo(1,$monster);
defpattern 1, "([^:]+):.*\\s"+$MonsterName$+"(.*)", "winround";
activatepset 1;
npctalk "Whats my name?";

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  130
  • Reputation:   43
  • Joined:  12/11/11
  • Last Seen:  

Test with the array:

setarray $Forbidden[0],1002;

And you should only get a Poring.

If that works, then it's the IDs that are wrong.

If that does not work, then please post the whole script on http://upaste.me

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