Ir para conteúdo

caotic

Infante
  • Total de itens

    1599
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Histórico de Reputação

  1. Upvote
    caotic deu reputação a Junior001 em Edo Tensei System   
    Eae pessoal do xtibia hoje vou monstrar o novo edo tensei system.
     
    O player fala "edo tensei" se ele conseguir capturar o inimigo vai ser criado um item que invoca o edo tensei.
     
    Vá em spells e crie um arquivo lua chamado de edo tensei e coloque isto:
     
     
     
     
    Agora vá em spells e coloque esta tag:
     
     
     
     
     
    Agora vá em actions e crie um arquivo chamado de edo tensei e coloque isto:
     
     
     
     
     
    Coloque esta tag em actions.xml:
     
    Configurando.
     
    E simples na hora de colocar a tag em actions.xml você coloca o id do itemid que o player ira usar para invocar o edo tensei.
     
    CREDITOS:
    Hero: por postar em um outro forum.
    Junior001: por postar aque para voçês.
  2. Upvote
    caotic recebeu reputação de Junior001 em LUA Debbuger 2.0   
    Ola galera do xtibia hoje venho disponibilizar a versão atualizada do LD.
    LD e um debbuger feito por min que permite testar seus scripts.
    Nesta versão ele permite abrir arquivos lua e salvar arquivos.
    Além que bugs e foi concertado e algumas outras coisinhas
     

     
     
    A imagem acima ficou com a qualidade danificada.
    Mais o programa esta normal
     
    Para usar e simples.
    Coloque seu codigo clique em Iniciar Debbuger.
    Se quiser apenas testar basta clikar em "Execução de Code"
    Depois se quiser salvar basta clikar em menu e depois salvar.
     
     
    Disponível em:
    http://www.mediafire...14pu5ntwmi1hum3
  3. Upvote
    caotic deu reputação a Haxy em Morre Gean Carlos Riot (Subwat)   
    O TEU TPC TA CHEIO DE RATOS
    TEUS TUAS IDÉIAS N CORRESPONDEM AOS FATOS
    O FLOOD N PARA
    EU VEJO UM BAN REPETIR O PASSADO, EU VEJO UM TPC CHEIO DE NOVIDADES
    O FLOOD NÃO PARA
    NÃO NÃO PARA
  4. Upvote
    caotic deu reputação a Stigal em [Source] Naruto Shinobi Online   
    Conteudo: Source Naruto Shinobi (By RobinHood)
    Criado por: Lks e sua equipe.
    Liberado por: Beeki
    Re-Upado por: Stigal
    Complementos: Junto com a sources vem Server+Modern Acc Para Narutibia!
    Topico Do Servidor: Click Aqui!

    -
    Link Download:
    (4Shared) - http://www.4shared.c...ce_NTO_Sh.html?
    Scan - Click Aqui!

    -
    Atenciosamente, Stigal.
  5. Upvote
    caotic recebeu reputação de Roksas em LD --Lua Debbuger By Caotic--   
    Ola galera xtibia.
    Hoje venho disponibilizar um novo debbuger que desenvolvi permitindo testar seus scripts de forma e pratica.
     
     
    Ele tem varias opções e apresenta alguns exemplos.
     

     
     
     
     
    Disponível em:
     
    http://www.mediafire.com/?62fmmsl2rb44ofa
  6. Upvote
    caotic recebeu reputação de oktober15 em Sistema de TV Em Lua   
    Ola galera xtibiaaana!.
     
    Então meus amigos resolvi fazer um TV system aquele famoso sistema que o player cria uma channel(canal) e outros players poderão ver ele batalhando.
    Estou retirando o máximo de bugs possíveis se você viu um bug não deixe de falar.
     

    Vamos as explicações:
     
    Primeiro o player cria uma channel usando o comando /tv(nome da channel) depois outro player ve sua channel na lista usando o comando /channel(list) logo ele quer entrar em sua channel então ele fala /channel(nome da channel).
    Logo apos ele falar ele entra e começa a assistir mais depois ele quer sair então ele "desloga" e ele volta ao tempo.
     
     
    Vamos a instalação.
     

     
    Execute este comandos na sua database:
     

    CREATE TABLE "tv" ( "name" Text NOT NULL, "player" INT NOT NULL, "conec" INT NOT NULL )
     

     
    Vá em lib e crie um arquivo lua chamado de tv e coloque isto:

    function createTv(cid, name) db.executeQuery("INSERT INTO `tv` (`name`, `player`, `conec`, `watch`) VALUES ('" .. name .. "', " .. getPlayerGUID(cid) .. ", 1, 0);") setPlayerStorageValue(cid, 23423, 1) doPlayerSave(cid) end function isTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getID() ~= -1 and true or false end function getChannelPlayer(cid) return getPlayerStorageValue(cid, 23423) == 1 and true or getPlayerStorageValue(cid, 23423) == -1 and false end function getWatchingNameChannel(cid) return getPlayerStorageValue(cid, 44670) end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local conditi = createConditionObject(CONDITION_MUTED) setConditionParam(conditi, CONDITION_PARAM_TICKS, 10000*10000) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) function enterInTv(cid, name) local function comparePos(pos, post) local pos = getThingPos(pos) local post = getThingPos(post) return pos.x == pos.x or pos.y == pos.y or pos.z == pos.z and false or true end local function fallowPlayer(cid, player) if not isPlayer(cid) or getPlayerStorageValue(cid, 44670) == -1 then return true end if comparePos(cid, player) then doTeleportThing(cid, getThingPos(player)) doAddCondition(cid, condition) doAddCondition(cid, conditi) setCombatCondition(combat, condition) end return addEvent(fallowPlayer, 1800, cid, player) and doPlayerSave(cid) end setPlayerStorageValue(cid, 44670, name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") local guid = tv:getDataInt("player") local player = getPlayerByNameWildcard(getPlayerNameByGUID(guid)) return fallowPlayer(cid, player) end function exitChannel(cid) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_MUTED) doRemoveCondition(cid, COMBAT_PARAM_AGGRESSIVE) doTeleportThing(cid, getPlayerMasterPos(cid)) setPlayerStorageValue(cid, 44670, -1) doPlayerSave(cid) end function doShowListChannel(cid) local tv = db.getResult("SELECT * FROM `tv` WHERE `player` ORDER BY `conec`") str = "Channel Disponiveis:\n\n" if tv:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha channel disponiveis") return true end while true do local conect = tv:getDataInt("conec") local player = tv:getDataInt("player") local channel = tv:getDataString("name") local players = getPlayerNameByGUID(player) str = str .. channel .. " -("..players..")\n\n" if not tv:next() then doShowTextDialog(cid, 1397, str) break end end end function getConectTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getDataInt("conec") == 1 and true or tv:getDataInt("conec") == 0 and false end function setStatusTv(cid, on) if on == "on" then return db.executeQuery("UPDATE `tv` SET `conec` = 1 WHERE `player` = "..getPlayerGUID(cid)) end if on == "off" or on ~= "on" then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end end end
     

     
    Vá em talkactions crie um arquivo Lua chamado de tv coloque isto:

    function onSay(cid, words, param, channel) local item = 1949 ----Item que você precisa local bloqued = {"sair", "list", "on", "off"} ----- Nomes de channel que não pode ser usado if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o nome da channel que você quer") and false end if param == "on" or param == "off" then return setStatusTv(cid, param) end for i = 1, #bloqued do str = "Nomes não podem ser ultlizados" str = ""..str.."\n"..bloqued[i].."" if param == bloqued[i] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este nome não pode ser ultilizado porque e um comando do sistema") and false end end if #param <= 4 and #param >= 10 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O nome da sua channel deve ser maior que 4 caracteres e menor que 10 caracters") and false end if getPlayerItemCount(cid, item) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de um "..getItemNameById(item).."") and false end if getChannelPlayer(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja tem uma channel") and false end createTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns sua channel "..param.." foi criada") return true end
     

     
    Vá em talkactions e crie um arquivo lua chamado de channel e coloque isto:
     

    function onSay(cid, words, param, channel) if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga /channel(nome da channel para se conectar)\n/channel(list) Lista das channels\n/channel(sair para sair da channel)") and false end if param ~= "list" and param ~= "sair" then if not isTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe esta channel") and false end if not (getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você so pode entrar em uma channel quando estiver em pz") return true end if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode entrar uma tv porque você ja tem uma") return true end if getWatchingNameChannel(cid) ~= -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta conectado a uma channel") return true end if not getConectTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esta channel esta desativada") and false end enterInTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta assitindo a channel "..param.."") return true end if param == "list" then return doShowListChannel(cid) end if param == "sair" then if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode sair de sua propria tv use o comando /tv off para desativar sua channel") return true end if getWatchingNameChannel(cid) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não esta conectado a uma channel") return true end exitChannel(cid) return true end return true end
     

     
    Vá em talkactions.xml e coloque estas tags:
     
     
     
     

     
    Vá em creaturescripts e crie um arquivo lua chamado tv e coloque isto:

    function onLogout(cid) if getChannelPlayer(cid) then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "Sua channel foi desativado ao você logar religue dizendo /tv on") return true end if getWatchingNameChannel(cid) ~= -1 then exitChannel(cid) return true end return true end function onAttack(cid, target) if getWatchingNameChannel(cid) ~= 1 then return false end return true end
     
    Registre o evento colocando isto antes do ultimo return true:
     
     
     
     

     
    Coloque esta tags em creaturescripts.xml:
     
     
     
     


     
    Configurações
     
     

    Midia:

     
     
    Ajude o tv system dizendo ideias e bugs para o sistema.
    Estarei optimizando o sistema e retirandos bugs.
  7. Upvote
    caotic recebeu reputação de Demonbholder em AFL Sistema de Som Para Opentibia   
    Abra o batch com bloco de notas e coloque isto:
     

    start tibia.exe
  8. Upvote
    caotic recebeu reputação de Demonbholder em AFL Sistema de Som Para Opentibia   
    Unir o afl junto ao executável do client?
     
    Tu pode colocar o batch do afl para executar o client também
  9. Upvote
    caotic recebeu reputação de Demonbholder em AFL Sistema de Som Para Opentibia   
    Coloquei vídeo e imagem no tópico.
    Organizei o bat do programa para ficar mais organizado agora esta organizado em pastas.
    Coloquei um client junto ao afl como exemplo.
    Organizei o tópico
    Coloquei links novos do mediafire.
     
    Agora esta bom
  10. Upvote
    caotic recebeu reputação de Demonbholder em AFL Sistema de Som Para Opentibia   
    E na pasta do client.
     
    Ta bastante bagunçado tudo.
    Mais amanha eu vo organizar os arquivos.
  11. Upvote
    caotic recebeu reputação de Demonbholder em AFL Sistema de Som Para Opentibia   
    Ola galera xtibiana.
     
    Ate hoje não sabemos porque tibia da ciposft não tem som!.
    Blah deve ser preguiça deles
     
    Mais você não e ciposft e pode ter audio em seu otserv.
    Pensando nisto desenvolvi o AFL e um sistema que permte executar audio ao jogar seu otserv.
    Ele utiliza duas bibliotecas Lua Socket e ProteaAudio.
     
     
     



     
     
     
    O player precisa executar o servidor que e um programa também feito em Lua depois disso o client podera se comunicar e podera passar informações.
    Para executar som basta ultlizar a "mini - blibioteca" que irei dispobilizar.
     
    A instalação e simples então lets go.

    Vá na sua pasta raiz onde fica seu executal baixe esses arquivos abaixos e coloque eles nela:
     
    http://www.mediafire...cc692j7nxrczz6s
     
    Pronto lua socket ta instalada em seu servidor.
    Agora continua na mesma pasta e crie um arquivo Lua chamado de afl e coloque isto:
     

    function executeAudio(cid, audio) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send(audio.."\n") client:settimeout(0.1) local msg,stat = client:receive() end function exitAFL(cid) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send("exit\n") client:settimeout(0.1) local msg,stat = client:receive() end
     
    Pronto a nossa blibioteca(e.e mini - blibioteca né) foi instalada.
    Agora vamos em creaturescripts/scripts e coloque isto:
     

    function onLogout(cid) dofile("./afl.lua") exitAFL(cid) return true end
     
    Agora vá em login.lua e registre o evento:

    registerCreatureEvent(cid, "afl")
     
    Coloque esta tag em talkactions.xml:

    <event type="logout" name="lfa" register = "1" event="script" value="afl.lua"/>
     
    Pronto a parte do client foi instalada.

    Agora vamos pro servidor:
    Baixe(link abaixo) os arquivos do servidor lfa.
    http://www.mediafire...axrb36lbypwp50q
     
    Descompacte este arquivo junto com sua pasta do seu client.
    E protinho!.

    Vamos a alguns mini - tutos.
     
    Instalado:
     
     
     
    Criando novos Scripts:
     
     
     
    Colocandos novos sons:
     
     



  12. Upvote
    caotic recebeu reputação de Allangod em Clone copiando look   
    function onLook(cid, thing, position, lookDistance) local nome = "Clone das Sombras" if isMonster(thing.uid) and getCreatureMaster(thing.uid) and getCreatureName(thing.uid) == nome then local string = " "..getCreatureName(getCreatureMaster(thing.uid)).." Level-"..getPlayerLevel(getCreatureMaster(thing.uid)).." Vocation - "..getPlayerVocationName(getCreatureMaster(thing.uid)).."" doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end
     
    Coloque a tag em creaturescripts.xml:
     
    <event type="look" name="clone" event="script" value="clone.lua"/>
     
    Registre o evento em login.lua:
     
    registerCreatureEvent(cid, "clone")
  13. Upvote
    caotic deu reputação a aniporas em Quais as faculdades existentes na área de jogos e tal?   
    por isso mesmo que grande parte vira programador meia-boca
    a maioria escolhe isso como carreira que nem o prezyoso ta fazendo
     
    programar não é isso
    programar é algo que se sente prazer em fazer, hobby, paixão
     
    mas é isso mesmo que a gente ta falando
    vai aprender agora
    para de pensar em cursos, eles não vão te dar nada mais do que diploma
    não tem praticamente nada que tu vai aprender num curso que você não consegue aprender na internet e em livros
  14. Upvote
    caotic recebeu reputação de DamoonSalvatore em Reputation System   
    Ola galera xtibiaaana.
    Venho disponibilizar o novo rep system.
    E um sistema igual ao do fórum você dá reputação para outros membros e também recebe reputação.
     
    Configs:
     
     
    No seu look também aparece a sua frase de efeito e sua reputação.
    E só dar look no player desejado.
    Agora vamos a instalação.
    Crie um arquivo lua em lib chamado de rep e coloque isto:
     

    local rep = { [0] = "Sem nenhum rep que maldade", ---Pode editar a frase mais não retire [1] = "Up up e mais um up", [2] = "Ai o to upando", [100] = "Fod@ e fod@ mesmo", [1000] = "DEUS DEUS GOD OF REP" } function getRepPlayer(cid) return getPlayerStorageValue(cid , 2332) end function doAddReputation(cid, player) setPlayerStorageValue(player, 2332, getPlayerStorageValue(player , 2332)+1) exhaustion.set(cid, 44226, 36000*1000) end function setRep(cid, player, quant) for i =1, quant do doAddReputation(cid, player) local t = rep[getPlayerStorageValue(cid, 2332)] if not t then else setPlayerStorageValue(cid, 52426, t) end end end function showRanksRep(cid) k = 1 str = 2332 local rep = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..str.." ORDER BY `value` DESC;") str = "Rank de Reputation:\n\n" if rep:getID() == -1 then doShowTextDialog(cid, 1387, "Não existe nenhuma pessoa com reputation") return true end while true do local players = rep:getDataInt("player_id") local players = getPlayerNameByGUID(players) str = str .. k .. "-"..players.." \n\n" k = k+1 if not rep:next() or k >= 10 then doShowTextDialog(cid, 1397, str) break end end end function getEffectRep(cid) if getPlayerStorageValue(cid, 52426) == -1 then setPlayerStorageValue(cid, 52426, rep[0]) return rep[0] end local t = rep[getPlayerStorageValue(cid, 2332)] if not t then return getPlayerStorageValue(cid, 52426) end setPlayerStorageValue(cid, 52426, t) return t end function getExhaustionRep(cid) return exhaustion.get(cid, 44226) end
     
    Agora vá em talkactions e crie um arquivo lua chamado de rep e coloque isto:
     

    function onSay(cid, words, param, channel) if param == "" or param == " " then return doShowTextDialog(cid, 1397, "/rep(nome do player) -- Dar reputação\n/rep(rank) -- Ve o rank de rep\n/rep(rep) -- Ve a quantidade de rep que você e sua frase de efeito") end if param == "rank" or param == "tops" then showRanksRep(cid) return ture end if param == "effect" or param == "frase" or param == "rep" then eff = getEffectRep(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, ""..getRepPlayer(cid).." - "..getEffectRep(cid).."") return true end if getExhaustionRep(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem que esperar para dar mais 1 rep") return true end if getPlayerGroupId(cid) >= 5 then local t = string.explode(param, ",") local pid = getPlayerByNameWildcard(t[1]) if not pid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não esta online ou não existe") return true end if pid == cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode se auto - reputar") return true end setRep(cid, pid, t[2] == "" and 1 or tonumber(t[2])) else local pid = getPlayerByNameWildcard(param) if not pid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não esta online ou não existe") return true end if pid == cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode se auto - reputar") return true end doAddReputation(cid, player) end return true end
     
    Coloque esta tag em talacktions.xml:
    <talkaction words="/rep" event="script" value="rep.lua"/>
     
    Agora vá em creaturescripts e crie um arquivo lua chamado de rep e coloque isto:

    function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then local string = ""..getPlayerName(cid).." Reputação "..getRepPlayer(thing.uid).." - "..getEffectRep(thing.uid).."" doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end
     
    Agora vá em creaturescripts.xml e coloque esta tag:
    <event type="look" name="rep" register = "1" event="script" value="rep.lua"/>
     
    Agora vá em login.lua e registre o evento:
    registerCreatureEvent(cid, "rep")
  15. Upvote
    caotic recebeu reputação de Gears em AFL Sistema de Som Para Opentibia   
    Ola galera xtibiana.
     
    Ate hoje não sabemos porque tibia da ciposft não tem som!.
    Blah deve ser preguiça deles
     
    Mais você não e ciposft e pode ter audio em seu otserv.
    Pensando nisto desenvolvi o AFL e um sistema que permte executar audio ao jogar seu otserv.
    Ele utiliza duas bibliotecas Lua Socket e ProteaAudio.
     
     
     



     
     
     
    O player precisa executar o servidor que e um programa também feito em Lua depois disso o client podera se comunicar e podera passar informações.
    Para executar som basta ultlizar a "mini - blibioteca" que irei dispobilizar.
     
    A instalação e simples então lets go.

    Vá na sua pasta raiz onde fica seu executal baixe esses arquivos abaixos e coloque eles nela:
     
    http://www.mediafire...cc692j7nxrczz6s
     
    Pronto lua socket ta instalada em seu servidor.
    Agora continua na mesma pasta e crie um arquivo Lua chamado de afl e coloque isto:
     

    function executeAudio(cid, audio) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send(audio.."\n") client:settimeout(0.1) local msg,stat = client:receive() end function exitAFL(cid) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send("exit\n") client:settimeout(0.1) local msg,stat = client:receive() end
     
    Pronto a nossa blibioteca(e.e mini - blibioteca né) foi instalada.
    Agora vamos em creaturescripts/scripts e coloque isto:
     

    function onLogout(cid) dofile("./afl.lua") exitAFL(cid) return true end
     
    Agora vá em login.lua e registre o evento:

    registerCreatureEvent(cid, "afl")
     
    Coloque esta tag em talkactions.xml:

    <event type="logout" name="lfa" register = "1" event="script" value="afl.lua"/>
     
    Pronto a parte do client foi instalada.

    Agora vamos pro servidor:
    Baixe(link abaixo) os arquivos do servidor lfa.
    http://www.mediafire...axrb36lbypwp50q
     
    Descompacte este arquivo junto com sua pasta do seu client.
    E protinho!.

    Vamos a alguns mini - tutos.
     
    Instalado:
     
     
     
    Criando novos Scripts:
     
     
     
    Colocandos novos sons:
     
     



  16. Upvote
    caotic recebeu reputação de Roksas em AFL Sistema de Som Para Opentibia   
    Ola galera xtibiana.
     
    Ate hoje não sabemos porque tibia da ciposft não tem som!.
    Blah deve ser preguiça deles
     
    Mais você não e ciposft e pode ter audio em seu otserv.
    Pensando nisto desenvolvi o AFL e um sistema que permte executar audio ao jogar seu otserv.
    Ele utiliza duas bibliotecas Lua Socket e ProteaAudio.
     
     
     



     
     
     
    O player precisa executar o servidor que e um programa também feito em Lua depois disso o client podera se comunicar e podera passar informações.
    Para executar som basta ultlizar a "mini - blibioteca" que irei dispobilizar.
     
    A instalação e simples então lets go.

    Vá na sua pasta raiz onde fica seu executal baixe esses arquivos abaixos e coloque eles nela:
     
    http://www.mediafire...cc692j7nxrczz6s
     
    Pronto lua socket ta instalada em seu servidor.
    Agora continua na mesma pasta e crie um arquivo Lua chamado de afl e coloque isto:
     

    function executeAudio(cid, audio) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send(audio.."\n") client:settimeout(0.1) local msg,stat = client:receive() end function exitAFL(cid) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send("exit\n") client:settimeout(0.1) local msg,stat = client:receive() end
     
    Pronto a nossa blibioteca(e.e mini - blibioteca né) foi instalada.
    Agora vamos em creaturescripts/scripts e coloque isto:
     

    function onLogout(cid) dofile("./afl.lua") exitAFL(cid) return true end
     
    Agora vá em login.lua e registre o evento:

    registerCreatureEvent(cid, "afl")
     
    Coloque esta tag em talkactions.xml:

    <event type="logout" name="lfa" register = "1" event="script" value="afl.lua"/>
     
    Pronto a parte do client foi instalada.

    Agora vamos pro servidor:
    Baixe(link abaixo) os arquivos do servidor lfa.
    http://www.mediafire...axrb36lbypwp50q
     
    Descompacte este arquivo junto com sua pasta do seu client.
    E protinho!.

    Vamos a alguns mini - tutos.
     
    Instalado:
     
     
     
    Criando novos Scripts:
     
     
     
    Colocandos novos sons:
     
     



  17. Upvote
    caotic deu reputação a 20cm em Scritp Para Criatura   
    data\movements\scripts\pedido.lua

    function onStepIn(cid, item, position, fromPosition) if isMonster(cid) then doTeleportThing(cid,fromPosition) doSendMagicEffect(fromPosition,2) end return true end
     
    data\movements\movements.xml

    <movevent type="StepIn" actionid="26262" event="script" value="pedido.lua"/>
     
    daí vc poe actionid 26262 no piso e monstros não passarão
    flw
  18. Upvote
    caotic deu reputação a Demonbholder em Lua Messenger   
    Faaaaaaaala galera, beleza? Como a seção anda um pouco fraca de conteúdo ultimamente, graças ao início do ano letivo e outros acontecimentos, decidi contribuir um pouco, dessa vez trazendo um sistema que eu havia feito ano passado e deixei guardado. Há alguns dias atrás decidi que iria testa-lo e, por fim, posta-lo.
     
     
    Como funciona? É um sistema de messenger feito em lua utilizando as bibliotecas wx e socket, você pode se comunicar com qualquer outra pessoa que tenha o programa apenas sabendo o nome que ele cadastrou.
     
    Por que são dois códigos? Assim como no open tibia, para o sistema funcionar você precisa de alguém hosteando o servidor, pois é o servidor que vai pegar as mensagens enviadas de um cliente e mandar para outro, ou seja, o servidor faz a magica.
     
    É seguro? De maneira alguma, é extremamente fácil você descobrir as mensagens que estão sendo enviadas através do servidor, além disso, os códigos não estão encriptados e você pode alterar o código facilmente.
     
    Qual o propósito? Eu fiz os códigos há aproximadamente um ano, então não está tão bom como seria se eu fizesse hoje, mas, fiz apenas para fins de aprendizado e decidi postar para quem quiser estudar o código.
     
    Dito isso, vamos aos códigos:
     
     
    Client:
     
     
     
     
     
    Servidor:
     
     
     
     
     
    Imagens:
     
     
     
     
     
    Download do client
    Scan do client
     
     
    É isso, espero que testem e comentem, pois está em fase de testes.
  19. Upvote
    caotic deu reputação a Danilonilo em [Tutorial] Paredes   
    Essa será minha 3ª aula, e minha primeira de nível intermediário
    Eu usarei o programa Paint.NET para dar a aula, e recomendo vocês também usarem ele
    Download do Paint.NET
    A Parede em Si
    A parede, no Tibia, tem que possuir normalmente 64x32 de área (Largura x Altura)
    Fazendo uma parede normal
    Primeiro crie uma nova imagem de 64x32 (CTRL+N)

    Então comece fazendo uma linha diagonal na ponta de baixo da imagem até aonde chegar

    Complete em cima até chegar o máximo á esquerda

    Da ponta de cima até onde chegar, faça outra linha diagonal

    Termine a parte de baixo

    Se quiser pode destacar o meio

    Colorindo
    Primeiramente comece pelo verde, ponha a cor base e os detalhes

    As linhas vermelhas e azuis são das mesmas cores que o lado verde, então complete que nem estou fazendo:
    Primeiro pinte os detalhes

    Depois pinte as partes assim:
    A parte vermelha de cima ficará mais clara que as outras, que são a mesma cor base

    Percebeu que aonde estava a linha vermelha, está mais claro? Porque não tenta pegar as imagens e dar um zoom?
    Atenção, no meio da aula, eu me distraí e esqueci de mostrar uma coisa, quando você fizer os detalhes, faça de uma forma que uma linha azul se ligue com a outra
    Ex:

     
    Fazendo as bordas
    Pra começar, faça linhas para cima em baixo e na ponta, a largura você que decide, se for uma borda grande, será mais largura, se for pequena, menos.
    Então complete com uma linha diagonal ligando as pontas, é importantíssimo que elas tenham a mesma largura, se for uma parede reta.

    Depois, façam uma borda plana em cima (lembram da minha primeira aula, quando disse sobre as coisas planas sempre serem retas e estendidas?)

    Colora e deixe as linhas roxas com as mesmas cores, igual citei agora pouco
    A parte de cima ficará mais clara, pois é onde bate o sol

    Fazendo o suplemento de baixo
    Primeiramente, pegue a ferramenta varinha mágica , e lá em cima, clique na Lâmpada , que ficará assim.
    Nós clicamos na lâmpada, pois o globo, quando for clicar com a varinha mágica, selecionará as cores iguais de todo o desenho, e não só as ligadas, também funciona com o Preenchimento, ou "Balde de Tinta", que pintará as mesmas cores em todo o desenho.
    Segurando CTRL, clique nas cores da parede, até que fique totalmente preenchida, então copie (CTRL+C)
    Depois disso, Gire a imagem 90º (CTRL+H) e a inverta na horizontal (Imagem>Inverter Horizontalmente)
    Assim, nós mudamos o lado da parede de frente para o lado
    Após isso, cole a imagem que tínhamos copiado, e ficará assim

    Faça as devidas edições
    Fazendo o suplemento de cima
    Com a imagem que criamos, selecione de uma cor forte a parte que está juntando as paredes

    Então remova o que tiver fora da linha vermelha, recomendo colocarem o Preenchimento/Balde de Tinta e mudar a tolerância para 60% +-, fazendo assim que preencha as diferentes tonalidades de cinza, faça os devidos tests, se não der muito certo, desfaça o erro com um CTRL+Z
    Pinte igual as outras etapas

    Pronto, terminamos a parede e seus complementos!
    Quer ver como ficou?
    Não ficou lá essas coisas, pois eu me esqueci de dar aquela ligadura de detalhes, e eu não sombreei nem texturei a parede, mas isso fica pra aula de texturas, não é?!
    Tcharam

    Créditos: Danilonilo8
  20. Upvote
    caotic deu reputação a meubk em create_random_area(sizex, sizey, typecenter)   
    function create_random_area(sizex, sizey, typecenter) local area = {} for y = 1, sizey do tab = {} for x = 1, sizex do table.insert(tab, ((sizey - 1) / 2) + 1 == y and ((sizex - 1) / 2) + 1 == x and typecenter or math.random(0, 1) ) end table.insert(area, tab) end return area end
     
    cria uma area randomizada, para ele criar o centro vc precisa usar numeros impares no tamanho do x e y, pois não tem como achar o centro de uma area 2, 2 por exemplo .
     

    create_random_area(3, 5, 2)
     
    resultado:
     

    {0, 1, 1} {0, 1, 1} {0, 2, 1} {1, 1, 0} {0, 1, 0}
     
    até.
  21. Upvote
    caotic deu reputação a Administrador em Notice System   
    Hmm, muito bom!
     
    Uma dica seria não usar IO para armazenar as notícias, pois cada vez que você le/salva você consome recursos
    de IO do HD, nenhuma VPS ou dedicado comum possui hds bons. Minha sugestão seria ou criar uma tabela
    de banco ou usar a camada de cache do storage para isso.
     
    A camada de cache de storage é linda pra isso, ela faz tudo em memória (1000x mais rápido que disco) e depois
    salva tudo a cada server save.
  22. Upvote
    caotic deu reputação a comedinhasss em Prision System   
    Versão testada: 9.4+ (Pode funcionar em anteriores)
    Descrição: O script de cadeia feito por FreaksOt onde eu modifiquei e fiz algumas alterações.
     
    Alterações:
    - Quando prende o player ele não fica mais em um local fixo, você pode configurar para coloca-lo em outras celas.
    - O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico.
    -- OBS: O tempo é posto em segundos. (120 segundos = 2 minutos)
     
    TAG:

    <talkaction log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prisao.lua"/>
     
    Script:
    data/talkaction/prisao.lua

    grouprequired = 3 jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 local jailpos = { [1] = {x = 59, y = 52, z =6}, [2] = {x = 59, y = 52, z =5}, [3] = {x = 55, y = 47, z =6}, [4] = {x = 55, y = 47, z =5}, [5] = {x = 55, y = 52, z =6}, [6] = {x = 55, y = 52, z =5}, [7] = {x = 59, y = 47, z =5}, [8] = {x = 63, y = 52, z =5} } local unjailpos = { x = 63, y = 54, z =6 } jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você saiu da cadeia, tente não fazer coisas malvadas da próxima vez para não ser preso novamente. Cuide-se amigo.') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end local jail_time = -1 for word in string.gmatch(tostring(t[1]), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(t[1]) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+3)) end end end local default_jail = 30 if(t[2]) then default_jail = t[2] end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if (words == '!prender' or words == '/prender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos[math.random(#jailpos)], TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você prendeu o player: '.. getCreatureName(isplayer) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage (isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce foi preso por '.. getCreatureName(cid) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end elseif (words == '!desprender' or words == '/desprender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then if getPlayerStorageValue(isplayer, jailedstoragevalue_bool) == 1 then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'O player '.. getCreatureName(cid) ..' te tirou da prisão. Te vejo em breve!!!') doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você tirou da prisão o player: '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não está preso.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end end return true end
     
    Config:

    local jailpos = { -- Local das selas onde o player vai aparecer. local unjailpos = { x = 63, y = 54, z =6 } -- Local onde ele irá sair. local default_jail = 30 -- Tempo padrão.
     
    Créditos:
    FreaksOt
    Comedinha (Bruno Carvalho)
  23. Upvote
    caotic deu reputação a comedinhasss em Player Check System   
    Versão: 3.2
    Versão de tibia: 9.4+ (Funciona em anteriores)
    Descrição: Existem muitos scripts que ajudam o administrador do servidor a cuidar dele, um deles é saber coisas sobre quem está jogando e se está sendo honesta. Eu peguei alguns scripts e estou juntando em um para diminuir o tamanho e ter uma fácil verificação.

    TAG:
    <talkaction log="yes" words="!p;/p" access="5" event="script" value="playercheck.lua"/> Script:
    Talkactions/scripts/playercheck.lua

    local config = { check = {"check", "viwer", "verificar", "ver"}, delete = {"del", "delete", "deletar"}, search = {"search", "procurar"} } function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count.." ("..item.itemid..")" else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" text = text..getItemsInContainer(item, sep+2).." ("..item.itemid..")" else text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" end end end return text end function onSay(cid, words, param, channel) local slotName = {"Cabeça", "Amuleto", "Backpack", "Armor", "Mao Direita", "Mao Esquerda", "Legs", "Pés", "Ring", "Ammo Slot"} local t = string.explode(param, ",") if(table.isStrIn(param, config.check)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[2]) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..") "..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..")" end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end end elseif(table.isStrIn(param, config.delete)) then if getPlayerGroupId(cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) if isPlayer(player) == TRUE then count = t[4] if(not t[4]) then count = 1 end if getPlayerItemCount(player, t[2]) > 0 then if doPlayerRemoveItem(player, t[2], count) then doPlayerSendCancel(cid, "Item Deletado.") else doPlayerSendCancel(cid, "Este player não esta quantidade.") end else doPlayerSendCancel(cid, "Este player não tem o item.") end end end elseif(table.isStrIn(param, config.search)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. t[2] ..");") local msg = "Resultados da busca pelo item ".. t[2] .." em seu banco de dados:\n\n" if result:getID() ~= -1 then while true do local name = result:getDataString("name") local online = result:getDataInt("online") msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n" if not result:next() then break end end else msg = msg .. "O item não foi encontrado em nenhum jogador." end doShowTextDialog(cid, t[2], msg) end end return true end Explicação:
    Quando o god digita:
    /p check, (PNAME) - Ele verifica os items que o player tem.
    /p del, (ID), (PNAME), (COUNT) - Ele deleta o item de determinado player (Se não colocar o count ele irá remover somente 1).
    /p search, (ID) - Ele verifica quantos players tem tal item e se está online.

    Créditos:
    Oneshot
    CaioODemais
    Comedinha (Bruno Carvalho)
     
  24. Upvote
    caotic recebeu reputação de jhowzikah em Report Sytem Beta   
    Report Sytem


     
     
    Ola galera do xtibiana hoje venho apresentar um sisteminha beta que fiz.
    O sistema e o seguinte:
    Um player qualquer reporta dizendo /report (e o nome do bug ou alguma irregularidade no otserv) se o adminstrador estiver online ele já recebe a mensagem e fica salva em um documento de log se o adminstrador não estiver online ele salva no documento de log e quando ele entrar recebe uma mensagem dizendo que existe uma nova denuncia.
    O log de reports e um documento de texto onde fica salvado todas as denuncias as denuncias são salvas assim:
     
     
     
    Todas bem organizadas e com quebra de linhas a cada denuncia.
     
    Vamos ao scripts:
     
    Primeiro crie um arquivo de texto(.txt) chamado report na sua pasta de seu ot onde fica o seu executavel.
    Lembre-se que deve ser um arquivo txt e que deve estar na pasta raiz do seu ot.
     
    Depois de criar o arquivo vá em talkactions e crie um arquivo LUA chamado de report.
    E coloque o seguinte script:
     

    function onSay(cid, words, param) if exhaustion.check(cid, 2123) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Precisa esperar para reportar novamente") return false end if #param <= 10 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu report precisa ter pelo menos 10 caracters") return false end local file = io.open("./report.txt", "a") file:write("\n "..getPlayerName(cid).." "..os.date("%A").." as "..tostring(os.date("%X")):sub(1, 5).." reportou dizendo ("..param..")") file:close() setGlobalStorageValue(28212, getGlobalStorageValue(28212)+1) exhaustion.set(cid, 2123, 36000) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu report foi enviada com sucesso logo sera atendindo obrigado pela colaboração") for _, id in ipairs(getPlayersOnline()) do if getPlayerGroupId(cid) > 5 then doShowTextDialog(cid, 1952, ""..getPlayerName(cid).." acabou de reportar dizendo ("..param..") este report esta salvo no log") exhaustion.set(cid, 2123, 36000) return true end return true end end
     
    Agora vá em talkactions.xml e coloque a seguinte tag:
     

    <talkaction words="/report" event="script" value="report.lua"/>
     
    Agora vá em creaturescripts e crie um arquivo LUA chamado de alerta.
    E coloque isto dentro:
     

    function onLogin(cid) if getPlayerGroupId(cid) > 5 then if getGlobalStorageValue(28212) == 0 then doShowTextDialog(cid, 1952, "1 player reportaram para ver o report abra o log de reports") setGlobalStorageValue(28212, -1) return true end if getGlobalStorageValue(28212) ~= -1 then doShowTextDialog(cid, 1952, ""..getGlobalStorageValue(28212).." player reportaram para ver o report abra o log de reports") setGlobalStorageValue(28212, -1) return true end return true end return true end
     
    Coloque a tag em creaturescripts.xml

    <event type="login" name="report" event="script" value="alerta.lua"/>
     
    Depois registre o evento em login.lua
    Primeiro va em creaturescripts/scripts e abra o arquivo chamado login.lua antes do ultimo "return" coloque isto:
     

    registerCreatureEvent(cid, "report")
     
     
    E prontinho estamos o novo report sytem.
    A versão e beta mais esta funcional e bem intuitiva ótima para ser usada.
     
     

  25. Upvote
    caotic recebeu reputação de KennyConrad em Banimento System 1.0   
    Venho trazer a versão do 1.0 do banimento system
    Segue o link:
    http://www.xtibia.co...to-system-beta/
    O script foi todo reformulado.
     
    O player fala /ban(nome do player,dias de ban,porque ele foi banido,["true" para banir o ip])
    E o player e kikado e depois quando ele tentar logar aparece a mensagem de banimento.
    O player também podera ver a lista de banidos dizendo /bans.
     
     
    Vá na sua database e execute os seguintes comandos:
     

    CREATE TABLE "ban" ( "player" INT NOT NULL, "ip" INT NOT NULL, "time" INT NOT NULL, `coment` text )
     
    Vá em lib e crie um arquivo lua chamado de ban e coloque isto:
     

    function setBanTime(cid, time, coment, ip) db.executeQuery("INSERT INTO `ban` VALUES (".. getPlayerGUID(cid) ..", ".. ip ..", ".. os.time() + time*36000 ..", '".. coment .."')") end function getPlayerBans(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") if ban:getID() == -1 then return false end local time = ban:getDataInt("time") > os.time() and ban:getDataInt("time") < 100+os.time() return time and false or true end function getPlayerComent(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") return ban:getDataString("coment") end function getPlayerTimeBan(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";") return ban:getDataInt("time") - os.time() end function getPlayerIpBan(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`") if ban:getID() == -1 then return false end while true do local ips = ban:getDataInt("ip") if getPlayerIp(cid) == ips then return true end if not ban:next() then return false end end end function doShowTextBans(cid) local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`") str = "Players Banidos:\n\n" if ban:getID() == -1 then doShowTextDialog(cid, 1387, "Não existe nenhum player Banido") return true end while true do local name = ban:getDataInt("player") local player = getPlayerNameByGUID(name) local time = ban:getDataInt("time") - os.time() str = str .. player .. " - Banido por "..math.floor((time/36000)).." \n\n" if not ban:next() then doShowTextDialog(cid, 1397, str) break end end end
     
    Vá em talkactions e crie um arquivo lua chamado de ban e coloque isto:
     
     

    function onSay(cid, words, param, channel) local t = string.explode(param, ",") if param == " " or param == "" or not param or isNumeric(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)") end if t[2] == " " or t[2] == "" or not t[2] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque os dias do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)") end if t[3] == " " or t[3] == "" or not t[3] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o comentario do banimento dizendo /ban(nome do player,dias de ban,comentario)") end local player = getPlayerByNameWildcard(t[1], false) if not player then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player "..t[1].." não existe") end setBanTime(player, t[2], t[3], t[4] == "true" and getPlayerIp(player) or 0) doRemoveCreature(player) return true end
     
    Continuando em talkactions crie um arquivo lua chamado de bans e coloque isto:
     

    function onSay(cid, words, param, channel) doShowTextBans(cid) return true end
     
    Agora vá em talkactions.xml e coloque estas tags:
     
     
     
     
    Agora vá em creaturescripts e crie um arquivo lua chamado de ban e coloque isto:
     

    function onLogin(cid) if getPlayerBans(cid) then local time = math.floor(getPlayerTimeBan(cid)/36000) doPlayerPopupFYI(cid, "Você esta banido por "..getPlayerComent(cid).." durante "..time.." dias") return addEvent(doRemoveCreature, 180, cid) end if getPlayerIpBan(cid) then doPlayerPopupFYI(cid, "Seu ip esta banido") return addEvent(doRemoveCreature, 180, cid) end return true end
     
    Agora vá em login.lua e registre o evento colocando isto antes do ultimo return:

    registerCreatureEvent(cid, "ban")
     
    Coloque esta tag em talkactions.xml
     
     
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...