CA
talkaction

Info Monster Full

Por caotic, 26 de jan. de 2013 em Actions e Talkactions

info monster
monstro info
otserv
tibia
script
7
1.8k
caoticC
26 de janeiro de 2013 às 11:33

Ola pessoal xtibiano.

 

O Info Monster e um sistema que permite ver informações importantes de um monstro para o player.

Ele exibe vários atribbutos do monstro como por exemplo os ataques do monstro.

Assim o player antes de caçar um monstro ele irá analisar se ele poderá derrotar o monstro.

Além disso se o player errar o nome do monstro a talk exibe os nomes de todos os monstro do seu otserv assim o player podera identificar o monstro que ele procura.

 

 

Então vamos a talkactions.

 

Crie um arquivo lua chamado de info em talkactions e coloque isto:

 

function getDirMonsterByNameMonster(name)
t = {}
local monster = io.open("data/monster/monsters.xml", "r")
for i in monster:read("*a"):gmatch('<monster name="'..tostring(name)..'" file="(.-)"/>') do
table.insert(t, tostring(i))
end
return t[1] or 0
end
function getMonsterAttacks(name)
local dir = "data/monster/"..getDirMonsterByNameMonster(name)..""
local monster = io.open(""..dir.."", "r")
str = ""
for i in monster:read("*a"):gmatch('attack name="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getMonsterDefense(name)
local dir = "data/monster/"..getDirMonsterByNameMonster(name)..""
local monster = io.open(""..dir.."", "r")
str = ""
for i in monster:read("*a"):gmatch('defense name="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getMonsterLootItens(name)
local dir = "data/monster/"..getDirMonsterByNameMonster(name)..""
local monster = io.open(""..dir.."", "r")
str = ""
for i in monster:read("*a"):gmatch('id="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getMonsterVoices(name)
local dir = "data/monster/"..getDirMonsterByNameMonster(name)..""
local monster = io.open(""..dir.."", "r")
str = ""
for i in monster:read("*a"):gmatch('voice sentence="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getAllMonster()
local str = ""
local monster = io.open("data/monster/monsters.xml", "r")
str = "Você digitou incorretamente o nome do monstro veja a lista de monstro\n"
for i in monster:read("*a"):gmatch('<monster name="(.-)"') do
str = ""..str.." - "..i..""
end
return str
end
function getAttrMonster(name)
return "Vida = "..getMonsterInfo(name).health.."\nExp = "..getMonsterInfo(name).experience.."\n"
end
function onSay(cid, words, param, channel)
if param == "" or not param or param == " " then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa dizer o nome do monstro")
return true
end
local name = param
if (getMonsterInfo(param)) then
doShowTextDialog(cid, 1397, "Info Monster "..name.."\n"..getAttrMonster(name).."\nAttacks = "..getMonsterAttacks(name).."\n\nDefense = "..getMonsterDefense(name).."\n\nVoices = "..getMonsterVoices(name).."\n\nLoots = "..getMonsterLootItens(name).."")
else
doShowTextDialog(cid, 1397, getAllMonster())
return true
end
return true
end

 

Agora vá em talkactions.xml e coloque isto:

 

<talkaction words="/infom" event="script" value="info.lua"/>

 

 

Diga /infom(nome do monstro)

Se dizer um monstro que não existe irá abrir a lista dos monstro do seu otserv

Editado Fevereiro 3 por caotic

LuckOakeL
26 de janeiro de 2013 às 11:56

Legal, pode ser útil de alguma forma.

 

Agora um desafio simples, faz uma função que adiciona ataques no monstro.

Editado Janeiro 26 por LuckOake

OneshotO
26 de janeiro de 2013 às 12:20

Seus scripts são bastante criativos, mas, caramba, porque você teima em não identar seus códigos?

caoticC
26 de janeiro de 2013 às 12:37
Seus scripts são bastante criativos, mas, caramba, porque você teima em não identar seus códigos?

 

Sei la cara.

E chato não tem necessidade.

1 mês depois...
eduardo190696E
02 de fevereiro de 2013 às 14:43

Você é um ótico Scripter @Caotic, Mais falar que indentação não serve para nada já é de mais em.

20cm2
02 de fevereiro de 2013 às 16:45

Na realidade eu tenho preguiça tbm kk

Mas no final do script como no xtibia n tem tab vc usa ctrl h / tab por 5 espaços

caoticC
03 de fevereiro de 2013 às 10:41

Não gosto de identar.

Como eu disse não vejo necessidade nem e preguissa.

Editado Fevereiro 3 por caotic