-
Posts
37 -
Joined
-
Last visited
Everything posted by Arantes
-
Utilize o botão <> (code) para que possam te ajudar.
-
Os dados retornaram certinho pelo outputChatBox : funcao checknick: leu elementdata: Arantes de Sem_Registro funcao haveothernick recebeu: Arantes de player: Sem_Registro for leu o checknick: Arantes de Sem_Registro Mas por motivo desconhecido , consigo registar o mesmo Nick/Nome em outras contas. Esse sistema de nick é para deixar o nick do jogador fixo quando o mesmo definir no painel , sendo assim quando o jogador entrar , verificar se o nick dele e igual o do elementData playername , se nao for ele seta oque esta no playername e se nao encontrar deixa como Sem_Registro.
-
Estou utilizando a seguinte maneira para salvar os dados : -- Salvar o checknick quando sair. local checkNick = getElementData ( source, "checknick" ) or "Error Save Login" setAccountData ( conta, "checknick", checkNick ) -- Carregar o checknick quando o jogador entrar e quando a resource iniciar. local check = getAccountData ( conta, "checknick" ) or "Error Load Login" setElementData ( source, "checknick", check )
-
Muito obrigado pela ajuda e explicação , mas não consigo entender porque ainda consigo register o mesmo nome.
-
Gostaria de verificar se nome que o jogador escrever no painel , é igual a outro nome definido no elementData de outro jogador. No client-side esta assim : local Nick = guiGetText(NickBoxText) setElementData(localPlayer, "checknick", Nick) local check = getElementData(localPlayer, "checknick") if check then triggerServerEvent("checkNick", getLocalPlayer()) end function successNick() CloseDxPanelCreate () triggerServerEvent ("changename", getLocalPlayer()) end addEvent("successNick", true) addEventHandler("successNick", getRootElement(), successNick) E no server-side assim : function haveOtherNick (myName) for i, player in ipairs (getElementsByType("player")) do if (getElementData (player, "checknick") and getElementData (player, "checknick") == myName) then return true end end return false end function checkNick() local nome = getElementData (source, "checknick") if (nome) then if (haveOtherNick(nome)) then outputChatBox ("Já tem alguém com esse nome online.") else triggerClientEvent("successNick", getRootElement()) setElementData(source, "playername", nome) end end end addEvent("checkNick", true) addEventHandler("checkNick", getRootElement(), checkNick) O erro e que sempre retorna o outputChatBox, mesmo colocando outro nome diferente. Tive ajuda de alguns membros do forum , mas não consegui solucionar .
-
Muito obrigado , funcionou certinho ! So adicionei para o jogador perder o dinheiro quando morrer.?
-
Sim existe a possibilidade , você pode usar este código https://community.multitheftauto.com/index.php?p=resources&s=details&id=16502 como base.
-
Desculpe , não informei a linha kk . Esta dando erro na linha 17 , no onPickupHit ?.
-
Gostaria de fazer um pickup quando o jogador morrer, ao passar nele , outro jogador recebe o dinheiro do que morreu. function dropPickup() local playerMoney = getPlayerMoney(source) local x,y,z = getElementPosition(source) moneyPickup = createPickup(x,y,z,3,1212) setElementData(moneyPickup, "moneydrop", playerMoney) takePlayerMoney(source, playerMoney) end addEventHandler("onPlayerWasted", root, dropPickup) function onPickup(player) local moneyDrop = getElementData(source, "moneydrop") givePlayerMoney(player,moneyDrop) destroyElement(source) end addEventHandler("onPickupHit", moneyPickup, onPickup) Estou tendo o seguinte erro : Bad argument 'addEventHandler' Expected element at argument 2, got nil.
-
Sim sim é verdade, mas o código define o nick do jogador fixo, ai por isso estou salvando em elementData. Obrigado pela ajuda , mas a verificação esta passando direto , consigo salvar o mesmo nome que alguém tenha em seu playername.
-
Entendi muito obrigado ?, mas seria possivel fazer algo assim ? local nome = getElementData (localPlayer, "playername") if guiGetText(NickBoxText) == (haveOtherNick(nome)) then outputChatBox ("Já tem alguém com esse nome online.") return end -- Onde esta setando o nome. SetNickBoxText = guiGetText(NickBoxText) setElementData ( localPlayer, "playername", ""..SetNickBoxText.."" )
-
Gostaria de fazer uma verificação que, quando o jogador colocasse seu nome no painel , verificava se ja existe e retornava com um aviso . local nick = getElementData ( localPlayer , "playername" ) if (nick == false) then -- REGISTRAR else outputChatBox("Nome existente !") end
-
Muito obrigado ! ?
-
Gostaria de checar se há algum jogar no marker, sendo assim , avisando com um outputChatBox . local marker = createMarker (2493.1730957031, -910.67498779297, 125.1, "cylinder", 1.0, 255, 69, 0, 60 ) setTimer (function (theSource) if isElementWithinMarker(theSource, marker) then outputChatBox("Alguém esta no Marker!") end end, 500, 0, source) Mas estou tendo o seguinte erro : Bad argument 'isElementWithinMarker' [ Expected element at argument 1, got nill ] .
-
Tente isso , usando isObjectInACLGroup . function MensagemTwitter(source, cmd, ...) local MessagemT = table.concat ( { ... }, " " ) local name = getPlayerName(source); for _,v in ipairs(getElementsByType("player")) do local account = getAccountName(getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. account, aclGetGroup ( "Console" ) ) then outputChatBox("#00BFFF[ Twitter ] #FFFFFF Console - "..name.." #FFFFFF: #00BFFF"..MessagemT,v, 255, 255, 255, true) else if isObjectInACLGroup ( "user." .. account, aclGetGroup ( "Admin" ) ) then outputChatBox("#00BFFF[ Twitter ] #FFFFFF Administrador - "..name.." #FFFFFF: #00BFFF"..MessagemT,v, 255, 255, 255, true) end end end end addCommandHandler("Twitter", MensagemTwitter) Depois é so repetir , o código adicionado para respectivos chats .
-
Você vai precisar usar o isTransferBoxActive para checar se o jogar esta baixando algo do seu servidor . Para esse script ser o primeiro a ser baixado antes dos outros , basta colocar no meta a seguinte linha <download_priority_group> 1 </download_priority_group> , como dito acima. Já para o player "não poder jogar" , basta adicionar um dxDrawImage que ocupe a tela inteira , impossibilitando-o de jogar.
-
Você pode utilizar o mesmo outputChatBox , sem nada escrito dentro das aspas " " , apenas com um espaço para por uma linha vazia em seu chat. function MensagemRP(source, cmd, ...) local MessagemFRP = table.concat ( { ... }, " " ); local name = getPlayerName(source); for _,v in ipairs(getElementsByType("player")) do outputChatBox(" #FFD700[RJRP] 「ғᴏʀᴀ ᴅᴏ ʀᴘ」 #ffffff"..name..": #FFD700"..MessagemFRP,v, 255, 255, 255, true) outputChatBox(" ",v, 255, 255, 255, true) end end addCommandHandler("forarp", MensagemRP)
-
Funcionou ! Obrigado a todos , removi a linha de verificação e esta perfeito. Novamente agradeço a todos pela ajuda !?
-
Muito obrigado por querer ajudar ? , deu esse erro aqui "attempt to compare number with string" na linha 13 ali do client-side .
-
Obrigado a todos ! @DNL291Muito obrigado pela ajuda e orientação , mas não entendi bem o que disse para fazer . Fiz da seguinte forma , mas ele não esta conseguindo obter o valor vehicleVIP , no dx esta me dando nil . No server-side retirei o evento chamando o vehicleTempo. E no client-side fiz assim: panel = false function vehicleShow() triggerServerEvent("vehicleTime",getLocalPlayer()) end addEventHandler("onClientRender",getRootElement(),vehicleShow) function dxPanel (vehicleTime) dxDrawText("Seu Carro VIP expira em "..(tostring(vehicleTime) or 'BUGGED').."", screenW * 0.3309, screenH * 0.7227, screenW * 0.4191, screenH * 0.7461, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, true, true, false) dxDrawImage(screenW * 0.2859, screenH * 0.1546, screenW * 0.4552, screenH * 0.6074, "image/wallpaper.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end function abrirPanel() if panel == false then showCursor(true) panel = true addEventHandler("onClientRender", getRootElement(), dxPanel) addEventHandler("onClientRender", getRootElement(), vehicleShow) else showCursor(false) panel = false removeEventHandler("onClientRender", getRootElement(), dxPanel) removeEventHandler("onClientRender", getRootElement(), vehicleShow) end end addEvent("abrirPanel", true) addEventHandler("abrirPanel", getRootElement(), abrirPanel) function fecharPanel() if panel == false then removeEventHandler("onClientRender", getRootElement(), dxPanel) removeEventHandler("onClientRender", getRootElement(), vehicleShow) showCursor(false) panel = false end end bindKey("o", "down", fecharPanel) addEvent("abrirPanel", true) addEventHandler("abrirPanel", getRootElement(), fecharPanel)
-
O que enviei , é a parte que adicionei ao meu código procurando(estudando) aqui pelo forum . Basicamente estou colocando um texto no painel dx , onde mostra quanto tempo falta para acabar o carro vip , buscando na conta do jogador o tempo e mostrando visualmente ao painel. O código funcionou certinho , buscou o tempo do jogador , converteu em dias e horas e mostrou no painel , mas o texto fica piscando quando aumento o FPS Limit do server , seria um incomodo ao utilizar este painel.
-
Acabei de descobrir que se aumentar o FPS Limit do server mais que 40 o texto não para de piscar , mas seu manter abaixo de 40 ele fica estático. Qual seria o problema?
-
No server-side esta assim : function vehicleTime() local account = getPlayerAccount(source) if not isGuestAccount(account) then local vehicleState,vehicleTime = false,"NOT AVAILABLE" if getAccountData(account,"vehicleEnabled") == 1 then local vehicleTime = tonumber(getAccountData(account,"vehicleVIP")) if vehicleTime then local currentTime = getRealTime() if vehicleTime > currentTime.timestamp then local vehicleState,vehicleTime = true,convertMS(vehicleTime-currentTime.timestamp) triggerClientEvent(source,"vehicleTempo",source,vehicleTime ) end end end end end addEvent("vehicleTime",true) addEventHandler("vehicleTime",getRootElement(),vehicleTime) E no client-side assim : panel = false function vehicleTempo(vehicleTime) dxDrawText("Seu Carro VIP expira em "..(tostring(vehicleTime) or 'BUGGED').."", screenW * 0.3309, screenH * 0.7227, screenW * 0.4191, screenH * 0.7461, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, true, true, false) end addEvent("vehicleTempo",true) addEventHandler("vehicleTempo",getRootElement(),vehicleTempo) function vehicleShow() triggerServerEvent("vehicleTime",getLocalPlayer()) end addEventHandler("vehicleShow",getRootElement(),vehicleShow) function dxPanel () dxDrawImage(screenW * 0.2859, screenH * 0.1546, screenW * 0.4552, screenH * 0.6074, "image/wallpaper.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end function abrirPanel() if panel == false then if not fontScale then fontScale = screenW/40 end showCursor(true) panel = true addEventHandler("onClientRender", getRootElement(), dxPanel) addEventHandler("onClientRender", getRootElement(), vehicleShow) else showCursor(false) panel = false removeEventHandler("onClientRender", getRootElement(), dxPanel) removeEventHandler("onClientRender", getRootElement(), vehicleShow) end end addEvent("abrirPanel", true) addEventHandler("abrirPanel", getRootElement(), abrirPanel) function fecharPanel() if panel == false then removeEventHandler("onClientRender", getRootElement(), dxPanel) removeEventHandler("onClientRender", getRootElement(), vehicleShow) showCursor(false) panel = false end end bindKey("o", "down", fecharPanel) addEvent("abrirPanel", true) addEventHandler("abrirPanel", getRootElement(), fecharPanel)
-
Estou usando onClientRender para aparecer um dxDrawText em meu painel , pois ele mostra um valor do server-side. Com isto , ao abrir o painel , esse texto não para de piscar(trazendo o valor varias vezes), mas se eu usar addCommandHandler ele aparece apenas um vez. Gostaria de manter o texto em meu painel , apenas removendo ele ao utilizar removeEventHandler para fechar o painel.