Jump to content

Jonas^

Members
  • Posts

    1,016
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Jonas^

  1. Acho que ele quer por exemplo: Se Lord Henry digitar : /desativarresource Carro Isto é um exemplo por comando, mas creio que ele quer fazer isso por um painel e ele mesmo por as resources que os jogadores poderam desligar/ligar para eles mesmo, então: Ao Lord digitar /desativarresource Carro a textura do carro tal é desligada apenas para Lord
  2. Entendi, testei aqui e funcionou, sim eu uso com letra maiúscula pois eu uso uma tecla para acionar o comando do lado client-side, então não necessariamente o jogador vai usar o /Chat Ola mundo por exemplo.
  3. CLIENT-SIDE disallowedCmds = { "say", "teamsay", "me", "Chat" } addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = {} -- Obtém uma lista com todas as teclas com binds de texto. for i, cmd in ipairs (disallowedCmds) do -- Para cada comando da lista, faça: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: table.insert (keys, ii) -- Insere na lista keys, cada tecla bindada a cada comando da lista disallowedCmds. end end if keys then -- Se existe alguma tecla com bind de texto, então: for keyName, keyState in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == keyName then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada, contém bind de texto tecla: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) SERVER-SIDE addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), function () -- Executa essa função ao iniciar este resource. local everybody = getElementsByType ("player") -- everybody é uma lista com todos os players conectados no servidor, incluindo os deslogados. for i, thePlayer in ipairs (everybody) do -- Para cada jogador que já está no servidor, faça: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Console")) then -- Se este jogador está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", true) -- Permite que este player use teclas com binds de texto. else -- Se ele não está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", false) -- Proíbe que este player use teclas com binds de texto. end end end) addEventHandler ("onPlayerLogin", getRootElement(), function (prev, curr) -- Quando alguém fizer login, executa essa função. if isObjectInACLGroup ("user."..getAccountName(curr), aclGetGroup("Console")) then -- Se o jogador que fez login está na ACL Group Console, então: setElementData (source, "bindPermission", true) -- Permite que este player use teclas com binds de texto. end end) addEventHandler ("onPlayerLogout", getRootElement(), function (prev, curr) -- Quando alguém deslogar, executa essa função. setElementData (source, "bindPermission", false) -- Proíbe que o player deslogado use teclas com binds de texto. end)
  4. for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: Ressaltando novamente que eu mantive a verificação por ACL
  5. CLIENT : bad argument #1 to 'pairs' (table expected, got boolean ) [ DUP X14 ] Linha do erro: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça:
  6. Este era pra bloquear os comandos que tivesse bind de texto, o da animação não consegui fazer
  7. Eu tentei desta forma mantendo a verificação: disallowedCmds = { "say", "teamsay", "me" } addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = {} -- Obtém uma lista com todas as teclas com binds de texto. for i, cmd in ipairs (disallowedCmds) do -- Para cada comando da lista, faça: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: table.insert (keys, ii) -- Insere na lista keys, cada tecla bindada a cada comando da lista disallowedCmds. end end if keys then -- Se existe alguma tecla com bind de texto, então: for keyName, keyState in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == keyName then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada, contém bind de texto tecla: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) Porém deu alguns erros relacionados ao pairs
  8. E sobre a minha resposta acima?
  9. No lugar do kick tem como adicionar por exemplo: Cancelar a animação do jogador, pois essa combinação de tecla causa um bug, e o jogador sai andando rapidamente com a arma na mao e pode atirar '' deslizando '' é um bug do GTA, o kick não é muito viavel pois acabei de perceber que kika jogadores que as vezes estão trocando tiro e apertam w por exemplo em quanto seguram ESPAÇO + MOUSE2 e são kikado, então por exemplo: um congelamento instantaneo de 1 segundo teria como ?
  10. Em relação a esta parte do script de bloquear o texto: local keys = getBoundKeys ("seuComandoAqui") -- Obtém uma lista com todas as teclas com binds deste comando. Tem como eu adicionar por exemplo 1 ou mais comandos nesta mesma função? para bloquear? por exemplo: say, Chat
  11. Eu testei o script e esta funcionando perfeitamente, bom queria aproveitar aqui este exemplo de bind de texto, se não for muito incomodo, teria como fazer um exemplo para bloquear as teclas que o jogador aperta por exemplo uma combinação: Se o jogador segurar o w, espaço e o mouse2 ao mesmo tempo ele é kikado motivo: Uso de combinações bloqueadas! se der pra fazer um exemplo com essas 3 teclas ficarei grato ! OBS: Após ele ser kikado manda uma mensagem root avisando: Jogador Lord kikado por combinações de tecla bloqueada: w, espaço , mouse2, em relação ao bloqueio de texto, teria como verificar se o jogador tiver bind's em outro chat? por exemplo: Eu uso um chat separadamente para os administradores, ele não usa a mesma variavel '' say '' ! EDIT: Neste caso que eu pedi, você não precisa usar nem uma verificação ao lado client sobre acl, quero que ninguém possa usar essa combinação de tecla !
  12. Sim, uso cashe false em todos os arquivos client e compilou pra mandar para vps.
  13. Então ta explicado o motivo quando eu logo no server local para testar alguma coisa e entro no servidor hospedado baixa uma % de kb/s deve ser os arquivos compilados baixando novamente, obrigado !
  14. Em relação ao botão você coloca as coordenadas do seu botão aqui: buttonPro = guiCreateButton (x/2, y/2, 80, 25, "Proteção", false) -- Botão de exemplo. Sobre essa sua dúvida: ' ou arquivo server ' R: Você não vai usar nada relacionado ao 'pro' no server-side, apenas no client-side usando setElementData E essa função você remove do seu painel: função Pro (_, estado) , se Painel == true, em seguida, se o estado == "para baixo", em seguida, se isCursorOnElement (screenW * 0,5586, screenH * 0,5716, 200, 49), em seguida, triggerServerEvent ( "pro", localPlayer) end end end end AddEventHandler ("onClientClick", root, Pro) E coloca no client-side a função que o @Lord Henry citou acima ! OBS: Percebi que tem um triggerServerEvent puxando do lado client para o lado server, você deve remover a função que esta no client/server e adicionar somente a função que o Lord citou , se eu estiver falando algo errado, me corrija por favor !
  15. Olá pessoal, Bom eu tenho uma dúvida, por exemplo: se eu compilar um arquivo client/server e mandar para o servidor principal e ficar no meu local com os arquivos descompilados, ele ira baixar novamente os arquivos client/server descompilados? pois eu fiz isso e quando eu entro no meu servidor hospedado que no caso é onde esta os arquivos compilados, ele baixa uma porcentagem pequena de download isso só acontece quando eu entro no server no localhost onde estão os arquivos descompilados. Se alguém poder me explicar melhor sobre isso agradeço.
  16. função Pro (_, estado) , se Painel == true, em seguida, se o estado == "para baixo", em seguida, se isCursorOnElement (screenW * 0,5586, screenH * 0,5716, 200, 49), em seguida, triggerServerEvent ( "pro", localPlayer) end end end end AddEventHandler ("onClientClick", root, Pro) Use a função do fórum para postar códigos em lua, assim fica muito feio e difícil de entender, mas enfim eu testei o exemplo do Lord e funcionou, você pode usar o que ele fez acima como base e adicionar no seu painel. OBS: Não entendi por que seu código esta em português !
  17. Sim, você pode fazer por exemplo quando um jogador digitar /vip ele seja kikado do servidor e após isso envia uma mensagem ' Você foi trollado '
  18. Um projeto muito bacana seria concerteza um projeto já mais visto em nosso idioma. Algo totalmente inovador, uma pena que tenha sido abandonado ( Acredito eu ).
  19. You should give permission to the admin resource in acl admin by doing this: <group name="Admin"> <acl name="Moderator"></acl> <acl name="SuperModerator"></acl> <acl name="Admin"></acl> <acl name="RPC"></acl> <object name="resource.admin"></object> <object name="resource.webadmin"></object> <object name="resource.acpanel"></object> </group>
  20. Oi, PaoNinja você deve tentar atualizar os drivers do seu computador usando algum software exemplos: Driver booster < Mais recomendado > Slim drivers < Também é bom > Caso o problema persista, baixe o ccleaner após a atualização e scaneie o registro/computador em si. Se o erro ainda assim continuar, acredito que pode ser algum erro no seu GTA ou até mesmo sua maquina.
  21. Olá, boa tarde! Bom, eu achei um resource de airdrop para mta dayz, no qual esta com uma função não nativa no MTA, não sei se ela já foi nativa e foi retirada por algum motivo, o script funciona perfeitamente, porém, fica subindo warning no debug sobre a função que não existe a função é: getWeaponAmmoType Não sei o que fazer para resolver isso parte do código: for i,item in pairs(lootItems)do local value = math.percentChance(item[2],1) if value >= 1 then setElementData(avialColq2,item[1],value) local ammoData,weapID = getWeaponAmmoType(item[1],true) if ammoData then local minBullets,maxBullets = math.floor(getAmmoPlus(ammoData)/3),getAmmoPlus(ammoData)*2 local ammoQuantity = math.random(minBullets,maxBullets) setElementData(avialColq2,ammoData,ammoQuantity) end end end end, 23100, 1 ) end spawnAirdrop2() addCommandHandler("spawnairdrop", spawnAirdrop2)
  22. Corrigindo, 1.5.4 Em 2 servidores que eu testei na 1.5.5 estavam, aí voltei o meu para 1.5.4 e resolveu. Creio eu que seja bug na versão
  23. Olá pessoal, Bom eu realizei vários testes, e percebi que a 1.5.5 esta dando alguns erros, por exemplo, bug de som e de tiros, as vezes quando tal jogador da um tiro o som não sai, e o demage da sniper por exemplo esta bugado, não sei se isso tem algo a ver com a parte de codigos de cada versão, mas a parte do som eu sei que tem, e na 1.5.4 funciona tudo perfeitamente! se isso for um bug, peço que algum MODERATOR reporte para os desenvolvedores !
  24. Na tabela lootItems eu adiciono as armas , e as quantidades? aonde eu adiciono? quero que seja padrão , porém quero que somente as armas venham randomicas, por exemplo: num spawn veio SNIPER e os demais itens, no outro não vem pneu, nem Sniper só 1 exemplo
  25. Oi, eu gostaria de deixar os spawns fixos do meu airdrop por exemplo: quando ele cair ele dropar todos itens que estão na lista, porém sempre em quantidades randomicas, ele esta dropando apenas 2 itens por caida 2/3 não consegui retirar isso ! spawnLocations = { {1453.4388427734,1366.4683837891,11.410042762756}, {1557.2806396484,-2544.9809570313,14.210131645203}, {-1326.8874511719,-107.98781585693,14.809633255005}, {155.93667602539,2488.990234375,17.181993484497}, {1260.1999511719,-2029.9000244141,59.799999237061}, {-218.19999694824,-215.69999694824,1.7999999523163}, {1287.5,250.89999389648,19.799999237061}, {2343.8000488281,-30.10000038147,26.700000762939}, {2782.8000488281,1282.4000244141,11.10000038147}, {2496.3000488281,2509.8000488281,22.200000762939}, {-1495.5,2669.6000976563,56.099998474121}, {-2122.6000976563,-129.10000610352,35.700000762939}, {-2421.8000488281,-608,132.89999389648}, {683.29998779297,-530.70001220703,16.5}, } lootItems = { {"M9 SD",50}, } function math.percentChance(percent,repeatTime) local hits = 0 for i = 1,repeatTime do local number = math.random(1,1000)/10 if number <= percent then hits = hits+1 end end return hits end respawnAirdropTimer = false function spawnAirdrop(player) if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup("Admin"))then return end if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isTimer(respawnAirdropTimer)then killTimer(respawnAirdropTimer) end respawnAirdropTimer = setTimer(spawnAirdrop,3600000,1) outputChatBox("#FFF000[SUPPLY]: #FF0000A CAIXA COM SUPRIMENTOS [BÁSICOS] FOI LARGADA!", getRootElement(), 255,255,255, true) local item_id = math.random(1,#spawnLocations) xq,yq,zq = spawnLocations[item_id][1],spawnLocations[item_id][2],spawnLocations[item_id][3]-0.16 xpsq,ypsq,zpsq = xq,yq,zq+7,3 xpvq,ypvq,zpvq = xq-48,yq-16,zq+37 xsbq,ysbq,zsbq = xq-48,yq-16,zq+41 xssq,yssq,zssq = xq-528,yq+2,zq+141 xsdq,ysdq,zsdq = xq+528,yq+2,zq+141 blipq = createBlip(xq,yq,zq,5) aviaNavaq = createObject(1683,xssq,yssq,zssq,0,0,0) moveObject(aviaNavaq,8000,xsbq,ysbq,zsbq) setTimer(function() parasProdq = createObject(2903,xpvq,ypvq,zpvq,0,0,0) moveObject(aviaNavaq,8000,xsdq,ysdq,zsdq) moveObject(parasProdq,11000,xpsq,ypsq,zpsq) triggerClientEvent("playAirdropSound",getRootElement()) end,8000,1) setTimer(destroyElement,16100,1,aviaNavaq) setTimer(function() destroyElement(parasProdq) productq = createObject(2669,xq,yq,zq,0,0,0) setElementFrozen(productq,true) avialColq = createColSphere(xq,yq,zq,2) attachElements(avialColq,productq,0,0,0) setElementData(avialColq,"parent",object) setElementData(avialColq,"hospitalbox",true) setElementData(avialColq,"MAX_Slots",0) setElementData(avialColq "M4", 50) setElementData(avialColq "M4 Mag",2) setElementData(avialColq "CZ 550", 50) setElementData(avialColq "CZ 550 Mag", 50) setElementData(avialColq "AK-47", 50) setElementData(avialColq "AK Mag", 50) setElementData(avialColq "Milk", 50) for i,item in pairs(lootItems)do local value = math.percentChance(item[2],1) if value >= 1 then setElementData(avialColq,item[1],value) -- local ammoData,weapID = getWeaponAmmoType(item[1],true) if ammoData then local minBullets,maxBullets = math.floor(getAmmoPlus(ammoData)/3),getAmmoPlus(ammoData)*2 local ammoQuantity = math.random(minBullets,maxBullets) setElementData(avialColq,ammoData,ammoQuantity) end end end end,23100,1) end spawnAirdrop() addCommandHandler("spawnairdrop",spawnAirdrop) addCommandHandler("removeairdrop",function(player) if not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup("Admin"))then return end if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isTimer(respawnAirdropTimer)then killTimer(respawnAirdropTimer) end end)
×
×
  • Create New...