Ir para conteúdo
  • 0

Proibir nome de monstro script LUA


znotewebsite

Pergunta

Eae galerinha, eu uso ZNOTE como plataforma por diversos motivos alguns até obrigatórios, mas eu acho ele a melhor plataforma hoje então não ligo, só que eu não sei como bloquear nome de criaturas por lá, teria alguma forma de bloquear nome de criaturas? Tipo ao player logar... nome = dragon,rotworm = kick,ban ou qlqr coisa, teleportado pra algum lugar... Alguém saberia alguma forma de me ajudar?

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

tem como bloquear por script, assim:

 

cria um arquivo chamado monstername.lua em data/creaturescripts/scripts e cole isso dentro:

 

function onLogin(cid)
   local result = doCreateMonster(getCreatureName(cid), getThingPos(cid), false)
   if tonumber(result) then
       doRemoveCreature(result)
   end
return not result
end

 

agora abra o arquivo creaturescripts.xml (data/creaturescripts) e adicione essa tag:

 

<event type="login" name="CheckMonsterName" event="script" value="monstername.lua"/>

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo testei aqui deu erro , qualquer player que logar o script pensa que e monster é não acontece nada , só da esse erro no console , se desse pra arruma e pra quando o player com nome de monstro logar é for kikado aparecer a msg "Proibido Nomes De Monstro" ou algo assim ficaria legal !

 

SS

 

 

 

post-360171-0-85837700-1370798470_thumb.jpg

 

 

 

Abraços!

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

  • 0

ah você usa versão mais antiga, aí complica... testa assim:

 

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
   monsters = xml:read("*all")
   xml:close()
end

function onLogin(cid)

   if monsters and monsters:find('name="'..getCreatureName..'"') then
       return false
   end

return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Versão 8.60 , amigo tenta fazer um que não permita o player criar personagens com nome que possamos editar o nomes que não são permitidos! exemplo :

 

Local monster : "demon","frost dragon","fury" , é assim por diante !

 

Só uma ideia!

 

Flw

Link para o comentário
Compartilhar em outros sites

  • 0

Versão 8.60 , amigo tenta fazer um que não permita o player criar personagens com nome que possamos editar o nomes que não são permitidos! exemplo :

 

Local monster : "demon","frost dragon","fury" , é assim por diante !

 

Só uma ideia!

 

Flw

 

Incentiva o cara ai da um rep :D

 

ah você usa versão mais antiga, aí complica... testa assim:

 

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
monsters = xml:read("*all")
xml:close()
end

function onLogin(cid)

if monsters and monsters:find('name="'..getCreatureName..'"') then
	return false
end

return true
end

 

Cara n funfo nenhum dos dois :\

+rep por ter tentado ajudar

Link para o comentário
Compartilhar em outros sites

  • 0

usa essa script:

 

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
   monsters = xml:read("*all")
   xml:close()
end

function onLogin(cid)

   print(type(monsters))
   print(getDataDir().."monster/monsters.xml")

   if monsters and monsters:find('name="'..getCreatureName..'"') then
       return false
   end

return true
end

 

vai aparecer 2 mensagens no seu console, me mostra elas

Link para o comentário
Compartilhar em outros sites

  • 0

usa essa script:

 

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
monsters = xml:read("*all")
xml:close()
end

function onLogin(cid)

print(type(monsters))
print(getDataDir().."monster/monsters.xml")

if monsters and monsters:find('name="'..getCreatureName..'"') then
	return false
end

return true
end

 

vai aparecer 2 mensagens no seu console, me mostra elas

 

[Error - CreatureScript Interface]

data/creaturescripts/scripts/monstername.lua:onLogin

Description:

data/creaturescripts/scripts/monstername.lua:13: attempt to concatenate global 'getCreatureName' <a function value>

stack traceback:

data/creaturescripts/scripts/monstername.lua:13: in function <data/creaturescripts/scripts/monstername.lua:8>

Link para o comentário
Compartilhar em outros sites

  • 0

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
       monsters = xml:read("*all")
       xml:close()
end

function onLogin(cid)

       print(type(monsters))
       print(getDataDir().."monster/monsters.xml")

       if monsters and monsters:find('name="'..getCreatureName(cid)..'"') then
               return false
       end

return true
end

or

function getAllMonsterNames()

local tmp = {}

   local file = io.open("data/monster/monster.xml", "r")

   for i in file:read("*a"):gmatch("<monsters(.-)</monsters>") do
       table.insert(tmp, i:match("monster name=(.-)"))
   end

   return tmp
end

function onLogin(cid)

   if isInArray(getAllMonsterNames(), getCreatureName(cid)) then
       doAddNamelock(getCreatureName(cid))
       return false
   end

   return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

sky, seu loop do for é executado apenas uma vez e a captura é feita incorretamente... o certo seria algo assim:

 

function getAllMonsterNames()
local tmp = {}
local file = io.open("monsters.xml", "r")
for i in file:read("*a"):gmatch("<(.-)>") do
	local name = i:match('.+name="(.-)".+')
	if name then
		table.insert(tmp, name)
	end
end
return tmp
end

 

mas o problema dessa função é que sempre que um player fizer login, o servidor vai ter que abrir o monsters.xml, fazer um loop considerável e depois fechar o arquivo (coisa que faltou na função) e se vários players logarem ao mesmo tempo, o server pode travar... então o mais correto seria abrir o arquivo apenas uma vez e armazenar os nomes dos monstros lidos e guardar as informações em uma variável que permanece até que o servidor feche, assim o arquivo só será aberto uma vez

 

usa esse script:

 

local xml = io.open(getDataDir().."monster/monsters.xml", "r")
local monsters = false
if xml then
local text = xml:read("*all")
xml:close()
monsters = {}
for monstername in text:gmatch('name="(.-)"') do
	table.insert(monsters, monstername)
end
end

function onLogin(cid)

if monsters and isInArray(monsters, getCreatureName(cid)) then
	return false
end

return true
end

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

  • 0

Funcionou o ultimo, amanha termino de dar os reps de geral!

Qnd tento entrar com dragon lord, na distro da q ele deu out e no tibia fica só carregando :D

 

Valeu ai!

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...