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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Неверная кодировка в логе + сравнение таблиц


Oceangrave

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

Здравствуйте. Есть два вопрос, подскажите пожалуйста если кто-то знает.
Вопрос 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ы Не бейте тряпками, только учусь

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

А в какой кодировке у вас кириллический текст в коде? Должна быть кириллица, cp1251.

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

1 час назад, Lafayette сказал:

А в какой кодировке у вас кириллический текст в коде? Должна быть кириллица, cp1251.

Декодер говорит что оно windows-1251. 
Сам прикол в том что если я выведу только переменную buffName - то все будет отлично, но в связке или попытке как-то вывести 2 переменные начинается вот такой аншлаг

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

5 минут назад, Oceangrave сказал:

Декодер говорит что оно windows-1251. 
Сам прикол в том что если я выведу только переменную buffName - то все будет отлично, но в связке или попытке как-то вывести 2 переменные начинается вот такой аншлаг

Поправлено: Не верно понял вопрос, в коде был UTF-8, конвертнул в 1251
Теперь в логе отображается адекватный текст. 
Вопрос 1 - решен)

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

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

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

 

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

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 (а может и с пропусками) или во второй таблице не будет элемента с таким индексом, то вылезет ошибка

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

14 часов назад, Slashuur сказал:

Приветствую) ну код рабочий сам должен быть. Другой вопрос что он делает и зачем. Что хранится в этих таблицах table1 и table2 и как они проиндексированы? Сейчас получается, что сравниваются имена бафов в таблицах под одним и тем же индексом. Ну и если индексы не с 0 (а может и с пропусками) или во второй таблице не будет элемента с таким индексом, то вылезет ошибка

В таблце 1 хранятся заранее определенные имена {"текст","текст","текст"}

Во вторую таблицу я через цикл записываю имена бафов которые есть на персонаже.

Как раз в фунции сравнию значения одной и второй таблицы и если нахожу совпадения, то вывожу в лог.

Единственное что в коде нету обнуления индекса

Надеюсь корректно пояснил)
*Обнуляю индекс buffIndex чтоб он начинал с первого элемента заново проходить (до тех пор пока не найдет совпадение по этому индексу

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

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

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

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

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

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

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

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

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

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