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

1.5.1 (101) Редактирование скилла

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

  1. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    Редактирую скилл с итема из листа target_item_essence. Нужен был итем который дамаг наносит боссу. Нашел итем 24696, на нем скилл 1072. Все подходит, только хочется поменять дальность каста и юзабельность только на мобов. Открыл гс, отредактировал значение в getpraydistance, но все как прежде. Все пересмотрел, только расчет дамага еще есть и все. Куда копать?
  2. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Если скилл юзается игроком, то ограничение на дистанцию стоит в еще и в клиенте. Нужно редактировать elementskill.dll
  3. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    Не могу в елементскилле ничего найти, ни единого намека на моих 15.0 ренжи. Единственное значение 15.0 флоата возвращает функция, которая нигде не вызывается.
  4. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    Ладно, протупил...
    upload_2016-4-3_13-16-49.png
    где создаются все эти указатели через dd? на маленьком примере с++ кода, пожалуйста
    И как заменить вызов функции return_float_15_0? Я так понял это указатель на функцию и перед вызовом getpraydistance на вершине стека должны 4 байта нужной ренжи лежать. Как тогда подменить вызов, что бы сдвиг не нарушить?
  5. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Нужно подменить range? Если да, то просто внутри функции меняешь число, как и в ядре.
    Это таблица виртуальных функций, прописывается указателем в начало объекта при вызове конструктора. Это обычные функции по механике, но отличие лишь в способе вызова (по указателю). Можно посмотреть на эту же функцию в ядре, чтобы понять, что происходит.
    Гуглить по словам: виртуальные функции, позднее связывание
  6. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    проблема в том, что эта функция вызывается не только для этого скилла, заменю для этого - заменится для многих оО
  7. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Указатель на эту функцию висит во многих местах? Видимо, шибко умный компилятор постарался.
    Тогда советую следующее: скопировать полностью код функции в новое место (найти такое место - это уже другая проблема), поменять float и в vtable (таблица виртуальных функций) конкретно этого скилла прописать указатель на новую вместо старой.
  8. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    поищу функцию с ренжой другой и перепишу адресс, с этим примерно разобрались.
    а по поводу каста только на мобов можешь подсказать что то?
  9. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Точно, об этом я забыл.

    Я не сталкивался с этим типом предмета, но, если не ошибаюсь, то он активируется ПКМ и пуляет что-то в таргет? Если так, то в скилле ограничение на моба не поставить никак, поэтому нужно искать функцию, которая вызывается при активации предмета.
    Код:
    int __cdecl skilltrigger2_item::OnUseWithTarget(skilltrigger2_item *const this, item::LOCATION l, int index, gactive_imp *obj, const XID *const target, char force_attack)
    Изменением пары байт ничего не добьешься, нужно дописывать условие.
  10. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    окай, изменение адресов последующих функций и значений единственная проблема с которой придется столкнуться? а то я плох в программировании на таком уровне
  11. FireStorm Пользователи

    Сообщения:
    33
    Лайки:
    14
    Репутация:
    0
    Страна:
    Russian Federation Russian Federation
    Дома буду - скину софтину. В Скайп напиши: dark25293
  12. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Для дальности скилла - да
  13. TopicStarter Overlay

    kostik21730 Пользователи

    Сообщения:
    188
    Лайки:
    48
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Ukraine Ukraine
    я за таргет, имел ввиду что сдвиг же будет, если дописать иф
  14. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    А, ну if там банально не поместится. Нужно в другую память прыгать. Без особых навыков вряд ли получится
Черновик сохранён Черновик удалён
Similar Threads
  1. Lockid
    Ответов:
    18
    Просмотров:
    3.961
  2. default
    Ответов:
    6
    Просмотров:
    1.179
  3. andrey3281
    Ответов:
    5
    Просмотров:
    1.484
  4. Гильберт
    Ответов:
    9
    Просмотров:
    1.676
  5. Wheels of Zeus
    Ответов:
    6
    Просмотров:
    2.220
Загрузка...

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