Sign in to follow this  
Giovany Mito

ajuda sistema de level

Recommended Posts

Olá, 

Estou com problemas com um sistema de level.

Ele esta funcionando normalmente, a cada uma hora ele sobe um level, mais quando reinicio o servidor os level reseta parece volta do 0

Olhei o DB e la esta o level, parece q a resource nao puxa o level de volta quando reinicia o servidor

Server

function upLevel()
	local players = getElementsByType("player")
	local get_players = {}
	for i = 1, #players do
		local player = players[i]
		local player_acc = getPlayerAccount(player)
		if player and player_acc and not isGuestAccount(player_acc) then
			local minutes = getElementData(player, "minutes")
			if not minutes then
				setElementData(player, "minutes", 1)
			else
				setElementData(player, "minutes", minutes + 1)
			end
			if getElementData(player, "minutes") > 59 then
				local level = getElementData(player, "Level") or 0
				local bonus = math.random(25, 950)
				local interest = math.random(25, 150)
				local value = bonus - interest
				setElementData(player, "minutes", 0)
				setElementData(player, "Level", level + 1)
			    --outputChatBox("#FFFFFF[ #FAAC58FW-LEVEL #FFFFFF]", player, 255, 255, 255, true)  
			--	outputChatBox ("# FAAC58 ** # FFFFFFVocê ganhou Mais Um # FAAC58 nível", jogador ,255,255,255,verdade)     
			--	outputChatBox ("# FAAC58 ** # FFFFFFPagamento: R $ # 00FF00"..valor, player ,255,255,255,true)
				outputChatBox ("#FFFFFF [ #FAAC58FW-LEVEL #FFFFFF]", player, 255, 255, 255, true )
				outputChatBox ("#FAAC58 ** #FFFFFFVocê ganhou Mais um #FAAC58Nivel", player, 255, 255, 255, true )
				outputChatBox ("#FAAC58 ** #FFFFFFPagamento: R$ #00FF00"..value, player, 255, 255, 255, true )
				givePlayerMoney(player, value)
				table.insert(get_players, player)
			end
		end
	end
	triggerClientEvent(get_players, "blipuplevel", resourceRoot)
end
setTimer(upLevel, 60000, 0)

function setLevelLogin ()
	local account = getPlayerAccount(source)
	if ( account ) then
		local Level = (getAccountData(account,"Level") or 0)
		local minutes = (getAccountData(account,"minutes") or 0)
		setElementData(source,"Level",Level)
		setElementData(source,"minutes",minutes)
	end
end
addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin)

function setLevelJoin ()
	setElementData(source,"Level",0)
	setElementData(source,"minutes",0)
end
addEventHandler("onPlayerJoin",getRootElement(),setLevelJoin)

function setLevelQuit ()
	local account = getPlayerAccount(source)
	if ( account ) then
		local minutes = (getElementData(source,"minutes") or 0)
		local Level = (getElementData(source,"Level") or 0)
		setAccountData(account,"minutes",minutes)
		setAccountData(account,"Level",Level)
	end
end
addEventHandler("onPlayerQuit",getRootElement(),setLevelQuit)

 

Client

local sx,sy = guiGetScreenSize() 
local px,py = 1366,768
local x,y =  (sx/px),(sy/py)

function drawLevel ()
	local levelProgress = (getElementData(localPlayer,"minutes") or 0)
	dxDrawRectangle(x*803, y*743, x*160/58*levelProgress, y*19, tocolor(0, 0, 0, 130), false)
	dxDrawRectangle(x*800, y*740, x*170, y*25, tocolor(0, 0, 0, 120), false)
	dxDrawText("LEVEL: "..(getElementData(localPlayer,"Level") or 0), x*854, y*746, x*10, y*10, tocolor(255, 255, 255, 255), x*0.9, "default", "left", "top", false, false, false, false, false)
end
addEventHandler("onClientRender",getRootElement(),drawLevel)

						
function blipuplevel()
	local sound = playSound("som/blip.mp3")
	setSoundVolume(sound, 1.0)
end
addEvent("blipuplevel", true)
addEventHandler("blipuplevel", resourceRoot, blipuplevel)

 

Share this post


Link to post

Quando eu paro a resource e dou start novamente volta o level normal... Só me ocorre esse problema ao reiniciar o servidor

Share this post


Link to post

Hm, então esse código aí está incompleto porque o onResourceStop tá faltando.

Quando desliga o servidor vai forçar o desligamento de todos resources, ou seja, o "onResourceStop" deveria ter funcionado do mesmo jeito. Você está desligando o console com ctrl + c ?

Share this post


Link to post

Desligo na hospedagem, TcAdmin

On 13/07/2019 at 17:09, DNL291 said:

Hm, então esse código aí está incompleto porque o onResourceStop tá faltando.

Quando desliga o servidor vai forçar o desligamento de todos resources, ou seja, o "onResourceStop" deveria ter funcionado do mesmo jeito. Você está desligando o console com ctrl + c ?

 

Share this post


Link to post
Posted (edited)

Não lembro, mas que eu me lembe setar no "setElementData" ele só salva enquanto o player esta logado, ao reiniciar perde a data do element

OBS:Não tenho certeza

 

edit: Voce está setando os dados no element na linha 19 e 20, e quando o player loga voce ta tentando puxar o AccountData do player na linha 39 e 40

Edited by carlos eduardo

Share this post


Link to post
Posted (edited)

Troque isto:

function setLevelLogin ()
	local account = getPlayerAccount(source)
	if ( account ) then
		local Level = (getAccountData(account,"Level") or 0)
		local minutes = (getAccountData(account,"minutes") or 0)
		setElementData(source,"Level",Level)
		setElementData(source,"minutes",minutes)
	end
end
addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin)

Por isto:

function setLevelLogin (_, account)
	local Level = (getAccountData(account,"Level") or 0)
	local minutes = (getAccountData(account,"minutes") or 0)
	setElementData(source,"Level",Level)
	setElementData(source,"minutes",minutes)
end
addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin)

O primeiro argumento da sua função getAccountData está incorreto. O evento onPlayerLogin já fornece a conta do jogador, não é necessário usar getPlayerAccount. Aliás, esta função não retorna a conta, e sim o objeto dela, no caso o jogador responsável. Se você quer obter a conta do jogador, use getAccount.

Edited by asrzkj
  • Thanks 1

Share this post


Link to post
1 hour ago, carlos eduardo said:

Não lembro, mas que eu me lembe setar no "setElementData" ele só salva enquanto o player esta logado, ao reiniciar perde a data do element

OBS:Não tenho certeza

 

edit: Voce está setando os dados no element na linha 19 e 20, e quando o player loga voce ta tentando puxar o AccountData do player na linha 39 e 40

Eu reinicio o a resource volta normalmente, eu saiu do servidor e entro de novo e volta normalmente, o problema eu eu desligar o servidor e liga de novo

1 hour ago, asrzkj said:

Troque isto:


function setLevelLogin ()
	local account = getPlayerAccount(source)
	if ( account ) then
		local Level = (getAccountData(account,"Level") or 0)
		local minutes = (getAccountData(account,"minutes") or 0)
		setElementData(source,"Level",Level)
		setElementData(source,"minutes",minutes)
	end
end
addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin)

Por isto:


function setLevelLogin (_, account)
	local Level = (getAccountData(account,"Level") or 0)
	local minutes = (getAccountData(account,"minutes") or 0)
	setElementData(source,"Level",Level)
	setElementData(source,"minutes",minutes)
end
addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin)

O primeiro argumento da sua função getAccountData está incorreto. O evento onPlayerLogin já fornece a conta do jogador, não é necessário usar getPlayerAccount. Aliás, esta função não retorna a conta, e sim o objeto dela, no caso o jogador responsável. Se você quer obter a conta do jogador, use getAccount.

[2019-07-17 18:17:29] SCRIPT ERROR: [FW]Score/Arc_s.Lua:36: '(' expected near '�'
[2019-07-17 18:17:29] ERROR: Loading script failed: [FW]Score/Arc_s.Lua:36: '(' expected near '�'

 

no caso essa linha   

function setLevelLogin  (_, account)

5 minutes ago, giovanymito said:

Eu reinicio o a resource volta normalmente, eu saiu do servidor e entro de novo e volta normalmente, o problema eu eu desligar o servidor e liga de novo


[2019-07-17 18:17:29] SCRIPT ERROR: [FW]Score/Arc_s.Lua:36: '(' expected near '�'

[2019-07-17 18:17:29] ERROR: Loading script failed: [FW]Score/Arc_s.Lua:36: '(' expected near '�'

 

no caso essa linha   

function setLevelLogin  (_, account)

Escrevi novamente a linha agora deu Certo :D  Obrigado 

  • Like 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.