Сообщений: 232
Тем: 12
Зарегистрирован: Dec 2001
Может кто-нибудь сказать, как получить объект персонажа (не своего, конечно) в мультиплейере? Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь.
Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
Можно афишировать, в этом… нет никакого секрета.
Есть команда getLeader() это своего, но тебе это не надо. Тогда можно включить фильтр с Ai: filter Ai 1 и посмотреть ID персонажа, а затем вызвать команду получить объект с идентификатором. Эти команды описаны в инете, в частности на сайте «Нечесная игра» . Есть и другие способы, если известно внутреннее имя нужного персонажа (Его можно посмотреть в мобах) то получит объект с именем.
[ 23 января 2002: Изменил: sun ]</p>
Сообщений: 232
Тем: 12
Зарегистрирован: Dec 2001
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 ]</p>
Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
Странно и запутанно... Напиши полностью строку, что ты вводишь в консоли и какой объект на карте (на какой карте?) ты хочешь получить?
Сообщений: 232
Тем: 12
Зарегистрирован: Dec 2001
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. Что же это за число на самом деле?
Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
"Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, "
вообще-то вот так можно сложить с id :
#add(GetObjectID(getLeader()),-1000000000)
Я посмотрю в чем дело. возможно проблема с форматом или преобразовнием...
Сообщений: 232
Тем: 12
Зарегистрирован: Dec 2001
Да, здесь, похоже, происходит какое-то хитрое округление с шагом в 64, то есть, в результате применения функции Add можно получить из числа 1000000013, кратные 64. Происходит это примерно так: #Add(1000000013,-1000000032) даёт 0, а #Add(1000000013,-1000000033) даёт -64.
Забыл упомянуть, что на большем расстоянии от нуля шаг округления увеличивается.
[ 25 января 2002: Изменил: Vasya ]</p>
Сообщений: 232
Тем: 12
Зарегистрирован: Dec 2001
sun
А разве я могу перенести тему в другое место? Я же не Избранный, не Великие Силы и даже не Великий Маг.
Nivea
Я создал тему здесь, потому что хотел спросить не только людей, допущенных в закрытую часть форума. Но, как видно, либо все меня игнорируют, либо действительно никто, кроме sun'a ничего не знает. (Конечно, ещё есть вариант, что кто-то знает, но не признаётся в этом. )
Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
Щас появится какой-нибудь "Великий...", попросим его - он перенесёт...
Сообщений: 154
Тем: 9
Зарегистрирован: Dec 2001
Вася а ты пробовал? Может можно. Ты же вроде как автор темы. Проверь.
Сообщений: 24
Тем: 0
Зарегистрирован: Dec 2001
цитата Цитата: BansheeDarkF16
ХА! Эту мессагу надо будет удалить, т.к она совсем не по теме. Но это название меня убило. мож еще f18hornet обозвать?
Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
Что-то эта проблема больно на ошибку смахивает….
Во время игры максимальные значения, которые использует функции GetObject это семизначные числа, а с десятизначными числами проблема. Да и при сложении двух чисел то же что-то не то.
В ПЗ есть функция преобразования внутреннего имени в код идентификатора объекта.
Функция не сложная. Например, если дать внутренне имя новому объекту из одной буквы, то код ID будет соответствовать значению числа буквы в таблицы ANSI. Маленькие буквы преобразуются в верхний регистр. Например, если создать монстра у выхода из поселка с внутренним именем «D», то код у этого монстра будет 1000000068: @AddUnitToServer("D","BansheeDarkF16","Vasya",20,133,0).
Вообще-то к именам функций в ПЗ у меня тоже есть вопросы. Если задуматься о предназначении функции: AddUnitToServer, то функция должна была бы называться AddPersToServer… .
К сожалению, использовать функцию GetObject можно только для объектов созданных в mob`ах. Но проблему можно решить другим способом. Для этого существует функция: GetObjectById. Вводить значение код ID объекта нужно в кавычках, например, чтобы получить значение координаты «Х» Зака в сингле нужно ввести такую строку:
#GetX(GetObjectById( "1000011214" )).
Vasya, перенеси эту тему из Флейма в более серьезную, например: Все остальное.
B)
Сообщений: 546
Тем: 20
Зарегистрирован: Dec 2001
цитата:</font><hr>
.... Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь. <hr></blockquote>
Разве у нас нет места в разделе для разработчиков?
Ничего не понимаю... B)
|