Автор: DiS[IP]: Дата: 05.03.2009
Предлагаю знающим и опытным людям заняться коллективным написанием скриптов/сорцев/модификаций...Плюсов в этом деле много..во-первых,это получение немалого опыта в этой сфере деятельности,во-вторых это конечно же общение с адекватными людьми,а не неудами..Сейчас везде все типично и стандартно..взять те же автоэвенты..хочется просто разбавить чем-то новым и уникальным эту ситуацию..Буду рад если найдутся люди,которые вместе со мной будут заниматься этим.
Автор: dimjke: Дата: 03.26.2010
set $mob,200;
monster .@town1$,0,0,"[Event] Poring",1002,$mob,"MonsterSpawn::OnAEDead";
OnAEDead:
bla-bla-bla
Автор: Sanasol: Дата: 03.26.2010
set $trava, $trava - 1;
set @z, @z + 1; // +1 моб
if(@z == 21) {goto prize;
}
Автор: nomn: Дата: 03.26.2010
[COLOR="Indigo"]Sanasol: внимательно читай вопрос. Ты дал ответ не в ту степь.
dimjke: можно вот так:
monster .@town1$,0,0,"[Event] Poring",1002,$mob,"MonsterSpawn::OnAEDead";
end;
OnAEDead:
set mob_Killer, mob_Killer + 1;
callfunc ("Mob_by_nomn",mob_Killer,strcharinfo(0));
end;
}
function script Mob_by_nomn {
set @mob_attak, getarg(0);
set @chname$, getarg(1);
if (@mob_attak > $top1mob)
{
set $top1mob, @mob_attak;
set $top1char$, @chname$;
}
end;
}
OnInit:
set $top1mob, 0;
set $top1char$, 0;
end;
Автор: Мяфк: Дата: 03.26.2010
В общем нужна функция реса, т.е. при использовании итема, человек ресался, в доках порылся нашёл 1 *recovery; Но она при конекте чара ресает. Я вот подумал так:
function script Book_res {
getmapxy(.@mapname$,.@mapx,.@mapy,0,""+strcharinfo(0)+"");
warp "Save",0,0;
....
return;
}
Автор: nomn: Дата: 03.26.2010
Мяфк: очень просто делается. Создаешь вещь, например "камень жизни", это лут. К примеру он имеет id 20001. Пишешь эвент:
OnPCDieEvent:
if(countitem(20001)<1) {
delitem 20001, 1;
atcommand "@alive "; }
end;
OnPCDieEvent:
getmapxy .@mapdie$,.@xdie,.@ydie,0;
if(countitem(20001)<1 && .@mapdie$ != "map") {
delitem 20001, 1;
atcommand "@alive "; }
end;
Автор: Rectedo: Дата: 03.26.2010
Эм... а как сделать ожидание? Допустим обращаюсь к нпс, он воспроизводит некоторый эффект и пока тот эффект не кончится, то дальше он ничего не говорит?
через OnClock: пойдет?
Автор: Мяфк: Дата: 03.26.2010
Да не ребят, я знал про команду аливе, и сделал бы через функцию, но не хочу через аткоманд, по этому прошу вашей помощи.
Автор: nomn: Дата: 03.26.2010
[COLOR="Indigo"]Ну и тут-то возникает вопрос: что тебе не нравится в аткоманд? оО
Т.е. тебя устраивает авто рес?
[/COLOR]
Автор: Мяфк: Дата: 03.26.2010
Да, во первых я хотел, что бы игрок сам себя мог ресать в нужной ситуации, во вторых будут забиватся логи.
Автор: nomn: Дата: 03.26.2010
[COLOR="Indigo"]
// Log GM Commands (set to minimum level of Logged Commands)
log_gm: X
alive: x-1,99
Автор: dimjke: Дата: 03.27.2010
Цитата Raff;21485:
[COLOR="Indigo"]Sanasol: внимательно читай вопрос. Ты дал ответ не в ту степь.
dimjke: можно вот так:
monster .@town1$,0,0,"[Event] Poring",1002,$mob,"MonsterSpawn::OnAEDead";
end;
OnAEDead:
set mob_Killer, mob_Killer + 1;
callfunc ("Mob_by_nomn",mob_Killer,strcharinfo(0));
end;
}
function script Mob_by_nomn {
set @mob_attak, getarg(0);
set @chname$, getarg(1);
if (@mob_attak > $top1mob)
{
set $top1mob, @mob_attak;
set $top1char$, @chname$;
}
end;
}
При этом, в начале скрипта впиши
OnInit:
set $top1mob, 0;
set $top1char$, 0;
end;
ну а дальше должно быть понятно, что делать, с победителем $top1char$
[/COLOR]
Автор: nomn: Дата: 03.28.2010
[COLOR="Indigo"]оО тебе полный вариант написать? я думал ты допишешь сам...
monster .@town1$,0,0,"[Event] Poring",1002,$mob,"MonsterSpawn::OnAEDead";
end;
OnAEDead:
set $mob, $mob - 1;
set mob_Killer, mob_Killer + 1;
callfunc ("Mob_by_nomn",mob_Killer,strcharinfo(0));
end;
OnLuckyWinnerLolik:
set @tmp_attach, $top1char$;
attachrid( @tmp_attach );
getitem ID_PRIZ, X;
//ID_PRIZ - айди приза. X - количество..
}
function script Mob_by_nomn {
set @mob_attak, getarg(0);
set @chname$, getarg(1);
if (@mob_attak > $top1mob)
{
set $top1mob, @mob_attak;
set $top1char$, @chname$;
}
if ($mob < 1) { donpcevent "npc_name::OnLuckyWinnerLolik"; }
end;
}
[/COLOR]
Автор: nomn: Дата: 03.28.2010
исправил ошибку, не ту переменную написал ^^
Автор: nomn: Дата: 04.09.2010
[COLOR="Indigo"]Команда @res
Позволяет реснуться, если у вас есть определенный "рес-итем".
На использование требуется 1 итем.[/COLOR]
atcomman.c
/*==========================================
* @alive by eA Dev. Team
* @res edit by [nomn]
*------------------------------------------*/
int atcommand_res(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
int item_id, item_position, type;
nullpo_retr(-1, sd);
// Вместо 19052 вводите нужный вам ID
item_id = 19052;
item_position = pc_search_inventory(sd, item_id);
if (item_position < 1)
{
clif_displaymessage(sd->fd, "Вам необходим 'Камень Воскрешения'.");
return -1;
}
if (!status_revive(&sd->bl, 100, 100))
{
clif_displaymessage(fd, "Ты все еще жив.");
return -1;
}
// Вместо 19052 вводите нужный вам ID
type = pc_search_inventory (sd, 19052);
pc_delitem(sd, type, 1, 0);
clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
clif_displaymessage(sd->fd, "Вы высвободили силу 'Камня Воскрешения'.");
return 0;
}
{ "res", 0,99, atcommand_res }, // [eA Dev. Team] upgraded by nomn
res: 0,99
Автор: Sanasol: Дата: 04.09.2010
Молодец! Респект))
Автор: nomn: Дата: 04.09.2010
=) спс