Автор |
Сообщение |
Vasya
Привратник
Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
|
Добавлено: 23 января 2002, 20:55 |
|
|
Может кто-нибудь сказать, как получить объект персонажа (не своего, конечно) в мультиплейере? Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь. |
|
|
sun
Опытный воин
Пришел: 22.12.2001
Сообщения: 673
|
Добавлено: 23 января 2002, 22:26 |
|
|
Можно афишировать, в этом… нет никакого секрета.
Есть команда getLeader() это своего, но тебе это не надо. Тогда можно включить фильтр с Ai: filter Ai 1 и посмотреть ID персонажа, а затем вызвать команду получить объект с идентификатором. Эти команды описаны в инете, в частности на сайте «Нечесная игра» . Есть и другие способы, если известно внутреннее имя нужного персонажа (Его можно посмотреть в мобах) то получит объект с именем.
[ 23 января 2002: Изменил: sun ] |
|
|
Vasya
Привратник
Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
|
Добавлено: 24 января 2002, 13:17 |
|
|
sun
Не всё так просто.
Сайт Чейза я изучил, но это ничего не дало. По идентификатору, который отображается в консоли, почему-то нельзя получить объект персонажа. При написании команды #GetObjectID(GetLeader()) неизменно получаем 1e+009, тогда как после команды filter ai 1 видно, что у меня идентификатор 1000000013, но ни один, ни другой идентификатор не дают правильного объекта, когда применяешь к ним GetObject. Этот объект (мой перс) получается только по GetLeader() или же по GetUnitOfPlayer(0,0). При этом GetUnitOfPlayer(0,1(2,3,4 и т.д.)) (большИе числа не проверял) тоже не даёт второго игрока.
Число GetObjectID(GetLeader()) обладает ещё одним интересным свойством: оно не изменяется при применении к нему арифметических функций.
[ 24 января 2002: Изменил: Vasya ] |
|
|
sun
Опытный воин
Пришел: 22.12.2001
Сообщения: 673
|
Добавлено: 24 января 2002, 17:17 |
|
|
Странно и запутанно... Напиши полностью строку, что ты вводишь в консоли и какой объект на карте (на какой карте?) ты хочешь получить? |
|
|
Vasya
Привратник
Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
|
Добавлено: 24 января 2002, 23:01 |
|
|
sun
Я хочу получить объект - персонаж другого игрока в сетевой игре.
Идентификатор этого персонажа получить просто: пишем "filter ai 1" и смотрим в консоль. Допустим, он получился 1000000015. Пишем, например, "#GetX(GetObject(1000000015))" - и всегда получаем 0, то есть по идентификатору правильный объект не получается.
Та же ситуация и с объектом - моим персонажем. По его идентификатору нельзя получить объект.
Другой непонятный момент: пишем "#GetObjectID(GetLeader())". Результат "1e+009" не соответствует идентификатору, выводимому по команде "filter ai 1".
Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, а если пишем "#GetX(GetObject(1000000000))", то результат, как обычно, 0.
Ещё проверка: пишем "#Add(GetObjectID(GetLeader()),5")", получаем "1e+009", а не 1000000005. Что же это за число на самом деле? |
|
|
sun
Опытный воин
Пришел: 22.12.2001
Сообщения: 673
|
Добавлено: 25 января 2002, 13:22 |
|
|
"Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, "
вообще-то вот так можно сложить с id :
#add(GetObjectID(getLeader()),-1000000000)
Я посмотрю в чем дело. возможно проблема с форматом или преобразовнием... |
|
|
Vasya
Привратник
Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
|
Добавлено: 25 января 2002, 13:44 |
|
|
Да, здесь, похоже, происходит какое-то хитрое округление с шагом в 64, то есть, в результате применения функции Add можно получить из числа 1000000013, кратные 64. Происходит это примерно так: #Add(1000000013,-1000000032) даёт 0, а #Add(1000000013,-1000000033) даёт -64.
Забыл упомянуть, что на большем расстоянии от нуля шаг округления увеличивается.
[ 25 января 2002: Изменил: Vasya ] |
|
|
Vasya
Привратник
Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
|
Добавлено: 25 января 2002, 20:10 |
|
|
sun
А разве я могу перенести тему в другое место? Я же не Избранный, не Великие Силы и даже не Великий Маг.
Nivea
Я создал тему здесь, потому что хотел спросить не только людей, допущенных в закрытую часть форума. Но, как видно, либо все меня игнорируют, либо действительно никто, кроме sun'a ничего не знает. (Конечно, ещё есть вариант, что кто-то знает, но не признаётся в этом. images/smiles/icon_wink.gif ) |
|
|
sun
Опытный воин
Пришел: 22.12.2001
Сообщения: 673
|
|
|
Psi-factor
Рыцарь Света
Пришел: 19.12.2001
Сообщения: 261
Откуда: Владимира
|
Добавлено: 25 января 2002, 22:29 |
|
|
Вася а ты пробовал? Может можно. Ты же вроде как автор темы. Проверь. |
|
|
yanch
Зайчатник
Пришел: 25.12.2001
Сообщения: 31
|
|
|
sun
Опытный воин
Пришел: 22.12.2001
Сообщения: 673
|
Добавлено: 26 января 2002, 01:12 |
|
|
Что-то эта проблема больно на ошибку смахивает…. images/smiles/icon_smile.gif
Во время игры максимальные значения, которые использует функции GetObject это семизначные числа, а с десятизначными числами проблема. Да и при сложении двух чисел то же что-то не то.
В ПЗ есть функция преобразования внутреннего имени в код идентификатора объекта.
Функция не сложная. Например, если дать внутренне имя новому объекту из одной буквы, то код ID будет соответствовать значению числа буквы в таблицы ANSI. Маленькие буквы преобразуются в верхний регистр. Например, если создать монстра у выхода из поселка с внутренним именем «D», то код у этого монстра будет 1000000068: @AddUnitToServer("D","BansheeDarkF16","Vasya",20,133,0).
Вообще-то к именам функций в ПЗ у меня тоже есть вопросы. Если задуматься о предназначении функции: AddUnitToServer, то функция должна была бы называться AddPersToServer… images/smiles/icon_smile.gif .
К сожалению, использовать функцию GetObject можно только для объектов созданных в mob`ах. Но проблему можно решить другим способом. Для этого существует функция: GetObjectById. Вводить значение код ID объекта нужно в кавычках, например, чтобы получить значение координаты «Х» Зака в сингле нужно ввести такую строку:
#GetX(GetObjectById( "1000011214" )).
Vasya, перенеси эту тему из Флейма в более серьезную, например: Все остальное.
images/smiles/converted/re_16.gif |
|
|
Nivea
Смерть гоблинов
Пришел: 21.12.2001
Сообщения: 266
Откуда: Samara
|
Добавлено: 26 января 2002, 01:53 |
|
|
цитата:
.... Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь.
Разве у нас нет места в разделе для разработчиков?
Ничего не понимаю... images/smiles/converted/re_16.gif |
|
|
|
Вы не можете создавать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы Вы можете скачивать выложенные файлы
|
Часовой пояс: GMT +4:00
|
|