Назад

Можно-ли обобщить както всех мвп?

Автор: MaxxWell: Дата: 02.06.2010

Чтобы добавить в лут тцг ко всем мвп, например составить лист чтото вроде "MVPlist.txt" с именами нужных мвп, чтобы ко всем им добовлялся в лут тцг, с одинаковым % выпадения?=)
И чтобы добавить в лут к мобам, тцг нужно только прописать его в моб дб?

Автор: MaxxWell: Дата: 02.06.2010

Эм, ты помоему немного нетак понял, или я недопонимаю, я спрашиваю можно чтобы составить список мвп, и в списке подписал 1 раз итем, и у всех он появляется в дропе?

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

Смотри.
Делаешь так

- script mpv_drop -1,{
OnNPCKillEvent:
if ( id убитого моба == MVP id ) { getitem }
}

т.е. проверку на айди моба. вписываешь првоерку на все айди МВП. а если в списке такого айди нет значит идем мимо. и это не МВП

ТОлько не найти мне тчото как узнаать айди того кого убил

Автор: MaxxWell: Дата: 02.06.2010

Теперь понял=) есле найдеш скажи, тоже полезно=)
а можно так поставить % выпадения?
и как прописать "id убитого моба"?=)

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

- script OnNPCKillEvent -1,{

OnNPCKillEvent:
if (killedrid==1002){dispbottom "Yo Yo"; getitem 7227,1;}
}


при убийстве поринга дает тцг.

Проверку сделай из массива или как-нибудь придумай. Процент т.е. шанс сделай Рандом rand(100) if (ramd>50) getitem....

Автор: nomn: Дата: 02.06.2010


- script MvP_dropper -1,{

OnNPCKillEvent:

if (killedrid == ID || killedrid == ID1 || killedrid == ID1 || killedrid == ID1 || killedrid == ID1 || killedrid == ID1 || killedrid == ID1 || killedrid == ID1)

{
set @chmvp, rand(1,100);
if (@chmvp != 27) { end; }

getitem 7227,1; end;
}

end;
}


[COLOR="Indigo"]Вместо Id записывай ID МВП, вместо 7227 - Id вещи, которую получат.

Стоит шанс 0.1 (один из ста).[/COLOR]

Автор: MaxxWell: Дата: 02.06.2010

ой прости, пропусил

Автор: nomn: Дата: 02.06.2010

А если внимательно прочитать мой пост?

Автор: MaxxWell: Дата: 02.06.2010

Рафф в твоем варианте, афина не ругается, но скрипт не работает (поставил 9% из 20 мобов не 1 тцг)

-	script	MvPdropper	-1,{

OnNPCKillEvent:

if (killedrid == 1147 || killedrid == 1289 || killedrid == 1511 || killedrid == 1150 || killedrid == 1708 || killedrid == 1689 || killedrid == 1388 || killedrid == 1096 || killedrid == 1120 || killedrid == 1582 || killedrid == 1650 || killedrid == 1630 || killedrid == 1581 || killedrid == 1038 || killedrid == 1087 || killedrid == 1190 || killedrid == 1157 || killedrid == 1492)

{
set @chmvp, rand(9,100);
if (@chmvp != 27) { end; }

getitem 7227,1; end;
}

end;
}

или же я ошибся где? (между killledrid == 1157 и || пробовал с табами и без)

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

Я давно интересовался этим нпц. Но я как-то реализовал. Сейчас скрипт не остался... Вот что мне отвечалии на форуме, ТЦГ падало со всех мобов.

Всё дело в ||.
Если сделать так:
Код
if (killedrid==1096) { getitem 7227,1; end; }

То всё работает.

Если добавить хотя бы одну ||, то ТЦГ даёться уже со всех мобов.

Вот был мой вариант скрипта, я хз как его переделал и он начал работать.
-    script    drop_mvp    -1,{
OnNPCKillEvent:
if (killedrid == 1511 || 1647 || 1785 || 1039 || 1874 || 1272 || 1719 || 1046 || 1389 || 1112 || 1115 || 1658 || 1957 || 1418 || 1871 || 1252 || 1768 || 1086 || 1885 || 1649 || 1651 || 1832 || 1734 || 1779 || 1646 || 1373 || 1147 || 1708 || 1059 || 1150 || 1956 || 1190 || 1038 || 1157 || 1159 || 1623 || 1492 || 1650 || 1251 || 1583 || 1312 || 1751 || 1685 || 1630 || 1648 || 1917) goto L_ok;
end;
L_ok:
if(rand(20) == 1) getitem 7227,1;
end;
}

Могу дать вариант. как реализовать это через src, если тебе надо.

Автор: MaxxWell: Дата: 02.06.2010

можно и через сорцы попробовать=)

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

script.c

BUILDIN_FUNC(getmonsterinfo)
{
struct mob_db *mob;
int mob_id;

mob_id = script_getnum(st,2);
if (!mobdb_checkid(mob_id)) {
ShowError("buildin_getmonsterinfo: Wrong Monster ID: %i\n", mob_id);
if ( !script_getnum(st,3) ) //requested a string
script_pushconststr(st,"null");
else
script_pushint(st,-1);
return -1;
}
mob = mob_db(mob_id);
switch ( script_getnum(st,3) ) {
case 0: script_pushstrcopy(st,mob->jname); break;
case 1: script_pushint(st,mob->lv); break;
case 2: script_pushint(st,mob->status.max_hp); break;
case 3: script_pushint(st,mob->base_exp); break;
case 4: script_pushint(st,mob->job_exp); break;
case 5: script_pushint(st,mob->status.rhw.atk); break;
case 6: script_pushint(st,mob->status.rhw.atk2); break;
case 7: script_pushint(st,mob->status.def); break;
case 8: script_pushint(st,mob->status.mdef); break;
case 9: script_pushint(st,mob->status.str); break;
case 10: script_pushint(st,mob->status.agi); break;
case 11: script_pushint(st,mob->status.vit); break;
case 12: script_pushint(st,mob->status.int_); break;
case 13: script_pushint(st,mob->status.dex); break;
case 14: script_pushint(st,mob->status.luk); break;
case 15: script_pushint(st,mob->status.rhw.range); break;
case 16: script_pushint(st,mob->range2); break;
case 17: script_pushint(st,mob->range3); break;
case 18: script_pushint(st,mob->status.size); break;
case 19: script_pushint(st,mob->status.race); break;
case 20: script_pushint(st,mob->status.def_ele); break;
case 21: script_pushint(st,mob->status.mode); break;
default: script_pushint(st,-1); //wrong Index
}
return 0;
}

Добавляешь
case 22: script_pushint(st,mob->mexp); break;

Получаешь:
BUILDIN_FUNC(getmonsterinfo)
{
struct mob_db *mob;
int mob_id;

mob_id = script_getnum(st,2);
if (!mobdb_checkid(mob_id)) {
ShowError("buildin_getmonsterinfo: Wrong Monster ID: %i\n", mob_id);
if ( !script_getnum(st,3) ) //requested a string
script_pushconststr(st,"null");
else
script_pushint(st,-1);
return -1;
}
mob = mob_db(mob_id);
switch ( script_getnum(st,3) ) {
case 0: script_pushstrcopy(st,mob->jname); break;
case 1: script_pushint(st,mob->lv); break;
case 2: script_pushint(st,mob->status.max_hp); break;
case 3: script_pushint(st,mob->base_exp); break;
case 4: script_pushint(st,mob->job_exp); break;
case 5: script_pushint(st,mob->status.rhw.atk); break;
case 6: script_pushint(st,mob->status.rhw.atk2); break;
case 7: script_pushint(st,mob->status.def); break;
case 8: script_pushint(st,mob->status.mdef); break;
case 9: script_pushint(st,mob->status.str); break;
case 10: script_pushint(st,mob->status.agi); break;
case 11: script_pushint(st,mob->status.vit); break;
case 12: script_pushint(st,mob->status.int_); break;
case 13: script_pushint(st,mob->status.dex); break;
case 14: script_pushint(st,mob->status.luk); break;
case 15: script_pushint(st,mob->status.rhw.range); break;
case 16: script_pushint(st,mob->range2); break;
case 17: script_pushint(st,mob->range3); break;
case 18: script_pushint(st,mob->status.size); break;
case 19: script_pushint(st,mob->status.race); break;
case 20: script_pushint(st,mob->status.def_ele); break;
case 21: script_pushint(st,mob->status.mode); break;
case 22: script_pushint(st,mob->mexp); break;
default: script_pushint(st,-1); //wrong Index
}
return 0;
}

После этого начальную проверку меняешь на:
if(getmonsterinfo(killedrid,22))

Любой моб, дающий мвп-экспу будет проходить эту проверку, а значит выполнять скрипт на дроп.
Ну и итог:
OnNPCKillEvent:
if((getmonsterinfo(killedrid,22)) && (rand(100) ==1)) getitem 7227,1;

(С) (AI)XuMuk

Автор: MaxxWell: Дата: 02.07.2010

опс сори, перечитал - понял=)