Jump to content

WeeD1

Members
  • Posts

    69
  • Joined

  • Last visited

Everything posted by WeeD1

  1. Salve rapaizada. Quero colocar para após a pessoa receber algum tipo de dano ela não consiga usar o teleporte durante 10 segundos. Dei uma procurada antes de criar o tópico pelo onPlayerDamage mas não consegui pensar em nenhuma forma de criar isso. Alguém que poderia me ajudar? por favor OBS: o script é server-side function tele (thePlayer) if not isElement (thePlayer) then return end fadeCamera(thePlayer, false, 0.5) setTimer(fadeCamera, 1000, 1, thePlayer, true) if (commando[thePlayer]) then return end setTimer( function(thePlayer) if not (isElement(thePlayer)) then return end setElementPosition ( thePlayer, 2501, -1674, 13 ) end, tempo, 1, thePlayer) commando[thePlayer] = true setTimer( function() commando[thePlayer] = false end, tempo*2, 1) end addCommandHandler ( "cj", tele )
  2. Ola a todos. Estou com um problema em um sistema de prender, tentei usar isGuestAccount, mas da forma que usei não funcionou. Alguém que poderia me dar um help pfv? WARNING: [Mod]-Prender\PrenderServer.Lua:2: setElementDimension: Modifying players before onPlayerJoin can cause desynchronization WARNING: [Mod]-Prender\PrenderServer.Lua:3: setElementInterior: Modifying players before onPlayerJoin can cause desynchronization WARNING: [Mod]-Prender\PrenderServer.Lua:5: setPlayerWantedLevel: Modifying players before onPlayerJoin can cause desynchronization WARNING: [Mod]-Prender\PrenderServer.Lua:7: removeElementData: Modifying players before onPlayerJoin can cause desynchronization WARNING: [Mod]-Prender\PrenderServer.Lua:8: takeAllWeapons: Modifying players before onPlayerJoin can cause desynchronization WARNING: [Mod]-Prender\PrenderServer.Lua:9: takePlayerMoney: Modifying players before onPlayerJoin can cause desynchronization function Liberar(Jogador) setElementDimension(Jogador, 0) setElementInterior(Jogador, 0, 1552.9320068359-math.random(3), -1676.1313476563, 16.1953125) setPedAnimation(Jogador, nil, nil) setPlayerWantedLevel(Jogador, 0) outputChatBox("#ffffffVocê foi solto da Prisão, não cometa crimes novamente!", Jogador, 255, 255, 255, true) removeElementData(Jogador, "preso") takeAllWeapons(Jogador) takePlayerMoney(Jogador, 1000) removeElementData(rRoot,""..getPlayerSerial(Jogador).."-j") end
  3. Sim, é um resource da internet. Ele está acusando esse WARNING que falei acima, estou tentando arrumar todos esses erros, pois está de certa forma me incomodando, pelo conhecimento que eu tenho, tentei algumas formas, usando o if mrk then, porém após eu mexer nisso ele está alterando as permissões da casa. Exemplo: Uma pessoa já consegue comprar uma casa que já está comprada, sendo que isso não era pra acontecer.
  4. Olá, estou com um problema neste código, já tentei algumas coisas porém após eu tentar arrumar o mod não funciona como deveria funcionar (não acusa nenhum erro no debug), se alguém conseguir me ajudar, agradeço! Tentei usar if mrk then WARNING: Casa\core\core_server.lua:13: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean] function onPlayerHouseMarkerHit( player, mrk, cursor ) local acc = getPlayerAccount( player ); if isGuestAccount( acc ) then outputChatBox( '#ffffffVocê precisa estar logado para entrar na casa!', player, 255, 51, 36, true); setElementData( player, 'mrk_in', nil ); setElementFrozen( player, false ); return false; end; local tts = { [1] = true, [2] = false, [3] = false, [4] = true, [5] = false, [6] = false }; if isObjectInACLGroup( 'user.'..getAccountName( acc ), aclGetGroup( 'admin' ) ) then tts[6] = true; end; local owner = getElementData( mrk, 'HS_INFO' )[7]; local accName = getAccountName( acc ); if owner == accName then tts[1] = false; tts[2] = true; tts[3] = true; tts[4] = true; tts[5] = true; end; if owner ~= accName and owner ~= '' then tts[1] = false; end; if owner == '' then if isObjectInACLGroup( 'user.'..getAccountName( acc ), aclGetGroup( 'admin' ) ) then tts[4] = true; else tts[4] = false; end; end; tts[7] = getElementData( mrk, 'HS_INFO' )[9]; tts[8] = getElementData( mrk, 'HS_INFO' )[7]; tts[9] = getElementData( mrk, 'HS_INFO' )[6]; triggerClientEvent( player, 'openHouseManagementWnd', root, tts, cursor ); end;
  5. Olá rapaziada, estou com um erro em um mod de radio, mas não sei como resolver. Fiz diversos testes no servidor, e percebi que o erro ocorre pois ele está tentando parar um som que já está parado, pois ao terminar uma música, se a pessoa apertar o botão para desligar o radio, ele vai acusar esse erro. Alguém que consiga me ajudar com isso? Não tenho muito conhecimento nessa parte que envolve som. WARNING: Radio/cVehRadio.lua:6:Bad argument @ 'stopSound' [Expected sound at argument 1] addEvent("onServerToggleRadio", true) addEventHandler("onServerToggleRadio", getLocalPlayer(), function(toggle, url, veh, volume) if not isElement(veh) then if radioSound[veh] ~= nil then stopSound(radioSound[veh].soundElement) radioSound[veh].soundElement = nil end return end if toggle == true then local x, y, z = getElementPosition(veh) if radioSound[veh] ~= nil then if radioSound[veh].soundElement ~= nil then stopSound(radioSound[veh].soundElement) end local sound = playSound3D(url, x, y, z) if volume ~= nil then setSoundVolume(sound, volume) end setSoundMinDistance(sound, 10.3) setSoundMaxDistance(sound, 32.8) attachElements(sound, veh) radioSound[veh] = { } radioSound[veh].soundElement = sound else local sound = playSound3D(url, x, y, z) if volume ~= nil then setSoundVolume(sound, volume) end setSoundMinDistance(sound, 10.2) setSoundMaxDistance(sound, 31.6) attachElements(sound, veh) radioSound[veh] = { } radioSound[veh].soundElement = sound end else if radioSound[veh] ~= nil then if radioSound[veh].soundElement ~= nil then stopSound(radioSound[veh].soundElement) radioSound[veh].soundElement = nil end end end end )
  6. Alguém pra me ajudar a solucionar isso pfv? WARNING: Prisão\PrenderServer.lua:4: Expected positive value, got negative. This warning may be an error in future versions. ERROR: Prisão\PrenderServer.lua:4: Valid wanted levels are between 0 and 6 inclusive function onSetTime() for _, v in pairs(getElementsByType("player")) do if ( getElementData(rRoot,""..getPlayerSerial(v).."-j") or ( getElementData(v, "preso") ) ) then setPlayerWantedLevel(v, getPlayerWantedLevel(v)-1) if ( getPlayerWantedLevel(v) == 0 ) then Liberar(v) end end end end setTimer(onSetTime, 30000, 0)
  7. Bom, estava aqui testando as funções do mod e descobri um outro erro, fui atrás pra tentar solucionar, mas até agora nada, li um tópico com esse mesmo problema, mas não consegui resolver. Entre a linha 5 e 6 tentei colocar if hm_gui then continuou o mesmo erro ERROR: Casa\core\core_client.lua:7: attempt to index upvalue 'hm_gui' (a boolean value) local hm_gui = false addEvent( 'openHouseManagementWnd', true ); addEventHandler('openHouseManagementWnd', root, function( rt, cursor ) for i, cname in ipairs( { 'buy', 'sale', 'key', 'enter', 'destroy'} ) do guiSetEnabled( hm_gui ['bck_'..cname], rt[i] ); guiSetEnabled( hm_gui ['icon_'..cname], rt[i] ); if not rt[i] then guiSetAlpha( hm_gui ['icon_'..cname], 0.3 ); else guiSetAlpha( hm_gui['icon_'..cname], 1.0 ); end; end; guiSetText( hm_gui['label_ID_dyn'], rt[7] ); guiSetText( hm_gui['label_owner_dyn'], rt[8] ); guiSetText( hm_gui['label_price_dyn'], rt[9] ); guiSetVisible( hm_gui['main'], true ); if cursor then showCursor( true ); end; end );
  8. function getPlayerByHouseID( id ) for i, v in ipairs( getElementsByType( 'player' ) ) do if getElementData( v, 'mrk_in' ) == id then return v; end; end; return false; end;
  9. Como posso resolver esse problema?
  10. Oi. Estou com um problema, alguém que consiga me ajudar? Desde já agradeço. WARNING: Casas\core\core_server.lua:24: Bad argument @ 'setElementData' [Expected element at argument 1, got boolean] addEvent( 'HOUSE_Destroy', true ); addEventHandler( 'HOUSE_Destroy', root, function() local mrk = getHouseByID( getElementData( client, 'mrk_in' ) ); for ii, v in ipairs( getElementsByType( 'marker', getResourceRootElement() ) ) do if getElementData( v, 'parent' ) == mrk then destroyElement( v ); end; end; local hr = sql.Query( "SELECT * FROM house_data" ); for i = getElementData( source, 'mrk_in' ), #hr do if getHouseByID( i ) ~= mrk then sql.Query( "UPDATE house_data SET ID = "..( i - 1 ).." WHERE ID = ?", i ); local res = sql.Query( "SELECT owner, key FROM house_data WHERE ID = ?", i - 1 ); local nextMrk = getHouseByID( i ); local t = {}; for i = 1, 6 do t[i] = getElementData( nextMrk, 'HS_INFO' )[i]; end; t[7] = res[1].owner; t[8] = res[1].key; t[9] = i - 1; setElementData( nextMrk, 'HS_INFO', { t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9] } ); local player = getPlayerByHouseID( i - 1 ); setElementData( player, 'mrk_in', i - 1 ); else sql.Query( "DELETE FROM house_data WHERE ID = ?", i ); destroyElement( mrk ); end; end; outputChatBox( '#ffffffA Casa '..getElementData( source, 'mrk_in' )..' Foi Deletada!', source, 255, 255, 0, true); setElementFrozen( source, false ); setElementData( source, 'mrk_in', nil ); end );
  11. Estou com um problema com isso, alguém que poderia me ajudar please? WARNING: Teleport\teleports.lua:6: Bad argument @ 'fadeCamera' [Expected element at argument 1] commando = { } tempo = 1000 function tele (thePlayer) fadeCamera(thePlayer, false, 0.5) setTimer(fadeCamera, 1000, 1, thePlayer, true) if (commando[thePlayer]) then return end setTimer( function(thePlayer) if not (isElement(thePlayer)) then return end setElementPosition ( thePlayer, 2501, -1674, 13 ) end, tempo, 1, thePlayer) commando[thePlayer] = true setTimer( function() commando[thePlayer] = false end, tempo*2, 1) end addCommandHandler ( "cj", tele )
  12. local screenWidth,screenHeight = guiGetScreenSize() local score = 0 local combo = 0 local multiplier = 1 local failDrift = false local size = 2.5 local fps = getFPSLimit() local vehicle local inVehicle = false local multipliers = { {100000,5}, {50000,4}, {25000,3}, {10000,2}, {0,1}, } local screen = {guiGetScreenSize()}; local x, y = (screen[1]/1366), (screen[2]/768) local textX = screenWidth/2 local textY = screenHeight/4 local lineY = 45 local textScale = 2.5 local red = tocolor(255, 255, 255) local green = tocolor(255, 255, 255) local font = "default-bold" local alignX = "center" local alignY = "center" local gui = {} local allowedType = { ["Automobile"] = true, ["Quad"] = true, ["Monster Truck"] = true, } local forcedEvents = { ["onClientElementDestroy"] = true, ["onClientPlayerWasted"] = true, } local function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2') if ( k==0 ) then break end end return formatted end local function checkVehicleHandling() if not isElement(vehicle) then return end local flags = getVehicleHandling(vehicle)["handlingFlags"] if (bitAnd( flags, 32 ) == 32) or (bitAnd( flags, 64 ) == 64) then return true end end local function driftEnd (endscore,endcombo) local oldBestDrift = getElementData (localPlayer,"Best Drift") or 0 local oldTotalDrift = getElementData (localPlayer,"Total Drift") or 0 score = 0 combo = 0 if endscore ~= 0 then setElementData(localPlayer,"Total Drift",math.floor(endscore+oldTotalDrift)) setElementData(localPlayer,"Last Drift",math.floor(endscore)) end if endscore > oldBestDrift then setElementData(localPlayer,"Best Drift",endscore) end if endscore >= 2000 then triggerServerEvent("onDriftEnd",localPlayer,endscore) triggerEvent("onClientDriftEnd",localPlayer,endscore) end end local function calculateAngle () if not allowedType[vehicle.vehicleType] then return 0,0 end if not isVehicleOnGround(vehicle) then return 0,0 end if failDrift then return 0,0 end local vx,vy,vz = getElementVelocity(vehicle) local rx,ry,rz = getElementRotation(vehicle) local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz)) local speed = (vx^2 + vy^2 + vz^2)^(0.5) local modV = math.sqrt(vx*vx + vy*vy) local cosX = (sn*vx + cs*vy)/modV if modV <= 0.2 then return 0,0 end if cosX > 0.966 or cosX < 0 then return 0,0 end return math.deg(math.acos(cosX))*0.5,speed end local function updateFPS(msSinceLastFrame) fps = (1 / msSinceLastFrame) * 1000 end local function resetFail() failDrift = false showScore=false end local function onCollide(attacker) if attacker or failDrift then return end failDrift = true driftEnd(0,0) setTimer(resetFail,2000,1) end local function drawMeter () if isWorldSpecialPropertyEnabled("hovercars") then return end if checkVehicleHandling() then return end if not isElement(vehicle) then return end if localPlayer.vehicle ~= vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil inVehicle=false checkVehicle() return end local angle,speed = calculateAngle() if isTimer (resetTimer) and angle ~= 0 then killTimer(resetTimer) showScore = true if comboReady then combo = combo + 1 comboReady = false end end if angle == 0 then if not isTimer(resetTimer) then comboReady = true resetTimer = setTimer (function() if score == 0 then return end driftEnd (score,combo) score = 0 combo = 0 showScore = false end,1300,1) end end local gameSpeed = getGameSpeed() for k,v in ipairs(multipliers) do local pointsNeeded,multi = unpack(multipliers[k]) if score > pointsNeeded then multiplier = multi break end end local fpsMultiplier = 100/fps local angleScore = angle/2 local speedScore = speed*3 local driftScore = angleScore*speedScore local addScore = math.floor(driftScore*multiplier) local gameSpeedFixedScore = math.floor(gameSpeed*addScore) score = score + math.floor(fpsMultiplier*gameSpeedFixedScore) if showScore then local color = (failDrift and red or green) --dxDrawText ("Pontos de Drift x"..tostring(combo),textX,0,textX,textY-lineY,color,textScale,font,alignX,alignY) dxDrawText (convertNumber(score),textX,0,textX,textY,color,textScale,font,alignX,alignY) end end function checkVehicle(vehicleEntered) local isForcedFalse = forcedEvents[eventName] ~= true if localPlayer.inVehicle == inVehicle and isForcedFalse then return end local tempVehicle = vehicleEntered or getPedOccupiedVehicle(localPlayer) local seat = getPedOccupiedVehicleSeat(localPlayer) inVehicle = ((seat == 0 and allowedType[tempVehicle.vehicleType]) and (isForcedFalse and localPlayer.inVehicle or false) or false) if inVehicle and seat==0 then vehicle = tempVehicle addEventHandler("onClientVehicleDamage",vehicle,onCollide) addEventHandler("onClientElementDestroy",vehicle,checkVehicle) addEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) addEventHandler("onClientRender",root,drawMeter) addEventHandler("onClientPreRender", root, updateFPS) elseif not inVehicle and vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil end end local function loadRecords(records,maxPosition,myAcc) grid:Clear() local guestID = 0 for position,record in ipairs(records) do local player,score,name,isGuest = record.username,record.score,record.playername,record.isGuest if isGuest == "true" then guestID=guestID+1 if myAcc == "guest" then myAcc = hash("sha512",getPlayerSerial()) end end grid:AddItem(1,tostring(position)) grid:AddItem(2,name) grid:AddItem(3,(isGuest == "true" and "guest_"..tostring(guestID) or player)) grid:AddItem(4,convertNumber(score)) if player == myAcc then end end end
  13. Oi gente, estou com um problema, já pesquisei em alguns tópicos aqui no forum, mas não achei uma solução para isso, alguém que possa me ajudar? WARNING: drift\c.lua:14: Bad usage @ 'addEventHandler' ['onClientPlayerWasted' with this function is already handled] WARNING: drift\c.lua:15: Bad usage @ 'addEventHandler' ['onClientRender' with this function is already handled] WARNING: drift\c.lua:16: Bad usage @ 'addEventHandler' ['onClientPreRender' with this function is already handled] Código: function checkVehicle(vehicleEntered) local isForcedFalse = forcedEvents[eventName] ~= true if localPlayer.inVehicle == inVehicle and isForcedFalse then return end local tempVehicle = vehicleEntered or getPedOccupiedVehicle(localPlayer) local seat = getPedOccupiedVehicleSeat(localPlayer) inVehicle = ((seat == 0 and allowedType[tempVehicle.vehicleType]) and (isForcedFalse and localPlayer.inVehicle or false) or false) if inVehicle and seat==0 then vehicle = tempVehicle addEventHandler("onClientVehicleDamage",vehicle,onCollide) addEventHandler("onClientElementDestroy",vehicle,checkVehicle) addEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) addEventHandler("onClientRender",root,drawMeter) addEventHandler("onClientPreRender", root, updateFPS) elseif not inVehicle and vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil end end
  14. Opa, valeu @MaligNos. Porém agora ele está acusando outro erro, ao que eu entendi ele não está removendo o evento após ser destruído, o que eu poderia fazer pra resolver isso? WARNING: Contador\drift_c.lua:6: Bad argument @ 'removeEventHandler' [Expected element at argument 2] WARNING: Contador\drift_c.lua:7: Bad argument @ 'removeEventHandler' [Expected element at argument 2] local function drawMeter () if isWorldSpecialPropertyEnabled("hovercars") then return end if checkVehicleHandling() then return end if localPlayer.vehicle ~= vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil inVehicle=false checkVehicle() return end
  15. Olá galerinha, estou com um problema em um mod de contagem de drift, em alguns momentos após o veículo ser destruído ele aparece isso: WARNING: Contador\drift_c.lua:58: Bad argument @ 'getVehicleHandling' [Expected vehicle at argument 1] ERROR: Contador\drift_c.lua:58: attempt to index a boolean value Alguém que possa me ajudar nisso? local function checkVehicleHandling() local flags = getVehicleHandling(vehicle)["handlingFlags"] if (bitAnd( flags, 32 ) == 32) or (bitAnd( flags, 64 ) == 64) then return true end end
  16. Obrigado, consegui resolver. Só que estou com outro problema aqui, nesse mesmo mod quando o player picha em algum veículo, algumas vezes ele acontece esse erro: WARNING: drawtag\spraying_c:8: Bad argument @ 'isElementStreamedIn' [Expected element at argument 1] Alguém que possa me ajudar com isso? function streamTags() while true do local updated = 0 local cx,cy,cz = getCameraMatrix() for tag,exists in pairs(all_tags) do local att = getElementData(tag,"attached") if att then local streamedin = isElementStreamedIn(att) if visible_tags[tag] then if not streamedin then streamOutTag(tag) end else if streamedin then streamInTag(tag) end end else local x,y,z = getTagCenterPosition(tag) x,y,z = x-cx,y-cy,z-cz local dist = x*x+y*y+z*z local tagvisdist = getElementData(tag,"size")*TAG_VISIBILITY_DISTANCE_MULT if visible_tags[tag] then if dist > tagvisdist*tagvisdist then streamOutTag(tag) end else if dist <= tagvisdist*tagvisdist then streamInTag(tag) end end updated = updated+1 if updated == 64 then coroutine.yield() updated = 0 cx,cy,cz = getCameraMatrix() end end end coroutine.yield() end end
  17. Ele está dando isso, tentei também trocar para thePlayer e mesmo assim continuou WARNING: Loja1\server.lua:26: Bad argument @ 'givePlayerMoney' [Expected element at argument 1, got nil]
  18. Opa, estou tentando solucionar o erro de todos os mods do meu servidor, porém apareceu um aqui que eu não consigo solucionar, aparentemente não vi nada de errado, alguém poderia me ajudar a solucionar isso? pfv WARNING: Loja1\server.lua:25: Bad argument @ 'givePlayerMoney' [Expected element at argument 1] WARNING: Loja1\server.lua:26: Bad argument @ 'outputChatBox' [Expected element at argument 2] function comandoloja (source) if isElementWithinMarker (source, roubarloja ) then for _,players in pairs(getElementsByType("player")) do for i, k in pairs(corps) do local ContaACL = getAccountName ( getPlayerAccount ( players ) ) if isObjectInACLGroup ("user."..ContaACL, aclGetGroup (k)) then outputChatBox("#ffffff*#FF0000Atenção - O Jogador:#ffffff " .. getPlayerName(source) .. " #FF0000Está Roubando a Loja1.", players,255,255,255,true) end end end setPlayerWantedLevel ( source, 6 ) setElementPosition ( lojasair1, 834.66760, 7.45359, 1050) setElementPosition ( roubarloja, 822.74316, -0.47490, 1050) outputChatBox ('#ffffffAguarde Enquanto Você Pega O Dinheiro!',source,255,255,255,true) setPedAnimation(source, "SHOP", "ROB_Loop_Threat", 40000, true, false, false, false) setPedRotation(source,90 ) setPedAnimation( ped, "SHOP", "SHP_Rob_HandsUp") triggerClientEvent ( root, "roubar", root) setElementVisibleTo ( blipalarme, root, true ) setTimer ( function() setElementPosition ( lojasair1, 834.664418,7.3,1005.18701) setElementInterior ( roubarloja, 3) setPedAnimation(ped,false) setElementPosition ( ped, 819.40869, -0.45965, 1004.17969) givePlayerMoney ( source, 1300 ) outputChatBox ('#ffffffVocê Roubou a Loja 1 e Pegou #00ff00R$1.000',source,255,255,255,true) end, 40000, 1 ) setTimer ( function() setElementVisibleTo ( blipalarme, root, false ) setElementPosition( roubarloja, 822.74316, -0.47490, 1003.2) end, 80000, 1 ) end end addCommandHandler ( "assaltar", comandoloja )
  19. Aqui está o código completo: function initSpraying() addEvent("drawtag:onTagStartSpray",true) addEvent("drawtag:onTagFinishSpray",true) addEvent("drawtag:onTagStartErase",true) addEvent("drawtag:onTagFinishErase",true) tag_root = createElement("drawtag:tags","drawtag:tags") addEventHandler("onElementDataChange",tag_root,detectSprayOrErase) addEventHandler("onElementDestroy",root,destroyAttachedTags) addEventHandler("onElementDestroy",resourceRoot,unlinkTagFromAttached) addEventHandler("onPlayerJoin",root,createTagOnJoin) addEventHandler("onPlayerQuit",root,destroyTagOnQuit) local all_players = getElementsByType("player") for plnum,player in ipairs(all_players) do initSprayingForPlayer(player) end end function createTagForPlayer(player,pngdata) local player_tag = createElement("drawtag:tag") local playeraccount = getPlayerAccount(player) if not isGuestAccount(playeraccount) then setElementParent(player_tag,tag_root) setElementData(player,"drawtag:tag",player_tag) if pngdata then setElementData(player_tag,"pngdata",pngdata) end end end function initSprayingForPlayer(player) createTagForPlayer(player) addEventHandler("onElementDataChange",player,createAnotherTagForPlayer) end function createAnotherTagForPlayer(dataname,oldval) if client ~= source or dataname ~= "drawtag:tag" or getElementData(source,"drawtag:tag") then return end local pngdata if isElement(oldval) then triggerEvent("drawtag:onTagStartSpray",oldval,source) pngdata = getElementData(oldval,"pngdata") end createTagForPlayer(source,pngdata) end function createTagOnJoin() initSprayingForPlayer(source) end function destroyTagOnQuit() local tag = getElementData(source,"drawtag:tag") if not isElement(tag) then return end destroyElement(tag) end function detectSprayOrErase(dataname,oldval) if no_datachange_trigger then return end if dataname ~= "visibility" then return end local visibility = getElementData(source,"visibility") if visibility == 90 then triggerEvent("drawtag:onTagFinishSpray",source,client) elseif visibility == 0 then triggerEvent("drawtag:onTagFinishErase",source,client) destroyElement(source) elseif oldval == 90 then triggerEvent("drawtag:onTagStartErase",source,client) end end function destroyAttachedTags() local attlist = getElementData(source,"drawtag:attached") if attlist then attlist.n = nil no_tag_destroy_trigger = true for tag,attached in pairs(attlist) do destroyElement(tag) end no_tag_destroy_trigger = nil end end function unlinkTagFromAttached() if getElementType(source) ~= "drawtag:tag" then return end if no_tag_destroy_trigger then return end local att = getElementData(source,"attached") if att then local attlist = getElementData(att,"drawtag:attached") if source then attlist[source] = nil attlist.n = attlist.n-1 if attlist.n == 0 then removeElementData(att,"drawtag:attached") else setElementData(att,"drawtag:attached",attlist) end end end end ----------------------------------------------------- function setPlayerSprayMode(player,mode) if not isElement(player) or getElementType(player) ~= "player" then return false end if mode == "none" then return removeElementData(player,"drawtag:spraymode") elseif mode == "draw" or mode == "erase" then return setElementData(player,"drawtag:spraymode",mode) end end function getPlayerSprayMode(player) if not isElement(player) or getElementType(player) ~= "player" then return false end return getElementData(player,"drawtag:spraymode") or "none" end function setPlayerTagSize(player,size) size = tonumber(size) if not size or size <= 0 then return false end if not isElement(player) or getElementType(player) ~= "player" then return false end local playeraccount = getPlayerAccount(player) if not isGuestAccount(playeraccount) then setElementData(player,"drawtag:size",size) return true end end function getPlayerTagSize(player) if not isElement(player) or getElementType(player) ~= "player" then return false end return getElementData(player,"drawtag:size") end function setPlayerTagTexture(player,pngdata) if not isElement(player) or getElementType(player) ~= "player" then return false end local tag = getElementData(player,"drawtag:tag") if not isElement(tag) then return false end setElementData(tag,"pngdata",pngdata) return true end ----------------------------------------------------- function createTagFromExistingData(attached,x,y,z,x1,y1,z1,x2,y2,z2,nx,ny,nz,size,visibility,pngdata) if attached and not isElement(attached) then return false end x,y,z = tonumber(x),tonumber(y),tonumber(z) if not (x and y and z) then return false end x1,y1,z1 = tonumber(x1),tonumber(y1),tonumber(z1) if not (x1 and y1 and z1) then return false end x2,y2,z2 = tonumber(x2),tonumber(y2),tonumber(z2) if not (x2 and y2 and z2) then return false end nx,ny,nz = tonumber(nx),tonumber(ny),tonumber(nz) if not (nx and ny and nz) then return false end visibility = tonumber(visibility) if not visibility then return false end if type(pngdata) ~= "string" then return false end local tag = createElement("drawtag:tag") setElementParent(tag,tag_root) no_datachange_trigger = true if attached then setElementData(tag,"attached",attached) local attlist = getElementData(attached,"drawtag:attached") or {n = 0} attlist[tag] = true attlist.n = attlist.n+1 setElementData(attached,"drawtag:attached",attlist) end setElementData(tag,"x",x) setElementData(tag,"y",y) setElementData(tag,"z",z) setElementData(tag,"x1",x1) setElementData(tag,"y1",y1) setElementData(tag,"z1",z1) setElementData(tag,"x2",x2) setElementData(tag,"y2",y2) setElementData(tag,"z2",z2) setElementData(tag,"nx",nx) setElementData(tag,"ny",ny) setElementData(tag,"nz",nz) setElementData(tag,"size",size) setElementData(tag,"visibility",visibility) setElementData(tag,"pngdata",pngdata) setElementData(tag,"visible",true) no_datachange_trigger = nil return tag end function getAllTags() local tagcount = getElementChildrenCount(tag_root) local tags = {} for tagnum = 0,tagcount-1 do local tag = getElementChild(tag_root,tagnum) if getElementData(tag,"visible") then table.insert(tags,tag) end end return tags end function getTagAttachedElement(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end return getElementData(tag,"attached") end function getTagPosition(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end return getElementData(tag,"x"),getElementData(tag,"y"),getElementData(tag,"z") end function getTagNormal(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end return getElementData(tag,"nx"),getElementData(tag,"ny"),getElementData(tag,"nz") end function getTagSize(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end return getElementData(tag,"size") end function getTagTexture(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end return getElementData(tag,"pngdata") end function getTagData(tag) if not isElement(tag) or getElementType(tag) ~= "drawtag:tag" then return false end if not getElementData(tag,"visible") then return false end return getElementData(tag,"attached"), getElementData(tag,"x" ),getElementData(tag,"y" ),getElementData(tag,"z" ), getElementData(tag,"x1"),getElementData(tag,"y1"),getElementData(tag,"z1"), getElementData(tag,"x2"),getElementData(tag,"y2"),getElementData(tag,"z2"), getElementData(tag,"nx"),getElementData(tag,"ny"),getElementData(tag,"nz"), getElementData(tag,"size"), getElementData(tag,"visibility"),getElementData(tag,"pngdata") end
  20. Estou com um problema no addEventHandler, no console acusa que ele já foi tratado (pelo que entendi), como posso resolver isso? WARNING: drawtag\spraying_s.lua:3: Bad usage @ 'addEventHandler' ['onElementDataChange' with this function is already handled] function initSprayingForPlayer(player) createTagForPlayer(player) addEventHandler("onElementDataChange",player,createAnotherTagForPlayer) end function createAnotherTagForPlayer(dataname,oldval) if client ~= source or dataname ~= "drawtag:tag" or getElementData(source,"drawtag:tag") then return end local pngdata if isElement(oldval) then triggerEvent("drawtag:onTagStartSpray",oldval,source) pngdata = getElementData(oldval,"pngdata") end createTagForPlayer(source,pngdata) end
  21. funcionou aqui, muito obrigado!
  22. Estou com outro problema nesse mesmo Mod, tentei procurar alguma função pra isso porém não achei, é o seguinte. Esse mod ele é aquele mod de Glue X que encontra por ai na internet, após o player apertar a letra X ele ficará grudado em cima do veículo. Porém recentemente descobri um bug nele, no qual a pessoa aperta a letra X pra grudar e depois cria um veículo pelo painel, como o veículo é spawnado junto com o player, acaba que mesmo depois de spawnado o veículo, ele continua no local que grudou com o X. Aqui está um vídeo sobre como funciona isso: https://www.youtube.com/watch?v=Ubnrwa8nmh4 , se alguém poder me ajudar a solucionar isso de alguma forma, agradeço. Código: --client-side function glue() local player = getLocalPlayer() if not getPedOccupiedVehicle(player) then local vehicle = getPedContactElement(player) if vehicle then if getElementType(vehicle) == "vehicle" then local px, py, pz = getElementPosition(player) local vx, vy, vz = getElementPosition(vehicle) local sx = px - vx local sy = py - vy local sz = pz - vz local rotpX = 0 local rotpY = 0 local rotpZ = getPedRotation(player) local rotvX,rotvY,rotvZ = getElementRotation(vehicle) local t = math.rad(rotvX) local p = math.rad(rotvY) local f = math.rad(rotvZ) local ct = math.cos(t) local st = math.sin(t) local cp = math.cos(p) local sp = math.sin(p) local cf = math.cos(f) local sf = math.sin(f) local z = ct*cp*sz + (sf*st*cp + cf*sp)*sx + (-cf*st*cp + sf*sp)*sy local x = -ct*sp*sz + (-sf*st*sp + cf*cp)*sx + (cf*st*sp + sf*cp)*sy local y = st*sz - sf*ct*sx + cf*ct*sy local rotX = rotpX - rotvX local rotY = rotpY - rotvY local rotZ = rotpZ - rotvZ local slot = getPedWeaponSlot(player) triggerServerEvent("gluePlayer", player, slot, vehicle, x, y, z, rotX, rotY, rotZ) unbindKey("x","down",glue) bindKey("x","down",unglue) bindKey("jump","down",unglue) end end end end addCommandHandler("glue",glue) function unglue () local player = getLocalPlayer() triggerServerEvent("ungluePlayer", player) unbindKey("jump","down",unglue) unbindKey("x","down",unglue) bindKey("x","down",glue) end addCommandHandler("unglue",unglue) bindKey("x","down",glue) --server-side function gluePlayer(slot, vehicle, x, y, z, rotX, rotY, rotZ) if getElementType (vehicle) == "vehicle" then attachElements(source, vehicle, x, y, z, rotX, rotY, rotZ) setPedWeaponSlot(source, slot) end end addEvent("gluePlayer",true) addEventHandler("gluePlayer",getRootElement(),gluePlayer) function ungluePlayer() detachElements(source) end addEvent("ungluePlayer",true) addEventHandler("ungluePlayer",getRootElement(),ungluePlayer)
×
×
  • Create New...