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

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

Тема в разделе 'PW Вопросник', создана пользователем gosha1952, 2 ноя 2016.

  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 в предпоследней строчке лишнее, или просто проблемы со стеком. Да и не ясно, что там было затёрто, раз столько места появилось.
    Последнее редактирование: 2 ноя 2016
  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]
    Последнее редактирование модератором: 10 ноя 2016
  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.030
    Лайки:
    1.005
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    AncientPW
    я помню в такой ситуации тупо занопал пару функции отвечающих за кач джиннов и выдал при старте и в лк джиннов 150 из 150)
Черновик сохранён Черновик удалён
Similar Threads
  1. Sem
    Ответов:
    6
    Просмотров:
    3.088
  2. New-X
    Ответов:
    1
    Просмотров:
    1.383
  3. Ejik619
    Ответов:
    21
    Просмотров:
    3.687
  4. Neron
    Ответов:
    11
    Просмотров:
    2.016
  5. Neron
    Ответов:
    6
    Просмотров:
    1.373
Загрузка...

Поделиться этой страницей