Jump to content

n3wage

Members
  • Posts

    290
  • Joined

Everything posted by n3wage

  1. Como as funções dx* não retornam um elemento você tem que fazer um calculo "manual" para saber onde o jogador clicou e se o mouse está "dentro" do retângulo. Quando um jogador clica com o mouse o evento onClientClick é chamado, logo só temos que checar a posição do mouse, para isso existe a função (útil) isMouseInPosition (Lembre-se que ela é uma função 'util', então você precisa incluir o código fonte dela no seu script). Exemplo: -- Criar retangulo, note as posições (100, 100, 200, 200) addEventHandler ( "onClientRender", root, function () dxDrawRectangle ( 100, 100, 200, 200, tocolor ( 255, 255, 255 ), false ) end ) -- Incluir codigo fonte da função isMouseInPosition 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 ( ) --[[ Checar a posição do mouse com a função isMouseInPosition os parametros da função isMouseInPosition são as posições do retangulo no caso 100, 100, 200, 200 --]] if isMouseInPosition ( 100, 100, 200, 200 ) then outputChatBox ( "você clicou dentro do retangulo" ) else outputChatBox ( "você clicou fora do retangulo" ) end end ) Não testei o código mas parece ser funcional, Espero que tenhas entendido
  2. Você só precisa ordenar a tabela que contem os jogadores, já que você definiu ela como playersTable na linha 53 basta usar: table.sort ( playersTable, function ( a, b ) return getElementData ( a, "alivetime" ) > getElementData ( b, "alivetime" ) end ) ... logo abaixo, você pode ver mais sobre a função table.sort aqui.
  3. O fórum não precisa de outro moderador, considerando que não tem muita coisa a se fazer nessa area (deletar os posts com brigas ~roots~, mover topicos criados em seções erradas etc) e que ela é 'um pouco' parada as vezes. Sabiam que existe uma opção para não ver os posts que determinado usuário posta ?, Isso resolveria todas as brigas Sobre o Cadu, Acho sim que ele deveria ser retirado da moderação (não fala português fluente e é moderador da seção portuguesa, hã?), Mas como eu não posso fazer isso...
  4. Perfeita a resposta do Stanley, explicou os erros e ainda ensinou a arrumar, as pessoas tem que aprender que "ajudar" ~= "dar codigo pronto" Considerando que a maioria só copia os códigos e pronto, resolvido (nem ao menos veem oque foi alterado) essa é a melhor coisa a se fazer, Triste saber que tem dono de servidor 'lotado' que nem sabe 'programar' ah se eu tivesse alguem que me ajudasse assim quando eu estava aprendendo rs obs: sei que foi 'meio' 'offtopic' isso mas ok, como tocaram no assunto resolvi responder tbm. obs²: antes que se ofendam, as afirmações feitas por mim neste tópico não se referem a nenhum dos que aqui postaram.
  5. A função getWeaponAmmo retorna a munição de armas criadas com createWeapon, Para conseguir a munição da arma do jogador você deve usar getPedTotalAmmo/getPedAmmoInClip. obs: killPed é serverside apenas, você não poderá usar essa função no lado do cliente.
  6. Seu código não vai funcionar pois a função table.size não está definida, o certo seria usar table.maxn ou #MySpawns local MySpawns = { { 0, 0, 1 }, { 0, 0, 4 }, { 0, 0, 5 }, } addEventHandler ( "onPlayerJoin", root, function ( ) local number = math.random ( #MySpawns ) local x, y, z = MySpawns[number][1], MySpawns[number][2], MySpawns[number][3] spawnPlayer ( source, x, y, z, math.random ( 0,360 ), 12, 0, 0 ) setCameraTarget ( source, source ) fadeCamera ( source, true ) end )
  7. Use um script que spawne ele²: x, y, z = 0, 0, 5 addEventHandler ( "onPlayerJoin", root, function ( ) spawnPlayer ( source, x, y, z ) setCameraTarget ( source, source ) fadeCamera ( source, true ) end )
  8. Este post? Se for você poderia ter postado lá em vez de criar outro tópico, mas enfim. No caso como você quer um painel basta criar a janela (guiCreateWindow) (você pode usar o guieditor para ser mais fácil) e usar edits para quando o jogador digitar a nova senha você alterá-la no lado do servidor usando setAccountPassword. Para as contas offline você pode usar um loop com getAccounts e checar o ultimo login da conta com timestamp. Basicamente a mesma explicação que o DNL deu, Não tem muito segredo nisso.
  9. Copie o código novamente.
  10. Quando você clica em um botão da 'segunda parte' ele executa a função do mesmo botão só que da 'primeira parte', é isso? Se for você precisa definir uma variavel global (algo como vendo_a_parte = 0) e ir alterando ela cada vez que a "página" do painel for alterada, e na parte de controlar os clicks do mouse você checa o valor da variavel, se corresponder ao da primeira parte você executa uma função, caso contrario outra.
  11. É Só você criar as dxs com ele (como o BeYourself explicou) e depois usar a opção Output, que irá gerar um codigo pronto para ser executado, Você pode pegar apenas as coordenadas desse codigo ou usar ele diretamente.
  12. Existem vários problemas no seu codigo, vou tentar listar todos. Você Usou funções que não existem (getPlayerSourceMoney, takePlayerSourceMoney etc) Você redefiniu a tabela comando na linha 23 Você não tem um sistema que 'mate' o timer quando o player sai do servidor (isso causa erros no /debugscript e problemas de desempenho) Você definiu variaveis que não foram usadas (como thePlayerhealth, isso não causa problemas mas enfim) Na linha 8 e na linha 30 você usou source (variavel que não foi definida) no segundo parâmetro de outputChatBox Aqui um código mais limpo e sem bugs: lastBuy = {} tempo = 20 -- tempo (em segundos) para poder comprar vida/colete novamente function buyhealth (thePlayer) if getPlayerMoney ( thePlayer ) >= 250 then if canBuy ( thePlayer, "vida" ) then outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) setElementHealth ( thePlayer, 569 ) takePlayerMoney ( thePlayer, 2500 ) else local _, tempo = canBuy ( thePlayer, "vida" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Vida Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("A Vida Custa 250$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "vida", buyhealth ) function buyarmor (thePlayer) if getPlayerMoney ( thePlayer ) >= 500 then if canBuy ( thePlayer, "colete" ) then outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) setPedArmor ( thePlayer, 100 ) takePlayerMoney ( thePlayer, 3500 ) else local _, tempo = canBuy ( thePlayer, "colete" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Colete Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("O Colete Custa 3500$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "colete", buyarmor ) function canBuy ( player, what ) local toreturn if lastBuy[player] and lastBuy[player][what] then toreturn = ( lastBuy[player][what] - getTickCount() ) /1000 > 0 and math.floor ( ( lastBuy[player][what] - getTickCount() ) /1000 ) or true toreturn = toreturn else toreturn = true if not lastBuy[player] then lastBuy[player] = {} end lastBuy[player][what] = getTickCount() + ( tempo *1000 ) end return toreturn == true and toreturn or false, toreturn end addEventHandler ( "onPlayerQuit", root, function ( ) if lastBuy[source] then lastBuy[source] = nil end end ) Detalhe que eu criei uma função chamada canBuy, Ela serve para determinar se o player pode ou não comprar algo (e se não pode ela também retorna o tempo 'faltando' até ele poder comprar), Sem o uso de timers
  13. O httpserver deve estar como 1 (0 = desativado / 1 = ativado)
  14. Qual erro aparece ? as vezes algum arquivo corrompeu ou algo assim. tem certeza que sua estrutura (no webserver) se parece com essa (unico exemplo que eu achei ) ?
  15. Você precisa de um resource que spawne o jogador quando ele entrar no servidor, existe o spawnmanager (que já vem nativamente) para isso.
  16. É possivel, se você souber programar... https://wiki.multitheftauto.com/ hã ????
  17. A funções text* não suportam códigos hex, você só pode mudar a cor da mensagem inteira (por exemplo, deixar ela toda branca, toda azul etc) alterando os parâmetros da função textCreateTextItem. Se você quiser usar codigos hex use a função dxDrawText.
  18. edite o resource admin linha 827 a 849 (server/admin_server.lua)
  19. Você pode editar o resource admin (se usar ele) ou utilizar o evento onBan e fazer algumas checagens com as funções abaixo: getBanSerial function getAccountFromSerial ( serial ) if serial then for _, v in ipairs ( getAccounts() ) do if getAccountSerial ( v ) == serial then return v, getAccountName ( v ) end end end return false end IsObjectInACLGroup removeBan obs: isso (↑) não vai cancelar o ban, mas vai remove-lo, acho que é suficiente
  20. É isso que a função downloadFile faz, Imagine que ela é como o 'downloader' padrão do MTA, só que você pode baixar algo apenas para um player especifico (claro que os outros não vão ver oque o player baixou) sem afetar os outros.
  21. Se usado 'diretamente' no lado do cliente vai carregar apenas para ele, Porem se usado com triggerClientEvent vai depender do primeiro e do terceiro parâmetro desta mesma função.
  22. killPed é server side apenas. -- for _, v in ipairs ( { "pro", "std", "poor" } ) do setWeaponProperty ( "sniper", v, "damage", 9999 ) end
  23. Supondo que você seja iniciante e que eu acho que ninguem irá dar um codigo pronto, você terá que aprender coisas mais avançadas na linguagem (como tabelas, variáveis etc), Todo esse conteúdo você pode encontrar aqui, aqui e aqui. Boa sorte
  24. Se você fez um sistema de evento (como vc mostrou no primeiro post) basta adicionar takeAllWeapons no codigo, assim: function evento ( thePlayer ) setElementDimension ( thePlayer, 3 ) takeAllWeapons ( thePlayer ) end addCommandHandler ( "evento", evento )
×
×
  • Create New...