Ir para conteúdo
  • Cadastre-se

(Resolvido)Rank por valor de Storage


Ir para solução Resolvido por Gabriel Strakh,

Posts Recomendados

Galera, eu preciso de uma ajuda. Tenho um template de ranking no meu site, ele está configurado como padrão por level.

Porém, eu gostaria de mostrar esse ranking por números de reset. O sistema de reset que uso é por storage, em que linha deveria alterar para mostrar os valores organizados de uma storage?

A storage é: 378378

topplayers.php

Citar

<div class="mod-tab">
    <div class="module">
        <div class="module-2">
            <div class="module-3">
                <div class="module-4">
                    <div class="module-5 deepest">
                        <div class="header-container-1">
                            <div class="header-container-2">
                                <div class="header-l"></div>
                                <div class="header-r"></div>
                                <h3 class="module"><span class="color">Top 5</span> Jogadores</h3>
                            </div>
                        </div>
                        <div style="overflow: hidden;">
                            <div>
                                <div>
                                    <?php
                                    $limitt = 5;
                                    $skills = mysql_select_multi("SELECT `name`,`level`,`experience` FROM `players` WHERE `group_id` < '2' AND `name` != 'Account Manager' ORDER BY `level` DESC, `experience` DESC LIMIT $limitt");
                                    $number_of_rows = 0;
                                    foreach($skills as $skillss) {
                                        $number_of_rows++;
                                        echo '+ <b></b><a href="characterprofile.php?name='.urlencode($skillss['name']).'" class="menu">'.$skillss['name'].'</a><br>';
                                        echo '<em class="style2">Level: <b>'.urlencode($skillss['level']).'</b></em></li><br />';
                                    }
                                    ?>
                                </div>
                            </div>
                        </div>    
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

 

Link para o post
Compartilhar em outros sites
23 minutos atrás, davidvietro disse:

Galera, eu preciso de uma ajuda. Tenho um template de ranking no meu site, ele está configurado como padrão por level.

Porém, eu gostaria de mostrar esse ranking por números de reset. O sistema de reset que uso é por storage, em que linha deveria alterar para mostrar os valores organizados de uma storage?

A storage é: 378378

topplayers.php

 

 

Poderia me mostrar uma print de como é exibido o ranking atual?

Editado por strakh (veja o histórico de edições)

mOw9OYy.png

[Designer] / [Developer] 

 

Link para o post
Compartilhar em outros sites

Bom... Como eu não utilizo o Zenote não tenho como testar, então vamos ver se rodamos o novo script sem problemas :pirate:

 

Atualize a parte PHP (Começa em <?php e termina em ?>) para essa aqui:

 

<?php
	$limitt = 5;
	$_storage = 378378;
	$skills = mysql_select_multi("SELECT a.name, a.level, a.experience, b.resets FROM (SELECT * FROM players WHERE group_id < 2 AND name != 'Account Manager') a left join (SELECT b.player_id, b.value as resets FROM player_storage b WHERE b.key = '$_storage') b on (a.id = b.player_id) ORDER BY a.level DESC, a.experience DESC, b.resets DESC LIMIT $limitt");
	$number_of_rows = 0;
	foreach($skills as $skillss) {
		$number_of_rows++;
		echo '+ <b></b><a href="characterprofile.php?name='.urlencode($skillss['name']).'" class="menu">'.$skillss['name'].'</a><br>';
		echo '<em class="style2">Level: <b>'.urlencode($skillss['level']).'</b> <small>Resets: <b>'. (($skillss['resets'])? $skillss['resets'] : 0) .'</b></small</em></li><br />';
	}
?>

 

Editado por strakh
Concertar o código (veja o histórico de edições)

mOw9OYy.png

[Designer] / [Developer] 

 

Link para o post
Compartilhar em outros sites

Cara, não funcionou muito bem.

 

Apareceu os resets, mas ainda não estar organizando pelo reset mas sim pelo level. E também bugou a fonte. A primeira palavra do player o tamanho da fonte ficou normal, o restante foi diminuindo gradualmente. Vou tentar arrumar aqui, mas já fico muito agradecido pela ajuda. Se tiver alguma ideia de como solucionar, agradeço mais ainda :D

 

Untitled.jpg

 

Edição:

 

Cara, descobri que o problema do tamanho das fontes era por um comando <small> que não estava fechado, já arrumei.


O problema agora é a ordem, gostaria que fosse organizado por resets e não por level :D

Editado por davidvietro
Acrescentar informações. (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@davidvietro Olá, desculpe a demora, eu não estava em casa :wacko:.

Teste esse novo script, ajustei a parte da ordenação  e da tag small (se puder posta uma print): 

 

<?php
	$limitt = 5;
	$_storage = 378378;
	$skills = mysql_select_multi("SELECT a.name, a.level, a.experience, b.resets FROM (SELECT * FROM players WHERE group_id < 2 AND name != 'Account Manager') a left join (SELECT b.player_id, b.value as resets FROM player_storage b WHERE b.key = '$_storage') b on (a.id = b.player_id) ORDER BY b.resets DESC, a.level DESC, a.experience DESC LIMIT $limitt");
	$number_of_rows = 0;
	foreach($skills as $skillss) {
		$number_of_rows++;
		echo '+ <b></b><a href="characterprofile.php?name='.urlencode($skillss['name']).'" class="menu">'.$skillss['name'].'</a><br>';
		echo '<em class="style2">Level: <b>'.urlencode($skillss['level']).'</b> <small>Resets: <b>'. (($skillss['resets'])? $skillss['resets'] : 0) .'</b></small></em></li><br />';
	}
?>

 

Editado por strakh (veja o histórico de edições)

mOw9OYy.png

[Designer] / [Developer] 

 

Link para o post
Compartilhar em outros sites
3 minutos atrás, strakh disse:

@davidvietro Olá, desculpe a demora, eu não estava em casa :wacko:.

Teste esse novo script, ajustei a parte da ordenação  e da tag small (se puder posta uma print): 

 


<?php
	$limitt = 5;
	$_storage = 378378;
	$skills = mysql_select_multi("SELECT a.name, a.level, a.experience, b.resets FROM (SELECT * FROM players WHERE group_id < 2 AND name != 'Account Manager') a left join (SELECT b.player_id, b.value as resets FROM player_storage b WHERE b.key = '$_storage') b on (a.id = b.player_id) ORDER BY b.resets DESC, a.level DESC, a.experience DESC LIMIT $limitt");
	$number_of_rows = 0;
	foreach($skills as $skillss) {
		$number_of_rows++;
		echo '+ <b></b><a href="characterprofile.php?name='.urlencode($skillss['name']).'" class="menu">'.$skillss['name'].'</a><br>';
		echo '<em class="style2">Level: <b>'.urlencode($skillss['level']).'</b> <small>Resets: <b>'. (($skillss['resets'])? $skillss['resets'] : 0) .'</b></small></em></li><br />';
	}
?>

 

 

 

 

Cara, funcionou perfeitamente! Você é demais! muito obrigado!!!

Segue o print:
Untitled.jpg
 

Link para o post
Compartilhar em outros sites
3 horas atrás, strakh disse:

@davidvietro Opa, que bom :grin: 

Qualquer coisa estamos aqui...

 

Cara, estou com um problema aqui, mas não envolve seu script (ele está perfeito)

 

É o seguinte, o meu banco de dados organiza os resets por ordem de 9>8>7>6... porém, a partir do número 10 ou 11, na linha de organização, ele fica abaixo do 1. Consegue entender? vou te mandar uma foto: 

 

http://s11.postimg.org/teqhzy64z/aaa.jpg

 

Teria como mudar isso? pq nos ranks do reset vai aparecer só os players com até 9 resets, após isso, será desconsiderado porque o database entende ser um número menor.

Link para o post
Compartilhar em outros sites
1 hora atrás, davidvietro disse:

 

Cara, estou com um problema aqui, mas não envolve seu script (ele está perfeito)

 

É o seguinte, o meu banco de dados organiza os resets por ordem de 9>8>7>6... porém, a partir do número 10 ou 11, na linha de organização, ele fica abaixo do 1. Consegue entender? vou te mandar uma foto: 

 

http://s11.postimg.org/teqhzy64z/aaa.jpg

 

Teria como mudar isso? pq nos ranks do reset vai aparecer só os players com até 9 resets, após isso, será desconsiderado porque o database entende ser um número menor.

 

Pelo o que eu entendi isso ai é padrão do banco, como ele compara por string, ele vai ler primeiro os que começam com 1 e depois 2 e assim por diante.

 

Exemplo: 1, 11, 12 , 100, 101... 2, 20, 21, 22, 200... 3, 30, 31, 32, 300...

 

Isso é apenas na parte de exibição do banco, internamente ele se organiza de forma correta.

mOw9OYy.png

[Designer] / [Developer] 

 

Link para o post
Compartilhar em outros sites
9 horas atrás, strakh disse:

 

Pelo o que eu entendi isso ai é padrão do banco, como ele compara por string, ele vai ler primeiro os que começam com 1 e depois 2 e assim por diante.

 

Exemplo: 1, 11, 12 , 100, 101... 2, 20, 21, 22, 200... 3, 30, 31, 32, 300...

 

Isso é apenas na parte de exibição do banco, internamente ele se organiza de forma correta.

Entendi. Então infelizmente meu rank por reset não dará certo, né? :'( 

Eu vou usar o seu primeiro script de exibição por level e reset então. :D

Link para o post
Compartilhar em outros sites
  • 3 years 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 Nazo
      Buenas, TK!
      Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
       
      Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
      CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Ou caso seja SQLITE, utilize esse código:
      CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
      -- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end  
      Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
       
      Exemplo de quest abaixo:
      -- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end  
      Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
       
      if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
    • Por Digoshow
      Gente e o seguinte, eu fiz uma quest com o RME, e no final da quest quero que um player de use no Bau e Catar um item, o item seria Document = ID: 952, e apos ele dar use nesse document, e liberado e certo lugar para ele passar.
      Ele faz a quest, e quando ele pega o Document e ele der use, ira sair uma mensagem assim, Parabens, Voce conseguiu Acesso Full.
      E ai ia liberar tiles para ele passa para um Hunt sempre que ele quiser, entendero?
      Tipo uma quest da vip 2, Os player que termina a quest, e liberado acesso a vip 2 !
      Alguem pode me ajudar, sim eu procurei nao como eu nao so la aquelas coisas nao consegui, eu ate tentei mais deu o erro a seguir, e ainda o script nem dava item, mais tentei mesmo assim, olhem o erro que da.
       


        Ai gente alguem pode me ajudar com esse script? Que ao da use la no bau pega o item e quando usar, voce ganha acesso a lugares novos, tipo voce usa o item, e voce podera passar nos tiles. Obrigado, REP+ .
    • Por O.J
      Olá amigos estou aqui mais uma vez para pedir uma coisa, um NPC que peça items para o player e se o player trazer os itens ele ganha um prêmio, só que depois que ele pegasse o prêmio ele não pudesse fazer a quest novamente colocassem tipo uma storage que checa se ele ja fez a quest entendem? Por favor se puderem ajudar agradeço muito meu Ot é 8.60 obrigado comunidade .
    • Por 919894
      Olá TKbianos, baum?
       
       Seguinte, gostaria de uma action para uma alavanca que:
       
       --> O player só possa usar 1x na sua vida, ou seja, com storage.
       --> A alavanca só pode ser usada 1x por dia, ou seja, sever save.
       --> Teleporte para o local x697 y486 z7, se possível com um qualquer efeito e a mensagem de "Look for Loki and kill him!".
       
       Procurei no fórum, porém, sem sucesso.
       
       Desde já agradeço!
    • Por allanzinh
      fala galera estou presisando de um tile(piso) que remova a storage do player quando ele passe por ele  
       
      Storage que ira remover do player : 6598799
       
      Agradeço des de ja e do REEP + para quem me ajudar 
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo