Break Опубликовано 14 сентября, 2013 Жалоба Поделиться Опубликовано 14 сентября, 2013 Добавил новый мапфлаг noafk, написал небольшой кусок с проверкой, но не пойму куда его вставить, так чтобы на империум арене, если чар в течении минуты афк, то его оттуда кикает. Подскажите знающие люди if (map[sd->bl.m].flag.noafk) {if(DIFF_TICK(last_tick, sd->idletime) > 60){clif_displaymessage(sd->fd, "You have been kicked from Emperium Arena because of your AFK status.");pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3);}} Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 29 октября, 2013 Жалоба Поделиться Опубликовано 29 октября, 2013 map/map.cнайди/// Initializes map flags and adjusts them depending on configuration.void map_flags_init(void)и в конец впиши свою проверкутема была в сентябре создана, хз надо или нет ужено пусть будет, вдруг кому-то понадобиться 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 4 ноября, 2013 Автор Жалоба Поделиться Опубликовано 4 ноября, 2013 (изменено) Правильно будет конечно тогда вот-так, но не работает.И вообще это похоже на обьявление ф-ции, которая выполняется при запуске сервера.struct map_session_data *sd;if (map[i].flag.noafk) {if(DIFF_TICK(last_tick, sd->idletime) > 60){clif_displaymessage(sd->fd, "You have been kicked from Emperium Arena because of your AFK status.");pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3);}} Изменено 5 ноября, 2013 пользователем Break Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 5 ноября, 2013 Жалоба Поделиться Опубликовано 5 ноября, 2013 (изменено) Да, ошибся немного. 1 Месяц работаю с eA. Сейчас сам немного полазил в srcнашёл в map/pc.c в самой функции pc_setpos проверку на инициализацию персонажа.Попробуй вставить туда. После проверки на открытие магазина, в "Misc map-changing settings"if( map[m].flag.noafk ){if(DIFF_TICK(last_tick, sd->idletime) > 60){clif_displaymessage(sd->fd, "You have been kicked from Emperium Arena because of your AFK status.");return pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3);}} Изменено 6 ноября, 2013 пользователем friimq Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 6 ноября, 2013 Автор Жалоба Поделиться Опубликовано 6 ноября, 2013 Ничего не изменилось, всё также. Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 6 ноября, 2013 Жалоба Поделиться Опубликовано 6 ноября, 2013 Должно работать.Вот так попробуй. if( map[m].flag.noafk ){if(DIFF_TICK(last_tick, sd->idletime) > 60){clif_displaymessage(sd->fd, "You have been kicked from Emperium Arena because of your AFK status.");return pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3);}return 0;}Если не получиться, сделай do{}while()PS!А вообще можно реализовать с помощью скрипта.Если у тебя rA то есть команда checkidle, которая выдает idle time в секундах.Если нет, то можно выдрать ее отсюда: http://trac.rathena....t/17126/rathena Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 7 ноября, 2013 Автор Жалоба Поделиться Опубликовано 7 ноября, 2013 Теперь вообще на арену не варпает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 7 ноября, 2013 Жалоба Поделиться Опубликовано 7 ноября, 2013 а что пишет map-server? Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 7 ноября, 2013 Автор Жалоба Поделиться Опубликовано 7 ноября, 2013 а что пишет map-server?Ошибок нет никаких, как я понял при попытке варпа на локации выполняется return 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 7 ноября, 2013 Автор Жалоба Поделиться Опубликовано 7 ноября, 2013 Я вообще думаю, что этот кусок с проверкой нужно вставить в ф-цию определения местоположения чара на карте, а не смены карты. Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 7 ноября, 2013 Жалоба Поделиться Опубликовано 7 ноября, 2013 (изменено) Я вообще думаю, что этот кусок с проверкой нужно вставить в ф-цию определения местоположения чара на карте, а не смены карты.тогда в map/clif.c найдиvoid clif_parse_WalkToXY(int fd, struct map_session_data *sd)и после строк sd->idletime = last_tick; впиши проверкунашёл OnPcIdleEvent, если не получиться выше,сделай всё по той-же схеме, только замени battleflag на mapflaghttp://sushiduy.ples...dle_event.patch Изменено 7 ноября, 2013 пользователем friimq 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 12 ноября, 2013 Автор Жалоба Поделиться Опубликовано 12 ноября, 2013 Спасибо, OnPcIdleEvent помог в решении вопроса. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения