Назад

Битва

Автор: DarkWolf: Дата: 07.07.2009

хм помогите исправить ошибки, чето не выходит(

CODE
//---Объявление об эвенте.---//

- script announce_Bitva -1,{

//---Время, когда эвент будет начинаться.---//

OnClock2027:
OnClock2200:

//---Аннонс Эвента + проверки.---//

announce "Эвент 'Битва' начнётся через 3 минуты!",0;
killmonsterall "guild_vs5";
sleep 50000;
announce "В Пронтере появился НПС на евент 'Битва'!",0;
enablenpc "Битва";
sleep 10000;
announce "Эвент 'Битва' начнётся через 2 минуты!",0;
sleep 60000;
announce "Эвент 'Битва' начнётся через 1 минуту!",0;
sleep 30000;
mapannounce "guild_vs5","Через 30 секунд Начнется Битва!",0;
sleep 25000;
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,0x00FF00;
end;

OnTimer5000: // Каждые 5 секунд проверка на количество игроков + аннонс.
if ( getmapusers("guild_vs5") == 0 )

killmonsterall "guild_vs5"; // Если всех убили - эвент заканчивается.
announce "Эвент 'Битва' Отменяется,Из-за отсутствия игроков .",0;
stopnpctimer;
end;

if ( getmapusers("guild_vs5") > 1 )
{
mapannounce "guild_vs5",getmapusers("guild_vs5") +" игрока(ов) всё ещё находятся на Битве.",0,0x00FF00; // Если 2+ игроков на эвенте - аннонс.
initnpctimer;
end;
}
initnpctimer;
end;
{

//---Выкидывание игрока с Эвента после смерти и проверка на победителя.---//

OnPCDieEvent:
getmapxy .@maprfyl$,.@xrfyl,.@yrfyl,0;
if ( .@maprfyl$ == "guild_vs5") {
sleep2 1;
warp "prontera",156,223;
atcommand "@alive "+ strcharinfo(0);
dispbottom "К сожалению, Вы проиграли...";
}
sleep2 1000;
if ( .@maprfyl$ == "guild_vs5" && getmapusers("guild_vs5") == 1 ) {
killmonsterall "guild_vs5";
mapannounce "guild_vs5","Поздравляю, Вы выиграли, Разбейте сундук,и заберите приз.",0;
enablenpc "Сундук";
stopnpctimer;
end;
}
end;
}



//---Выигрыш.---//

guild_vs5,58,52,4 script Сундук 894,{
if (sex == 1) { // Мальчик.
announce "В 'Битве' победил "+ strcharinfo(0) +"! Поздравляем его!",0;
} else { // Остальные (девочка).
announce "В 'Битве' победила "+ strcharinfo(0) +"! Поздравляем её!",0;
}
getitem 30038,1; // Можно поставить свой приз.
warp "prontera",156,223;
sleep2 250;
disablenpc "Сундук";
end;
}



//---Регистрация на Эвент.---//

prontera,147,147,3 script Битва 736,{
mes "[^0000FFУбеги от монстра^000000]";
mes "Вы хотели бы Зарегистрироваться на Евент '^FF0000Битва^000000'?";
next;
switch(select("Да","Нет")) {
case 1:
sc_end SC_ALL;
nude;
percentheal 100,100;
warp "guild_vs5",0,0;
end;
break;

case 2:
mes "[^0000FFБитва^000000]";
mes "Хорошо, приходите, когда захотите.";
close;
break;
}
OnInit: // При запуске сервера убераем НПС.
disablenpc "Битва";
disablenpc "Сундук";
end;
}

Автор: Мяфк: Дата: 07.07.2009

Он не весь скрипт вылажил, там мапфлаги были, он мне кидал в аське, я ошибки вроде все исправил но ругалется постоянно на вот это

guild_vs5,58,52,4    script    Сундук    894,{
announce "В Битве победил "+strcharinfo(0)+" Поздравляем его!",0;
getitem 7227,1;
warp "prontera",156,223;
disablenpc "Сундук";
end;
}
}

Пытался убрать вторую скобку, вообще стал писать миссинг 1 райт циркулис)
Вот мой наполовину исправленный скрипт:
//---Объявление об эвенте.---//

-    script    announce_Bitva    -1,{

//---Время, когда эвент будет начинаться.---//

OnClock1806:
OnClock2200:

//---Аннонс Эвента + проверки.---//

announce "Эвент 'Битва' начнётся через 3 минуты!",0;
killmonsterall "guild_vs5";
sleep 50000;
announce "В Пронтере появился НПС на евент 'Битва'!",0;
enablenpc "Битва";
sleep 10000;
announce "Эвент 'Битва' начнётся через 2 минуты!",0;
sleep 60000;
announce "Эвент 'Битва' начнётся через 1 минуту!",0;
sleep 30000;
mapannounce "guild_vs5","Через 30 секунд Начнется Битва!",0;
sleep 25000;
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,0x00FF00;
end;

OnTimer5000: // Каждые 5 секунд проверка на количество игроков + аннонс.
if ( getmapusers("guild_vs5") == 0 )

killmonsterall "guild_vs5"; // Если всех убили - эвент заканчивается.
announce "Эвент 'Битва' Отменяется,Из-за отсутствия игроков .",0;
stopnpctimer;
end;

if ( getmapusers("guild_vs5") > 1 )
{
mapannounce "guild_vs5",getmapusers("guild_vs5") +" игрока(ов) всё ещё находятся на Битве.",0,0x00FF00; // Если 2+ игроков на эвенте - аннонс.
initnpctimer;
end;
}
initnpctimer;
end;
{

//---Выкидывание игрока с Эвента после смерти и проверка на победителя.---//

OnPCDieEvent:
getmapxy .@maprfyl$,.@xrfyl,.@yrfyl,0;
if ( .@maprfyl$ == "guild_vs5") {
sleep2 1;
warp "prontera",156,223;
atcommand "@alive "+ strcharinfo(0);
dispbottom "К сожалению, Вы проиграли...";
}
sleep2 1000;
if ( .@maprfyl$ == "guild_vs5" && getmapusers("guild_vs5") == 1 ) {
killmonsterall "guild_vs5";
mapannounce "guild_vs5","Поздравляю, Вы выиграли, Разбейте сундук,и заберите приз.",0;
enablenpc "Сундук";
stopnpctimer;
end;
}
end;
}

guild_vs5,58,52,4    script    Сундук    894,{
announce "В Битве победил "+strcharinfo(0)+" Поздравляем его!",0;
getitem 7227,1;
warp "prontera",156,223;
disablenpc "Сундук";
end;
}
}

//---Регистрация на Эвент.---//

prontera,147,147,3    script    Битва    736,{
mes "[^0000FFУбеги от монстра^000000]";
mes "Вы хотели бы Зарегистрироваться на Евент '^FF0000Битва^000000'?";
menu "Да",-,"Нет",qu;
mes "[^0000FFБитва^000000]";
mes "Удачи.";
percentheal 100,100;
warp "guild_vs5",0,0;
close;

OnInit:
disablenpc "Битва";
disablenpc "Сундук";
end;

qu:
close;
}

//---МапФлаги.---//

guild_vs5    mapflag    pvp    off
guild_vs5    mapflag    noteleport
guild_vs5    mapflag    nosave    SavePoint
guild_vs5    mapflag    nowarp
guild_vs5    mapflag    noreturn
guild_vs5    mapflag    nomemo
guild_vs5    mapflag    nowarpto
guild_vs5    mapflag    pvp    noparty
guild_vs5    mapflag    restricted    5

Автор: DiS[IP]: Дата: 07.07.2009

Хм,мне кажется проще вместо НПС 'Сундук' заспавнить моба и провести те же самые действия.

Автор: Мяфк: Дата: 07.07.2009

Ну человек стоит где-нибудь на краю карты, моб появляется, а он может нуб, и незнает, где искать моба оО)

Автор: DiS[IP]: Дата: 07.07.2009

Привел скрипт в рабочий вид,все работает,мап сервер не ругается,в игре все отлично работает...Ошибка,кстати,там очень смешная была.

CODE
//Объявление об начале эвента
- script announce_bitva -1,{
//Время,в которое проводится эвент
OnClock1806:
OnClock2200:
//Аннонс эвента и различные проверки
announce "Эвент 'Битва' начнётся через 3 минуты!",0;
sleep 50000;
announce "В Пронтере появился НПС на евент 'Битва'!",0;
enablenpc "Битва";
sleep 10000;
announce "Эвент 'Битва' начнётся через 2 минуты!",0;
sleep 60000;
announce "Эвент 'Битва' начнётся через 1 минуту!",0;
sleep 30000;
mapannounce "guild_vs5","Через 30 секунд Начнется Битва!",0;
sleep 25000;
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;
pvpon "guild_vs5";
announce "Эвент 'Битва' начался,пусть победит сильнейший!",0,0x00FF00;
end;
//Проверка каждые 5 секунд и аннонс
OnTimer5000:
if (getmapusers("guild_vs5")==0)
pvpoff "guild_vs5";
announce "Эвент 'Битва' отменяется,из-за отсутствия игроков.",0;
stopnpctimer;
end;
if (getmapusers("guild_vs5")>2){
mapannounce "guild_vs5",getmapusers("guild_vs5") +" игрока(ов) всё ещё находятся на Битве.",0,0x00FF00;
initnpctimer;
end;
}
//Автоварп в пронту и проверка на победителя
OnPCDieEvent:
getmapxy .@maprfyl$,.@xrfyl,.@yrfyl,0;
if (.@maprfyl$ == "guild_vs5"){
sleep2 1;
warp "prontera",156,223;
atcommand "@alive "+ strcharinfo(0);
dispbottom "К сожалению, Вы проиграли...";
}
sleep2 1000;
if (.@maprfyl$ == "guild_vs5" && getmapusers("guild_vs5")==1){
mapannounce "guild_vs5","Поздравляю,вы выиграли.Разбейте сундук,и заберите приз.",0;
enablenpc "Сундук";
stopnpctimer;
end;
}
end;
}
//НПС 'Cундк'
guild_vs5,58,52,4 script Сундук 1324,{
OnTouch:
announce "В Битве победил "+strcharinfo(0)+" Поздравляем его!",0;
getitem 7227,1;
warp "prontera",156,223;
disablenpc "Сундук";
end;
}
//НПС 'Битва'
prontera,150,190,5 script Битва 736,{
mes "[^0000FFБитва^000000]";
mes "Вы хотели бы Зарегистрироваться на Евент '^FF0000Битва^000000'?";
switch(select("Да","Нет")){

case 1:
mes "[^0000FFБитва^000000]";
mes "Удачи.";
percentheal 100,100;
warp "guild_vs5",0,0;
close;

case 2:
close;

OnInit:
disablenpc "Битва";
disablenpc "Сундук";
end;
}
}
// Мапфлаги
guild_vs5 mapflag noteleport
guild_vs5 mapflag nosave SavePoint
guild_vs5 mapflag nowarp
guild_vs5 mapflag noreturn
guild_vs5 mapflag nomemo
guild_vs5 mapflag nowarpto
guild_vs5 mapflag restricted 5

Автор: Мяфк: Дата: 07.07.2009

Дис скажи что за ошибка, а то теперь совесть мучает xD

Автор: Мяфк: Дата: 07.07.2009

ааа) Кажется понял... Онтоуч не хватало?

Автор: DiS[IP]: Дата: 07.07.2009

Ну нехватка OnTouch не такая уж страшная ошибка и дело не в ней..В куске где OnTimer5000: запускался он(таймер) 2 раза и также скобка не закрывалась.

Автор: DarkWolf: Дата: 07.07.2009

Цитата(DisIP @ 7.7.2009, 17:38)
Ну нехватка OnTouch не такая уж страшная ошибка и дело не в ней..В куске где OnTimer5000: запускался он(таймер) 2 раза и также скобка не закрывалась.


дис там крч нпс на евент в инвизе, а сундук нет, стоит на арене)поч?) посмотрел вроде все прально

Автор: DiS[IP]: Дата: 07.07.2009

В НПС'е,который регит на битву сотри:

disablenpc "Сундук";

И в НПС'е сундук перед } добавь:
OnInit:
disablenpc "Сундук";
end;

Автор: DarkWolf: Дата: 07.07.2009

//НПС 'Cундук'
guild_vs5,58,52,4    script    Сундук    1324,{
OnTouch:
    announce "В Битве победил "+strcharinfo(0)+" Поздравляем его!",0;
    getitem 7227,1;
    warp "prontera",156,223;
    end;
    OnInit:
    disablenpc "Сундук";
    end;
}
//НПС 'Битва'
prontera,150,190,5    script    Битва    736,{
    mes "[^0000FFБитва^000000]";
    mes "Вы хотели бы Зарегистрироваться на Евент '^FF0000Битва^000000'?";
    switch(select("Да","Нет")){

case 1:
    mes "[^0000FFБитва^000000]";
    mes "Удачи.";
    percentheal 100,100;
    warp "guild_vs5",0,0;
    close;

case 2:
    close;
    
OnInit:
disablenpc "Битва";
disablenpc "Сундук";
end;
}
}


хм всеровно стоит на месте без инвиза О_о

Автор: DiS[IP]: Дата: 07.07.2009

Хм,на моём эмуле все нормально..Ну попробуй на крайняй так:

//Аннонс эвента и различные проверки
announce "Эвент 'Битва' начнётся через 3 минуты!",0;
disablenpc "Сундук";

Автор: DarkWolf: Дата: 07.07.2009

всеровно :helpsmilie: , у друга на серваке тоже без инвиза(

Автор: DarkWolf: Дата: 07.07.2009

что делать то?( :idontno:

Автор: Мяфк: Дата: 07.07.2009

//Аннонс эвента и различные проверки
announce "Эвент 'Битва' начнётся через 3 минуты!",0;
sleep2 1;
disablenpc "Сундук";

Может так...

Автор: Мяфк: Дата: 07.07.2009

и ещё вариант вместо disablenpc
1) hideonnpc
2) atcommand @unloadnpc (или как то так)