Jump to content

Projeto Tutores de Scripting


Killua
 Share

Recommended Posts

Foi isso o que você quis dizer?

function onLogin(cid) 

	if getPlayerVocation(cid) == 1 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 137, 0)
			else
			doPlayerAddOutfit(cid, 129, 0)
		end
	end

	if getPlayerVocation(cid) == 2 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 138, 0)
			else
			doPlayerAddOutfit(cid, 130, 0)
		end
	end

	if getPlayerVocation(cid) == 3 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 139, 0)
			else
			doPlayerAddOutfit(cid, 131, 0)
		end
	end

	if getPlayerVocation(cid) == 4 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 140, 0)
			else
			doPlayerAddOutfit(cid, 132, 0)
		end
	end

end

Se foi isso ainda me resta uma duvida. Não aparece mais mensagens de erro, entretanto eu não consigo entrar no jogo caso esse creaturescripts esteja em funcionamento. O que poderia ser?

 

Tag utilizada:

<event type="login" name="Outfits" script="outfits.lua"/>
Link to comment
Share on other sites

 

Foi isso o que você quis dizer?

function onLogin(cid) 

	if getPlayerVocation(cid) == 1 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 137, 0)
			else
			doPlayerAddOutfit(cid, 129, 0)
		end
	end

	if getPlayerVocation(cid) == 2 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 138, 0)
			else
			doPlayerAddOutfit(cid, 130, 0)
		end
	end

	if getPlayerVocation(cid) == 3 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 139, 0)
			else
			doPlayerAddOutfit(cid, 131, 0)
		end
	end

	if getPlayerVocation(cid) == 4 then
		if getPlayerSex(cid) == 0 then
		doPlayerAddOutfit(cid, 140, 0)
			else
			doPlayerAddOutfit(cid, 132, 0)
		end
	end
return true
end

Se foi isso ainda me resta uma duvida. Não aparece mais mensagens de erro, entretanto eu não consigo entrar no jogo caso esse creaturescripts esteja em funcionamento. O que poderia ser?

 

Tag utilizada:

<event type="login" name="Outfits" script="outfits.lua"/>

 

Tente com o return true, sem ele você não poderá logar, pois ele retorna uma resposta para a function, no caso true = verdadeiro, o return true deve ficar antes do ultimo end, como eu coloquei ai em cima... qualquer coisa o Killua resolve, pois eu creio que seja somente isso.

 

Boa Sorte!

Link to comment
Share on other sites

Realmente isso tá parecendo mais um pedido... Amigo, se vc é iniciante e quer aprender a fazer scripts, sugiro que comece com algo mais simples. Esse script será um pouco complexo, mas vou deixar umas dicas de como fazê-lo, mesmo achando que vai ser difícil para você entender, já que é um iniciante.

 

Você poderia criar uma tabela contendo todos os intervalos de tempo (de 1 a 60 segundos) para que os monstros nasçam e outra com os nomes dos monstros, exemplo:

local monstros = {"Demon", "Rat", "Hydra", "Dragon"}
local tempos = {1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, etc} -- até 60000

Onde 1000 equivale a 1 segundo.

 

Daí vc iria criar vários addEvent (com intervalo de 60 segundos) dentro de um loop que usaria a tabela, mais ou menos assim:

for i = 1, (#tempos) do
 addEvent(doCreateMonster, tempos[i], monstros[math.random(1, #monstros)], pos)
 addEvent(function()
    addEvent(doCreateMonster, tempos[i], monstros[math.random(1, #monstros)], pos)
 end, 60000)
 addEvent(function()
    addEvent(doCreateMonster, tempos[i], monstros[math.random(1, #monstros)], pos)
 end, 120000)

Mas dessa maneira não seria checado o tempo que o player permaneceu lá, já que o addEvent estaria ocorrendo de qualquer forma. Portanto, a idéia que eu tive foi fazer da seguinte forma:

Cada addEvent checaria se existem players na área e adicionaria uma storage pra todos os players da área, por exemplo, o primeiro addEvent (com intervalo de 60 segundos) setaria o storage XXXX com valor 1 para todos os players da área, o segundo (com intervalo de 120 segundos) setaria o mesmo storage, mas com valor 2 para todos os players da área e assim por diante.

Depois, usando uma function onPrepareDeath (creaturescripts) vc checaria primeiro se o jogador estava na área determinada no momento da morte, depois o valor de sua storage e daria os prêmios dependendo da storage. É claro que essa onPrepareDeath deverá também setar o storage XXXX do player para 0, para que da próxima vez que o jogador participar do evento, não ocorram problemas.

Essas são as idéia que eu tive para fazer o código que vc disse... Ele não é fácil de fazer e eu recomendaria que vc começasse com códigos mais simples, mas não custa nada tentar :)

Espero que tenha conseguido entender, abraços.

No caso dele acho melhor fazer por recursão brow, porque se o player entrar la e morrer rapido, vão continuar sendo criador varios monstros, dai o proximo que entrar vai ja sair no prejuizo.

 

Quanto a parte da criação apenas, ficaria assim:

local monstros = {"Demon", "Rat", "Hydra", "Dragon"}
local interval = 500 -- valor em ms
local position = {x=1,y=1,z=2}
local limit_time = 5 * 60 * 1000 -- min * 60 * 1000

function createNewMonster(cid, it)
    it = it and it + interval or 0  -- variavel contadora de tempo
    if isCreature(cid) then -- verifica se o referido valor cid corresponde a uma criatura
        doCreateMonster(monstros[math.random(#monstros)], position) -- cria um monstro randomico na posição position
        if not it >= limit_time then -- verifica se o contador nao esgotou o limite de tempo
            addEvent(createNewMonster, interval, cid, it) -- se sim, cria um novo monstro apos interval
        end
    end
end

Mas e claro que ainda falta muita coisa para o que ele quer, isso inclui creature scripts, checagens na alavanca que aciona o evento, mensagem no fim do tempo, limpeza da area removendo os monstros que nao foram mortos(isso aconselho a salvas todos os uids numa tabela para que a remoção seja facil), alem disso tem a premiação

 

 

#

 

Bom eu tava criando um script que quando o player mata outro e pega Skull, Black ou Red , então cai um gravestone com um texo ..

queria saber porque não funciona, não conseguir imaginar outro jeito de chegar se o player pegou a skull..

creio que do jeito que eu fiz so cai se já tiver a skull , não tem como eu testar pq tenho que pegar skull, e meu ot ainda não ta online .

 

function onKill(cid, target, lastHit)

local pos = getCreaturePosition(target)
local name = getCreatureName(cid)
local name2 = getCreatureName(target)

if isPlayer(cid) and isPlayer(target) then
   if getCreatureSkullType(cid) == SKULL_BLACK then
      doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Black Skull Aqui.")
      doBroadcastMessage("O jogador "..name.." pegou Black Skull no Jogador "..name2..".")
   elseif getCreatureSkullType(cid) == SKULL_RED then
      doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Red Skull Aqui.")
      doBroadcastMessage("O jogador "..name.." pegou Red Skull no Jogador "..name2..".")
   end
end

return TRUE
end

e como eu faço para o corpo do jogador sumir , pq fica em cima do gravestone

 

Não tenho certeza, mas acho que onKill teoricamente ainda não ocorreu a morte, entao ele não reconheceria o skull.

Acho que seria mais interessante usar onDeath, pois ai ja teria o corpses no proprio parametro e so executaria para player, pois deverá ser registrado no login.lua.

Quanto ao corpo do codigo, acredito que esteja certo, so trocaria a callback mesmo

Ótima iniciativa, espero que me ajude muito, pra começar tenho um script que comecei fazer e esta dando um erro que faço ideia do que possa ser.

 

O script abaixo funciona, ou era pra funcionar da seguinte forma, ao jogador entrar o sistema iria checar a vocação e lhe conceder uma outfit sem addons conforme a vocação, nas versões mais simples desse script (dava uma outfit sem considerar o sexo) ele não funcionou, na verdade até funcionou, mas o char não entrava no jogo. Eu fiz um teste com o mesmo script para dar itens (mesmo esquema, mas sem considerar o sexo, apenas a vocação) e também não funcionou, o char não entrava, mas no log do servidor ele entrava e saia instantaneamente.

function onLogin(cid) 

	if getPlayerVocation(cid) == 1 then
		if getPlayerSex(cid) == 0 then
			doPlayerAddOutfit(cid,137,0) --hunter female
		else getPlayerSex(cid) == 1 then
			doPlayerAddOutfit(cid,129,0) --hunter male
	end
	
	elseif getPlayerVocation(cid) == 2 then
		if getPlayerSex(cid) == 0 then
			doPlayerAddOutfit(cid,138,0) --mage female
		else getPlayerSex(cid) == 1 then
			doPlayerAddOutfit(cid,130,0) --mage male
	end
	
	elseif getPlayerVocation(cid) == 3 then
		if getPlayerSex(cid) == 0 then
			doPlayerAddOutfit(cid,139,0) --knight female
		else getPlayerSex(cid) == 1 then
			doPlayerAddOutfit(cid,131,0) --knight male
	end

	elseif getPlayerVocation(cid) == 4 then
		if getPlayerSex(cid) == 0 then
			doPlayerAddOutfit(cid,140,0) --noblewoman female
		else getPlayerSex(cid) == 1 then
			doPlayerAddOutfit(cid,132,0) --nobleman male
	end

end
end

Nesse script ele da um erro no log do servidor dizendo: [Warning - Event::checkScript] Can not load script: scripts/outfits.lua data/creaturescript/outfits.lua:6: unexpected symbol near "=="

 

 

Servidor utilizado TFS 1.0.

deve ser algum erro de sintaxe, coisa boba porque a estrutura em si parece certa, mas cara tem como reduzir e otimizar muito isso ai, veja

local outfits = {
--  [vocNumber] = { femaleOutfit, maleOutfit }
    [1] = {137, 129}; -- hunter
    [2] = {138, 130}; -- mage
    [3] = {139, 131}; -- kina
    [4] = {140, 132}; -- noble
}

function onLogin(cid)
    local voc = getPlayerVocation(cid)
    if outfits[voc] then
        doPlayerAddOutfit(cid,outfits[voc][getPlayerSex(cid) == 0 and 1 or 2],0)
    end
    
    return true
end
Link to comment
Share on other sites

local outfits = {
--  [vocNumber] = { femaleOutfit, maleOutfit }
    [1] = {137, 129}; -- hunter
    [2] = {138, 130}; -- mage
    [3] = {139, 131}; -- kina
    [4] = {140, 132}; -- noble
}

function onLogin(cid)
    local voc = getPlayerVocation(cid)
    if outfits[voc] then
        doPlayerAddOutfit(cid,outfits[voc][getPlayerSex(cid) == 0 and 1 or 2],0)
    end
    
    return true
end

 

Valeu cara, realmente faltou o return true. Essa simplificação que você fez também funcionou, mas eu não entendi muito essa parte:

if outfits[voc] then
doPlayerAddOutfit(cid,outfits[voc][getPlayerSex(cid) == 0 and 1 or 2],0)
end
Teria como me explicar mais ou menos?
Link to comment
Share on other sites

Essa parte funciona assim: Dentro da tabela outfits, tem várias outras tabelas e os "nomes" delas são [1], [2], [3] e [4], cada uma contendo dois elementos nas suas tabelas ( {137, 129}, por exemplo ).

 

voc é o nome que ele deu pra variável que tem o valor de getPlayerVocation(cid), que retorna o número da vocação do player. Ou seja, se ele for paladin, a variável irá retornar 3 e vai passar a ter esse valor e a partir daí voc = 3.

 

A parte if outfits[voc] faz o seguinte: Ela checa se dentro da tabela outfits existe uma tabela com o mesmo número da vocação do player. Exemplo:

Se, como dito acima, o player for paladin, voc será igual a 3 (voc = 3), portanto, vai ser checado se existe a tabela [3]. Se ela existir, o player receberá o outfit de cujo número está contido na tabela [3], no caso {139, 131}.

 

Mas essa tabela possui dois números: 139 e 131. O primeiro feminino e o segundo masculino. O sexo do player é checado nesta linha: doPlayerAddOutfit(cid,outfits[voc][getPlayerSex(cid) == 0 and 1 or 2],0)

Que diz: se o sexo do player for 0 (feminino), adicione o outfit de número correspondente ao primeiro elemento da tabela, caso contrário, adicione o outfit correspondente ao segundo elemento da tabela.

 

Para entender isso, você precisa entender duas coisas: Chamar elementos de tabelas e simular if-else com and-or. Para entender isso, sugiro que leia esses 2 tutoriais: Tutorial Sobre Arrays e [simular if-else com and-or].

 

Tentei ser o mais claro possível, espero que tenha entendido.

Link to comment
Share on other sites

onde esta o erro ?

 

local outfits_male = {
[1] = {lookType = 128}, -- Sorcerer Female
[2] = {lookType = 134}, -- Druid Female
[3] = {lookType = 129}, -- Paladin Female
[4] = {lookType = 130},
[5] = {lookType = 133},
[6] = {lookType = 131},
[7] = {lookType = 143},
[8] = {lookType = 145},
[9] = {lookType = 153},
[10] = {lookType = 289},
[11] = {lookType = 273},
[12] = {lookType = 146},
[13] = {lookType = 154}
}


local outfits_female = {
[1] = {lookType = 136}, -- Sorcerer Male
[2] = {lookType = 142}, -- Druid Male
[3] = {lookType = 139}, -- Paladin Male
[4] = {lookType = 138}, -- Knight Male
[5] = {lookType = 141},
[6] = {lookType = 139},
[7] = {lookType = 147},
[8] = {lookType = 157},
[9] = {lookType = 149},
[10] = {lookType = 288},
[11] = {lookType = 270},
[12] = {lookType = 150},
[13] = {lookType = 158}
}




function onLogin(cid)
local voc_id = getPlayerVocation(cid)
if getPlayerVocation(cid) > 0 then
if getPlayerSex(cid) == 0 then
doCreatureChangeOutfit(cid, outfits_female[voc_id])
else
doCreatureChangeOutfit(cid, outfits_male[voc_id])
end
end
return true
end

 

nao grava a cor , exemplo eu deixo meu char todo azul , mais apos relogar ele fica todo branco ;x

Link to comment
Share on other sites

onde esta o erro ?

 

local outfits_male = {

[1] = {lookType = 128}, -- Sorcerer Female

[2] = {lookType = 134}, -- Druid Female

[3] = {lookType = 129}, -- Paladin Female

[4] = {lookType = 130},

[5] = {lookType = 133},

[6] = {lookType = 131},

[7] = {lookType = 143},

[8] = {lookType = 145},

[9] = {lookType = 153},

[10] = {lookType = 289},

[11] = {lookType = 273},

[12] = {lookType = 146},

[13] = {lookType = 154}

}

 

 

local outfits_female = {

[1] = {lookType = 136}, -- Sorcerer Male

[2] = {lookType = 142}, -- Druid Male

[3] = {lookType = 139}, -- Paladin Male

[4] = {lookType = 138}, -- Knight Male

[5] = {lookType = 141},

[6] = {lookType = 139},

[7] = {lookType = 147},

[8] = {lookType = 157},

[9] = {lookType = 149},

[10] = {lookType = 288},

[11] = {lookType = 270},

[12] = {lookType = 150},

[13] = {lookType = 158}

}

 

 

 

 

function onLogin(cid)

local voc_id = getPlayerVocation(cid)

if getPlayerVocation(cid) > 0 then

if getPlayerSex(cid) == 0 then

doCreatureChangeOutfit(cid, outfits_female[voc_id])

else

doCreatureChangeOutfit(cid, outfits_male[voc_id])

end

end

return true

end

 

nao grava a cor , exemplo eu deixo meu char todo azul , mais apos relogar ele fica todo branco ;x

Cara, o outfit é uma tabela, que conte os seguintes dados:

{lookType = 266, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0} -- valores exemplares apenas

O valor que voce está configurando é referente ao lookType, que é o numero do outfit, os demais sao as cores e os addons.

 

Logo para fazer a troca sem desfazer as cores, basta salvar o outfit numa variavel usando a função getCreatureOutfit(cid), e alterar o campo lookType como mostrado abaixo:

local outfits_male = {
[1] = {lookType = 128}, -- Sorcerer Female
[2] = {lookType = 134}, -- Druid Female
[3] = {lookType = 129}, -- Paladin Female
[4] = {lookType = 130},
[5] = {lookType = 133},
[6] = {lookType = 131},
[7] = {lookType = 143},
[8] = {lookType = 145},
[9] = {lookType = 153},
[10] = {lookType = 289},
[11] = {lookType = 273},
[12] = {lookType = 146},
[13] = {lookType = 154}
}




local outfits_female = {
[1] = {lookType = 136}, -- Sorcerer Male
[2] = {lookType = 142}, -- Druid Male
[3] = {lookType = 139}, -- Paladin Male
[4] = {lookType = 138}, -- Knight Male
[5] = {lookType = 141},
[6] = {lookType = 139},
[7] = {lookType = 147},
[8] = {lookType = 157},
[9] = {lookType = 149},
[10] = {lookType = 288},
[11] = {lookType = 270},
[12] = {lookType = 150},
[13] = {lookType = 158}
}








function onLogin(cid)
local voc_id = getPlayerVocation(cid)
local myOutfit = getCreatureOutfit(cid)
if voc_id > 0 then
if getPlayerSex(cid) == 0 then
myOutfit.lookType = outfits_female[voc_id]
else
myOutfit.lookType = outfits_male[voc_id]
end
doCreatureChangeOutfit(cid, myOutfit)
end


return true
end

 

Edited by dalvorsn
Link to comment
Share on other sites

 

onde esta o erro ?

 

local outfits_male = {

[1] = {lookType = 128}, -- Sorcerer Female

[2] = {lookType = 134}, -- Druid Female

[3] = {lookType = 129}, -- Paladin Female

[4] = {lookType = 130},

[5] = {lookType = 133},

[6] = {lookType = 131},

[7] = {lookType = 143},

[8] = {lookType = 145},

[9] = {lookType = 153},

[10] = {lookType = 289},

[11] = {lookType = 273},

[12] = {lookType = 146},

[13] = {lookType = 154}

}

 

 

local outfits_female = {

[1] = {lookType = 136}, -- Sorcerer Male

[2] = {lookType = 142}, -- Druid Male

[3] = {lookType = 139}, -- Paladin Male

[4] = {lookType = 138}, -- Knight Male

[5] = {lookType = 141},

[6] = {lookType = 139},

[7] = {lookType = 147},

[8] = {lookType = 157},

[9] = {lookType = 149},

[10] = {lookType = 288},

[11] = {lookType = 270},

[12] = {lookType = 150},

[13] = {lookType = 158}

}

 

 

 

 

function onLogin(cid)

local voc_id = getPlayerVocation(cid)

if getPlayerVocation(cid) > 0 then

if getPlayerSex(cid) == 0 then

doCreatureChangeOutfit(cid, outfits_female[voc_id])

else

doCreatureChangeOutfit(cid, outfits_male[voc_id])

end

end

return true

end

 

nao grava a cor , exemplo eu deixo meu char todo azul , mais apos relogar ele fica todo branco ;x

Cara, o outfit é uma tabela, que conte os seguintes dados:

{lookType = 266, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0} -- valores exemplares apenas

O valor que voce está configurando é referente ao lookType, que é o numero do outfit, os demais sao as cores e os addons.

 

Logo para fazer a troca sem desfazer as cores, basta salvar o outfit numa variavel usando a função getCreatureOutfit(cid), e alterar o campo lookType como mostrado abaixo:

local outfits_male = {
[1] = {lookType = 128}, -- Sorcerer Female
[2] = {lookType = 134}, -- Druid Female
[3] = {lookType = 129}, -- Paladin Female
[4] = {lookType = 130},
[5] = {lookType = 133},
[6] = {lookType = 131},
[7] = {lookType = 143},
[8] = {lookType = 145},
[9] = {lookType = 153},
[10] = {lookType = 289},
[11] = {lookType = 273},
[12] = {lookType = 146},
[13] = {lookType = 154}
}




local outfits_female = {
[1] = {lookType = 136}, -- Sorcerer Male
[2] = {lookType = 142}, -- Druid Male
[3] = {lookType = 139}, -- Paladin Male
[4] = {lookType = 138}, -- Knight Male
[5] = {lookType = 141},
[6] = {lookType = 139},
[7] = {lookType = 147},
[8] = {lookType = 157},
[9] = {lookType = 149},
[10] = {lookType = 288},
[11] = {lookType = 270},
[12] = {lookType = 150},
[13] = {lookType = 158}
}








function onLogin(cid)
local voc_id = getPlayerVocation(cid)
local myOutfit = getCreatureOutfit(cid)
if voc_id > 0 then
if getPlayerSex(cid) == 0 then
myOutfit.lookType = outfits_female[voc_id]
else
myOutfit.lookType = outfits_male[voc_id]
end
doCreatureChangeOutfit(cid, myOutfit)
end


return true
end

 

 

 

provando ao garou ue eu tento as vezes arrumar os scripts mais tenho dificuldade então tentei o maximo entender sua explicação deixando assim olha

local outfits_male = {
[1] = {lookType = 128, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[2] = {lookType = 134, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[3] = {lookType = 129, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[4] = {lookType = 130, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[5] = {lookType = 133, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[6] = {lookType = 131, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[7] = {lookType = 143, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[8] = {lookType = 145, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[9] = {lookType = 153, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[10] = {lookType = 289, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[11] = {lookType = 273, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[12] = {lookType = 146, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[13] = {lookType = 154, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0}
}

}

local outfits_female = {
[1] = {lookType = 136 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[2] = {lookType = 142 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[3] = {lookType = 139 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[4] = {lookType = 138 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[5] = {lookType = 141 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[6] = {lookType = 139 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[7] = {lookType = 147 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[8] = {lookType = 157 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[9] = {lookType = 149 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[10] = {lookType = 288 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[11] = {lookType = 270 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[12] = {lookType = 150 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[13] = {lookType = 158 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0}


}

function onLogin(cid)
local voc_id = getPlayerVocation(cid)
if getPlayerVocation(cid) > 0 then
if getPlayerSex(cid) == 0 then
doCreatureChangeOutfit(cid, outfits_female[voc_id])
else
doCreatureChangeOutfit(cid, outfits_male[voc_id])
end
end
return true
end

e funfo de boas , obrigado ! rep ^^

 

( encontei um erro tipo , ele não seta a outfit uando loga pode me da uma força ? )

Edited by kavaskiva
Link to comment
Share on other sites

kavaskiva

Vei, eu deixei o script certo pra tu, tu estragou >.<'

Entenda uma coisa, esse cid, só vai funcionar dentro de callbacks(funções como onUse, onStatsChange e etc), se tu usa do lado de fora, como usou nas tabelas, fica errado porque quando tenta usar o cid é nil

voce tem que carregar dentro do corpo da função, e nao do lado de fora e nao precisa colocar nas configurações

quando eu fiz isso:

local myOutfit = getCreatureOutfit(cid)

Eu salvei na variavel 'myOutfit' uma tabela com os dados do outfit atual do player, e quando eu fiz:

if getPlayerSex(cid) == 0 then
    myOutfit.lookType = outfits_female[voc_id]
else
    myOutfit.lookType = outfits_male[voc_id]
end

 

Eu alterei da tabela, apenas ao indice lookType, que é numero do outfit, mantendo assim os referentes a cores e addon.

Voce nao deveria ter alterado o script, ele ja estava certo >.<'

Link to comment
Share on other sites

Seu erro foi utilizar getCreatureOutfit(cid) fora do escopo da função onLogin(cid), de modo que o parâmetro cid na tabela vai retornar nulo.

 

Eu prefiro fazer deste modo, e criar a tabela em função da vocação e do sexo do jogador:

local VOCATION_OUTFITS = {
	[1] = {
		[0] = 128,
		[1] = 136,
	},
}

function onLogin(cid)
	local tmp = VOCATION_OUTFITS[getPlayerVocation(cid)][getPlayerSex(cid)]
	if tmp then
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = tmp
		
		doCreatureChangeOutfit(cid, outfit)
	end
	return true
end

A única coisa que você precisa fazer aqui é criar a tabela, colocando as outfits que quer, repetindo a estrutura que eu desenvolvi.

Edited by Garou
Link to comment
Share on other sites

kavaskiva

Vei, eu deixei o script certo pra tu, tu estragou >.<'

Entenda uma coisa, esse cid, só vai funcionar dentro de callbacks(funções como onUse, onStatsChange e etc), se tu usa do lado de fora, como usou nas tabelas, fica errado porque quando tenta usar o cid é nil

voce tem que carregar dentro do corpo da função, e nao do lado de fora e nao precisa colocar nas configurações

quando eu fiz isso:

local myOutfit = getCreatureOutfit(cid)

Eu salvei na variavel 'myOutfit' uma tabela com os dados do outfit atual do player, e quando eu fiz:

if getPlayerSex(cid) == 0 then
    myOutfit.lookType = outfits_female[voc_id]
else
    myOutfit.lookType = outfits_male[voc_id]
end

Eu alterei da tabela, apenas ao indice lookType, que é numero do outfit, mantendo assim os referentes a cores e addon.

Voce nao deveria ter alterado o script, ele ja estava certo >.<'

 

substitui sua script pela minha , após logar em um char ele nao fica com a outfit ue deveria ficar , fica com uma tipo " inivisivel " em todos chars . é um azul fica brilhando ...

Link to comment
Share on other sites

 

Seu erro foi utilizar getCreatureOutfit(cid) fora do escopo da função onLogin(cid), de modo que o parâmetro cid na tabela vai retornar nulo.

 

Eu prefiro fazer deste modo, e criar a tabela em função da vocação e do sexo do jogador:

local VOCATION_OUTFITS = {
	[1] = {
		[0] = {lookType = 128},
		[1] = {lookType = 136},
	},
}

function onLogin(cid)
	local tmp = VOCATION_OUTFITS[getPlayerVocation(cid)][getPlayerSex(cid)]
	if tmp then
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = tmp.lookType
		
		doCreatureChangeOutfit(cid, outfit)
	end
	return true
end
Só uma objeção, existe ainda assim um sexo alem de male e female,
PLAYERSEX_FEMALE = 0
PLAYERSEX_MALE = 1
PLAYERSEX_GAMEMASTER = 2

Pog mode:

local tmp = VOCATION_OUTFITS[getPlayerVocation(cid)][math.min(1, getPlayerSex(cid))]

hu3

 

kavaskiva

Vei, eu deixei o script certo pra tu, tu estragou >.<'

Entenda uma coisa, esse cid, só vai funcionar dentro de callbacks(funções como onUse, onStatsChange e etc), se tu usa do lado de fora, como usou nas tabelas, fica errado porque quando tenta usar o cid é nil

voce tem que carregar dentro do corpo da função, e nao do lado de fora e nao precisa colocar nas configurações

quando eu fiz isso:

local myOutfit = getCreatureOutfit(cid)

Eu salvei na variavel 'myOutfit' uma tabela com os dados do outfit atual do player, e quando eu fiz:

if getPlayerSex(cid) == 0 then
    myOutfit.lookType = outfits_female[voc_id]
else
    myOutfit.lookType = outfits_male[voc_id]
end

Eu alterei da tabela, apenas ao indice lookType, que é numero do outfit, mantendo assim os referentes a cores e addon.

Voce nao deveria ter alterado o script, ele ja estava certo >.<'

 

substitui sua script pela minha , após logar em um char ele nao fica com a outfit ue deveria ficar , fica com uma tipo " inivisivel " em todos chars . é um azul fica brilhando ...

 

Poste o erro do console, eu nao testei in game.

Edited by dalvorsn
Link to comment
Share on other sites

 

 

Seu erro foi utilizar getCreatureOutfit(cid) fora do escopo da função onLogin(cid), de modo que o parâmetro cid na tabela vai retornar nulo.

 

Eu prefiro fazer deste modo, e criar a tabela em função da vocação e do sexo do jogador:

local VOCATION_OUTFITS = {
	[1] = {
		[0] = {lookType = 128},
		[1] = {lookType = 136},
	},
}

function onLogin(cid)
	local tmp = VOCATION_OUTFITS[getPlayerVocation(cid)][getPlayerSex(cid)]
	if tmp then
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = tmp.lookType
		
		doCreatureChangeOutfit(cid, outfit)
	end
	return true
end
Só uma objeção, existe ainda assim um sexo alem de male e female,
PLAYERSEX_FEMALE = 0
PLAYERSEX_MALE = 1
PLAYERSEX_GAMEMASTER = 2

Pog mode:

local tmp = VOCATION_OUTFITS[getPlayerVocation(cid)][math.min(1, getPlayerSex(cid))]

hu3

 

kavaskiva

Vei, eu deixei o script certo pra tu, tu estragou >.<'

Entenda uma coisa, esse cid, só vai funcionar dentro de callbacks(funções como onUse, onStatsChange e etc), se tu usa do lado de fora, como usou nas tabelas, fica errado porque quando tenta usar o cid é nil

voce tem que carregar dentro do corpo da função, e nao do lado de fora e nao precisa colocar nas configurações

quando eu fiz isso:

local myOutfit = getCreatureOutfit(cid)

Eu salvei na variavel 'myOutfit' uma tabela com os dados do outfit atual do player, e quando eu fiz:

if getPlayerSex(cid) == 0 then
    myOutfit.lookType = outfits_female[voc_id]
else
    myOutfit.lookType = outfits_male[voc_id]
end

Eu alterei da tabela, apenas ao indice lookType, que é numero do outfit, mantendo assim os referentes a cores e addon.

Voce nao deveria ter alterado o script, ele ja estava certo >.<'

 

substitui sua script pela minha , após logar em um char ele nao fica com a outfit ue deveria ficar , fica com uma tipo " inivisivel " em todos chars . é um azul fica brilhando ...

 

Poste o erro do console, eu nao testei in game.

 

 

não da erro no console '-'

Link to comment
Share on other sites

Que eu saiba os jogadores só retornam 0 e 1, inclusive jogadores com acesso de gamemaster.

 

O PLAYERSEX_GAMEMASTER não é usado sequer nas sources.

 

Eu sou meio chato com isso, então não edite meus scripts fazendo POGs neles.

Edited by Garou
Link to comment
Share on other sites

;x sempre ue logo não seta a outfit alguém ae pode me ajudar , exemplo to classe mago vou para sei lá sacerdote ai continua com a outfit mago de vez setar para de sacerdote ^^

local outfits_male = {
[1] = {lookType = 128, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[2] = {lookType = 134, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[3] = {lookType = 129, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[4] = {lookType = 130, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[5] = {lookType = 133, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[6] = {lookType = 131, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[7] = {lookType = 143, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[8] = {lookType = 145, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[9] = {lookType = 153, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[10] = {lookType = 289, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[11] = {lookType = 273, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[12] = {lookType = 146, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[13] = {lookType = 154, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0}
}

}

local outfits_female = {
[1] = {lookType = 136 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[2] = {lookType = 142 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[3] = {lookType = 139 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[4] = {lookType = 138 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[5] = {lookType = 141 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[6] = {lookType = 139 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[7] = {lookType = 147 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[8] = {lookType = 157 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[9] = {lookType = 149 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[10] = {lookType = 288 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[11] = {lookType = 270 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[12] = {lookType = 150 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0},
[13] = {lookType = 158 lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = 0}


}

function onLogin(cid)
local voc_id = getPlayerVocation(cid)
local myOutfit = getCreatureOutfit(cid)
if voc_id > 0 then
if getPlayerSex(cid) == 0 then
myOutfit.lookType = outfits_female[voc_id]
else
myOutfit.lookType = outfits_male[voc_id]
end
doCreatureChangeOutfit(cid, myOutfit)
end


return true
end
Edited by kavaskiva
Link to comment
Share on other sites

 Share

×
×
  • Create New...