Ir para conteúdo

Removendo Addon no Login


Gidedin

Posts Recomendados

Olá pessoal.

 

Após muito procurar e não encontrar, tive que vasculhar no código fonte de compilação do Ot Server em como encontrar algo para remoção dos Addons dos jogadores. Realmente, não é algo facil, mas vou postar aqui o que eu consegui fazer.

 

Quem sabe, alguém conhece alguma forma melhor e possa passar para mim também! :)

 

Bem, vamos lá?

 

Primeiramente, o script vai funcionar no login do jogador. Resumidamente, o script irá verificar se o jogador possui um StorageValue e, caso não possua, vai deletar os addons de todos os outfits possíveis e atribuir um valor para o StorageValue.

 

Para criar este script, você primeiro deverá criar o arquivo .lua de script. Aqui, irei chama-lo de 'removeraddon.lua'. Geralmente, ele deve ser salvo em 'data\creaturescripts\scripts'.

 

-- Funcao para remover Addon dos Jogadores no Login
function onLogin(cid)

-- Código do Storage que ficara armazenada a informação. Altere para uma numeração de acordo com sua necessidade.
local storageNumber = 3004

-- Links para os outfits dos jogadores. Caso você tenha alterado ou criado novos LookTypes, os mesmos deverão ser adicionados nesta lista.
maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335, 367, 430, 432, 463, 465, 472}
femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336, 366, 431, 433, 464, 466, 471}

-- Verificamos se o valor do Storage do jogador (Aquele informado acima) é diferente de 1, se for, significa que temos que exluir os Addons
if getPlayerStorageValue(cid,storageNumber) ~= 1 then

	-- Este 'for' irá percorrer todos os registros dos outfits masculinos e remover o addon 1 e o addon 2.
	for _, uid in pairs(maleOutfits) do
		doPlayerRemoveOutfit(cid, uid, 1)
		doPlayerRemoveOutfit(cid, uid, 2)
	end

	-- Ja este, irá remover dos outfits femininos.
	for _, uid in pairs(femaleOutfits) do
		doPlayerRemoveOutfit(cid, uid, 1)
		doPlayerRemoveOutfit(cid, uid, 2)
	end

	-- Ao final, vamos definir o StorageValue como 1 para que esse processo não seja executado mais de uma vez.
	setPlayerStorageValue(cid, storageNumber, 1)

end

-- Um return true declara que a função terminou. Não é necessário mas evita callbacks para a função.
return true

end

 

Agora que o arquivo de script foi criado, basta criar uma linha de evento no creaturescripts.xml, de acordo com o que segue:

 

<event type="login" name="RemoverAddon" event="script" value="removeraddon.lua"/>

 

Lembre-se de alterar o value caso você tenha criado o arquivo com outro nome.

 

Não é necessário atribuir a função ao 'login.lua', pois funções de Login são executadas automaticamente.

 

Espero que eu tenha ajudado algumas pessoas por ai que precisam executar este tipo de função. Ela será bem útil quando um servidor precisar ser resetado ou mesmo, quando a forma de obtenção dos Addons mudar.

 

Um abraço a todos.

 

P.S: Desculpa pela indentação do script. Fica difícil indentar ele pela ferramenta aqui do fórum.

Editado por Gidedin
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...