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