Jump to content

Условие закрытия ворот. как?


Recommended Posts

Вот возник такой вопросик:

Сделал скрипт открытия ворот, если к ним подходит игрок.

  
function mapLoad ( name ) 
   -- create an object at a specified position with a specified rotation 
   vorota1 = createObject ( 2927, 215.878, 1875.722, 13.93899, 0, 0, 0 ) 
   vorota1_2 = createObject ( 2927, 211.7866, 1875.726, 13.93899, 0, 0, 0 ) 
end 
addEventHandler ( "onResourceStart", getRootElement(), mapLoad ) 
  
function vorota() 
    marker_vorota1 = createMarker(213.93994,1875.98022,10.3468,"cylinder",5, 225, 225, 0, 0 ) 
end 
addEventHandler ("onResourceStart",root,vorota) 
  
function open_gate1(thePlayer, hitElement) 
  
    if source == marker_vorota1 then 
    moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
    moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
     
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 
  

Ворота открываются, но что бы закрыть их нужно уловие какое то?

Как сделать закрытие ворот автоматически, как только игрок отошел от них? Какое условие можно использовать?

Edited by Guest
Link to comment

Спасибо) Получилось.

Сделал с помощью доп. функции:

  
function close_gate1(thePlayer, hitElement) 
  
    if source == marker_vorota1 then 
    moveObject ( vorota1, 5000, 215.878, 1875.722, 13.93899 ) 
    moveObject ( vorota1_2, 5000, 211.7866, 1875.726, 13.93899 ) 
    end 
     
end 
addEventHandler ("onMarkerLeave",getRootElement(),close_gate1) 
  

А можно ли как нибудь открытие и закрытие в одной функции сделать?

Edited by Guest
Link to comment

А как писать условие?

Я просто в этом не разбираюсь.

Если я начинаю делать что-то с помощю if *** then ***

У меня ошибка всегда.

Объясните пожалуста как правильно писать условие.

Или дайте ссылку на статью какуюнибудь.

Link to comment
  
LOL = createTeam ( "FBI", 200, 0, 100 ) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
if LOL then 
  
    if source == marker_vorota1 then 
         moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
         moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
else 
outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
end 
    
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Link to comment
  
LOL = createTeam ( "FBI", 200, 0, 100 ) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
if LOL then 
  
    if source == marker_vorota1 then 
         moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
         moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
else 
outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
end 
    
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Эхх... Выдает ошибку в консоле:

errornyl.png

Link to comment
  
LOL = createTeam ( "FBI", 200, 0, 100 ) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
if LOL then 
  
    if source == marker_vorota1 then 
         moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
         moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
else 
outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
end 
    
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Эхх... Выдает ошибку в консоле:

errornyl.png

Вроде ошибка в 16 строчке... Попробуй end убрать

Link to comment

Весь код в студию...

         moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
         moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 

А ты это правильно сделал?

Ты случаем не создал "Gate1 = createObject...?

P.S

Я сделал так:

Потом тест сделаю

Gate1 = CreateObject (971, 0, 0, 0, 0, 0, 0 ) 
LOL = createTeam ( "FBI", 200, 0, 100 ) 
marker_vorota1 = createMarker ( 0, 0, 0, 0, 0, 0 ) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
if LOL then 
  
    if source == marker_vorota1 then 
         moveObject ( gate1, 5000, 5, 0, 0 ) 
         moveObject ( gate1, 5000, 8, 0, 0 ) 
    end 
else 
outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
end 
    
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Link to comment

Вот полный код:

  
function mapLoad ( name ) 
   -- create an object at a specified position with a specified rotation 
   vorota1 = createObject ( 2927, 215.878, 1875.722, 13.93899, 0, 0, 0 ) 
   vorota1_2 = createObject ( 2927, 211.7866, 1875.726, 13.93899, 0, 0, 0 ) 
end 
addEventHandler ( "onResourceStart", getRootElement(), mapLoad ) 
  
function vorota() 
    marker_vorota1 = createMarker(213.93994,1875.98022,10.3468,"cylinder",5, 225, 225, 0, 0 ) 
end 
addEventHandler ("onResourceStart",root,vorota) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
    if DE then 
     
    if source == marker_vorota1 then 
    moveObject ( vorota1, 5000, 219.9222, 1875.722, 13.93899 ) 
    moveObject ( vorota1_2, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
     
    else 
    outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
    end 
     
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 
  

P.S. Пробовал просто скопировать и вставить код

P.S

Я сделал так:

Потом тест сделаю

Gate1 = CreateObject (971, 0, 0, 0, 0, 0, 0 ) 
LOL = createTeam ( "FBI", 200, 0, 100 ) 
marker_vorota1 = createMarker ( 0, 0, 0, 0, 0, 0 ) 
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
if LOL then 
  
    if source == marker_vorota1 then 
         moveObject ( gate1, 5000, 5, 0, 0 ) 
         moveObject ( gate1, 5000, 8, 0, 0 ) 
    end 
else 
outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
end 
    
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Скопировал этот, ошибка таже.

И еще добавилось: attemt to call global create object

Link to comment

Почему

getPlayerTeam ( thePlayer)

if DE then

?

Где ты DE увидел?!

ТАм что то с созданием объкета!

gate1 = createObject (971, 215, 1876, 13, 0 , 0 , 0 ) 
TestTeam = createTeam ( "Test", 0, 255, 255 ) 
  
function vorota() 
    marker_vorota1 = createMarker(213.93994,1875.98022,11.3468,"cylinder",5, 225, 225, 0, 255 ) 
end 
addEventHandler ("onResourceStart",root,vorota) 
  
  
function open_gate1(thePlayer, hitElement) 
    getPlayerTeam ( thePlayer) 
    if Test then 
     
    if source == marker_vorota1 then 
    moveObject ( gate1, 5000, 219.9222, 1875.722, 13.93899 ) 
    moveObject ( gate1, 5000, 207.98663, 1875.726, 13.93899 ) 
    end 
     
    else 
    outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
    end 
     
end 
addEventHandler ("onMarkerHit",getRootElement(),open_gate1) 

Вот,только ворота не открываются!

Даже основы не знаешь...

С 13 строчки- салат!

Я написал этот скрипт.Ща выложу

Link to comment
gate1 = createObject (971, 214.6, 1876, 13, 0 , 0 , 0 ) 
TestTeam = createTeam ( "Test", 0, 255, 255 ) 
marker = createMarker(214, 1876, 14, "cylinder", 6, 255, 255, 255, 0) 
  
function moveGate(hitPlayer, matchingDimension) 
 getTeamName ( thePlayer ) 
    if Test then 
        outputChatBox ( "Вы открыли ворота", thePlayer, 255, 0, 0, true) 
        moveObject(gate1, 2000, 214.6, 1876, 7) 
        setTimer(moveBack, 2000, 1) 
     else 
    outputChatBox ( "You cant open gate", thePlayer, 255, 0, 0, true ) 
    end 
end 
addEventHandler("onMarkerHit", marker, moveGate) 
  
function moveBack() 
    moveObject(gate1, 2000, 214.62056884766, 1876.08352050781, 13.239881515503) 
  end 
addEventHandler ("onMarkerLeave", marker, moveBack) 

Не пашет.

Bad argument getPlayerTeam :(

gate1 = createObject (971, 214.6, 1876, 13, 0 , 0 , 0 ) 
TestTeam = createTeam ( "Test" , 0, 0, 0 ) 
marker = createMarker(214, 1876, 14, "cylinder", 6, 255, 255, 255, 0) 
  
function moveGate(hitPlayer, matchingDimension) 
playerTeam = getPlayerTeam ( thePlayer )           
    if Test then                               
        outputChatBox ( "Вы открыли ворота", thePlayer, 255, 0, 0, true) 
        moveObject(gate1, 2000, 214.6, 1876, 7) 
        setTimer(moveBack, 2000, 1) 
     else 
    outputChatBox ( "Ты не можешь открыть ворота!", thePlayer, 255, 255, 0, true ) 
    end 
end 
addEventHandler("onMarkerHit", marker, moveGate) 
  
function moveBack() 
    moveObject(gate1, 2000, 214.62056884766, 1876.08352050781, 13.239881515503) 
  end 
addEventHandler ("onMarkerLeave", marker, moveBack) 

Link to comment

Объясню простой способ. Для каждых ворот должна быть своя переменная, где будет хранится ИД таймера закрытия этих ворот. При входе игрока на маркер, мы сразу должны остановить этот таймер, если он существует. После выхода игрока из маркера, создаем таймер закрытия и его ИД помещаем в вышеуказанную переменную. Побочные проверки на принадлежность к какой-то команде - это уже сами смаракуете.

События: onPlayerMarkerHit, onPlayerMarkerLeave

Функции: setTimer, killTimer

Разберетесь?

Link to comment

Я то ворота на АCL делаю,Я щас попробую ему это смастерить =)

P.S

Забыл дать ссылку на :

CreateMarker,createObject...)

and GetPlayerTeam.)

P.S.S

Как раз Я в таймерах не разбираюсь,щикарно!

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...