b72g Опубликовано 27 марта, 2014 Жалоба Поделиться Опубликовано 27 марта, 2014 (изменено) Привет всем, вообщем есть задумка о реализации комманды @reloadscriptname. Дело в том что обычный @reloadscript перезагружает все скрипты в афене, всех мобов, нпц и.т.д. Но очень часто нужно перезагрузить всего 1-2 скрипта, тем более если сервер уже рабочий, то перезагрузка всего очень помешает игрокам, тем более все мобы в том числе и МВП заного переродятся на картах. Вообщем хотел бы узнать, может кто то знает как реализовать такую комманду, которая бы перезагружала 1 скрипт ( ведь он занимает в перезагрузке долю секунды, чем все 800 и более НПЦ ) К примеру, чтобы она перезагружала @reloadscriptname [ имя нпц ] или если это проблемотично, то. @reloadscriptfloder [ и путь папки, с txt для перезагрузки ] Вообщем если кто знает как сделать подобную комманду напишите пожалуйста, т.к в сорцы я полез совсем недавно и мне еще предстоит многому научиться.. Как всегда идей много , а знаний для реализации не хватает Заранее спасибо Изменено 27 марта, 2014 пользователем b72g Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 27 марта, 2014 Жалоба Поделиться Опубликовано 27 марта, 2014 @loadnpc <path>Loads an NPC script by path.Example:@loadnpc npc/custom/jobmaster.txt---------------------------------------@unloadnpc <npc name>Unloads an NPC.Example:@unloadnpc Job Master---------------------------------------@unloadnpcfile <path>Unloads all NPCs in a file.Example:@unloadnpcfile npc/custom/jobmaster.txt Ссылка на комментарий Поделиться на другие сайты Поделиться
b72g Опубликовано 27 марта, 2014 Автор Жалоба Поделиться Опубликовано 27 марта, 2014 @loadnpc <path> Loads an NPC script by path. Example: @loadnpc npc/custom/jobmaster.txt --------------------------------------- @unloadnpc <npc name> Unloads an NPC. Example: @unloadnpc Job Master --------------------------------------- @unloadnpcfile <path> Unloads all NPCs in a file. Example: @unloadnpcfile npc/custom/jobmaster.txt Видимо я дурачок Спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 27 марта, 2014 Жалоба Поделиться Опубликовано 27 марта, 2014 Опа =) Первый раз вижу команду @unloadnpcfile.. Давно она есть? А то, помню, в свое время упарился выгружать нпцов по одному, если их несколько в файле было.. А уж дубликаты и вообще вспоминать страшно Ссылка на комментарий Поделиться на другие сайты Поделиться
milk Опубликовано 27 марта, 2014 Жалоба Поделиться Опубликовано 27 марта, 2014 Опа =) Первый раз вижу команду @unloadnpcfile.. Давно она есть? А то, помню, в свое время упарился выгружать нпцов по одному, если их несколько в файле было.. А уж дубликаты и вообще вспоминать страшно https://code.google.com/p/rathena/source/list?path=/trunk/src/map/pc_groups.h&start=16751 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SupR1g Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 (изменено) По сути можно объединить команду @unloadnpcfile и @loadnpc в одну, например в @reloadnpc Вот мой вариант, который работает, за корректность работы ответственности не несу : Открываем ../src/custom/atcommand.inc и добавляем в конце: ACMD_FUNC(reloadnpc) {if( !message || !*message ) {clif_displaymessage(fd, msg_txt(sd,1385)); // Usage: @unloadnpcfile <file name>return -1;}if( npc_unloadfile(message) ){clif_displaymessage(fd, msg_txt(sd,1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed.FILE *fp;if (!message || !*message) {clif_displaymessage(fd, msg_txt(sd,1132)); // Please enter a script file name (usage: @loadnpc <file name>).return -1;}// check if script file existsif ((fp = fopen(message, "r")) == NULL) {clif_displaymessage(fd, msg_txt(sd,261));return -1;}fclose(fp);// add to list of script sources and run itnpc_addsrcfile(message);npc_parsesrcfile(message,true);npc_read_event_script();clif_displaymessage(fd, msg_txt(sd,262));return 0;}else {clif_displaymessage(fd, msg_txt(sd,1387)); // File not found.return -1;}return 0;} Открываем ../src/custom/atcommand_def.inc и добавляем в конце: ACMD_DEF(reloadnpc), Рекомпилим сервер и проверяем, например: @reloadnpc npc/merchants/advanced_refiner.txt p.s. Если в скрипте ошибка мапсервер не покажет где она и скрипт не загрузится. Доделаешь сам... Изменено 29 марта, 2014 пользователем SupR1g Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 - script reloadnpc -1,{OnInit:bindatcmd "reloadnpc",strnpcinfo(3)+"::OnAtcommand";end;OnAtcommand: if (.@atcmd_numparameters != 1) { dispbottom "Usage: @reloadnpc npc/path/to/script.txt"; } atcommand "@unloadnpcfile "+.@atcmd_paramters[0]; atcommand "@loadnpc "+.@atcmd_paramters[0]; dispbottom "Скрипт перезагружен";end;} На правах шутки (: Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 - script reloadnpc -1,{OnInit:bindatcmd "reloadnpc",strnpcinfo(3)+"::OnAtcommand";end;OnAtcommand: if (.@atcmd_numparameters != 1) { dispbottom "Usage: @reloadnpc npc/path/to/script.txt"; }atcommand "@unloadnpcfile "+.@atcmd_paramters[0];atcommand "@loadnpc "+.@atcmd_paramters[0]; dispbottom "Скрипт перезагружен";end;} На правах шутки (: и так можно? о____О Ссылка на комментарий Поделиться на другие сайты Поделиться
Кеник Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 - script reloadnpc -1,{OnInit:bindatcmd "reloadnpc",strnpcinfo(3)+"::OnAtcommand";end;OnAtcommand: if (.@atcmd_numparameters != 1) { dispbottom "Usage: @reloadnpc npc/path/to/script.txt"; }atcommand "@unloadnpcfile "+.@atcmd_paramters[0];atcommand "@loadnpc "+.@atcmd_paramters[0]; dispbottom "Скрипт перезагружен";end;} На правах шутки (: и так можно? о____О Да Ссылка на комментарий Поделиться на другие сайты Поделиться
SupR1g Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 - script reloadnpc -1,{OnInit:bindatcmd "reloadnpc",strnpcinfo(3)+"::OnAtcommand";end;OnAtcommand: if (.@atcmd_numparameters != 1) { dispbottom "Usage: @reloadnpc npc/path/to/script.txt"; }atcommand "@unloadnpcfile "+.@atcmd_paramters[0];atcommand "@loadnpc "+.@atcmd_paramters[0]; dispbottom "Скрипт перезагружен";end;} На правах шутки (: Главное идея, а дальше уже идут варианты (= Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 p.s. Если в скрипте ошибка мапсервер не покажет где она и скрипт не загрузится. Доделаешь сам... 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SupR1g Опубликовано 30 марта, 2014 Жалоба Поделиться Опубликовано 30 марта, 2014 p.s. Если в скрипте ошибка мапсервер не покажет где она и скрипт не загрузится. Доделаешь сам... xDDD Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 В 29.03.2014в11:48 AM, Кеник сказал: Да погодите, я видно ступила тогда) Это для рА или и для еА тоже? Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 (изменено) 14 минуты назад, Elmiria сказал: погодите, я видно ступила тогда) Это для рА или и для еА тоже? Открываем ../src/custom/atcommand.inc и добавляем в конце: <= значит что рАbindatcmd = rAthena/Hercules p.s. при @loadnpc не загружаются OnInit, насколько я помню Изменено 24 февраля, 2016 пользователем Gendalf 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 печаль-беда Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 1 минуту назад, Elmiria сказал: печаль-беда А чо, над под еА? Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 пригодилось бы)) Еще б кто написал @partyleave @partyinvite @partykick ))))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 1 минуту назад, Elmiria сказал: пригодилось бы)) Еще б кто написал @partyleave @partyinvite @partykick ))))) давай эмуль еА, гляну Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 тебе весь эмуль скинуть? PS Установлен лимит на отправку нескольких сообщений за определённое время. Пожалуйста, подождите 146 секунд перед отправкой. че за хня? Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 12 минуты назад, Elmiria сказал: тебе весь эмуль скинуть? PS Установлен лимит на отправку нескольких сообщений за определённое время. Пожалуйста, подождите 146 секунд перед отправкой. че за хня? можно ток папку src Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 24 февраля, 2016 Жалоба Поделиться Опубликовано 24 февраля, 2016 Только что, Gendalf сказал: можно ток папку src завтра тогда скину) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения