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

Abracadabra (Auto Event)


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

Вообщем есть эвент абры, вроде работает , но иногда выбивает ошибку, помогите..

 

Цитата

 

[Warning]: script:getelementofarray: index out of range (-1)
[Debug]: Data: variable name='.aid' index=0
[Debug]: Source (NPC): Abracadabra at prontera (136,204)

 

 

вот сам скрипт

prontera,136,204,5    script    Abracadabra    924,{
if(getgmlevel()<20){
if ( .event == 2 || .event == 0 ) end;
for(set .@i,0;.@i<getarraysize(.aid);set .@i, .@i+1){
if(getcharid(3)==.aid[.@i]){
end;
}
}
if ( .event == 1 ) {
set .aid[ getarraysize(.aid) ], getcharid(3);
mapannounce "prontera", strcharinfo(0) +" joined the game", 8;
warp "event",101,109;
end;
}
}

OnClock2025:
//OnMinute55:
if ( .event == 1 || .event == 2){end;}
announce "Event 'Abracadabra' Begins! NPC to the left of the fountain.", 8;
announce "You have 120 seconds to register",0;
set .event, 1;
deletearray .aid;
sleep 120000;
set .event, 2;
if ( getarraysize(.aid) < 2 ){
announce "Abracadabra Event canceled, because it did not have enough people", 8;
mapwarp "event","prontera",156,181;
deletearray .aid[.@i], 1;
set .event,0;
end;
}
announce "Registration is complete. The event started.", 8;
while ( getarraysize(.aid) > 1 ) {
if (!isloggedin(.aid[.@i])){
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
sleep 1000;
mapannounce "prontera", "next player "+ rid2name(.aid[.@i]), 8;
attachrid .aid[.@i];
switch ( rand(25,32) ) {
case 25:
specialeffect2 25;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
case 26:
specialeffect2 26;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
break;
case 27:
specialeffect2 27;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
break;
case 28:
specialeffect2 28;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
break;
case 29:
specialeffect2 29;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
break;
case 30:
specialeffect2 30;
sc_start SC_INCMATKRATE, 30000, -50;
break;
case 31:
specialeffect2 31;
if ( hp - 100000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 100000;
// .... all positive buff
break;
case 32:
specialeffect2 32;
if ( hp - 10000000 < 0 ) {
unitkill getcharid(3);
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}
else
set hp, hp - 10000000;
break;
}
set .@i, .@i +1 ;
if ( .@i == getarraysize(.aid) ) {
set .@i, 0;
set .@round, .@round +1 ;
mapannounce "prontera", "Round ยน "+ .@round, 8;
}
}
if ( .aid == 0 )
announce "No winners", 8;
else {
announce "Event won "+ rid2name(.aid) , 8;
attachrid .aid;
getitem 25112, 1;
atcommand "@raisemap";
mapwarp "event","prontera",156,181;
}
set .event, 0;
end;
}

event    mapflag    nowarp
event    mapflag    nowarpto
event    mapflag    noteleport
event    mapflag    noreturn
event    mapflag    nosave
event    mapflag    nomemo
event    mapflag    nobranch
event    mapflag    noloot
event    mapflag    noskill
event    mapflag    nopenalty
event    mapflag    nogo

 

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

у меня не геркулес, и у меня по прежнему выбивало ошибку, но я переписал его и теперь всё норм.

кому нужен вот мой новый вариант. Только замените локацию Event и приз на свой.

Вот тут скрипт!

 

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

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