Ragnarok Developer
Please Login to able Download the File
Ragnarok Developer

Official Forums
 
HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log in  
Your Ad Here

Share | 
 

 Disguise NPC

Go down 
AuthorMessage
JhayUrsolino
Admin


Posts : 15
Join date : 12/09/2012

PostSubject: Disguise NPC   Wed Sep 19, 2012 4:16 am

* GM Control Panel
* Some Code Changes

Event starts all 2 hours.
Can be started manually too.

Maps that can be changed:

warp portal : que_qsch05,253,320
cp: yuno_pre,33,95
playzone: poring_c01
Code:

/*//----------------------------------------------------------------//
//----------------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
//-----------------------------------------------------------------------------------
Back to top Go down
View user profile http://jrursolino.blogspot.com
 
Disguise NPC
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
Ragnarok Developer :: Scripts :: Scripts Release-
Jump to: