Ir para conteúdo
  • 0

Talk Action Troca de outifit


soltore

Pergunta

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+

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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 por Antharaz
Link para o comentário
Compartilhar em outros sites

  • 0

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 por soltore
Link para o comentário
Compartilhar em outros sites

  • 0

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 por Antharaz
Link para o comentário
Compartilhar em outros sites

  • 0

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..

Link para o comentário
Compartilhar em outros sites

  • 0

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 por soltore
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 por soltore
Link para o comentário
Compartilhar em outros sites

  • 0

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..

Link para o comentário
Compartilhar em outros sites

  • 0

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 ;/

Link para o comentário
Compartilhar em outros sites

  • 0

Este erro não é do script e sim da source, mas é normal isto... acontece em quase todos OTServers... quero ver o erro quando você executa o comando... outra obs:.. eu baixei esse TFS 0.3.6 e rodei o script numa boa, tanto para player quanto para god, por isto que pedi o link de onde você baixou, para ver se é o host ou o server.... porque o script está ok...

 

Se tiver como você upar o server para mim, mas retirando os sistemas da sua equipe, eu conseguiria arrumar o problema ou ao menos dizer aonde ele está... se for fazer isto, me passe o link por MP para não dar problema para sua equipe depois e se possível, passe seu contato (skype, etc) por MP também.

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

×
×
  • Criar Novo...