SO
action

Talk Action Troca de outifit

Por soltore, 29 de out. de 2015 em Scripts

resolvido
script
20
2.8k
soltoreS
29 de outubro de 2015 às 02:30

Galera seguinte meu TFS é 0.3.6 cliente 8.54

 

Gostaria da ajuda de vocês para uma TALKACTION que troca-se o outifit do meu char, mas que caso ele se mova o outifit volta-se ao normal...

 

 

ex:

 

ele fala: !Transform

 

- e seu outifit que antes era o CITIZEN muda para o de um arbusto

 

- mas caso o player se mova o outifit novo eh cancelado e ele volta ao normal..

 

obs: ao se transformar nao tem tempo para voltar ao normal somente deslogando, ou se movendo.

 

- caso ele gire no lugar o outifit nao mude ( ctrl + Setas)

 

 

obrigado aguardo um apoio e prometo meu REP+

AntharazA
29 de outubro de 2015 às 05:06
Melhor resposta

Desculpe a demora, achei que havia postado o script e só quando dei F5 para ver se você havia respondido que vi que não. Crie um arquivo chamado transform.lua no diretório data\talkactions\scripts com este conteúdo:

local outfit = {lookType = 399}


local combat = createCombatObject()
	setCombatParam(combat, COMBAT_PARAM_EFFECT, 42)
	setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
	local condition = createConditionObject(CONDITION_OUTFIT)
	setConditionParam(condition, CONDITION_PARAM_TICKS, 99999999999)
	addOutfitCondition(condition, outfit)
	setCombatCondition(combat, condition)

local combat2 = createCombatObject()
	setCombatParam(combat2, COMBAT_PARAM_DISPEL, CONDITION_OUTFIT)
	setCombatParam(combat2, COMBAT_PARAM_EFFECT, 42)
	setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, 0)

function ver(cid,pos)
	local onl = getOnlinePlayers()
	for i=1,#onl do
		if getPlayerByName(onl[i]) == cid then
			local npos = getCreaturePosition(cid)
			if pos.x == npos.x and pos.y == npos.y and pos.z == npos.z then
				addEvent(ver, 500, cid, npos)
			else
				doCombat(cid, combat2,numberToVariant(cid))
			end
		end
	end	
end

function onSay(cid, words, param)
	doCombat(cid, combat2,numberToVariant(cid))
	doCombat(cid, combat,numberToVariant(cid))
	addEvent(ver, 500, cid, getCreaturePosition(cid))
	return true
end

Em local outfit = {lookType = 399} no lugar de 399 você coloca o looktype que deseja que fique. Em setCombatParam(combat, COMBAT_PARAM_EFFECT, EFEITO_INICIAR) e em setCombatParam(combat2, COMBAT_PARAM_EFFECT, EFEITO_TERMINAR) no lugar de EFEITO_INICIAR e EFEITO_TERMINAR você coloca o combat effect que deseja que fique ao ativar a talkaction e ao voltar ao normal respectivamente. Caso não queira nenhum efeito, basta deletar estas linhas.

 

Coloque a linha XML abaixo no arquivo talkactions.xml da pasta data\talkactions antes de </talkactions>:

	<talkaction words="!transform" event="script" value="transform.lua"/>
========== EDIT ===========

 

Como conversamos em privado, para o seu servidor é um caso especial, então use o script abaixo:

local outfit = {lookType = 222 , lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0}
	
local function isOnline(cid)
	local onl = getOnlinePlayers()
	for i=1,#onl do
		if getPlayerByName(onl[i]) == cid then
			return true
		end	
	end
	return false
end

local function ver(cid,pos)
	if isOnline(cid) then
		local npos = getCreaturePosition(cid)
		if pos.x == npos.x and pos.y == npos.y and pos.z == npos.z then
			addEvent(ver, 500, cid, npos)
		else
			doSetCreatureOutfit(cid, outfit, 0)
		end
	end	
end

function onSay(cid, words, param)
	doSetCreatureOutfit(cid, outfit, -1)
	addEvent(ver, 500, cid, getCreaturePosition(cid))
	return true
end

No lugar de 222 você coloca o looktype que deseja para a magia.

Editado Outubro 29 por Antharaz

soltoreS
29 de outubro de 2015 às 06:02

ok amigo irei testar agora mesma e ja torno com a resposta obrigado.

 

 

#Edit

 

- bom logo ao iniciar o server deu o seguinte erro na Distro;;

[Waening - Event::loadScript] Event onSay not found <data/talkactions/scripts/transform.lua>

Editado Outubro 29 por soltore

AntharazA
29 de outubro de 2015 às 06:10

Coloque o script transform.lua na pasta data/talkactions/scripts/, verifique se digitou o nome corretamente...

 

eu não te passei o script todo, erro meu, editei o primeiro post...

Editado Outubro 29 por Antharaz

soltoreS
29 de outubro de 2015 às 06:14

Coloque o script transform.lua na pasta data/talkactions/scripts/, verifique se digitou o nome corretamente...

 

Verificado tudo esta corredo sera que no arquivo transform.lua nao deveria conter..

 

 

function onSay(cid, words, param)

por se tratar de uma talk ? ou nao ha necessidade..

AntharazA
29 de outubro de 2015 às 06:14

eu não te passei o script todo, erro meu, editei o primeiro post... basta substituir o anterior por este, mil perdões.

soltoreS
29 de outubro de 2015 às 06:15

eu não te passei o script todo, erro meu, editei o primeiro post... basta substituir o anterior por este, mil perdões.

 

magina vamos ver se vai funfar '---' ja edito aqui informando...

 

#Edit

 

- Perfeito exatamente oque eu queria, muito abrigado....

 

so uma duvida quando eu ando ele demora alguns segundos para voltar ao outifit original teria como fazer voltar instantaneamente ?

Editado Outubro 29 por soltore

AntharazA
29 de outubro de 2015 às 06:21

O tempo delay para verificar se saiu da posição está nessas duas linhas:

addEvent(ver, 1000, cid, getCreaturePosition(cid))

addEvent(ver, 1000, cid, npos)

O 1000 representa 1 segundo, basta diminuir este valor, se quiser a cada meio segundo coloque 500 e assim por diante.

soltoreS
29 de outubro de 2015 às 06:25

O tempo delay para verificar se saiu da posição está nessas duas linhas:

addEvent(ver, 1000, cid, getCreaturePosition(cid))

addEvent(ver, 1000, cid, npos)

O 1000 representa 1 segundo, basta diminuir este valor, se quiser a cada meio segundo coloque 500 e assim por diante.

 

eu deixei como 500, agora eu ando e ele nao volta a outifit ;/

 

outra coisa tbm q reparei anteriormente caso eu usa-se o comando 2x seguidas bugava e a outifit tbm nao retornava para a original

AntharazA
29 de outubro de 2015 às 06:32

Vamos lá, em relação a mudar para 500 e não voltar a outfit não aconteceu comigo, testei agora com 500, 700, 200 e 300 e em todos casos voltou ao normal, talvez seja problema no host. Em relação a usar 2 vezes a mesma talkaction eu resolvi acrescentando uma linha que remove a condição ao usar o comando. Editei o primeiro post com o código novo.

soltoreS
29 de outubro de 2015 às 06:36

Vamos lá, em relação a mudar para 500 e não voltar a outfit não aconteceu comigo, testei agora com 500, 700, 200 e 300 e em todos casos voltou ao normal, talvez seja problema no host. Em relação a usar 2 vezes a mesma talkaction eu resolvi acrescentando uma linha que remove a condição ao usar o comando. Editei o primeiro post com o código novo.

 

 

Esta perfeito agora amigo do jeito que eu queria no meu caso vou manter o delay 1000 mesmo nao faz tanta diferença, agora em relação ao resto esta perfeito mesmo creio que ha mais bugs ;D obrigado, te dei REP e amanha entro de novo aqui para te dar outro ^^.

 

Pedido entegue duvida resolvida podem fechar o TOPICO.

Editado Outubro 29 por soltore

AntharazA
29 de outubro de 2015 às 06:38

hahaha não precisa se incomodar tanto com rep, não ligo muito para isto não, eu ajudo por hobbie :x só não esquece de marcar como resolvido. Qualquer coisa pode me mandar MP.

soltoreS
29 de outubro de 2015 às 13:36

vish hj loguei para terminar umas coisas manin e aproveitei para mostrar pro resto da equipe esse sistema de transform... o duro é que com o GOD funciona sem crise mais hj testei nos player normais de access = 1... ele transforma mas qndo anda nao volta ao normal 0.o ontem havia testado so no GOD..

AntharazA
29 de outubro de 2015 às 14:01

Aqui funcionou normal, você tem link para o tópico do seu server com download para eu baixar e testar nele? Teste novamente por favor e olhe se deu algum erro...

soltoreS
29 de outubro de 2015 às 14:10

vish link pra download nao vou ter pois essa tfs eu tenho ah um bom tempo rsrsrs mas se isto ajudar é tfs 0.3.6 - 8.54

 

segue a imagem com dados da distro:

 

 

distro.png?1446134564

 

 

 

OBS: deletei tudo e adicionei tudo novamente e o bug nos players perciste ;/