Я только что начал новую версию моей модификации Side Server Wars Crysis под названием InfinityX. Для лучшего управления я помещал функции внутри таблиц, поскольку он выглядит аккуратно, и я могу группировать функции вместе (например, Core.PlayerHandle: GetIp (плеер)), но у меня возникла проблема. Проблема заключается в том, что указанный метод для получения имени игрока, player:GetName()
рассматривается как недопустимый метод, когда метод действительно полностью действителен.Недопустимый метод, когда метод действителен
Я хотел бы знать, вызывает ли проблема использование нижеприведенной структуры, и если да, то как ее исправить. Это первый раз, когда я использовал эту структуру для функций, но это уже проще, чем старый метод, который я использовал.
Кодекс:
Event =
{
PlayerConnect = function(player)
Msg.All:CenteredConsole("$4Event$8 (Connect)$9: $3"..player:GetName().." on channel "..player.actor:GetChannel());
System.LogAlways(Default.Tag.."Incoming Connect on Channel "..player.actor:GetChannel());
Event:Log("Connect", player);
end;
};
Ниже код работает, когда я обойти функцию и поместить код непосредственно там, где это необходимо:
Msg.All:CenteredConsole("$4Event$8 (Connect)$9: $3"..player:GetName().." on channel "..player.actor:GetChannel());
System.LogAlways(Default.Tag.."Incoming Connect on Channel "..player.actor:GetChannel());
Ошибка:
[Warning] [Lua Error] infinityx /main/core.events.lua:23: попытка вызвать метод 'GetName' (нилъ значение)
PlayerConnect, (infinityx/main/core.events.lua: 23) ConnectScript, (infinityx/main/core.main.lua: 52) OnClientEnteredGame, (scripts/gamerules/instantaction.lua: 511) (null) (scripts/gamerules/teaminstantaction.lua: 520)
Любое уточнение было бы оценено. Спасибо :)
Два значения «игрок» являются одинаковыми , Они называются главной функцией и не должны иметь никаких различий. Я только что провел дополнительное тестирование, и кажется, что у «игрока» нет ничего. Однако, если «игрок» пуст, клиент не будет иметь никакого имени. Я попробую еще раз, используя чистый набор файлов, чтобы увидеть, произошло ли что-то в этом месте. – cybermonkey