Перейти к содержанию

Venom Splasher


Рекомендуемые сообщения

Буду краток, задача убрать задержку на использование скила Venom Splesher НО!!!!!! оставить задержку на срабатывание....

skill_cast_db:
// Structure of Database:
// SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2
//-- AS_SPLASHER
141,1000,0,0,5000:5500:6000:6500:7000:7500:8000:8500:9000:9500,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000

skill_db:
// Structure of Database:
//id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,name,description
141,1,6,1,-1,0xF,2,10,1,yes,0,0,0,weapon,0, AS_SPLASHER,Venom Splasher

SRC status.c:
case SC_SPLASHER:
// custom Venom Splasher countdown timer
//if (sce->val4 % 1000 == 0) {
// char timer[10];
// snprintf (timer, 10, "%d", sce->val4/1000);
// clif_message(bl, timer);
//}
if((sce->val4 -= 500) > 0) {
sc_timer_next(500 + tick, status_change_timer, bl->id, data);
return 0;
}
break;

Возможно я что то упустил, в сорцах есть еще несколько частей кода для данного скила, часть из них я определил и они не относятся к задержке, прошу помочь...

Изменено пользователем Nezdeshniy
Ссылка на комментарий
Поделиться на другие сайты

Мммм... А подробнее можно? Сам процесс, как это должно быть в итоге?

Выше я привел то что есть по дефолту в афине, и работает это так(пишу все самое важное относительно работы по времени): кастуешь скил на монстра, проходит 9,5 секунды и монстр получает урон, в этот промежуток времени еще раз использовать этот скил нельзя, задача убрать этот запрет, что бы можно было использовать скил сколько угодно раз. что бы можно было им всех монстров рядом накрыть...

Я понимаю что может быть появится баг с тем что можно будет килять монстра моментально если подряд кастовать на него но мне кажется что афина не даст там какойто эффкект вроде как есть.. вобщем не важно. Это не важно.

Еще раз самое главное - найти решение отмены или уменьшения задержки использования скила, но что бы задержка, которая идет после каста на получение урона монстру осталась. Все что я смог сделать это убрать полностью задержку но и урон сразу идет, а мне надо что бы он шел после тех же 9,5 секунд.

Для примера грубого представь что бы бьешь монстра снайпом даблстрейфом, но после выстрела урон монстр получает через 10 секунд. тоесть ты 10 секунд его бьешь, и только потом он начинает получать урон...

Решение гдето рядом в кодах которые я привел, ну или там надо перепистаь как то иначе, но мне мои игры с числами и удалением лишних как мне казалось строк и участков кода результата не дали - только убирал полностью задержку или изменял ее длительность, вот такая хреновая ситуация.. а очень надо найти решение...

Ссылка на комментарий
Поделиться на другие сайты

Открываем ../src/map/skill.c и в функции skill_castend_nodamage_id меняем:

	case AS_SPLASHER:
if(tstatus->mode&MD_BOSS || tstatus-> hp > tstatus->max_hp*3/4) {
if (sd) clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock();
return 1;
}
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start4(bl,type,100,skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));
if (sd) skill_blockpc_start (sd, skillid, skill_get_time(skillid, skilllv)+3000);
break;

на:

	case AS_SPLASHER:
if(tstatus->mode&MD_BOSS || tstatus-> hp > tstatus->max_hp*3/4) {
if (sd) clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock();
return 1;
}
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start4(bl,type,100,skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));
break;

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика