В данном уроке будет показан пример, как можно установить смену одежды с интервалом в 2 секунды.
Сначала, мы собираемся рассчитать, сколько штук в каждой категории, и сохранят счет в этой таблице:
PHP код:
local count = {}
Мы имеем 18 типов одежды, для проверки (они будут зарегистрированы вместе с остальной частью ID в релизе):
PHP код:
for type = 0, 17 do
--инициализация счетчика
local clothes = 0
-- Мы увеличиваем счетчик до тех пор пока не получим любой неправильный ID
while getClothesByTypeIndex ( type, clothes ) ~= false
do clothes = clothes + 1 end
-- помните, что последний не существует: мы должны удалить его
-- от счета, сохраняя его
count[type] = clothes - 1
end
Создание функции изменения одежды
Теперь мы создадим функцию, изменяющую непосредственно одежду. Должно быть взято несколько вещей в аккаунт, которые будут записываться в один момент. Декларация начинается здесь:
PHP код:
function doChangeClothes ()
Теперь мы собираемся запустить это для каждого присоединяемого игрока. Это делается восстановлением таблицы каждого игрока на сервере, затем перекрутить через таблицу и поменять их одежду. Сначала мы восстановим таблицу наших игроков:
PHP код:
local players = getElementsByType ( "player" )
Затем мы используем Lua для (for) прокрутки, чтобы пройти каждого игрока в этой таблице.
PHP код:
for i, player in players do
Сначала, мы должны выбрать случайный тип, используя Lua math.random. Мы оставим татуировки (тип ID 4-12), потому что они не видимы с одеждой в любых случаях:
PHP код:
local accessory = math.random ( 0, 1 )
if accessory == 1 then
--выберите дополнительный тип
type = math.random ( 13, 17 )
else
--выберите тип причесок/рубашек/брюк/ботинок
type = math.random ( 0, 3 )
end
Полные костюмы (тип ID 17) применены сверху рубашек и брюк, таким образом, мы хотели бы их удалить, если любой из них будет выбран:
PHP код:
if type == 0 or type == 2 then
removePlayerClothes ( player, 17 )
end
Теперь, когда мы имеем наш тип, мы должны выбрать случайную часть одежды в пределах этого:
PHP код:
local clothing = math.random ( 0, count[type] )
Только добавление этой одежды игроку оставляем, чтобы сделать.
PHP код:
--мы получаем текстуру и модель через getClothesByTypeIndex
texture, model = getClothesByTypeIndex ( type, clothing )
--и мы добавляем эту часть одежды игроку.
addPlayerClothes ( player, texture, model, type )
Мы не должны забывать закрывать "для" ("for") прокрутки, и декларации функции.
Запуск функции
Наконец, мы неоднократно вызовем нашу функцию, когда этот скрипт "ресурс" ("resource") (о нём будут объяснено позже) начат.
PHP код:
addEventHandler("onResourceStart", getRootElement(), "clothesStart")
function clothesStart ( resourcename )
Наша функция clothesStart должна быть вызвана только, когда этот (this) скрипт загрузится. Следующая линия заставляет скрипт игнорировать любые загрузки ресурса кроме него собственного:
PHP код:
if resourcename ~= getThisResource() then return end
Наконец, мы будем использовать функцию setTimer, как в прошлом руководстве, для того чтобы вызывать функцию каждые две секунды.
PHP код:
--0 подразумевает бесконечное время, пока таймер не будет закончен
setTimer ( "doChangeClothes", 2000, 0 )
end
Автор: посторонний сайт