NoName74 Posted May 21, 2013 Share Posted May 21, 2013 Всем привет. Потихоньку изучаю LUA. Добился рабочих ворот. Они открываются и закрываются по командам. Работают вобщем. Но когда я прописываю команду открытия и они открываются - это вижу только я. Как я понял, это из-за того, что скрипт выполняется на клиентской стороне. Как переделать его под "серверсайд"? JS_od_in.lua local gate = createObject(971, 690.29760742188, 1852.5532226562, 7.0595626831055, 0, 0, 352) function MoveGate (cmd1) moveObject(gate, 1000, 682.79760742188, 1853.6032714844, 0.0595626831055) outputChatBox("Ворота открылись.", source) end addCommandHandler("OpenGate",MoveGate) function MoveGateBack (cmd2) moveObject(gate, 1000, 690.29760742188, 1852.5532226562, 7.0595626831055) outputChatBox("Ворота закрылись.", source) end addCommandHandler("CloseGate",MoveGateBack) meta.xml type="script" name="Gates" author="NNM.74" version="1.0.0" /> Link to comment
TheNormalnij Posted May 21, 2013 Share Posted May 21, 2013 type="server" MoveGate( source, cmdname ) MoveGateBack (source, cmdname ) Link to comment
NoName74 Posted May 21, 2013 Author Share Posted May 21, 2013 type="server"MoveGate( source, cmdname ) MoveGateBack (source, cmdname ) Надеюсь, я правильно Вас понял? local gate = createObject(971, 690.29760742188, 1852.5532226562, 7.0595626831055, 0, 0, 352) function MoveGate (gate, cmd1) moveObject(gate, 1000, 682.79760742188, 1853.6032714844, 0.0595626831055) outputChatBox("Ворота открылись.", source) end addCommandHandler("OpenGate",MoveGate) function MoveGateBack (gate, cmd2) moveObject(gate, 1000, 690.29760742188, 1852.5532226562, 7.0595626831055) outputChatBox("Ворота закрылись.", source) end addCommandHandler("CloseGate",MoveGateBack) type="script" name="Gates" author="NNM.74" version="1.0.0" /> Link to comment
DakiLLa Posted May 21, 2013 Share Posted May 21, 2013 Проверьте addCommandHandler на вики и посмотрите, какие аргументы передаются в управляющую функцию. Переменную gate в функцию передавать не нужно, она у вас объявлена глобально. function MoveGate (thePlayer, cmd) moveObject(gate, 1000, 682.79760742188, 1853.6032714844, 0.0595626831055) outputChatBox("Ворота открылись.", thePlayer) end addCommandHandler("OpenGate",MoveGate) Link to comment
Ruga Posted May 21, 2013 Share Posted May 21, 2013 решил внести свою лепту, удобнее будет использовать одну команду -- создаем ворота при запуске скрипта addEventHandler ( "onResourceStart", resourceRoot, function () gate = createObject( 971, 690.297 , 1852.553 , 7.05 , 0, 0, 352) setElementData(gate,"key",1) -- даем данные для условия end) function MoveGate (source, cmd ) if ( getElementData(gate,"key") == 1 ) then -- условие moveObject(gate, 1000 , 682.797 , 1853.603 , 0.05 ) outputChatBox("Ворота открылись.", source, 0, 255, 255) setElementData( gate , "key" , 2 ) -- данные для оператора elseif , чтобы условие вычислялось в false elseif ( getElementData( gate, "key" ) == 2 ) then -- оператор выолняется если предедущее вычисленно в false moveObject( gate, 1000, 690.297 , 1852.553 , 7.05 ) outputChatBox("Ворота закрылись.", source, 0, 255, 255 ) setElementData( gate , "key" , 1 ) -- данные для оператора if (условия) end end addCommandHandler("OpenGate" , MoveGate ) ElementData удобна в любую погоду))) Link to comment
TheNormalnij Posted May 22, 2013 Share Posted May 22, 2013 для хардкора можно еще оптимизировать ужать, без "припевов". Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now