Jump to content
  • 0

Disguise Event: is my recompling right?


Cisqua

Question


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

i have problem with disguise event.

when the NPC disguise as a mobs. EG: poring the answer must be poring right? but if someone answer poringq12 or poringblablabla npc considered it right..

someone told me i follow this guide

http://rathena.org/wiki/PCRE

but still they same problems

this is the script im using..

//==============================================================================//
//--- Created by GmOcean -------------------------------------------------------//
//--- You may modify this script at your own risk. However any modifications ---//
//--- To this script are made at your own discretion and I will not provide ----//
//--- any support to modified scripts. You Also are forbidden to release the ---//
//--- modified script as your own. You can however post suggestions and I will -//
//--- Take them into consideration. You may also post the modified script up ---//
//--- In the Script Support section, as long as I am given Credit as the -------//
//--- Original Script Creator. Thank You for following these few requests ------//
//--- And Enjoy the Script ~! --------------------------------------------------//
//-------------------------------- Script Version == v5.0 -------------//
//==============================================================================//
quiz_02,350,389,4 script DE#OnTouch -1,5,5,{
OnTouch:
if ( getgroupid() == 4 || getgmlevel() == 99 ) {end;}
warp "quiz_02",350,371;
end;
}
quiz_02,350,389,4 script Disguise Event 795,2,2,{
//--- Basic Script Configuration Options ---//
set .@npcname$,"[^228B22 Disguise NPC ^000000]"; //<- NPC Name.
set $@GMLevel,60; //<- GM Level needed to be considered a GM.
//--- The Script ---//
//if (getgmlevel()>=$@GMLevel || getgroupid() == 2 || getgroupid() == 5) goto GM_Player;
if (getgmlevel()>=$@GMLevel || getgroupid() == 4 ) goto GM_Player;
if ($@EventON){end;}
mes .@npcname$;
mes "Welcome, how may i serve you?";
menu "Information",iInfo,"Nothing",iNothing;
iInfo:
next;
mes .@npcname$;
mes "This event is actually quite simple";
mes "At the start of the event, I will disguise myself";
mes "into a monster randomly. You will then merely have to shout that monsters name outloud.";
next;
mes "If you get it correct, you get a prize. If not, then keep trying.";
mes "That is all there is to know about this event.";
close;
iNothing:
close;
GM_Player:
mes .@npcname$;
mes "Please select an Option to modify.";
mes "Rule 1: All Monster's";
mes "Rule 2: All MvP's";
mes "Current Rule: [ ^0000FF"+$Rule+"^000000 ]";
mes "Current Round: [ ^0000FF"+$Rounds+"^000000 ]";
mes "Current Prize: [ ^0000FF"+getitemname($Prize)+"^000000 ]";
//menu "Turn ^FF0000ON^000000 / ^0000FFOFF^000000 Event",iEvent, ( ( getgmlevel() == 99 || getgroupid() == 5 ) ? "Event Settings" : "" ),iSettings;
menu "Turn ^FF0000ON^000000 / ^0000FFOFF^000000 Event",iEvent, ( ( getgmlevel() == 99 ) ? "Event Settings" : "" ),iSettings;
iEvent:
next;
mes .@npcname$;
if ($@EventON){mes "The event is currently: [^0000FF ON ^000000]";
mes "Would you like to turn it ^FF0000OFF^000000?";}
if (!$@EventON){mes "The event is currently: [^FF0000 OFF ^000000]";
mes "Would you like to turn it ^0000FFON^000000?";}
menu "Yes",iYes,"No",iNothing;
iYes:
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 "Go to prontera if you want to join the event.",bc_all | bc_blue;
close;
iSettings:
next;
mes .@npcname$;
mes "Please select a setting to modify.";
menu "Monster display",iMonster,"Number of rounds",iRounds,"Prize settings",iPrize,"Current Settings",iCSet;
iMonster:
callfunc "Monster_Display";
iRounds:
callfunc "Rounds";
iPrize:
callfunc "Prize";
iCSet:
callfunc "Setting";
OnInit:
defpattern 1,"([^:]+):.\\s*OMFGBBQLEETSAUCEGMOCEANRULESHAI!!.*", "iCorrect";
activatepset 1;
set $@EventON,0;
set $@Wait,0;
set $@Winner,0;
set $Points,$Points;
set $@ResetCounter,0;
set $Rounds,$Rounds;
set $Prize,$Prize;
set $PrizeAmt,$PrizeAmt;
set $Rule,$Rule;
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;
setarray $@BlackList[0], 1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168,1171,1172,1173,1181,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;
setarray $@BlackList2[0],2119,2120,2121,2123,2124,2125,1496;
end;
OnClock0010:
OnClock0050:
OnClock0130:
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 "Go to prontera if you want to join the event.",bc_all | bc_blue;
setnpctimer 0;
initnpctimer;
end;
OnTimer10000:
if ($@Timer){end;}
if ($@Change){end;}
set $@Wait,0;
goto iDisguise;
//donpcevent "DisguiseEvent::OnDisguise";
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$,"OMFGBBQLEETSAUCEGMOCEANRULESHAI!!";
deletepset 1;
stopnpctimer;
setnpctimer 0;
initnpctimer;
end;
OnTimer60000:
if ($@Timer!=1){end;}
if ($@Timer==1)
{announce "The disguise event will begin in 2 minutes.",bc_all | bc_blue;
announce "Go to prontera if you want to join the event.",bc_all | bc_blue;
end;}
OnTimer120000:
if ($@Timer!=1){end;}
if ($@Timer==1)
{announce "The disguise event will begin 1 minute.",bc_all | bc_blue;
announce "Go to prontera if you want to join the event.",bc_all | bc_blue;
end;}
OnTimer180000:
if ($@Timer!=1){end;}
if ($@Timer==1)
{announce "The disguise event has begun!",bc_all | bc_blue;
announce "Go to prontera if you want to join the event.",bc_all | bc_blue;
set $@Timer,0; stopnpctimer;
setnpctimer 0; initnpctimer;
goto iDisguise;
//donpcevent "DisguiseEvent::OnDisguise";
end;}
announce "Something went wrong with the disguise event.",bc_all | bc_blue;
announce "Please notify a GM ASAP. Thank you.",bc_all | bc_blue;
end;
iDisguise:
if ($Rule==1)
{set $@Winner,0;
set $@Monster,1000+rand(1,995);
for(set .@BL,0; .@BL<getarraysize($@BlackList); set .@BL,.@BL+1)
{if ($@Monster==$@BlackList[.@BL] || $@Monster==$@BlackList2[.@BL])
{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;
//Hint
//npctalk ""+$@Monster+", "+$MonsterName$+"";
end;
iCorrect:
if ($@Winner){dispbottom "Someone has already won this round."; end;}
set $@Winner,1;
set $@RoundCount,$@RoundCount+1;
deletepset 1;
defpattern 1,"([^:]+):.*\\sOMFGBBQLEETSAUCEGMOCEANRULESHAI!!.*", "iFailCheater";
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;
iFailCheater:
end;
}
//--- The Functions ---//
function script Rounds {
next;
mes "Please Input the number of rounds you want the event to last.";
mes "Current number of rounds: [ ^0000FF"+$Rounds+"^000000 ]";
input .@Rounds;
set $Rounds,.@Rounds;
next;
mes "The number of rounds has been changed successfully.";
mes "Number of Rounds: [ ^0000FF"+$Rounds+"^000000 ]";
mes "Come again.";
close;
}
function script Prize {
next;
mes "Please Input the Item ID of the prize that will be given each round.";
mes "Current Items is: [ ^0000FF"+getitemname($Prize)+"^000000 ] Item ID - ^0000FF"+$Prize+"^000000";
input .@Prize;
if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null")
{next; mes "That item does not exist. Please try again."; close;}
set $Prize,.@Prize;
next;
mes "Please Input the Ammount that is to be given.";
input .@Ammount;
if (.@Ammount<=0 || .@Ammount>=2)
{next; mes "That ammount is invalid. Using default ammount of 1.";}
set $PrizeAmt,.@Ammount;
next;
mes "The Prize has been changed successfully.";
mes "Prize: [ ^0000FF"+getitemname($Prize)+"^000000 ] ( ^0000FFx"+$PrizeAmt+"^000000 )";
close;
}
function script Monster_Display {
setarray .@Rule[0],0,1,2;
setarray .@Desc$[0],"","Transform as all monsters.","Transform as MvP's only.";
next;
mes "Please select a disguise Rule.";
mes "Rule 1 - Transform as all monsters.";
mes "Rule 2 - Transform as MvP's only.";
menu "Rule 1:Rule 2",iRule;
iRule:
set $Rule,.@Rule[@menu];
next;
mes "The disguise Rule, has been changed successfully.";
mes "Current Rule: ^0000FF"+$Rule+"^000000 - ^0000FF"+.@Desc$[@menu]+"^000000";
close;
}
function script Setting {
mes "Rule 1: All Monster's";
mes "Rule 2: All MvP's";
mes "Current Rule: [ ^0000FF"+$Rule+"^000000 ]";
mes "Current Round: [ ^0000FF"+$Rounds+"^000000 ]";
mes "Current Prize: [ ^0000FF"+getitemname($Prize)+"^000000 ]";
close;
}

this is the console said when i finish my recompiling.

make[1]: Entering directory `/root/Desktop/trunk/3rdparty/mt19937ar'
CC mt19937ar.c
make[1]: Leaving directory `/root/Desktop/trunk/3rdparty/mt19937ar'
make[1]: Entering directory `/root/Desktop/trunk/3rdparty/libconfig'
CC libconfig.c
CC grammar.c
CC scanctx.c
CC scanner.c
CC strbuf.c
make[1]: Leaving directory `/root/Desktop/trunk/3rdparty/libconfig'
make[1]: Entering directory `/root/Desktop/trunk/src/common'
MKDIR obj_all
CC core.c
CC socket.c
CC timer.c
CC db.c
CC nullpo.c
CC malloc.c
CC showmsg.c
CC strlib.c
CC utils.c
CC grfio.c
CC mapindex.c
CC ers.c
CC md5calc.c
CC core.c
CC socket.c
CC malloc.c
CC random.c
CC des.c
CC conf.c
CC thread.c
CC mutex.c
CC raconf.c
CC mempool.c
AR obj_all/common.a
MKDIR obj_sql
CC sql.c
AR obj_sql/common_sql.a
make[1]: Leaving directory `/root/Desktop/trunk/src/common'
make[1]: Entering directory `/root/Desktop/trunk/src/login'
MKDIR obj_sql
CC login.c
CC account_sql.c
CC ipban_sql.c
CC loginlog_sql.c
LD login-server_sql
make[1]: Leaving directory `/root/Desktop/trunk/src/login'
make[1]: Entering directory `/root/Desktop/trunk/src/char'
MKDIR obj_sql
CC char.c
CC inter.c
CC int_party.c
CC int_guild.c
CC int_storage.c
CC int_pet.c
CC int_homun.c
CC int_mail.c
CC int_auction.c
CC int_quest.c
CC int_mercenary.c
CC int_elemental.c
LD char-server_sql
make[1]: Leaving directory `/root/Desktop/trunk/src/char'
make[1]: Entering directory `/root/Desktop/trunk/src/map'
MKDIR obj_sql
CC map.c
CC chrif.c
CC clif.c
CC pc.c
CC status.c
CC npc.c
CC npc_chat.c
CC chat.c
CC path.c
CC itemdb.c
CC mob.c
CC script.c
CC storage.c
CC skill.c
CC atcommand.c
CC battle.c
CC battleground.c
CC intif.c
CC trade.c
CC party.c
CC vending.c
CC guild.c
CC pet.c
CC log.c
CC mail.c
CC date.c
CC unit.c
CC homunculus.c
CC mercenary.c
CC quest.c
CC instance.c
CC buyingstore.c
CC searchstore.c
CC duel.c
CC pc_groups.c
CC elemental.c
CC mapreg_sql.c
LD map-server_sql
make[1]: Leaving directory `/root/Desktop/trunk/src/map'
building conf/import folder...

please tell me is my recompiling for PCRE is right? if wrong tell me some guide to do it thanks..

Link to comment
Share on other sites

11 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

change

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";

into

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".$", "iCorrect";

  • Upvote 1
Link to comment
Share on other sites


  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

when the NPC disguise as a mobs. EG: poring the answer must be poring right? but if someone answer poringq12 or poringblablabla npc considered it right..

It's 'normal', defpattern works like that in the script... However, if you want poring instead of poringhjk, for example add

if( $@p2$ != "" ) end;

after

iCorrect:

A NPC test for example.

prontera,159,185,5	script	hjkgfdl	456,{
defpattern 1, "([^:]+):.\\s*"+.MonsterName$+"(.*)", "Lquote26";
activatepset 1;
end;
Lquote26:
for( .@i = 0; .@i < 10; .@i++ )
	dispbottom "$@p"+ .@i +"$ : "+ getd( "$@p"+ .@i +"$" );
if( $@p2$ != "" ) end;
dispbottom "work ?";
end;
OnInit:
.MonsterName$ = "high wizard blabla";
end;
}

Edited by Capuche
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

@ Capuche

still they same.. npc always accepting wrong/extraletters. when players answer.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

http://www.eathena.ws/board/index.php?showtopic=271175

try the script in post#10 and see you get the |00 generated from your hexed client or not

Link to comment
Share on other sites


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

you only have to deal with the "Regular Expression"

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

@AnnieRuru

this npc working fine to my server... npc repeat what i said..

prontera,152,181,5    script    dasdasd    909,{
   end;
L_0:
   npctalk $@p2$;
   debugmes $@p2$;
   end;
OnInit:
   defpattern 1, "([^:]+): (.*)","L_0";
   activatepset 1;
   end;
}

prontera,152,181,5    script    dasdasd    909,{
   end;
L_0:
   npctalk $@p3$;
   debugmes $@p3$;
   end;
OnInit:
   defpattern 1, "([^:]+): (\\|[0-9][0-9])(.*)","L_0";
   activatepset 1;
   end;
}

@Emistry where do i put this code?

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";

Edited by Cisqua
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

I mean check your map-server.exe for debug message

if 2nd npc also copy what you say, means your client does generate |00

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

yup i saw debug msg in my map server ...

@ AnnieRuru

testnpc1 working - i said test in front of testnpc1 and npc repeat what i said. and in my map server i saw this

[Debug]: script debug " accountID 110060094 : test

prontera,214,179,5 script testnpc1 909,{
end;
L_0:
npctalk $@p2$;
debugmes $@p2$;
end;
OnInit:
defpattern 1, "([^:]+): (.*)","L_0";
activatepset 1;
end;
}

nothings happen in this script..

prontera,190,174,5 script testnpc2 909,{
end;
L_0:
npctalk $@p3$;
debugmes $@p3$;
end;
OnInit:
defpattern 1, "([^:]+): (\\|[0-9][0-9])(.*)","L_0";
activatepset 1;
end;
}

is this ok?

i have notice this why its different?

defpattern 1,"([^:]+):.\\s*OMFGBBQLEETSAUCEGMOCEANRULESHAI!!.*", "iCorrect";

defpattern 1,"([^:]+):.*\\sOMFGBBQLEETSAUCEGMOCEANRULESHAI!!.*", "iFailCheater";

Edited by Cisqua
Link to comment
Share on other sites


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

you only have to deal with the "Regular Expression"

you have to learn the Regular Expression...otherwise it will be really tough for you to understand what's it...how it's working...and etc...

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

@ Emistry i dont have idea about that..

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.01
  • Content Count:  131
  • Reputation:   1
  • Joined:  12/29/12
  • Last Seen:  

change

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";

into

defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".$", "iCorrect";

@AnnieRuru its working now... thank you very much!... problem solve.

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