Hmuryi Опубликовано 8 августа, 2011 Жалоба Поделиться Опубликовано 8 августа, 2011 Доброго времени суток. Хотел бы попросить выложить скрипт или наброски для эвента, о котором я стал всё чаще слышать. Примерного названия не знаю. Суть же заключается в том, чтобы зайти на арену, победить в неравном поединке с Emperium и сидеть на арене, получая через определённый промежуток времени призы. В это время естественно нужно защищать свой Emperium, ведь если он падёт от рук другого игрока, Вы вылетаете с арены и призов не получаете.Сразу уточню, не стоит говорить мне про google.ru, либо eathena.ws - искал.И ещё, не нужно говорить мол "Пиши сам!" либо "Ты что, идиот!? Это авторский скрипт, который стоит десятки миллиардов долларов!!!". Я уверен что скрипт находится в общем пользовании, т.к. мои знакомые видели его и на средних, и на совсем дохлых нубо - серверах.Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Популярный пост Agasper Опубликовано 8 августа, 2011 Популярный пост Жалоба Поделиться Опубликовано 8 августа, 2011 Ну вот мелкий набросок,скрипт думаю допилишь дальше сам 46 Ссылка на комментарий Поделиться на другие сайты Поделиться
Hmuryi Опубликовано 9 августа, 2011 Автор Жалоба Поделиться Опубликовано 9 августа, 2011 Появилось пару вопросов:1. Как сделать, чтобы Emperium нельзя было бить тому персонажу, который его захватил?Я конечно порылся и в agit_template.txt и на eathena.ws , но результата не дало.2. Как реализовать, чтобы атаку нельзя было производить с помощью скиллов? mapflag noskillНе помогло. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Agasper Опубликовано 9 августа, 2011 Жалоба Поделиться Опубликовано 9 августа, 2011 Запрет на атаку делается в eA/src/map/battle.c в этой функции(battle_check_target),а именно в этом куске:switch( t_bl->type ){ //Checks on target masterЧуть ниже есть такая строчка:case BL_MOB:После этого кейса можешь добавить свою проверку на наличие переменной/статуса/стейта,смотря что вешается у тебя при убийстве импа.А вообще,чтобы имп работал идеально(как на гв) нужно сделать такие моменты:1) Локация должна быть замком(нужно поставить мапфлаг "gvg_castle" и занести локацию в eA/db/castle_db.txt).2) Должно быть включено WoE или должен стоять мапфлаг "gvg".3) В battle.c нужнно найти это:if (!(agit_flag && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id)И заменить на это:if (!((agit_flag || map[m].flag.gvg) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id)Там таких куска 2 => нужно 2 раза заменить. 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
С роду 5 лет. Опубликовано 9 августа, 2011 Жалоба Поделиться Опубликовано 9 августа, 2011 В батле.снету такой строчки.. if( !((agit_flag || agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id )такая есть) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Agasper Опубликовано 9 августа, 2011 Жалоба Поделиться Опубликовано 9 августа, 2011 Разницы никакой нету,в моем посте просто вариант старый,в котором еще WoE2 не было.Вот для новых:Эту строчку:if( !((agit_flag || agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id )Заменяем на эту:if( !((agit_flag || agit2_flag || map[m].flag.gvg ) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id ) 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Hmuryi Опубликовано 9 августа, 2011 Автор Жалоба Поделиться Опубликовано 9 августа, 2011 Спасибо, конечно за проведённую работу, но у меня почему-то всё равно Emperium можно бить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Agasper Опубликовано 9 августа, 2011 Жалоба Поделиться Опубликовано 9 августа, 2011 Ну так проверка никакая не добавлялась в battle.c.А вообще нужно еще в скрипт добавить 'setcastledata'.Имп арена должна быть мини-вое эвентом => в скрипте должно быть несколько кусков из agit_template.txtЕсли говорить о банальной реализации с проверкой на переменную то это будет так:При разбитии импа вешаем на чара переменную:set myemp,1;При смерте(OnPCDieEvent) или при при выходе из игры(OnPCLogoutEvent) обнуляем переменную:set myemp,0;Ну а в battle_check_target в BL_MOB(Checks on target master) после такой строчки:struct mob_data *md = BL_CAST(BL_MOB, t_bl);Вставляем это:struct map_session_data *sd;sd = BL_CAST(BL_PC, s_bl);Ну и добавляем проверку:if(t_bl->type==BL_MOB && ((TBL_MOB*)target)->class_== ID монстра && pc_readregistry((TBL_PC*)s_bl,"myemp",3)==1) return 0;Теперь если на чаре будет висеть переменная myemp со значением 1,то он не сможет бить моба с указанным ID.----P.S:Вот посмотри еще такой скриптик:guild_vs4.gat,0,0,0 script Agit_AW01 -1,{OnInit:callfunc "F_BtStart","guild_vs4","AW01",50,50;end;OnImpBreak:callfunc "F_BtBreak","guild_vs4","AW01";end;}prontera,97,172,4 script Arena War::GvGArena 722,{mes "[^770000Arena War^000000]";mes "Арена принадлежит гильдии: ^FF0000"+$GvG_Owner$+"^000000";close2;end;OnGvGRecive:FlagEmblem GetCastleData("guild_vs4",1);end;}function script F_BtStart {MapRespawnGuildID getarg(0),GetCastleData(getarg(0),1),2;killmonsterall getarg(0);if (!mobcount(getarg(0),"Agit_"+getarg(1)+"::OnImpBreak")) {monster getarg(0),getarg(2),getarg(3),"Emperium",1288,1,"Agit_"+getarg(1)+"::OnImpBreak";}}// Function for OnAgitBreak ======================================function script F_BtBreak {killmonsterall getarg(0);set .@GID,getcharid(2);if (.@GID <= 0) {set $GvG_Owner$, "None";set $GvG_Owner_id, 0;donpcevent "GvGArena::OnGvGRecive";callfunc "F_BtStart","guild_vs4","AW01",50,50;return 0;}// Lower castle Economyset .@Economy,GetCastleData("guild_vs4",2) - 5;if (.@Economy < 0) set .@Economy, 0;SetCastleData "guild_vs4", 2, .@Economy;// Lower Castle Defenceset .@Defence,GetCastleData("guild_vs4",3) - 5;if (.@Defence < 0) set .@Defence, 0;SetCastleData "guild_vs4", 3, .@Defence;// Set new ownerSetCastleData "guild_vs4",1, .@GID;// Clear castle's data.for( set .@i, 4; .@i <= 9; set .@i, .@i+1 )SetCastleData "guild_vs4", .@i, 0;GetCastleData "guild_vs4",0,"::OnGvGRecive";set $GvG_Owner$, strcharinfo(2);set $GvG_Owner_id, @GID;donpcevent "GvGArena::OnGvGRecive";sleep getbattleflag("gvg_eliminate_time");MapAnnounce "guild_vs4","Гильдия ["+$GvG_Owner$+"] сломали империум.",17;callfunc "F_BtStart","guild_vs4","AW01",50,50;sleep2 500;MapAnnounce "guild_vs4","Арену взял [" + strcharinfo(0) + "].",17;announce "Арену [Arena War] взяла гильдия ["+$GvG_Owner$+"].",0;end;} 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Gumko Опубликовано 23 августа, 2011 Жалоба Поделиться Опубликовано 23 августа, 2011 Как сделать так чтоб на импе писалось название гильдии а не персонажа и чтоб приз давала на гильдию только тем кто на арене? и еще как сделать чтоб после захвата 1 гильдией остольные кто не в гильдии вылетали с рума Ссылка на комментарий Поделиться на другие сайты Поделиться
PhoeniX Опубликовано 23 августа, 2011 Жалоба Поделиться Опубликовано 23 августа, 2011 (изменено) Меняем в коде Agasrepamonster getarg(0),getarg(2),getarg(3),"Emperium",1288,1,"Agit_"+getarg(1)+"::OnImpBreak";наmonster getarg(0),getarg(2),getarg(3),.guild$,1288,1,"Agit_"+getarg(1)+"::OnImpBreak";сюда добавляем строчкиOnImpBreak:set .guild$,strcharinfo(2);set .charguildi$, getcharid(2);maprespawnguildid "guild_vs4",.charguildi$,2;callfunc "F_BtBreak","guild_vs4","AW01";end;} Изменено 23 августа, 2011 пользователем PhoeniX 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 5 октября, 2011 Жалоба Поделиться Опубликовано 5 октября, 2011 (изменено) какую команду прописать что-бы всех играков выкидовало в пронту кроме согильдийцев!и 2 вопрос! в етом скрипте не даёт приз за удержание! нужно что-бы желательно всей гильдии давало приз через 20 мин примерно!- script emp_arena -1,{OnInit:monster "Карта",0,0,"Империум",1288,1,"emp_arena::OnEMP";end;OnEMP:monster "Карта",0,0,strcharinfo(0),1288,1,"emp_arena::OnEMP";announce "Игрок "+strcharinfo(0)+" захватил Империум Арену!",0;set $@emp_owner$,strcharinfo(0);initnpctimer;end;OnTimer5000:if($@emp_owner$=="none"){ killmonsterall "Карта"; monster "Карта",0,0,"Империум",1288,1,"emp_arena::OnEMP"; end; }if(!getcharid(0,$@emp_owner$)){ stopnpctimer; set $@emp_owner$,"none"; end; } else { attachrid(getcharid(3,$@emp_owner$)); getmapxy .@empmap$,.@x,.@y,0; if(.@empmap$ == "Карта"){ getitem 7227,1; initnpctimer; end; } }end;OnPCLogoutEvent:if(strcharinfo(0)==$@emp_owner$){ killmonsterall "Карта"; monster "Карта",0,0,"Империум",1288,1,"emp_arena::OnEMP"; stopnpctimer; set $@emp_owner$,"none"; }end;} Изменено 5 октября, 2011 пользователем nejiko Ссылка на комментарий Поделиться на другие сайты Поделиться
Hmuryi Опубликовано 6 октября, 2011 Автор Жалоба Поделиться Опубликовано 6 октября, 2011 (изменено) Вообще-то даёт приз :if(.@empmap$ == "Карта"){ getitem 7227,1; initnpctimer; end; } Просто если немного подумать, то вместо слова Карта нужно поставить название арены ( Например, guild_vs2 ) и приз будет даваться. Изменено 6 октября, 2011 пользователем Hmuryi 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 6 октября, 2011 Жалоба Поделиться Опубликовано 6 октября, 2011 я не настолько тупой я дал пример скрипта он у меня написан нормально так вот не даёт приз то??? Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 октября, 2011 Жалоба Поделиться Опубликовано 16 октября, 2011 киньте плиз проверку на игрока в гильдии! Ссылка на комментарий Поделиться на другие сайты Поделиться
Fox RM Опубликовано 16 октября, 2011 Жалоба Поделиться Опубликовано 16 октября, 2011 set @lol,getcharid(2); if(@lol==0) { mes "Простите, но вы не состоите в гильдии!";close; } 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 октября, 2011 Жалоба Поделиться Опубликовано 16 октября, 2011 спасибо огромное )) спасибку тыкнул) Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 октября, 2011 Жалоба Поделиться Опубликовано 16 октября, 2011 можно ещё вопрос может не по теме но всё же!Как включить статусы!Стан Курс и Слип а то на мобов стан действует а на игроков неть(( Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 16 октября, 2011 Жалоба Поделиться Опубликовано 16 октября, 2011 Может быть у вас максимальные статы слишком большие и следовательно у игроков резист? Если да - правьте формулы наложения статусов. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Hmuryi Опубликовано 16 октября, 2011 Автор Жалоба Поделиться Опубликовано 16 октября, 2011 Т.к. сервер у тебя с уровнями 1000, то естественно на все статусы, типа Sleep, Stun и т.д. действует резист.Правь формулы.src/map/status.cНачиная с :case SC_STUN: case SC_POISON: case SC_DPOISON: case SC_SILENCE: case SC_BLEEDING: sc_def = 3 +status->vit; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 18 октября, 2011 Жалоба Поделиться Опубликовано 18 октября, 2011 а что менять то? Ссылка на комментарий Поделиться на другие сайты Поделиться
- Hmuryi - Опубликовано 18 октября, 2011 Жалоба Поделиться Опубликовано 18 октября, 2011 Ну сам смотри...case SC_STUN: case SC_POISON: case SC_DPOISON: case SC_SILENCE: case SC_BLEEDING: sc_def = 3 +status->vit;//sc_def = 3 +status->vit;Следовательно резист идёт из расчёта 3 + показатель Vit пользователя.Формула анти - Stun 3 + 97 vit ( Тоесть 97 Vit достаточно, чтобы статус перестал действовать. )Ну и теперь считай. Чтобы при 999 Vit был анти - статус, то нужно сменить формулу на :sc_def = 1 +status->vit/10;Итак, считаем : 1 + 999/10 = 1 + 99 = 100% Resistance. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 18 октября, 2011 Жалоба Поделиться Опубликовано 18 октября, 2011 а для 1к? Извени за глупость можно их ваше включить и не выключать то есть сколько не качал виты он не вырубится ,а эта строка отвечает за все статусы? Ссылка на комментарий Поделиться на другие сайты Поделиться
- Hmuryi - Опубликовано 18 октября, 2011 Жалоба Поделиться Опубликовано 18 октября, 2011 (изменено) Для 1000 нужно делить так :sc_def = 10 +status->vit/11;Итак, считаем : 1000/11 + 10 = 90.9 + 10 = 100%Если статусы не будут пропадать после прокачивания максимального значения Vit игроки будут ныть, знаю по собственному опыту. Придётся делать.а эта строка отвечает за все статусыТы найди её, там чем ниже опускаешься в файле, тем больше статусов редактировать приходится. Изменено 18 октября, 2011 пользователем - Hmuryi - 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 18 октября, 2011 Жалоба Поделиться Опубликовано 18 октября, 2011 А еще время действия есть Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 19 октября, 2011 Жалоба Поделиться Опубликовано 19 октября, 2011 Prariashild feefefauradia Dabyexpaptene PaitteZedia ThelfiffilD www.google.com http://www.google.com/рекламма гугла? 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения