Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

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


jedbez

Рекомендуемые сообщения

Есть код

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 только шаблоны.

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

Ссылка на комментарий
Поделиться на другие сайты

Global ("itemsSell",{

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

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

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

...

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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 опять же очищается ссылка, и если на таблицу не осталось никаких ссылок, то она будет уничтожена сборщиком мусора (в теории).

 

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

Ссылка на комментарий
Поделиться на другие сайты

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]}

 

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

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

 

Пример1:

А=2

Б=А

Б=5

А==2, Б==5.

 

Пример2:

А.поле=2

Б=А

Б.поле=5

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

 

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

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

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

 

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

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

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования