1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.5.3 (145) Ограничение на джинокач после 100+ лвла

本贴由 gosha19522016-11-02 发布. 版块名称: PW Вопросник

  1. TopicStarter Overlay

    gosha1952 B L A C K    L I S T Пользователи

    帖子:
    317
    支持:
    161
    Репутация:
    2
    Команда:
    0
    Доброго времени суток ребят, недавно мне захотелось пофиксить прокачу джинов, чтобы дальше чем до 100 лвла они не качались.
    Найдя функцию прокачки джина: gplayer_imp::ElfPlayerInsertExp
    Я добавил в неё условие при котором дальше 100 лвла джин не качается, условие то в принципе работает хорошо, ну вот после этого при прокачке джина до 100 лвла, происходит ошибка сегмента, и падение ядра.

    как выглядит функция на с++
    [​IMG]
    И на ассемблере:
    [​IMG]

    Может кто-то подсказать что я делаю не так ?
  2. int 3 Программист Пользователи Open Source Contributor

    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Какой был код до изменения?
    Вангую, что add esp, 10h в предпоследней строчке лишнее, или просто проблемы со стеком. Да и не ясно, что там было затёрто, раз столько места появилось.
    Последнее редактирование: 2016-11-02
  3. TopicStarter Overlay

    gosha1952 B L A C K    L I S T Пользователи

    帖子:
    317
    支持:
    161
    Репутация:
    2
    Команда:
    0
    Сам думал насчёт add esp, 10h, по разному изменял уже их, затирания кода не было, использовал прыжок в другое место, значение [ebp+arg_C] добавлял в конец стека.
    [​IMG]
    --- добавлено: 2 ноя 2016 в 20:14 ---
    Код до изменения:

    [​IMG]

    Код после изменения:

    [​IMG]
    Последнее редактирование модератором: 2016-11-10
  4. int 3 Программист Пользователи Open Source Contributor

    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Весь код не смотрел, но советую из тех 4-х команд, выделенных с двух сторон nop'ами, поставить add esp, 10h первой. Иначе получается, что в зависимости от условия стек либо меняется, либо нет, а такого быть не должно.
  5. TopicStarter Overlay

    gosha1952 B L A C K    L I S T Пользователи

    帖子:
    317
    支持:
    161
    Репутация:
    2
    Команда:
    0
    Ставил уже, тоже самое, даже пытался из другого места в функции сделать прыжок, и из другой функции брать инфу о лвле, всё-ровно так-же, само условие работает, а вот функция нет.
    Напиши пожалуйста скайп свой в лс.
  6. TopicStarter Overlay

    gosha1952 B L A C K    L I S T Пользователи

    帖子:
    317
    支持:
    161
    Репутация:
    2
    Команда:
    0
    Проблема решена, спасибо огромное int-3 за помощь.
    Код с ограничением:
    asm
    [​IMG]
    c++
    [​IMG]

    Может кому-то и понадобится, особенно если у вас на сервере есть джины и кач до 150+ уровня.
  7. Roymike Old school Пользователи

    帖子:
    1,032
    支持:
    1,012
    性别:
    Репутация:
    8
    Команда:
    AncientPW
    я помню в такой ситуации тупо занопал пару функции отвечающих за кач джиннов и выдал при старте и в лк джиннов 150 из 150)
Черновик сохранён Черновик удалён

分享此页面