Общая тема Скриптинг на Луа
DrygC 04.06.2019 в 13:35

Пользователь

Репутация: 0 бал.

Замечания: 2 бал.

Здравствуйте! У меня такая проблемка, практикуюсь в скриптинге, хочу написать скрипт, который по команде в чате будет включать или выключать плавучие машины, в итоге машины становятся плавучими всегда, как я понял скрипт после выполнения не начинается сначала. Как его зациклить так, что бы он не вызывал краши, я пробовал супер костыльно через repeat local b=0 until b==2, конечно такой код вызывал вылеты, но почему бы и не попробовать ;D
В общем вот мой код:
local a
--local b = 0
function hoveroff() a = false end
function hoveron() a = true end
addCommandHandler ( "hoveroff", hoveroff)
addCommandHandler ( "hoveron", hoveron)
if a == nil then a = true end
--repeat
addEventHandler( "onClientResourceStart", resourceRoot, function( )
setWorldSpecialPropertyEnabled( "hovercars", a )
end)

--until b == 2
LordOri 04.06.2019 в 17:47

Проверенный

Репутация: 45 бал.

Замечания: 0 бал.

DrygC, как один из множеееества вариантов)


function changeHover(value)
if value == nil then
value = false
end
setWorldSpecialPropertyEnabled( "hovercars", value )
end

function hoveroff() changeHover(false) end
function hoveron() changeHover(true) end

addCommandHandler ( "hoveroff", hoveroff)
addCommandHandler ( "hoveron", hoveron)

будет ли работать я не знаю ведь пишу прям из браузера)
DrygC 04.06.2019 в 20:02

Пользователь

Репутация: 0 бал.

Замечания: 2 бал.

Ссылка
Не, всё равно что-то ему не нравится..

Перемудрил сам себя... Получилось реализовать намного проще, почему я дудумался до этого только сейчас?

function hoveroff() 
setWorldSpecialPropertyEnabled( "hovercars", false )
outputChatBox("Ховеры выключены!")
end
function hoveron()
setWorldSpecialPropertyEnabled( "hovercars", true )
outputChatBox("Ховеры включены!")
end
addCommandHandler ( "off", hoveroff)
addCommandHandler ( "on", hoveron)


Не могли бы посмотреть другой код? Тут уже задача ставить маркер (это у меня получилось) и после захода на маркер телепортнуть игрока в точку x+5, y+5, z+1. Но вот не получается задать координаты игрока из клиентской части сервера в серверную часть, то есть я тригерю функцию в серверной части, в которой присваиваю значение plr = getElementPosition(getLocalPlayer()). Но вот на сервере debugscript пишет, что x = nil .

P.S. Проставил точные координаты, вместо x y z для проверки телепорта через команду, что получается, вся проблема именно в телепорте игрока по его координатам + какое-то расстояние.

Client.lua
addEvent ("get", true)
function coord ()
plr = getElementPosition(getLocalPlayer())
end
addEventHandler ("get", resourceRoot, coord)

function coordinati ()
local x,y,z = getElementPosition(getLocalPlayer())
marker = createMarker ( x, y, z-1, "cylinder", 5, 0, 255, 0, 100 )
outputChatBox( "[Сервер]: Маркер успешно создан!" )
end

addCommandHandler ( "m", coordinati )

--[[addEvent ("get", true)
function getplayer()
pl = localPlayer
end
addEventHandler("get", resourceRoot, getplayer)
--]]
--[[addEvent("get", true)
function player()
plr = LocalPlayer
end
addEventHandler("get", resourceRoot, player)
--]]


Server.lua
	setFPSLimit ( 60 )
triggerClientEvent("get", root, plr)
function teleport(plr)

local x,y,z = plr
spawnPlayer(plr, -2496, -622, 134)

end
addEventHandler("onPickupHit", plr, teleport)
--[[ function tp (plr)
triggerClientEvent("get", root, plr)
spawnPlayer(plr, -2496, -622, 134)

end
--]]
addCommandHandler ( "tp", teleport )
decided96 07.06.2019 в 18:09

Проверенный

Репутация: 102 бал.

Замечания: 0 бал.

Функция getElementPosition() вовращает три значения, поэтому local plr это не правильно, а local x,y,z правильно
Войдие или зарегистрируйтесь что бы написать сообщение