Создание простой команды Давайте вернемся к содержанию script.lua файл. Как упоминалось выше, мы хотим предоставить команду, чтобы создать автомобиль рядом с вашей текущей позиции в игре. Во-первых, мы должны создать функцию мы хотим, чтобы звонить и обработчик команды, который создает команду игрок сможет ввести в консоли.
Code
-- create the function the command handler calls, with the arguments: thePlayer, command, vehicleModel
function createVehicleForPlayer(thePlayer, command, vehicleModel)
-- create a vehicle and stuff
end
-- create a command handler
addCommandHandler("createvehicle", createVehicleForPlayer)
Примечание: Имена функций можно нажимать в примерах кода в вики и связанные с документацией функций.
О обработчиков команд Первый аргумент addCommandHandler это имя команды игрок сможет войти, второй аргумент функции это вызов, в этом случае createVehicleForPlayer.
Если у вас есть уже опыт в сценарии, вы будете знать, что вы называете функцию следующим образом:
FunctionName (аргумент1, argument2, argument3, ..)
FunctionName (thePlayer, имя_команды, argument3, ..)
Если у нас есть близкий взгляд на нижнем примере выше, мы можем видеть аргумент1 является thePlayer и argument2 имя_команды. thePlayer просто тот, кто набрал команду, так как там тебя зовут, переменная будет содержать игрок, который активировал команду. имя_команды просто команду они ввели. Так что, если они ввели "/ приветствовать", этот аргумент будет содержать "приветствовать". Аргумент 3, что-то дополнительно игрок набрал, вы узнаете немного дальше в учебнике. Никогда не забывайте, что первые 2 аргументы стандартные рассуждения, но вы можете назвать их все, что угодно.
Мы назвали addCommandHandler функции таким образом, уже и так createVehicleForPlayer является функцией тоже это можно так назвать, как хорошо. Но мы используем обработчик команд для той, которая называет его таким же образом, внутренне.
Например: Кто-то типа "createvehicle 468" игре в консоли на нерест Санчес, обработчик команды звонки createVehicleForPlayer функции, как если бы мы эту строку кода в скрипт:
Code
createVehicleForPlayer(thePlayer,"createvehicle","468") -- thePlayer is the player element of the player who entered the command
Как мы видим, он предоставляет несколько параметров: игрок, который называют команду, команду он вошел и любой текст, он после этого, в данном случае "468" в качестве транспортного средства для ID Санчес. Первые два параметра же самое со всеми обработчиков команд, которые вы можете прочитать на странице AddEventHandler. Для этого, вы всегда должны определить, по крайней мере эти два параметра использовать какие-либо после этого (например, для обработки текста, введенного после команды, как в нашем примере модели автомобиля ID). Примечание: Вы должны добавить после команды обработчика вы определили функцию обработчика, иначе она не может его найти. Порядок выполнения вопросов.
Дать функции
Для того, чтобы заполнить функции мы создали, мы должны думать о том, что мы должны сделать:
Получить позиции игроков, поэтому мы знаем, где на нерест транспортного средства (мы хотим, чтобы появиться рядом игроков)
Вычислить позицию мы хотим, чтобы породить транспортного средства на (мы не хотим, чтобы он появится в игрока)
Spawn автомобиля
Проверьте, если он был породил успешно, или вывод сообщения
Для достижения наших целей, мы должны использовать несколько функций. Чтобы найти функцию необходимо использовать, мы должны посетить Список серверных функций. В первую очередь надо функцию, чтобы получить позиции игроков. Поскольку игроки элементов, первый прыжок с элементом функций, где мы находим getElementPosition функции. При нажатии на имя функции в списке, вы получите описание функции. Там мы видим синтаксис, что он возвращается и, как правило пример. Синтаксис показывает нам, какие аргументы мы можем или должны представить.
Для getElementPosition, синтаксис:
плавать, плавать, плавать getElementPosition (элемент theElement)
Три поплавка перед именем функции являются возвращаемого типа. В данном случае это означает, что функция возвращает три числа с плавающей точкой. (X, Y и Z) в круглых скобках, можно увидеть, что аргументы, которые вы должны представить. В этом случае только элемент, положение которой вы хотите получить, что игрок в нашем примере.
Code
function createVehicleForPlayer(thePlayer, command, vehicleModel)
-- get the position and put it in the x,y,z variables
-- (local means, the variables only exist in the current scope, in this case, the function)
local x,y,z = getElementPosition(thePlayer)
end
Next we want to ensure that the vehicle won't spawn directly in the player, so we add a few units to the x variable, which will make it spawn east from the player.
function createVehicleForPlayer(thePlayer, command, vehicleModel)
local x,y,z = getElementPosition(thePlayer) -- get the position of the player
x = x + 5 -- add 5 units to the x position
end
Теперь нам нужно еще одна функция, один на нерест автомобиля. Мы еще раз искать его на список серверных функций, на этот раз - если уж мы говорим о транспортных средствах - в разделе автомобиля функций, где мы будем выбирать createVehicle. В синтаксисе этой функции, у нас есть только один тип возвращаемого значения (что чаще), автомобиль элемент, который указывает на автомобиле мы только что создали. Кроме того, мы видим, что некоторые аргументы заключены в [], который означает, что те не являются обязательными. У нас уже есть все аргументы мы должны для createVehicle в нашей функции: позиция, которую мы только что рассчитывается в X, Y, Z переменных и модель ID, что мы обеспечили с помощью команды ("createvehicle 468") и может получить доступ в функции vehicleModel переменной.
Code
function createVehicleForPlayer(thePlayer, command, vehicleModel)
local x,y,z = getElementPosition(thePlayer) -- get the position of the player
x = x + 5 -- add 5 units to the x position
-- create the vehicle and store the returned vehicle element in the ''createdVehicle'' variable
local createdVehicle = createVehicle(tonumber(vehicleModel),x,y,z)
end
Code
function createVehicleForPlayer(thePlayer, command, vehicleModel)
local x,y,z = getElementPosition(thePlayer) -- get the position of the player
x = x + 5 -- add 5 units to the x position
local createdVehicle = createVehicle(tonumber(vehicleModel),x,y,z)
-- check if the return value was ''false''
if (createdVehicle == false) then
-- if so, output a message to the chatbox, but only to this player.
outputChatBox("Failed to create vehicle.",thePlayer)
end
end
addCommandHandler("createvehicle", createVehicleForPlayer)
Как вы можете видеть, мы ввели еще одну функцию с outputChatBox. К этому моменту вы должны иметь возможность изучить документацию странице функции самостоятельно. Для более продвинутых скриптов, пожалуйста, ознакомьтесь с Map Manager.
Копирование урока на другие сайты запрещено!