DNL291

Other Languages Moderators
  • Content count

    1,696
  • Joined

  • Last visited

Community Reputation

34 Good

7 Followers

About DNL291

  • Rank
    Portuguese Section Moderator
  • Birthday 06/05/94

Details

  • Gang
    SAF
  • Location
    Brazil
  • Interests
    Programming/Scripting

Recent Profile Visitors

1,259 profile views
  1. Vai precisar editar o scoreboard.
  2. You can use the event "onPlayerCommand" with the command "login", and check if the player is logged in or not, so you assume that he couldn't log into their account. Not sure if that will work, but you can try it yourself.
  3. I did a code using the createElement function. To be honest, I don't know if it works 100% but by the small test I did it seems so. local serverTeams = createElement( "server:customTeams" ) function CreateTeam( name, c ) outputChatBox("@CreateTeam") return setElementData( serverTeams, tostring(name), { color = c, ID = (#getAllElementData(serverTeams) or 0) + 1, members = {}, friendlyFire = false } ) end function SetPlayerTeam( player, teamName ) if player and isElement(player) and teamName then if getElementData( serverTeams, tostring(teamName) ) then outputChatBox("@SetPlayerTeam ") if GetPlayerTeam( player ) and GetPlayerTeam( player ) ~= tostring(teamName) then updateTeamMembers( GetPlayerTeam( player ), player ) end updateTeamMembers( tostring(teamName), player, true ) return setElementData( serverTeams, tostring(name), { color = c, ID = id, members = {}, friendlyFire = ff } ) end end end function GetPlayerTeam( player ) if player and isElement(player) then for teamName, t in pairs( getAllElementData(serverTeams) ) do for i, p in pairs(t.members) do if player == p then return teamName end end end end return false end function updateTeamMembers( teamName, player, add ) if teamName and getElementData( serverTeams, tostring(teamName) ) then local team = getElementData( serverTeams, tostring(teamName) ) if type(team) ~= "table" then return false end; if add then table.insert( team.members, player ) outputChatBox("table index 1: "..tostring(team.members[1])) else local membersTable = {} for i, p in pairs( team.members ) do outputChatBox("i: "..tostring(i).." p: "..tostring(getPlayerName(p))) if p ~= player then table.insert( membersTable, p ) end end end return setElementData( serverTeams, tostring(teamName), { color = team.color, ID = team.ID, members = add and team.members or membersTable, friendlyFire = team.friendlyFire } ) end return false end addEventHandler( "onPlayerQuit", root, function() if GetPlayerTeam( source ) then updateTeamMembers( GetPlayerTeam( source ), source ) end end ) addCommandHandler("setmyteam", function(p, cmd) SetPlayerTeam( p, "testTeam1" ) end) addCommandHandler("getmyteam", function(p, cmd) outputChatBox( tostring( GetPlayerTeam(p) ) ) end) addEventHandler( "onResourceStart", resourceRoot, function() CreateTeam( "testTeam1", {30, 240, 30} ) end ) Basically it works as the MTA's team system and It isn't finished of course.
  4. Então pelo que entendi, você precisa adicionar o jogador que matou o outro numa tabela (dentro evento "onPlayerWasted"), esse valor será só pra conferir se o jogador que atingiu o pickup é o killer. O resto é simples: usa setElementData e passa essas "moedas vip" usando getElementData pra obter os dados do jogador que foi morto e depois remove o valor do jogador morto.
  5. settings

    Verifica se o 'som' já existe quando usar playSound. Você também pode marcar qual o tipo da música tocando atualmente, isso vai te ajudar pra não ocorrer bugs como esse. Fora isso, remova o loop na tabela.
  6. script

    Se você quer criar em 3 locais em vez de todos, você precisa de um loop; o math.random que você usou está errado porque estava o mesmo que isto: math.random( 3, 4 ). Tente isto: SpwanLoot = { {252.67047,1802.4464,7.4140625}, {219.33887,1826.9991,6.4140625}, {261.08423,1853.5132,8.7578125}, {280.4285,1838.0157,17.648058}, } function removeLootsMilitarys (blip,Military,LootMility) if isElement(blip) then destroyElement(blip) end if isElement(Military) then destroyElement(Military) end if isElement(LootMility) then destroyElement(LootMility) end end function LootMilitarys() for i=1, 3 do local ri = math.random( #SpwanLoot ) local x,y,z = SpwanLoot[ri][1], SpwanLoot[ri][2], SpwanLoot[ri][3] local Military = createObject(964,x,y,z, 0, 0, 0) outputChatBox("CRIADO") local blip = createBlip ( x,y,z, 23 ) local LootMility = createColSphere(x,y,z,3) attachElements(LootMility, Military, 0, 0, 0) setElementData(Military,"parent",LootMility) setElementData(LootMility,"parent",Military) setElementData(LootMility,"Loot Militar",true) setElementData(LootMility,"MAX_Slots",0) setElementData(LootMility, "MAX_Slots", 0) setTimer(removeLootsMilitarys,120000,1,blip,Military,LootMility) end end setTimer(LootMilitarys,120000,0) Me avise se essas posições aleatórias tiver que ser uma diferente da outra, aí nesse caso vai precisar fazer uma mudança pro math.random.
  7. mtadayz

    Se o jogador realmente insistir em um nick curto, em primeiro lugar eu posso tratar ele como alguém que entra no servidor pra bagunçar apenas e não leva a sério o jogo-limpo. Então, talvez fazer um sistema mais específico nesse caso. A propósito, eu nunca tive um servidor de MTA com fluxo alto de jogadores, creio que quem têm deve conhecer bem como é lidar com jogadores problemáticos. Em alguns servidores RPs é obrigatório o uso de nicks que estão de acordo com o servidor, então a ideia da marca d'água não vai se aplicar. Por isso mesmo eu pensei nessa outra forma: O jogador entra, verifica seu nick, caso não seja aceito no servidor, mostre-o um painel e ele só joga quando trocar para outro nick válido. No caso de alguns membros da Equipe do servidor agir dessa forma pra algum tipo de investigação, vai do consenso da Equipe não usar um sistema desses e adotar outro tipo de ideia mais apropriada.
  8. Você podia ter explicado melhor sobre o que você quer fazer e qual valor vai ser salvo no element-data. Seria mais ou menos isto? function createDeathPickup ( totalammo, killer, killerweapon, bodypart ) local x, y, z = getElementPosition ( source ) local aPickup = createPickup ( x, y, z, 3, 1279 ) setElementData( aPickup, "pickup-playerValue", (getElementData(source,"valorData") or "0"), false ) end addEventHandler ( "onPlayerWasted", getRootElement(), createDeathPickup ) addEventHandler( "onPickupUse", resourceRoot, function ( player ) if getElementData( source, "pickup-playerValue" ) then setElementData( player, "valorData", getElementData( source, "pickup-playerValue" ), false ) end end )
  9. settings

    É eu sei. Nunca mexi em configurações de resource muito, então não tenho ideia do que pode ser, mas te recomendo testar de várias formas pra tentar descobrir porque acontece isso. Até porque não ocorre nos resources do MTA que vem com configurações, então pode ser alguma falha do seu resource.
  10. mtadayz

    Eu faria um painel pequeno, apenas para ele trocar o nick e usar um válido. Também poderia usar um sistema que gera um nick aleatório assim como o do MTA quando instala - seria perca de tempo com coisa pequena, na minha opinião, o primeiro método dá pra criar rápido e sem dificuldade.
  11. settings

    Já tentou removendo * da frente do nome ou usando apenas os atributos name e value? Se o erro continuar, pode ser outra coisa causando isso, como a função set.
  12. mtadayz

    Tente: function nickChangeHandler (oldNick, newNick) local nick = getPlayerName(source) if eventName == "onPlayerJoin" then if string.len( nick:gsub("#%x%x%x%x%x%x","") ) <= 4 then outputChatBox("[#ff0000"..nick.."#ffffff] Seu Nickname é muito curto.",source,255,255,255,true) kickPlayer(source,"Nickname muito curto!") end return end if string.len( newNick:gsub("#%x%x%x%x%x%x","") ) <= 4 then outputChatBox("[#ff0000"..oldNick.."#ffffff] Seu nick deve ter mais que 4 caracteres.",source,255,255,255,true) cancelEvent( true, "nick curto" ) end end addEventHandler("onPlayerJoin", getRootElement(), nickChangeHandler) addEventHandler("onPlayerChangeNick", getRootElement(), nickChangeHandler) Você disse que é menos de 4 caracteres, mas o código está verificando se o nick tem 4 ou menos - se o mínimo for realmente 3 pra baixo, troque <= para <. Sobre a expulsão do jogador, eu não te aconselho fazer isso. Se você quer que entre mais jogadores, porque você expulsa do servidor o jogador só porque ele tem poucas letras no nick? Claro, a ideia é ele trocar o nick manualmente e reentrar, mas nem todos certamente farão. Só mais um aviso, use esta ferramenta e selecione a linguagem Lua quando postar algum código Lua:
  13. mtadayz

    Use: guiEditSetMaxLength Ou dependendo do seu caso, tente isto: addEventHandler("onClientGUIChanged", VGUI.edit[1],function() local t = guiGetText(source) if string.len(t) > 10 then guiSetText( source, t:sub( 1, #t-1 ) ) end end) Lembre-se de postar na seção Portuguesa da próxima vez: https://forum.mtasa.com/forum/127-programação-em-lua/ Caso contrário, ninguém vai te entender e você não vai receber nenhuma ajuda.
  14. About line 43, check if 'veh' is a vehicle element: function rotate_object() local veh = getPedOccupiedVehicle ( localPlayer ) if veh then local _,_,rz = getVehicleComponentRotation(veh, "misc_a") local rx,_,_ = getVehicleComponentRotation(veh, "misc_b") if getElementData(localPlayer,"obj") then triggerServerEvent("rotateWeapon", localPlayer, veh,getElementData(localPlayer,"obj"),rx,rz) end end end
  15. Não entendi o porque do setElementData se está no client. Mas se o código está funcionando sem erros então sem problemas. Lembre-se se desativar a sincronização com o lado server se não haver necessidade. Edit: Você também pode enviar o jogador local usando triggerServerEvent.