Sanasol Опубликовано 6 августа, 2011 Жалоба Поделиться Опубликовано 6 августа, 2011 Вызывает помощника на разных уровнях разных. На 99 рандомного МвП14345,Animal_Scroll,Animal Scroll,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "support",getcharid(3); },{},{}function script support {setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0; getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;} 4 Ссылка на комментарий Поделиться на другие сайты Поделиться
Art Gamer Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 Подскажите, как сделать чтоб во время ГВ все помошники умирали, и не вызывались до конца ГВ. Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 Используй проверку на гв при вызовеagitcheck(); Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 if(agitcheck() || agitcheck2()){ mes "вы не можете вызвать помощника во время гв"; close;}else{ код..} 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Карласон Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 Ocelote =*, Смори а если вне гв вызвал пета?То он получается войдет на гв и бут с петом?if(agitcheck() || agitcheck2()){ mes "вы не можете вызвать помощника во время гв"; close;}else{ код..}подскажи как сделать чтоб как только вызовут пета человек умерал через 2 сек???А если он не вызвал то ничего не происходило?С agitcheck(); плохо знаком. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 хз как именно тебе нужно .function script support {if(agitcheck() || agitcheck2()){ initnpctimer "supportDie"; dispbottom "вы вызвали пета во время гв.вы умрете через 2 сек."; end;}setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0; getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;}- script supportDie -1,{OnTimer2000:atcommand "@die "+strcharinfo(0);end;}function script support {if(agitcheck() || agitcheck2()){ sleep 2000; atcommand "@die "+strcharinfo(0); end;}setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0; getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;} 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Карласон Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 (изменено) Спасиб оселот. Изменено 29 марта, 2012 пользователем ocelote =* так то Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 atcommand "@die "+strcharinfo(0); - идиотизм percentheal -100,-100; Ссылка на комментарий Поделиться на другие сайты Поделиться
Лилит Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 Ocelote =*, Смори а если вне гв вызвал пета?То он получается войдет на гв и бут с петом?Для этого делаем следующее:открой файл src/map/script.c, найди функцию 'summon' и добавь в конце перед 'return 0;' script_pushint(st, md->bl.id);Это будет выглядеть так: BUILDIN_FUNC(summon){ int _class, timeout=0; const char *str,*event=""; TBL_PC *sd; struct mob_data *md; int tick = gettick(); sd=script_rid2sd(st); if (!sd) return 0; str =script_getstr(st,2); _class=script_getnum(st,3); if( script_hasdata(st,4) ) timeout=script_getnum(st,4); if( script_hasdata(st,5) ){ event=script_getstr(st,5); check_event(st, event); } clif_skill_poseffect(&sd->bl,AM_CALLHOMUN,1,sd->bl.x,sd->bl.y,tick); md = mob_once_spawn_sub(&sd->bl, sd->bl.m, sd->bl.x, sd->bl.y, str, _class, event); if (md) { md->master_id=sd->bl.id; md->special_state.ai=1; if( md->deletetimer != INVALID_TIMER ) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer(tick+(timeout>0?timeout*1000:60000),mob_timer_delete,md->bl.id,0); mob_spawn (md); //Now it is ready for spawning. clif_specialeffect(&md->bl,344,AREA); sc_start4(&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000); } script_pushint(st, md->bl.id); // <<< Это добавили return 0;}Далее рекомпилируешь сервер, теперь вместо summon "Помошник["+strcharinfo(0)+"]",@supp,1800000; пишешь setd ".Mob"+getcharid(0),summon("Помошник["+strcharinfo(0)+"]",@supp,1800000);На локации с вое ставишь мапфлаг loadevent, пример: prtg_cas03 mapflag loadeventВ сам скрипт функции 'support' дописываешь:OnPCLoadMapEvent:getmapxy(@map$,@x,@y,0);if(@map$ == "prtg_cas03" && (agitcheck() || agitcheck2())){ dispbottom "Извините, но на Войне за Империум нельзя пользоваться помощником"; unitkill getd(".Mob"+getcharid(0)); set called,0; getitem 14345,1;}end;Думаю суть ясна.P.S. а вообще рекомендую использовать 11 тип предмета, чтобы каждый раз не давать игроку предмет, проверка и так стоит. Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 (изменено) Если использовать модификацию срц от Лилит,то можно оптимизировать скрипт. Сам не тестил..лень ставить мод P.S.Добавил мапфлаги в скрипт. P.S.S. Обновил. P.S.S.S. Т.к. срц не знаю...unitkill через модификацию Лилит не работает Изменено 30 марта, 2012 пользователем kadze 11 Ссылка на комментарий Поделиться на другие сайты Поделиться
Лилит Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 (изменено) Если использовать модификацию срц от Лилит,то можно оптимизировать скрипт. Сам не тестил..лень ставить мод P.S.Добавил мапфлаги в скрипт. Не учёл переменные. либо использовать скрипт вместо функции и тогда не разбивать скрипт на функцию support и непися support_system, либо использовать глобальную дин. переменную setd "$Mob"+getcharid(0) Изменено 29 марта, 2012 пользователем Лилит 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 да,забыл. Не легче ли будет использовать не глобальную переменную,а чар(@)? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Лилит Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 (изменено) Ох... в таком случае можно обойтись и без динамики а-ля set @mob,summon("Помошник["+strcharinfo(0)+"]",@supp,1800000); Сори, привычка всё усложнять... Изменено 29 марта, 2012 пользователем Лилит Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 29 марта, 2012 Жалоба Поделиться Опубликовано 29 марта, 2012 Не дружу еще с setd getarg и подобными командами >< Ссылка на комментарий Поделиться на другие сайты Поделиться
Renegade Bastard Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 после вызова пета привяжи переменную. во время агитстарт сделай проверку на эту переменную. Ссылка на комментарий Поделиться на другие сайты Поделиться
Лилит Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 OnPCLogoutEvent вообще здесь ни к чему, призванный монстр и так умирает после выхода из игры. Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 OnPCLogoutEvent вообще здесь ни к чему, призванный монстр и так умирает после выхода из игры.У меня не умирает о.о Ссылка на комментарий Поделиться на другие сайты Поделиться
Лилит Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 У меня rAthena, остальными не пользуюсь. Возможно из-за этого... Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 Все возможно.Мне лень переходить на новый эмуль Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 2 февраля, 2013 Автор Жалоба Поделиться Опубликовано 2 февраля, 2013 Много пишут про 11 тип предмета, когда скрипт писал я про такой не знал, или такого просто не было тогда Ссылка на комментарий Поделиться на другие сайты Поделиться
ReD_DeviL_16 Опубликовано 4 августа, 2013 Жалоба Поделиться Опубликовано 4 августа, 2013 Вызывает помощника на разных уровнях разных. На 99 рандомного МвП14345,Animal_Scroll,Animal Scroll,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "support",getcharid(3); },{},{}function script support {setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0;getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;}Какую функцию надо дописать чтоб можно было вызвать второго помошника а не двоих сразу Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 4 августа, 2013 Автор Жалоба Поделиться Опубликовано 4 августа, 2013 скопируй и измени название функции... Ссылка на комментарий Поделиться на другие сайты Поделиться
ReD_DeviL_16 Опубликовано 5 августа, 2013 Жалоба Поделиться Опубликовано 5 августа, 2013 скопируй и измени название функции... не получается уже копировал и перекопировал всё Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 5 августа, 2013 Жалоба Поделиться Опубликовано 5 августа, 2013 Так попробуй!function script supportx2 {setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0;getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;}и это!14345,Animal_Scroll,Animal Scroll,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "supportx2",getcharid(3); },{},{} Ссылка на комментарий Поделиться на другие сайты Поделиться
ReD_DeviL_16 Опубликовано 5 августа, 2013 Жалоба Поделиться Опубликовано 5 августа, 2013 (изменено) и это!14345,Animal_Scroll,A[quote name='nejiko' timestamp='1375707113' post='19926']Так попробуй![code]function script supportx2 {setarray $arrayofboss[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1708,1719,1734,1751,1768,1779,1785,1832,1871,1873,1885,1917,2022,2068,2087,2131,2156;attachrid(getarg(0));if (called){ dispbottom "Вы не можете призвать помощника в данный момент."; getitem 14345,1; } else {if (BaseLevel <= 10) { set @supp,1002; }if (BaseLevel <= 30 && BaseLevel > 10) { set @supp,1100; }if (BaseLevel <= 50 && BaseLevel > 30) { set @supp,1156; }if (BaseLevel <= 70 && BaseLevel > 50) { set @supp,1385; }if (BaseLevel <= 98 && BaseLevel > 70) { set @supp,2085; }if (BaseLevel >= 99) {set @supp,$arrayofboss[rand(getarraysize($arrayofboss))]; }set called,1;dispbottom "Помошник призван на 30 минут";summon "Помошник["+strcharinfo(0)+"]",@supp,1800000;}}- script support_system -1,{OnPcDieEvent:if (called) { set called,0; getitem 14345,1;}end;OnPCLoginEvent:if(called == 1 || given == 0) {percentheal 100,0;set called,0;getitem 14345,1;set given,1;}end;OnPCLogoutEvent:if(called == 1) {percentheal -100,0;}end;}14345,Animal_Scroll,Animal Scroll,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "supportx2",getcharid(3); },{},{}Не помогло перестаёт работать вообще))) Изменено 5 августа, 2013 пользователем ReD_DeviL_16 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения