Jump to content

Desativando recursos pra jogadores


Recommended Posts

  • Other Languages Moderators

Sendo mais claro, por ser uma função client-side, você pode simplesmente determinar qual client vai executar ela em vez de anexar a função no onClientResourceStart.

Daria pra você fazer server-side uma função com onPlayerLogin, se a conta do jogador que logou tiver tal data, faz um triggerClientEvent pra ativar o veículo pra ele. Isso iria ativar somente no cliente desse determinado jogador que logou. Os demais jogadores continuariam vendo o veículo original.

Edited by Lord Henry
Link to comment
3 hours ago, Lord Henry said:

Sendo mais claro, por ser uma função client-side, você pode simplesmente determinar qual client vai executar ela em vez de anexar a função no onClientResourceStart.

Daria pra você fazer server-side uma função com onPlayerLogin, se a conta do jogador que logou tiver tal data, faz um triggerClientEvent pra ativar o veículo pra ele. Isso iria ativar somente no cliente desse determinado jogador que logou. Os demais jogadores continuariam vendo o veículo original.

Vou tentar fazer, eu fiz mas o usuário tinha q desativar sempre q entrar.

Link to comment
On 21/07/2019 at 18:47, Lord Henry said:

Por isso vc faz com accountData em vez de elementData. Pois dai vc salva os dados entre as sessões de jogo.

Salve lord, me da um help. 

Eu to tentando fazer isso, atualmente eu fiz na client pra quando o cara clicar num botão executar uma função que desativa/ativa o carro.

E fiz também na client um triggerServerEvent que seta a AccountDate no cara pra identificar quando ele relogar, mas a questão é q eu queria fazer nessa função da client pra um getAccountData pra executar uma certa função, se ele tivesse por exemplo 

getAccountData(account, "Carro1") como true por exemplo, quando ele clicasse no menu ia dar um erro q já esta ativado o carro, assim também quando eu executasse a função no client-side ele ia identificar e setar de acordo com o cara pq se não no server-side eu ia precisar fazer duas funções tipo:

function CarroDesativado()

function CarroAtivado()

Uma pra cada accountDate q ele tiver e eu tenho mts carros ia ser um código gigante, se funcionasse accountDate na client eu ia fazer só

 

function Carro()

getAccountData(account, "Carro") == "Ativado"

===CODE DE ATIVAR O CARRO=

else

=== code de desativar o carro ===
end

em vez de fazer uma função pra ativar e outra pra desativar.

 

Qual a melhor solução nesse caso.

OFF: Aliais parabéns pelo mod!

Edited by juaosilv
Link to comment
  • Other Languages Moderators

Exemplo maroto pra vc:

server-side:

function loadCarMod (prevAcc, currAcc)
	if (getAccountData (currAcc, "vehMod.490")) then -- Exemplo de nome de data, no caso se o veículo 490 estiver salvo como modificado na conta, então:
		triggerClientEvent (source, "enableVehMod.490", source, true) -- Ativa o evento no cliente do jogador que logou. (não afeta outros jogadores) e também envia o valor true como primeiro parâmetro de função. 
	end
end
addEventHandler ("onPlayerLogin", root, loadCarMod)

function saveCarMod (status) -- Parâmetro de função que foi passado pelo triggerServerEvent lá no client-side.
	local acc = getPlayerAccount (client) -- client = Variável nativa que significa: localPlayer do client-side que ativou este evento.
	if (not isGuestAccount (acc)) then -- Se o jogador está logado, então: (a conta não é guest)
		setAccountData (acc, "vehMod.490", status) -- Salva a data do veículo como true ou como false na conta do jogador.
	end
end
addEvent ("saveVehMod.490", true)
addEventHandler ("saveVehMod.490", root, saveCarMod)

client-side:

local txd = engineLoadTXD ("fbiranch.txd")
local dff = engineLoadDFF ("fbiranch.dff", 490) -- 490 é o ID do veículo a ser modificado, no caso o FBI Rancher.

function startVehMod (state) -- state é o primeiro parâmetro de função, seu valor foi enviado pelo server-side no triggerClientEvent.
	if (state) then -- Se state for igual a true (ou qualquer valor que não seja false nem nil), então:
		engineImportTXD (txd, 490)
		engineReplaceModel (dff, 490) -- Em vez de colocar isso em uma função com evento "onClientResourceStart" pra ativar pra todo mundo, ativa somente pelo trigger do server-side no cliente específico.
	else -- Se state não for true, então:
		engineRestoreModel (490) -- Desativa a modificação no veículo, voltando para o modelo original.
	end
end
addEvent ("enableVehMod.490", true)
addEventHandler ("enableVehMod.490", root, startVehMod)

function vehManagement (cmd, parameter) -- Aqui eu vou fazer por comando no exemplo, mas vc pode fazer por painel.
	if (parameter) then -- Se parameter == true ou qualquer coisa que não seja false nem nil, então:
		outputChatBox ("Modificação do veículo 490 ativada.")
		startVehMod (parameter) -- Ativa o mod do veículo.
		triggerServerEvent ("saveVehMod.490", localPlayer, true) -- Manda o true para o server-side, que irá salvar o novo status do veículo na conta do jogador como ativado.
	else
		outputChatBox ("Modificação do veículo 490 desativada.")
		startVehMod (parameter) -- Desativa o mod do veículo.
		triggerServerEvent ("saveVehMod.490", localPlayer, false) -- Manda o false para o server-side, que irá salvar o status do veículo na conta do jogador como desativado.
	end
end
addCommandHandler ("veh490", vehManagement) -- Como funciona: /veh490 true ou então /veh490 false

Obs: Não testado, fiz de cabeça e serve apenas como exemplo.

Edit: Obrigado.

Edited by Lord Henry
Link to comment

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...