//===== rAthena Script ======================================================= //= Мясорубка //===== By: ================================================================== //= Gerome (оригинал), адаптация и исправления //===== Current Version: ===================================================== //= 1.1 //===== Compatible With: ===================================================== //= eAthena, rAthena //===== Description: ========================================================= //= Игрок получает награду за убийство в PvP //============================================================================ - script Мясорубка -1,{ OnInit: /* ------------* | Конфигурация | /*-------------*/ setarray .unq_req_id[0], 671,670; // ID требуемых предметов setarray .unq_req_quantity[0],10,5; // Количество требуемых предметов setarray .unq_reward_id[0], 671; // ID наград setarray .unq_reward_quantity[0],20; // Количество наград set .unq_gm_lvl,60; // ГМ уровень, начиная с которого награды не выдаются setarray .unq_pvpmap$[0], "pvp_y_8-4","guild_vs3"; // PvP-карты setarray .unq_pvproom_location[0],"0,0","0,0"; // Локации для телепортации (x, y) // Проверка массивов if (getarraysize(.unq_req_id) != getarraysize(.unq_req_quantity)) { announce "Ошибка конфигурации: массивы .unq_req_id и .unq_req_quantity разной длины.", bc_all; end; } if (getarraysize(.unq_pvpmap$) != getarraysize(.unq_pvproom_location)) { announce "Ошибка конфигурации: массивы .unq_pvpmap$ и .unq_pvproom_location разной длины.", bc_all; end; } end; OnPCKillEvent: if (getgmlevel() >= .unq_gm_lvl) end; getmapxy .@map$, .@x, .@y, 0; for (set .@i, 0; .@i < getarraysize(.unq_pvpmap$); set .@i, .@i + 1) { if (.@map$ == .unq_pvpmap$[.@i]) { attachrid killerrid; for (set .@j, 0; .@j < getarraysize(.unq_reward_id); set .@j, .@j + 1) { getitem .unq_reward_id[.@j], .unq_reward_quantity[.@j]; } announce rid2name(killerrid) + " убил " + rid2name(killedrid) + " в PvP!", bc_map; } } end; } /*------------* | PvP Телепорт | /*------------*/ prontera,159,187,4 script PVP Warper#p1 108,{ set .npcname$,"[^990000Мясорубка Телепорт^000000]"; mes .npcname$; mes "Привет, " + strcharinfo(0) + "!"; mes "Я могу телепортировать тебя в PvP-зону."; mes "Для этого мне нужны следующие предметы:"; for (set .@i, 0; .@i < getarraysize(.unq_req_id); set .@i, .@i + 1) { mes .unq_req_quantity[.@i] + " ^FF0000" + getitemname(.unq_req_id[.@i]) + "^000000"; } next; switch(select("Ок:Отмена")) { case 1: // Проверка предметов for (set .@i, 0; .@i < getarraysize(.unq_req_id); set .@i, .@i + 1) { if (countitem(.unq_req_id[.@i]) < .unq_req_quantity[.@i]) { mes .npcname$; mes "У тебя недостаточно предметов!"; close; } } // Удаление предметов и выбор карты for (set .@i, 0; .@i < getarraysize(.unq_req_id); set .@i, .@i + 1) { delitem .unq_req_id[.@i], .unq_req_quantity[.@i]; } mes "Выбери PvP-зону:"; for (set .@i, 0; .@i < getarraysize(.unq_pvpmap$); set .@i, .@i + 1) { set .@menu$, .@menu$ + ":" + .unq_pvpmap$[.@i] + " (" + getmapusers(.unq_pvpmap$[.@i]) + ")"; } set .@choice, select(.@menu$) - 1; explode(.@location$, .unq_pvproom_location[.@choice], ","); warp .unq_pvpmap$[.@choice], atoi(.@location$[0]), atoi(.@location$[1]); close; case 2: mes .npcname$; mes "До встречи!"; close; } }