Roma Posted May 20, 2012 Share Posted May 20, 2012 А как эти 2 функции объединить в один скрипт Link to comment
TEDERIs Posted May 20, 2012 Share Posted May 20, 2012 А как эти 2 функции объединить в один скрипт Думаю что стоит попробовать сделать вот так: local startPos = { -2405, -598, 132.6 } local endPos = { -2412.8, -602.2, 132.5 } local object = createObject ( 1491, startPos [ 1 ], startPos [ 2 ], startPos [ 3 ] ) local scrollbar = guiCreateScrollBar ( 400, 400, 100, 10, true, false ) addEventHandler ( "onClientGUIScroll", scrollbar, function ( scrolled ) local progress = guiScrollBarGetScrollPosition ( scrolled ) / 100 local x, y, z = interpolateBetween ( startPos [ 1 ], startPos [ 2 ], startPos [ 3 ], endPos [ 1 ], endPos [ 2 ], endPos [ 3 ], progress, "Linear" ) moveObject ( object, 1000, x, y, z ) end , false ) Клиентская сторона. Я бы не стал управлять таким образом серверным объектом. Link to comment
lcd1232 Posted May 25, 2012 Share Posted May 25, 2012 уже всю голову сломал. WARNING: [gameplay]\vehicle\vehicle.lua:1: Bad argument @ 'getPedOccupiedVehicle' vehicle.lua theVehicle=getPedOccupiedVehicle(source) function switchEngine() if theVehicle and getVehicleController(theVehicle)==source then if getVehicleEngineState(theVehicle) then setVehicleEngineState(theVehicle,false) else setVehicleEngineState(theVehicle,true) end end end function switchLight() if theVehicle and getVehicleController(theVehicle)==source then if getVehicleOverrideLights(theVehicle)==2 then setVehicleOverrideLights(theVehicle,1) else setVehicleOverrideLights(theVehicle,2) end end end function switchLock() if getElementID(theVehicle)==getPlayerName(source) then if isVehicleLocked(theVehicle) then setVehicleLocked(theVehicle,false) else setVehicleLocked(theVehicle,true) end end end addEvent("onVehicleChangeEngine",true) addEvent("onVehicleChangeLight",true) addEvent("onVehicleChangeLock",true) addCommandHandler("engine",switchEngine) addCommandHandler("lights",switchLight) addCommandHandler("lock",switchLock) function bindKeys() for key,playerSource in ipairs(getElementsByType("player")) do bindKey(playerSource,"2","down",switchEngine) bindKey(playerSource,"1","down",switchLight) end end addEventHandler("onReplayerStart",getRootElement(),bindKeys) addEventHandler("onPlayerSpawn",getRootElement(),bindKeys) addEventHandler("onVehicleChangeEngine",getRootElement(),switchEngine) addEventHandler("onVehicleChangeLight",getRootElement(),switchLight) addEventHandler("onVehicleChangeLock",getRootElement(),switchLock) vehicle_c.lua addEvent("onVehicleChangeEngine",true) addEvent("onVehicleChangeLight",true) addEvent("onVehicleChangeLock",true) addCommandHandler("LockChange", function() triggerServerEvent("onVehicleChangeLock",getLocalPlayer()) end ) addCommandHandler("EngineChange", function() triggerServerEvent("onVehicleChangeEngine",getLocalPlayer()) end ) addCommandHandler("LightChange", function() triggerServerEvent("onVehicleChangeLight",getLocalPlayer()) end ) bindKey("2","down","EngineChange") bindKey("1","down","LightChange") Также читал, что лучше использовать вместо source client, но у меня дебаг везде ошибки выдает. Link to comment
Kenix Posted May 26, 2012 Share Posted May 26, 2012 theVehicle=getPedOccupiedVehicle(source) function switchEngine() if theVehicle and getVehicleController(theVehicle)==source then if getVehicleEngineState(theVehicle) then setVehicleEngineState(theVehicle,false) else setVehicleEngineState(theVehicle,true) end end end function switchLight() if theVehicle and getVehicleController(theVehicle)==source then if getVehicleOverrideLights(theVehicle)==2 then setVehicleOverrideLights(theVehicle,1) else setVehicleOverrideLights(theVehicle,2) end end end function switchLock() if getElementID(theVehicle)==getPlayerName(source) then if isVehicleLocked(theVehicle) then setVehicleLocked(theVehicle,false) else setVehicleLocked(theVehicle,true) end end end addEvent("onVehicleChangeEngine",true) addEvent("onVehicleChangeLight",true) addEvent("onVehicleChangeLock",true) addCommandHandler("engine",switchEngine) addCommandHandler("lights",switchLight) addCommandHandler("lock",switchLock) function bindKeys() for key,playerSource in ipairs(getElementsByType("player")) do bindKey(playerSource,"2","down",switchEngine) bindKey(playerSource,"1","down",switchLight) end end addEventHandler("onReplayerStart",getRootElement(),bindKeys) addEventHandler("onPlayerSpawn",getRootElement(),bindKeys) addEventHandler("onVehicleChangeEngine",getRootElement(),switchEngine) addEventHandler("onVehicleChangeLight",getRootElement(),switchLight) addEventHandler("onVehicleChangeLock",getRootElement(),switchLock) theVehicle=getPedOccupiedVehicle(source) source - это скрытая переменная в функции-обработчике события, она может содержать в себе элемент (корень всех элементов( root ), игрока, объект, ... ). Тебе нужно использовать именно там, а не вне функции-обработчика события. Команды тоже не будут работать. addCommandHandler("engine",switchEngine) addCommandHandler("lights",switchLight) addCommandHandler("lock",switchLock) Так будет правильнее local source = source or pPlayer и addEventHandler("onPlayerSpawn",getRootElement(),bindKeys) При каждом спавне игрока будут биндится все кнопки для всех игроков. и при старте любого ресурса тоже будут биндится все кнопки для всех игроков. addEventHandler("onReplayerStart",getRootElement(),bindKeys) Это if getVehicleEngineState( pVehicle ) then setVehicleEngineState( pVehicle, false ) else setVehicleEngineState( pVehicle, true ) end можно заменить этим setVehicleEngineState( pVehicle, not getVehicleEngineState( pVehicle ) ) Тоже самое if isVehicleLocked( pVehicle ) then setVehicleLocked( pVehicle, false ) else setVehicleLocked( pVehicle, true ) end setVehicleLocked( pVehicle, not isVehicleLocked( pVehicle ) ) и if getVehicleOverrideLights( pVehicle ) == 2 then setVehicleOverrideLights( pVehicle, 1 ) else setVehicleOverrideLights( pVehicle, 2 ) end setVehicleOverrideLights( pVehicle, getVehicleOverrideLights( pVehicle ) == 2 and 1 or 2 ) Правильный код. addEvent( 'onVehicleChangeEngine', true ) addEvent( 'onVehicleChangeLight', true ) addEvent( 'onVehicleChangeLock', true ) function SwitchEngine( pPlayer ) local source = source or pPlayer if isPedInVehicle( source ) then local pVehicle = getPedOccupiedVehicle( source ) if pVehicle and getVehicleController( pVehicle ) == source then setVehicleEngineState( pVehicle, not getVehicleEngineState( pVehicle ) ) end end end function SwitchLight( pPlayer ) local source = source or pPlayer if isPedInVehicle( source ) then local pVehicle = getPedOccupiedVehicle( source ) if pVehicle and getVehicleController( pVehicle ) == source then setVehicleOverrideLights( pVehicle, getVehicleOverrideLights( pVehicle ) == 2 and 1 or 2 ) end end end function SwitchLock( pPlayer ) local source = source or pPlayer if isPedInVehicle( source ) then local pVehicle = getPedOccupiedVehicle( source ) if getElementID( pVehicle ) == getPlayerName( source ) then setVehicleLocked( pVehicle, not isVehicleLocked( pVehicle ) ) end end end function BindKeys( ) if eventName == 'onPlayerJoin' then bindKey( source, '2', 'down', SwitchEngine ) bindKey( source, '1', 'down', SwitchLight ) else for _, pPlayer in ipairs( getElementsByType 'player' ) do bindKey( pPlayer, '2', 'down', SwitchEngine ) bindKey( pPlayer, '1', 'down', SwitchLight ) end end end addCommandHandler( 'engine', SwitchEngine ) addCommandHandler( 'lights', SwitchLight ) addCommandHandler( 'lock', SwitchLock ) addEventHandler( 'onReplayerStart', resourceRoot, BindKeys ) addEventHandler( 'onPlayerJoin', root, BindKeys ) addEventHandler( 'onVehicleChangeEngine', root, SwitchEngine ) addEventHandler( 'onVehicleChangeLight', root, SwitchLight ) addEventHandler( 'onVehicleChangeLock', root, SwitchLock ) Link to comment
lcd1232 Posted May 26, 2012 Share Posted May 26, 2012 Ого, так много всего я неправильно писал. Спасибо, но есть несколько вопросов: addEventHandler( 'onReplayerStart', resourceRoot, BindKeys ) Разве есть такое событие onReplayerStart? Может onResourceStart?-Читал вики, но толком не понял что дают root, resourceRoot и т.д. local source = source or pPlayer Можно поподробнее насчет этого? Link to comment
Kenix Posted May 26, 2012 Share Posted May 26, 2012 У тебя в коде было написано 'onReplayerStart', я не обратил внимание на это. Должно быть onResourceStart. -Читал вики, но толком не понял что дают root, resourceRoot и т.д. root - корень всех элементов, resourceRoot - корень всех элементов текущего ресурса. Дерево элементов local source = source or pPlayer Можно поподробнее насчет этого? Если источник( source ) nil, то будет использоваться переменная pPlayer. Т.к в функции-обработчике команды нет источника, приходится делать это. Link to comment
lcd1232 Posted May 26, 2012 Share Posted May 26, 2012 задам еще вопрос: есть событие onVehicleStartEnter. Он передает параметры player enteringPlayer, int seat, player jacked, int door как их использовать в функции? Также там сказано, что source это машина, в которую enteringPlayer садится. Будет ли source изменен на машину полностью? т.е. в скрипте я не смогу использовать source как player? Просто хочу, чтобы при заходе в машину двигатель не включался, если он включен. У меня это получилось, но он вырубает двигатель если он был включен. Link to comment
Flaker Posted May 26, 2012 Share Posted May 26, 2012 задам еще вопрос: есть событие onVehicleStartEnter. Он передает параметры player enteringPlayer, int seat, player jacked, int door как их использовать в функции? Также там сказано, что source это машина, в которую enteringPlayer садится. Будет ли source изменен на машину полностью? т.е. в скрипте я не смогу использовать source как player? Просто хочу, чтобы при заходе в машину двигатель не включался, если он включен. У меня это получилось, но он вырубает двигатель если он был включен. Да ты скидывай код сразу) Глянем, исправим) Вобще в каждой функции свой source, и лучше не заменять его значение. Тоесть "enteringPlayer" это просто первый аргумент, который ты можешь назвать например thePlayer итд... И потом использовать его в функции... Примерно так: Аргументы функции: function enterVehicle ( player enteringPlayer, int seat, player jacked, int door) Как объявляют функцию: function enterVehicle ( thePlayer, seat , jacked_player, door) где: thePlayer это игрок который садится в машину seat это место на которое thePlayer садится jacked_player это игрок который будет выкинут из машины door это дверь в которую садится thePlayer Главное в определенном порядке все объявлять Link to comment
JustKid Posted June 3, 2012 Share Posted June 3, 2012 Так как пишу свой небольшой модик,пожалуйста,подскажите... Как запилить объект (Пикап),а когда его подбираешь он аттачится к тебе в руку(Речь идёт о очках,Я щас,как раз ищу модель очков) Link to comment
TwiX! Posted June 3, 2012 Share Posted June 3, 2012 Так как пишу свой небольшой модик,пожалуйста,подскажите...Как запилить объект (Пикап),а когда его подбираешь он аттачится к тебе в руку(Речь идёт о очках,Я щас,как раз ищу модель очков) https://wiki.multitheftauto.com/wiki/CreateMarker https://wiki.multitheftauto.com/wiki/OnClientMarkerHit https://wiki.multitheftauto.com/wiki/AttachElements Link to comment
JustKid Posted June 4, 2012 Share Posted June 4, 2012 Так как пишу свой небольшой модик,пожалуйста,подскажите...Как запилить объект (Пикап),а когда его подбираешь он аттачится к тебе в руку(Речь идёт о очках,Я щас,как раз ищу модель очков) https://wiki.multitheftauto.com/wiki/CreateMarker https://wiki.multitheftauto.com/wiki/OnClientMarkerHit https://wiki.multitheftauto.com/wiki/AttachElements Чувак. Я же говорю про пикап,а не про Маркер. Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 Кто играл в гейммод Stealth и Assault ????? Особенно меня интересует Kenix,ZverCR,Flaker Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 Kenix у тебя есть скайп? просто это очень важно для меня !!! Я бы хотел стобой переговарить по этому поводу! у меня просто очень хорошоя идея а воплотить я её немогу Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 (edited) Edited June 4, 2012 by Guest Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 (edited) Edited June 4, 2012 by Guest Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 (edited) Edited June 4, 2012 by Guest Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 (edited) вот я создал выдор тиам но чтото не пашет вчём проблема ? Window = {} Button = {} Label = {} Image = {} addEventHandler("onClientResourceStart",resourceRoot, function() window = guiCreateWindow(167,254,478,332,"Select Team",false) Team1but = guiCreateButton(33,84,158,50,"Select to \nCounter-Terrorist",false,window) Team2but = guiCreateButton(289,82,158,50,"Select to \n Terrorist",false,window) Counterterrprimg = guiCreateStaticImage(9,3,207,117,"counter-terror.png",false,window) Terrorimg = guiCreateStaticImage(272,9,186,112,"terror.png",false,window) Label = guiCreateLabel(114,171,293,48,"Добро пожаловать на Counter Strike server \n \n Welcome to Counter Strike server",false,window) guiLabelSetColor(Label,255,255,0) guiSetFont(Label,"clear-normal") Label2 = guiCreateLabel(127,246,246,45,"Чтобы сменить команду нажмите F3 \n \n To change the command, press F3",false,window) guiLabelSetColor(Label2,255,255,0) guiSetFont(Label2,"clear-normal") addEventHandler ( "onClientGUIClick", Team1but, TeamSelected) addEventHandler ( "onClientGUIClick", Team2but, TeamSelected2) end ) function showUserPanel () getVisible = guiGetVisible (window) playerName = getPlayerName ( getLocalPlayer() ) if (getVisible == true) then guiSetVisible (window, false) showCursor (false) end if (getVisible == false) then guiSetVisible (window, true) showCursor (true) end end addEventHandler("onPlayerLogin", getResourceRootElement(getThisResource()), showUserPanel) addEventHandler("onClientRender", getResourceRootElement(getThisResource()), showUserPanel) function TeamSelected() triggerServerEvent ( "joinTeam1", getLocalPlayer() ) destroyElement ( window ) end function TeamSelected2() triggerServerEvent ( "joinTeam2", getLocalPlayer() ) destroyElement ( window ) end Edited June 4, 2012 by Guest Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 как сделать правильно triggerServerEvent то я на вики немогу понять Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 Серверная часть лежит в ресурсе Assault Link to comment
Mc_Trekkie Posted June 4, 2012 Share Posted June 4, 2012 Ишак.Это же новый ресурс?(: Туда надо серверную часть пихать... Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 Как бы я наоборот клиенскую часть ( ту что я сделал ) Впихнул в рес с серверной Link to comment
Mc_Trekkie Posted June 4, 2012 Share Posted June 4, 2012 Как бы я наоборот клиенскую часть ( ту что я сделал ) Впихнул в рес с серверной Чо дебаг пишет,выложи серверную и клиентскую часть,мы не ВАНГИ! Link to comment
562141 Posted June 4, 2012 Share Posted June 4, 2012 серверная часть очень большая и непомещаятся в базе мта форума 1-ним сообщением 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