Перейти к содержанию

Прошу помощи знатоков Скриптинга


Рекомендуемые сообщения

Дело в том что вместо авто старта я хочу что бы была регистрация людей (в любое время)

Тоесть стоит нпц в пронте ты регистрируешь пати например ( с 6-10 человек) Но так и не понял как такое сделать,

Знатоки помогите с реализацией)

Пытался брать за основу Ендлесс тавер но не складывается, Кому не влом помогите пожалуйста!)


//HRAM STIHII//
prontera,166,158,3 script Temple of Elemental 413,{
set .@gm_level, 99; // GM level required to start/stop the event

mes "[Temple of Elemental Guardian]";
mes "This is the entrance to ^FF0000Temple of Elemental^000000.";
mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
next;
switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
case 1:
if (.start != 1) { // registration period
mes "[Temple of Elemental Guardian]";
mes "Temple of Elemental is now closed.";
mes "It will open at these times:";
mes "12:00 , 18:00"; // display your times here
close;
}
if (BaseLevel < 70 || Zeny < 20000) { // requirements
mes "[Temple of Elemental Guardian]";
mes "You do not meet the requirements to enter Temple of Elemental.";
mes " ";
mes "Requirements:";
mes " - Base Level 70";
mes " - Registration feel 20,000z";
close;
}
Zeny -= 20000;
announce strcharinfo(0)+" has entered Temple of Elemental.", bc_npc;
percentheal 100,100;
warp "5@new",155,64;
close;
case 2:
mes "[Temple of Elemental Guardian]";
mes "Inside, you will encounter 3 waves of monsters. The monsters will grow stronger with each wave.";
next;
mes "Temple of Elemental Guardian]";
mes "If you defeat all the enemies, you can Change your Scroll on various useful items";
close;
case 3:
mes "[Temple of Elemental Guardian]";
switch (.start) { // event states
case 0: mes "Temple of Elemental has not yet started."; break;
case 1: mes "Temple of Elemental is currently accepting participants."; break;
case 2: mes "Temple of Elemental Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
}
next;
switch(select("Start event.:Stop event.:Cancel.")) {
case 1:
mes "[Temple of Elemental Guardian]";
if (.start)
mes "Temple of Elemental has already started.";
else {
mes "Starting Devil Square...";
donpcevent strnpcinfo(0)+"::onstartEvent";
}
close;
case 2:
mes "[Temple of Elemental Guardian]";
if (!.start)
mes "Temple of Elemental has not yet started.";
else {
mes "Stopping Temple of Elemental...";
donpcevent strnpcinfo(0)+"::onstopEvent";
}
close;
case 3:
break;
}
break;
case 4:
break;
}
mes "[Temple of Elemental Guardian]";
mes "Farewell.";
close;

onstartEvent:
OnClock1200:
OnClock1800:
.start = 1;
disablenpc "Temple of Elemental#2";
mapannounce "5@new","The Temple of Elemental is now closed.", bc_map;
getmapxy .@map$, .@x, .@y, 1;
mapwarp "5@new", .@map$, .@x, .@y;
killmonsterall "1@new";
announce "Temple of Elemental is OPEN. The event will begin in 4 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 3 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 2 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 1 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental has Started!", bc_all;
if ( !getmapusers("5@new") )
goto onstopEvent;
.start = 2;
.round = 1;
.mob = 1;
areamonster "5@new",147,92,142,91,"Cursed Octopus",3202,1,strnpcinfo(0)+"::OnDevilDead";
end;

OnDevilDead:
.mob--;
if ( .mob == 1 || .mob == 1 )
announce "Temple of Elemental : "+ .mob +" monsters remaining in round 1.", bc_map;
else if ( .mob <= 0 ) {
mapannounce "5@new","Uknown Voice: Regular brave, but you managed to kill my servant!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: ahahahaha I'll play with you!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: Behold the power of the Demon's!", bc_map;
goto OnDevil2;
}
end;

OnDevil2:
.round = 2;
.mob = 20;
areamonster "5@new",148,93,148,100,"Earth Castle Guardian",1022,5,strnpcinfo(0)+"::OnDevilDead2";
areamonster "5@new",148,90,148,100,"Earth Castle Guardian",1022,5,strnpcinfo(0)+"::OnDevilDead2";
areamonster "5@new",163,93,163,102,"Earth Castle Guardian",1022,5,strnpcinfo(0)+"::OnDevilDead2";
areamonster "5@new",163,90,163,102,"Earth Castle Guardian",1022,5,strnpcinfo(0)+"::OnDevilDead2";
end;

OnDevilDead2:
.mob--;
if ( .mob == 1 || .mob == 1 )
announce "Temple of Elemental : "+ .mob +" monsters remaining in round 2.", bc_map;
else if ( .mob <= 0 ) {
mapannounce "5@new","Uknown Voice: It was fun is not it ?!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: ahahahaha But the fun is just beginning!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: I summon you! Underground General!", bc_map;
goto OnDevil3;
}
end;

OnDevil3:
.round = 3;
.mob = 1;
areamonster "5@new",156,98,156,102,"Werewolf King ",3208,1,strnpcinfo(0)+"::OnDevilDead3";
end;

OnDevilDead3:
.mob--;
if ( .mob == 1 || .mob == 1 )
announce "Temple of Elemental : "+ .mob +" monsters remaining in the final round.", bc_map;
else if ( .mob <= 0 ) {
mapannounce "5@new","Uknown Voice: I'm tired of playing with you!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: Now it's over!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: Arise from water! And Defend Your Master's!", bc_map;
goto OnDevil4;
}
end;

OnDevil4:
.round = 4;
.mob = 20;
monster "5@new",149,108,"Water Castle Guardian",2047,5,strnpcinfo(0)+"::OnDevilDead4";
monster "5@new",153,108,"Water Castle Guardian",2047,5,strnpcinfo(0)+"::OnDevilDead4";
monster "5@new",157,108,"Water Castle Guardian",2047,5,strnpcinfo(0)+"::OnDevilDead4";
monster "5@new",161,108,"Water Castle Guardian",2047,5,strnpcinfo(0)+"::OnDevilDead4";
end;

OnDevilDead4:
.mob--;
if ( .mob == 1 || .mob == 1 )
announce "Temple of Elemental : "+ .mob +" monsters remaining in round 2.", bc_map;
else if ( .mob <= 0 ) {
mapannounce "5@new","Uknown Voice: Your courage amazes!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: We have not seen such strong and courageous for 100 generations", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: I'm sorry but we can't leave you alive!", bc_map;
goto OnDevil5;
}
end;

OnDevil5:
.round = 5;
.mob = 1;
areamonster "5@new",156,98,156,102,"Evil Sea Snake",3203,1,strnpcinfo(0)+"::OnDevilDead5";
end;

OnDevilDead5:
.mob--;
if ( .mob == 1 || .mob == 1 )
announce "Temple of Elemental : "+ .mob +" monsters remaining in the final round.", bc_map;
else if ( .mob <= 0 ) {
mapannounce "5@new","Uknown Voice: IT'S IMPOSSIBLE!!!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: Now it's over!", bc_map;
sleep 5000;
mapannounce "5@new","Uknown Voice: We Gemini dragon's! Castle owners! WE OVERWHELM YOU!", bc_map;
goto OnDevil6;
}
end;

OnDevil6:
.round = 6;
.mob = 2;
areamonster "5@new",152,131,0,0,"Sky Gemini Dragon",3204,1,strnpcinfo(0)+"::OnDevilDead5";
areamonster "5@new",160,131,0,0,"Earth Gemini Dragon",3205,1,strnpcinfo(0)+"::OnDevilDead5";
end;

OnTreasureDead:
.mob--;
if ( .mob <= 0 )
goto onstopEvent;
end;

onstopEvent:
enablenpc "Temple of Elemental#2";
.start = .round = .mob = 0;
end;
}

5@new,161,150,3 script Temple of Elemental#2 405,{
mes "[Well Done]";
mes "You could come here.";
mes "You deserve an award!";
mes "If you have a Scroll Give it to me and I will give you your reward!";
mes "If no, then take the prize as the winner of the temple";
switch(select("I have Scroll.:No i Haven't Scroll.:")){
Case1:
mes "Wait pls i want to read Your Scroll";
if (countitem(31111) < 1) {
mes " You decided to lie to me? This scroll fake!!";
mes "GET OUT!";
warp "SavePoint",0,0;
close;}
delitem 31111,1;
getitem 31116,1;
getitem 31100,1;
set zeny,Zeny +500000;
next;
warp "SavePoint",0,0;
close;
}
Case2:
mes "You Haven't A scroll Hmm";
mes "But You're Here! Okey This is for You!";
mes "Thank you! Good Bye";
getitem 969,3;
getitem 616,3;
next;
warp "SavePoint",0,0;
end;
}

Изменено пользователем Fizik
Ссылка на комментарий
Поделиться на другие сайты

Спойлер из под кода вынеси

Создание нпц

onstartEvent:
OnClock1200:
OnClock1800:
.start = 1;
disablenpc "Temple of Elemental#2";
mapannounce "5@new","The Temple of Elemental is now closed.", bc_map;
getmapxy .@map$, .@x, .@y, 1;
mapwarp "5@new", .@map$, .@x, .@y;
killmonsterall "1@new";
announce "Temple of Elemental is OPEN. The event will begin in 4 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 3 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 2 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental is OPEN. The event will begin in 1 minutes.", bc_all;
sleep 60000;
announce "Temple of Elemental has Started!", bc_all;
if ( !getmapusers("5@new") )
goto onstopEvent;
.start = 2;
.round = 1;
.mob = 1;
areamonster "5@new",147,92,142,91,"Cursed Octopus",3202,1,strnpcinfo(0)+"::OnDevilDead";
end;

в


oninit:
onrestartEvent:
.start = 1;
disablenpc "Temple of Elemental#2";
mapannounce "5@new","The Temple of Elemental is now closed.", bc_map;
getmapxy .@map$, .@x, .@y, 1;
mapwarp "5@new", .@map$, .@x, .@y;
killmonsterall "1@new";
end;

onstartEvent:
.start = 2;
.round = 1;
.mob = 1;
areamonster "5@new",147,92,142,91,"Cursed Octopus",3202,1,strnpcinfo(0)+"::OnDevilDead";
end;

Телепортация


announce strcharinfo(0)+" has entered Temple of Elemental.", bc_npc;
percentheal 100,100;
warp "5@new",155,64;
close;

в


recovery 1,getcharid(1);
warpparty "5@new",155,64,getcharid(1);
donpcevent strnpcinfo(0)+"::onstartEvent";
close;

Надо еще добавить таймер -

если .start = 2 или .start = 0
то (есть ли живые на карте)
-(да - перезапустить таймер)
-(нет - убить мобов и (donpcevent "Temple of Elemental::onrestartEvent")

Пожалуйста, попробуй разобраться в коде - это же ТЕБЕ надо. Это не так уж и трудно

Изменено пользователем botka4aet
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Так дело в том что я знаю, я просто несмог переделать, мне нужно что бы не при тайме запускался а запускался регистрацией пати типо как в ендлесс тавере, что бы в будущем ето уметь нужно один раз увидеть как ето делается :) и так всё чему я тут научился я использую для помощи другим ето видно ведь :) поэтому я и прошу помощи сдесь если я буду уметь то смооу и других учить :)

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Но всё же спасибо :) правда непонял про тайм но постараюсь раздуплить :) Но всё же)) Как я понял отдел варп что ты дал не делает проверку) Он тпшит всю пати, А мне нужно что бы он тпшил пати в котором Минимум 5 человек)

Изменено пользователем Fizik
Ссылка на комментарий
Поделиться на другие сайты

a42d79adb57d.png ©

Я с телефона писал) Там телефонной версии не нашёл правки)))

Очень плохо искал или даже не пытался, все там есть

Пс, правлю с мобильника. Кроме того тебе еще раз повторить, отредактируй первое сообщение и вытащи спойлер из под тега код.

Изменено пользователем Elmiria
Ссылка на комментарий
Поделиться на другие сайты

a42d79adb57d.png ©

Я с телефона писал) Там телефонной версии не нашёл правки)))

Очень плохо искал или даже не пытался, все там есть

Пс, правлю с мобильника. Кроме того тебе еще раз повторить, отредактируй первое сообщение и вытащи спойлер из под тега код.

Приведи пример как правильно в споилер загонять тагда

а рега не работает ( точнее работает но не так как нужно)

Ссылка на комментарий
Поделиться на другие сайты

А мне нужно что бы он тпшил пати в котором Минимум 5 человек)

Вот скрипт на проверку численности(он еще и профы чекает)

https://rathena.org/board/topic/91826-special-party-warper/?p=241416

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Я взял один кусок из всех что ты написал) остальное немногу по другому замутил) Всё работает но осталась проблема) Как сделать так что бы если одни уже зашли, то другая пати должна ждать пока зашедшая пройдёт или выйдет из инстанса) потому-что иначе можно мутить следующее

сильные заходят за 5 минут всё проходят, появляется НПЦ и заходят нубаси и сдают свои свитки нпц.) Вот что бы этому помешать нужна проверка) но как правильно её вбить?)

Ссылка на комментарий
Поделиться на другие сайты

Я взял один кусок из всех что ты написал) остальное немногу по другому замутил) Всё работает но осталась проблема) Как сделать так что бы если одни уже зашли, то другая пати должна ждать пока зашедшая пройдёт или выйдет из инстанса) потому-что иначе можно мутить следующее

сильные заходят за 5 минут всё проходят, появляется НПЦ и заходят нубаси и сдают свои свитки нпц.) Вот что бы этому помешать нужна проверка) но как правильно её вбить?)

Проверка уже есть

if (.start != 1) { // registration period

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Я взял один кусок из всех что ты написал) остальное немногу по другому замутил) Всё работает но осталась проблема) Как сделать так что бы если одни уже зашли, то другая пати должна ждать пока зашедшая пройдёт или выйдет из инстанса) потому-что иначе можно мутить следующее

сильные заходят за 5 минут всё проходят, появляется НПЦ и заходят нубаси и сдают свои свитки нпц.) Вот что бы этому помешать нужна проверка) но как правильно её вбить?)

Проверка уже есть

if (.start != 1) { // registration period

Пля внатуре)) Извиняюсь чёт я туплю)

Всё)) Теперь начинаю переписывать Endless Cellar под новые Ратена) А то тот что на форуме рА не работает на новых ревизиях)))

Спасибо огромное всем кто последнее время сильно мне помогал)) Приобретённые навыки и знания позволяют теперь многие затеи реализовать))

Изменено пользователем Fizik
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика