Автор: The nepcuk: Дата: 01.25.2011
Имеется ли у кого ивент "Угадай Монстра", прямой, без баггов????:(
Автор: The nepcuk: Дата: 01.25.2011
У меня есть скрипт этого нпц, но вот проблемка в чём, он не считывает информацию с чата, название монстра, если выразиться точнее.
Вот сам скрипт:
prontera.gat,174,208,4 script Disguise NPC 72,{
if (!$guessbegin)
{
mes "[Disguise NPC]";
mes "Евент Начался!";
close;
}
end;
OnStart:
set $guessbegin, 1;
set .DisguiseWon, 0;
if (!$DisguiseRound)
{
npctalk "Хорошо. Начнем евент!";
sleep 4000;
npctalk "Но сначало я расскажу правила";
sleep 6000;
npctalk "Я превращаюсь в любого монстра наугад";
sleep 5000;
npctalk "Вы должны узнать его и выкрикнуть его имя";
sleep 5000;
npctalk "Большие и маленькие буквы не считаются";
sleep 8000;
npctalk "Евент начался!!";
sleep 5000;
}
else if ($DisguiseRound < 6)
{
npctalk "Будьте готовы к следующему раунду.";
setnpctimer 0;
sleep 8000;
}
else
{
npctalk "Последний раунд!";
sleep 2000;
npctalk "Приготовьтесь.";
sleep 6000;
}
do
{
set $monster, rand(1001,1797);
}
while ($monster == 1003 || $monster == 1006 || $monster == 1017 || $monster == 1021 || $monster == 1022 || $monster == 1027 || $monster == 1043 || $monster == 1006 || $monster == 1136 || $monster == 1137 || $monster == 1168 || $monster == 1171 || $monster == 1172 || $monster == 1173 || $monster == 1181 || $monster == 1210 || $monster == 1223 || $monster == 1284 || ($monster >= 1324 && $monster <= 1363) || $monster == 1006 || $monster == 1407 || $monster == 1411 || $monster == 1414 || $monster == 1496 || $monster == 1501);
setnpctimer 0;
initnpctimer;
setnpcdisplay "Disguise NPC",$monster;
set $MonsterName$, strmobinfo(1,$monster);
defpattern 1, "([^:]+):.*\\s"+$MonsterName$+"(.*)", "OnWin";
activatepset 1;
npctalk "Ну что как зовут монстра?";
sleep 2000;
npcwalkto 107,99;
sleep 1000;
npcwalkto 102,99;
sleep 1000;
npcwalkto 102,103;
sleep 1000;
npcwalkto 102,99;
end;
OnTimer10000:
if (!.DisguiseWon)
{
npctalk "Давайте. Какой я монстер?";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer25000:
if (!.DisguiseWon)
{
npctalk "Никто не знает?";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer35000:
if (!.DisguiseWon)
{
npctalk "У вас есть 10 секунд чтобы назвать имя!!.";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer45000:
if (!.DisguiseWon)
{
npctalk "Раунд окончен.";
set $DisguiseRound, $DisguiseRound + 1;
sleep 3000;
deletepset 1;
npctalk $MonsterName$ + " правильное имя!.";
sleep 5000;
if ($DisguiseRound >= 6)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Евент кончился!";
sleep 3500;
npctalk "Увидимся!";
sleep 2000;
emotion 12;
sleep 1000;
mapwarp "poring_w01.gat","gonryun",158,112;
setnpcdisplay "Disguise NPC",50;
disablenpc "Disguise NPC";
end;
}
goto OnStart;
}
end;
OnWin:
setnpctimer 0;
deletepset 1;
set .DisguiseWon, 1;
set $DisguiseRound, $DisguiseRound + 1;
sleep2 3000;
npctalk strcharinfo(0) + " дал верное имя!",0;
sleep2 3000;
npctalk $MonsterName$ + " Это правильное имя.";
sleep2 3000;
npctalk "Получай приз Дружище";
getitem 23169,1;
if ($DisguiseRound >= 6)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Евент окончен!";
sleep 3500;
npctalk "Увидимся!";
sleep 2000;
emotion 12;
sleep 1000;
setnpcdisplay "Disguise NPC",50;
disablenpc "Disguise NPC";
end;
}
sleep 5000;
goto OnStart;
end;
}
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
- script guessAnnouncer -1,{
OnMinute15:
OnMinute30:
announce "Мы начинаем евент превращений!",0;
set $guessbegin, 0;
sleep 5000;
announce "Если хотите учавствовать идите в Пронту,нпц слева от фонтана.",0;
enablenpc "Disguise NPC";
sleep 5000;
announce "Эвент начнётся через минуту",0;
sleep 30000;
announce "Осталось 30 секунд",0;
sleep 20000;
announce "10",0;
sleep 1000;
announce "9",0;
sleep 1000;
announce "8",0;
sleep 1000;
announce "7",0;
sleep 1000;
announce "6",0;
sleep 1000;
announce "5",0;
sleep 1000;
announce "4",0;
sleep 1000;
announce "3",0;
sleep 1000;
announce "2",0;
sleep 1000;
announce "1",0;
sleep 1000;
announce "Эвент начался",0;
sleep 5000;
announce "Следующий евент через 30 минут",0;
set $DisguiseRound, 0;
donpcevent "Disguise NPC::OnStart";
end;
OnInit:
disablenpc "Disguise NPC";
}
Автор: Jarek: Дата: 01.25.2011
А сервак скомпилен с поддержкой регулярных выражений?
3rdparty\pcre
*defpattern," "," ";
*activatepset;
*deactivatepset;
*deletepset;
This set of commands is only available if the server is compiled with regular
expressions library enabled. Default compilation and most binary distributions
aren't, which is probably bad, since these, while complex to use, are quite
fascinating.
Автор: The nepcuk: Дата: 01.25.2011
Цитата Jarek;31365:
А сервак скомпилен с поддержкой регулярных выражений?
3rdparty\pcre
Автор: Sanasol: Дата: 01.25.2011
есть такая штука. Если поставить пробел перед названием монстра то он засчитает. Проблема в выборе версии в клиентинфо, но я так и не понял как исправить. Смысл в том что в начале сообщения добавляется неизвестный символ который в игре не видно за то в логах чата видно.
Автор: The nepcuk: Дата: 01.25.2011
Цитата Sanasol;31377:
есть такая штука. Если поставить пробел перед названием монстра то он засчитает. Проблема в выборе версии в клиентинфо, но я так и не понял как исправить. Смысл в том что в начале сообщения добавляется неизвестный символ который в игре не видно за то в логах чата видно.
Автор: defo: Дата: 01.26.2011
Ну вот собственно, у меня стоял когда-то, никто не жаловался...
poring_w01,102,99,2 script Угадай Монстра 72,{
if (!$guessbegin)
{
mes "[Disguise NPC]";
mes "Евент Начался!";
close;
}
end;
OnStart:
set $guessbegin, 1;
set .DisguiseWon, 0;
if (!$DisguiseRound)
{
npctalk "Хорошо. Начнем евент!";
sleep 4000;
npctalk "Но сначала я расскажу правила";
sleep 6000;
npctalk "Я превращаюсь в любого монстра наугад";
sleep 5000;
npctalk "Вы должны узнать его и выкрикнуть его имя";
sleep 5000;
npctalk "Большие и маленькие буквы не считаются";
sleep 8000;
npctalk "Евент начался!!";
sleep 5000;
}
else if ($DisguiseRound < 6)
{
npctalk "Будьте готовы к следующему раунду.";
setnpctimer 0;
sleep 8000;
}
else
{
npctalk "Последний раунд!";
sleep 2000;
npctalk "Приготовьтесь.";
sleep 6000;
}
do
{
set $monster, rand(1001,1797);
}
while ($monster == 1003 || $monster == 1006 || $monster == 1017 || $monster == 1021 || $monster == 1022 || $monster == 1027 || $monster == 1043 || $monster == 1006 || $monster == 1136 || $monster == 1137 || $monster == 1168 || $monster == 1171 || $monster == 1172 || $monster == 1173 || $monster == 1181 || $monster == 1210 || $monster == 1223 || $monster == 1284 || ($monster >= 1324 && $monster <= 1363) || $monster == 1006 || $monster == 1407 || $monster == 1411 || $monster == 1414 || $monster == 1496 || $monster == 1501);
setnpctimer 0;
initnpctimer;
setnpcdisplay "Угадай Монстра",$monster;
set $MonsterName$, strmobinfo(1,$monster);
defpattern 1, "([^:]+):.*\\s"+$MonsterName$+"(.*)", "OnWin";
activatepset 1;
npctalk "Ну что как зовут монстра?";
sleep 2000;
npcwalkto 107,99;
sleep 1000;
npcwalkto 102,99;
sleep 1000;
npcwalkto 102,103;
sleep 1000;
npcwalkto 102,99;
end;
OnTimer10000:
if (!.DisguiseWon)
{
npctalk "Давайте. Какой я монстер?";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer25000:
if (!.DisguiseWon)
{
npctalk "Никто не знает?";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer35000:
if (!.DisguiseWon)
{
npctalk "У вас есть 10 секунд чтобы назвать имя!!.";
npcwalkto 107,99;
sleep 2000;
npcwalkto 102,99;
sleep 2000;
npcwalkto 102,103;
sleep 2000;
npcwalkto 102,99;
}
end;
OnTimer45000:
if (!.DisguiseWon)
{
npctalk "Раунд окончен.";
set $DisguiseRound, $DisguiseRound + 1;
sleep 3000;
deletepset 1;
npctalk $MonsterName$ + " правильное имя!.";
sleep 5000;
if ($DisguiseRound >= 6)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Евент кончился!";
sleep 3500;
npctalk "Увидимся!";
sleep 2000;
emotion 12;
sleep 1000;
mapwarp "poring_w01.gat","prontera",150,175;
setnpcdisplay "Угадай Монстра",50;
disablenpc "Угадай Монстра";
end;
}
goto OnStart;
}
end;
OnWin:
setnpctimer 0;
deletepset 1;
set .DisguiseWon, 1;
set $DisguiseRound, $DisguiseRound + 1;
sleep2 3000;
npctalk strcharinfo(0) + " дал верное имя!",0;
sleep2 3000;
npctalk $MonsterName$ + " Это правильное имя.";
sleep2 3000;
npctalk "Получай приз Дружище";
set @prize,rand (1,20);
if(@prize == 1) {
getitem 7185,1; //Призы 20 рандомных Вписывать свое ID
set @prizeid,7227;}
if(@prize == 2) {
getitem 7185,2;
set @prizeid,7227;}
if(@prize == 3) {
getitem 7185,3;
set @prizeid,7227;}
if(@prize == 4) {
getitem 7185,4;
set @prizeid,7227;}
if(@prize == 5) {
getitem 7185,5;}
mapannounce "poring_w01","Приз "+getitemname(@prizeid)+" ",bc_map,0xFFFFFF;
if ($DisguiseRound >= 6)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Евент окончен!";
sleep 3500;
npctalk "Увидимся!";
sleep 2000;
emotion 12;
sleep 1000;
mapwarp "poring_w01.gat","gonryun",158,112;
setnpcdisplay "Угадай Монстра",50;
disablenpc "Угадай Монстра";
end;
}
sleep 5000;
goto OnStart;
end;
}
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
- script guessAnnouncer -1,{
Onclock0630:
announce "Мы начинаем евент превращений!",0;
set $guessbegin, 0;
sleep 5000;
announce "Если хотите учавствовать идите в Gonryun И войдите в Варп Портал.",0;
enablenpc "guesswarp";
enablenpc "Угадай Монстра";
sleep 60000;
announce "Портал закроется через минуту",0;
sleep 30000;
announce "Осталось 30 секунд и портал закроется",0;
sleep 20000;
announce "10",0;
sleep 1000;
announce "9",0;
sleep 1000;
announce "8",0;
sleep 1000;
announce "7",0;
sleep 1000;
announce "6",0;
sleep 1000;
announce "5",0;
sleep 1000;
announce "4",0;
sleep 1000;
announce "3",0;
sleep 1000;
announce "2",0;
sleep 1000;
announce "1",0;
sleep 1000;
announce "Портал закрыт",0;
disablenpc "guesswarp";
sleep 5000;
set $DisguiseRound, 0;
donpcevent "Угадай Монстра::OnStart";
end;
OnInit:
disablenpc "Угадай Монстра";
disablenpc "guesswarp";
}
//-----------------------------------------------------------------------------------
//------------------Warp Portal------------------------------------------------------
gonryun,154,107,0 warp guesswarp 2,2,poring_c01,103,95
//-----------------------------------------------------------------------------------
//------------------Map Flags--------------------------------------------------------
poring_w01 mapflag nowarpto
poring_w01 mapflag noskill
poring_w01 mapflag nowarp
poring_w01 mapflag nosave
poring_w01 mapflag nomemo
poring_w01 mapflag noteleport
poring_w01 mapflag nobranch
//-----------------------------------------------------------------------------------
Автор: Jarek: Дата: 01.26.2011
Цитата The nepcuk;31382:
))))
Я вот и не знаю что делать :D
defpattern 1, "([^:]+):.*\\s."+$MonsterName$+"(.*)", "OnWin";
Автор: The nepcuk: Дата: 01.26.2011
Спасибо) Проблемку решил)
Спасибо за скрипт)
Автор: SergeiX: Дата: 04.13.2011
ругаеться в скрипте Defo на 142 строчку (проблема в ковычках или чего?):mellow:
Автор: defo: Дата: 04.13.2011
выложи скрин, по скрипту всё верно...
Автор: SergeiX: Дата: 04.17.2011
что за беда всё установлено верно после закрытия варпа эвент не начинаеться нпц тупо молчит ??
Автор: Kill Spirit: Дата: 04.17.2011
Юзай мою, только спасибо поставить не забудь :D
5@tower,82,83,4 script Disguise NPC 811,{
if (!$guessbegin)
{
mes "^3399FF[Disguise NPC]^000000";
mes "Эвент скоро начнется.";
close;
}
end;
OnStart:
set $guessbegin, 1;
set .DisguiseWon, 0;
if (!$DisguiseRound)
{
npctalk "Хорошо";
sleep 1000;
npctalk "Но сначала я объясню Вам, как играть в игру.";
sleep 1000;
npctalk "Я перевоплощаюсь в случайного монстра.";
sleep 1000;
npctalk "Вы должны угадь монстра, и выкрикнуть его название.";
sleep 1000;
npctalk "Не беспокойтесь об использовании маленьких первых букв.";
sleep 1000;
npctalk "Ну что? Начнем?)";
sleep 1000;
}
else if ($DisguiseRound < 10-1)
{
npctalk "Приготовтесь к следующему раунду.";
setnpctimer 0;
sleep 8000;
}
else
{
npctalk "Последний раунд";
sleep 2000;
npctalk "Приготовтесь";
sleep 6000;
}
do
{
set .@guessrepeat, 0;
set $monster, 1000 + rand(1,950);
for (set .@k, 0; .@k
{
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 "Как меня зовут?";
sleep 3000;
sleep 2000;
end;
OnTimer10000:
if (!.DisguiseWon)
{
npctalk "Идем дальше. Какой я монстр?";
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
}
end;
OnTimer25000:
if (!.DisguiseWon)
{
npctalk "Никто не знает этого монстра?";
}
end;
OnTimer35000:
if (!.DisguiseWon)
{
npctalk "Осталось 10 секунд.";
}
end;
OnTimer45000:
if (!.DisguiseWon)
{
npctalk "Раунд окончен.";
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
set $DisguiseRound, $DisguiseRound + 1;
sleep 3000;
deletepset 1;
npctalk $MonsterName$ + " был бы правильный ответ.";
sleep 5000;
if ($DisguiseRound >= 10)
{
set $DisguiseRound, 0;
sleep 3000;
npctalk "Эвент окончен!";
sleep 3500;
npctalk "See ya guys";
sleep 2000;
emotion 12;
sleep 1000;
set $guessactive, 0;
mapwarp "5@tower.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) + " Дал правильный ответ";
sleep2 3000;
npctalk $MonsterName$ + " меня зовут";
sleep2 3000;
npctalk "Возьмите это как награду.";
set ##evp,##evp+1;
dispbottom "Вы получили 1 Event Point";
dispbottom "Сейчас у вас "+##evp+" Event Points!";
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
if ($DisguiseRound >= 10)
{
set $DisguiseRound, 0;
set $guessactive, 0;
sleep 3000;
npctalk "Эвент закончился!";
sleep 3500;
npctalk "Удачи!";
sleep 2000;
emotion 12;
sleep 1000;
mapwarp "5@tower.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;
set $devevent,1;
announce "Эвент - Угадай Монстра начнётся через 3 минуты",0;
set $guessbegin, 0;
sleep 3000;
if (!$guessactive) end;
announce "Чтобы войти,подойдите к Эвент варперу",0;
enablenpc "Disguise NPC";
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Вход закроется через 2 минуты.",0;
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Вход закроется через 1 минуту.",0;
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Набор участников завершен. Вход закрыт.",0;
set $devevent,0;
set $DisguiseRound, 0;
sleep 5000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
if(getmapusers("5@tower") == 0)
{
disablenpc "Disguise NPC";
set $guessactive, 0;
end;
}
donpcevent "Disguise NPC::OnStart";
end;
OnGMStop:
if ($guessactive)
{
set $guessactive, 0;
announce "GM остановил Эвент.",0;
set $DisguiseRound, 0;
mapwarp "5@tower.gat","que_qsch05.gat",252,341;
setnpcdisplay "Disguise NPC",794;
disablenpc "Disguise NPC";
}
end;
if ($guessactive) end;
set $guessactive, 1;
set $devevent,1;
announce "Угадай монстра начнётся через 3 минуты",0;
set $guessbegin, 0;
sleep 3000;
if (!$guessactive) end;
announce "Чтобы войти,подойдите к Эвент варперу",0;
enablenpc "Disguise NPC";
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Вход закроется через 2 минуты.",0;
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Вход закроется через 1 минуту.",0;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Варп закроется через одну минуту.",0;
sleep 60000;
if (!$guessactive) {disablenpc "Disguise NPC"; end;}
announce "Набор участников завершен. Вход закрыт.",0;
set $devevent,0;
set $DisguiseRound, 0;
sleep 1000;
announce "На эвент пришло - "+getmapusers("5@tower")+" - игроков.",0;
if(getmapusers("5@tower") == 0)
{
disablenpc "Disguise NPC";
set $guessactive, 0;
end;
}
donpcevent "Disguise NPC::OnStart";
end;
OnInit:
disablenpc "Disguise NPC";
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;
}
5@tower mapflag nowarpto
5@tower mapflag noskill
5@tower mapflag nosave
5@tower mapflag nomemo
5@tower mapflag noteleport
//-----------------------------------------------------------------------------------
Автор: SergeiX: Дата: 04.17.2011
спс огромное а вот как изменить например на блуди бранчи а то у тя там эвент поинты стоят =)
Автор: kadze: Дата: 04.17.2011
set ##evp,##evp+1;
заменить на
getitem 12103,3;
Автор: SergeiX: Дата: 04.17.2011
и одну вещь не понял а где нпц стоит через которое туда попасть =)??
Автор: kadze: Дата: 04.17.2011
5@tower судя по этому в эндлесс тауер cтоит сам эвент нпц,а варпер у него имхо отдельно
Автор: Kill Spirit: Дата: 04.17.2011
У меня через эвент варпера.
Можно ещё так:
map,x,y,z[TAB]script[TAB]Вход[TAB]96,{
if(select("Войти:Выйти")==2){close;}
if($devevent==1){mes "эвента нет";close;}
warp "5@tower",82,83;
end;
}
Автор: SergeiX: Дата: 04.17.2011
Kill Spirit и как в твой скрипт вставить чтоб работал варп а то посмотрел удалил не работает
Автор: Kill Spirit: Дата: 04.17.2011
Цитата SergeiX;39053:
Kill Spirit и как в твой скрипт вставить чтоб работал варп а то посмотрел удалил не работает
Автор: SergeiX: Дата: 04.17.2011
щас пару сек =)
Автор: SergeiX: Дата: 04.17.2011
Огромное спс Kill а вопросик с какого нпц включать эвент?
Автор: Kill Spirit: Дата: 04.17.2011
map,x,y,z[TAB]script[TAB]Включить эвент[TAB]96,{
if(getgmlevel()<99){mes "вы не гм";close;}
if(select("Включить:Выйти")==2){close;}
donpcevent "guessAnnouncer::OnGMStart";
close;
}