Ir para conteúdo

QuebradaZN

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    Esse tutorial será composto por vários passo-a-passo (tópicos) de como montar toda a infraestrutura para deixar um servidor TFS 1.x online no Linux Ubuntu 22.04.
     
    INICIANDO A MÁQUINA LINUX
     
    É importante que toda vez que você entrar em sua máquina UBUNTU você atualize os pacotes já instalados para as versões mais recentes com o comando: 
    sudo apt update E depois procure por novos pacotes de atualização para a versão do UBUNTU instalado. (em alguns casos irá perguntar se você realmente deseja instalar determinado pacote, digite Y (yes - sim) e depois ENTER.
    sudo apt upgrade
    PILHA LEMP
    - Inicialmente você deve entender que as versões mais atuais do TFS suportam apenas o MySQL como armazenamento de banco de dados e não usam mais "account manager" no jogo para criação de contas, portanto você deverá ter um site para isto.
    - Para usar um site você deverá instalar o pacote de pilha conhecido como LEMP, que basicamente é um grupo de programas com a abreviação de LINUX - ENGINE X (nginx) - MySQL ou MariaDB (no caso usaremos a MariaDB) - PHP.
    - Para quem é mais leigo, é interessante saber que o Nginx é um servidor web (irá mostrar as páginas web), o MariaDB é programa de armazenamento e gerenciamento de dados do banco de dados e o PHP serve para processar código e gerar conteúdo dinâmico para o servidor Web.

    1 - TUTORIAL DE COMO INSTALAR O NGINX NO UBUNTU 22.04
    2 - TUTORIAL DE COMO INSTALAR O MARIADB NO UBUNTU 22.04
    3 - TUTORIAL DE COMO INSTALAR O PHP NO UBUNTU 22.04
     
    PHPMYADMIN
    - Apesar de já termos instalado o programa MariaDB que armazena e gerencia os dados de seu projeto, sabemos que não é muito fácil manipular os dados apenas por comandos no prompt (ainda mais por leigos) .. diante disso, iremos usar o PHPMYADMIN, que através de um interface web, realiza as ações no banco de dados de forma fácil e prática ...

    - TUTORIAL DE COMO INSTALAR O PHPMYADMIN NO UBUNTU 22.04 
     
    AJUSTANDO O TIMEZONE
     
    - Muitas máquina vem com o horário diferente do horário de sua região, para ver a hora da máquina basta usar o comando: 
    date  
    Se estiver diferente, você poderá usar o seguinte comando: 
    sudo timedatectl set-timezone America/Sao_Paulo Com o comando acima, você estará mudando a timezone para "America/Sao_Paulo", ou seja, ficará com o horário local do estado de São Paulo.
     
    Caso queira encontrar outra timezone, digite: 
    timedatectl list-timezones Para sair da lista use CTRL+C.
     
    Aposta feita a alteração, é necessário reiniciar a máquina: 
    sudo shutdown -r now E depois testar novamente.
     
    COMPILAR E CONFIGURAR TFS

    - TUTORIAL DE COMO COMPILAR E CONFIGURAR O TFS NO UBUNTU 22.04
     
    INSTALAR E CONFIGURAR SITE
    Existem, hoje em dia, várias opções de sites para otservs, e com o tempo quero fazer um tutorial para cada um ...

    - TUTORIAL DE COMO INSTALAR E CONFIGURAR O ZNOTE ACC NO UBUNTU 22.04
     
    Esse tópico estará em constante atualização .. e cada mudança irei informar nos comentários. Bom uso!
  2. Gostei
    QuebradaZN recebeu reputação de xwarlleyx em Aura System por Equip [TFS 1.3]   
    Boa Tarde, Hoje venho trazer a vocês um Sistema de Aura!
    Feito pelo @bielzinhocrazy [Fakezim/BielzinhoCrazy/GMLeal] 
     
    Mudanças que Foram feitas...
    Retirei a ativação da Aura por Talk e coloquei por Equip
    Fixei o Bug que a aura Não Girava em torno do Player
    Fixei o Bug que o Player Parava de receber a aura assim que Tinha o Efeito da Cura!
     
    Em Movements/scripts/ Crie um Arquivo com nome de aura.lua
    -- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 50 -- chance de curar em cada volta da aura, em porcentagem quantheal = 20 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 31 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 54 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end function onEquip(player, item, slot, isCheck) local slot_ = player:getSlotItem(CONST_SLOT_RING) if slot_ and slot_.itemid == item.itemid then return false end doPlayerSendCancel(player,"Você Ativou a Aura!") setPlayerStorageValue(player, aurastr, 2) efeitosAura(1,tempo/8,player.uid) return true end function onDeEquip(player, item, slot, isCheck) if(getPlayerStorageValue(player, aurastr)==2) then setPlayerStorageValue(player, estr, os.time()+2) setPlayerStorageValue(player, aurastr, -1) doPlayerSendCancel(player,"Você Desativou a Aura!") return true end end  
    Feito Isso Vamos Registrar esse Script
    Em Movements/movements.xml
    <movevent event="Equip" itemid="9003" slot="ring" script="aura.lua" /> <movevent event="DeEquip" itemid="9003" slot="ring" script="aura.lua" /> OBS: Usei o Golden Falcon como Item
     
    Agora em Creaturescripts/scripts crie um Arquivos Chamado aura.lua
    function onLogin(cid) if(getPlayerStorageValue(cid, 25950)==2) then return efeitosAura(1,tempo/8,cid.uid) end return TRUE end Caso o Player Deslogue com a Aura Ativa, Quando retornar Online Continuará com a Aura!
    Registrando no Login.lua
    player:registerEvent("AuraLogin")  
    Em Creaturescripts/creaturescripts.xml
    <event type="login" name="AuraLogin" script="others/aura.lua" /> Nesse Caso minha Aura.lua está na Pasta others!
     
    Então é isso Pessoal, Qualquer problema Tentarei ajudar todos por Aqui
     
    Espero ter ajudado!
  3. Curtir
    QuebradaZN deu reputação a Johncore em Aura System por Equip [TFS 1.3]   
    Parabéns pela iniciativa e pelo conteudo meu brother, show de bola!
  4. Gostei
    QuebradaZN recebeu reputação de Johncore em Aura System por Equip [TFS 1.3]   
    Boa Tarde, Hoje venho trazer a vocês um Sistema de Aura!
    Feito pelo @bielzinhocrazy [Fakezim/BielzinhoCrazy/GMLeal] 
     
    Mudanças que Foram feitas...
    Retirei a ativação da Aura por Talk e coloquei por Equip
    Fixei o Bug que a aura Não Girava em torno do Player
    Fixei o Bug que o Player Parava de receber a aura assim que Tinha o Efeito da Cura!
     
    Em Movements/scripts/ Crie um Arquivo com nome de aura.lua
    -- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 50 -- chance de curar em cada volta da aura, em porcentagem quantheal = 20 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 31 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 54 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end function onEquip(player, item, slot, isCheck) local slot_ = player:getSlotItem(CONST_SLOT_RING) if slot_ and slot_.itemid == item.itemid then return false end doPlayerSendCancel(player,"Você Ativou a Aura!") setPlayerStorageValue(player, aurastr, 2) efeitosAura(1,tempo/8,player.uid) return true end function onDeEquip(player, item, slot, isCheck) if(getPlayerStorageValue(player, aurastr)==2) then setPlayerStorageValue(player, estr, os.time()+2) setPlayerStorageValue(player, aurastr, -1) doPlayerSendCancel(player,"Você Desativou a Aura!") return true end end  
    Feito Isso Vamos Registrar esse Script
    Em Movements/movements.xml
    <movevent event="Equip" itemid="9003" slot="ring" script="aura.lua" /> <movevent event="DeEquip" itemid="9003" slot="ring" script="aura.lua" /> OBS: Usei o Golden Falcon como Item
     
    Agora em Creaturescripts/scripts crie um Arquivos Chamado aura.lua
    function onLogin(cid) if(getPlayerStorageValue(cid, 25950)==2) then return efeitosAura(1,tempo/8,cid.uid) end return TRUE end Caso o Player Deslogue com a Aura Ativa, Quando retornar Online Continuará com a Aura!
    Registrando no Login.lua
    player:registerEvent("AuraLogin")  
    Em Creaturescripts/creaturescripts.xml
    <event type="login" name="AuraLogin" script="others/aura.lua" /> Nesse Caso minha Aura.lua está na Pasta others!
     
    Então é isso Pessoal, Qualquer problema Tentarei ajudar todos por Aqui
     
    Espero ter ajudado!
  5. Curtir
    QuebradaZN deu reputação a Heitorzera13 em Aura System por Equip [TFS 1.3]   
    Funcionou certinho !! Vlw  
  6. Obrigado
    QuebradaZN recebeu reputação de Heitorzera13 em Aura System por Equip [TFS 1.3]   
    Boa Tarde, Hoje venho trazer a vocês um Sistema de Aura!
    Feito pelo @bielzinhocrazy [Fakezim/BielzinhoCrazy/GMLeal] 
     
    Mudanças que Foram feitas...
    Retirei a ativação da Aura por Talk e coloquei por Equip
    Fixei o Bug que a aura Não Girava em torno do Player
    Fixei o Bug que o Player Parava de receber a aura assim que Tinha o Efeito da Cura!
     
    Em Movements/scripts/ Crie um Arquivo com nome de aura.lua
    -- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 50 -- chance de curar em cada volta da aura, em porcentagem quantheal = 20 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 31 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 54 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end function onEquip(player, item, slot, isCheck) local slot_ = player:getSlotItem(CONST_SLOT_RING) if slot_ and slot_.itemid == item.itemid then return false end doPlayerSendCancel(player,"Você Ativou a Aura!") setPlayerStorageValue(player, aurastr, 2) efeitosAura(1,tempo/8,player.uid) return true end function onDeEquip(player, item, slot, isCheck) if(getPlayerStorageValue(player, aurastr)==2) then setPlayerStorageValue(player, estr, os.time()+2) setPlayerStorageValue(player, aurastr, -1) doPlayerSendCancel(player,"Você Desativou a Aura!") return true end end  
    Feito Isso Vamos Registrar esse Script
    Em Movements/movements.xml
    <movevent event="Equip" itemid="9003" slot="ring" script="aura.lua" /> <movevent event="DeEquip" itemid="9003" slot="ring" script="aura.lua" /> OBS: Usei o Golden Falcon como Item
     
    Agora em Creaturescripts/scripts crie um Arquivos Chamado aura.lua
    function onLogin(cid) if(getPlayerStorageValue(cid, 25950)==2) then return efeitosAura(1,tempo/8,cid.uid) end return TRUE end Caso o Player Deslogue com a Aura Ativa, Quando retornar Online Continuará com a Aura!
    Registrando no Login.lua
    player:registerEvent("AuraLogin")  
    Em Creaturescripts/creaturescripts.xml
    <event type="login" name="AuraLogin" script="others/aura.lua" /> Nesse Caso minha Aura.lua está na Pasta others!
     
    Então é isso Pessoal, Qualquer problema Tentarei ajudar todos por Aqui
     
    Espero ter ajudado!
  7. Obrigado
    QuebradaZN recebeu reputação de Orientalz em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  8. Gostei
    QuebradaZN recebeu reputação de Vodkart em Aura System por Equip [TFS 1.3]   
    Boa Tarde, Hoje venho trazer a vocês um Sistema de Aura!
    Feito pelo @bielzinhocrazy [Fakezim/BielzinhoCrazy/GMLeal] 
     
    Mudanças que Foram feitas...
    Retirei a ativação da Aura por Talk e coloquei por Equip
    Fixei o Bug que a aura Não Girava em torno do Player
    Fixei o Bug que o Player Parava de receber a aura assim que Tinha o Efeito da Cura!
     
    Em Movements/scripts/ Crie um Arquivo com nome de aura.lua
    -- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 50 -- chance de curar em cada volta da aura, em porcentagem quantheal = 20 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 31 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 54 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end function onEquip(player, item, slot, isCheck) local slot_ = player:getSlotItem(CONST_SLOT_RING) if slot_ and slot_.itemid == item.itemid then return false end doPlayerSendCancel(player,"Você Ativou a Aura!") setPlayerStorageValue(player, aurastr, 2) efeitosAura(1,tempo/8,player.uid) return true end function onDeEquip(player, item, slot, isCheck) if(getPlayerStorageValue(player, aurastr)==2) then setPlayerStorageValue(player, estr, os.time()+2) setPlayerStorageValue(player, aurastr, -1) doPlayerSendCancel(player,"Você Desativou a Aura!") return true end end  
    Feito Isso Vamos Registrar esse Script
    Em Movements/movements.xml
    <movevent event="Equip" itemid="9003" slot="ring" script="aura.lua" /> <movevent event="DeEquip" itemid="9003" slot="ring" script="aura.lua" /> OBS: Usei o Golden Falcon como Item
     
    Agora em Creaturescripts/scripts crie um Arquivos Chamado aura.lua
    function onLogin(cid) if(getPlayerStorageValue(cid, 25950)==2) then return efeitosAura(1,tempo/8,cid.uid) end return TRUE end Caso o Player Deslogue com a Aura Ativa, Quando retornar Online Continuará com a Aura!
    Registrando no Login.lua
    player:registerEvent("AuraLogin")  
    Em Creaturescripts/creaturescripts.xml
    <event type="login" name="AuraLogin" script="others/aura.lua" /> Nesse Caso minha Aura.lua está na Pasta others!
     
    Então é isso Pessoal, Qualquer problema Tentarei ajudar todos por Aqui
     
    Espero ter ajudado!
  9. Curtir
    QuebradaZN recebeu reputação de ITALOx em Aura System por Equip [TFS 1.3]   
    Boa Tarde, Hoje venho trazer a vocês um Sistema de Aura!
    Feito pelo @bielzinhocrazy [Fakezim/BielzinhoCrazy/GMLeal] 
     
    Mudanças que Foram feitas...
    Retirei a ativação da Aura por Talk e coloquei por Equip
    Fixei o Bug que a aura Não Girava em torno do Player
    Fixei o Bug que o Player Parava de receber a aura assim que Tinha o Efeito da Cura!
     
    Em Movements/scripts/ Crie um Arquivo com nome de aura.lua
    -- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 50 -- chance de curar em cada volta da aura, em porcentagem quantheal = 20 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 31 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 54 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end function onEquip(player, item, slot, isCheck) local slot_ = player:getSlotItem(CONST_SLOT_RING) if slot_ and slot_.itemid == item.itemid then return false end doPlayerSendCancel(player,"Você Ativou a Aura!") setPlayerStorageValue(player, aurastr, 2) efeitosAura(1,tempo/8,player.uid) return true end function onDeEquip(player, item, slot, isCheck) if(getPlayerStorageValue(player, aurastr)==2) then setPlayerStorageValue(player, estr, os.time()+2) setPlayerStorageValue(player, aurastr, -1) doPlayerSendCancel(player,"Você Desativou a Aura!") return true end end  
    Feito Isso Vamos Registrar esse Script
    Em Movements/movements.xml
    <movevent event="Equip" itemid="9003" slot="ring" script="aura.lua" /> <movevent event="DeEquip" itemid="9003" slot="ring" script="aura.lua" /> OBS: Usei o Golden Falcon como Item
     
    Agora em Creaturescripts/scripts crie um Arquivos Chamado aura.lua
    function onLogin(cid) if(getPlayerStorageValue(cid, 25950)==2) then return efeitosAura(1,tempo/8,cid.uid) end return TRUE end Caso o Player Deslogue com a Aura Ativa, Quando retornar Online Continuará com a Aura!
    Registrando no Login.lua
    player:registerEvent("AuraLogin")  
    Em Creaturescripts/creaturescripts.xml
    <event type="login" name="AuraLogin" script="others/aura.lua" /> Nesse Caso minha Aura.lua está na Pasta others!
     
    Então é isso Pessoal, Qualquer problema Tentarei ajudar todos por Aqui
     
    Espero ter ajudado!
  10. Gostei
    QuebradaZN deu reputação a worthdavi em [TFS 1.3] Otg Server Global - 12.85 (Updates Diarios)   
    Seria essa mais uma tentativa de melhorar a comunidade que se tornou o chernobyl da programação? Veremos!
    rep+
  11. Gostei
    QuebradaZN deu reputação a Johncore em [TFS 1.3] Otg Server Global - 12.85 (Updates Diarios)   
    Open Source MMORPG emulador de Tibia escrito em C++.
    Servidor Global 12.85 Oficial para o Tibiaking!
    Baseado no TFS 1.3

     
     
      
     Novidades!
     
    - Protocolo 12.85
    - Bestiary
    - Charms
    - Boosted Creature
    - Quick Loot
    - Supply Stash
    - Event Schedule
    - GLOBAL MAP FULL
    - Quests com Quest Log 100%
    - Bounac
    - Wherehyenas
    - Mirrored Nightmare
     
     
     

     
    Imagens :
     
    THAIS TEMPLE
     

     
     
    



    Downloads 

     
     Servidor + Database + Source: 
    »» PROJETO OFFICIAL:  
    https://github.com/otg-br/global1285
     
    GRUPO WHATSAPP OTG SERVER:
    https://chat.whatsapp.com/EWV3dVvS6nt1em7q23FGu7

     
     
     

     
    Créditos :
    The Forgotten Server
    Otg contribuidores
    Johncore
    Erick Nunes
    Mattyx
    Cjaker
    Leu
    Marson Schneider
    Rafhael Oliveira

     
     
  12. Gostei
    O objetivo desta publicação é registrar e informar as atualizações no mapa oficial OTSERVBR (VERSÃO NULLED).
    Ajude reportando bugs de mapa neste tópico, agradecemos!
     
     
    Peso do mapa do projeto no Github (versão antiga) - 158.962
    Peso do Mapa com as atualizações novas do post abaixo: - 154.357
     
     
    Mapas Novos adicionados! 
    (d.241220)
    - Zarganash 33623 31399 10
    - Zarganash: Bosses room 33621 31433 10 
    - Taberna do Thaian 33232 31700 7
    - Barren Drift 33877 31886 8
    - Barren rift: Sala do boss 33877 31886 8
     
    (d.271220)
    - King Zelus Room
    - Water Elemental Cave Port Hope 32679 32963 7
    - Forgotten Temple (Ankrahmun) 33315 32674 7
    - Hyeana Lair's (Darashia) 33212 32358 8
    - Zarganash (boss rooms e taint central teleport) 33770-31505-13, 33714-31505-14, 33710-31635-14, 33621-31431-10
    - Netherworld and mini bosses room 33614 31414 8
    - Last Boss King Zelos room (Grave Danger) 33490 31547 13
    - Entrance to Isle of the Kings Position 32172 31918 8
    - Stone portals of Netherworld (Banuta) 32883 32518 7
    - Bounac 32409, 32484, 7
    - Added Mirrored Nightmare map (incompleto) 33937 31217 11
    - Dream Scar and Last Boss Room (5 Bosses Room faltando) 32208 32034 13
    - Brain Grounds (Entrance north of the Jakundaf Desert in Venore) 31914 32355 8
     
     
    Modificações
    (d.241220)
    - Library Mapa Revisado 
    - Falcon Bastion Edron/Zão Revisados
    - Lion Sanctun Revisado
    - 897.347 Pisos isolados removidos. 
    - Bugs corrigidos: 63 
     
    (d.271220)
    - Issavi revisada
    - Krailos Revisada
    - Tps e alavancas da grave_danger quest corrigidos
    - Bugs corrigidos: 18
     
    Bugs totais corrigidos (erros de mapa): 171

    Templo-geral - 32209 32293 6
     
    O arquivo está nomeado OTG pois inicialmente as alterações acima foram feitas para o projeto OTG King, porém cancelamos a parceria com este projeto devido a problemas com venda de conteúdos Open Source.
     
     
     
     
     
    otg.otbm otg-house.xml otg-spawn.xml
  13. Gostei
    QuebradaZN recebeu reputação de jakons em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  14. Gostei
    QuebradaZN deu reputação a Bruxo Ots em Corrigindo erro do server modificar os items ao relogar.   
    Olá a todos.
    Não sei se e com todos ou só alguns, porem tem um erro do qual o server muda o item ao relogar.
    não vi no fórum soluções e um amigo ajudou e estou trazendo para todos.
    Chega de lenga lenga bora la.
    Na sua database clique em player_items 
     
    Depois estrutura
     
    Depois na linha itemtype clique para mudar.
    Logo apos fazer isso clique em SMALLINT
    Mudando para int e valor 11
    De um enter e pronto seus problemas foram resolvidos.. o resultado final deve ficar assim.
     
    Valeu, espero que as pessoas que tenham esse erro consigam se resolver. bjundas
  15. Obrigado
    QuebradaZN recebeu reputação de LeoTK em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  16. Curtir
    QuebradaZN deu reputação a King Laker em Pot de Double XP   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae! 

    Creditos --> @PobrePreto
  17. Gostei
    QuebradaZN recebeu reputação de Sotten em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  18. Gostei
    QuebradaZN recebeu reputação de Infused em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  19. Curtir
    QuebradaZN recebeu reputação de Arkcanjoo em Duvida sobre monstro e hospedagem   
    Sobre Hospedagem: Se Chama VPS, Você Contrata a VPS, Vão Configurar Ela, Te Passaram os Dados de Acesso, Você Acessa ela, UP Seu OTServer Lá, Configura e Pronto, Fácil Assim!
     
  20. Curtir
    QuebradaZN deu reputação a Natanael Beckman em GesiorACC 2019 8.60 UPDATE 29/06/2019   
    Atualização de 29/06/2019.
     
    Olá meus amigos, essa é a minha última contribuição free que faço na área de OTserver, fiz uma atualização bem completa do Gesior comparando com os que existem disponíveis, não vou falar muito pois grande parte já conhecem... Vou apenas posta algumas imagem das mudanças feitas.
    Sempre gostei de evoluir e de oferecer aos demais uma facilidade de obter um material grátis e de qualidade, nunca utilizei meu pouco conhecimento para prejudicar os demais, pelo o contrario sempre foi na intenção de ajudar e se em algum momento falhei, falhei inconscientemente.
     
    - Foi mudado algumas imagens de layout para renovar a estrutura.

     
    - Server Info + Most Power Ful Guilds na mesma estrura.

     
    - Create Account exigindo senhas com letras minusculas, maiúsculas e números, fortalecendo
    a segurança do seu cliente e dificultando futuras dores de cabeças.

     
    - Adicionado o mecanismo que identifica os valores de Premuim Points e Backup Points.
    - Algumas mudanças de layout.
    - Nome do player abaixo linkado.

     
    - Adicionado um Box de doação, com a intenção apenas de complementar
    o layout enriquecendo a pagina.

     
    - Fixado o bug edit town, e melhorado o layout.

     
    - Characters.php refeito, nesta imagem é uma visão de uma conta com access admin.

     
    - Visão normal.

     
    - Inventário completo.
    - Guilds com visão ampliada.

     
    - Detalhes...

     
    - Novo SHOP com as estrutura de layout melhorada e modernizada.
    - Sem BUGs lembre-se do CTRL + F5 para atualizar os cookies nesta pagina.

     
    - Detalhes...

     
    - Detalhes...

     
    - Detalhes...

     
    - Histórico do SHOP...

     
    DOWNLOAD SITE
    SHOP.LUA XAMPP 1.7.3 DATABASE LIMPA MYSQL DATABASE COMPLETA MYSQL   TUTORIAIS ÚTEIS E COMPATÍVEIS PARA O SITE: PAGSEGURO AUTOMATICO SHOPGUILD BACKUP_POINTS SISTEMA VIP_TIME   Créditos: Gesior.pl(WEBMaster) Felipe Monteiro(WEBMaster, WEBDesigner) Natanael Beckman(WEBNada) Nailan (WEBMaster) Ivens Pontes (WEBMaster) Marcio Porto (WEBMaster) Danyel Varejão (Programmer LUA, C++)
  21. Curtir
    QuebradaZN deu reputação a Sociopata em Instalando Zombie Event   
    Bem hj vou estar postando o ZOMBIE EVENT q eu uso no meu server sem erros nem nada..

    Testado em tfs 0.3 pra mais
    Testado em 8.54,8.60






    COMANDOS




    INSTALAÇÃO

    data/creaturescripts/scripts/zombie/onattack.lua


    function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end /data/creaturescripts/scripts/zombie/ondeath.lua function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end /data/creaturescripts/scripts/zombie/onthink.lua function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end /data/creaturescripts/scripts/login.lua add: registerCreatureEvent(cid, "ZombieAttack") /data/globalevents/scripts/zombie/onstartup.lua function onStartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end /data/globalevents/scripts/zombie/onthink.lua function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end /data/lib/zombie_event.lua -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 5 ZE_ACCESS_TO_IGNORE_ARENA = 3 -- POSITIONS ZE_blockEnterItemPosition = {x= 873, y=997, z=7} ZE_enterPosition = {x = 1638, y = 1530, z = 7} ZE_kickPosition = {x=874, y=994, z=7} ZE_spawnFromPosition = {x = 1617, y = 1514, z = 7} ZE_spawnToPosition = {x = 1671, y = 1565, z = 7} -- ITEM IDS ZE_blockEnterItemID = 2700 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end end function removeZombiesEventBlockEnterPosition() local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false)) == 'number') if(ret) then addZombiesCount() end return ret end /data/movements/scripts/zombie/onenter.lua function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end /data/talkactions/scripts/zombie/onsay.lua function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end AGR EM XMLS /data/creaturescripts/creaturescripts.xml <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml TFS 0.3 <globalevent name="ZombieGlobalThink" interval="5" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> TFS 0.4 <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/zombie_event.xml <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> /data/monster/monsters.xml


    Créditos
    PhoOwned 99%
    Sociopata 1%

    Bem é isso por favor antes de postar erros vejam se fizeram os procedimento de modo correto, por que eu uso isso RLs usam e nunca tiveram problema, e tbm so pra lembrar vcs precisam ter a arena tradicional do Zombie Event para garantir o funcionamento em 100% e pelo amor de deus n coloquem em ot com TFS menor que 0.3.
    OBRIGADO A TODOS E POR FAVOR COMENTEM
    <monster name="Zombie Event" file="zombie_event.xml"/>
  22. Curtir
    QuebradaZN deu reputação a antharaz em [Error] Couldn't execute event: zombie_event   
    @PobrePreto 
     
     
    arrumei a função onTimer que no seu script estava onTime e coloquei o return true.
  23. Curtir
    QuebradaZN deu reputação a antharaz em [Error] Couldn't execute event: zombie_event   
    @PobrePreto 
     
    Segue abaixo o .lua arrumado:
     
     
  24. Gostei
    QuebradaZN recebeu reputação de OTServ835 em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?
  25. Gostei
    QuebradaZN recebeu reputação de tirso em Double Exp Potion Completa   
    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei!
    Em Mods Coloque esse Arquivo!
    <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s)     local n = math.floor(s / 60)     s = s - (60 * n)     return n, s end CreatureEventChecker = function(event, ...) -- Colex     if isCreature(arg[1]) then    event(unpack(arg))     end end creatureEvent = function(event, delay, ...) -- Colex     addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo     return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then     return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then     return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then     return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then     return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then     doRemoveItem(item.uid, 1) end   for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time     if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))   if #a < 4 then   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)   end   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.")   end   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".")   end     end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado:
    configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR!   Vá na Script e Cace a Linha: <action itemid="7440" event="script">  e Troque o ID Pelo item ou Potion Desejado! é Isso ae!   Se Ajudei Não Custa nada dar um REP né?

Informação Importante

Confirmação de Termo