Ir para conteúdo

Fazendo Player Receber Outfit Sem Poder Alterá-Lo


Antharaz

Posts Recomendados

Bem, vou ensinar como fazer com que um player receba o outfit que você quer colocar nele sem que ele consiga mudar pelo "set outfit".

 

 

Primeiro coloque uma variável com o outfit desejado. No caso usei o do war:

 

 

local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}

 

 

Logo depois use a variável na function doSetCreatureOutfit(cid, outfit, time), mas ao invés de determinar um tempo maior que 0 para ficar com o outfit, coloque -1, ficando assim:

 

 

doSetCreatureOutfit(cid, visual, -1)

 

 

Juquinha: lol, tá seu vagabundo, agora o player não consegue mudar nem fud***** o outfit, ja tentei com doCreatureChangeOutfit, doPlayerRemoveOutfit e outras funções. É bom você falar como que volta ao normal senão...

 

 

Antharaz: Calma fiote. :p basta usar a função doRemoveCondition dessa maneira:

 

 

doRemoveCondition(cid, CONDITION_OUTFIT)

 

 

Perceba que o looktype varia de acordo com o sexo, então para um char female não ficar com outfit de char male e vice versa, vamos fazer o seguinte, declarar 2 variáveis, 1 com cada looktype:

 

 

local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local visual2 = {lookType = 336, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}

 

 

Agora, colocamos em nosso script a função de verificação de sexo:

 

 

if getPlayerSex(cid) == 0 then --Verifica o sexo, se for 0
visual = visual2 --A variável local visual receber os valores da variável local visual2
end --fim do if

doSetCreatureOutfit(cid, visual, -1) --Muda o outfit do player para o valor contido em visual que, no caso, dependerá do sexo

 

 

No caso, eu fiz visual receber visual2 se o sexo for 0 para encurtar o script.

 

 

Dica: o inglês ajuda muito qualquer scripter...

 

 

 

IMPORTANTE: Declare as variáveis dentro da functon que você usar, caso contrário acontecerá o que o Marcryzius disse abaixo.

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

dica:

 

error :

if getPlayerSex(cid) == 0 then --Verifica o sexo, se for 0

visual = visual2 --A variável local visual receber os valores da variável local visual2

end --fim do if

 

doSetCreatureOutfit(cid, visual, -1) --Muda o outfit do player para o valor contido em visual que, no caso, dependerá do sexo

 

player mulher igual a sexo '0'(zero) if verifica apenas o sexo '0'(zero) modificando o valor da variável para o outfit de mulher.

se for um homen ele não modificará a variável continuando assim com o outfit de mulher.

Link para o comentário
Compartilhar em outros sites

@Marcryzius

 

Teste o script e verá que está certo, não há erro algum...

 

o outfit visual está com um outfit e o visual2 está com outro.

 

no final há o doSetCreatureOutfit(cid, visual, -1), ouys eja, vai mudar para o valor que está em visual...

 

if getPlayerSex(cid) == 0 then --Verifica o sexo, se for 0

visual = visual2 --A variável local visual recebe os valores da variável local visual2

end --fim do if

 

ou seja, se o sex for 0, o valor da varuiável visual vai mudar e o outfit que o rka receber vai mudar... é apenas uma questão de lógica, mas se mesmo assim não entendeu, rode em um sv seu e verá o que estou falando...

 

 

 

player mulher igual a sexo '0'(zero) if verifica apenas o sexo '0'(zero) modificando o valor da variável para o outfit de mulher.

se for um homen ele não modificará a variável continuando assim com o outfit de mulher.

 

o outfit visual é de male e o visual2 de female... logo o correto da sua frase seria:

 

player mulher igual a sexo '0'(zero) if verifica apenas o sexo '0'(zero) modificando o valor da variável para o outfit de mulher.

se for um homen ele não modificará a variável ficando assim com o outfit de HOMEM.

 

 

 

local visual = {lookType = 335, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local visual2 = {lookType = 336, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}

 

Veja que o looktype dos 2 é diferente...

 

:p

 

 

 

 

 

Agora aproveitando para falar de outro tópico que só vi sua resposta ontem: http://www.xtibia.com/forum/topic/128453-reprovado/

 

Nota: você falou: legal que você não sabe a diferença entre AID e UID.

 

Acho que você não viu o script do cara direito e eu considerei o que você disse uma ofença -.-'

 

Usar o aid no xml e verificar o uid no script como você falou é sim uma forma inteligente de reduzir o número de scripts. Mas observe que lá ele já atribui tal uid no xml e ainda faz a verificação do uid no .lua, o que eu chamo de tolice, afinal o script só vai rodar se o item já tiver aquele uid. Se ele tivesse atribuído uma aid ao script e verificado o uid ou vice versa concerteza não teria postado aquilo.

 

 

PS:.. não tratei isto por MP porque você não está recebendo menssagens.

 

:p

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

1º)

local out = 128

function troqueout(sex)

if sex = 0 then

out = 555

end

return out

end

 

local a,b = troqueout(0),troqueout(1)

print(a,b)

 

2º)

local c ={

[1020]=2400,

[1021]=2401,

[1022]=2402

}

function onUse(cid,item)

local v = c[item.actionid] -- poderia ser uid tambem

if(v)then

print(v)

else

print('opa não está na tabela de aids.')

end

end

 

 

 

XML:

<action actionid="1020" event="script" value="script.lua"/>

<action actionid="1021" event="script" value="script.lua"/>

<action actionid="1022" event="script" value="script.lua"/>

 

será que só porque está no xml eu não posso atribuir ao script lua?

tornando assim muito mais simples e configuravel o script sem a necesidade de fazer varios scripts inuteis?

isso responde sua pergunta?

Link para o comentário
Compartilhar em outros sites

@Marcryzius

 

 

O não justifica o fato de que meu script não está com erro

 

 

PS:.. olhe seu code:

 

local out = 128
function troqueout(sex)
if sex = 0 then
out = 555
end
return out
end

local a,b = troqueout(0),troqueout(1)
print(a,b)

 

como vc declarou o out antes da function ele não vai voltar a receber 128 qnd usar a função novamente... experimente colocar o local out = 128 dentro da function ou colocar troqueout(1) antes de troqueout(0), ficando assim:

 

function troqueout(sex)
local out = 128
if sex = 0 then
out = 555
end
return out
end

local a,b = troqueout(0),troqueout(1)
print(a,b)

 

ou

 

local out = 128
function troqueout(sex)
if sex = 0 then
out = 555
end
return out
end

local a,b = troqueout(1),troqueout(0)
print(a,b)

 

 

 

 

 

O eu já disse que concordo 100% com você, mas só agora vi direito o que você disse. Realmente eu estava enganado nesta :p

 

 

 

 

 

Passa msn para discutirmos por lá, é melhor =x

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

local out = 128

function troqueout(sex)

if sex = 0 then

out = 555

end

return out

end

 

local a,b,c = troqueout(1),troqueout(0),troqueout(1)

print(a,b,c)

normalmente criamos script com variáveis principais para serem vistas por todo o script.

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

Como eu te disse, 128 555 555.

 

Com a var local fora da functions ela n irá receber 128 novamente.

 

:p

PS:.. vc usou o = ao invés do == no if =x

 

 

Eu falei para experimentar por troqueout(1) antes de troqueout(0) para você reparar esta diferença :p

 

 

Entendeu o que eu quis dizer agora?

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 2 months later...
×
×
  • Criar Novo...