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

MO_STEELBODY


Salfer

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

Как заставить СН воскрешаться в стилл боди повторно, по окончанию действия предыдущего стил боди =\

pc.c


// activate Steel body if a super novice dies at 99+% exp [celest]
if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
unsigned int next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
if( get_percentage(sd->status.base_exp,next) >= 99 ) {
sd->state.snovice_dead_flag = 1;
pc->setstand(sd);
status_percent_heal(&sd->bl, 100, 100);
clif->resurrection(&sd->bl, 1);
if(battle_config.pc_invincible_time)
pc->setinvincibletimer(sd, battle_config.pc_invincible_time);
sc_start(NULL,&sd->bl,status->skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1));
if(map_flag_gvg2(sd->bl.m))
pc->respawn_timer(INVALID_TIMER, timer->gettick(), sd->bl.id, 0);
return 0;
}
}

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

Ты сформулируй тему конкретнее

Если СН убили без стиллбоди, то он ресается с ним

Если СН убили с стилбоди, то он не ресается

Правильно?

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

правильно

я понимаю, что где-то в этом моменте нужно поставить таймер с проверкой, но я слаб в С++

прошу помочь


if(battle_config.pc_invincible_time)
pc->setinvincibletimer(sd, battle_config.pc_invincible_time);
sc_start(NULL,&sd->bl,status->skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1));
if(map_flag_gvg2(sd->bl.m))
pc->respawn_timer(INVALID_TIMER, timer->gettick(), sd->bl.id, 0);
return 0;
}

Чёт я не подумал, можно и через скрипт написать, да ещё и проверки на карты поставить =\

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

Попробуйте заменить:


if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {

на:


if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->sc.data[SC_STEELBODY]) {

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


// activate Steel body if a super novice dies at 99+% exp [celest]

if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
unsigned int next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
if(sc && !sc->data[MO_STEELBODY] && get_percentage(sd->status.base_exp,next) >= 99) {
sd->state.snovice_dead_flag = 1; pc->setstand(sd); status_percent_heal(&sd->bl, 100, 100); clif->resurrection(&sd->bl, 1); if(battle_config.pc_invincible_time) pc->setinvincibletimer(sd, battle_config.pc_invincible_time); sc_start(NULL,&sd->bl,status->skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1)); if(map_flag_gvg2(sd->bl.m)) pc->respawn_timer(INVALID_TIMER, timer->gettick(), sd->bl.id, 0); return 0; } }[font='Helvetica Neue', Arial, Verdana, sans-serif]

Может быть

Не знаю

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

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