Search the Community

Showing results for tags 'function'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Multi Theft Auto: San Andreas 1.x
    • Support for MTA:SA 1.x
    • User Guides
    • Open Source Contributors
    • Suggestions
    • Ban appeals
  • General MTA
    • News
    • Media
    • Site/Forum/Discord/Mantis/Wiki related
    • MTA Chat
    • Other languages
  • MTA Community
    • Scripting
    • Maps
    • Resources
    • Other Creations & GTA modding
    • Competitive gameplay
    • Servers
  • Other
  • Archive
  • Private Bugtracker

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Gang


Location


Occupation


Interests

Found 29 results

  1. Sooo, how can I use (I think for you well known) dxDrawTextOnElement() (client-side function, MTA Wiki site: [click]) in server-side scripts? I tried to export, plus this code: addEventHandler("onPlayerChat", resourceRoot, function(message, type_) if(type_ == 0) then call(resourceRoot, "dxDrawTextOnElement", source, message, 1, 20, 255, 255, 255, 255, 1, "default-bold") end end) (export in meta.xml for proof): <meta> <info author="VaporZ" name="VaporZ's utility [PL]" description="(desc)" type="script" version="1.0.1"/> <script src="cars.Lua" type="server"/> <script src="bank.Lua" type="server"/> <script src="utility.Lua" type="server"/> <script src="utility-c.Lua" type="client"/> <script src="testy.Lua" type="server"/> <file src="bank/accounts.xml"/> <file src="bank/atms.xml"/> <file src="cars/saved.xml"/> <file src="cars/shops.xml"/> <export function="dxDrawTextOnElement" type="client"/> </meta> But this don't work. Any ideas? Okay, I got further, but still it's not good. Look at this one (console error): ERROR: systems\utility.Lua:108: call: failed to call 'systems:dxDrawTextOnElement'
  2. Today, I've made a event, for checking if player have mooved. At first, after success of detecting players' moovement, it was displaying a message for player, who have mooved.Then, I tried to trigger the event, and the problems started. Any idea? Code's here: ----------------------------------------- ---------------VaporZ (c)---------------- ----------------------------------------- toggleOnPlayerMove = true addEventHandler("onResourceStart", root, function() if(toggleOnPlayerMove == true) then addEvent("onPlayerMove", true) setTimer( function() for _, player in ipairs(getElementsByType("player")) do local x, y, z = getElementPosition(player) setTimer( function() local x_, y_, z_ = getElementPosition(player) if(x ~= x_) and (y ~= y_) and (z ~= z_) then triggerEvent("onPlayerMove", root, player) end end, 1, 1) end end, 1, 0) end end) function dispMsg(player) outputChatBox("You've mooved!", player, math.random(1, 255), math.random(1, 255), math.random(1, 255), true) end addEventHandler("onPlayerMove", root, dispMsg) It is just giving me no errors and no message. Idk wut is wrong.
  3. This function is for creating idle animations, on player's afk/idle. Aaand, u need to probably put this one in "onResourceStart" event, remember, to make it work. Here it comes: setTimer( function() for _, player in ipairs(getElementsByType("player")) do if(getPlayerIdleTime(player) > 10000) then local veh = getPedOccupiedVehicle(player) if veh then setPedAnimation(player, "car", "Sit_relaxed", -1, false, false, true, true, 250, false) else local anim = math.random(1, 5) if(anim == 1) then setPedAnimation(player, "playidles", "stretch", -1, false, false, false, false) elseif(anim == 2) then setPedAnimation(player, "playidles", "strleg", -1, false, false, false, false) elseif(anim == 2) then setPedAnimation(player, "playidles", "time", -1, false, false, false, false) elseif(anim == 2) then setPedAnimation(player, "playidles", "shldr", -1, false, false, false, false) elseif(anim == 2) then setPedAnimation(player, "playidles", "shift", -1, false, false, false, false) end end end end end 5000, 0) That's what I wanted to create, mentioning my latest post
  4. CALL FUNCTION DOESN'T WORK I tried to use "handbrake" command from Vehicle System resource (link: https://github.com/FlyingSpoon/vehicle-system). Of course, I've called to function, that I had to create either, because there were only command handlers, but the error kept showing up in console: failed to call 'vsys:handbrakeA'. IMPORTANT: I've added mark to meta file of Vehicle System that I want to export a function, even, I set one .Lua file to <shared>. (Server-side) function: function garage(player) local veh = getPedOccupiedVehicle(player) local x, y, z = getElementPosition(player) if veh then setElementPosition(veh, 4651.0595703125, -15999.06640625, -0.55000001192093) call(getResourceFromName("vsys"), "handbrakeA", player) call(getResourceFromName("vsys"), "parkA", player) removePedFromVehicle(player) setElementPosition(player, x, y, z) outputChatBox ("#09ff00Gotowe!", player, 255, 255, 255, true) else outputChatBox("#ff1100Musisz być w pojeździe!",player, 255, 255, 255, true) end end *Do not teleport urself to the coordinates! 🤣 *outputChatBox messages translations: 1st - Done!, 2nd - You need to be in vehicle! CAN SOMEONE HELP, PLEASE? 😭
  5. Identical panels, only with different functions, giving interference, how to fix? the panels are separated by acl, but when I press the bind key, it opens the two, but it is not allowed to access the resources, but it gets in the way, because all corporation panels are the same, changing only the function and the acl group script: function SetCorpFT(player) if player and not isGuestAccount(getPlayerAccount(player)) then if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPECMD")) then setElementData (player,resname..":soucmd", true) setElementData (player,resname..":gerenciar", true) setElementData (player,resname..":promover", true) setElementData (player,resname..":expulsar", true) setElementData (player,resname..":recrutar", true) setElementData (player,resname..":skin1", true) setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":vtr2", true) setElementData (player,resname..":vtr3", true) setElementData (player,resname..":vtr4", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE6")) then setElementData (player,resname..":gerenciar", true) setElementData (player,resname..":promover", true) setElementData (player,resname..":expulsar", true) setElementData (player,resname..":recrutar", true) setElementData (player,resname..":skin1", true) setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":vtr2", true) setElementData (player,resname..":vtr3", true) setElementData (player,resname..":vtr4", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE5")) then setElementData (player,resname..":gerenciar", true) setElementData (player,resname..":skin1", true) setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":vtr2", true) setElementData (player,resname..":vtr3", true) setElementData (player,resname..":vtr4", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE4")) then setElementData (player,resname..":skin1", true) setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":vtr2", true) setElementData (player,resname..":vtr3", true) setElementData (player,resname..":vtr4", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE3")) then setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":vtr2", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE2")) then setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":vtr1", true) setElementData (player,resname..":soumembro", true) setElementData (player, "isPolice", true) return 1 end if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPE1")) then setElementData (player,resname..":skin2", true) setElementData (player,resname..":skin3", true) setElementData (player,resname..":soumembro", true) return 1 end end end setTimer( function() for i, pl in pairs(getElementsByType("player")) do if pl ~= (false or nil) then SetCorpFT(pl) end end end, 10000, 0) function checkskinsBOPE ( ) if ( getElementType ( source ) == "player" ) then if ( getElementModel ( source ) == 255 ) then if getElementData(source,"vdbbopevtr1") == false and not (isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPECMD")) then showBox(source,"info",""..corp..": Acesso negado") return end end if ( getElementModel ( source ) == 256 ) then if getElementData(source,"vdbbopevtr2") == false and not (isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPECMD")) then showBox(source,"info",""..corp..": Acesso negado") return end end if ( getElementModel ( source ) == 257 ) then if getElementData(source,"vdbbopevtr3") == false and not (isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("BOPECMD")) then showBox(source,"info",""..corp..": Acesso negado") return end end end end addEventHandler("onElementModelChange",getRootElement(),checkskinsBOPE) function CorpSkinBOPE(id) if tonumber(id) then setElementModel ( source, id ) showBox(source,"info","Você pegou skin "..corp..":") end end addEvent(resname..":setarskin", true) addEventHandler(resname..":setarskin", root, CorpSkinBOPE) function CorpKitBOPE() setElementHealth(source, 200) setPedArmor(source, 100) giveWeapon(source, 3, 200, true) giveWeapon(source, 23, 200, true) giveWeapon(source, 26, 200, true) giveWeapon(source, 28, 200, true) giveWeapon(source, 31, 200, true) giveWeapon(source, 34, 200, true) giveWeapon(source, 14, 200, true) showBox(source,"info","Você pegou Kit da "..corp..":") end addEvent(resname..":corpkitbope", true) addEventHandler(resname..":corpkitbope", root, CorpKitBOPE) function CorpTeleBaseBOPE () local CorpVTR = getPedOccupiedVehicle(source) if (CorpVTR) then setElementPosition(CorpVTR,1521.5, -1661.3000488281, 13.5) else setElementPosition(source,1521.5, -1661.3000488281, 13.5 ) end showBox(source,"info","Você teleportou-se para base da "..corp..":") end addEvent(resname..":corpteleportebasebope", true) addEventHandler(resname..":corpteleportebasebope", root, CorpTeleBaseBOPE) local CorpVTRBOPE = {} function CorpVTRvdbBOPE(viatura) local veiculo = getPedOccupiedVehicle ( source ) if veiculo and getVehicleController(veiculo) == source and isElement( CorpVTRBOPE[source] ) and veiculo == CorpVTRBOPE[source] then if tonumber(viatura) == 1 then setElementModel (veiculo,tonumber(547)) elseif tonumber(viatura) == 2 then setElementModel (veiculo,tonumber(490)) setVehicleColor(veiculo,255,255,255,255,255,255) elseif tonumber(viatura) == 3 then setElementModel (veiculo,tonumber(427)) elseif tonumber(viatura) == 4 then setElementModel (veiculo,tonumber(497)) end else if CorpVTRBOPE[source] and isElement( CorpVTRBOPE[source] ) then destroyElement( CorpVTRBOPE[source] ) CorpVTRBOPE[source] = nil end local x,y,z = getElementPosition(source) if tonumber(viatura) == 1 then CorpVTRBOPE[source] = createVehicle(547, x,y,z) warpPedIntoVehicle (source,CorpVTRBOPE[source]) showBox(source,"info","Você pegou VTR da "..corp..":") return 1 end if tonumber(viatura) == 2 then CorpVTRBOPE[source] = createVehicle(490, x,y,z) warpPedIntoVehicle (source,CorpVTRBOPE[source]) setVehicleColor(CorpVTRBOPE[source],255,255,255,255,255,255) showBox(source,"info","Você pegou VTR da "..corp..":") return 1 end if tonumber(viatura) == 3 then CorpVTRBOPE[source] = createVehicle(427, x,y,z) setVehicleDamageProof() warpPedIntoVehicle (source,CorpVTRBOPE[source]) showBox(source,"info","Você pegou Moto da "..corp..":") return 1 end if tonumber(viatura) == 4 then CorpVTRBOPE[source] = createVehicle(497, x,y,z) warpPedIntoVehicle (source,CorpVTRBOPE[source]) showBox(source,"info","Você pegou Moto da "..corp..":") return 1 end end end addEvent(resname..":corpviatura", true) addEventHandler(resname..":corpviatura", root, CorpVTRvdbBOPE) function CorpDestruirVTRBOPE() if CorpVTRBOPE[source] and isElement( CorpVTRBOPE[source] ) then destroyElement( CorpVTRBOPE[source] ) CorpVTRBOPE[source] = nil showBox(source,"info","Viatura destruida") end end addEvent(resname..":corpdestruirviatura", true) addEventHandler(resname..":corpdestruirviatura", root, CorpDestruirVTRBOPE) addEventHandler ("onPlayerQuit", root, CorpDestruirVTRBOPE) p_lights = {} p_timer = {} p_lvar = {} function CorpLuzesBOPE() local veh = getPedOccupiedVehicle(source) local id = getElementModel(veh) if (id == 547) or (id == 490) or (id == 427) or (id == 497) or (id == 427) or (id == 523) or (id == 490) or (id == 416) then if(p_lights[veh] == 0) or(p_lights[veh] == nil) then p_lights[veh] = 1 showBox(source,"info","Luzes de Alerta ligadas") setVehicleOverrideLights ( veh, 2 ) p_timer[veh] = setTimer( function() if(p_lvar[veh] == 0) or (p_lvar[veh] == nil) then p_lvar[veh] = 1 -- 0 = vorne links 1 = vorne rechts 2 = hinten links 3 = hinten rechts setVehicleLightState ( veh, 1, 0) setVehicleLightState ( veh, 2, 0) setVehicleLightState ( veh, 0, 1) setVehicleLightState ( veh, 3, 1) setVehicleHeadLightColor(veh, 0, 0, 255) else setVehicleLightState ( veh, 3, 0) setVehicleLightState ( veh, 0, 0) setVehicleLightState ( veh, 1, 1) setVehicleLightState ( veh, 2, 1) setVehicleHeadLightColor(veh, 255, 0, 0) p_lvar[veh] = 0 end end, 500, 0) else p_lights[veh] = 0 showBox(source,"info","Luzes de Alerta desligadas") killTimer(p_timer[veh]) setVehicleLightState ( veh, 0, 0) setVehicleLightState ( veh, 1, 0) setVehicleLightState ( veh, 2, 0) setVehicleLightState ( veh, 3, 0) setVehicleHeadLightColor(veh, 255, 255, 255) setVehicleOverrideLights ( veh, 1 ) end else showBox(source,"info","Este Veiculo Não é uma Viatura") end end addEvent(resname..":corpluzesbope", true) addEventHandler(resname..":corpluzesbope", root, CorpLuzesBOPE() addEventHandler ( "onVehicleExplode", getRootElement(), function() if(p_lights[source] == 1) then killTimer(p_timer[source]) end end ) addEventHandler ( "onVehicleRespawn", getRootElement(), function() if(p_lights[source] == 1) then killTimer(p_timer[source]) end end ) addEventHandler("onElementDestroy", getRootElement(), function () if getElementType(source) == "vehicle" then if(p_lights[source] == 1) then killTimer(p_timer[source]) end end end) function CorpAbandonarBOPE(cargo) local acl = aclGetGroup(cargo) if (acl) then local conta = getAccountName(getPlayerAccount(source)) local checkacl = isObjectInACLGroup ( "user." ..conta, acl) if (checkacl) then aclGroupRemoveObject(acl, "user."..conta) showBox(source,"info",""..corp..": Você abandonou a Corporação") setElementData (source, "vdbsoumembroBOPE",false) outputServerLog("ABANDONOU "..corp..": "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." > "..cargo.."") end end end addEvent(resname..":abandonarcorpbope", true) addEventHandler(resname..":abandonarcorpbope", getRootElement(), CorpAbandonarBOPE) function IsCorpGroupBOPE ( thePlayer ) local account = getPlayerAccount ( thePlayer ) local InBOPE = false for _, group in ipairs ( {"BOPECMD","BOPE6","BOPE5","BOPE4","BOPE3","BOPE2","BOPE1"} ) do if isObjectInACLGroup ( "user.".. getAccountName ( account ), aclGetGroup ( group ) ) then InBOPE = true break end end return InBOPE end function CorpGetMembrosActBOPE(player) local info = {} for _,players in pairs(getElementsByType("player")) do if getElementDimension( players) == 0 and getElementInterior(players) == 0 and not isGuestAccount ( getPlayerAccount ( players ) ) then if ( IsCorpGroupBOPE ( players ) ) then table.insert(info,{getPlayerName(players),players}) end end end triggerClientEvent(player,resname..":ListaCorp",player,info) end addEvent(resname..":corpmembrosativobope",true) addEventHandler(resname..":corpmembrosativobope",root,CorpGetMembrosActBOPE) function CorpGetMembrosBOPE(player) local info = {} for _,players in pairs(getElementsByType("player")) do if ( IsCorpGroupBOPE ( players ) ) then table.insert(info,{getPlayerName(players),players}) end end triggerClientEvent(player,resname..":ListaCorp",player,info) end addEvent(resname..":corptodosmembrosbope",true) addEventHandler(resname..":corptodosmembrosbope",root,CorpGetMembrosBOPE) function CorpGetAllPlayersBOPE(player) local info = {} for _,players in pairs(getElementsByType("player")) do if not isGuestAccount ( getPlayerAccount ( players ) ) and not ( IsCorpGroupBOPE ( players ) ) then table.insert(info,{getPlayerName(players),players}) end end triggerClientEvent(player,resname..":ListaCorp",player,info) end addEvent(resname..":corpgetplayersbope",true) addEventHandler(resname..":corpgetplayersbope",root,CorpGetAllPlayersBOPE) function CorpIrBOPE(teleporter) irtp = teleporter playerair = getPlayerFromName(irtp) if playerair then local veiculotp = getPedOccupiedVehicle(source) if (veiculotp) then showBox(source,"error","Saia do Veiculo") return end if getElementData(playerair,"emCombate") == true then showBox(source,"info","Erro o jogador esta em Combate "..irtp.."") return end local x,y,z = getElementPosition(playerair) setElementPosition(source, x, y, z + 2) showBox(source,"info","Você se teleportou até o jogador "..irtp.."") outputServerLog("TELEPORTE BOPE: Foi "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." > "..irtp.."") end end addEvent(resname..":TeleIrCorpbope", true) addEventHandler(resname..":TeleIrCorpbope", root, CorpIrBOPE) function CorpPuxarBOPE(teleporter) irtp = teleporter playerair = getPlayerFromName(irtp) if playerair then local veiculotp = getPedOccupiedVehicle(playerair) if (veiculotp) then showBox(source,"error","O Jogador esta em um veiculo") return end if getElementData(playerair,"emCombate") == true then showBox(source,"info","Erro o jogador esta em Combate "..irtp.."") return end local x,y,z = getElementPosition(source) setElementPosition(playerair, x, y, z + 2) showBox(source,"info","Você puxou o jogador "..irtp.." ") showBox(playerair,"info",""..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." puxou você") outputServerLog("TELEPORTE BOPE: Puxou "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." > "..irtp.."") end end addEvent(resname..":TelePuxarCorpbope", true) addEventHandler(resname..":TelePuxarCorpbope", root, CorpPuxarBOPE) function CorpRemoverMembroBOPE(player, cargo) local accountName = getAccountName(getPlayerAccount(client)) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPECMD" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPE6" ) ) then arecrutar = getPlayerFromName(player) local contaarecrutar = getPlayerAccount(arecrutar) local cargoremove = aclGetGroup(cargo) if (cargoremove) then local contaaremover = getAccountName(contaarecrutar) local checkcargo = isObjectInACLGroup ( "user." ..contaaremover, cargoremove) if (checkcargo) then aclGroupRemoveObject(cargoremove, "user."..contaaremover) setElementData (arecrutar, "vdbsoumembroBOPE",false) showBox(arecrutar,"error",""..corp..": Você foi removido da Corporação") outputServerLog("EXPULSO "..corp..":: "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." > "..cargo.." > "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." ") end end end end addEvent(resname..":corpremovermembrobope", true) addEventHandler(resname..":corpremovermembrobope", getRootElement(), CorpRemoverMembroBOPE) function CorpRecrutarBOPE(player, cargo) local accountName = getAccountName(getPlayerAccount(client)) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPECMD" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPE6" ) ) then arecrutar = getPlayerFromName(player) local contaarecrutar = getPlayerAccount(arecrutar) --for _, checkcorp in ipairs ({}) do for _, checkcorp in ipairs ({"Suporte"}) do if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(arecrutar)), aclGetGroup( checkcorp )) then showBox(source,"error","o Jogador "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." pertence a outra Corp/Gang ["..checkcorp.."]") cancelEvent() return 1 end end local cargoset = aclGetGroup(cargo) if (cargoset) then local ncuenta = getAccountName(contaarecrutar) local checkrecrut = isObjectInACLGroup ( "user." ..ncuenta, cargoset) if (not checkrecrut) then aclGroupAddObject(cargoset, "user."..ncuenta) setElementData (arecrutar, "vdbsoumembroBOPE",false) showBox(arecrutar,"info",""..corp..": Você foi Recrutado (Aguarde 10 segundos até seu painel atualizar)") showBox(source,"info",""..corp..": Você Recrutou o "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." para "..corp.."") outputServerLog("RECRUTAMENTO "..corp..": "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." > "..cargo.." > "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." ") end end end end addEvent(resname..":corprecrutarbope", true) addEventHandler(resname..":corprecrutarbope", getRootElement(), CorpRecrutarBOPE) function CorpPromoverBOPE(player, cargo) local accountName = getAccountName(getPlayerAccount(client)) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPECMD" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPE6" ) ) then arecrutar = getPlayerFromName(player) local contaarecrutar = getPlayerAccount(arecrutar) for _, checkcorp in ipairs ({"Suporte"}) do --for _, checkcorp in ipairs ({}) do if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(arecrutar)), aclGetGroup( checkcorp )) then showBox(source,"error","o Jogador "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." pertence a outra Corp/Gang ["..checkcorp.."]") cancelEvent() return 1 end end local cargoset = aclGetGroup(cargo) if (cargoset) then local ncuenta = getAccountName(contaarecrutar) local checkrecrut = isObjectInACLGroup ( "user." ..ncuenta, cargoset) if (not checkrecrut) then aclGroupAddObject(cargoset, "user."..ncuenta) setElementData (arecrutar, "vdbsoumembroBOPE",false) showBox(arecrutar,"info",""..corp..": Você foi Promovido (Aguarde 10 segundos até seu painel atualizar)") showBox(source,"info",""..corp..": Você Promoveu o "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." para "..corp.."") outputServerLog("PROMOVEU "..corp..": "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." > "..cargo.." > "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." ") end end end end addEvent(resname..":corppromoverbope", true) addEventHandler(resname..":corppromoverbope", getRootElement(), CorpPromoverBOPE) function CorpOneACLBOPE(player, cargo) local accountName = getAccountName(getPlayerAccount(client)) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPECMD" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "BOPE6" ) ) then arecrutar = getPlayerFromName(player) local contaarecrutar = getPlayerAccount(arecrutar) local cargoremove = aclGetGroup(cargo) if (cargoremove) then local contaaremover = getAccountName(contaarecrutar) local checkcargo = isObjectInACLGroup ( "user." ..contaaremover, cargoremove) if (checkcargo) then aclGroupRemoveObject(cargoremove, "user."..contaaremover) setElementData (arecrutar, "vdbsoumembroBOPE",false) outputServerLog(""..corp..": CARGO ONE: "..getPlayerName(arecrutar):gsub("#%x%x%x%x%x%x","").." > "..cargo.." > "..getPlayerName(source):gsub("#%x%x%x%x%x%x","").." ") end end end end addEvent(resname..":CorpCagoOnebope", true) addEventHandler(resname..":CorpCagoOnebope", getRootElement(), CorpOneACLBOPE) function QuitRemoverCorpBOPE () if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)),aclGetGroup("BOPE1")) then aclGroupRemoveObject (aclGetGroup("BOPE1"), "user."..getAccountName(getPlayerAccount(source))) end end addEventHandler ( "onPlayerQuit", getRootElement(),QuitRemoverCorpBOPE) function CorpAcessoBOPE() showBoxBOPE(source,"error","Acesso não permitido") end addEvent("acessonegadobope", true) addEventHandler("acessonegadobope", root,CorpAcessoBOPE) function showBoxBOPE(player, value, str) if isElement(player) then triggerClientEvent(player, "CreateBox", getRootElement(), value, str) end end function corpmsgbope(source,type,msg) if source and type and msg then showBoxBOPE(source,type,msg) end end addEvent(resname..":corpmsgbope", true) addEventHandler(resname..":corpmsgbope", root, corpmsgbope)
  6. MTA-Communication-Enchantment This is an enchantment that allows you to communicate between clientside and serverside a bit easier. If you know how to work with events, then you probably do not need this, but it has some nice features which allows you to sit back and write less code + achieve some nice results. Note: It is important to keep in mind that this is an enchantment. Which means it is just an layer on top of the basic functionalities of MTA. And most enchantments come with a cost, in this case that is bit of performance. I will keep the information of topic to the minimal, as I have written most of the information already on the repository. You can find the repository here. Examples Syntax Installation What can you do with it? Calling from clientside to serverside Client callServer("hello") Server function hello () outputChatBox("Hello client!") end Calling from serverside to clientside Server addCommandHandler("callclient", function (player) -- An addCommandHandler is needed, because the client hasn't loaded it's scripts yet. callClient(player, "hello") end, false, false) Client function hello () outputChatBox("Hello server!") end Ok, ok, that was boring. The next one this is a bit nicer! Hello are you there? Just Call-me-back... I miss(ed) you too Callback Client callServer( "callbackMe", "argument", function (argument) -- < This is the callback function outputChatBox(argument) end ) Server function callbackMe (argument) return argument .. " < I looked at it :)" end Callback + internal arguments Sometimes you have arguments that you simply can't send over. > functions Or arguments that shouldn't be send over. > LARGE quantities of database data Internal arguments can be used to pass information to a callback without exposing it to the other side(client/server). Client callServer( "callbackMe", -------------------------------- -- arguments that are send over "argument", -- -------------------------------- function (internalArgument, argument) -- < This is the callback function. outputChatBox(internalArgument) outputChatBox(argument) end, -------------------------------- -- arguments that are not send over "internalArgument" -- < internal argument -- -------------------------------- ) Server function callbackMe (argument) return argument .. " < I looked at it :D" end Ha! Serverside what is that? No need for complicated things! Communicate between clients without writing a single line of serverside. Magic! Note: There is serverside used behind the scenes, you just don't have to write it. Client function smile (player) outputChatBox((isElement(player) and getPlayerName(player) or "[unknown]") .. " has send you a: :)") local x, y, z = getElementPosition(localPlayer) setElementPosition(localPlayer, x, y, z + 100) end addRemoteClientAccessPoint(smile) -- < This function allows other clients to call this function. --------------------------------------- -- -- function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end -- Author: TAPL -- https://wiki.multitheftauto.com/wiki/GetPlayerFromPartialName -- -- --------------------------------------- addCommandHandler("smile", function (cmd, playerName) local player = getPlayerFromPartialName(playerName) if player then outputChatBox("Sending smile!") callRemoteClient(player, "smile", player) else outputChatBox("Can't find player!") end end) Turtle, I will wait for you to catch up. So don't worry, you are still cute. Await functions When a player has joined the server, he or she doesn't have download + loaded his scripts yet. This means that you can't deliver your love letter yet and all your work will be for nothing. But what if you don't have to worry about that? You can just wait now! Server addEventHandler("onPlayerJoin", root, function () callClientAwait(source, "testCallClientAwait") end) Client function testCallClientAwait () outputChatBox("Yes this works!") end Security Worried about security issues? Remote calls for C++/MTA functions have been blocked. There is a whitelist feature included, if enabled your code can only remote-call whitelisted functions. (this is disabled by default) Read the docs for that. Here and here
  7. Atualmente estou fazendo um script de trabalho ilegal de metanfetamina, gostaria de uma explicação ou um exemplo de como posso fazer o player carregar um objeto na mão quando ele passar por um marker. E quando ele passar em um outro marker o objeto vai sumir da mão dele. Obrigado!
  8. Client.lua: function processLockUnlock(vehicle) if vehicle then local vehicleID = tonumber(getElementData(vehicle, "veh:id")) or -1 local vehFaction = tonumber(getElementData(vehicle, "veh:faction")) or 0 local vehOwner = tonumber(getElementData(vehicle, "veh:owner")) or -1 local vehJobID = tonumber(getElementData(vehicle, "veh:jobvehID")) or -1 local locked = isVehicleLocked(vehicle) local vehID = getElementModel(vehicle) local vehName = getVehicleRealName(vehID) if isPedInVehicle(localPlayer) then playSounds("lockin") else playSounds("lockout") end if locked then triggerServerEvent("vehicleLock", localPlayer,localPlayer, vehicle, false) else triggerServerEvent("vehicleLock", localPlayer,localPlayer, vehicle, true) end else outputChatBox("#FFFFFF Nincs kulcsod ehhez a járműhöz.", 169,139,101, true) end end local klikkTimer = false function setVehicleLockState() if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false end,1000,1) local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) local interior = getElementData(localPlayer, "interior") or false if not interior then for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end end end end bindKey("k", "down", setVehicleLockState) setTimer(function() if not bindKey("k", "down", setVehicleLockState) then bindKey("k", "down", setVehicleLockState) end end, 1000, 0) Server.lua: addEvent("vehicleLock",true) addEventHandler("vehicleLock",getRootElement(),function(player,veh,value) setVehicleLocked(veh, value) veh:setData("veh:status", value) end) No errors / warnings in debugscript... if i press the [K] button, nothing happens... what wrong in this code? how to fix?
  9. function asdasdsas() playSound("http://www.convertmp3.io/fetch/?video=https://www.youtube.com/watch?v=iq7q82Cd6RI") end addCommandHandler("test",asdasdsas) what wrong? the API working fine, but the playSound not.. how to fix?
  10. I have this: function Salir() if isElement(tableVehicles[source]) then destroyElement(tableVehicles[source]) end end addEventHandler("onPlayerVehicleExit",getRootElement(),Salir) This function destroys the vehicle when the player leaves, I want this to happen after a second and not immediately, i need to use "Set timer", but I do not know how to use it, I tried different ways but none of them
  11. Hello ! when there's an event handler like below, function vehicleEnter(vehicle,seat) if seat == 0 then outputChatBox("You have entered a "..getVehicleName(vehicle),source,255,255,0) end end addEventHandler("onPlayerVehicleEnter",root,vehicleEnter) we can remove it from one line code like below, removeEventHandler("onPlayerVehicleEnter",root,vehicleEnter) So that's all. BUT !, when there's an event handler like below, addEventHandler("onPlayerVehicleEnter",root, function (vehicle,seat) if seat == 0 then outputChatBox("You have entered a "..getVehicleName(vehicle),source,255,255,0) end end ) How to remove that event handler ? are there any way ?
  12. Hello forums! I've been working on a project of mine, and I'm in need of a function which is similar to getPositionFromElementOffset (scroll down to examples). I can't wrap my head around matrices at all, and I would love to have a similar function, but with rotations instead (getting a rotation offset from an element). Would someone be able to help me out? I'd be very thankful!
  13. I don't understand this Error = [Expected bool at argument 2, got none]... how to use function clientSide setElementFrozen ? --client side script function FPlayer () setElementFrozen (this, true) --This is how this method? end
  14. It's because of the onClientResourceStart event, but i dont know why its triggering it twice. Thanks function create() triggerServerEvent ( "create_s", resourceRoot) end addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), create) and the server function create_s() outputChatBox("lol") end addEvent("create_s", true) addEventHandler("create_s", resourceRoot, create_s)
  15. This is the code: And i get this warnings: bad argument @ 'stopSound' [expected sound at argument 1, got nil] and bad argument @ 'detachElement' [expected element at argument 1, got nil] .. -.- how to fix this?
  16. This is the code: addEvent ( "aPlayer", true ) addEventHandler ( "aPlayer", _root, function ( player, action, data, additional, additional2, kickedname ) if checkClient( "command."..action, source, 'aPlayer', action ) then return end if not isElement( player ) then return -- Ignore if player is no longer valid end if ( hasObjectPermissionTo ( source, "command."..action ) ) then local admin = source local mdata = "" local more = "" if ( action == "kick" ) then local reason = data or "" mdata = reason~="" and ( "(" .. reason .. ")" ) or "" setTimer ( kickPlayer, 100, 1, player, source, reason ) exports.ig_kickban:showBoxS (root ,"Kirúgás", player.." kirúgta "..source.." nevű játékost", "kick") the exports.ig_ki...etc line does not working.. why? i get this error: "Attempt to concatenate global source (a userdata value)"
  17. Hi, i have a trouble with my fuction . It's simply trigerred by hiting marker but the clue is that i want it to be trigerred ONLY ONCE like "onceTrigerredonMarkerHit". My code as an example : marker2=createMarker(3399.2,-1899.2,30.1,"corona",2,0,0,255,0) tr1=createVehicle(584,3357.5,-1956.8,31.29,0,0,90) tr2=createVehicle(515,3347.2,-1957,31.29,0,0,90) function open_smashb() ... function m() ... blowVehicle(tr) blowVehicle(tr2) end setTimer(m,2000,1) end addEventHandler("onMarkerHit", marker2, open_smashb)
  18. Estoy teniendo un problema hace un mes y no lo puedo solucionar de ninguna manera y recurro para ver si alguno sabe el origen del problema. El script funciona: Jugador > Accede al panel > Boton > Trabajo > Empieza el primer marker > Apenas llega debería congelar (Pero solo a veces congela, otras sigue de largo) y a veces reiniciando el script funciona Cliente: addEventHandler("onClientGUIClick", guiRoot, function() local getGui = guiGetVisible(Ventana2) if source == BOTON1 then if getGui then guiSetVisible(Ventana2, false) showCursor(false) Marker1 = createMarker(2459.083984375, 1901.0810546875, 10.768750190735-1,"cylinder",2,0,255,0) addEventHandler( "onClientMarkerHit", Marker1, Siguientemarker1 ) Marker1BLIP = createBlipAttachedTo ( Marker1, 0 ) outputChatBox ("----------------------------",255,0,0, true) outputChatBox ("¡Para empezar ve al marker!.",0,218,255, true) outputChatBox ("----------------------------",255,0,0, true) end end end ) function Siguientemarker1 (element) if element == localPlayer then if timer then killTimer(timer) timer = nil end timer = setTimer(Siguientemarker2, 30000, 1) setElementFrozen ( veh, true ) ------Aca deberia congelar siempre outputChatBox ("----------------------------",255,0,0, true) outputChatBox ("Cargando..." ,0,255,255, true) outputChatBox ("----------------------------",255,0,0, true) end end function Siguientemarker2() destroyElement ( Marker1 ) destroyElement ( Marker1BLIP ) Marker1 = nil Marker2= createMarker(2502.048828125, 2153.3330078125, 10.296809196472-1,"cylinder",2,0,255,0) if veh then setElementFrozen ( veh, false ) Marker2BLIP = createBlipAttachedTo ( Marker2, 0 ) timer = nil addEventHandler( "onClientMarkerHit", Marker2, Siguientemarker2B ) end end Aclaraciones: * Hay varios botones con la misma función diferente nombre * El "Siguientemarker" sigue hasta ejemplo 32 markers. (Apenas comienza es cuando no "congela" si congela al principio, congela en todos los markers.
  19. Boton8 = guiCreateLabel(137, 142, 111, 25, "LEGAJO2", false, Ventana);guiSetProperty(Boton8, "NormalTextColour", "FF27F512") addCommandHandler("p", function() local team = getPlayerTeam(localPlayer) if team then local teamName = getTeamName(team) if teamName == "MOBSA" then local getGui = guiGetVisible(Ventana) if not getGui then guiSetVisible(Ventana, true) guiSetText(Boton10, getPlayerMoney(localplayer)) guiSetText(Boton2, teamName) guiSetText(Boton4, getPlayerName(localPlayer)) guiSetText(Boton8, ID ) --<<Aca necesitaria poner la id del jugador, digamos que aparesca su id showCursor(true) else guiSetVisible(Ventana, false) showCursor(false) print ("Tu trabajas de chofer actualmente") end else print ("Tu trabajas de chofer actualmente") end end end ) Buenas, mi duda es como sacar la id de los jugadores? Veo cual son porque quedan guardadas pero como hago para volcar esos datos en estos textos? Gracias!
  20. Hi As it says in the Title, i have a problem with this .. I looked up on the Wiki and used guiGridListGetItemData, I read the example provided, didn't make it for what I need . function BuyDrink ( button ) if button == "left" then local nRow, nColumn = guiGridListGetSelectedItem( GridList ) if nRow ~= -1 and nColumn ~= - 1 then local row, col = guiGridListGetSelectedItem ( GridList ) local selected = guiGridListGetItemData ( GridList, row, col ) -- This Gives "nil" output outputChatBox ( "You Bought " .. tostring(selected) ) -- Output the Text from selected row of the first Column only end end end Basically I want the Text of my first column selected row, not an int . I hope I made it clear to understand Any help is appreciated .
  21. i have this played time script: and i want add to this a command, which the admins can add more hours for anyone, how to make this command??
  22. Hello everyone. I need some help here. I wan't to create a DX Inventory for my server, with some buttons. I created a script that creates the inventory but only 1 button is working. local newInvItems = { {"Assault Rifle"}, {"AK-47"}, {"Sniper"}, {"Pump Shotgun"}, {"Crossbow"}, {"Custom SMG"}, {"Shotgun"}, {"Semi-Automatic Pistol"}, {"Machete"}, {"5.56 Rifle Ammo"}, {"Sniper Rifle Ammo"}, {"12 Gauge"}, {"Pistol Bullet"}, {"Wooden Arrow"}, {"SMG Ammo"}, {"Apple"}, {"Banana"}, {"Orange"}, {"Tomato"}, {"Cereal Box"}, {"Juice Box"}, {"Milk Bottle"}, {"Water Bottle"}, {"Raw Meat"}, {"Cooked Meat"}, {"Battery"}, {"Gallon (Fuel)"}, {"Gallon (Empty)"}, {"Bottle (Empty)"}, {"Medical Satchel"}, {"Rags"}, {"Cloth"}, {"Gun Powder"}, {"Alcohol Bottle"}, {"Wood"}, {"Metal"}, {"Stone"}, {"Building Tool"}, {"Fishing Rod"}, {"Cannabis Seed"}, {"Cannabis Medicinal"}, {"Sulphur"}, {"Charcoal"}, {"Axe"}, {"Pickaxe"}, {"C4"}, {"Lock"}, {"Map"}, {"GPS"}, {"Watch"}, {"Toolbox"}, {"Medium Backpack"}, {"Large Backpack"}, {"Top Hat"}, {"Witch Hat"}, {"Horn Hat"}, {"Pizza Hat"}, {"Police Hat"}, {"SWAT Hat"}, {"SWAT Armour"}, {"Chicken Head"}, {"Gas Mask"}, {"Eyepatch"}, {"Motorcycle Helmet"}, } local screenW, screenH = guiGetScreenSize() local inventoryLimit = 28 showCursor(true) function renderInventory () mainTable = dxDrawRectangle(10, (screenH - 583) / 2, 260, 598, tocolor(0, 0, 0, 170), false) lootTable = dxDrawRectangle(10, (screenH - 670) / 2, 260, 38, tocolor(0, 77, 126, 150), false) rowNumber = 0 for i,item in ipairs(newInvItems) do if ( getElementData(getLocalPlayer(),item[1]) >= 1 ) then if not ( rowNumber > inventoryLimit ) then rowNumber = rowNumber + 1 itemBackground = dxDrawRectangle(20, 85+rowNumber*20, 185, 15, tocolor(0, 77, 126, 150), false) takeBackground = dxDrawRectangle(210, 85+rowNumber*20, 50, 15, tocolor(0, 77, 126, 150), false) itemText = dxDrawText(item[1].." ("..getElementData(getLocalPlayer(),item[1]).."x)",25,85+rowNumber*20,tocolor(255,255,255, 255)) takeText = dxDrawText("Take",221,85+rowNumber*20,tocolor(255,255,255, 255)) end end end end addEventHandler("onClientRender", root, renderInventory) function inventoryClickDetect (button,state,x,y) if ( button == "left" ) then if ( state == "down" ) then if ( x >= 210 and x <= 210 + 50 and y >= 85+rowNumber*20 and y <= 85+rowNumber*20 + 15 ) then outputChatBox("Test!") end end end end addEventHandler("onClientClick",root,inventoryClickDetect) It creates all buttons and all things, but only the last button created is working. How can I make for every button to work? sorry for my bad english, I'm brazilian
  23. Hola a todos!! Les cuento lo que me esta pasando, quiero crear una función que me permita que a partir de presionar un boton, se active una función de crearse un marker y despues que desaparesca al pisarlo, alguien sabe? Este es el código que hice: ----------------------------------------------------- -- Esto seria la parte del panel para que empieze a la función, osea con "BOTON" ----------------------------------------------------- addEventHandler("onClientGUIClick", guiRoot, function() local getGui = guiGetVisible(Ventana2) if source == BOTON then --Para que se cree el marquer pulsar este boton if getGui then guiSetVisible(Ventana2, false) showCursor(false) setElementVisibleTo ( Marker1, root, true ) --El voton "Crearia el marker 1" end end end end ) setElementVisibleTo ( Marker1, root, false ) Marker1 = createMarker(2482.2924804688, 1917.4254150391, 9.768750190735,"cylinder",2,0,218,255) --Supuestamente apareceria cuando lo apretaria function Inicio () if isElementWithinMarker(source, Marker1) --Cuando toca sobre el marker desaparesca then destroyElement ( Marker1 ) --Se destruye el marker1 Marker2 = createMarker(2482.2924804688, 1917.4254150391, 9.768750190735,"cylinder",2,0,218,255) --se crea el marker2 end end end addEventHandler( "onMarkerHit", Marker1, Inicio ) -------------------------------
  24. i have this code: setTimer(function() local arfolyam = math.random(200,5130) outputChatBox("Jelenlegi árfolyam: "..arfolyam) end, 500, 0) GUIEditor.window[1] = guiCreateWindow(0.35, 0.31, 0.31, 0.28, "Aranykereskedés", true) guiWindowSetSizable(GUIEditor.window[1], false) GUIEditor.label[1] = guiCreateLabel(0.02, 0.59, 0.95, 0.14, "Az arany jelenlegi árfolyama: "..arfolyam, true, GUIEditor.window[1]) but i get this error in debugscript 3: attempt to concatenate global 'arfolyam' ( a nil value) what wrong? how to fix this?
  25. ابي اسوي مود بصمات بس ابي ال function عشان اسويه ملاحظة هذا للحياة واقعية مثلا شخص قتل شخص يجي المباحث يدور على ادلة و بصمات و لمن يخلص يكتب امر اعرف كيف اسوي الامر ما يحتاج و لمن يكتب الامر يطلع تحميل حق مودات تحت يمشي 5 5 يعني يمشي 5 10 15 20 و الخ و لمن يخلص يطلع اسم الي قتل الشخص و بس اقدر اسوي مود زي مذا ولا مستحيل ض؟