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

Воскрешение на месте


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

Есть такой предмет как Амулет Зигфрида/Token Of Siegfried:


7621,Token_Of_Siegfried,Token Of Siegfried,3,2,,10,,,,,,,,,,,,,{},{},{}

Он позволяет воскреснуть на месте смерти в мирных зонах. Но так как сервер стоит в PK режиме, смысл предмета пропадает. Где подправить, чтобы предмет позволял воскрешаться и пвп зонах?

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

Смею предположить что в src/map/skill.c


case ALL_RESURRECTION:
if( sd && map_flag_gvg3(bl->m) )
{ //No reviving in WoE grounds!
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}

Удалить эти строчки, скомпилить и проверить :)

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

Смею предположить что в src/map/skill.c


case ALL_RESURRECTION:
if( sd && map_flag_gvg3(bl->m) )
{ //No reviving in WoE grounds!
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}

Удалить эти строчки, скомпилить и проверить :)

Судя по всему эти строки влияют на карты с мапфлагом gvg. А нас интересует pvp.

Касательно самого Амулета Зигфрида нашел пока лишь этот кусок в map/clif.c


/// Request to resurrect oneself using Token of Siegfried (CZ_STANDING_RESURRECTION).
/// 0292
void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
{
int item_position = pc_search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED);
if (item_position < 0)
return;

Но не вижу в нем намека на запрет использования в пвп зоне.

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

Самое интересное что в эмуляторе нет похоже никаких проверок на пвп зону...

http://www.eathena.ws/board/index.php?showtopic=216358&hl=token

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

Смею предположить что в src/map/skill.c


case ALL_RESURRECTION:
if( sd && map_flag_gvg3(bl->m) )
{ //No reviving in WoE grounds!
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}

Удалить эти строчки, скомпилить и проверить :)

Вы ошиблись на чуть-чуть

Ниже есть такие строчки:


if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
break;

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

Смею предположить что в src/map/skill.c


case ALL_RESURRECTION:
if( sd && map_flag_gvg3(bl->m) )
{ //No reviving in WoE grounds!
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}

Удалить эти строчки, скомпилить и проверить :)

Вы ошиблись на чуть-чуть

Ниже есть такие строчки:


if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
break;

Не обратил внимания просто на них)

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

Удаление


if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
break;

ничего не дало.

PS.

Да, перекомпилил.

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

Кнопка воскрешения не появляется из-за проверки pvp мапфлага в клиентском EXE.

Фикс для 2012-04-10aRagexeRE. Применяем с помощью любого hex редактора.

offset 3186C2 меняем 75 32 на 90 90

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

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