Jump to content

Digest October-December

We talk about what was done and updated in the past month. We help keep abreast of events.

December November October

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

A statistics bot for Telegram

Convenient analytics right on your phone.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

The Addons Updater

Let us to introduce the addons updating software and to share the details

Read more Download

Обрубание счетчика по непонятным причинам


jedbez

Recommended Posts

Есть код

local item = avatar.GetInventoryItemIds()

for i=0,avatar.GetInventorySize() - 1 do

if item then

local itemInfo = avatar.GetItemInfo( item )

for ii=1,GetTableSize(itemsSell) do

if itemsSell[ii] then

if string.find(userMods.FromWString(itemInfo.name), itemsSell[ii][1],1) then

-- Найден предмет в инвентаре согласно конфигу

kol=kol+1

Spisok[kol]=itemsSell[ii]

Spisok[kol][1]=userMods.FromWString(itemInfo.name)

end

end

end

end

end

При дабавлении строчки

Spisok[kol][1]=userMods.FromWString(itemInfo.name)

перестает искать следующие предметы в инвентаре, без неё ищет все правильно, но я название хочу записать. А в itemsSell только шаблоны.

Позскажите, может там со стрингом чтото не то.

Link to comment
Share on other sites

Global ("itemsSell",{

{"схема",52,150,1,true},

{"амальгама",1,75,1,true},

{"Шагреневый фрагмент кожи",48,2,1,true},

...

Link to comment
Share on other sites

была похожая задачка с числами и массивами, не помню как решили

из идей только не совсем элегантное решение проверить:

Spisok[kol]={userMods.FromWString(itemInfo.name), itemsSell[ii][2], itemsSell[ii][3], itemsSell[ii][4], itemsSell[ii][5]}

Link to comment
Share on other sites

Logg, этот случай другой. Тут я не понимаю в чем проблема.

 

Важно понимать что код

    Spisok[kol]=itemsSell[ii]
    Spisok[kol][1]=userMods.FromWString(itemInfo.name)

равносилен коду

    itemsSell[ii][1]=userMods.FromWString(itemInfo.name)
    Spisok[kol]=itemsSell[ii]

Т.е.

ТаблицаА = ТаблицаБ

Присвоит переменной ТаблицаА значение переменной ТаблицаБ, которое является ссылкой. Т.е. и в первой и во второй переменной будут одинаковые ссылки на одну и ту же таблицу, и с помощью обоих переменных можно будет взаимодействовать с ней. Таблица при этом не копируется. Единственный способ создать новую таблицу - написать {}. Т.е. каждый раз при написании {} (или {1,2,3,4} и т.п.) создается новая таблица. При написании ТабА = ТабБ - производятся операции только с переменными сдержащими ссылку на таблицу. При написании ТабА = nil опять же очищается ссылка, и если на таблицу не осталось никаких ссылок, то она будет уничтожена сборщиком мусора (в теории).

 

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

Link to comment
Share on other sites

Logg, этот случай другой. Тут я не понимаю в чем проблема.

 

Единственный способ создать новую таблицу - написать {}. Т.е. каждый раз при написании {} (или {1,2,3,4} и т.п.) создается новая таблица. При написании ТабА = ТабБ - производятся операции только с переменными сдержащими ссылку на таблицу. При написании ТабА = nil опять же очищается ссылка, и если на таблицу не осталось никаких ссылок, то она будет уничтожена сборщиком мусора (в теории).

 

Создал промежуточную таблицу, проделал с ней операции по присваиванию. Но в момент abr[kol][1]=userMods.FromWString(itemInfo.name) опять происходит прерывание. Что то тут странное. В конце дал Spisok=abr. 

 

 

была похожая задачка с числами и массивами, не помню как решили

из идей только не совсем элегантное решение проверить:

Spisok[kol]={userMods.FromWString(itemInfo.name), itemsSell[ii][2], itemsSell[ii][3], itemsSell[ii][4], itemsSell[ii][5]}

 

Я понимаю, что не совсем элегантно, но *** заработало.

 

Спасибо за идеи.

Link to comment
Share on other sites

abr[kol][1]=userMods.FromWString(itemInfo.name) опять происходит прерывание. Что то тут странное. В конце дал Spisok=abr.

Повторю, каждый раз когда ты производишь операцию присваивания "таблицы", ты не копируешь таблицу.

 

Пример1:

А=2

Б=А

Б=5

А==2, Б==5.

 

Пример2:

А.поле=2

Б=А

Б.поле=5

А.поле==5, Б.поле==5.

 

Т.е. А и Б это одна и та же таблица, и любое действие над А будет равносильно действию над Б.

Я понимаю, что не совсем элегантно, но *** заработало.

Тут создается НОВАЯ таблица.

 

 

Вопрос в том, почему в предыдущем варианте происходит остановка.

Link to comment
Share on other sites

Вопрос в том, почему в предыдущем варианте происходит остановка.
 

 

Точно..... дошло.

Дела в том что А является какбы шаблоном. И при изменении Б.поле, меняется и содержимое А, т.е меняется сам шаблон поиска и естественно он уже найден и дальше искать нечего. все правильно.

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use