Назад

помогите дописать Resident Evil

Автор: Kill Spirit: Дата: 12.08.2010

Помогите переделать это:

-	script	announce_re	-1,{
OnREStart:
set $nozombies,0;
set $zombies,0;
set $@restarted,1;
set $@restarted1,0;
sleep 1000;
set $RE,1;
announce "Эвент - Resident Evil начнётся через 3 минуты",0;
sleep 20000;
//announce "Чтобы войти,подойдите к Эвент варперу",0;
//sleep 60000;
//announce "Вход закроется через 2 минуты.",0;
//sleep 60000;
//announce "Вход закроется через 1 минуту.",0;
//sleep 60000;
announce "Набор участников завершен. Вход закрыт.",0;
sleep 1000;
announce "На эвент пришло - "+getmapusers("rfylmap")+" - игроков.",0;
set $RE,0;
initnpctimer;
if(getmapusers("rfylmap") == 1 ){
announce "Эвент 'Resident Evil' закончился, ибо пришёл 1 игрок.",0;
mapwarp "rfylmap","prontera",155,182;
disablenpc "Приз";
stopnpctimer;
end;
}
else if(getmapusers("rfylmap")>1){
announce "Осталось "+$nozombies+" выживших",bc_all;
initnpctimer;
end;
}
initnpctimer;
OnTimer2000:
if ( $@restarted1 == 1 ) { end; }
if ( $@restarted == 1 ) {
dispbottom "Вам везет";
if ( getzombiestat(strcharinfo(0)) == 1 ){
if (@nused == 1){
set $nozombies,$nozombies-1;
set @nused,0;}
if (@zused == 0){
set $zombies,$zombies+1;
set @zused,1;}
dispbottom getzombiestat(strcharinfo(0));} else {
if (@nused == 0){
set $nozombies,$nozombies+1;
set @nused,1;
dispbottom getzombiestat(strcharinfo(0));}
}
}
else {}
stopnpctimer;
initnpctimer;
end;

OnTimer7000:
if($nozombies==1){announce "Эвент окончен, есть 1 выживший.",0; set $@restarted,0; set $@restarted1,1; enablenpc "Приз"; end;}
stopnpctimer;
initnpctimer;
}
rfylmap,52,32,3 script Приз 876,{
mes "Пожалуйста скажите мне свое имя";
next;
input .@name1$;
if(.@name1$ != strcharinfo(0)) {
mes "Не правильно введено имя.";
close;
}
mes "Поздравляю. Вы победили.";
close2;
if (sex == 1) {
announce "В 'Resident Evil' победил "+.@name1$+"! Поздравляем его!",0;
}
else {
announce "В 'Resident Evil' победила "+.@name1$+"! Поздравляем её!",0;
}
getitem 7465,1;
warp "prontera",156,223;
disablenpc "Приз";
end;
}

- script Dizabl -1,{
OnInit:
disablenpc "Приз";
end;
}

rfylmap mapflag pvp off
rfylmap mapflag noteleport
rfylmap mapflag nosave SavePoint
rfylmap mapflag nowarp
rfylmap mapflag noreturn
rfylmap mapflag nomemo
rfylmap mapflag nowarpto
rfylmap mapflag noskill
rfylmap mapflag pvp noparty
rfylmap mapflag restricted
rfylmap mapflag nobranch
rfylmap mapflag noequip 99
rfylmap mapflag residentevil


В мап сервере всё время ругается на то, что игрок не приаттачен к скрипту и НЕ делает при старте, не кем - зомби.

Автор: dimjke: Дата: 12.08.2010

http://www.eathena.ws/board/index.php?showtopic=230785 отсюда брал?

Автор: Tailss: Дата: 12.08.2010

Цитата dimjke;27136][url]http://www.eathena.ws/board/index.php?showtopic=230785[/url:
отсюда брал?


видимо так и есть:)

Автор: Kill Spirit: Дата: 12.09.2010

Ап =(

Автор: Кеник: Дата: 12.09.2010

Вопрос знатокам - где и как назначается параметр getzombiestat?

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

Тут:

BUILDIN_FUNC(getzombiestat)
{
TBL_PC *sd;
struct block_list* bl;
sd=map_nick2sd(script_getstr(st,2));
if (!sd) { //Avoid crashing....
script_pushconststr(st,"");
return 0;
}
script_pushint(st, sd->state.zombie);
return 0;

}
//REVIL mod end

Автор: Кеник: Дата: 12.09.2010

Ам... Видимо я просто не шарю... Хы..
getzombiestat("Имя чара") - сделает его зомбарем? Точнее поменяет статус на зомби, если игрок - человек и наоборот?

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

Если я не ошибаюсь, функция возвращает значение, т.е. зомби игрок или нет.

Автор: Кеник: Дата: 12.09.2010

В таком случае каждый игрок всегда либо зомби либо нет о_О не?

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

Да.

есть мапа на неё загоняются люди, некоторые из них становятся зомби, потом зомби доганят простых людей и ОДНИМ ТОЛЬКО ПРИКОСНОВЕНИЕМ делают человека зомби, и так пока не останитса один человек на мапе!

Автор: Кеник: Дата: 12.09.2010

Цитата Мяфк;27311:
Да.


Ам.. Не понял =\ Точнее... Видимо не так понял. Значит за становление зомби отвечает не эта команда?

Ну мол после начала эвента как первый становится зомби?

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

Как я думаю, тебе нужен регистратор в котором будет определятся, через рандом, будет игрок зомби или нет.
А вот и команды для становления зомби:

UILDIN_FUNC(infected)
{
TBL_PC *sd;
int new_zeny;
struct block_list* bl;
enum sc_type type;
sd=map_nick2sd(script_getstr(st,2));
if (!sd) { //Avoid crashing....
script_pushconststr(st,"");
return 0;
}
sd->state.zombie=1;
pc_disguise(sd, 1298);
sd->base_status.speed=175;
status_calc_bl(&sd->bl, SCB_SPEED);
new_zeny=sd->status.zeny+5000000;
sd->status.zeny=new_zeny;
clif_updatestatus(sd, SP_ZENY);
status_change_start(&sd->bl, (sc_type)SC_STRIPWEAPON, 10000, 100, 0, 0, 0, 3600000, 2);
status_change_start(&sd->bl, (sc_type)SC_STRIPSHIELD, 10000, 100, 0, 0, 0, 3600000, 2);
status_change_start(&sd->bl, (sc_type)SC_STRIPARMOR, 10000, 100, 0, 0, 0, 3600000, 2);
status_change_start(&sd->bl, (sc_type)SC_STRIPHELM, 10000, 100, 0, 0, 0, 3600000, 2);
return 0;

}


BUILDIN_FUNC(uninfected)
{
TBL_PC *sd;
enum sc_type type;
sd=map_nick2sd(script_getstr(st,2));
if (!sd) { //Avoid crashing....
script_pushconststr(st,"");
return 0;
}
sd->state.zombie=0;
pc_disguise(sd, 0);
sd->base_status.speed=150;
status_calc_bl(&sd->bl, SCB_SPEED);
return 0;
}

Автор: Кеник: Дата: 12.10.2010

Цитата Мяфк;27317:
Как я думаю, тебе нужен регистратор в котором будет определятся, через рандом, будет игрок зомби или нет.
А вот и команды для становления зомби:


Собснно, может я и спрашиваю банальность, но все же мне так привычнее =_=

Эти две команды. 1 назначает, вторая убирает. А команда getzombiestat просто показывает какая из этих двух назначена игроку, та?

Ну и еще вопрос про синтаксис - я не силен в сорсах =_= Как тут узнать, каким макаром команда используется?

set infected,strcharinfo(0); ?

infected strcharinfo(0),1; ?

Ну опять же имеется ввиду, что мы отобрали человека, который станет зомби..

Автор: Kill Spirit: Дата: 12.10.2010

Цитата Кеник;27348:
Собснно, может я и спрашиваю банальность, но все же мне так привычнее =_=

Эти две команды. 1 назначает, вторая убирает. А команда getzombiestat просто показывает какая из этих двух назначена игроку, та?

Ну и еще вопрос про синтаксис - я не силен в сорсах =_= Как тут узнать, каким макаром команда используется?

set infected,strcharinfo(0); ?

infected strcharinfo(0),1; ?

Ну опять же имеется ввиду, что мы отобрали человека, который станет зомби..


infected(strcharinfo(0));

Автор: Кеник: Дата: 12.10.2010

Цитата Kill Spirit;27354:
infected(strcharinfo(0));


Тогда другой вопрос:
ты знаешь это, однако в скрипте я команду нигде не вижу О_О Почему?)

Автор: Sanasol: Дата: 12.10.2010

http://rus-ea.ru/showthread.php?p=25256

Лень читать что вы нафлудили.

Что надо в скрипте:
1. Автостарт (есть в моем куске.)
2. Рандомизатор при старте кто будет кто нет зомби.
3. Мапфлаг вроде он там есть(в оригинальном источнике имеется ввиду).
4. Проверка на зомби и люде на карте. (есть в моем куске. требует доработки а-ля getzombiemap)

Основная часть в моем скрипте (ссылка выше) есть. когда-то для себя я это дописал, но к сожалению не осталось.

В идеале нужна еще одна команда скриптовая для большей уверенности работы эвента. Команда которая проверяет сколько зомби на карте.

Все остальное предусмотрено исходниками. никаких Онтачей и т.д. не надо.

Автор: Кеник: Дата: 12.10.2010

ну, там твой скрипт. И в нем нигде не назначаются зомби о_О

Автор: Sanasol: Дата: 12.10.2010

Пост обновил почитай