Jump to content
Alloder.pro: about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

Read more

Вопросы и ответы по офф. API


Guest truepassword
 Share

Recommended Posts

Guest truepassword

Добрый привет!

Начал ковырять этот api, но почему-то при чтении документации получаю больше вопросов, чем ответов.

Поэтому решил создать тему, для задания вопросов и получения ответов.

1) Как получить имя своего персонажа. Например, для написания отладочной информации самому себе в приват.

2) Как просто открыть сумку с лутом не собирая автоматом все трофеи для последующего изучения содержимого.

Во время написания вопросов нашёлся и один ответ:

Как получить имя своего персонажа

Code:

local oldId = avatar.GetTarget()

avatar.TargetSelf()

Global("myId", avatar.GetTarget())

Global("myName", object.GetName(myId))

if oldId == nil then

avatar.UnselectTarget()

else

avatar.SelectTarget(oldId)

end

Link to comment
Share on other sites

  • Replies 50
  • Created
  • Last Reply

Top Posters In This Topic

оооо а азчем так сложно ???? *))) или мы не ищем простых путей ?

Как получить имя юнита ( и вчастности персонажа )

Code:

local PlayerName = object.GetName( avatar.GetId() )

local CurrentTargetName

if avatar.GetTarget() then

    CurrentTargetName = object.GetName( avatar.GetTarget() )

end

Link to comment
Share on other sites

Guest poletaew

Вообще нужно создавать отдельную ветку "Вопросы по API" или что-то в этом духе

Link to comment
Share on other sites

Guest truepassword

Совсем забыл о функции avatar.GetId() =)

А вот с мешочками так и не разобрался. И id трупа с мешочком получил, и id мешочка получил, а как его заставить открыться - хз. Я так понял открывать нужно с помощью object.Use( objectId, filter ), но не получается....

Link to comment
Share on other sites

Guest truepassword

3) как получить список объектов, предметов, игроков и т.п. в неком радиусе аватара?

4) было бы очень хорошо поиметь аналог функции LogInfo, но для записи данных в любой файл

Link to comment
Share on other sites

2truepassword

Хехе учимся копать мануалы *)))))

EVENT_UNITS_CHANGED

Событие посылается раз в кадр, если за этот кадр в зоне действия аватара появляется или исчезает юнит.

-- поля:

spawned: table of ObjectId - индексированная с 0 таблица идентификаторов появившихся юнитов

despawned: table of ObjectId - индексированная с 0 таблица идентификаторов исчезнувших юнитов

Link to comment
Share on other sites

Guest truepassword

спасибо, годится.

не поверишь, последние лет 5 занимаюсь именно копанием в манах....

кто ж знал что EVENT_UNITS_CHANGED подписан как "Событие посылается раз в кадр, если за этот кадр в зоне действия аватара появляется или исчезает юнит." А я искал что-то "в радиусе", "рядом", "вокруг" и .т.п.

чувствую от нивала нормальных описаний не дождёмся. мб пора начать писать расширенный ман с большим кол-вом примеров =)

Link to comment
Share on other sites

Человеческому учебнику БЫТЬ, как только я сам толком разберусь с API. С текстурами (и с их негуманным конвертером) уже, восновном, разобрался. Сейчас копаюсь в API...

Так же, собираемся сделать мануал наподобие http://www.php.net/manual/en/. Чтобы все могли комментировать, дополнять человеческие описания функций и примеры использования кода :)

Link to comment
Share on other sites

СЛА(Славик, Владислав???), надо бы "организоваться" в этом вопросе... ибо у меня тоже есть "наработки" полезные всем модмейкерам которые известны только мне(на форуме и в релизах "аддов" я не увидел, использующих их, решений)...

Link to comment
Share on other sites

Guest APXEOLOG

какого типа должнв бытиь тгашки чтобы конвертироваться? у меня не конвертятся (failed) пробовал 16 бит и 24 бита

Link to comment
Share on other sites

TGA 16b не берёт ВООБЩЕ. Баг :)))

TGA 32b и TGA 24b должен брать. Конвертер особенно заточен под TGA 32b.

ВАЖНО: Как написано в инструкции, конвертируемые TGA обязаны находиться где-то в одной из под-папок \data\Mods\. Если нет - то "failed"! Эпический маразм! Я как-нибудь напишу свой конвертер, удобный и интуитивно понятный.

Link to comment
Share on other sites

Guest APXEOLOG

Мм работаю с динамикой. с WidgetPanel все проходит на ура, но вот WidgetTextView падает на этапе WidgetTextView:GetWidgetDesc()

В апи написано что должно работать для всех виджетов. Это у меня руки кривые или оно и правдо не пашет?

--

Отбой. Кривые руки детектед.

Link to comment
Share on other sites

Guest APXEOLOG

1. Заметил что при обработке событый проходит несколько миллисекунд прежде чем события доходят до моего аддона. Например

EVENT_AVATAR_PRIMARY_TARGET_CHANGED основной ui обрабатывает влет а мне приходится ждать. Есть ли способы изменить очередность? и что делает RegisterLayoutManagedAddon( { type = ADDON_TYPE_HUD, side = SCREEN_SIDE_TOP } ) - может он и устанавливает приоритет?

2. Есть ли возможность динамического добавления вариантов для кнопки?

Link to comment
Share on other sites

Guest sergm2005

Всем привет!

Для выполнения контекстного действия есть avatar.RunContextAction, а как выполнить действие в определенном слоте панели действий?

Заранее спасибо.

Link to comment
Share on other sites

Guest Valltron
Quote:
Есть ли способы изменить очередность

нет, нету. (можешь попробовать отключить оригинальный аддон :))
Вообще мне кажется что событие начинается везде одинаково, но из за разных задержек, пингов и прочих лагов игровых - обрабатывается по разному.
Quote:
что делает RegisterLayoutManagedAddon( { type = ADDON_TYPE_HUD, side = SCREEN_SIDE_TOP } )

Мне кажется это подключаются у них разные библиотеки, например так подключается "прятанье виджетов по esc". в котором задается очередность их прятанья, разные функции для управления, ну и всякие константы...
Quote:
2. Есть ли возможность динамического добавления вариантов для кнопки?

Вариантов чего? анимации? я не видел подобного. Вариантов названия? используй relatedtext
Link to comment
Share on other sites

  • 2 weeks later...
Guest mehael

пофиксили вроде данные фичи

ЗЫ юзай AutoHotKey

...

Возможно ли запустить exe из lua?

Было бы здорово если бы AutoHotkey макросы запускались по игровому событию..

Добавлено: нельзя, защита от вирусов =))

Link to comment
Share on other sites

Guest QuiteUnknown

не подскажите, как сделать обработку события при месаге от определенного человека?

Code:
function OnEventChatMessage  ( params )

local mes = common.GetAddonRelatedText( "message4" )

if params.sender  == common.GetAddonRelatedText( "message2" )

group.ChatWhisper( object.GetName(avatar.GetId()), mes )

end

end

message2 - текстовый файл с именем персонажа

message4 - текст, который я должен сам седбе сказать (просто проверяю таким образом, проходит ле условие или нет)

Сам евент проходит (проверял, отключая условие if ). Тоесть без условия, при любой месаге в чат, скрипт

Code:
group.ChatWhisper( object.GetName(avatar.GetId()), mes )
выполняется. Что я сделал не так? Ткните меня носом, если не трудно.
Link to comment
Share on other sites

Guest Valltron
Quote:
if params.sender == common.GetAddonRelatedText( "message2" )

это ты проверяешь на равенство два разных userdata? О.о
Code:
if common.CompareWString( params.sender, common.GetAddonRelatedText( "message2" ) ) == 0

...и далее по тексту
Link to comment
Share on other sites

Guest QuiteUnknown

Огромное спасибо, просто в языках я не силен (даже по русскому у меня 3), пишу практически наугад =)))

Link to comment
Share on other sites

Guest QuiteUnknown

Странно, но с текстом

Code:
if common.CompareWString( params.sender, common.GetAddonRelatedText( "message2" ) ) == 0

аддон не работает, если закоментировать эти строки, то аддон остальные команды выполняет, а если раскоментировать - аддон не стартует....

Все, разобрался, сам дурак....

Я в проверке забыл добавить THEN =))))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use