Всем привет!
написал небольшой алгоритм предназначенный для проверки Списка команд который игрок может ввести в чате.
а именно команды для изменения камеры
Столкнулся с проблемой
написал небольшой алгоритм предназначенный для проверки Списка команд который игрок может ввести в чате.
а именно команды для изменения камеры
Столкнулся с проблемой
Блок кода!
call TriggerRegisterPlayerChatEvent(trig[4], Player(pi), "-", false)
//регистрация ивента для написания команды
//false Как Подстрока
local string array CommandsList
local integer array CommandsListGroupStart
local integer array CommandsListGroupEnd
local integer array CommandsListSubstringEnd
local integer CommandsListMaxCounter
local integer CommandsListGroupCounter
local integer CommandsListCounter
local integer CommandsListMax
set CommandsListGroupStart[1] = 1
set CommandsList[1] = "-cam"
set CommandsListSubstringEnd[1] = 4 // длина строки Первой команды
set CommandsList[2] = "-Cam"
set CommandsListSubstringEnd[2] = 4
set CommandsList[3] = "-camm"
set CommandsListSubstringEnd[3] = 5
set CommandsList[4] = "-Camm"
set CommandsListSubstringEnd[4] = 5
set CommandsList[5] = "-zoom"
set CommandsListSubstringEnd[5] = 5
set CommandsList[6] = "-Zoom"
set CommandsListSubstringEnd[6] = 5
set CommandsList[7] = "-кам"
set CommandsListSubstringEnd[7] = 7
set CommandsList[8] = "-Кам"
set CommandsListSubstringEnd[8] = 7
set CommandsList[9] = "-камм"
set CommandsListSubstringEnd[9] = 9
set CommandsList[10] = "-Камм"
set CommandsListSubstringEnd[10] = 9
set CommandsList[11] = "-зум"
set CommandsListSubstringEnd[11] = 7
set CommandsList[12] = "-Зум"
set CommandsListSubstringEnd[12] = 7
set CommandsListGroupEnd[1] = 12 // 1 group = 12
set CommandsListMax = 20
if CommandsListMax != 0 then
set CommandsListMaxCounter = 1
loop
exitwhen CommandsListMaxCounter > CommandsListMax // от 1 до 20 команд
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[CommandsListMaxCounter] then //-cam, -Cam
endif
set CommandsListMaxCounter = CommandsListMaxCounter + 1
endloop
endif
SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter])
//проверка Подстроки на наличие команды работает неправильно!
а именно для нее нет никакой разницы между
CommandsList[1] = "-cam"
и
CommandsList[3] = "-camm"
напишу команду
-camm сработает 2 раза
упростил его до банальной проверки в одном цикле, он все равно выводит 2 раза
Грешу на то что нельзя проверять
CommandsListSubstringEnd[CommandsListMaxCounter]
в цикле
CommandsList[1] = "-cam"
и
CommandsList[3] = "-camm"
напишу команду
-camm сработает 2 раза
упростил его до банальной проверки в одном цикле, он все равно выводит 2 раза
Грешу на то что нельзя проверять
CommandsListSubstringEnd[CommandsListMaxCounter]
в цикле
Принятый ответ
чтож
оказывается допустил ошибку при высчитывании
Нельзя
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[CommandsListMaxCounter] then //-cam, -Cam
// высчитывать Значение Цикла CommandsListMaxCounter внутри переменной CommandsListSubstringEnd
endif
он подберет Индекс CommandsListMaxCounter и будет проверять CommandsListSubstringEnd на наличие Меньшего Значения начиная с 1 до
CommandsListMax
его сразу надо высчитывать чтобы значения цикла не высчитывались
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMax]) == CommandsList[CommandsListMaxCounter] then
так должно выглядеть
отработает 1 раз для CommandsList с привязкой к СommandsListSubstringEnd
Centyrion, если удалить комментарии, то у тебя пустое условие.
Спасибо! воспользуюсь ссылкой
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Centyrion
выводит как
Занести в некий...Глобальный Массив Список команд
и одной проверкой SubString указать то что должно происходить в определенных блоках
проверяя Группу Команд Внутри этого массива и проверки Списка команд Определенной Группы Команд
но это невозможно
= 4
что может быть ровнее этого числа?
Ред. Centyrion
Призван задать ограничение чисто для Команды
дальше
будет работать
где
Ред. Centyrion
а у меня Список
Стандартным методом проверки Подстроки?
Ред. nazarpunk