Ir para conteúdo
  • 0

Outfit por vocação.


jhonatanp

Pergunta

Olá, estou criando um servidor de Avatar Tibia e estou batendo a cabeça em um script e não consigo encontra-lo.




Seguinte: No servidor existem 4 vocações, X Y Z W. Quando o player da vocação X criar o personagem e quando ele logar ele terá apenas 2 outfits para escolher, mais esta outfit é apenas para a vocação dele, no caso se um player criar a vocação Y não aparecera as outfits da vocação X, ou seja cada vocação tem a sua outfit ao logar.



Alguem consegue fazer tal script?



Servidor protocolo: 8.60


Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

O cara, faz o seguinte. La em outfits.xml, deixe a tag dos outfits que você quer definir por vocação dessa forma:

 

<outfit id="20" ... o resto da tag que tiver la... storageId="5555" storageValue="ID DA VOCAÇÃO"> (adicione esses 2 ao final da tag)
...
</outfit>

 

La em login.lua, coloque essa linha dentro de onLogin:

setPlayerStorageValue(cid, 5555, getPlayerVocation(cid))

 

Diga se resolveu seu problema.

Abraços,

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

  • 0

Deu um pouco certo, mais uma duvida.

 

Coloquei os scripts acima e funcionaram perfeitamente, só que quando eu crio o char no account mannager e logo com ele, ele começa com a outfit do citizene já aparece a tela para trocar oufit, ai eu clico nas setas >> e continua na citizen, ai eu tenho que dar OK e abrir denovo o set outfit, tem alguma forma de eu criar o char e ja cair com as outfits?

Link para o comentário
Compartilhar em outros sites

  • 0

Lá em onLogin, procure pela linha doPlayerSendOutfitWindow(cid).

Certifique-se que a linha que eu falei pra você adicionar está antes dela e fora de qualquer loop ou if e me diga se arrumou.

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

  • 0

tem que ficar assim ?

 

function onLogin(cid)

local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
setPlayerStorageValue(cid, 6666, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6667, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6668, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6669, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6670, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6671, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6672, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6673, getPlayerVocation(cid))
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end

Link para o comentário
Compartilhar em outros sites

  • 0

não, pq ai ta dentro do else dele.

Assim:

 

function onLogin(cid)

local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
setPlayerStorageValue(cid, 6666, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6667, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6668, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6669, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6670, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6671, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6672, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6673, getPlayerVocation(cid))
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end
Link para o comentário
Compartilhar em outros sites

  • 0

agora deu errado, as outfit nem aparece para escolher, ta assim original.

 

 

local config = {

loginMessage = getConfigValue('loginMessage')
}
function onLogin(cid)
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")
registerCreatureEvent(cid, "killer")
registerCreatureEvent(cid, "Idle")
registerCreatureEvent(cid, "attackguild")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "forever amulet")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "PlayerKill")
if (InitArenaScript ~= 0) then
InitArenaScript = 1
-- make arena rooms free
for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end
-- if he did not make full arena 1 he must start from zero
if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 2 he must start from zero
if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 3 he must start from zero
if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0) -- did not arena level
end
setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
setPlayerStorageValue(cid, 42352, 0) -- is not in arena
return true
end


esta de cima é normal já quando baxei o servidor,

 

eu botei deste jeito, em qualquer lugar as storage ai da pra escolher as outfit, só que quando loga aparece com citizen ai tem q trocar, e na hora que loga ja aparece para trocar a outfit mais apertando as fechinha para mudar as outfit não aparece as da vocação, ai tem que dar ok e abrir dnv ai aparece elas

 

 

local config = {

loginMessage = getConfigValue('loginMessage')
}
function onLogin(cid)
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")
setPlayerStorageValue(cid, 6666, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6667, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6668, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6669, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6670, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6671, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6672, getPlayerVocation(cid))
setPlayerStorageValue(cid, 6673, getPlayerVocation(cid))
registerCreatureEvent(cid, "killer")
registerCreatureEvent(cid, "Idle")
registerCreatureEvent(cid, "attackguild")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "forever amulet")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "PlayerKill")
if (InitArenaScript ~= 0) then
InitArenaScript = 1
-- make arena rooms free
for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end
-- if he did not make full arena 1 he must start from zero
if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 2 he must start from zero
if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 3 he must start from zero
if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0) -- did not arena level
end
setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
setPlayerStorageValue(cid, 42352, 0) -- is not in arena
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0
local outfits = {
[1] = {lookType = xx, lookHead = xx , lookBody = xx, lookLegs = xx, lookFeet = 0, lookTypeEx = 0, lookAddons = 0},


function onLogin(cid)
if outfits[getPlayerVocation(cid)] then
doSetCreatureOutfit(cid, outfits[getPlayerVocation(cid)], -1)
end
return TRUE
end

[1] -- você coloca o id da vocação

 

você pode colocar isso no seu login.lua ou criar outro script , na pasta data/creaturescript. a tag é <event type="login" name="xxx" script="xxx.lua"/>

 

lembrando que esse script é apenas para x vocação do seu server logar e ja começar com a outfit ja setada.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...