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

Поиск постоянного ID игрока


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

Всем привет.

Решил добить Warcraft III: Frozen Throne... Все в принципе нахожу, если бы не одно НО: на каждой карте все ID игроков разные.

Вопрос: как можно определить постоянный ID игрока (человека), который работал бы на всех картах?

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

У тебя есть несколько вариантов:

1) найти другой ID;

2) найти ID для каждого уровня;

3) использовать поинтеры.

Я ломал для одиночки Conter Strike на медали и искал для каждого уровня свой ID и сделал просто перебор по уровню.

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

Искать ID для каждой карты - не вариант, карт много, и еще больше карт можно скачать и добавить... Что касается указателей, то в WC3 TFT их либо слишком много, либо я как-то неправильно ищу (хотя инструкции, которые вылезают при проверке адресов - правильные, и работают в скриптах исправно)... да и подозреваю, что при использовании указателей будет та же песня, с разными смещениями на разных картах.

Поиск другого ID - дает тот же результат: в одной карте работает, в других - нет (точнее - бывает срабатывает, но на случайном игроке).

И я делаю такой вывод: ID каким-то образом вычисляются, опираясь на количество игроков (а может на что-то еще), т.к. в разных картах - разные ID, но в некоторых случаях ID совпадают, и чаще всего тогда, когда карта рассчитана на 10 игроков, и играют в нее 10 игроков (игрок-человек и 9 игроков-компьютеров).

Мистика... Может кто ломал уже эту игру? Что скажете? :)

Я использую версию 1.26.0.6401

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

Насколько я помню, это цифры от 1 до 16, в зависимости от слота. Т.е. если карта на 4 игрока, то самый верхний слот - 1, следующий - 2 и т.д. Но это я ломал графику (урок про создание мапхака). В принципе, значение может быть и зашифровано, как и почти всё в этой игре.

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

keng, увы, не всегда так ID рассчитываются :(

Например, в карте "Места боевой славы" (карта от Blizzard) - там смещения начинаются с 1 (до куда - не знаю, не проверял), в DotA 6.74c (AI) - ID "в разнобой". Почему в разнобой - потому как я стою на 6м слоте (1 слот команды The Scourge), и у меня ID = 42, у 1 слота за The Sentinel - 402. Фишка в DotA 6.74c в том, что каждый ID игрока/слота увеличен на 20, начиная с ID 1 слота 2 команды ИЛИ ID игрока-человека. Видимо это объясняется тем, что jass скрипт в этой карте выставляет привилегии, т.е. если в 1 слоте 1 команды играет не человек - скрипт проверяет все слоты на наличие игрока, а когда находит - выставляет себе таблицу таким образом, что игрок становится главным, т.е. - может вводить игровые команды, которые в дальнейшем будут приняты игрой, а остальным игрокам-компьютерам присваиваются ID: игрок 2 = ID игрока(человека)+20; игрок 3 = ID игрока 2+20; и т.д.

Видимо так, ибо в обычных картах, где нет проверки и сортировки таблицы "привилегий" - обычно ID соответствуют номеру слота или около того.

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

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.