Ir para conteúdo

wevertonvrb

Visconde
  • Total de itens

    303
  • Registro em

  • Última visita

  • Dias Ganhos

    4

Posts postados por wevertonvrb

  1. Em 01/08/2021 em 16:27, Radke disse:

    Olá, eu tenho um servidor de Pokétibia (Base Poke Inpedium), normalmente ele roda com o uso da CPU em 3 a 10%, o problema atual é:

    Quando os players atacam lendários (Pokémon (Monster selvagem) com muito HP, DEF, ATK... etc) o servidor laga muito  e o uso do CPU vai pra 100%.


    PS: Esse problema some as vezes, e reaparece do nada kkk'
    Gostaria de pedir ajuda nisso, meu Jogo já está online a 2 anos e foi sempre assim.


    tfs versão 0.3.6.
    VPS Linux ubuntu-14.04-x86_64
    CPU 4x - RAM 10gb


     

    então mano tira todos os poderes dos lendarios e ataca com um player e olha se continua lagando, eu tive esse problema e ele estava em um poder que o lendario usa, 
    se vc tirar todos os poderes e n der lag depois vai colocando os poderes de volta 1 a 1 e verifique, outra coisa é olha os poderes q o lendario ta usando quanto da lag q pode te dar uma dica, se isso n resolver tente recriar o lendario.

    se nada resolver tente dar muita vida a um caterpie e verifica se da lag, se não der volta a vida dele ao normal e almenta a defesa, vai testando tudo ate encontrar o real motivo, pois se n gera um erro tem q ir verificando 1 a 1

  2. Em 21/04/2021 em 12:44, Soumuitopro disse:
    Versão do Servidor: TFS - 0.3.5
    Tipo de Script: creaturescript
    Código:
      Ocultar conteúdo
    
    
    [Error - Action Interface]
    In a timer event called from:
    data/actions/scripts/Basic/catch.lua:onUse
    Description:
    data/lib/004-database.lua:76: [Result:getDataString] Result not set!
    stack traceback:
            [C]: in function 'error'
            data/lib/004-database.lua:76: in function 'getDataString'
            data/lib/pokedex system.lua:46: in function 'getPlayerDexInfo'
            data/lib/catch system.lua:509: in function 
              
    [Error - CreatureScript Interface]
    data/creaturescripts/scripts/player/moveItem.lua:onMoveItem
    Description:
    data/lib/101-main functions.lua:672: attempt to index field '?' (a nil value)
    stack traceback:
            data/lib/101-main functions.lua:672: in function 'doTransformPokeballIcon'
            data/creaturescripts/scripts/player/moveItem.lua:172: in function 

    to tentando aprender a  editar servidor e começei pela parte de adicionar pokemons ja que ja sei um pouco sobre o mapa, adicionei o pokemon shiny magnezone como teste e ta funcionando tudo tranquilo, da  pra invocar ele, matar, capturar mas quando captura aparece  o primeiro erro ali em cima e quando vem o icone pra bag não da pra mover pro slot do pokemon e quando joga no chão não da pra puxar de volta pra bag e  aparece esse segundo erro ai.

     

    se puderem me ajudar agradeço muito. 

    pelo que eu entendi o item que vc adicionou ou o item que serve como icone ou pokeball não é movivel, o erro pode estar no client, no item editor ou no items.xml
    tambem pode não estar registrado na tabela com todos os ids
    recomendo refazer ele copiando e colando um item que ja funciona trocando apenas os ids pra ficar mais facil

  3. gente meu market não aceita itens editados, por exemplo itens com descrição   mudança por alguma actions
    no meu caso se o item tiver com um Embuement qualquer ele não aparece mais no market

  4.  então gente eu gostaria da ajuda de vocês
    eu gostaria de fazer as casas do meu servidor salvar qualquer coisa que esteja dentro dela, não importando os atributos
    podendo ser qualquer coisa, se ta dentro de casa tem q continuar la


    encontrei isso em iomapserialize.ccp, fiz algumas alterações mas gerou erro no save acredito que esteja no caminho certo mas sem sucesso
     

    Spoiler

        // Note that these are NEGATED, ie. these are the items that will be saved.
            if (!(it.moveable || it.isCarpet() || item->getDoor() || (item->getContainer() && !item->getContainer()->empty()) || it.canWriteText || item->getBed())) {
                continue;
            }

     

  5. 3 horas atrás, brazvct disse:

    Voce está sem includes no seu visual basic, voce nem colocou Release, ta como debug, ai você vai ter dificuldades mesmo, não sabe ler o tutorial.

    meu tutorial n deve ser o mesmo que o seu pq no tutorial dizia que tanto faz se usa release ou debug e acabei compilando como debug msm e esta funcionando normalmente, isso pode trazer algum problema?


    pode fechar já consegui

  6. 6 minutos atrás, brazvct disse:

    entendi nada, esse link ai eu ja encontrei a anos quero ajuda pra compilar o primeiro link ai esta off
    1>------ Build started: Project: theforgottenserver, Configuration: Debug x64 ------
    1>  otpch.cpp
    1>e:\tibia\server1\server\src\otpch.h(45): fatal error C1083: Cannot open include file: 'pugixml.hpp': No such file or directory
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

  7. gente eu estou seguindo o tutorial como eu posso, mas um dos linkds que leva pro visual c++ esta off eu estou tentando usar o 2015 mas o tutorial manda eu fazer coisas que eu não encontro então eu fico garrado sem saber oque fazer
    aqui esta o servidor
    github.com/Qwizer/realmap11
     ele ja vem com a source, mas eu n consigo compilar por favor me ajudemo compilar por favor me ajudem

  8. então gente eu estou trabalhando num script simples mas  estou tendo problemas nele pois ele esta funcionando apenas em parte
    ele esta entregando o item para o player porem ele não esta dando a descrição ao item
    eu quero que o item venha com a descrição falando a quem o item pertence, no caso quem comprou o item

    peço por gentileza que me ajudem

     

    script

    Spoiler

    function onUse(player, item)
    if getPlayerItemCount(player, 32255) == 1 then
     doPlayerRemoveItem(player, 32255, 1)
     doItemSetAttribute(doPlayerAddItem(player, 32256, 1), "description", "Item comprado por " .. getCreatureName(player))
     else
     doPlayerSendCancel(player, "Voce não possui coins suficiente para pegar esse item")
     end
     return true
     end

     

  9. o script esta funcionando perfeitamente do jeito que eu quero porem mesmo funcionando ele esta gerando erro na distro e quero corrigir esse erro e lhes peço por gentileza que me ajudem
    o script é uma poção que enche vida por segundo durante um determinado tempo, quando eu uso a poção a vida enche certinho porem gera erro conforme a foto que esta abaixo

     

    script

    Spoiler

    function onUse(cid, item, fromPos, itemEx, toPos)
    local function doRegeneration(cid, formula, count)
        doCreatureAddHealth(cid, formula.health)
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
        if (count ~= 1) then
            addEvent(doRegeneration, 2500, cid, formula, count - 1)
        end
        return true
    end
    local tempo = 30 -- tempo que a potion ira ficar healando (tempo em segundos)
    local storage = 11148 -- não mexa aqui
    local form = {health = 1}
    if (getPlayerStorageValue(cid, storage) <= os.time()) then
    doRegeneration(cid, form, tempo)
    doChangeTypeItem(item.uid, item.type - 1)
    setPlayerStorageValue(cid, storage, os.time())

    end
    return true
    end

     

    aaaaaaaaaaaaa.png

  10. 2 minutos atrás, brazvct disse:

    Não tem como o cliente dar debug com o mapa, é só usar a mesma versão de SPR do mapa
    Tem o items.otb tb que influencia nisso, é nele que é configurado o que da pra andar em cima/não e se tiver divergencia com o spr do cliente, as vezes perde o foco o boneco, fica invisivel essas coisas

    eu estou querendo usar o mapa globall, porem o servidor não veio com ele então eu peguei um mapa globall 10.98 de outro servidor mas ta dificil deichar tudo certinho
    o mesmo item com mesmo id buga em 1 lugar mas em outro não
    se eu algumas escadas deicha o boneco invisivel agora esquilo e mino archer ja faz o client dar debug no mesmo instante q aparece na tela
    alguma dica??
    vc pode sugerir algum mapa globall mais compativel??

  11. 12 horas atrás, brazvct disse:

    Eu coloquei uma opção pra voce diminuir o zoom com CTRL (Menos) e CTRL (Mais) e pode editar o zoom padrão em otclient/modules/gameinterface/gameinterface.lua, só procurar por zoom setZoom(27) e outros lugares que aponta 27.

    Porém você pode editar a source
    Tem que baixar a source original do TFS 1.3 e compilar ela e depois baixar o OTCLIENT sem modificações na source e por na pasta e alterar também o zoom no gameinterface pra versão original do zoom.

    Source original do TFS: https://github.com/otland/forgottenserver
    Source Original do Otclient: https://github.com/edubart/otclient

    E caso voce quiser colocar pros monstros alterar com a visão que está nesse servidor do tópico, é só fazer isso:

      Ocultar conteúdo

     

    Troque isso no creature.cpp:

    Code:
    
    
    bool Creature::canSee(const Position& myPos, const Position& pos, int32_t viewRangeX, int32_t viewRangeY)
    {
       if (myPos.z <= 7) {
           //we are on ground level or above (7 -> 0)
           //view is from 7 -> 0
           if (pos.z > 7) {
               return false;
           }
       } else if (myPos.z >= 8) {
           //we are underground (8 -> 15)
           //view is +/- 2 from the floor we stand on
           if (Position::getDistanceZ(myPos, pos) > 2) {
               return false;
           }
       }
    
       const int_fast32_t offsetz = myPos.getZ() - pos.getZ();
       return (pos.getX() >= myPos.getX() - viewRangeX + offsetz) && (pos.getX() <= myPos.getX() + viewRangeX + offsetz)
           && (pos.getY() >= myPos.getY() - viewRangeY + offsetz) && (pos.getY() <= myPos.getY() + viewRangeY + offsetz);
    }

    Pra isso:

    Code:
    
    
    bool Creature::canSee(const Position& myPos, const Position& pos, int32_t viewRangeX, int32_t viewRangeY)
    {
       if (myPos.z <= 7) {
           //we are on ground level or above (7 -> 0)
           //view is from 7 -> 0
           if (pos.z > 7) {
               return false;
           }
       } else if (myPos.z >= 8) {
           //we are underground (8 -> 15)
           //view is +/- 2 from the floor we stand on
           if (Position::getDistanceZ(myPos, pos) > 2) {
               return false;
           }
       }
    
       const int_fast32_t offsetz = myPos.getZ() - pos.getZ();
       return (pos.getX() >= myPos.getX() - Map::maxViewportX + offsetz) && (pos.getX() <= myPos.getX() + Map::maxViewportX + offsetz)
           && (pos.getY() >= myPos.getY() - Map::maxViewportY + offsetz) && (pos.getY() <= myPos.getY() + Map::maxViewportY + offsetz);
    }

     

    
    
     

    mui obrigado deu tudo certinho nessa parte, mas eu gostaria de saber se vc tem o mapa globall desse servidor, eu to tentando adaptar varios mapas mas o client fica dando debug, é tanto debug, sera q vcs tem o word.otbM globall que sirva para esse server? pode passar?

  12. Em 20/05/2020 em 01:52, brazvct disse:

    Download:
    https://www.mediafire.com/file/duod883uo8ke35j/Servidor_tfs_1-3.rar/file

    Scan:
    https://www.virustotal.com/gui/file/4c6a8b986087cd39cc678e2c73146663863f8bca650e5c06c8a6179db6c69ea5/detection

    (Usem o banco de dados tibia.sql ele ja ta configurado com o ZnoteAAC)
    (Znote AAC Incluso)

    Contém:

    1. Tfs 1.3 compilado em 32 bits + Sources

    2. Otclient compilado em 32 bits + Sources

    3. Aumentado Tamanho da Tela pra 19 Tiles

    4. Adicionado X Y Z no minimap.

    5. Interface padrão do OTCLIENT trocada pra transparente.

    6. Removido painel direito e esquerdo do Otclient,

    7. Limitado o Zoom (Não da pra bugar)

    8. Removido Hotkey (CTRL + .)

    9. Fixado o Login do OTCLIENT pra ip FIXO. (Troque em entergame.lua)

     

    Eu não ativei Transparency nem Extended, caso queira ativar:


    Dentro do things.lua na pasta game_things, abaixo de:

    function load()

    local version = g_game.getClientVersion()

    Coloque isso:

    g_game.enableFeature(GameSpritesU32) -- To extended the sprites

    g_game.enableFeature(GameSpritesAlphaChannel) -- To enable transparency

    Vai o print antigo mesmo pq é a mesma coisa


    Screenshot (2).png

    MANO como eu faço pra diminuir o tamanho da tela? ela esta tão grande que parece que estou jogando pelo mapa editor, sem contar que os monstros ficam parados sem movimentos ate que vc fique 9 tiles de distancia deles
    se for possivel me passar um tutorial pra deixar com esses 9 tiles de distancia eu lhe agradeço ou se for possivel me passar o servidor sem essa alteração que vc fez te agradeceria também 

  13. 9 minutos atrás, brazvct disse:

    É só voce baixar o mapa atualizado de alguma outra base e converter a versão

    @brazvct
    to tentando mano mas ta dando erro tela preta por conta de coisas diferentes
    poderia dar essa força?
    fora da cidade ate que pega de boa mas n posso entrar q fica assim

    Sem título.jpg

  14. Em 14/07/2020 em 21:40, brazvct disse:

    É só abrir sprites com Object builder e exportar como transparency e extended q vai dar certo.

    Se voce não vai usar extended e transparency nao tem pq ativar isso no código

    mano vc tem o mapa globall pra esse serve ou pode passar de um link?

  15. 4 horas atrás, adrianokk disse:

    Pronto coloquei ele todo. só faltava o tempo que ele demora para voltar ao item anteiros.
    Deixa eu ver se consigo explicar.

    Quando o jogador aperta (Exemplo: Em uma parede deitada --- id: 17256), a parede vira outro item (EX: Parede virada | id: 17257 ) e depois do time * 60000) (Time esta em 5 = 5 minutos)

    Apos esses 5 minutos a parede volta para o ID: 17256.

    o problema é que quanto o jogador aperta na parede 17256, ela se transforma na parede 17257 instantaneamente.
    eu quero colocar um CD de ex:5 segundos. para que quando o jogador aperta na parede 17256 demore 5 segundos para ela virar a parede 17257  

     

    vai la no actions/scripts e cria um arquivo.lua e cola isso dentro

    Spoiler

    function onUse(cid, item)
              doTransformItem(item.uid,?????) ----- nas interrogação coloca o id da parede 2 no caso parede virada

                doDecayItem(item.uid)
                    return true
    end

    no item.xml procura a parede 2 e coloca esses atributos no item
          <attribute key="decayTo" value="??????"/> nas interrogação coloca o id da parede 1
            <attribute key="duration" value="?????"/> nas interrogação vc coloca o tempo acredito que conte em segundos

    n esquece de registrar no actions.xml 

    <action actionid="5555" event="script" value="NOMEDOSCRIPT.lua"/>

    pra fazer funcionar em apenas 1 parede determinada no local x,y,z recomendo registrar usando uma actionid EU BOTEI ALI 5555 é so registrar ela na parede pelo map editor não esquesse de editar o NOMEDOSCRIPT
    caso seja uma arvore espalhada pelo mapa ou varias paredes espalhadas por exemplo vc pode trocar o action id por itemid e colocar o id da parede 1 que todas elas vai funcionar

  16. então gente eu estou querendo botar um site no meu servidor 7.6 
    mas me deparei com um erro, quando eu crio a conta no site ela aparentemente não é salva dentro do jogo

    eu crio no site normalmente segue a print https://prnt.sc/s3dd0t
    mas quando eu tento logar no jogo aparece a mensagem que a acc não existe https://prnt.sc/s3dfo6
    oque pode estar causando isso?

     

    config.php

    Spoiler

    <?php
        if (!defined('ZNOTE_OS')) {
            $isWindows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
            define('ZNOTE_OS', ($isWindows) ? 'WINDOWS' : 'LINUX');
        }
        
        // If you want to use items.php (not 100% yet, I guess)
        // Tested with TFS items.xml master (1.3)
        $config['items'] = false;
        
        // Available options: TFS_02, TFS_03, OTHIRE
        // OTHire = OTHIRE
        // TFS 0.2 = TFS_02
        // TFS 0.3 = TFS_03 (If ur using 0.3.6, set $config['salt'] to false)!
        // TFS 0.4 = TFS_03
        // TFS 1.0 = TFS_10 (Under developement)
        $config['ServerEngine'] = 'TFS_03';
        // As far as I know, OTX is based on TFS_03, so make sure TFS version is configured TFS_03
        $config['CustomVersion'] = false;

        $config['site_title'] = 'Znote AAC';
        $config['site_title_context'] = 'Because open communities are good communities. :3';
        $config['site_url'] = "http://demo.znote.eu";

        // Path to server folder without / Example: C:\Users\Alvaro\Documents\GitHub\forgottenserver
        $config['server_path'] = 'C:\Users\ADM\Desktop\Global 7.6 backup\Global 7.6\forgottenserver.s3db'; 

        // ------------------------ \\
        // MYSQL CONNECTION DETAILS \\
        // ------------------------ \\

        // phpmyadmin username for OT server: (DONT USE "root" if ur hosting to public.).
        $config['sqlUser'] = 'root';

        // phpmyadmin password for OT server:
        $config['sqlPassword'] = '';

        // The database name to connect to. (This is usually same as username).
        $config['sqlDatabase'] = 'tibia4';

        // Hostname is usually localhost or 127.0.0.1.
        $config['sqlHost'] = '127.0.0.1';

        // QR code authenticator Only works with TFS 1.2+
        $config['twoFactorAuthenticator'] = false;
        // You can use the mobile phone app "authy" with this.

        /* CLOCK FUNCTION
            - getClock() = returns current time in numbers.
            - getClock(time(), true) = returns current time in formatted date
            - getClock(false, true) = same as above
            - getClock(false, true, false) = get current time, don't adjust timezone 
            - echo getClock($profile_data['lastlogin'], true); = from characterprofile,
            explains when user was last logged in. */
        function getClock($time = false, $format = false, $adjust = true) {
            if ($time === false) $time = time();
            // Date string representation
            $date = "d F Y (H:i)"; // 15 July 2013 (13:50)
            if ($adjust) $adjust = (1 * 3600); // Adjust to fit your timezone.
            else $adjust = 0;
            if ($format) return date($date, $time+$adjust);
            else return $time+$adjust;
        }

        // ------------------- \\
        // CUSTOM SERVER STUFF \\
        // ------------------- \\
        // Enable / disable Questlog function (true / false) 
        $config['EnableQuests'] = false;
        
        // array for filling questlog (Questid, max value, name, end of the quest fill 1 for the last part 0 for all others)
        $config['quests'] = array(
            array(1501,100,"Killing in the Name of",0),
            array(1502,150,"Killing in the Name of",0),
            array(65001,100,"Killing in the Name of",0),
            array(65002,150,"Killing in the Name of",0),
            array(65003,300,"Killing in the Name of",0),
            array(65004,3,"Killing in the Name of",0),
            array(65005,300,"Killing in the Name of",0),
            array(65006,150,"Killing in the Name of",0),
            array(65007,200,"Killing in the Name of",0),
            array(65008,300,"Killing in the Name of",0),
            array(65009,300,"Killing in the Name of",0),
            array(65010,300,"Killing in the Name of",0),
            array(65011,300,"Killing in the Name of",0),
            array(65012,300,"Killing in the Name of",0),
            array(65013,300,"Killing in the Name of",0),
            array(65014,300,"Killing in the Name of",1),
            array(12110,2,"The Inquisition",0),
            array(12111,7,"The Inquisition",0),
            array(12112,3,"The Inquisition",0),
            array(12113,6,"The Inquisition",0),
            array(12114,3,"The Inquisition",0),
            array(12115,3,"The Inquisition",0),
            array(12116,3,"The Inquisition",0),
            array(12117,5,"The Inquisition",1),
            array(330,3,"Sam's Old Backpack",1),
            array(12121,3,"The Ape City",0),
            array(12122,5,"The Ape City",0),
            array(12123,3,"The Ape City",0),
            array(12124,3,"The Ape City",0),
            array(12125,3,"The Ape City",0),
            array(12126,3,"The Ape City",0),
            array(12127,4,"The Ape City",0),
            array(12128,3,"The Ape City",0),
            array(12129,3,"The Ape City",1),
            array(12101,1,"The Ancient Tombs",0),
            array(12102,1,"The Ancient Tombs",0),
            array(12103,1,"The Ancient Tombs",0),
            array(12104,1,"The Ancient Tombs",0),
            array(12105,1,"The Ancient Tombs",0),
            array(12106,1,"The Ancient Tombs",0),
            array(12107,1,"The Ancient Tombs",1),
            array(12022,3,"Barbarian Test Quest",0),
            array(12022,3,"Barbarian Test Quest",0),
            array(12022,3,"Barbarian Test Quest",1),
            array(12025,3,"The Ice Islands Quest",0),
            array(12026,5,"The Ice Islands Quest",0),
            array(12027,3,"The Ice Islands Quest",0),
            array(12028,2,"The Ice Islands Quest",0),
            array(12029,6,"The Ice Islands Quest",0),
            array(12030,8,"The Ice Islands Quest",0),
            array(12031,3,"The Ice Islands Quest",0),
            array(12032,4,"The Ice Islands Quest",0),
            array(12033,2,"The Ice Islands Quest",0),
            array(12034,2,"The Ice Islands Quest",0),
            array(12035,2,"The Ice Islands Quest",0),
            array(12036,6,"The Ice Islands Quest",1),
        );

        //Achivements based on "https://github.com/PrinterLUA/FORGOTTENSERVER-ORTS/blob/master/data/lib/achievements_lib.lua"  (TFS 1.0)
        $config['Ach'] = false;
        $config['achievements'] = array(
            35000 => array(
                'First Dragon', //name
                'Rumours say that you will never forget your first Dragon', //comment
                'points' => '1', //points
                'img' => 'http://www.tibia-wiki.net/images/Dragon.gif', //img link or folder (example)> 'images/dragon.png'
            ),
            35001 => array(
                'Uniwheel',
                'You\'re probably one of the very few people with this classic and unique ride, hope it doesn\'t break anytime soon.', //comment
                'points' => '1', //points
                'img' => 'http://img1.wikia.nocookie.net/__cb20140214234600/tibia/en/images/e/e5/Uniwheel.gif', //img link or folder (example)> 'images/dragon.png'
                'secret' => true
            ),
            30001 => array(
                'Allow Cookies?', 
                'With a perfectly harmless smile you fooled all of those wicecrackers into eating your exploding cookies. Consider a boy or girl scout outfit next time to make the trick even better.', 
                'points' => '10', // 1-3 points (1star), 4-6 points(2 stars), 7-9 points(3 stars), 10 points => (4 stars)
                'secret' => true // show "secret" image
            ),
            30002 => array(
                'Backpack Tourist',
                'If someone lost a random thing in a random place, you\'re probably a good person to ask and go find it, even if you don\'t know what and where.',
                'points' => '7'
            ),
            30003 => array(
                'Bearhugger',
                'Warm, furry and cuddly - though that same bear you just hugged would probably rip you into pieces if he had been conscious, he reminded you of that old teddy bear which always slept in your bed when you were still small.', 
                'points' => '4'
            ),
            30004 => array(
                'Bone Brother',
                'You\'ve joined the undead bone brothers - making death your enemy and your weapon as well. Devouring what\'s weak and leaving space for what\'s strong is your primary goal.',
                'points' => '1'
            ),
            30005 => array(
                'Chorister',
                'Lalalala... you now know the cult\'s hymn sung in Liberty Bay by heart. Not that hard, considering that it mainly consists of two notes and repetitive lyrics.', 
                'points' => '1'
            ),
            30006 => array(
                'Fountain of Life',
                'You found and took a sip from the Fountain of Life. Thought it didn\'t grant you eternal life, you feel changed and somehow at peace.', 
                'points' => '1',
                'secret' => true
            ),
            30007 => array(
                'Here, Fishy Fishy!',
                'Ah, the smell of the sea! Standing at the shore and casting a line is one of your favourite activities. For you, fishing is relaxing - and at the same time, providing easy food. Perfect!', 
                'points' => '1'
            ),
            30008 => array(
                'Honorary Barbarian',
                'You\'ve hugged bears, pushed mammoths and proved your drinking skills. And even though you have a slight hangover, a partially fractured rib and some greasy hair on your tongue, you\'re quite proud to call yourself a honorary barbarian from now on.', 
                'points' => '1'
            ),
            30009 => array(
                'Huntsman',
                'You\'re familiar with hunting tasks and have carried out quite a few already. A bright career as hunter for the Paw & Fur society lies ahead!',
                'points' => '2'
            ),
            300010 => array(
                'Just in Time',
                'You\'re a fast runner and are good at delivering wares which are bound to decay just in the nick of time, even if you can\'t use any means of transportation or if your hands get cold or smelly in the process.', 
                'points' => '1'
            ),
            30011 => array(
                'Matchmaker',
                'You don\'t believe in romance to be a coincidence or in love at first sight. In fact - love potions, bouquets of flowers and cheesy poems do the trick much better than ever could. Keep those hormones flowing!', 
                'points' => '1',
                'secret' => true
            ),
            30012 => array(
                'Nightmare Knight',
                'You follow the path of dreams and that of responsibility without self-centered power. Free from greed and selfishness, you help others without expecting a reward.',
                'points' => '1',
                'secret' => true
            ),
            30013 => array(
                'Party Animal',
                'Oh my god, it\'s a paaaaaaaaaaaarty! You\'re always in for fun, friends and booze and love being the center of attention. There\'s endless reasons to celebrate! Woohoo!',
                'points' => '1',
                'secret' => true
            ),
            30014 => array(
                'Secret Agent',
                'Pack your spy gear and get ready for some dangerous missions in service of a secret agency. You\'ve shown you want to - but can you really do it? Time will tell.', 
                'points' => '1',
                'secret' => true
            ),
            30015 => array(
                'Talented Dancer',
                'You\'re a lord or lady of the dance - and not afraid to use your skills to impress tribal gods. One step to the left, one jump to the right, twist and shout!',
                'points' => '1'
            ),
            30016 => array(
                'Territorial',
                'Your map is your friend - always in your back pocket and covered with countless marks of interesting and useful locations. One could say that you might be lost without it - but luckily there\'s no way to take it from you.',
                'points' => '1'
            ),
            30017 => array(
                'Worm Whacker',
                'Weehee! Whack those worms! You sure know how to handle a big hammer.', 
                'points' => '1',
                'secret' => true
            ),
            30018 => array(
                'Allowance Collector',
                'You certainly have your ways when it comes to acquiring money. Many of them are pink and paved with broken fragments of porcelain.',
                'points' => '1'
            ),
            30019 => array(
                'Amateur Actor',
                'You helped bringing Princess Buttercup, Doctor Dumbness and Lucky the Wonder Dog to life - and will probably dream of them tonight, since you memorised your lines perfectly. What a .. special piece of.. screenplay.', 
                'points' => '2'
            ),
            30020 => array(
                'Animal Activist',
                'Phasellus lacinia odio dolor, in elementum mauris dapibus a. Vivamus nec gravida libero, ac pretium eros. Nam in dictum ealesuada sodales. Nullam eget ex sit amet urna fringilla molestie. Aliquam lobortis urna eros, vel elementum metus accumsan eu. Nulla porttitor in lacus vel ullamcorper.',
                'points' => '2',
                'secret' => true
            ),
        );

        // TFS 1.0 powergamers and top online
        //Before enabling powergamers, make sure that you have added LUA files and possible cloums to your server.
        //files can be found at Lua folder.
        
        $config['powergamers'] = array(
            'enabled' => true, // Enable or disable page
            'limit' => 20, //Number of players that it will show.
        );

        $config['toponline'] = array(
            'enabled' => true, // Enable or disable page
            'limit' => 20, //Number of players that it will show.
        );

        // Vocation IDs, names and which vocation ID they got promoted from
        $config['vocations'] = array(
            0 => array( 
                'name' => 'No vocation',
                'fromVoc' => false
            ),
            1 => array( 
                'name' => 'Sorcerer',
                'fromVoc' => false
            ),
            2 => array( 
                'name' => 'Druid',
                'fromVoc' => false
            ),
            3 => array( 
                'name' => 'Paladin',
                'fromVoc' => false
            ),
            4 => array( 
                'name' => 'Knight',
                'fromVoc' => false
            ),
            5 => array( 
                'name' => 'Master Sorcerer',
                'fromVoc' => 1
            ),
            6 => array( 
                'name' => 'Elder Druid',
                'fromVoc' => 2
            ),
            7 => array( 
                'name' => 'Royal Paladin',
                'fromVoc' => 3
            ),
            8 => array( 
                'name' => 'Elite Knight',
                'fromVoc' => 4
            )
        );

        /* Vocation stat gains per level
            - Ordered by vocation ID
            - Currently used for admin_skills page. */
        $config['vocations_gain'] = array(
            0 => array(
                'hp' => 5,
                'mp' => 5,
                'cap' => 10
            ),
            1 => array(
                'hp' => 5,
                'mp' => 30,
                'cap' => 10
            ),
            2 => array(
                'hp' => 5,
                'mp' => 30,
                'cap' => 10
            ),
            3 => array(
                'hp' => 10,
                'mp' => 15,
                'cap' => 20
            ),
            4 => array(
                'hp' => 15,
                'mp' => 5,
                'cap' => 25
            ),
            5 => array(
                'hp' => 5,
                'mp' => 30,
                'cap' => 10
            ),
            6 => array(
                'hp' => 5,
                'mp' => 30,
                'cap' => 10
            ),
            7 => array(
                'hp' => 10,
                'mp' => 15,
                'cap' => 20
            ),
            8 => array(
                'hp' => 15,
                'mp' => 5,
                'cap' => 25
            ),
        );
        // Town ids and names: (In RME map editor, open map, click CTRL + T to view towns, their names and their IDs.
        // townID => 'townName' etc: ['3'=>'Thais']
        $config['towns'] = array(
            1 => 'Venore',
            2 => 'Thais',
            3 => 'Kazordoon',
            4 => 'Carlin',
            5 => "Ab'Dendriel",
            6 => 'Rookgaard',
            7 => 'Liberty Bay',
            8 => 'Port Hope',
            9 => 'Ankrahmun',
            10 => 'Darashia',
            11 => 'Edron',
            12 => 'Svargrond',
            13 => 'Yalahar',
            14 => 'Farmine',
            28 => 'Gray Beach',
            29 => 'Roshamuul',
            30 => 'Rookgaard Tutorial Island',
            31 => 'Isle of Solitude',
            32 => 'Island Of Destiny',
            33 => 'Rathleton'
        );

        // - TFS 1.0 ONLY -- HOUSE AUCTION SYSTEM!
        $config['houseConfig'] = array(
            'HouseListDefaultTown' => 1, // Default town id to display when visting house list page page.
            'minimumBidSQM' => 200, // minimum bid cost on auction (per SQM)
            'auctionPeriod' => 24 * 60 * 60, // 24 hours auction time.
            'housesPerPlayer' => 1,
            'requirePremium' => false,
            'levelToBuyHouse' => 8,
            // Instant buy with shop points
            'shopPoints' => array(
                'enabled' => true,
                // SQM => points cost
                'cost' => array(
                    1 => 10,
                    25 => 15,
                    60 => 25,
                    100 => 30,
                    200 => 40,
                    300 => 50,
                ),
            ),
        );

        // Leave on black square in map and player should get teleported to their selected town.
        // If chars get buggy set this position to a beginner location to force players there.
        $config['default_pos'] = array(
            'x' => 5,
            'y' => 5,
            'z' => 2,
        );

        $config['war_status'] = array(
            0 => 'Pending',
            1 => 'Accepted',
            2 => 'Rejected',
            3 => 'Cancelled',
            4 => 'Ended by kill limit',
            5 => 'Ended',
        );

        /* -- SUB PAGES -- 
            Some custom layouts/templates have custom pages, they can use
            this sub page functionality for that.
        */
        $config['allowSubPages'] = true;

        // ---------------- \\
        // Create Character \\
        // ---------------- \\

        // Max characters on each account:
        $config['max_characters'] = 7;

        // Available character vocation users can create.
        $config['available_vocations'] = array(1, 2, 3, 4);

        // Available towns (specify town ids, etc: (1, 2, 3); to display 3 town options (town id 1, 2 and 3).
        $config['available_towns'] = array(1, 2, 4, 5);

        $config['player'] = array(
            'base' => array(
                'level' => 8,
                'health' => 185,
                'mana' => 40,
                'cap' => 470,
                'soul' => 100
            ),
            // health, mana cap etc are calculated with $config['vocations_gain'] and 'base' values of $config['player']
            'create' => array(
                'level' => 8,
                'novocation' => array( // vocation id 0 (No vocation) special settings
                    'level' => 1, // Level
                    'forceTown' => true,
                    'townId' => 30
                ),
                'skills' => array( // See $config['vocations'] for proper vocation names of these IDs
                    // No vocation
                    0 => array(
                        'magic' => 0,
                        'fist' => 10,
                        'club' => 10,
                        'axe' => 10,
                        'sword' => 10,
                        'dist' => 10,
                        'shield' => 10,
                        'fishing' => 10,
                    ),
                    // Sorcerer
                    1 => array(
                        'magic' => 0,
                        'fist' => 10,
                        'club' => 10,
                        'axe' => 10,
                        'sword' => 10,
                        'dist' => 10,
                        'shield' => 10,
                        'fishing' => 10,
                    ),
                    // Druid
                    2 => array(
                        'magic' => 0,
                        'fist' => 10,
                        'club' => 10,
                        'axe' => 10,
                        'sword' => 10,
                        'dist' => 10,
                        'shield' => 10,
                        'fishing' => 10,
                    ),
                    // Paladin
                    3 => array(
                        'magic' => 0,
                        'fist' => 10,
                        'club' => 10,
                        'axe' => 10,
                        'sword' => 10,
                        'dist' => 10,
                        'shield' => 10,
                        'fishing' => 10,
                    ),
                    // Knight
                    4 => array(
                        'magic' => 0,
                        'fist' => 10,
                        'club' => 10,
                        'axe' => 10,
                        'sword' => 10,
                        'dist' => 10,
                        'shield' => 10,
                        'fishing' => 10,
                    ),
                ),
                'male_outfit' => array(
                    'id' => 128,
                    'head' => 78,
                    'body' => 68,
                    'legs' => 58,
                    'feet' => 76
                ),
                'female_outfit' => array(
                    'id' => 136,
                    'head' => 78,
                    'body' => 68,
                    'legs' => 58,
                    'feet' => 76
                )
            )
        );

        // Minimum allowed character name letters. Etc 4 letters: "Kåre".
        $config['minL'] = 3;
        // Maximum allowed character name letters. Etc 20 letters: "Bobkåreolesofiesberg"
        $config['maxL'] = 20;

        // Maximum allowed character name words. Etc 2 words = "Bob Kåre", 3 words: "Bob Arne Kåre" as max char name words.
        $config['maxW'] = 3;

        // -------------- \\
        // WEBSITE STUFF  \\
        // -------------- \\

        // News to be displayed per page
        $config['news_per_page'] = 5;

        // Enable or disable changelog ticker in news page.
        $config['UseChangelogTicker'] = true;

        // Highscore configuration
        $config['highscore'] = array(
            'rows' => 100,
            'rowsPerPage' => 20,
            'ignoreGroupId' => 2, // Ignore this and higher group ids (staff)
        );

        // ONLY FOR TFS 0.2 (TFS 0.3/4 users don't need to care about this, as its fully loaded from db)
        $config['house'] = array(
            'house_file' => 'C:\test\Mystic Spirit_0.2.5\data\world\forgotten-house.xml',
            'price_sqm' => '50', // price per house sqm
        );

        $config['delete_character_interval'] = '3 DAY'; // Delay after user character delete request is executed eg. 1 DAY, 2 HOUR, 3 MONTH etc. 

        $config['validate_IP'] = false;
        $config['salt'] = false;

        // Restricted names
        $config['invalidNameTags'] = array(
            "owner", "gamemaster", "hoster", "admin", "staff", "tibia", "account", "god", "anal", "ass", "fuck", "sex", "hitler", "pussy", "dick", "rape", "cm", "gm", "amazon", "valkyrie", "carrion worm", "rotworm", "rotworm queen", "cockroach", "kongra", "merlkin", "sibang", "crystal spider", "giant spider", "poison spider", "scorpion", "spider", "tarantula", "achad", "axeitus headbanger", "bloodpaw", "bovinus", "colerian the barbarian", "cursed gladiator", "frostfur", "orcus the cruel", "rocky", "the hairy one", "avalanche", "drasilla", "grimgor guteater", "kreebosh the exile", "slim", "spirit of earth", "spirit of fire", "spirit of water", "the dark dancer", "the hag", "darakan the executioner", "deathbringer", "fallen mooh'tah master ghar", "gnorre chyllson", "norgle glacierbeard", "svoren the mad", "the masked marauder", "the obliverator", "the pit lord", "webster", "barbarian bloodwalker", "barbarian brutetamer", "barbarian headsplitter", "barbarian skullhunter", "bear", "panda", "polar bear", "braindeath", "beholder", "elder beholder", "gazer", "chicken", "dire penguin", "flamingo", "parrot", "penguin", "seagull", "terror bird", "bazir", "infernatil", "thul", "munster", "son of verminor", "xenia", "zoralurk", "big boss trolliver", "foreman kneebiter", "mad technomancer", "man in the cave", "lord of the elements", "the count", "the plasmother", "dracola", "the abomination", "the handmaiden", "mr. punish", "the countess sorrow", "the imperor", "massacre", "apocalypse", "brutus bloodbeard", "deadeye devious", "demodras", "dharalion", "fernfang", "ferumbras", "general murius", "ghazbaran", "grorlam", "lethal lissy", "morgaroth", "necropharus", "orshabaal", "ron the ripper", "the evil eye", "the horned fox", "the old widow", "tiquandas revenge", "apprentice sheng", "dog", "hellhound", "war wolf", "winter wolf", "wolf", "chakoya toolshaper", "chakoya tribewarden", "chakoya windcaller", "blood crab", "crab", "frost giant", "frost giantess", "ice golem", "yeti", "acolyte of the cult", "adept of the cult", "enlightened of the cult", "novice of the cult", "ungreez", "dark torturer", "demon", "destroyer", "diabolic imp", "fire devil", "fury", "hand of cursed fate", "juggernaut", "nightmare", "plaguesmith", "blue djinn", "efreet", "admin", "green djinn", "marid", "frost dragon", "wyrm", "sea serpent", "dragon lord", "dragon", "hydra", "dragon hatchling", "dragon lord hatchling", "frost dragon hatchling", "dwarf geomancer", "dwarf guard", "dwarf soldier", "dwarf", "dworc fleshhunter", "dworc venomsniper", "dworc voodoomaster", "elephant", "mammoth", "elf arcanist", "elf scout", "elf", "charged energy elemental", "energy elemental", "massive energy elemental", "overcharged energy elemental", "energy overlord", "cat", "lion", "tiger", "azure frog", "coral frog", "crimson frog", "green frog", "orchid frog", "toad", "jagged earth elemental", "muddy earth elemental", "earth elemental", "massive earth elemental", "earth overlord", "gargoyle", "stone golem", "ghost", "phantasm", "phantasm", "pirate ghost", "spectre", "cyclops smith", "cyclops drone", "behemoth", "cyclops", "slick water elemental", "roaring water elemental", "ice overlord", "water elemental", "massive water elemental", "ancient scarab", "butterfly", "bug", "centipede", "exp bug", "larva", "scarab", "wasp", "lizard sentinel", "lizard snakecharmer", "lizard templar", "minotaur archer", "minotaur guard", "minotaur mage", "minotaur", "squirrel", "goblin demon", "badger", "bat", "deer", "the halloween hare", "hyaena", "pig", "rabbit", "silver rabbit", "skunk", "wisp", "dark monk", "monk", "tha exp carrier", "necromancer", "priestess", "orc berserker", "orc leader", "orc rider", "orc shaman", "orc spearman", "orc warlord", "orc warrior", "orc", "goblin leader", "goblin scavenger", "goblin", "goblin assassin", "assasin", "bandit", "black knight", "hero", "hunter", "nomad", "smuggler", "stalker", "poacher", "wild warrior", "ashmunrah", "dipthrah", "mahrdis", "morguthis", "omruc", "rahemos", "thalas", "vashresamun", "pirate buccaneer", "pirate corsair", "pirate cutthroat", "pirate marauder", "carniphila", "spit nettle", "fire overlord", "massive fire elemental", "blistering fire elemental", "blazing fire elemental", "fire elemental", "hellfire fighter", "quara constrictor scout", "quara hydromancer scout", "quara mantassin scout", "quara pincher scout", "quara predator scout", "quara constrictor", "quara hydromancer", "quara mantassin", "quara pincher", "quara predator", "cave rat", "rat", "cobra", "crocodile", "serpent spawn", "snake", "wyvern", "black sheep", "sheep", "mimic", "betrayed wraith", "bonebeast", "demon skeleton", "lost soul", "pirate skeleton", "skeleton", "skeleton warrior", "undead dragon", "defiler", "slime2", "slime", "bog raider", "ice witch", "warlock", "witch", "bones", "fluffy", "grynch clan goblin", "hacker", "minishabaal", "primitive", "tibia bug", "undead minion", "annihilon", "hellgorak", "latrivan", "madareth", "zugurosh", "ushuriel", "golgordan", "thornback tortoise", "tortoise", "eye of the seven", "deathslicer", "flamethrower", "magicthrower", "plaguethrower", "poisonthrower", "shredderthrower", "troll champion", "frost troll", "island troll", "swamp troll", "troll", "banshee", "blightwalker", "crypt shambler", "ghoul", "lich", "mummy", "vampire", "grim reaper", "frost dragon", "mercenary", "zathroth", "goshnar", "durin", "demora", "orc champion", "dracula", "alezzo", "prince almirith", "elf warlord", "magebomb", "nightmare scion"
        );

        // Use guild logo system
        $config['use_guild_logos'] = true;
        
        // Use country flags
        $config['country_flags'] = array(
            'enabled' => true,
            'highscores' => true,
            'onlinelist' => true,
            'characterprofile' => true,
            'server' => 'http://flag.znote.eu'
        );

        // Show outfits
        $config['show_outfits'] = array(
            'shop' => true,
            'highscores' => true,
            'characterprofile' => true,
            'onlinelist' => true,
            // Image server may be unreliable and only for test,
            // host yourself: https://otland.net/threads/item-images-10-92.242492/
            'imageServer' => 'http://outfit-images.ots.me/animatedOutfits1099/animoutfit.php'
        );

        // Show advanced inventory data in character profile
        $config['EQ_shower'] = array(
            'enabled' => true,
            'equipment' => true,
            'skills' => true,
            'outfits' => true,
            // Player storage (storage_value + outfitId) 
            // used to see if player has outfit.
            // see LUA scripts folder for otserv code
            'storage_value' => 10000
        );

        // Level requirement to create guild? (Just set it to 1 to allow all levels).
        $config['create_guild_level'] = 8;

        // Change Gender can be purchased in shop, or perhaps you want to allow everyone to change gender for free?
        $config['free_sex_change'] = false;

        // Do you need to have premium account to create a guild?
        $config['guild_require_premium'] = true;

        $config['guildwar_enabled'] = false;

        // Use htaccess rewrite? (basically this makes website.com/username work instead of website.com/characterprofile.php?name=username
        // Linux users needs to enable mod_rewrite php extention to make it work properly, so set it to false if your lost and using Linux.
        $config['htwrite'] = true;

        // What client version and server port are you using on this OT?
        // Used for the Downloads page.
        $config['client'] = 1098; // 954 = client 9.54

         // Download link to client.
        $config['client_download'] = 'http://clients.halfaway.net/windows.php?tibia='. $config['client'] .'';
        $config['client_download_linux'] = 'http://clients.halfaway.net/linux.php?tibia='. $config['client'] .'';

        $config['port'] = 7171; // Port number to connect to your OT.
        
        $config['status'] = array(
            'status_check' => false, //enable or disable status checker
            'status_ip' => '127.0.0.1',
            'status_port' => "7171",
        );

        // Gameserver info is used for client 11+ loginWebService
        $config['gameserver'] = array(
            'ip' => '127.0.0.1',
            'port' => 7172,
            'name' => 'OTXServer-Global' // Must be identical to config.lua (OT config file) server name.
        );

        // How often do you want highscores to update?
        $config['cache_lifespan'] = 5;//60 * 15; // 15 minutes.

        // WARNING! Account names written here will have admin access to web page!
        $config['page_admin_access'] = array(
            'firstaccountName',
            'secondaccountName',
        );

        // Built-in FORUM
        // Enable forum, enable guildboards, level to create threads/post in them
        // How long do they have to wait to create thread or post?
        // How to design/display hidden/closed/sticky threads.
        $config['forum'] = array(
            'enabled' => true,
            'outfit_avatars' => true, // Show character outfit as forum avatar?
            'player_position' => true, // Tutor, Community manager, God etc..?
            'guildboard' => true,
            'level' => 5,
            'cooldownPost' => 1,//60,
            'cooldownCreate' => 1,//180,
            'newPostsBumpThreads' => true,
            'hidden' => '<font color="orange">[H]</font>',
            'closed' => '<font color="red">[C]</font>',
            'sticky' => '<font color="green"></font>',
        );

        // Guilds and guild war pages will do lots of queries on bigger databases.
        // So its recommended to require login to view them, but you can disable this
        // If you don't have any problems with load.
        $config['require_login'] = array(
            'guilds' => false,
            'guildwars' => false,
        );

        // IMPORTANT! Write a character name(that exist) that will represent website bans!
        // Or remember to create character "God Website" character exist.
        // If you don't do this, bann from admin panel won't work properly.
        $config['website_char'] = 'Luxitur';

        //----------------\\
        // ADVANCED STUFF \\
        //----------------\\
        // Api config
        $config['api'] = array(
            'debug' => false,
        );

        // Email Server configurations (SMTP)
        /*    Please consider using a released stable version of PHPMailer or you may run into issues.
            Download PHPMailer: https://github.com/PHPMailer/PHPMailer/releases
            Extract to Znote AAC directory (where this config.php file is located)
            Rename the folder to "PHPMailer". Then configure this with your SMTP mail settings from your email provider.
        */
        $config['mailserver'] = array(
            'register' => false, // Send activation mail
            'accountRecovery' => false, // Recover username or password through mail
            'myaccount_verify_email' => false, // Allow user to verify their email in myaccount page
            'verify_email_points' => 0, // 0 = disabled. Give users points reward for verifying their email
            'host' => "mailserver.znote.eu", // Outgoing mail server host.
            'securityType' => 'ssl', // ssl or tls
            'port' => 465, // SMTP port number - likely to be 465(ssl) or 587(tls)
            'email' => 'noreply@znote.eu', 
            'username' => 'noreply@znote.eu', // Likely the same as email
            'password' => 'emailpassword', // The password.
            'debug' => false, // Enable debugging if you have problems and are looking for errors.
            'fromName' => $config['site_title'],
        );
        
        // Don't touch this unless you know what you are doing. (modifying this(key value) also requires modifications in OT files /XML/commands.xml).
        $config['ingame_positions'] = array(
            1 => 'Player',
            2 => 'Tutor',
            3 => 'Senior Tutor',
            4 => 'Gamemaster',
            5 => 'Community Manager',
            6 => 'God',
        );

        // Enable OS advanced feautures? false = no, true = yes
        $config['os_enabled'] = false;

        // What kind of computer are you hosting this website on?
        // Available options: LINUX or WINDOWS
        $config['os'] = ZNOTE_OS;

        // Measure how much players are lagging in-game. (Not completed). 
        $config['ping'] = false;

        // BAN STUFF - Don't touch this unless you know what you are doing.
        // You can order the lines the way you want, from top to bot, in which order you
        // wish for them to be displayed in admin panel. Just make sure key[#] represent your description.
        $config['ban_type'] = array(
            4 => 'NOTATION_ACCOUNT',
            2 => 'NAMELOCK_PLAYER',
            3 => 'BAN_ACCOUNT',
            5 => 'DELETE_ACCOUNT',
            1 => 'BAN_IPADDRESS',
        );

        // BAN STUFF - Don't touch this unless you know what you are doing.
        // You can order the lines the way you want, from top to bot, in which order you
        // wish for them to be displayed in admin panel. Just make sure key[#] represent your description.
        $config['ban_action'] = array(
            0 => 'Notation',
            1 => 'Name Report',
            2 => 'Banishment',
            3 => 'Name Report + Banishment',
            4 => 'Banishment + Final Warning',
            5 => 'NR + Ban + FW',
            6 => 'Statement Report',
        );

        // Ban reasons, for changes beside default values to work with client,
        // you also need to edit sources (tools.cpp line 1096)
        $config['ban_reason'] = array(
            0 => 'Offensive Name',
            1 => 'Invalid Name Format',
            2 => 'Unsuitable Name',
            3 => 'Name Inciting Rule Violation',
            4 => 'Offensive Statement',
            5 => 'Spamming',
            6 => 'Illegal Advertising',
            7 => 'Off-Topic Public Statement',
            8 => 'Non-English Public Statement',
            9 => 'Inciting Rule Violation',
            10 => 'Bug Abuse',
            11 => 'Game Weakness Abuse',
            12 => 'Using Unofficial Software to Play',
            13 => 'Hacking',
            14 => 'Multi-Clienting',
            15 => 'Account Trading or Sharing',
            16 => 'Threatening Gamemaster',
            17 => 'Pretending to Have Influence on Rule Enforcement',
            18 => 'False Report to Gamemaster',
            19 => 'Destructive Behaviour',
            20 => 'Excessive Unjustified Player Killing',
            21 => 'Spoiling Auction',
        );

        // BAN STUFF
        // Ban time duration selection in admin panel
        // seconds => description
        $config['ban_time'] = array(
            3600 => '1 hour',
            21600 => '6 hours',
            43200 => '12 hours',
            86400 => '1 day',
            259200 => '3 days',
            604800 => '1 week',
            1209600 => '2 weeks',
            2592000 => '1 month',
        );

            // --------------- \\
            // SECURITY STUFF  \\
            // --------------- \\
        $config['use_token'] = false;
        // Set up captcha keys on https://www.google.com/recaptcha/
        $config['use_captcha'] = false;
        $config['captcha_site_key'] = "Site key";
        $config['captcha_secret_key'] = "Secret key";
        $config['captcha_use_curl'] = false; // Set to false if you don't have cURL installed, otherwise set it to true

        // Session prefix, if you are hosting multiple sites, make the session name different to avoid conflict.
        $config['session_prefix'] = 'znote_';

        /*    Store visitor data
            Store visitor data in the database, logging every IP visitng site, 
            and how many times they have visited the site. And sometimes what
            they do on the site.
            
            This helps to prevent POST SPAM (like register 1000 accounts in a few seconds)
            and other things which can stress and slow down the server.
            
            The only downside is that database can get pretty fed up with much IP data
            if table never gets flushed once in a while. So I highly recommend you
            to configure flush_ip_logs if IPs are logged.
        */
        $config['log_ip'] = false;

        // Flush IP logs each configured seconds, 60 * 15 = 15 minutes.
        // Set to false to entirely disable ip log flush. 
        // It is important to flush for optimal performance.
        $config['flush_ip_logs'] = 59 * 27;

        /*    IP SECURTY REQUIRE: $config['log_ip'] = true;
            Configure how tight this security shall be.
            Etc: You can max click on anything/refresh page
            [max activity] 15 times, within time period 10
            seconds. During time_period, you can also only
            register 1 account and 1 character.
        */
        $config['ip_security'] = array(
            'time_period' => 10, // In seconds
            'max_activity' => 10, // page clicks/visits
            'max_post' => 6, // register, create, highscore, character search such actions
            'max_account' => 1, // register
            'max_character' => 1, // create char
            'max_forum_post' => 1, // Create threads and post in forum
        );

        //////////////
        /// PAYPAL ///
        //////////////

        // Write your paypal address here, and what currency you want to recieve money in.
        $config['paypal'] = array(
            'enabled' => false,
            'email' => 'edit@me.com', // Example: paypal@mail.com
            'currency' => 'EUR',
            'points_per_currency' => 10, // 1 currency = ? points? [ONLY used to calculate bonuses]
            'success' => "http://".$_SERVER['HTTP_HOST']."/success.php",
            'failed' => "http://".$_SERVER['HTTP_HOST']."/failed.php",
            'ipn' => "http://".$_SERVER['HTTP_HOST']."/ipn.php",
            'showBonus' => true,
        );

        // Configure the "buy now" buttons prices, first write price, then how many points you get.
        // Giving some bonus points for higher donations will tempt users to donate more.
        $config['paypal_prices'] = array(
        //    price => points,
            1 => 45, // -10% bonus
            10 => 100, // 0% bonus
            15 => 165, // +10% bonus
            20 => 240, // +20% bonus
            25 => 325, // +30% bonus
            30 => 420, // +40% bonus
        );

        /////////////////
        /// PAGSEGURO ///
        /////////////////
        // Write your pagseguro address here, and what currency you want to recieve money in.
        $config['pagseguro'] = array(
            'enabled' => false,
            'sandbox' => false,
            'email' => '', // Example: pagseguro@mail.com
            'token' => '',
            'currency' => 'BRL',
            'product_name' => '',
            'price' => 100, // 1 real
            'ipn' => "http://".$_SERVER['HTTP_HOST']."/pagseguro_ipn.php",
            'urls' => array(
                'www' => 'pagseguro.uol.com.br',
                'ws'  => 'ws.pagseguro.uol.com.br',
                'stc' => 'stc.pagseguro.uol.com.br'
            )
        );

        if ($config['pagseguro']['sandbox']) {
            $config['pagseguro']['urls'] = array_map(function ($item) {
                return str_replace('pagseguro', 'sandbox.pagseguro', $item);
            }, $config['pagseguro']['urls']);
        }

        //////////////////
        /// PAYGOL SMS ///
        //////////////////
        // !!! Paygol takes 60%~ of the money, and send aprox 40% to your paypal.
        // You can configure paygol to send each month, then they will send money
        // to you 1 month after recieving 50+ eur.
        $config['paygol'] = array(
            'enabled' => false,
            'serviceID' => 86648, // Service ID from paygol.com
            'secretKey' => 'xxxx-xxxx-xxxx-xxxx', // Secret key from paygol.com. Never share your secret key
            'currency' => 'SEK',
            'price' => 20,
            'points' => 20,
            'name' => '20 points',
            'returnURL' => "http://".$_SERVER['HTTP_HOST']."/success.php",
            'cancelURL' => "http://".$_SERVER['HTTP_HOST']."/failed.php"
        );

        ////////////
        /// SHOP ///
        ////////////
        // If useDB is set to true, player can shop in-game as well using Znote LUA shop system plugin.
        $config['shop'] = array(
            'enabled' => false,
            'loginToView' => false, // Do user need to login to see the shop offers?
            'enableShopConfirmation' => true, // Verify that user wants to buy with popup
            'useDB' => false, // Fetch offers from database, or the below config array
            'showImage' => true,
            'imageServer' => 'items.znote.eu',
            'imageType' => 'gif',
        );

        //////////
        /// Let players sell, buy and bid on characters.
        /// Creates a deeper shop economy, encourages players to spend more money in shop for points.
        /// Pay to win/progress mechanic, but also lets people who can barely afford points to gain it
        /// by leveling characters to sell. It can also discourages illegal/risky third-party account 
        /// services. Since players can buy officially & support the server, dodgy competitors have to sell for cheaper.
        /// Without admin interference this is organic to each individual community economy inflation.
        /////////
        $config['shop_auction'] = array(
            'characterAuction' => false, // Enable/disable this system
            // Account ID of the account that stores players in the auction.
            // Make sure storage account has a very secure password!
            'storage_account_id' => 500000, // Separate secure account ID, not your GM.
            'step' => 5, // Minimum amount someone can raise a bid by
            'step_duration' => 1 * 60 * 60, // When bidding over someone else, extend bid period by 1 hour.
            'lowestLevel' => 20, // Minimum level of sold character
            'lowestPrice' => 10, // Lowest donation points a char can be sold for.
            'biddingDuration' => 1 * 24 * 60 * 60, // = 1 day, 0 to disable bidding
            'deposit' => 10 // Seller has to add 10=10% deposit to auction which he gets back later.
        );

        /*
            type 1 = items
            type 2 = Premium days
            type 3 = Change character gender
            type 4 = Change character name
            type 5 = Buy outfit (put outfit id as itemid), 
            (put addon id as count [0 = nothing, 1 = first addon, 2 = second addon, 3 = both addons])
            type 6 = Buy mount (put mount id as itemid)
            type 7 = buy house (hardcoded in the house system, type used for data log)
            type 8+ = custom coded stuff
        */
        $config['shop_offers'] = array(
            1 => array(
                'type' => 1,
                'itemid' => 2160, // item to get in-game
                'count' => 5, // Stack number (5x itemid)
                'description' => "Crystal coin", // Description shown on website
                'points' => 100, // How many points this offer costs
            ),
            2 => array(
                'type' => 1,
                'itemid' => 2392,
                'count' => 1,
                'description' => "Fire sword",
                'points' => 10,
            ),
            3 => array(
                'type' => 2,
                'itemid' => 12466, // Item to display on page
                'count' => 7, // Days of premium account
                'description' => "Premium membership",
                'points' => 25,
            ),
            4 => array(
                'type' => 3,
                'itemid' => 12666, // Item to display on page
                'count' => 3,
                'description' => "Change character gender",
                'points' => 10,
            ),
            5 => array(
                'type' => 3,
                'itemid' => 12666, // Item to display on page
                'count' => 0, // 0 = unlimited
                'description' => "Change character gender",
                'points' => 20,
            ),
            6 => array(
                'type' => 4,
                'itemid' => 12666, // Item to display on page
                'count' => 1,
                'description' => "Change character name",
                'points' => 20,
            ),
            7 => array(
                'type' => 5,
                'itemid' => [132, 140], // Outfit ID
                'count' => 3, // Addon 0 = none, 1 = first, 2 = second, 3 = both
                'description' => "Noble outfit with both addons",
                'points' => 20,
            ),
            8 => array(
                'type' => 6,
                'itemid' => 32, // Mount ID
                'count' => 1,
                'description' => "Gnarlhound mount",
                'points' => 20,
            ),
            9 => array(
                'type' => 6,
                'itemid' => 17,
                'count' => 1,
                'description' => "War horse",
                'points' => 20,
            ),
        );

        //////////////////////////
        /// OTServers.eu voting
        //
        // Start by creating an account at OTServers.eu and add your server.
        // You can find your secret token by logging in on OTServers.eu and go to 'MY SERVER' then 'Encourage players to vote'.
        $config['otservers_eu_voting'] = [
            'enabled' => false,
            'simpleVoteUrl' => '', //This url is used if the player isn't logged in.
            'voteUrl' => 'https://api.otservers.eu/vote_link.php',
            'voteCheckUrl' => 'https://api.otservers.eu/vote_check.php',
            'secretToken' => '', //Enter your secret token. Do not share with anyone!
            'landingPage' => '/voting.php?action=reward', //The user will be redirected to this page after voting
            'points' => '1' //Amount of points to give as reward
        ];
     

     

    config.lua

    Spoiler


        -- Global Server Config

        -- Account manager    
        accountManager = true
        namelockManager = true
        newPlayerChooseVoc = true
        newPlayerSpawnPosX = 32369
        newPlayerSpawnPosY = 32246
        newPlayerSpawnPosZ = 6
        newPlayerTownId = 1
        newPlayerLevel = 20
        newPlayerMagicLevel = 8
        generateAccountNumber = false

        -- The Forgotten Server Config

        -- Banishments
        notationsToBan = 3
        warningsToFinalBan = 4
        warningsToDeletion = 5
        banLength = 7 * 24 * 60 * 60
        finalBanLength = 30 * 24 * 60 * 60
        ipBanishmentLength = 1 * 24 * 60 * 60
        killsToBan = 5
        maxViolationCommentSize = 200

        -- Battle
        worldType = "pvp"
        protectionLevel = 1
        pvpTileIgnoreLevelAndVocationProtection = "yes"
        killsToRedSkull = 3
        pzLocked = 60 * 1000
        criticalHitChance = 7
        criticalHitMultiplier = 1
        displayCriticalHitNotify = "no"
        removeWeaponAmmunition = "yes"
        removeWeaponCharges = "no"
        removeRuneCharges = "no"
        timeToDecreaseFrags = 24 * 60 * 60 * 1000
        whiteSkullTime = 15 * 60 * 1000
        noDamageToSameLookfeet = "no"
        experienceByKillingPlayers = "no"
        showHealingDamage = "no"
        showHealingDamageForMonsters = "no"
        gainExperienceColor = 215

        -- Connection config
        ip = "127.0.0.1"
        port = 7171
        loginTries = 10
        retryTimeout = 5 * 1000
        loginTimeout = 60 * 1000
        maxPlayers = "1000"
        motd = "Welcome to the test Server!"
        displayOnOrOffAtCharlist = "no"
        onePlayerOnlinePerAccount = "yes"
        allowClones = 0
        serverName = "test"
        loginMessage = "Welcome to the test Server!"    
        statusTimeout = 5 * 60 * 1000
        replaceKickOnLogin = "yes"

        
        sqlHost = "localhost"
        sqlPort = 3306
        sqlUser = "root"
        sqlPass = ""
        sqlDatabase = "tibia4"
        sqlFile = "forgottenserver.s3db"
        passwordType = "sha1"

        -- Deathlist
        deathListEnabled = "yes"
        maxDeathRecords = 5

        -- Guilds
        inGameGuildManagement = "yes"
        levelToFormGuild = 8
        guildNameMinLength = 4
        guildNameMaxLength = 20

        -- Highscores
        highscoreDisplayPlayers = 15
        updateHighscoresAfterMinutes = 60

        -- Houses
        buyableAndSellableHouses = "yes"
        housesPerAccount = 0
        levelToBuyHouse = 1
        houseRentAsPrice = "no"
        housePriceAsRent = "no"
        housePriceEachSQM = 1000
        houseRentPeriod = "never"
        houseNeedPremiumAccount = "yes"
        bedsRequirePremium = "yes"

        -- Item usage
        timeBetweenActions = 200
        timeBetweenExActions = 1000

        -- Map
        mapName = "world"
        cleanProtectedZones = "yes"

        -- Miscellaneous
        -- NOTE: defaultPriority works only on Windows
        dataDirectory = "data/"
        kickIdlePlayerAfterMinutes = 15
        allowChangeOutfit = "yes"
        maxMessageBuffer = 4
        displayGamemastersWithOnlineCommand = "no"
        defaultPriority = "high"
        saveGlobalStorage = "yes"
        bankSystem = "yes"
        displaySkillLevelOnAdvance = "no"

        -- Premium account
        freePremium = "no"
        premiumForPromotion = "yes"
        removePremiumOnInit = "yes"

        -- Rates
        rateExp = 50000
        rateSkill = 300
        rateLoot = 2000
        rateMagic = 300
        rateSpawn = 1

        -- Global save
        -- NOTE: globalSaveHour means like 03:00, not that it will save every 3 hours,
        -- if you want such a system use autoSaveEachMinutes. This save method
        -- may be unstable, we recommend using OTAdmin if you want real saves.
        globalSaveEnabled = "no"
        globalSaveHour = 8
        shutdownAtGlobalSave = "yes"
        cleanMapAtGlobalSave = "no"

        -- Spawns
        deSpawnRange = 2
        deSpawnRadius = 50

        -- Summons
        maxPlayerSummons = 2

        -- Status
        ownerName = ""
        ownerEmail = "@otland.net"
        url = "http://otland.net/"
        location = "Europe"

     

  17.  

    12 horas atrás, aicilopmes123 disse:
    Versão do Servidor:
    Tipo de Script:
    Código:
      Mostrar conteúdo oculto
    
    
    
     

    boa tarde, nao sei se é a area correta mas preciso de um sistema de rr que diminui a exp.

    por exemplo: 0 a 10 rr, e uma exp

                         10 a 20 diminuiu a exp

     

    e assim vai, cada 10 rr vai dimunuindo..

    se alguem conseguir me ajuda agradeço 

    então mano tem um jeito muito simples de fazer isso porem eu fiquei mt tempo parado e estou meio confuso nesse script talvez seja uma versão que não estou familiarizado mas talvez vc seja capaz de fazer comigo dizendo aqui para vc

    primeiro teríamos q definir uma storage para cada nível 
    essa stages ai ate q serve mas tou meio perdido em como extrair a storage do stage -- nessa parte n posso ajudar 
    o restante eu posso ajudar
    vai em data/creature script/script e procura o arquivo login.lua
    em function onLogin
    abaixo ai adiciona essa linha
    registerCreatureEvent(cid, "exprr") 
    recomendo colocar proximo de outros creatureEvent ja adicionado para ficar mais organizado

     

    crie um arquivo com nome de exprr.lua na mesma pasta do login.lua e cole isso dentro
     

    Spoiler

    function onLogin(cid)
            if getPlayerStorageValue(cid,000000000000) ==1 then --- aqui no 0 vc teria que colocar a storage certa/// onde esta o ==1 e a quantidade de reset
              doPlayerSetExperienceRate(cid,0.5) --- aqui o player vai ganhar 50% da xp se colocar 0.9 ele vai ganhar 90% e assim por diante

    ------ aqui vc pode ir criando outras linhas com numeros de resets diferentes vc pode copiar e colar essas 2 linhas acima  e ir mudando  a quantidade de reset ali onde esta o 1 e a % de xp -----------onde esta o 0.5 so n vou poder te ajudar com estrair a storage do reset nessas linhas resets=stage.stage21.resets  mesmo sabendo que ja se encontra em 21 no caso
                 end
    return true
       end

     

  18. Em 17/04/2020 em 21:46, beybladetc disse:

    eu estou que nem você...o meu não funciona de jeito nenhum

    então mano eu resolvi
    a versão do xampp que eu estava usando era incompatível com esse servidor 

  • Quem Está Navegando   0 membros estão online

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