Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Try this: Client function selectStyle() local item = guiGridListGetSelectedItem(grid) if item == -1 then return end local styl = guiGridListGetItemData(grid, item, 1) local styl_text = guiGridListGetItemText(grid, item, 1) outputChatBox("Zmieniasz swój styl chodzenia na: "..styl_text) triggerServerEvent( "doServer:SetPedWalkingStyle", localPlayer, styl ) hideStylePanel() end Server addEvent( "doServer:SetPedWalkingStyle", true ) addEventHandler( "doServer:SetPedWalkingStyle", root, function ( styl ) setPedWalkingStyle(source, tonumber(styl)) end )
  2. Bom, até agora todas formas que testei está funcionando ;/ Tenta isto: local groups = { { name = "YKZ", spawnData = { 2340.81323, 553.25513, 18.75537, 90, 120 } }, { name = "EB", spawnData = { 205.75940, 1866.97839, 13.14063, 90, 287 } } } function spawn( player ) if not player or not isElement(player) or getElementType(player) ~= "player" then return end local spawned = false local acc = getPlayerAccount( player ) for i=1, #groups do if isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( groups[i].name ) ) then spawned = spawnPlayer ( player, unpack(groups[i].spawnData)) end end if spawned ~= true then spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end showChat( player, true ) fadeCamera( player, true ) setCameraTarget( player, player ) end addEventHandler( "onResourceStart", resourceRoot, function() resetMapInfo() for _,player in ipairs( getElementsByType 'player' ) do spawn( player ) end end ) addEventHandler( "onPlayerJoin", root, function( ) spawn(source) --setTimer(spawn, 1500, 1, source) end) addEventHandler( "onPlayerWasted", root, function( ) setTimer( spawn, 3000, 1, source ) end) Tô usando esse código. EDIT: Problema resolvido por privado.
  3. Troca player por source: addEventHandler( "onPlayerJoin", root, function( ) spawn(source) end) addEventHandler( "onPlayerWasted", root, function( ) setTimer( spawn, 3000, 1, source ) end)
  4. Troca spawnPlayer( player ) por spawn(player) e testa. Faz também o que eu disse ali em cima.
  5. Deve ser outra coisa... Desliguei meu GM pra testar e funciona. EDIT Coloca outputChatBox dentro desse código pra ver se sai msg na hora do spawn, poe por vários locais do código, se não mostrar nada só pode ser com o resource/script. Também já testei com esses grupos no servidor, e deu spawn nos locais de cada grupo.
  6. Eu testei aqui e não mostrou erro também. Mostrou na verdade com a função aclGetGroup porque eu não criei esses grupos no server. Mas o script funcionou normal.
  7. Mostra algum erro no debug? Digite o comando debugscript 3, vê se tem algum erro com esse código.
  8. Acho que compliquei com esse código, é mais difícil pra você entender, mas vou comentar o código sim. Um momento, espera até eu editar aqui. EDIT: local groups = { { name = "YKZ", spawnData = { 2340.81323, 553.25513, 18.75537, 90, 120 } }, { name = "EB", spawnData = { 205.75940, 1866.97839, 13.14063, 90, 287 } } -- aqui é os dados dos grupos; spawnData tem todos valores da função spawnPlayer -- x, y, z, rotação, skin } function spawn( player ) if not player or not isElement(player) or getElementType(player) ~= "player" then return end -- Aqui, to fazendo uma validação pra saber se 'player' é de fato um jogador local spawned = false -- Variável 'spawned' que tem um valor booleano indicando se spawnPlayer já foi chamado -- ali em: spawned = spawnPlayer local acc = getPlayerAccount( player ) for i=1, #groups do -- loop na tabela 'groups' if isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( groups[i].name ) ) then -- verifica se o jogador é de algum desses grupos spawned = spawnPlayer ( player, unpack(groups[i].spawnData)) -- O jogador é de um dos dois grupos, então spawna ele, e define spawned = true -- spawnPlayer retorna true se for bem-sucedida end end if spawned ~= true then spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end --[[ aqui já é fora do loop, então vamos saber se o jogador já foi gerado no jogo por aqui. Como disse, 'spawned' retorna true se o jogador já nasceu, Mas caso retorne false, então o jogador não pertence a nenhum grupo e spawna ele normalmente ]] showChat( player, true ) fadeCamera( player, true ) setCameraTarget( player, player ) end Obs: Se o jogador pertencer aos dois grupos, você vai receber um erro de 'spawnPlayer' porque vai tentar spawnar duas vezes.
  9. Como disse, seria só no caso de um elemento não-jogador ser passado; isElement verifica se é um elemento. Ainda assim, não é algo que influencie no código, tanto faz deixar ou remover. Uma versão melhorada/avançada desse código seria assim: local groups = { { name = "YKZ", spawnData = { 2340.81323, 553.25513, 18.75537, 90, 120 } }, { name = "EB", spawnData = { 205.75940, 1866.97839, 13.14063, 90, 287 } } } function spawn( player ) if not player or not isElement(player) or getElementType(player) ~= "player" then return end local spawned = false local acc = getPlayerAccount( player ) for i=1, #groups do if isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( groups[i].name ) ) then spawned = spawnPlayer ( player, unpack(groups[i].spawnData)) end end if spawned ~= true then spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end showChat( player, true ) fadeCamera( player, true ) setCameraTarget( player, player ) end Se você roda ele no seu server e tiver sempre esse conflito, recomendo editar ele pra funcionar com esse código.
  10. Na verdade nem precisa . Mas num caso de um elemento não-jogador ser passado, esse trecho do código não seria afetado por conta dessa checagem.
  11. Remova not isGuestAccount( acc ) da condição na linha 14. Tente: function spawn( player ) if not isElement( player ) then return end showChat( player, true ) local acc = getPlayerAccount( player ) if acc then if isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( "YKZ" ) ) then spawnPlayer ( player, 2340.81323, 553.25513, 18.75537, 90, 120) elseif isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( "EB" ) ) then spawnPlayer ( player, 205.75940, 1866.97839, 13.14063, 90, 287) else spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end end fadeCamera( player, true ) setCameraTarget( player, player ) end
  12. DNL291

    Question

    You can edit the code which changes the account password and attach a custom event to the function.
  13. 'text' retorna toda a mensagem? Tenta o seguinte, isto vai tirar do texto os caracteres "!pm ": local msg = text:sub( 5, #text ) if #msg > 1 then outputChatBox(msg) end
  14. É um parâmetro da função, significa que a nomeação fica por sua conta; Você pode usar: thePlayer, sourcePlayer, player; qualquer texto/palavra vai funcionar. E o retorno será sempre definido pela função, sem que seja possível você trocar o 1º argumento pelo segundo. Assim como o nome da função, que você pode escrever qualquer um.
  15. Dominar códigos como o postado neste tópico é um bom começo. Só nessas 9 linhas, você já vai ter uma noção do que é uma condição if ... then, saber usar outputChatBox, fazer códigos de comandos e restringir ações apenas admins. sabendo fazer o básico, o resto é você quem decide: aprender mais sobre tabelas, desenvolver usando GUIs ou DXs e olhar outros códigos pra ver como tudo é feito. Você pode sempre ter boa ajuda aqui no fórum quando tiver dificuldade ou alguma dúvida. É lógico que lendo tutoriais e ao mesmo tempo fazendo na prática - um complementa o outro. Com o tempo, você vai saber de cór boa parte das funções do MTA, é natural isso exigir tempo. Então te aconselho focar em outras coisas e não olhar função por função.
  16. Tá falando do GTA ou do servidor do MTA? Pra tirar isso no MTA é só desativar o resource. Aquelas setas amarelas é do resource interiors.
  17. O que impede o seu código de funcionar é a falta de um 'end', que fecha a condição na linha 3. Pra ativar estas cores: #FF0000, use true no 4º argumento de outputChatBox: outputChatBox("#ff0000texto", thePlayer, 255,255,255, true) Como você pode ver, onde está thePlayer, é o jogador pra quem a msg do chat vai mostrar, depois as cores R,G,B do texto e o 4º argumento é o que habilita o uso das cores hex. Outra coisa a esclarecer, setPlayerSkin é uma função antiga que não é mais usada - use está função: setElementModel. Fica assim: function darSkin( thePlayer ) local nomeAcc = getAccountName(getPlayerAccount(thePlayer)) if not isObjectInACLGroup("user."..nomeAcc, aclGetGroup("EB")) then outputChatBox("#ff0000Somente membros do Exercito Brasileiro podem pegar a skin!", thePlayer, 255,255,255, true) else setElementModel(thePlayer, 287) end end addCommandHandler("skin", darSkin)
  18. Não, essa função detecta se o jogador está logado também. Como diz a citação da Wiki: Então não tem problema caso o jogador crie uma conta chamada guest, é só verificar se está logado ou não, se tiver, é uma conta registrada, isto é, conta válida e não conta-convidado que na verdade está deslogado.
  19. function consoleCreateMarker ( playerSource, commandName ) if ( playerSource ) then local x, y, z = getElementPosition ( playerSource ) createMarker ( x, y, z, "checkpoint", 2, 255, 0, 0, 255 ) outputChatBox ( "You got a red marker", playerSource ) end end addCommandHandler ( "createmarker", consoleCreateMarker ) addEventHandler("onPlayerLogin", root, function() executeCommandHandler ( "createmarker", source ) end ) Coloquei 2 no tamanho do marcador, só trocar pelo tamanho desejado.
  20. Ainda não entendi porque editar o código do /register. Não é só usar isGuestAccount pra saber se o jogador tá logado e permitir que o portão abra/fecha pra quem está logado apenas?
  21. local c = { "ammo", "armour", "breath", "clock", "health", "money", "radar", "weapon", "wanted" } addEventHandler( "onPlayerJoin", root, function() for i=1, #c do setPlayerHudComponentVisible(source, c[i], false) end end ) Se algum desses componentes do HUD não precisar ser oculto é só editar o código e remover.
  22. Use: onPlayerJoin setPlayerHudComponentVisible
  23. Está funcionando esse código? Obs: Use if isGuestAccount(getPlayerAccount(thePlayer)) then return end Pra contas não-logadas não serem permitidas - essas usam o nick do jogador (Edit: na verdade não retorna o nick).
  24. Indexar é esta ação: tabela = { "ok" } tabela[1] -- [1] indexando a tabela Desculpe, acho que tô incomodando com essa ideia, mas respondendo: Não precisa criar outra tabela, era só testar mesmo porque pode ser um equivoco ao tentar obter o valor. Se baseando no código que postei que funcionou, talvez você encontre onde estava errado no seu código
  25. Dependendo do que ele quer fazer, deixaria mais complicado fazer com o timer noutro lado. Mas pra obtê-lo como você disse é só usar getTimers(5000). O timer dentro desse evento que é chamado múltiplas vezes por segundo, não é problema porque não vai ser executado continuamente (vai ter a variável do timer pra checar antes que a função seja chamada). Aquele loop em todos os veículo que eu não entendi - isso sim causa impacto pra performance dentro desse evento.
×
×
  • Create New...