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?
Proibir nome de monstro script LUA

Você usar Site ? Pelo Modern ACC tem como configurar para o player não por certos nome inválidos !
Abraços!
Atenciosamente : AdilsonTsunami
Te ajudei? click em
Meus Trabalhos:
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"/>

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
Abraços!
Atenciosamente : AdilsonTsunami
Te ajudei? click em
Meus Trabalhos:
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

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
Atenciosamente : AdilsonTsunami
Te ajudei? click em
Meus Trabalhos:
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
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
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

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>
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
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

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
Valeu ai!
•Topico Resolvido / Reportado para Moverem
Usuário banido por divulgação indevida.