Jump to content

Серверная сторона. Как?


Recommended Posts

Всем привет. Потихоньку изучаю 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
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

Проверьте addCommandHandler на вики и посмотрите, какие аргументы передаются в управляющую функцию. Переменную gate в функцию передавать не нужно, она у вас объявлена глобально.

function MoveGate (thePlayer, cmd) 
moveObject(gate, 1000, 682.79760742188, 1853.6032714844, 0.0595626831055) 
outputChatBox("Ворота открылись.", thePlayer) 
end 
addCommandHandler("OpenGate",MoveGate) 

Link to comment

решил внести свою лепту, удобнее будет использовать одну команду

  
-- создаем ворота при запуске скрипта 
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...