35

Criando Novos Items

Por 35383, 08 de nov. de 2011 em Mods, funções e outros

otserv
tibia
script
6
3.7k
353833
08 de novembro de 2011 às 14:12

Pessoal vamos começar sei que não sou um bom scripter

mas vou tentar não chorar pelas criticas

 

Com esse script você nao precisara editar nada somente adicionar os scripts.

 

Vá na pasta do seu OT data/lib e criei um arquivo.lua e renomeie para

Item.lua apague tudo dentro e cole isso:

 

function doPlayerAddEditedItem(cid, itemid)
   local newxml = io.open("data/items/newitems.xml", "r")
   local configs = {}

   for i in newxml:read("*a"):gmatch("<item (.-)</item>") do
       local itemid = tonumber(i:match('id="(.-)"'))
       local itemconfig = {
           ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')),
    ["article"] = i:match('article.-=.-"(.-)"'),
           ["name"] = i:match('name.-=.-"(.-)"'),
           ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'),
           ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')),
           ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')),
           ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')),
           ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')),
           ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), 
       }
       configs[itemid] = itemconfig
   end
if configs[itemid] then
    local item = doPlayerAddItem(cid, configs[itemid].spriteid)
    for i,x in pairs(configs[itemid]) do
	doItemSetAttribute(item, i, x)
    end
end
end

 

Pronto agora vá na pasta do ot/data/items e crie um arquivo xml

e renomeie para novositems.xml apague tudo dentro e coloque isso:

 

<?xml version="1.0" encoding="UTF-8"?>
<items>
<item id="100" spriteid="2400" article="a" name="magic edited sword">
	<attribute key="description" value="Arma editada." />
	<attribute key="defense" value="45" />
	<attribute key="attack" value="100" />
	<attribute key="extradef" value="10" />
               <attribute key="extraatk" value="10" />
</item>
<item id="101" spriteid="2472" article="a" name="master plate armor">
	<attribute key="description" value="Armor editada." />
	<attribute key="armor" value="19" />
</item>
</items>

Bom como vocês podem ver os arquivos XML ele guarda os items adicionais a ele

ele funciona como o items.xml que tambem está na pasta

 

os atributos são:

 

    ♦ "description"
   ♦ "defense"
   ♦ "attack"
   ♦ "extradefense"
   ♦ "armor"
   ♦ "extraattack"

 

 

 

Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem...

 

:aaskull: Até mais.... :aaskull:

Editado Novembro 8 por Sheamus88

1 ano depois...
PabloxszP
05 de janeiro de 2013 às 17:33
:) vlw ai re+
SlicerS
05 de janeiro de 2013 às 17:37

amigo reviver topicos com esse tpw de conteudo eh considerado flood, leia as regras

Editado Janeiro 5 por Slicer

4 meses depois...
MaryGirl13M
19 de maio de 2013 às 02:16

Funciona mesmo, já foi testado no global?

guhunterG
19 de maio de 2013 às 02:44

Bom tutorial!Apesar de no começo dizer algumas coisas que foge do seu objetivo,mas é um ótimo tutorial para iniciantes..Ótimos trababalhos já feitos

 

Boa sorte nos seus próximos forum!

Nunca esqueça desta frase que meu amigo que perdi hoje mesmo me disse:você é um guerreiro,seu destino é ser um rei.

 

Era melhor pessoa que eu tinha conhecido..triste triste

Editado Maio 19 por guhunter

7 meses depois...
17 de dezembro de 2013 às 02:20

"PrisonDoom13, o último post deste tópico tem mais de 30 dias e uma nova postagem agora poderá ser considerada como flood!"

Eu sei, mais o que um usuário novato (como eu) que possui uma dúvida faz em relação a um post antigo? Ele não pode comentar/escrever no tópico por toda sua eternidade? rs

Seguinte, eu testei aqui e não funcionou.

 

newitems.xml

<?xml version="1.0" encoding="UTF-8"?>
<items>
 <item id="100" spriteid="2400" article="a" name="magic edited sword">
  <attribute key="description" value="Arma editada." />
  <attribute key="defense" value="45" />
  <attribute key="attack" value="100" />
  <attribute key="extradef" value="10" />
                <attribute key="extraatk" value="10" />
 </item>
 <item id="1313" spriteid="2472" article="a" name="master plate armor">
  <attribute key="description" value="Awesome Armor." />
  <attribute key="armor" value="20" />
 </item>
</items>

custom_item.lua

function onUse(cid, item, frompos, item2, topos)
 if item.uid == 1313 then
 queststatus = getPlayerStorageValue(cid,1313)
 if queststatus == -1 or queststatus == 0 then
 doPlayerSendTextMessage(cid,22,"You got a Custom Item")
item_uid = doPlayerAddEditedItem(cid,1313) 

 setPlayerStorageValue(cid,1313,0)

else
 doPlayerSendTextMessage(cid,22,"Esta vazio.")
end
 else
 return 0
 end
 return 1
 end

actions.xml

<action uniqueid="1313" script="custom_item.lua" />

O que houve de errado? Tibia ot 8.60

Editado Dezembro 17 por PrisonDoom13