Oceangrave Posted April 6, 2022 Share Posted April 6, 2022 Здравствуйте. Есть два вопрос, подскажите пожалуйста если кто-то знает.Вопрос 1: Столкнулся с проблемой, что при следующей структуре кода: local buffList={"Аспект Нападения","Адаптивная броня"} function equal(table1,table2) local buffIndex = 0 for _, value in pairs(table1) do buffIndex=buffIndex+1 local buffName = table2[buffIndex] if buffName == value then LogInfo("Buff found") else LogInfo("Buff not found:",buffName," Value:",value) buffIndex=0 end end end Получаю следующий вид лога: ....... Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value:Спасительный Щит Йокке Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value:Волшебная Фигурка Мэйвэ Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value: Buff not found:Аспект Нападения Value:Испытательный срок Buff not found:Аспект Нападения Value:Укрытие Buff not found:Аспект Нападения Value:Аспект Нападения Buff not found:Аспект Нападения Value:Адаптивная броня Buff not found:Аспект Нападения Value:Абсолютный Барьер Просперо ..... Собственно, если выводить значения отдельно (buffName или value) то текст будет адекватным, но если выводить их вместе начинает происходить вот такая ересь.Вопрос 2: Насколько правильный подход я использую? Мне необходимо получить информацию о баффах на игроке. Я записываю эту информацию в новую таблицу. После этого, мне надо сравнить - имеются ли значения из этой таблицы, в другой таблице (в вопросе 1 где представлен код я как раз это пытаюсь реализовать) p.Sы Не бейте тряпками, только учусь Quote Link to comment Share on other sites More sharing options...
Lafayette Posted April 7, 2022 Share Posted April 7, 2022 А в какой кодировке у вас кириллический текст в коде? Должна быть кириллица, cp1251. Quote Link to comment Share on other sites More sharing options...
Oceangrave Posted April 7, 2022 Author Share Posted April 7, 2022 (edited) 1 час назад, Lafayette сказал: А в какой кодировке у вас кириллический текст в коде? Должна быть кириллица, cp1251. Декодер говорит что оно windows-1251. Сам прикол в том что если я выведу только переменную buffName - то все будет отлично, но в связке или попытке как-то вывести 2 переменные начинается вот такой аншлаг Edited April 7, 2022 by Oceangrave Quote Link to comment Share on other sites More sharing options...
Oceangrave Posted April 7, 2022 Author Share Posted April 7, 2022 5 минут назад, Oceangrave сказал: Декодер говорит что оно windows-1251. Сам прикол в том что если я выведу только переменную buffName - то все будет отлично, но в связке или попытке как-то вывести 2 переменные начинается вот такой аншлаг Поправлено: Не верно понял вопрос, в коде был UTF-8, конвертнул в 1251 Теперь в логе отображается адекватный текст. Вопрос 1 - решен) Quote Link to comment Share on other sites More sharing options...
Oceangrave Posted April 7, 2022 Author Share Posted April 7, 2022 Не уверен насколько это верный подход, но таким образом я смог сравнить и найти необходимое мне значение. Был бы благодарен если кто-то заметит здесь ошибки или как это можно было бы улучшить function equal(table1,table2) local buffIndex = 0 for _, table1_value in pairs(table1) do local buffIndex=buffIndex+1 local buffName = table2[buffIndex] local f_result = common.CompareWString(userMods.ToWString(buffName),table1_value) if f_result==0 then LogInfo("Что мы ищем: ", buffName," | ", " Где мы ищем:", table1_value, " | ", "Результат: ",f_result) end Quote Link to comment Share on other sites More sharing options...
Slashuur Posted April 8, 2022 Share Posted April 8, 2022 16 часов назад, Oceangrave сказал: Не уверен насколько это верный подход, но таким образом я смог сравнить и найти необходимое мне значение. Был бы благодарен если кто-то заметит здесь ошибки или как это можно было бы улучшить function equal(table1,table2) local buffIndex = 0 for _, table1_value in pairs(table1) do local buffIndex=buffIndex+1 local buffName = table2[buffIndex] local f_result = common.CompareWString(userMods.ToWString(buffName),table1_value) if f_result==0 then LogInfo("Что мы ищем: ", buffName," | ", " Где мы ищем:", table1_value, " | ", "Результат: ",f_result) end Приветствую) ну код рабочий сам должен быть. Другой вопрос что он делает и зачем. Что хранится в этих таблицах table1 и table2 и как они проиндексированы? Сейчас получается, что сравниваются имена бафов в таблицах под одним и тем же индексом. Ну и если индексы не с 0 (а может и с пропусками) или во второй таблице не будет элемента с таким индексом, то вылезет ошибка Quote Link to comment Share on other sites More sharing options...
Oceangrave Posted April 8, 2022 Author Share Posted April 8, 2022 (edited) 14 часов назад, Slashuur сказал: Приветствую) ну код рабочий сам должен быть. Другой вопрос что он делает и зачем. Что хранится в этих таблицах table1 и table2 и как они проиндексированы? Сейчас получается, что сравниваются имена бафов в таблицах под одним и тем же индексом. Ну и если индексы не с 0 (а может и с пропусками) или во второй таблице не будет элемента с таким индексом, то вылезет ошибка В таблце 1 хранятся заранее определенные имена {"текст","текст","текст"} Во вторую таблицу я через цикл записываю имена бафов которые есть на персонаже. Как раз в фунции сравнию значения одной и второй таблицы и если нахожу совпадения, то вывожу в лог. Единственное что в коде нету обнуления индекса Надеюсь корректно пояснил) *Обнуляю индекс buffIndex чтоб он начинал с первого элемента заново проходить (до тех пор пока не найдет совпадение по этому индексу Edited April 8, 2022 by Oceangrave Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.