Ir para conteúdo
  • Cadastre-se

MyAAC [MyAAC] Sistema de Exibir Monstros por Level


Posts Recomendados

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: [email protected]

Link para o post
Compartilhar em outros sites
  • 1 year later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por elitehox
      boa tarde a todos,
      Estou tentando instalar o plugin gesior shop for Myaac. quando tento acessar gifts.php retorno erro 500 http.
      Alguém pode me ajudar? este é o log de erros do Apache ...
       
       
      [php7:error] [pid 24148] [client 177.130.9.96:56512] PHP Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ordering' in 'order clause' in /var/www/html/system/libs/pot/OTS_Base_DB.php:86\nStack trace:\n#0 /var/www/html/system/libs/pot/OTS_Base_DB.php(86): PDO->query()\n#1 /var/www/html/system/libs/pot/OTS_DB_PDOQuery.php(13): OTS_Base_DB->doQuery()\n#2 /var/www/html/plugins/gesior-shop-system/libs/shop-system.php(137): OTS_Base_DB->query()\n#3 /var/www/html/system/pages/gifts.php(199): GesiorShop::getOffers()\n#4 /var/www/html/index.php(362): require('/var/www/html/s...')\n#5 {main}\n thrown in /var/www/html/system/libs/pot/OTS_Base_DB.php on line 86  
       
       

    • Por Underewar
      Credits
      @slaw
      I just edited the tibiacom template.
      Full customizable.
      I have an organized repo for this 'My-AAC last version', I will release I just need to fix something's

      Just check the template live version.

      How Install
      Rename your tibiacom folder and paste the downloaded one.

      Picture News - Boosted Boss works well in this picture the boosted boss of the day was not in image folder.


      DOWNLOAD:
      thetibiaking/ttk-my-aac at layout-changes (github.com)
    • Por Andersontatuador
      .Qual servidor ou website você utiliza como base? 
      Global Full 8.60 + Zao
      Qual o motivo deste tópico? 
      O site não esta adicionando os pontos na conta dos plays.
       
      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. 
       



    • Por A.Mokk
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Estou tendo um probleminha indelicado no meu site, gostaria de obter respostas aqui com voces que sao sempre muito eficientes e praticos.
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary
      Qual o motivo deste tópico? 
      Não consigo deixar ele automatico os players tem que confirmar o pagamento depois eu tenho que verificar se caiu pra depois eu confirmar e colocar as coins
      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. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo