Lord Henry

Members
  • Content count

    586
  • Joined

  • Last visited

  • Days Won

    5

Lord Henry last won the day on May 6

Lord Henry had the most liked content!

Community Reputation

123 Excellent

About Lord Henry

  • Rank
    Mack
  • Birthday 16/01/1996

Details

  • Gang
    Grove Street
  • Location
    Brazil
  • Occupation
    Gamer,Game Designer,Level Designer,Developer
  • Interests
    Game Design, Script Development

Recent Profile Visitors

2,080 profile views
  1. TeamTAB

    Vc criou várias funções com o mesmo nome, isso não pode. No evento onResourceStart, vc não deve usar getRootElement() como elemento ativador, pois irá executar quando qualquer resource for iniciado, não só este. Na Wiki ele diz qual o elemento ativador usar para que só ative ao iniciar este resource. Só saber ler o início da página.
  2. How to fix GUIMemo?

    Hello. Is there a way to fix this? The text keeps going behind the scroll bar on Memos. I was searching something on guiSetProperties about margin, but I don't know how to use and I don't know if it will fix this issue. https://prnt.sc/jjyuit
  3. Podem Ajudar ae

    Acabei de fazer isso por PM, como vc pediu.
  4. Podem Ajudar ae

    Use triggerServerEvent no lado client, para ativar uma função do lado server. E seria melhor vc indentar o código server-side, pq está difícil de ler assim.
  5. TeamTAB

    Já lhe avisamos mais de 3 vezes que vc precisa usar o botão <> quando for postar código. Se colar direto como texto, não consigo interpretar o código. Não posso lhe ajudar enquanto não postar da maneira legível o código. https://prntscr.com/itiqv9
  6. permisão acl

    Para verificar erros no código, deixe o /debugscript 3 ativado. E seu código as vezes usa source e as vezes usa thePlayer, mas em nenhum momento thePlayer foi declarado. O que seria o parâmetro setArea? O comando em si? Pois de acordo com a Wiki, os parâmetros da função de addCommandHandler na parte server-side são: O jogador, o comando e os argumentos do comando. function area (thePlayer) -- setArea não existe, o primeiro parâmetro aqui é quem está usando o comando, no caso o jogador. createColRectangle (95, 1700, 325, 450) createRadarArea (95, 1700, 325, 450, 0, 0, 0, 175) outputChatBox ("Zone Created", thePlayer, 255, 0, 0) -- Só usa-se source se nenhum parâmetro for declarado na função, como informamos thePlayer, use-o. if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Owner")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Admin")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Moderator")) then -- Vc pode deixar uma mensagem de teste só para verificar se o código está lendo aqui. print ("Funcionando.") end end addCommandHandler ("setEventArea", area) Ou se preferir usar o source em vez de thePlayer, da pra fazer assim: function area () createColRectangle (95, 1700, 325, 450) createRadarArea (95, 1700, 325, 450, 0, 0, 0, 175) outputChatBox ("Zone Created", source, 255, 0, 0) if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Owner")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Admin")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Moderator")) then print ("Funcionando.") end end addCommandHandler ("setEventArea", area) ------------------------------------------------------------ Para destruir a zona, é necessário que ela esteja dentro de uma variável para vc conseguir chamá-la depois. Para isso, faça assim: function area (thePlayer) radarCol = createColRectangle (95, 1700, 325, 450) radarArea = createRadarArea (95, 1700, 325, 450, 0, 0, 0, 175) outputChatBox ("Zone Created", thePlayer, 255, 0, 0) if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Owner")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Admin")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Moderator")) then -- Vc pode deixar uma mensagem de teste só para verificar se o código está lendo aqui. print ("Funcionando.") end end addCommandHandler ("setEventArea", area) function delArea (thePlayer) if isElement (radarCol) and isElement (radarArea) then if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Owner")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Admin")) or isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Moderator")) then destroyElement (radarCol) destroyElement (radarArea) radarCol = nil -- Sempre que destruir um elemento, vc deve anular a variável que estava sendo usada por ele. radarArea = nil outputChatBox ("Zone destroyed", thePlayer, 255, 0, 0) end end end addCommandHandler ("delEventArea", delArea)
  7. TeamTAB

    Só vc criar as Teams no script e adicionar uma função que coloca os players no Team correto quando eles logam no servidor dependendo da ACL Group que eles estiverem. createTeam (cria o time) onPlayerLogin (executa o evento quando alguém faz login) isObjectInACLGroup (verifica se um objeto está em determinada ACL Group) setPlayerTeam (coloca alguém em determinado Team) Para evitar o bug, vc pode fazer uma verificação ao iniciar o resource, para que ele coloque os players que já estão logados nos times corretos. Dai vc precisa obter todos os players online, verificar quais deles estão logados e verificar se eles estão na ACL Group correta. onResourceStart (executa o evento quando um resource é iniciado) getElementsByType (obtém todos os elementos do servidor daquele tipo, neste caso use o tipo "player" e ele vai obter todos os jogadores online) isGuestAccount (verifica se uma conta é Guest ou não, usa-se isso para verificar se um player está logado ou não.) Outra coisa que vc deve fazer, é tirar os jogadores do Team se eles deslogarem (sem sair do servidor). Dai basta setar Team nulo neles quando eles fizerem logout. onPlayerLogout (executa o evento quando alguém faz logout) setPlayerTeam (coloca alguém em determinado Team, neste caso coloque nil, no parâmetro do Team para remover o jogador de um Team.)
  8. PrivACL Marker

    Só adicionar setElementPosition depois de fechar o painel. Isso é mais simples do que fazer uma pergunta. addEventHandler ("onClientClick", getRootElement(), function (button, state, absoluteX, absoluteY) if (button == "left") and (state == "up") and isDxShowing then if absoluteX >= 567 and absoluteX <= 650 and absoluteY >= 528 and absoluteY <= 559 then -- Se a coordenada clicada estiver dentro do retângulo "Fechar", então: gerenciaPainel () -- Fecha o painel. setElementPosition (localPlayer, 0, 0, 0) -- Onde 0, 0, 0 é as coordenadas X, Y, Z pra ir. end end end) Cara, vc pelo menos fez o mínimo de esforço para ler a Wiki? Ou vc nem sabe que ela existe? Lá também tem exemplos prontos pra vc estudar como funciona a função. Sabendo como funciona a função, vc pode usá-la para o propósito que vc quiser.
  9. PrivACL Marker

    Leu isso? Não entendi oq vc quer fazer.
  10. Sistema de escudo

    Cara, realmente não sei como fazer isso. Por ser iniciante, vc deveria tentar fazer coisas mais simples antes de ir para coisas complexas.
  11. Sistema de escudo

    Cara, isso é realmente bem complexo de ser feito. Você vai precisar obter a posição e rotação do veículo (fácil), verificar se o jogador está olhando para o veículo (fácil), verificar a distância entre vc e o veículo (fácil), verificar a rotação do jogador em relação ao veículo (difícil) [se estiver atrás do veículo, o angulo deve ser em média 180, na frente é próximo a 0 ou 360 e assim por diante], além de formatar esse ângulo relativo para não gerar valores negativos nem superiores a 360 (médio). Obtendo este ângulo relativo, vc consegue determinar qual porta do veículo o jogador está mais próximo. Para só então poder ativar/desativar o comando de pegar o escudo. Dai a parte do escudo é outra coisa mais complexa, vc vai precisar editar alguma arma para ter a aparência do escudo, já que não existe escudo nativo no GTA. A parte de colocar/tirar o escudo no jogador é fácil.
  12. PrivACL Marker

    Ué, como assim? Vc queria que o painel aparecesse ao entrar num marker não era? Pq vc está querendo mudar agora pra tecla específica?
  13. PrivACL Marker

    Nossa, que gambiarra maluca que vc fez aí. Está usando elementos GUI em painel DX, dai fica bem complicado mesmo. Eu recomendaria fazer tudo em GUI que é mais fácil. Como eu disse, os elementos DX precisam ser criados a cada frame usando o onClientRender para permanecerem na tela, pois no frame seguinte eles desaparecem. Já os elementos GUI só devem ser criados 1 vez. As funções de chamada são feitas 1 vez, vc deve mostrar o mouse 1 vez, vc deve ativar o painel 1 vez. Por isso que é mais fácil o painel GUI. Mas farei um exemplo que ativa um painel DX pelo marker: server: (exatamente igual ao exemplo anterior) theMarker = createMarker ("o marker que vc criou") addEventHandler ("onMarkerHit", theMarker, function (hitElement) if hitElement and getElementType (hitElement) == "player" then local account = getAccountName (getPlayerAccount (hitElement)) if isObjectInACLGroup ("user."..account, aclGetGroup ("NOME DA ACL GROUP PERMITIDA")) then triggerClientEvent (hitElement, "ativaPainel", hitElement) end end end) client: (aqui muda tudo) function drawDX() dxDrawRectangle(422, 221, 353, 360, tocolor(0, 0, 0, 160), false) dxDrawRectangle(422, 187, 353, 34, tocolor(0, 0, 0, 230), false) dxDrawText("Favelas da CMD", 484, 192, 765, 216, tocolor(255, 0, 0, 255), 0.80, "bankgothic", "left", "top", false, false, false, false, false) dxDrawRectangle(440, 254, 83, 31, tocolor(255, 1, 1, 255), false) --- Chapadão dxDrawRectangle(565, 254, 83, 31, tocolor(255, 1, 1, 255), false) --- Salgueiro dxDrawRectangle(677, 254, 83, 31, tocolor(255, 1, 1, 255), false) --- Penha dxDrawRectangle(440, 307, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir1 dxDrawRectangle(565, 307, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir2 dxDrawRectangle(677, 307, 83, 31, tocolor(255, 1, 1, 255), false) --- Alemão dxDrawRectangle(440, 360, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir3 dxDrawRectangle(565, 360, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir4 dxDrawRectangle(678, 360, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir5 dxDrawRectangle(565, 412, 83, 31, tocolor(255, 1, 1, 255), false) --- Abrir6 dxDrawRectangle(567, 528, 83, 31, tocolor(255, 1, 1, 255), false) --- Close dxDrawText("Chapadão", 451, 261, 496, 276, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Salgueiro", 580, 262, 629, 278, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Penha", 699, 263, 748, 279, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve1", 462, 314, 511, 330, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve2", 587, 314, 636, 330, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Alemão", 695, 315, 744, 331, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve3", 462, 367, 511, 383, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve4", 590, 368, 639, 384, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve5", 699, 368, 748, 384, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Breve6", 589, 419, 638, 435, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) dxDrawText("Fechar", 589, 536, 638, 552, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false) end local isDxShowing = false function gerenciaPainel () if not isDxShowing then addEventHandler ("onClientRender", getRootElement(), drawDX) showCursor (true) isDxShowing = true else removeEventHandler ("onClientRender", getRootElement(), drawDX) showCursor (false) isDxShowing = false end end addEvent ("ativaPainel", true) addEventHandler ("ativaPainel", getRootElement(), gerenciaPainel) addEventHandler ("onClientClick", getRootElement(), function (button, state, absoluteX, absoluteY) if (button == "left") and (state == "up") and isDxShowing then if absoluteX >= 567 and absoluteX <= 650 and absoluteY >= 528 and absoluteY <= 559 then -- Se a coordenada clicada estiver dentro do retângulo "Fechar", então: gerenciaPainel () -- Fecha o painel. end end end) É claro que, por se tratar de um elemento DX e não GUI, vc deve usar onClientClick e não onClientGUIClick. Obtendo a coordenada clicada e verificando se essa coordenada está dentro do botão de fechar, para executar a função de fechar o painel.
  14. PrivACL Marker

    No server sim. No client não. Pois o painel DX precisa ser chamado a cada frame pra se manter na tela. Dai vc precisará de uma função onClientRender pra funcionar em vez do guiSetVisible.
  15. PrivACL Marker

    server: theMarker = createMarker ("o marker que vc criou") addEventHandler ("onMarkerHit", theMarker, function (hitElement) if hitElement and getElementType (hitElement) == "player" then local account = getAccountName (getPlayerAccount (hitElement)) if isObjectInACLGroup ("user."..account, aclGetGroup ("NOME DA ACL GROUP PERMITIDA")) then triggerClientEvent (hitElement, "ativaPainel", hitElement) end end end) client: janelaPainel = guiCreateWindow ("crie seu painel GUI e seus elementos") guiSetVisible (janelaPainel, false) addEvent ("ativaPainel", true) addEventHandler ("ativaPainel", getRootElement(), function () guiSetVisible (janelaPainel, true) showCursor (true) end) Se tiver dúvidas quanto a sintaxe de alguma função, leia a Wiki dela.