Salfer Опубликовано 30 ноября, 2014 Жалоба Поделиться Опубликовано 30 ноября, 2014 Как заставить СН воскрешаться в стилл боди повторно, по окончанию действия предыдущего стил боди =\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; }} Ссылка на комментарий Поделиться на другие сайты Поделиться
Elmiria Опубликовано 30 ноября, 2014 Жалоба Поделиться Опубликовано 30 ноября, 2014 кажется мне такsd->state.snovice_dead_flag = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Salfer Опубликовано 30 ноября, 2014 Автор Жалоба Поделиться Опубликовано 30 ноября, 2014 таким образом он вообще бессмертный, от воскрешается даже в стил боди его тупо не убить =\ Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 30 ноября, 2014 Жалоба Поделиться Опубликовано 30 ноября, 2014 Ты сформулируй тему конкретнееЕсли СН убили без стиллбоди, то он ресается с нимЕсли СН убили с стилбоди, то он не ресаетсяПравильно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Salfer Опубликовано 30 ноября, 2014 Автор Жалоба Поделиться Опубликовано 30 ноября, 2014 (изменено) правильноя понимаю, что где-то в этом моменте нужно поставить таймер с проверкой, но я слаб в С++прошу помочь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;}Чёт я не подумал, можно и через скрипт написать, да ещё и проверки на карты поставить =\ Изменено 30 ноября, 2014 пользователем Salfer Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 1 декабря, 2014 Жалоба Поделиться Опубликовано 1 декабря, 2014 Попробуйте заменить: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]) { 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 1 декабря, 2014 Жалоба Поделиться Опубликовано 1 декабря, 2014 // 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]Может бытьНе знаю 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Salfer Опубликовано 1 декабря, 2014 Автор Жалоба Поделиться Опубликовано 1 декабря, 2014 Всем спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения