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

как запросить вещь с сервера


icreator
 Share

Recommended Posts

я так понимаю что можно в конфиге сохранять название вещи, а потом его восстановить.

Но как взять именно вещь - Например с помощью:

FunctionAvatarGetItemInfo

там ведь нужен уникальный ИД - который каждый раз с сервера разный присылается при перезагрузке персонажа

Link to comment
Share on other sites

По моим данным ни как. Я писал разработчикам что бы сделали доступ к открытию вещей которые сохранены по названию. Получил ответ: Объясните для чего это нужно, если это нам покажется интересным мы добавим. Увы мне предложить нечего потому что я эту возможность хотел для аддона aospider

Link to comment
Share on other sites

так вот я сделала аддон

http://ui9.ru/forum/enhancedactionpanel/about

там если в сумке персонажа нет вещи или зелья, которое стояло на панели - оно исчезает с панели вообще ((( очень неудобно

а ведь у них оно как-то сохраняется!!! только ячейка закрашивается темным цветом

в моем случае надо как-то сохранять иконку предмета, потом смотреть его по имени в сумке - если нету - подставлять на панель потухшую иконку и ждать когда же в сумке появится эта вещь... можно конечно и так сделать - но куда и как иконки вещей сохранять?

Link to comment
Share on other sites

мало того еще и ID вещи меняется! так в Action панели у удаленной вещи меняется ИД и как как ее и откуда взять - иконку и прочее...

Link to comment
Share on other sites

The user data ID system in this game is completely dynamic. If you walk 200 yards away from an NPC/Player/LootBag/Device/Transport/anything and come back, that object has a completely new ID. The same is true anywhere you see the word "ID", they are temporary identifiers used only to transmit the data they contain at that moment.

These IDs change less frequently in the case of constantly stable information, such as objects in slots and the spell book. This is a problem that MasterLoot experienced with the Morse-derived ID notification where the ID passed to each separate player for a single item was different.

IDs are not a good or feasible means for bouncing stored data checks off of, but they are sometimes the only thing we have access to that is different. (Ex. Two devices with the same info table data and the only difference being X/Y/Z position and their ID.)

One of the bugs in my ShipHUD occurs from this problem; which I should address when I get free time. This is when the player leaves the ship's range and all the devices get new IDs and it creates a secondary set of devices or a whole new ship in response to the change. (Iconic bug only, the circular version functions quite differently.)

In the case of your EnhancedActionPanel idea, it would more than likely be better to store slot names and the name/slotnumber/stackcount of the skill/item stored there and then run a check on all locations where slots can be stored to find out if an item with that name (and stackcount/slot number for items/abilities with stacks or the same name) exists. A much more extraneous methodology, but should never result in an erroneous situation.

Link to comment
Share on other sites

Guest Valltron

можешь поссмотреть как я в свое время брал и хранил иконки в аддоне LootInfo. Если не разберешься - завтра попробую объяснить наглядно что к чему :)

Link to comment
Share on other sites

Guest Valltron

итак, как это делал я :)

для начала я вытащил из ресурсов иконку, которую буду использовать для подстановки в аддоне иконок, для которых нет иконок :) и обозвал ее Placeholder. Файл с описанием моих текстур:

Code:
<UIRelatedTextures>

<Items>

<Item>

<name>Placeholder</name>

<textureItem href="PlaceholderOrange.(UISingleTexture).xdb#xpointer(/UISingleTexture)" />

</Item>

</Items>

</UIRelatedTextures>

как подготовить, собственно, текстуру я здесь описывать не буду, это отдельный разговор. и он обсуждался уже на этом форуме :)

и не забываем подключить наш файл с описанием текстур к аддону, если у вас его еще нет. в файле AddonDesc.(UIAddon).xdb прописываем строчку:

Code:
<textures href="textures/textures.(UIRelatedTextures).xdb"/>

Теперь идем, собственно, в наш скрипт.

Для начала я задал глобальную константу, чтобы моя иконка всегда была под рукой:

Code:
Global( "PLACEHOLDER", common.GetAddonRelatedTexture( "Placeholder" ) )

думаю тут все понятно.

теперь определяем переменную для нашего виджета, куда будем "рисовать" нашу иконку, пусть она так и называется wIcon:

Code:
wIcon = widget:GetChildChecked( "Icon", false )

Виджет Icon это у нас это WidgetPanel, на задний фон которого и будет накладываться наша текстура:

Code:
<WidgetPanel>

<Name>Icon</Name>

<BackLayer href="icon.(WidgetLayerSimpleTexture).xdb#xpointer(/WidgetLayerSimpleTexture)" />

<Placement>

<X>

<Align>WIDGET_ALIGN_LOW</Align>

<Pos>0</Pos>

<Size>48</Size>

</X>

<Y>

<Align>WIDGET_ALIGN_LOW</Align>

<Pos>8</Pos>

<Size>48</Size>

</Y>

</Placement>

</WidgetPanel>

снова возвращаемся к нашему скрипту. допустим ID предмета нам уже известно. тогда нам надо получить его ValuedObject:

Code:
local ItemVO = avatar.GetItemValuedObject( ID )

-- и из него получаем нашу иконку и куда нибудь сохраняем:

local icon = ItemVO:GetImage()

И затем в нужном нам месте, когда необходимо нарисовать нашу иконку мы пишем примерно следующее:

Code:
if icon then

wIcon:SetBackgroundTexture( icon )

else

wIcon:SetBackgroundTexture( PLACEHOLDER )

end

вот, както так :)

PS: конечно, многое упустил, оставил тошлько самое необходимое, основные функции. ну я, собственно, и не ставил перед собой цель написать мануал для новичков. Сам принцип, думаю, понятен. а как и где и когда это использовать - решать уже вам. ;)

Link to comment
Share on other sites

Спасибо, с иконками я разобралась и с ValuedObject тоже - жаль намного раньше - но на вашем аддоне - стыбрила оттуда как раз иконку с вопросом и вставила ее в AucEDSman.

но для них всех нужен действующий ID

а если вещь удалена, то его у нас нету...

а по имени вещи тебе ID не получить (( и иконку соответственно то же

но как то же а Action Panel иконку от удаленных вещей сохраняются! И у них даже есть своий ID - у удаленных вещей. Может кто видел функцию в API -

GetDeletedItemInfo ( ID )

??

Link to comment
Share on other sites

Guest Valltron

в каком виде предоставляется апи сейчас - думаю это не возможно, а на экшн панели, как я понимаю, при «привязке» создается просто свой экземпляр объекта, имеющий свой id...

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Guest Valltron

Ну это естественно, что должна быть какая то база, чтобы можно было в таблицы на сервере том же, находить и отдавать по ним инфу...

А нужно это для составления разных таблиц, графиков, баз и прочих подобных экшн- и инфо- панелей... А что нам ещё остается? Ведь реально полезное все равно нам не дадут что-то сделать, посчитают за ботов, итп... «автоматизации игрового процесса, и получения преимуществ...»

Link to comment
Share on other sites

идентификатор то я получаю - причем удаленной вещи - но к какому типу объектов он относится?

mount.GetInfo(Id)

avatar.getInfo(Id)

spell.GetInfo(Id)

...

???

то есть ИД вещи например = 12333, затем я ее привязываю к панели действий. ИД тот же. Потом удаляю вещь - и запрашиваю ИД с панели действий - возвращает новое значение ИД = 4122 !

и как эту удаленную вещь опять получить после перезагрузки клиента?

Link to comment
Share on other sites

это не Valued Object

а - objectId

и в API нет GetDELETEDitemInfo(Id)

и даже если вы получите имя удаленной вещи, то как получить ее НОВЫЙ ИД при перезагрузке персонажа?

короче нужен в АПИ:

object.GetInfoDeletedItem()

object.GetInfoDeletedObj()

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