RO
talkaction

Change Your Color!

Por Roksas, 21 de abr. de 2013 em Actions e Talkactions

script
8
2.2k
RoksasR
21 de abril de 2013 às 11:11

Change Your Outfit Color!

 

Como anda pessoal? Tudo bão? Hoje venho trazer-lhes um comando que inventei, oque ele faz?

 

Você pode mudar a cor da sua roupa sem mudar o outfit, apenas falando um simples comando

 

!color cor

 

No lugar de cor você coloca o número da cor, bem legal né? Vamos á instalação...

 

Vá em data/talkactions/scripts, copie algum arquivo da pasta e cole, renomeie para change_color.lua e adicione dentro:

 

 

 

function onSay(cid, words, param)

local t = string.explode(param, " ")
local out = {
lookType = getCreatureOutfit(cid).lookType,
lookHead = t[1],
lookLegs = t[1],
lookFeet = t[1],
lookBody = t[1],
}

if not t[1] then
doPlayerSendTextMessage(cid, 20, "Insert a color in command!")
return true
end

if tonumber(t[1]) > 900 then return doPlayerSendTextMessage(cid, 20, "Colors limit is 900.") end

doSetCreatureOutfit(cid, out, -1)
doSendAnimatedText(getCreaturePosition(cid), "COLOR!", math.random(1, 255))
return true
end

 

 

 

Muito bem, agora siga para data/talkactions, abra com o bloco de notas o arquivo talkactions.xml e adicione essa tag:

 

<talkaction log="yes" words="!color;/color" event="script" value="change_color.lua"/>

 

É isso pessoal, sistema instalado! É bem simples, mas acho que pode ser útil em servers de War, ou um passa-tempo em qualquer servidor ^^

 

Thanks for see!

Editado Maio 12 por Roksas

elricoE
21 de abril de 2013 às 11:25

Vai ser util sim REP +

RoksasR
21 de abril de 2013 às 11:41

Obrigado, faça bom uso!

KyouK
21 de abril de 2013 às 12:37

Olá.

 

Explique, por gentileza, porque utilizar string.explode, se você só usa um parâmetro em todo o script. E também porque 900 cores se só existem 132.

 

Abraços.

Editado Abril 21 por Kyou

RoksasR
21 de abril de 2013 às 12:39

Favor me explicar então como você declararia o parâmetro na table e no restante?

KyouK
21 de abril de 2013 às 12:54

A função string.explode cria uma tabela, de uma string, onde os elementos são partes da string separados pelo segundo parâmetro da função.

 

Ou seja, se tivéssemos a string:

 

local tmp = "Roksas é bastante leigo"

 

E usássemos a string.explode do jeito que você usou.

 

local t = string.explode(tmp, " ")

 

Teríamos isso:

 

local t = {"Roksas", "é", "bastante", "leigo"}

 

Se você só utiliza um primeiro elemento da tabela, porque, diabos, gerou ela? Não era mais fácil simplesmente chamar param nas funções?

 

function onSay(cid, words, param, channel)
	if not param then
			doPlayerSendTextMessage(cid, 20, "You need to insert at least one color number.")
			return true
	end

	param = tonumber(param)
			param = math.min(param, 132)

	local outfit = getCreatureOutfit(cid)
	outfit.lookHead = param
	outfit.lookBody = param
	outfit.lookLegs = param
	outfit.lookFeet = param

	return doSetCreatureOutfit(cid, outfit, -1)
end

 

Segue abaixo um script que explora string.explode de fato

 

function onSay(cid, words, param, channel)
       if not param then
               doPlayerSendTextMessage(cid, 20, "You need to insert the desired color.")
               return true
       end

       param = tonumber(param)

       local outfit = getCreatureOutfit(cid)
       outfit.lookHead = math.min(param, 132)
       outfit.lookBody = math.min(param, 132)
       outfit.lookLegs = math.min(param, 132)
       outfit.lookFeet = math.min(param, 132)

       return doSetCreatureOutfit(cid, outfit, -1)
end

Editado Abril 21 por Kyou

RoksasR
21 de abril de 2013 às 12:59

Sim, eu pensei em fazer desta meneira, se der uma olhada no Meu Conteúdo, verá que minhas Talkactions estão sempre assim, acabei acustumando, mas obrigado pela dica :)

AlexclusiveA
21 de abril de 2013 às 13:02

Sempre criando em Roksas! Parabéns!