Roy
Они зависят от С++ вызовов
Roy
У тебя где-то в коде написано: CoolDownHouse["Kraken"] Проверь.
Нет, мне исключение точно показывает где ошибка
Roy
"Kraken" он получит при форматировании строки
Roy
string.format([[CoolDownHouse['%s'].UsedTime = %d]],name,cd)
Roy
вон же он форматирует строку используя name
Roy
Причем форматирует корректно
Leon174
Да с чего нельзя-то? Выдерни этот тестовый кусок и попробуй. Ролей же у тебя конечное количество, отправляешь, проверяешь.
Snusmumriken
Оно не вызывается, пользователь Kraken НЕ СОЗДАН, его нет.
Roy
А это значит что поле почему то отсутствует
Snusmumriken
Причем форматирует корректно
Удали код про кракена, или переключи на пользователя который есть. Для него был вызван этот код.
Snusmumriken
ВОТ ТАК НЕТУ ))
Leon174
Да с чего нельзя-то? Выдерни этот тестовый кусок и попробуй. Ролей же у тебя конечное количество, отправляешь, проверяешь.
Получение GuilID и name так сложно сымитировать или переписать? Там из базы же что-то дергается?
Snusmumriken
Карочи, просто возьми CoolDownHouse и выведи в файл в момент чтения.
Roy
Погодите-ка, а может там ник из английский + русских символов состоит?
Leon174
Или принтами выводи, что там получается.
Roy
может ли такое сломать таблицу?
Roy
Странно то, что проблемы именно с персонажем Kraken
Leon174
Я вот не пробовал кириллицу в качестве ключей.
Roy
с другими все норм
Roy
У него с ником что-то мутное походу
Snusmumriken
Погодите-ка, а может там ник из английский + русских символов состоит?
Просто возьми и просто выведи содержимое в файл.
Snusmumriken
Содержимое таблицы.
Roy
а как это сделать?
Snusmumriken
И посмотри, есть там твой кракен или нет, в момент чтения кракена.
Snusmumriken
Как — операции с файлами и допустим serpent.lua
Roy
Работает.
Там и английские и русские ?
Roy
Походу @Snusmumriken ты прав
Snusmumriken
Я знаю.
Roy
Я только щас заметил, что мой Kraken находится вообще на другом game server'е
Roy
а у меня луа скрипт исключение выбивает на первом гейм сервере
Roy
Дичь какая та
Roy
Эти таблицы никак не должны знать друг о друге же
Roy
Получается, что игрок сейчас подключен к GameServer1 и там же эти скрипты луашные гоняются, а есть GameServer2 (там другие локации держатся), вот почему то у меня исключение выбрасывается на GameServer2 для Kraken ника, а он находится на GameServer1
Roy
как это вообще возможно?
Snusmumriken
Ну это тебя надо спрашивать )
Roy
Да я рефакторю серверные файлы одной игрули, код не я же писал
Roy
Но я не вижу чтоб где то обращения были, но меня напрягает Lua_All
Roy
Может он передает по сети эту команду
Roy
и она вызывается на другом сервере
Roy
Обратите внимание
Roy
в cmd заносится результат форматирования
Roy
а потом передается по сети
Roy
Скорее всего в этом и есть проблема, надо попробовать найти где этот пакет от Lua_All обрабатывает GameServer
Leon174
Но разве эта таблице не инициализируется на строке 304?
Так не инициализируется же. В 304 строке if CoolDownHouseCd, а выше local CoolDownHouseCd = false
Roy
Там в оригинале true
Roy
и при тестах true щас стоит
Roy
скрин старый (сделан после отключения этой задержки чтоб не крашило)
Leon174
Прекрасно. А мы должны догадываться по устаревшему коду?
Roy
Не обратил внимания
Roy
Если я выполню ту команду как lua скрипт на С++, без создания lua файла, то оно в памяти будет лежать?
Roy
Допустим, прилетела мне команда CoolDownHouse[Kraken].UsedTime = 1000;
Roy
Я выполняю его как скрипт
Roy
Оно в памяти луа останется или нет чтоб когда уже выполнится .lua файл таблица там была
Leon174
Меня вот return в 309 строке еще смущает.
Snusmumriken
Допустим, прилетела мне команда CoolDownHouse[Kraken].UsedTime = 1000;
Ну во-первых, выполнять команды которые приходят как скрипты — это весьма дырявое занятие, во-вторых — ещё хуже не вызывать их в pcall/xpcall.
Snusmumriken
Ну типа тебе приходит невалидный код на исполнение — возвращай ошибку.
Snusmumriken
Допустим, прилетела мне команда CoolDownHouse[Kraken].UsedTime = 1000;
И кстати, тут забылы кавычки CoolDownHouse["Kraken"].UsedTime = 1000; Потому что это не переменная Kraken а строка. А если переменная — она должна быть названа типа username.
Leon174
Почему?
Так если if cooldown > 0, то до string.format не доходит.
Roy
Так если if cooldown > 0, то до string.format не доходит.
Там все логично, функция проверяет чтоб не флудили телепорт команду
Leon174
И кстати, тут забылы кавычки CoolDownHouse["Kraken"].UsedTime = 1000; Потому что это не переменная Kraken а строка. А если переменная — она должна быть названа типа username.
Вот почему я не люблю такие забубенные конструкции. На кой ляд так кучеряво писать, типа круто штоле?
Snusmumriken
Тут проблема в волшебной строке
Roy
а я могу через lua функцию выполнить lua команду?
Roy
CoolDownHouse["Kraken"].UsedTime = 1000;
Roy
Допустим, аргументом пришла вот такая строка (как выше)
Roy
Snusmumriken
str = [[CoolDownHouse["Kraken"].UsedTime = 1000;]] local f, err = loadstring(str) if f then f() end
Roy
Щас попробую
Leon174