Jump to content

n3wage

Members
  • Posts

    290
  • Joined

Everything posted by n3wage

  1. Não, Você tem que fazer isso "manualmente", Quando o jogador se registrar você pode definir um dado na conta (olhe o exemplo da wiki) dizendo que ele já esta registrado, E depois, Quando ele logar, você checa se este dado existe, Se não existir você passa a cutscene para o jogador. obs: Lembrando que este procedimento é feito no lado do servidor, se você passa a cutscene no lado do cliente você tera que utilizar triggers (triggerClientEvent ~ triggerServerEvent).
  2. Na verdade nenhum método que você citou é seguro, Como por exemplo o de checar o nome do servidor; getServerName = function( ) return NOMEREQUERIDO end Com esse simples script daria pra passar a verificação.
  3. Para fazer o widescreen basta usar dois retângulos, Sobre o ped você pode fazer ele se mover usando setPedControlState.
  4. You forgot the visibleTo argument on the outputChatBox function, See the Syntax: Server: bool outputChatBox ( string text [, element visibleTo=getRootElement(), int r=231, int g=217, int b=176, bool colorCoded=false ] ) Client: bool outputChatBox ( string text [, int r=231, int g=217, int b=176, bool colorCoded=false ] ) As you can see there's a difference between the client and the server syntax, this probably was your problem.
  5. Você pode fazer como o meu exemplo e bloquear o comando /kill ou checar de alguma forma no evento onPlayerSpawn se o jogador estava preso e prender ele "novamente".
  6. No comando /freeze você pode setar a element data de um jogador e nos comandos do freeroam você checa se o jogador não tem tal element data. Algo assim: function bloquear_meus_comandos ( thePlayer ) -- /bloquear setElementData ( thePlayer, "ComandosBloqueados", true, false ); outputChatBox ( "Seus comandos foram bloqueados !", thePlayer, 0, 255, 0 ); end addCommandHandler ( "bloquear", bloquear_meus_comandos ); function meMatar ( thePlayer ) -- /mematar -- Checar se o jogador pode usar comandos if not getElementData ( thePlayer, "ComandosBloqueados" ) then setElementHealth ( thePlayer, 0 ); outputChatBox ( "Você se matou com sucesso !", thePlayer ); else outputChatBox ( "Você não pode usar este comando agora", thePlayer ); end end addCommandHandler ( "mematar", meMatar ); Esse exemplo vai bloquear o comando /mematar depois de você usar /bloquear.
  7. Você não pode checar dessa forma: if ( getElementModel(source) == 596 or 598 ) then Porque o script vai checar se getElementModel(source) é igual a 596 até ai tudo bem, O problema é o or, Você teria que usar getElementModel novamente se não o script continua já que 598 não é um valor negativo (e existe). addEventHandler("onVehicleEnter",root, function( Player,seat ) if ( getElementModel(source) == 596 or getElementModel(source) == 598 ) then local skin = getElementModel(Player) if( skin ~= 287 and skin ~= 286 and skin ~= 285 ) then cancelEvent() destroyElement(source) outputChatBox("Você Não é da Força Nacional de Segurança para Criar este Veículo",thePlayer) end end end )
  8. Isso ocorre porque nas checagens você esta usando, por exemplo: if x == 1 or 2 or 3 then isso (↑) vai retornar true e o script vai continuar, o método correto seria: if x == 1 or x == 2 or x == 3 then
  9. Você pode usar math.floor para obter apenas o numero inteiro, Assim para checar se ele NÃO contem decimais você simplesmente faz a seguinte checagem: math.floor ( numero ) == numero
  10. Seu código vai tirar uma estrela de procurado de todos os jogadores (até os que não estão presos) a cada 1 segundo, Se eu entendi bem você quer tirar todas as estrelas quando o jogador for preso, se for isso basta editar a função JailHim colocando setPlayerWantedLevel ( thePlayer, 0 ).
  11. Quando o jogador entra em algum veiculo o evento onVehicleEnter é chamado, logo você só precisa checar a skin do jogador e o ID do veiculo (getElementModel), Se ele não tiver com a skin correta você retira ele do veiculo usando removePedFromVehicle. Você pode ver a lista de eventos quando não tiver ideia de qual usar (server| client), Tenho certeza que isso irá te ajudar no futuro
  12. Parece que você só copiou o exemplo da wiki, Que não faz oque você quer. Como você quer apenas por a animação neste comando que já está pronto basta olhar a sintaxe da função na wiki: setPedAnimation ( ped thePed [, string block=nil, string anim=nil, int time=-1, bool loop=true, bool updatePosition=true, bool interruptable=true, bool freezeLastFrame = true] ) Depois basta incluir esta parte (↑) no codigo e ir adicionando os parâmetros (você pode ver oque cada um significa na wiki) setPedAnimation ( thePlayer, "POLICE", "plc_dhgbst01", -1, true, false, false, false ) -- Você também não precisa criar outra função para checar a ACL do jogador, isto já bastaria: function revistar_jogador ( thePlayer, comando, nick ) if nick then if getPlayerFromPartialName ( nick ) then local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "ComandosPolicia") ) then local player_a_ser_revistado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName ( player_a_ser_revistado ) local nick_do_policial = getPlayerName ( thePlayer ) local estrelas_de_procurado = getPlayerWantedLevel ( player_a_ser_revistado ) setPedAnimation ( thePlayer, "POLICE", "plc_dhgbst01", -1, true, false, false, false ) outputChatBox( "#A09E9EO Policial"..nick_do_policial.."#A09E9E Está Revistando o #FC0303Jogador "..nick_do_jogador, root, 255, 255, 255, true ) outputChatBox ("#A09E9EO Nivel de #FC0303procurado #A09E9EO de "..nick_do_jogador..": "..estrelas_de_procurado, thePlayer, 255, 255, 255, true ) else outputChatBox("Você não tem permissão pra usar este comando!", thePlayer, 255, 255, 255, true) end end end end addCommandHandler ( "revistar", revistar_jogador ) Vejo que você tem problemas com o básico da linguagem, Se tiver tempo leia este tutorial (em inglês) ou o manual da linguagem, Em português.
  13. Como não existe nada na wiki sobre isso você tem que pensar como fazer esse sistema 'manualmente'... Devemos, primeiro, gerar um id único para cada jogador, para isso precisamos armazenar o id de todos os jogadores (afinal não queremos que existam dois jogadores com o mesmo id), Você pode fazer isso usando element datas + um loop ou uma simples tabela; ID_Dos_Jogadores = {} -- Criamos a tabela 'ID_Dos_Jogadores', que ira armazenar os ids que ja foram usados function onJoin () -- Função que irá dar um id ao jogador logo quando ele entrar. for i = 0, getMaxPlayers() do -- fazemos um loop numerico do numero 0 ao slot maximo de jogadores -- aqui a variavel "i" correspondera a um numero (o atual do loop, que aumenta a cada execução dele) if not ID_Dos_Jogadores[ i ] then -- checamos se o id já não está sendo usado ID_Dos_Jogadores [ i ] = source -- definimos, na tabela, o id como o jogador que acabou de entrar break -- paramos o loop, afinal o jogador já tem um id end end end addEventHandler ( "onPlayerJoin", root, onJoin ); -- adicionamos o evento onPlayerJoin a função onJoin Com o codigo acima você pode criar uma função que 'pegue' um jogador pelo seu id e usar ela em um export function getPlayerFromID ( id ) -- função que ira obter um jogador pelo seu id if ID_Dos_Jogadores[id] then -- checamos se o id está sendo usado return ID_Dos_Jogadores[id] -- retornamos o jogador else return false -- retornamos falso pois não existe ninguem com este id end end ↑ isso já responde sua primeira 'duvida' , Para a segunda você vai precisar provavelmente de element datas para conseguir o id do jogador no lado do cliente e assim usar dxDrawText. Para a terceira você só precisa fazer um loop com todos os jogadores, e inserir cada um deles em uma tabela (juntamente com seu id e nível de procurado) e depois passar essa tabela para o cliente usando triggerClientEvent. Espero que tenhas entendido, Se não conseguir algo ou ficar com alguma duvida tente fazer o código e poste ele aqui.
  14. Isso não é um problema, o código foi feito para ser assim. if nick then --[[ ^ aqui checamos se o jogador digitou algum nick, se não digitou nada acontecerá --]]
  15. Oque você quer fazer? não é possível adicionar um comando "sem um comando".
  16. elseif (source == ButtonSec1) then guiSetVisible ( JanelaSec, false ) if getPlayerFromPartialName ( guiGetText ( editWanted1 ) ) then -- não é necessario usar tostring em guiGetText pois a função já retorna uma string local jogador_selecionado = getPlayerFromPartialName ( guiGetText ( editWanted1 ) ) local getlevel = tonumber ( guiGetText(editWanted2) ) -- converter o texto digitado para numeros triggerServerEvent("onStupidStar", localPlayer, getlevel, jogador_selecionado) else outputChatBox ( "nenhum jogador encontrado" ) end end Lembre-se de colocar essa função no seu código: 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
  17. Precisa colocar mais um if checando se o jogador está em determinada ACL. Usando o exemplo da wiki: function revistar_jogador ( thePlayer, comando, nick ) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- Troque Admin por sua ACL if nick then if getPlayerFromPartialName ( nick ) then local player_a_ser_revistado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName ( player_a_ser_revistado ) local nick_do_policial = getPlayerName ( thePlayer ) local estrelas_de_procurado = getPlayerWantedLevel ( player_a_ser_revistado ) outputChatBox( "#A09E9EO Policial"..nick_do_policial.."#A09E9E Está Revistando o #FC0303Jogador "..nick_do_jogador, root, 255, 255, 255, true ) outputChatBox ("#A09E9EO Nivel de #FC0303procurado #A09E9EO de "..nick_do_jogador..": "..estrelas_de_procurado, thePlayer, 255, 255, 255, true ) end end end end addCommandHandler ( "revistar", revistar_jogador )
  18. Você esqueceu de fechar o addEventHandler na linha 60. Como eu já falei, funções dx* NÃO retornam nenhum elemento, sendo assim você não pode usar o evento onClientGUIClick (muito menos adicionar o evento a cada frame), Ele só funciona com GUIs. Você não precisa adicionar o evento onClientRender toda vez, Bastava outra função que fazia isso Você usou (na função isMouseInPosition) os parâmetros da função dxDrawText quando é necessario usar as do retângulo Você não pode usar guiSetVisible em dxs, Você deve remover o evento onClientRender. function pm() dxDrawRectangle(541, 215, 258, 352, tocolor(0, 0, 0, 179), false) dxDrawRectangle(540, 213, 259, 29, tocolor(129, 0, 0, 254), false) dxDrawText("Painel da Policia", 539, 212, 799, 242, tocolor(255, 255, 255, 255), 0.80, "bankgothic", "center", "center", false, false, false, false, false) dxDrawRectangle(538, 562, 159, 0, tocolor(255, 255, 255, 255), false) dxDrawRectangle(540, 524, 259, 28, tocolor(129, 0, 0, 254), false) dxDrawText("Script Criado Por : +Stronger", 538, 521, 799, 552, tocolor(255, 255, 255, 255), 0.50, "bankgothic", "center", "center", false, false, false, false, false) dxDrawRectangle(553, 284, 98, 79, tocolor(129, 0, 0, 254), false) -- Viatura dxDrawRectangle(691, 284, 98, 79, tocolor(129, 0, 0, 254), false) -- Skin dxDrawRectangle(691, 403, 98, 79, tocolor(129, 0, 0, 254), false) -- Vida/Colete dxDrawRectangle(551, 403, 98, 79, tocolor(129, 0, 0, 254), false) -- Armas dxDrawText("Viatura", 552, 281, 651, 363, tocolor(255, 255, 255, 255), 0.75, "bankgothic", "center", "center", false, false, false, false, false) dxDrawText("Skin", 690, 281, 789, 363, tocolor(255, 255, 255, 255), 0.75, "bankgothic", "center", "center", false, false, false, false, false) dxDrawText("Vida\n Colete", 690, 400, 789, 482, tocolor(255, 255, 255, 255), 0.75, "bankgothic", "center", "center", false, false, false, false, false) dxDrawText("Armas", 551, 400, 650, 482, tocolor(255, 255, 255, 255), 0.75, "bankgothic", "center", "center", false, false, false, false, false) dxDrawText("X", 755, 244, 789, 274, tocolor(209, 0, 0, 254), 1.00, "bankgothic", "center", "center", false, false, false, false, false) end function iniciarRenderizacao ( ) addEventHandler("onClientRender", root, pm) showCursor(true) end addCommandHandler("tut1", iniciarRenderizacao) ------------------------------------------------------------------- function isMouseInPosition ( x, y, width, height ) if ( not isCursorShowing ( ) ) then return false end local sx, sy = guiGetScreenSize ( ) local cx, cy = getCursorPosition ( ) local cx, cy = ( cx * sx ), ( cy * sy ) if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then return true else return false end end addEventHandler ( "onClientClick", root, function ( _, state ) if state == "down" then -- Viatura if isMouseInPosition ( 553, 284, 98, 79 ) then triggerServerEvent ( "darAuto", getLocalPlayer() ) -- Skin elseif isMouseInPosition ( 691, 284, 98, 79 ) then triggerServerEvent ( "onGreetinC", getLocalPlayer() ) -- Vida / Colete elseif isMouseInPosition ( 691, 403, 98, 79 ) then triggerServerEvent ( "VidaColete", getLocalPlayer() ) -- Armas elseif isMouseInPosition ( 551, 403, 98, 79 ) then triggerServerEvent ( "onGreeting", getLocalPlayer() ) -- Fechar elseif isMouseInPosition ( 755, 244, 34, 30 ) then removeEventHandler ( "onClientRender", root, pm ) showCursor ( false ) end end end ) Tente entender o código. dica: use /debugscript 3, Ele irá lhe 'dizer' todos os erros do seu script.
  19. Poste seu código aqui ou me mande por PM.
  20. Porque você não usa a função que está na wiki ? 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 Assim se seu nick for, por exemplo, #00ff00Tes#ff0000te você pode 'procurar' por teste, tes, #00ff00tes#ff0000t etc que tudo irá funcionar.
  21. isObjectInACLGroup (clique e olhe o primeiro exemplo).
  22. Isso era um exemplo só para você entender como usar as funções que eu mencionei, você tem que adaptar o código as suas necessidades.
  23. Você misturou a função getPlayerFromPartialName com a parte de revistar o jogador, o certo seria criar outra função, Comentei o código inteiro para você entender 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 function revistar_jogador ( thePlayer, comando, nick ) -- definimos a função revistar_jogador --[[ Como você adicionou um comando, a função ganha 2 parametros thePlayer = Jogador que digitou o comando comando = Comando digitado o parametro nick foi definido por nós. --]] if nick then -- checamos se nick (o parametro que indica o nick do jogador a ser revistado) foi digitado if getPlayerFromPartialName ( nick ) then -- checamos se existe um player com o nick digitado local player_a_ser_revistado = getPlayerFromPartialName ( nick ) -- definimos player_a_ser_revistado como o player a ser revistado.. local nick_do_jogador = getPlayerName ( player_a_ser_revistado ) -- pegamos o nick do jogador local nick_do_policial = getPlayerName ( thePlayer ) -- pegamos o nick do policial (quem digitou o comando) local estrelas_de_procurado = getPlayerWantedLevel ( player_a_ser_revistado ) -- obtemos o nivel de procurado do 'bandido' outputChatBox( "O "..nick_do_policial.."#00ff00 Está Revistando o Jogador "..nick_do_jogador, root, 255, 255, 255, true ) -- Mandamos a mensagem para todos do servidor (root = todos) outputChatBox ( "Nivel de procurado de "..nick_do_jogador..": "..estrelas_de_procurado, thePlayer, 255, 255, 255, true ) -- Mandamos outra mensagem dessa vez apenas para quem digitou o comando end end end addCommandHandler ( "revistar", revistar_jogador ) -- adicionar o comando Qualquer dúvida poste aqui.
×
×
  • Create New...