Список форумов
Гипат.org
Найдется место всем!


:: В чате сейчас никого нет
Вопрос по скриптам.
   Список форумов -> Все остальное
Автор
Сообщение
Vasya
Привратник


Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
Добавлено: 23 января 2002, 20:55 [?] [PM]   [«»]

Может кто-нибудь сказать, как получить объект персонажа (не своего, конечно) в мультиплейере? Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь.
sun
Опытный воин


Пришел: 22.12.2001
Сообщения: 673
Добавлено: 23 января 2002, 22:26 [?] [PM]   [«»]

Можно афишировать, в этом… нет никакого секрета.
Есть команда getLeader() это своего, но тебе это не надо. Тогда можно включить фильтр с Ai: filter Ai 1 и посмотреть ID персонажа, а затем вызвать команду получить объект с идентификатором. Эти команды описаны в инете, в частности на сайте «Нечесная игра» . Есть и другие способы, если известно внутреннее имя нужного персонажа (Его можно посмотреть в мобах) то получит объект с именем.

[ 23 января 2002: Изменил: sun ]

Vasya
Привратник


Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
Добавлено: 24 января 2002, 13:17 [?] [PM]   [«»]

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 [?] [PM]   [«»]

Странно и запутанно... Напиши полностью строку, что ты вводишь в консоли и какой объект на карте (на какой карте?) ты хочешь получить?
Vasya
Привратник


Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
Добавлено: 24 января 2002, 23:01 [?] [PM]   [«»]

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 [?] [PM]   [«»]

"Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, "
вообще-то вот так можно сложить с id :
#add(GetObjectID(getLeader()),-1000000000)
Я посмотрю в чем дело. возможно проблема с форматом или преобразовнием...
Vasya
Привратник


Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
Добавлено: 25 января 2002, 13:44 [?] [PM]   [«»]

Да, здесь, похоже, происходит какое-то хитрое округление с шагом в 64, то есть, в результате применения функции Add можно получить из числа 1000000013, кратные 64. Происходит это примерно так: #Add(1000000013,-1000000032) даёт 0, а #Add(1000000013,-1000000033) даёт -64.

Забыл упомянуть, что на большем расстоянии от нуля шаг округления увеличивается.

[ 25 января 2002: Изменил: Vasya ]

Vasya
Привратник


Пришел: 20.12.2001
Сообщения: 338
Откуда: Москва
Добавлено: 25 января 2002, 20:10 [?] [PM]   [«»]

sun

А разве я могу перенести тему в другое место? Я же не Избранный, не Великие Силы и даже не Великий Маг.

Nivea

Я создал тему здесь, потому что хотел спросить не только людей, допущенных в закрытую часть форума. Но, как видно, либо все меня игнорируют, либо действительно никто, кроме sun'a ничего не знает. (Конечно, ещё есть вариант, что кто-то знает, но не признаётся в этом. images/smiles/icon_wink.gif )
sun
Опытный воин


Пришел: 22.12.2001
Сообщения: 673
Добавлено: 25 января 2002, 20:29 [?] [PM]   [«»]

Щас появится какой-нибудь "Великий...", попросим его - он перенесёт...
images/smiles/converted/voldar04.gif
Psi-factor
Рыцарь Света


Пришел: 19.12.2001
Сообщения: 261
Откуда: Владимира
Добавлено: 25 января 2002, 22:29 [?] [PM] [M] [w] [i]   [«»]

Вася а ты пробовал? Может можно. Ты же вроде как автор темы. Проверь.
yanch
Зайчатник


Пришел: 25.12.2001
Сообщения: 31
Добавлено: 25 января 2002, 23:18 [?] [PM] [M] [w]   [«»]

цитата
Цитата:
BansheeDarkF16

ХА! Эту мессагу надо будет удалить, т.к она совсем не по теме. Но это название меня убило. images/smiles/icon_smile.gif мож еще f18hornet обозвать? images/smiles/icon_biggrin.gif
sun
Опытный воин


Пришел: 22.12.2001
Сообщения: 673
Добавлено: 26 января 2002, 01:12 [?] [PM]   [«»]

Что-то эта проблема больно на ошибку смахивает…. 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 [?] [PM] [M] [w]   [«»]

цитата:

.... Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь.


Разве у нас нет места в разделе для разработчиков?
Ничего не понимаю... images/smiles/converted/re_16.gif
Показать сообщения:   
   Список форумов -> Все остальное
Версия для печати
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы
Вы можете скачивать выложенные файлы
Перейти:  
Часовой пояс: GMT +4:00