Jump to content

MyAAC [MyAAC] Sistema de Exibir Monstros por Level


Recommended Posts

Olá senhores, hoje vim disponibilizar um Sistema desenvolvido por mim para o MyAAC onde a função dele é exibir os monstros do seu jogo baseado em seu Level necessário para acessar ou level indicado.

 

Exemplo de como vai ficar:

 

Spoiler

asdzdasda.thumb.png.41c87b37f21757f10d9d5ab92e71cc5a.png


Instalação:
 

Spoiler

Acesse system/libs/pot/OTS_Monster.php e adicione o seguinte trecho de código:
 


/**
 * Returns monster Level.
 * 
 * @return int Level.
 * @throws DOMException On DOM operation error.
 */
    public function getLookLevel()
    {
        return (string) $this->documentElement->getElementsByTagName('look')->item(0)->getAttribute('level');
    }

/**
 * Returns monster Looktype.
 * 
 * @return int Looktype.
 * @throws DOMException On DOM operation error.
 */
    public function getLookType()
    {
        return (int) $this->documentElement->getElementsByTagName('look')->item(0)->getAttribute('type');
    }


Agora em system/libs/creatures.php você vai adicionar abaixo de: $health = $monster->getHealth(); o seguinte código:
 


//load monster looktype
$looktype = $monster->getLookType();
//load monster looktype
$looklevel = $monster->getLookLevel();


Depois de ctrL+f em: $db->insert(TABLE_PREFIX . 'monsters', array( e coloque no fim desse insert o seguinte código:
 


'looktype' => $looktype,
'looklevel' => $looklevel


Ficando assim:
 


$db->insert(TABLE_PREFIX . 'monsters', array(
                        'name' => $name,
                        'mana' => empty($mana) ? 0 : $mana,
                        'exp' => $monster->getExperience(),
                        'health' => $health,
                        'speed_lvl' => $speed_lvl,
                        'use_haste' => $use_haste,
                        'voices' => json_encode($monster->getVoices()),
                        'immunities' => json_encode($monster->getImmunities()),
                        'summonable' => $flags['summonable'] > 0 ? 1 : 0,
                        'convinceable' => $flags['convinceable'] > 0 ? 1 : 0,
                        'race' => $race,
                        'loot' => json_encode($loot),
                        'looktype' => $looktype,
                        'looklevel' => $looklevel
                    ));


Agora em seu banco de dados você vai rodar estes 2 comando no MySQL (Ele serve para adicionar as novas colunas na tabela myaac_monsters):
 


ALTER TABLE `myaac_monsters` ADD COLUMN `looktype` INT(11);
ALTER TABLE `myaac_monsters` ADD COLUMN `looklevel` VARCHAR(30);


Feito isso, agora vamos colocar o level do monstro na tag look dele no arquivo xml, acesse a pasta do seu servidor, e vá nos arquivo de monstros, dentro da tag <look> você adiciona o atributo level="1".
Exemplo:
Antes de adicionar o atributo:
 


<?xml version="1.0" encoding="UTF-8"?>
<monster name="Akahoshi Member" nameDescription="a Akahoshi Member" race="blood" experience="40000" speed="250" manacost="0">
    <health now="15000" max="15000"/>
    <look type="938" head="1" body="1" legs="1" feet="1" addons="0" corpse="3061"/>


Depois de adicionar o atributo:
 


<?xml version="1.0" encoding="UTF-8"?>
<monster name="Akahoshi Member" nameDescription="a Akahoshi Member" race="blood" experience="40000" speed="250" manacost="0">
    <health now="15000" max="15000"/>
    <look type="938" head="1" body="1" legs="1" feet="1" addons="0" corpse="3061" level="350"/>


Pronto, agora acesse sua conta de administrador no site, vai na aba creatures e da Reload Monsters.
Se você acessar o banco de dados, e ir na tabela myaac_monsters é esperado que você veja as colunas looktype e looklevel agora preenchidas.
Sistema está instalado e já está armazenando o level do monstro em seu banco de dados!!


A parte a seguir é 1 tutorial extra para quem quiser 1 base de como exibir os monstros baseado no level.
 

Spoiler

Para você exibir na aba de creatures dividido por level, você pode separar os selects com a condição LIKE. Vamos lá:


$monstros = $db->query('SELECT * FROM `' . TABLE_PREFIX . 'monsters` WHERE `looklevel` LIKE "1" and `hidden` != 1'.$whereandorder);

Nesse trecho de código o que fizemos foi selecionar todos os monstros na tabela myaac_monsters onde o valor da coluna looklevel tem que ser igual a 1.

Abaixo vou deixar 1 trecho de código para formar 1 tabela apenas com monstros de level 1. Você pode replicar ela e fazer para vários levels distintos:
No arquivo creatures.php no diretório system/pages/creatures.php e adicione esse código:
 


####################### Monstro Normal 1 ##############################

    $allowed_order_by = array('name', 'exp', 'health', 'summonable', 'race');
    $order = isset($_REQUEST['order']) ? $_REQUEST['order'] : 'name';
    //generate sql query
    $desc = '';
    if(isset($_REQUEST['desc']) && $_REQUEST['desc'] == 1) {
        $desc = " DESC";
    }
    if($order == 'name') {
        $whereandorder = ' ORDER BY name'.$desc;
    }
    elseif($order == 'exp') {
        $whereandorder = ' ORDER BY exp'.$desc.', name';
    }
    elseif($order == 'health') {
        $whereandorder = ' ORDER BY health'.$desc.', name';
    }
    else {
        $whereandorder = ' ORDER BY name';
    }
    //send query to database
    $monstros = $db->query('SELECT * FROM `' . TABLE_PREFIX . 'monsters` WHERE `looklevel` LIKE "1" and `hidden` != 1'.$whereandorder);
    echo '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100% BGCOLOR="#8B4513" style="font-weight: bold;">
                    <tr background="/templates/loleslav/imagens/bg1_06.jpg">
                        <td colspan="5" style="color: white;">
                            <center>Monstros de level 1</center>
                        </td>
                    </tr>
                    <TR BGCOLOR="#8B4513"  background="/templates/loleslav/imagens/bg1_06.jpg">
                        <td style="font-weight: bold; color: white;" width="128px">
                            <center>Imagem</center>
                        </td>';
    if($order == 'name' && !isset($_REQUEST['desc'])) {
    echo '<TD class="white" width="91px"><B><a href="?subtopic=creatures&order=name&desc=1"><font class="white"><center>Name DESC</center></a></B></TD>';
    } else {
    echo '<TD class="white"><B><a href="?subtopic=creatures&order=name"><font class="white"><center>Name</center></a></B></TD>';
    }
    if($order == 'health' && !isset($_REQUEST['desc'])) {
    echo '<TD class="white" width="66px"><B><a href="?subtopic=creatures&order=health&desc=1"><font class="white"><center>Health</center><br/>DESC</a></B></TD>';
    } else {
    echo '<TD class="white"><B><a href="?subtopic=creatures&order=health"><font class="white"><center>Health</center></a></B></TD>';
    }
    if($order == 'exp' && !isset($_REQUEST['desc'])) {
    echo '<TD class="white"><B><a href="?subtopic=creatures&order=exp&desc=1"><font class="white"><center>Experience<br/>DESC</a></B></center></TD>';
    } else {
        echo '<TD class="white"><B><a href="?subtopic=creatures&order=exp"><font class="white"><center>Experience</center></a></B></TD>';
    }
    echo '<td style="font-weight: bold; color: white;" width="150"><center>Loot</center></td>';
    $number_of_rows = 0;
    foreach($monstros as $monstro) {
        echo '<b><TR BGCOLOR="#F4A460">
                    <td><center><img src="'. $config['outfit_images_url'] .'?id='.$monstro['looktype'].'.gif"></center></td>
                    <TD><center>'.($monstro['name']).'</center></TD>
                    <TD><center>'.$monstro['health'].'</center></TD>
                    <TD><center>'.$monstro['exp'].'</center></TD>
                    <td><center>';
        $loot = json_decode($monstro['loot'], true);
        if($loot)
        {

            $i = 0;
            foreach($loot as $item) {
                $name = getItemNameById($item['id']);
                $tooltip = $name . '<br/>Chance: ' . round($item['chance'] / 1000, 2) . '%<br/>Max count: ' . $item['count'];

                echo '<img src="' . $config['item_images_url'] . $item['id'] . '.png" class="tooltip" title="' . $tooltip . '" width="32" height="32" border="0" alt=" ' .$name . '" />';
                $i++;
            }
            echo'</center></td>';
        }
    }

    echo '</tr></b></table><br/>';


Pronto ele vai listar todos monstros que tiver o level 1 registrado em sua coluna, lembrando que você pode simplesmente duplicar o trecho de código anterior e alterar o valor exigido do level, exemplo alterar de 1 para 30, logo vai exibir todos monstros de level 30.


PS:
-> O sistema foi testado e não apresentou problemas, porém se vierem a encontrar falhas, favor reportar para que eu possa manter o tópico atualizado/corrigido.
-> Eu faço correções no sistema caso esteja errado, mas não faço adaptações pro seu servidor. Caso queira variações do sistema, favor enviar seu pedido no discord da Academia de Programação, ou em meu discord privado: Endless#5410

Quem eu sou?
Meu nome é Waliston, mais conhecido como Endless, estudante de Análise e Desenvolvimento de Sistemas, e desenvolvedor da Falcon Games. Atuo no Ramo de OtServer desde 2017, porém desde 2019 venho me especializando em Desenvolvimento Web e Segurança Web..

Meus Projetos:

Falcon Games

Meu Github:

https://github.com/WalistonBelles

Meu Discord:
Endless#5410

Minhas Contribuições atualmente pra Comunidade:

[SHOWOFF] OTClient Showoff Módules
[DESIGN]
 3 FREE Game Ui Design

[TUTORIAL] Instalando MyAAC em sua máquina

[TUTORIAL] Restringindo a Listagem de Diretórios(URL) do Servidor Apache
[TUTORIAL] Proteção contra DDoS utilizando Mod-evasive no Apache

[SISTEMA] Plugin MyAAC Listagem de Items automática
[SISTEMA] Gerador de Outfits Automática para o Site

[SISTEMA] Sistema de Troca de Vocação para MyAAC
[SISTEMA] Plugin MyAAC Auction System
[SISTEMA] Sistema de Exibir Monstros por Level


Algum trabalho meu te ajudou? Quer apoiar meu trabalho? Faça uma doação!!
Picpay: @walistonbelles
Paypal: suporte.falcongames@gmail.com

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Kamity
      Ola tudo bem ? Meu nome e Guilherme sou formado em Engenharia de Software e trabalho com desenvolvimento web usando principalmente React e NodeJS, a um bom tempo atras antes da faculdade gostava de criar servidores e mexer com o próprio gesior em si, para tentar criar componentes personalizados para o próprio gesior, como muitos que mexem com o gesior sabem como e difícil implementar melhorias, pois o gesior em si e totalmente travado em questão de layout e responsividade. Por isso decidi recriar todo o layout do site do tibia tentando chegar o mais próximo possível do que a CipSoft tem em seu site, só que com a disposição de muito mais configurações de menus, componentes personalizados, uma estruturação de pastas muito melhor e fácil de se encontrar e muito mais, fora a questão de estar utilizando uma linguagem nova sendo ela React para o (FrontEnd) e NodeJS para o (BackEnd) os dois usando TypeScript para a tipagem das funções. Permitindo milhões de possibilidades a serem implantadas no site. 
       
      Por enquanto estou nessa empreitada do site sozinho, tenho um amigo que esta na equipe comigo, só que esta mexendo em uma source de ATS, que não esta ligada a minha por enquanto.  Por enquanto temos uma organização no github chamada Varspen onde iremos postar qual quer tipo de conteúdo gratuito para uso de vocês.
       
      Tenho certeza que muitos vão perguntar sobre a questão de ser gratuito a uso. Por enquanto estou criando ele em um repositório privado, só que sim pretendo em um futuro pretendo lançar ele gratuitamente para o uso da comunidade do OTS.
       
      Todo tipo de atualização que achar relevante irei colocar dentro dos spoilers.
       
      Varspen Preview
       
       
      Caso queiram conversar sobre o projeto, e como ira funcionar, sintam-se a vontades para entrar no servidor do discord, para tirarem maiores duvidas.
       
      Discord Varspen
      Github Varspen
      Meus Contatos
          Discord: Guilherme#3515
          Github: Guilherme Fontes 
       
    • By Henrique Gaudard
      Qual servidor ou Nto World você utiliza como base? Alô @ITALOx
       
      Qual o motivo deste tópico? 
      Gostaria de pedir ajuda com esse erro, ao tentar usar este site. O xampp usado é o mesmo xampp recomendado pelo @ITALOx no post dele, o 1.8.2-2, e verifiquei que ninguém (pelo menos lá nos comentários), não o notificou desse erro.
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      Smarty.class.php:
       
      Alguém por favor, me ajuda? Eu realmente gostei desse site!
       
    • By Brunozin3105
      .Qual servidor ou website você utiliza como base? 
      nao sei qual usar e aonde encontrar
      Qual o motivo deste tópico? 
      nao consigo criar o website do server
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By xBlackWolf
      .Qual servidor ou website você utiliza como base? 
      Gesior OTSERVBR p/ 12.64
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      composer.json
       { "name": "gesiorpremium", "description": "gesior premium with composer", "authors": [ { "name": "ricardosouza", "email": "ricardo@codenome.com", "homepage": "http://codenome.com", "role": "developer" } ], "license": "GPL-3.0+", "require": { "robthree/twofactorauth": "^1.6", "paypal/rest-api-sdk-php": "*", "thepixeldeveloper/sitemap": "^5.1", "mercadopago/sdk": "0.5.2", "blockchain/blockchain": "^1.4", "mercadopago/dx-php": "dev-master", "pagseguro/pagseguro-php-sdk": "^4.2" } }  
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

    • By lukasinfer1998
      .Qual servidor ou website você utiliza como base? 12.60
       
      Qual o motivo deste tópico? não estou conseguindo arrumar esse erro alguem poderia ajuda ? e um caso urgente
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo