Flaker Posted January 4, 2012 Share Posted January 4, 2012 (edited) Вот возник такой вопросик: Сделал скрипт открытия ворот, если к ним подходит игрок. 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 January 4, 2012 by Guest Link to comment
Flaker Posted January 4, 2012 Author Share Posted January 4, 2012 (edited) Спасибо) Получилось. Сделал с помощью доп. функции: 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 January 4, 2012 by Guest Link to comment
Flaker Posted January 4, 2012 Author Share Posted January 4, 2012 А и еще... Как сделать открытие ворот для определенной команды? (PlayerTeam) Link to comment
Vladimir5 Posted January 4, 2012 Share Posted January 4, 2012 Можно было бы попробывать замутить это с функцией getTeamFromName https://wiki.multitheftauto.com/wiki/GetTeamFromName А можно было бы с помощью скрипта Gatemaker... Но там если ты не в команде то все ворота можешь открыть=)) Link to comment
Flaker Posted January 7, 2012 Author Share Posted January 7, 2012 А как писать условие? Я просто в этом не разбираюсь. Если я начинаю делать что-то с помощю if *** then *** У меня ошибка всегда. Объясните пожалуста как правильно писать условие. Или дайте ссылку на статью какуюнибудь. Link to comment
TwiX! Posted January 7, 2012 Share Posted January 7, 2012 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
Flaker Posted January 7, 2012 Author Share Posted January 7, 2012 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
kashtesov Posted January 7, 2012 Share Posted January 7, 2012 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) Эхх... Выдает ошибку в консоле: Вроде ошибка в 16 строчке... Попробуй end убрать Link to comment
Other Languages Moderators Disinterpreter Posted January 7, 2012 Other Languages Moderators Share Posted January 7, 2012 Пользуйся табуляцией еще У тебя в конце все съехало. Link to comment
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 Весь код в студию... 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
TwiX! Posted January 7, 2012 Share Posted January 7, 2012 там должен быть не "player" а "thePlayer" ты наверно скопировал, когда я пост не обновил Link to comment
Flaker Posted January 7, 2012 Author Share Posted January 7, 2012 Вот полный код: 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
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 Почему 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
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 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
Flaker Posted January 7, 2012 Author Share Posted January 7, 2012 Эхх... Вощем не получется ниче( Link to comment
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 Там что то с GetPlayerTeam! Link to comment
MX_Master Posted January 7, 2012 Share Posted January 7, 2012 Объясню простой способ. Для каждых ворот должна быть своя переменная, где будет хранится ИД таймера закрытия этих ворот. При входе игрока на маркер, мы сразу должны остановить этот таймер, если он существует. После выхода игрока из маркера, создаем таймер закрытия и его ИД помещаем в вышеуказанную переменную. Побочные проверки на принадлежность к какой-то команде - это уже сами смаракуете. События: onPlayerMarkerHit, onPlayerMarkerLeave Функции: setTimer, killTimer Разберетесь? Link to comment
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 Я то ворота на АCL делаю,Я щас попробую ему это смастерить =) P.S Забыл дать ссылку на : CreateMarker,createObject...) and GetPlayerTeam.) P.S.S Как раз Я в таймерах не разбираюсь,щикарно! Link to comment
MX_Master Posted January 7, 2012 Share Posted January 7, 2012 Ворота могут быть не только из объектов. Кто скажет из чего еще можно сделать ворота - возьмёт с полки пирожок (: Link to comment
Vladimir5 Posted January 7, 2012 Share Posted January 7, 2012 Из маркеров! как там с пирожком? Я помню был поцИк который из маркеров сделал ворота Ппц! Я уже сделал и на ACL,и на одного человека ворота,и не в какую 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