Ir para conteúdo
Entre para seguir isso  
Magus

firstitems.lua por vocação

Recommended Posts

Magus    2
Magus

Abra o arquivo data/creaturescripts/scripts/firstitems.lua, apague o que tem lá e adicione:

 

local firstItems =
{
   [0] = { -- No-vocation (sem vocação)
       2398, -- Mace
       2512, -- Wooden Shield
       2649, -- Leather Legs
       2170, -- Silver Amulet
       2461, -- Leather Helmet
       2467, -- Leather Armor
       2643, -- Leather Boots
   },

   [1] = { --Sorcerer
       2525, -- Shield
       2190, -- Weapon
       2661, -- Necklace
       2457, -- Helmet
       2463, -- Armor
       2647, -- Legs
       2643  -- Boots
   },

   [2] = { --Druid
       2525, -- Shield
       2182, -- Weapon
       2661, -- Necklace
       2457, -- Helmet
       2463, -- Armor
       2647, -- Legs
       2643  -- Boots
   },

   [3] = { --Paladin
       2455, -- Weapon
       {2543,100}, -- Ammunition,Count
       2661, -- Necklace
       2457, -- Helmet
       2463, -- Armor
       2647, -- Legs
       2643  -- Boots
   },

   [4] = { --Knight
       2383, -- Weapon (Sword)
       2428, -- Weapon (Axe)
       2422, -- Weapon (Club)
       2525, -- Shield
       2661, -- Necklace
       2457, -- Helmet
       2463, -- Armor
       2647, -- Legs
       2643  -- Boots
   }
}

function onLogin(cid)
   if getPlayerStorageValue(cid, 30001) <= 0 then
       local bag = doPlayerAddItem(cid, 1988, 1) -- Backpack
       doAddContainerItem(bag, 2554, 1) -- Shovel
       doAddContainerItem(bag, 2120, 1) -- Rope

       local mergeidx = getPlayerVocation(cid)
       for k,v in ipairs(firstItems[mergeidx]) do
           local isArray = type(v) == "table"
           doPlayerAddItem(cid, (isArray and v[1] or v), (isArray and v[2] or 1))
       end

       setPlayerStorageValue(cid, 30001, 1)
   end

   return TRUE
end

O que vem configurado é um Plate Set (Leather Set no caso de sem vocação), caso queria mudar altere na primeira variável. Somente verifique se o novo jogador terá capacidade suficiente para aguentar todos os equips, caso não tenha alguns podem cair no chão.

 

Esse é o script quando o jogador loga pela primeira vez e recebe seus primeiros itens.

 

Valeu Makaveli pelo toque da vocação 0.

Compartilhar este post


Link para o post
Sinister    0
Sinister

Muito bom o script o.o

Ou tipo, eu to aprendendo .lua, teria como me explicar o que é isso?

for k,v in ipairs(firstItems[mergeidx]) do

 

Abraços

PS: Esse k, v, in ipairs e o mergeidx

Compartilhar este post


Link para o post
Roku    0
Roku

Muito bom Magus, isso tem nos OTserv Darkness mas quase ninguem sabe como fazer, alem do mais, deve ser acresentado algo no config.lua?

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Kara nao testei nda mas pela logica(nao sei se eh oq acontece) se vc colocar mais de 2 item que vao na mao o terceiro caira no chao mesmo tendo adicinado a bp(eu acho).

E outra (isArray and v[1] or v) essa parte nao funciona eu acho pq a função isArray retorna TRUE e FALSE e sendo assim os script aceita sempre como true pois eh diferente de false ou nil.(EU acho tb)

 

Flws ae

 

Compartilhar este post


Link para o post
Magus    2
Magus
Muito bom o script o.o

Ou tipo, eu to aprendendo .lua, teria como me explicar o que é isso?

for k,v in ipairs(firstItems[mergeidx]) do

 

Abraços

PS: Esse k, v, in ipairs e o mergeidx

Esse é um loop próprio para manipulação de array, igual foreach() do php; k é a Key(chave) e v Value(valor) do array. mergeidx é apenas uma variável que eu criei. Tem um tutorial na seção de tutos que ensina melhor (Y)

 

Muito bom Magus, isso tem nos OTserv Darkness mas quase ninguem sabe como fazer, alem do mais, deve ser acresentado algo no config.lua?

Não.

 

Kara nao testei nda mas pela logica(nao sei se eh oq acontece) se vc colocar mais de 2 item que vao na mao o terceiro caira no chao mesmo tendo adicinado a bp(eu acho).

E outra (isArray and v[1] or v) essa parte nao funciona eu acho pq a função isArray retorna TRUE e FALSE e sendo assim os script aceita sempre como true pois eh diferente de false ou nil.(EU acho tb)

 

Flws ae

 

É mesmo, na verdade se tiver a backpack ele não cai no chão, mas no caso a BP é criada depois. Vou atualizar.

isArray é uma variável que eu setei mais acima, não é a função isInArray.

 

Já testei in-game.

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

sempre que tento entrar no acc manager acontece isso

 

[22/06/2009 11:25:49] Account Manager has logged in.

 

[22/06/2009 11:25:49] Lua Script Error: [CreatureScript Interface]

[22/06/2009 11:25:49] data/creaturescripts/scripts/firstitems.lua:onLogin

 

[22/06/2009 11:25:49] data/creaturescripts/scripts/firstitems.lua:71: bad argument #1 to 'ipairs' (table expected, got nil)

[22/06/2009 11:25:49] stack traceback:

[22/06/2009 11:25:49] [C]: in function 'ipairs'

[22/06/2009 11:25:49] data/creaturescripts/scripts/firstitems.lua:71: in function <data/creaturescripts/scripts/firstitems.lua:64>

[22/06/2009 11:25:49] Account Manager has logged out.

Compartilhar este post


Link para o post
lutonzoron    0
lutonzoron

otimo, valeu mesmo prcourei isso muito tempo com isso reduz muito lixo no chão do ot

Compartilhar este post


Link para o post
Spyk3    0
Spyk3

Magus, se no caso eu fizer uma nova vocação, é só adicionar a seguinte tag?

 

 

 
{ --[b]Hunter[/b]
2455, -- Weapon
{2543,100}, -- Ammunition,Count
2661, -- Necklace
2457, -- Helmet
2463, -- Armor
2647, -- Legs
2643 -- Boots
},

 

Se não for, explica ae por favor,

 

Pain

Compartilhar este post


Link para o post
Magus    2
Magus

@carlinho

A vocação que está tentando logar não está configurada no script.

 

@Spyk3

Dei uma editada no começo pra ficar mais fácil de entender.

Pra novas vocações você adiciona uma vírgula na última chave (},) e cria outra tabela:

[iD_DA_NOVA_VOCAÇÃO] = { equips }

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

entao nao posso mais usar o acc manager?

Compartilhar este post


Link para o post
Mithz    0
Mithz

@ marcryzius

O arquivo firstitems.lua é localizado na pasta creaturescripts, você já deve ter percebido que todos que fazem personagens no account manager vem com uma Jacket e um Club, e não dá nenhum bug, então acho que colocando o script do Magus não deve bugar, mas as vezes também depende da versão do seu TFS. (?)

 

@ Script

Adorei, como sempre você sempre inova a OTNet, parabéns e continue assim Magus!

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

sim mas toda vez que tento entrar no acc manager ele remover o acc manager e da erro no console entao ninguem pode criar conta e nem character.

Compartilhar este post


Link para o post
garep    0
garep

massa gostei mt vai ajuda uma galera...

Compartilhar este post


Link para o post
Lyu Elite    0
Lyu Elite

Obrigado Magus meu amigo está precisando;

Aprovado -- Minha Opinião

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

Magus, poderia me explicar o que essa parte do script está dizendo e como ela funciona ?

 

local mergeidx = getPlayerVocation(cid)

for k,v in ipairs(firstItems[mergeidx]) do

local isArray = type(v) == "table"

doPlayerAddItem(cid, (isArray and v[1] or v), (isArray and v[2] or 1))

end

Att.

Balillo

Compartilhar este post


Link para o post
Magus    2
Magus
;778925']Magus' date=' poderia me explicar o que essa parte do script está dizendo e como ela funciona ?

 

local mergeidx = getPlayerVocation(cid)

for k,v in ipairs(firstItems[mergeidx]) do

local isArray = type(v) == "table"

doPlayerAddItem(cid, (isArray and v[1] or v), (isArray and v[2] or 1))

end

Att.

Balillo

O array firstItems está dividido em sub-arrays com os itens, sendo a chave pra acessar cada sub-array o ID da vocação. Aí a variável mergeidx pega o sub-array (os itens) da vocação através desse ID, que vai ser onde a função ipairs() irá trabalhar para adicionar cada item do sub-array no jogador.

 

Acho que deu pra entender ^^

Compartilhar este post


Link para o post
kako_loko    0
kako_loko

Cara eu queria saber fazer Scripts Mas Como não sei fico pegando dos outros...x.>

Mas Seu Script está muito bom tem no Darkness Ot...xD

Compartilhar este post


Link para o post
Rafael20x    0
Rafael20x

Não entendi... não éra para ser um script?

Compartilhar este post


Link para o post
hutebako    0
hutebako

Cara eu quero mudar as armas dos knight pra

Sword 2409

Club 3966

Axe 2428

 

Só que quando eu mudo os id, abro o ot, o acc manager não loga!

Tipo eu do 1/1 ou so o enter mesmo, dai aparece la pra escolhe um char, quando clica no acc manager da uma carregada e depois volta la pra lista de escolher char.

Compartilhar este post


Link para o post
Magus    2
Magus

@hute

Poste aqui o seu script pra mim ver se não há nada errado.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×