Kubix! Опубликовано 10 февраля, 2016 Жалоба Поделиться Опубликовано 10 февраля, 2016 (изменено) Привет!Возникла проблема. Нужно после телепорта вингом или скиллом обнулять кд скилла HLIF_CHANGEВчера пол дня провозился, нашел вроде отвечающие за это функции, но как воплотить в реальность не додумался.int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)Сама функция:int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data){struct homun_data *hd = map->id2hd(id);if (data <= 0 || data >= MAX_SKILL)return 0;if (hd != NULL)hd->blockskill[data] = 0;return 1;}Не совсем понятно что такое tid & intptr_t dataЕщё есть skill_blockpc_end но там такая же ситуация :<Пробовал так:if( sd->status.hom_id ){uint16 idx = skill->get_index(HLIF_CHANGE);skill->blockhomun_end(0, 0, sd->status.hom_id, idx);}//skill->blockhomun_end(sd-hd, 0, sd->status.hom_id, HLIF_CHANGE);//skill->blockhomun_start(sd->hd, HLIF_CHANGE, 0);//sd->hd->blockskill[idx] = false;Все что закомменчено тоже испробовал.Ничего не помогает. Ошибок нет, но и кд не обнуляется.Помогите что ли, пока мозг не сломал х) Изменено 10 февраля, 2016 пользователем Kubix Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 11 февраля, 2016 Жалоба Поделиться Опубликовано 11 февраля, 2016 (изменено) Проверку нужно вписать в clif_parse_UseSkillToIduint16 idx = skill_get_index(HLIF_CHANGE);struct homun_data *hd = sd->hd;if (skill_id == AL_TELEPORT) {hd->blockskill[idx] = 0;}Заранее извиняюсь если где напутал, сижу с телефона, к ПК пока нет возможности подойти.Под rAthena. Изменено 11 февраля, 2016 пользователем Nurkz Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 11 февраля, 2016 Автор Жалоба Поделиться Опубликовано 11 февраля, 2016 Проверку нужно вписать в clif_parse_UseSkillToIduint16 idx = skill_get_index(HLIF_CHANGE);struct homun_data *hd = sd->hd;if (skill_id == AL_TELEPORT) {hd->blockskill[idx] = 0;}Заранее извиняюсь если где напутал, сижу с телефона, к ПК пока нет возможности подойти.Под rAthena.Спасибо! Забыл указать что нужно под Hercules.С Functor'ом решили проблему. В геркулесе нельзя сбросить гому 1 скилл. Задержка общая на все скиллы :<В ../src/map/pc.c функция pc_setpos, перед sd->state.changemap = (sd->mapindex != map_index);пишем: if (sd->hd != NULL) { sd->hd->ud.canact_tick = 0; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения