Jump to content

Search the Community

Showing results for tags 'lib'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

Found 12 results

  1. jenison06

    Broke System

    Alguem consegue adaptar sistema de contagem, o meu nao esta contando apenas no abra e msmo assim so conta 1 ball. Action ( Catch.lua) Lib (catch system.lua) Checatch (Talkaction) function onSay(cid, words, param, channel) if param == "" then return true end getBrokesIn(cid, param) return true end
  2. Como Modificar e criar novos logs? Use uma função que salva o valor dos arquivos, assim você pode criar um sistema de log. Simples.A maneira como você usa é tão grande quanto a sua imaginação. Lua(LIB) Chamada de retorno para o log Lua
  3. Fala XTibianos! Vim disponibilizar e ensinar como usar a livraria xml em lua, desenvolvida por mim. Ela foi desenvolvida para substituir a livraria padrão disponibilizada por lua para trabalhar com dados xml. Essa livraria não requer a dll-xml necessária para a livraria padrão lua. Aqui tem o tutorial criado por mim para demonstrar as funções e suas implementações da livraria luaxml. Tutorial lua lib xml padrão Vamos lá. Primeiro, a livraria: Vou ensinar como usar ela. Vou usar como exemplo uma parte do arquivo vocations.xml: Primeiro, carregar o arquivo. Ele vai retornar um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". Buscar a tag desejada. Ele vai retornar uma tabela contendo todos os parametros que foram lidos no arquivo. O primeiro argumento da função, é o nome da tag requerida. exemplo: <tagNome ....>, tagNome seria o primeiro argumento da função. O segundo elemento é usado para diferenciar um bloco de outro como no caso do arquivo vocations que contem varias vocations, mas apenas uma é a requerida. O terceiro elemento é o que diferencia um bloco de outro similar. seguindo o exemplo do arquivo vocations, existe varias vocações, mas apenas uma delas tem o id de numero 2. Imprime o que foi lido no arquivo. a saida seria essa, nesse caso. Mas, ela tambem é uma tabela, por isso, voce pode pegar os elementos dentro dela dessa forma. As tags existentes dentro do bloco "vocation", tambem é uma tabela com indice numerico; portanto é valido pegar os dados dela dessa forma. Cada tag que exista dentro do bloco, vem como uma tabela com indicie numerico. Criando objetos para xml: O argumento inserido , seria o nome do bloco. Ex -> <novo> </novo> Adiciona tag's dentro do corpo do bloco. Pode ser adicionado quantas tags quiser. Cria uma tagbloco ou bloco dentro do bloco principal. Ex -> <tagBloco inserido="primer" ordem="2" face="not"> </tagBloco> Essa função retorna um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". Dessa forma que foi declarada sem uma tabela contendo os parametros da tag, ela é criada como um bloco. Ex -> <newBloco> </newBloco> Adiciona tag's ao corpo do novo bloco/tagbloco criado pela função append. E por fim, salva os dados em um arquivo. Nessa função, existe o argumento unico que é o destino do arquivo e seu nome, que nesse caso foi ocultado. Esse é os dados dentro do arquivo gerador pelo script. Devido as novas atualizações feitas a lib, agora podeis usar caracteres especial de busca e inserção de maiores informações para busca. Vou usar como exemplo essa parte do arquivo items.xml e movements.xml para explicar essas mudanças. items movements Na versão anterior da lib ela não poderia buscar informações no arquivo items.xml devido a um erro na ora de selecionar o bloco buscado. O problema residia em que: ao encontrar uma tag ela busca o seu fechamento, sendo que, no exemplo da parte do arquivo items que postei acima, ela pegava todo esse bloco, dessa forma anulando o verdadeiro id buscado. Isso foi resolvido. agora ela filtra o bloco encontrado antes de fazer a analise de que seja o dado requisitado. Outro problema era quando se desejava buscar uma informação mais precisa, como no caso do arquivo movements.xml que existe duas tags com os mesmo ids equip e deequip; se eu colocasse o id de qualquer item ele me retornaria a primeira sentença encontrada que na maioria das vezes não era a que eu queria. isso também foi corrigido; agora podeis usar mais informações para melhorar a precisão da busca. Veja esse exemplo: Obs. Os codigos estão codificados em utf8, converta para ansi antes de usa-los. É isso ae pessoal, espero que gostem; qualquer erro ou sugestão serão bem vindas. obrigado.
  4. Hail Xtibianos. Trago a vós uma serie de funções que eu uso no meu servidor e que pode ser úteis ao seu. Lembrando que algumas funções podem fazer uso de uma livraria xml criado por mim e posta nesse tópico. Essa função tem por objetivo criar uma data formatada (00:00:00) de um intervalo de tempo. function intervalClockFormat(ini,fim) --[[( Marcryzius )]]--local ini,fim = tonumber(ini),tonumber(fim)if not(ini or fim)then return "error",print('function intervalClock erro: type de variaveis invalidas') endlocal tienpo = fim-ini-- existe o parametro de dia, mas não está sendo retornado (usado).local day,hour,minu,seco = tienpo/60/60/23%30,math.floor(tienpo/60/60%23), math.floor(tienpo/60%60),math.floor(tienpo%60) return (hour < 10 and "0"..hour or hour)..":"..(minu < 10 and "0"..minu or minu)..":"..(seco < 10 and "0"..seco or seco)endEx: print(intervalClockFormat(os.time(),os.time()+98)) >> 00:01:38print(intervalClockFormat(os.time(),os.time()+6598)) >> 01:49:58 Essas funções tem por objetivo salvar as informações de uma determinada quest e saber se o player tem essa quest salva em seu histórico. function saveQuestsInfor(uid,name,cid,other) --[[( Marcryzius )]]----[[ uid = Item.uid usado no bau(entre outros) para receber o item da Quest name = nome do item dado ao player ou nome da quest cid = identificacao do player other = informacoes adicionais para serem salvas junto a quest]]--if not(db.executeQuery("SELECT * FROM `server_quests`;"))then -- caso a table não exista, será criada db.executeQuery("CREATE TABLE `server_quests` (`uid` INTEGER, `name` VARCHAR(255), `name_player` VARCHAR(255), `pos` VARCHAR(255), `other` TEXT);")end-- caso o parametro uid seja numero, se pega a posição do item ou, caso não, se pega a posição do player.local other,pos2 = other or '',''local pos = type(uid) == 'number' and getThingPos(uid) or getCreaturePosition(cid) pos2 = 'x='..pos.x..', y='..pos.y..', z='..pos.z -- verifica se tudo está correto. if not(type(name) == 'string') or not(tonumber(cid))then return false, print('Funcao requer parametros: name,cid') end -- salva as informações na database. db.executeQuery("INSERT INTO `server_quests` (`uid`, `name`, `name_player`,`pos`,`other`) VALUES ("..(uid or tonumber(pos.x..''..pos.y..''..pos.z))..",'"..name.."', '"..getCreatureName(cid).."','"..pos2.."','"..other.."');") return trueendfunction getSaveQuestsInfor(uid,cid) --[[( Marcryzius )]]--local str = false if(tonumber(uid))then str = db.getResult("SELECT * FROM `server_quests` WHERE `uid` = '"..uid.."' AND `name_player` = ".. db.escapeString(getCreatureName(cid))..";") elseif(type(uid) == 'string')then str = db.getResult("SELECT * FROM `server_quests` WHERE `name_player` = " ..db.escapeString(getCreatureName(cid)).. " AND `name` = '"..uid.."';") else return false,print('getSaveQuestInfor: tipo de uid invalido > '..tostring(type(uid))) end return (str:getID() == -1) and true or false end Essa função serve para por a primeira letra de cada palavra da 'msg' em maiúscula. function upperPrimer(msg) --[[( Marcryzius )]]--local txt = '' for k in string.gmatch(msg,'%a+') do if(#k > 1)then txt = txt..' '..k:gsub("^%a", function(s) return s:upper() end) else txt = txt..' '..k end end return txt:sub(2,-1)endEx:print(upperPrimer("toda primeira letra de cada palavra desse texto foi colocada em maiusculo")) >> Toda Primeira Letra De Cada Palavra Desse Texto Foi Colocada Em Maiusculo Função criada para determinar o valor inteiro mais próximo de uma fração. function math.proxInteger(value) --[[( Marcryzius )]]-- local value = tonumber(value) if not(value)then return 0,print('Function error: math.proxInteger() > valor => '..type(value)) end return value-math.floor(value) < 0.5 and math.floor(value) or math.ceil(value)end Essa função converte a 'string' em números e devolve a soma de todos os números. function getStoreString(str) --[[( Marcryzius )]]--local store = 0 if(type(str) == 'string')then for pos = 1,#str do store = store+str:sub(pos,pos):byte() end elseif(type(str) == 'number')then return str else print('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')') end return storeendEx:print(getStoreString("lua")) >> 322 Pega o level necessário para usar a arma dentro do arquivo weapons.xml function getLevelNeedToWeaponById(itemid) --[[( Marcryzius )]]--local xfile = xml:load("data/weapons/weapons.xml"):find('%a+','id',itemid) return tonumber(xfile and xfile.level) or 0end Essa função faz uma verificação se há um town em uma determinada área. function getTownInArea(pos, ranger) --[[( Marcryzius )]]--local ranger,townid,bloked = ranger or 200,1,{getTownId('Gods Island'),getTownId('Isle of Destiny')} -- towns suprimidos while getTownName(townid) do local get = getTownTemplePosition(townid) if not(isInArray(bloked,townid)) and ((pos.x >= get.x-ranger and pos.x <= get.x+ranger)and(pos.y >= get.y-ranger and pos.y <= get.y+ranger))then return townid else townid = townid+1 end end return 0 --retorna 0 (zero) para servir como condição.end Pega o nome e o level do top function getTopLevel() --[[( Marcryzius )]]--local target,name,level = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 ORDER BY 'level' DESC;"),"",0 if(target:getID() ~= -1) then repeat local glevel = target:getDataInt("level") if(level < glevel)then name,level = target:getDataString("name"), glevel end until not(target:next()) end target:free() return name,levelend Verifica se existe o nome de um player mesmo ele estando offline. function playerExistName(nome) --[[( Marcryzius )]]--local db = db.getResult("SELECT `name` FROM `players` WHERE `id` = " ..getPlayerGUIDByName(nome).. ";") if not(db:getID() == -1) then return db:getDataString("name") end return falseend Retorna o tempo vigente apenas em segundos function HorasParaSegundos() --[[( Marcryzius )]]-- local hour,minu,second = tostring(os.date("%H:%M:%S")):match('(%d+)%d+)%d+)') return ((tonumber(hour) or 0)*3600)+((tonumber(minu) or 0)*60)+secondend
  5. Eae Xtibianos! Td na paz? Eu vim aqui para postar um script que achei na net do sistema de Multi Linguagem, eu creio que seja o primeiro do fórum, eu vi que o Zipter, fez um em um pedido, porém ele não funciona da mesma forma que este. Então vamos começar... Primeiramente Execute este código na sua database: ALTER TABLE `accounts` ADD `language` INT( 11 ) NOT NULL DEFAULT '0' Agora em data/lib/050-function.lua no final do arquivo adicione este código: function getPlayerLanguage(cid) -- By Acubens local Lang = db.getResult("SELECT `language` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1") if Lang:getID() ~= LUA_ERROR then local langid = Lang:getDataInt("language") Lang:free() return langid end return LUA_ERROR end function doPlayerSetLanguage(cid, new) -- By Drazyn1291 local acc = getPlayerAccountId(cid) if new == 2 then db.executeQuery("UPDATE `accounts` SET language = 2 WHERE `id` = " .. acc) elseif new == 1 then db.executeQuery("UPDATE `accounts` SET language = 1 WHERE `id` = " .. acc) else db.executeQuery("UPDATE `accounts` SET language = 0 WHERE `id` = " .. acc) end end Agora em Agora em lib/000-constant.lua Adicione isso no final do arquivo: ENGLISH = 0 SPANISH = 1 PORTUGUES = 2 Você pode criar suas linguagem com os ID's acima! Funções: getPlayerLanguage(cid) -- By Acubens doPlayerSetLanguage(cid, new) -- By Drazyn1291 Creio que só de ler a função já saibam oque faz né?? Exemplo: function onLogin(cid) -- By Drazyn local msg = { [PORTUGUES] = {"Bem-Vindo!"}, [sPANISH] = {"Bienvenida"}, [ENGLISH] = {"Welcome!"} } doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, msg[getPlayerLanguage(cid)][1]) return true end Testado no Tfs 0.4 Créditos: Acubens -- Por Criar o sistema Drazyn1291 -- Por criar a função doPlayerSetLanguage(cid, new) e pelo Exemplo!
  6. como o titulo ja diz, alguem me ajuda a colocar meu ot tibia em % o hp e mp ? ele e ot lvl alto ai fica as macadas de vida. Queria saber se alguem pode me ajudar passo a passo a botar porcentagem.
  7. Então galera . Queria saber se alguém poder disponibiliza um script de relfect. Seria +/- assim um cara usa um ring e ao usar esse ring refletia 10% de dano da pessoa que esta atacando. Sera que alguém pode ajudar ? Id do item: 11387 Agradeço desde e ja ! *-*-
  8. Eae galera xtibiana hoje irei disponbilizar um novo sistema de audio. Ou melhor 2 sistemas de audios rs acho que alguns viram o sistema de som AFL que disponiblizei para o xtibia. Mais ele erá muito limitado e alem de alguns bugs. Então eu comecei um projeto pokemon(que ainda está em pé) e a primeira coisa que veio na cabeça e um sistema de som completo que não travesse e que funcione no client da cipsoft. Então vamos la: Vamos escolher qual sistema de som vamos usar primeiramente vou explicar cada ponto: Dll Audio - A dll e compacta e super eficiente mais tem uma instalação um pouco mais dificil e requer conhecimento *Junto vem um dll com o ip(127.0.0.1) mais não se preocupe coloquei o projeto do Visual C++ para você mudar o ip e recompilar. Ela está disponivel aki: Audio Dll+Project VC++.rar Prontinho agora vamos a instalação: Primeiro execute o server de audio junto ao seu otserv: Server Audio Dll or Vb Form.rar Instale a blibioteca lua socket no seu otserv: http://w3.impa.br/~diego/software/luasocket/ Agora coloque está funcão na sua lib: function sendAudio(cid, audio)require('socket') local ip = "127.0.0.1" -- Seu ip Akilocal client = socket.connect(ip, 1234)local t = "Send,"..doConvertIntegerToIp(getPlayerIp(cid))..","..audio.."" client:send(t.."\n") client:settimeout(0.1)client:close()end Pronto quando quiser executar um som basta usar a função sendAudio(cid, "id audio") Se tiver usando a dll todos o sons devem ser guardados junto a ela. Todos os formatos de audio devem ser ".wav" e todos precisam ser enumerados de 000 a 999 se não seguir tal regra terá varios problemas. Agora vou passar um codigo em vb que fiz para você injentar a dll antes que o seu client inicie: E NECESSARIO EXECUTAR DENTRO DE UM THEARED QUANDO FOR FAZER O SEU LAUNCHER. Audio Dll+Project VC++.rar Server Audio Dll or Vb Form.rar
  9. Fala XTibianos! Vim disponibilizar e ensinar como usar a livraria xml em lua desenvolvida por mim. A livraria: Vou ensinar como usar ela. Vou usar como exemplo uma parte do arquivo vocations.xml: Primeiro, carregar o arquivo. Ele vai retornar um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". Buscar a tag desejada. Ele vai retornar uma tabela contendo todos os parametros que foram lidos no arquivo. O primeiro argumento da função, é o nome da tag requerida. exemplo: <tagNome ....>, tagNome seria o primeiro argumento da função. O segundo elemento é usado para diferenciar um bloco de outro como no caso do arquivo vocations que contem varias vocations, mas apenas uma é a requerida. O terceiro elemento é o que diferencia um bloco de outro similar. seguindo o exemplo do arquivo vocations, existe varias vocações, mas apenas uma delas tem o id de numero 2. Imprime o que foi lido no arquivo. a saida seria essa, nesse caso. Mas, ela tambem é uma tabela, por isso, voce pode pegar os elementos dentro dela dessa forma. As tags existentes dentro do bloco "vocation", tambem é uma tabela com indice numerico; portanto é valido pegar os dados dela dessa forma. Cada tag que exista dentro do bloco, vem como uma tabela com indicie numerico. Criando objetos para xml: O argumento inserido , seria o nome do bloco. Ex -> <novo> </novo> Adiciona tag's dentro do corpo do bloco. Pode ser adicionado quantas tags quiser. Cria uma tagbloco ou bloco dentro do bloco principal. Ex -> <tagBloco inserido="primer" ordem="2" face="not"> </tagBloco> Essa função retorna um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". Dessa forma que foi declarada sem uma tabela contendo os parametros da tag, ela é criada como um bloco. Ex -> <newBloco> </newBloco> Adiciona tag's ao corpo do novo bloco/tagbloco criado pela função append. E por fim, salva os dados em um arquivo. Nessa função, existe o argumento unico que é o destino do arquivo e seu nome, que nesse caso foi ocultado. É isso ae pessoal, espero que gostem. @Daniel, deleta esse topico. Por algum motivo, duplicou o topico.
  10. Olá. Esse conteúdo foi desenvolvido pelo membro Non Sequitur, da Otland. Decidi trazer a vocês, então vamos lá. MODAL WINDOW A forma atual que podemos implementar Modal Windows é bastante complicada, de acordo com Non Sequitur. Ter de criá-la em algum lugar, registrar um evento, adicionar botões de alguma forma estranha para fazer funcionar, sem falar que tem que ter em conta ids de janelas, botões, ids de escolha em algum arquivo diferente, etc... O que você pode fazer com isto? -- The helper lib is used by passing a table value to the ModalWindow functionlocal window = ModalWindow { title = 'Title', message = 'Please, choose the lowest number and press [Ok]'}local lowestChoicefor i = 1, 5 do local value = math.random(1, 100) -- modalWindow:addChoice() returns the choice object that will be passed to the callbacks local choice = window:addChoice(value) -- This way we can pass extra information to the callback choice.value = value if not lowestChoice or lowestChoice.value > value then lowestChoice = choice endendlowestChoice.correct = true-- Add a button with a specific callbackwindow:addButton('Ok', function(button, choice) if choice.correct then print('Player selected the correct option.') else print('Player selected the incorrect option.') end end)-- Set this button as the default enter buttonwindow:setDefaultEnterButton('Ok')-- Add a button without a specific callbackwindow:addButton('Close')window:setDefaultEscapeButton('Close')-- If a button without a specific callback is pressed, this fucntion will be calledwindow:setDefaultCallback( function(button, choice) print('Default callback, button pressed: ' .. button.text .. ' player choice: ' .. choice.text) end)window:sendToPlayer(player) Você pode usar este exemplo em uma talkaction e testar por si mesmo. Diferente do que é mostrado no código acima, você também pode usar modalWindow: addbuttons (...) e modalWindow: addChoices (...) para adicionar vários botões / opções ao mesmo tempo. INSTALANDO Em data/lib/lib.lua dofile('data/lib/modalwindow.lua') Crie o arquivo data/lib/modalwindow.lua if not modalWindows then modalWindows = { modalWindowConstructor = ModalWindow, nextFreeId = 500, windows = {} }end local MT = {}MT.__index = MT function ModalWindow(...) local args = {...} if type(args[1]) == 'table' then local self = setmetatable(args[1], MT) local id = modalWindows.nextFreeId self.id = id self.buttons = {} self.choices = {} self.players = {} self.created = false modalWindows.nextFreeId = id + 1 table.insert(modalWindows.windows, self) return self end return modalWindows.modalWindowConstructor(...)end function MT:setDefaultCallback(callback) self.defaultCallback = callbackend function MT:addButton(text, callback) local button = {text = tostring(text), callback = callback} table.insert(self.buttons, button) return buttonend function MT:addButtons(...) for _, text in ipairs({...}) do table.insert(self.buttons, {text = tostring(text)}) endend function MT:addChoice(text) local choice = {text = tostring(text)} table.insert(self.choices, choice) return choiceend function MT:addChoices(...) for _, text in ipairs({...}) do table.insert(self.choices, {text = tostring(text)}) endend function MT:setDefaultEnterButton(text) self.defaultEnterButton = textend function MT:setDefaultEscapeButton(text) self.defaultEscapeButton = textend function MT:setTitle(title) self.title = tostring(title)end function MT:setMessage(message) self.message = tostring(message)end local buttonOrder = { [4] = {3, 4, 2, 1}, [3] = {2, 3, 1}, [2] = {1, 2}, [1] = {1}}function MT:create() local modalWindow = modalWindows.modalWindowConstructor(self.id, self.title, self.message) local order = buttonOrder[math.min(#self.buttons, 4)] if order then for _, i in ipairs(order) do local button = self.buttons[i] modalWindow:addButton(i, button.text) button.id = i if button.text == self.defaultEnterButton then modalWindow:setDefaultEnterButton(i) elseif button.text == self.defaultEscapeButton then modalWindow:setDefaultEscapeButton(i) end end end for _, choice in ipairs(self.choices) do modalWindow:addChoice(_, choice.text) choice.id = _ end self.modalWindow = modalWindowend function MT:sendToPlayer(player) if not self.modalWindow then self:create() end player:registerEvent('ModalWindowHelper') self.players[player:getId()] = true return self.modalWindow:sendToPlayer(player)end Em data/creaturescripts/creaturescripts.xml <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Crie o arquivo data/creaturescripts/scripts/modalwindowhelper.lua function onModalWindow(player, modalWindowId, buttonId, choiceId) local modalWindow for _, window in ipairs(modalWindows.windows) do if window.id == modalWindowId then modalWindow = window break end end if not modalWindow then return true end local playerId = player:getId() if not modalWindow.players[playerId] then return true end modalWindow.players[playerId] = nil local choice = modalWindow.choices[choiceId] for _, button in ipairs(modalWindow.buttons) do if button.id == buttonId then local callback = button.callback or modalWindow.defaultCallback if callback then callback(button, choice) break end end end return trueend
  11. [24/11/2013 12:41:01] [Error - LuaScriptInterface::loadFile] data/lib/configuration.lua:9275: '}' expected (to close '{' at line 8505) near 'newpokedex' [24/11/2013 12:41:01] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [24/11/2013 12:41:02] [Error - LuaScriptInterface::loadFile] data/lib/configuration.lua:9275: '}' expected (to close '{' at line 8505) near 'newpokedex' [24/11/2013 12:41:02] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ Configuration.lib Help Pliss http://www.mediafire...nfiguration.rar
  12. Quando o zombie event inicia e aparece da uns erros na distro esse aki: [22/10/2013 05:42:32] [Error - CreatureScript Interface] [22/10/2013 05:42:32] data/creaturescripts/scripts/zombie.lua:onStatsChange [22/10/2013 05:42:32] Description: [22/10/2013 05:42:33] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value) [22/10/2013 05:42:33] stack traceback: [22/10/2013 05:42:33] data/lib/032-position.lua:2: in function 'isInArea' [22/10/2013 05:42:33] data/creaturescripts/scripts/zombie.lua:17: in function <data/creaturescripts/scripts/zombie.lua:15> e tambem os players pode atacar os zombies sendo que ja colocquei no-pvp e no-logout la na area e os zombies atacam os players e eles nao vao pro templo. Eu tentei arrumar isso ai so que so deu em merda. Aki o zombie.lua e aki o 032-position: @------------------------------------Resolvido------------------------------------------ Ja resolvi esse meu problema esta aqui embaixo a soluçao caso alguem esteja com o mesmo problema(e meio improvavel). data/creaturescripts/scripts/onthink.lua data/creaturescripts/scripts/ondeath.lua tags: <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> e adicione isso no monster zombie event: <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> Acho que e so eu mesmo que tinha esse problema mesmo so muito burro.
×
×
  • Create New...