Other Languages Moderators Disinterpreter Posted August 25, 2014 Other Languages Moderators Share Posted August 25, 2014 А по точней есть ли такая функция или нет? getElementPosition? Link to comment
Foxyk Posted August 25, 2014 Share Posted August 25, 2014 Скрипт не мой но я пытаюсь поменять шрифт, не выходит, совсем. Помогите пожалуйста, варианты кончились... --these are the banned vehicle ids where you cannot get drift points. local BannedIDs = { 432, 532 } local rootElem = getRootElement() local thisRoot = getResourceRootElement(getThisResource()) local player = getLocalPlayer() local vehicle local size = 1.2 local modo = 0.01 local score = 0 local screenScore = 0 local tick local idleTime local multTime local driftTime local Yellow = tocolor(255,232,25) local Red = tocolor(234,0,3) local TempCol = Yellow local mult = 1 local tablamult = {350,1400,4200,11200} local anterior = 0 local mejor = 0 local total = 0 font = "X7GR0XDL.ttf" local global_mejor = 0 local global_nombre = "N/A" local screenWidth, screenHeight = guiGetScreenSize() local x1,y1,x2,y2 = screenWidth*0.2,screenHeight*0.1,screenWidth*0.8,screenHeight*0.8 addEventHandler("onClientResourceStart", thisRoot, function() addEventHandler("onClientRender", rootElem, showText) outputChatBox("Waiting for server drift data...") triggerServerEvent("driftClienteListo", rootElem, player) end ) addEventHandler("onClientResourceStop", thisRoot, function() removeEventHandler("onClientRender", rootElem, showText) end ) function isValidVehicle() local temp = getPedOccupiedVehicle(player) if not temp or getVehicleOccupant(temp,0) ~= player or getVehicleType(temp) ~= "Automobile" then return false end local vehID = getElementModel(temp) for k,v in ipairs(BannedIDs) do if vehID == v then return false end end return temp end function showText() dxDrawText(string.format("Лучший заезд: %s - %d",global_nombre,global_mejor),44,screenHeight-43,screenWidth,screenHeight,Yellow,1,"bankgothic") vehicle = isValidVehicle() if not vehicle then return end if size > 1.3 then modo = -0.01 elseif size < 1.2 then modo = 0.01 end size = size + modo tick = getTickCount() local angulo,velocidad = angle() local tempBool = tick - (idleTime or 0) < 750 if not tempBool and score ~= 0 then anterior = score setElementData(player, "Последний др.", anterior) total = total+anterior setElementData(player, "Всего др.", total) if score > mejor then mejor = score setElementData(player, "Лучший др.", mejor) end triggerEvent("onVehicleDriftEnd", rootElem, tick-driftTime-750) score = 0 end if angulo ~= 0 then if score == 0 then triggerEvent("onVehicleDriftStart", rootElem) driftTime = tick end if tempBool then score = score + math.floor(angulo*velocidad)*mult else score = math.floor(angulo*velocidad)*mult end if TempCol == Red then TempCol = Yellow end screenScore = score idleTime = tick end if velocidad <= 0.3 and mult ~= 1 then dxDrawText("\n\nToo Slow!", 20,155,screenWidth,screenHeight, Yellow, 1.2, font,"left","top", false,true,false) end if tick - (idleTime or 0) < 3000 then local temp = "DRIFT" if score >= 100000 then temp = "DRIFT\n\nDrift King!" elseif score >= 50000 then temp = "DRIFT\n\nInsane Drift!" elseif score >= 20000 then temp = "DRIFT\n\nOutrageous!" elseif score >= 15000 then temp = "DRIFT\n\nColossal!" elseif score >= 7000 then temp = "DRIFT\n\nSuberb!" elseif score >= 3000 then temp = "DRIFT\n\nGreat Drift!" elseif score >= 1000 then temp = "DRIFT\n\nGood Drift!" end dxDrawText(temp, x1,y1,x2,y2, TempCol, 2.2, font,"center","top", false,true,false) dxDrawText(string.format("\n%d",screenScore), x1,y1-10,x2,y2, TempCol, size, font,"center","top", false,true,false) end end function angle() local vx,vy,vz = getElementVelocity(vehicle) local modV = math.sqrt(vx*vx + vy*vy) if not isVehicleOnGround(vehicle) then return 0,modV end local rx,ry,rz = getElementRotation(vehicle) local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz)) local deltaT = tick - (multTime or 0) if mult~= 1 and modV <= 0.3 and deltaT > 750 then mult = mult-1 multTime = tick elseif deltaT > 1500 then local temp = 1 if score >= 11200 then temp = 5 elseif score >= 4200 then temp = 4 elseif score >= 1400 then temp = 3 elseif score >= 350 then temp = 2 end if temp>mult then mult = temp multTime = tick end end if modV <= 0.2 then return 0,modV end --speed over 40 km/h local cosX = (sn*vx + cs*vy)/modV if cosX > 0.966 or cosX < 0 then return 0,modV end --angle between 15 and 90 degrees return math.deg(math.acos(cosX))*0.5, modV end addEvent("driftCarCrashed", true) addEventHandler("driftCarCrashed", rootElem, function() if score ~= 0 then score = 0 mult = 1 TempCol = Red triggerEvent("onVehicleDriftEnd", rootElem, 0) end end ) addEvent("driftActualizarRecord", true) addEventHandler("driftActualizarRecord", rootElem, function(score, name) global_mejor = score global_nombre = name end ) function resetScore() anterior,mejor,total = 0,0,0 setElementData(player, "Последний др.", anterior) setElementData(player, "Всего др.", total) setElementData(player, "Лучший др.", mejor) end addEvent("driftResetAllScores", true) addEventHandler("driftResetAllScores", rootElem, resetScore) addCommandHandler("resetdrift", resetScore) function checkPuntaje() if total > global_mejor then triggerServerEvent("driftNuevoRecord", rootElem, total, getPlayerName(player)) end end addEventHandler("onClientPlayerFinish", rootElem, checkPuntaje) addEventHandler("onClientPlayerOutOfTime", rootElem, checkPuntaje) Link to comment
Memory Posted August 25, 2014 Share Posted August 25, 2014 ...Теперь я окончательно запутался... Сделал все как написано под спойлером. Теперь сначала скрипт работает вроде бы нормально но только у одного человека, потом через какое-то время начинает работать у всех но при этом не выключается ни при нажатии кнопки ни при выходе из машины.. Лови Client: function onEnterVehicle () bindKey ( "k", "down", startLights ) setElementData ( localPlayer, "on", 0 ) end addEventHandler ( "onClientPlayerVehicleEnter", getRootElement(), onEnterVehicle ) function startLights ( ) local state = getElementData ( localPlayer, "on" ) if ( state == 0 ) then setElementData ( localPlayer, "on", 1 ) triggerServerEvent ( "addVehicleToTable", localPlayer ) else setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, getPedOccupiedVehicle ( localPlayer ) ) end end function Exit ( vehicle ) unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, vehicle ) end addEventHandler ( "onClientPlayerVehicleExit", getRootElement(), Exit ) function Explode ( ) unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, source ) end addEventHandler ( "onClientVehicleExplode", getRootElement(), Explode ) function Destroy () if ( getElementType(source) == "vehicle" ) then unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, source ) end end addEventHandler ("onClientElementDestroy", getRootElement(), Destroy ) Server: local vehicles = { }; addEvent ( "addVehicleToTable", true ) addEventHandler ( "addVehicleToTable", getRootElement(), function ( ) local vehicle = getPedOccupiedVehicle ( source ) table.insert ( vehicles, vehicle ) end ) addEvent ( "removeVehicleFromTable", true ) addEventHandler ( "removeVehicleFromTable", getRootElement(), function ( veh ) table.removevalue(vehicles, veh) end ) function startLights ( ) for i, v in ipairs ( vehicles ) do setVehicleLightState ( v, 0, 0 ) end setTimer( function ( ) for i, v in ipairs ( vehicles ) do setVehicleLightState ( v, 0, 1 ) end end, 50, 1 ) end setTimer ( startLights, 500, 0 ) addEventHandler("onPlayerQuit", root, function() local veh = getPedOccupiedVehicle ( source ) table.removevalue(vehicles, veh) end) function table.removevalue(t, val) for i,v in ipairs(t) do if v == val then table.remove(t, i) return i end end return false end Link to comment
lcd12321 Posted August 25, 2014 Share Posted August 25, 2014 А по точней есть ли такая функция или нет? getElementPosition? Вроде понятно написал. Эта функция возвращает координаты машины, а мне нужна, которая возвращала бы координаты "переда" машины, т.е. там где находятся фары ( примерно ). Link to comment
TheNormalnij Posted August 25, 2014 Share Posted August 25, 2014 getVehicleComponentPosition Link to comment
lcd12321 Posted August 25, 2014 Share Posted August 25, 2014 getVehicleComponentPosition Спасибо большое, выручил. Link to comment
Foxyk Posted August 27, 2014 Share Posted August 27, 2014 function setCar() car = createVehicle ( 402, -2405, -598, 132.6484375 ) setVehicleColor( car, 255, 255, 0 ) setVehicleDamageProof(car, true) setVehicleLocked ( car, true ) end addEventHandler ( "onResourceStart", getRootElement(), setCar ) function privatCar(thePlayer, seat, jacked) local name = getAccountName ( thePlayer ) if name == "[CCCR]Fox" then setVehicleLocked ( car, false ) if isVehicleLocked ( car ) then outputChatBox ( "Автомобиль закрыт", thePlayer) end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), privatCar ) Машина постоянно закрыта, в чём ошибка? Link to comment
Other Languages Moderators Disinterpreter Posted August 27, 2014 Other Languages Moderators Share Posted August 27, 2014 function setCar() car = createVehicle ( 402, -2405, -598, 132.6484375 ) setVehicleColor( car, 255, 255, 0 ) setVehicleDamageProof(car, true) setVehicleLocked ( car, true ) end addEventHandler ( "onResourceStart", getRootElement(), setCar ) function privatCar(thePlayer, seat, jacked) local name = getAccountName ( thePlayer ) if name == "[CCCR]Fox" then setVehicleLocked ( car, false ) if isVehicleLocked ( car ) then outputChatBox ( "Автомобиль закрыт", thePlayer) end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), privatCar ) Машина постоянно закрыта, в чём ошибка? Дебаг пробовал смотреть? getAccountName принимает первым аккаунт а не игрока Link to comment
Foxyk Posted August 27, 2014 Share Posted August 27, 2014 function setCar() car = createVehicle ( 402, -2405, -598, 132.6484375 ) setVehicleColor( car, 255, 255, 0 ) setVehicleDamageProof(car, true) setVehicleLocked ( car, true ) end addEventHandler ( "onResourceStart", getRootElement(), setCar ) function privatCar(thePlayer, seat, jacked) local name = getAccountName ( thePlayer ) if name == "[CCCR]Fox" then setVehicleLocked ( car, false ) if isVehicleLocked ( car ) then outputChatBox ( "Автомобиль закрыт", thePlayer) end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), privatCar ) Машина постоянно закрыта, в чём ошибка? Дебаг пробовал смотреть? getAccountName принимает первым аккаунт а не игрока Уже разобрался и убрал ошибку и вообще там можно было более проще написать... Link to comment
lcd12321 Posted August 27, 2014 Share Posted August 27, 2014 Как сделать, чтобы после окончании первой анимации плавно шла вторая? Link to comment
Kernell Posted August 27, 2014 Share Posted August 27, 2014 Как сделать, чтобы после окончании первой анимации плавно шла вторая? Никак. Раньше была функция blendPedAnimation, но её убрали Link to comment
TEDERIs Posted August 27, 2014 Share Posted August 27, 2014 Как вариант искусственно вести анимацию функцией setPedAnimationProgress. По завершению процесса, вызывать событие о завершении анимации и переключаться на следующую. Link to comment
gold4iter Posted August 28, 2014 Share Posted August 28, 2014 как можно сделать огнемет на машину Link to comment
Other Languages Moderators Disinterpreter Posted August 28, 2014 Other Languages Moderators Share Posted August 28, 2014 как можно сделать огнемет на машину https://wiki.multitheftauto.com/wiki/CreateWeapon и приаттачить к машине. Link to comment
Kenix Posted August 28, 2014 Share Posted August 28, 2014 как можно сделать огнемет на машину https://wiki.multitheftauto.com/wiki/CreateWeapon и приаттачить к машине. Нельзя, его там нет. Как вариант применять createEffect и сделать кулшейп вокруг машины, если игрок вошел в него, то применяем setPedOnFire. https://wiki.multitheftauto.com/wiki/CreateEffect https://wiki.multitheftauto.com/wiki/CreateColSphere https://wiki.multitheftauto.com/wiki/SetPedOnFire Link to comment
Foxyk Posted August 29, 2014 Share Posted August 29, 2014 Как зациклить в бесконечность этот эффект? fxAddBulletImpact(1022.5099487305, -1120.9005126953, 27.184593200684, 0, 0, 0, math.random(1, 2), math.random(2, 5), 1.0) Link to comment
TheNormalnij Posted August 30, 2014 Share Posted August 30, 2014 таймер, эффект тоже время свое имеет. Link to comment
Seddo Posted August 30, 2014 Share Posted August 30, 2014 ...Лови Спсибо большое за помощь! Но к сожалению оно так нормально и не работает. Первую минуту вроде все хорошо, потом оно перестает выключаться с кнопки. У других игроков включается через раз и тоже не выключается с кнопки... В плюс к этому получаю целую кучу ошибок в логах "Bad vehicle pointer".. Link to comment
Elengar Posted August 31, 2014 Share Posted August 31, 2014 ...Лови Спсибо большое за помощь! Но к сожалению оно так нормально и не работает. Первую минуту вроде все хорошо, потом оно перестает выключаться с кнопки. У других игроков включается через раз и тоже не выключается с кнопки... В плюс к этому получаю целую кучу ошибок в логах "Bad vehicle pointer".. Ошибки, скорее всего, вообще не из-за этого(либо вы там что-то совсем уж намудрили). Скиньте код, поможем. Link to comment
Seddo Posted August 31, 2014 Share Posted August 31, 2014 Ошибки, скорее всего, вообще не из-за этого(либо вы там что-то совсем уж намудрили). Скиньте код, поможем. Так это и есть весь код ЛовиClient: function onEnterVehicle () bindKey ( "k", "down", startLights ) setElementData ( localPlayer, "on", 0 ) end addEventHandler ( "onClientPlayerVehicleEnter", getRootElement(), onEnterVehicle ) function startLights ( ) local state = getElementData ( localPlayer, "on" ) if ( state == 0 ) then setElementData ( localPlayer, "on", 1 ) triggerServerEvent ( "addVehicleToTable", localPlayer ) else setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, getPedOccupiedVehicle ( localPlayer ) ) end end function Exit ( vehicle ) unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, vehicle ) end addEventHandler ( "onClientPlayerVehicleExit", getRootElement(), Exit ) function Explode ( ) unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, source ) end addEventHandler ( "onClientVehicleExplode", getRootElement(), Explode ) function Destroy () if ( getElementType(source) == "vehicle" ) then unbindKey ( "k", "down", create ) setElementData ( localPlayer, "on", 0 ) triggerServerEvent ( "removeVehicleFromTable", localPlayer, source ) end end addEventHandler ("onClientElementDestroy", getRootElement(), Destroy ) Server: local vehicles = { }; addEvent ( "addVehicleToTable", true ) addEventHandler ( "addVehicleToTable", getRootElement(), function ( ) local vehicle = getPedOccupiedVehicle ( source ) table.insert ( vehicles, vehicle ) end ) addEvent ( "removeVehicleFromTable", true ) addEventHandler ( "removeVehicleFromTable", getRootElement(), function ( veh ) table.removevalue(vehicles, veh) end ) function startLights ( ) for i, v in ipairs ( vehicles ) do setVehicleLightState ( v, 0, 0 ) end setTimer( function ( ) for i, v in ipairs ( vehicles ) do setVehicleLightState ( v, 0, 1 ) end end, 50, 1 ) end setTimer ( startLights, 500, 0 ) addEventHandler("onPlayerQuit", root, function() local veh = getPedOccupiedVehicle ( source ) table.removevalue(vehicles, veh) end) function table.removevalue(t, val) for i,v in ipairs(t) do if v == val then table.remove(t, i) return i end end return false end я меняю только время в таймерах, или добавляю еще таймеры. Но даже код в чистом виде как написал господин Memory имеет эти проблемы. Link to comment
Memory Posted August 31, 2014 Share Posted August 31, 2014 Не знаю, у меня всё прекрасно и без всяких проблем работало. Link to comment
Seddo Posted August 31, 2014 Share Posted August 31, 2014 Не знаю, у меня всё прекрасно и без всяких проблем работало. Хронология событий такая: Включаю скрипт, нажимаю бинд - включается. Нажимаю еще раз - выключается. Все хорошо. Включаю у себя. Прошу другого игрока включить - не включается. Через несколько секунд включается само. И перестает выключаться с кнопки. И у меня и у игрока. Мистика какая-то. 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