mukinhas 0 Posted July 11, 2014 Como posso mudar de modo que apareça também as classes dos respectivos jogadores? <?PHP $connecta = mysql_connect('127.0.0.1','ragnarok','ragnarok');$db = mysql_select_db('ragnarok');?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="estilo.css" /><title>Ranking PvP Mooka</title></head> <body><div id="ranking"><table border="0" cellpadding="0" cellspacing="0"> <tr align="center" id="title"> <td>Posição</td> <td>Nome</td> <td>Matou</td> </tr> <?PHP $tabela = mysql_query("SELECT * FROM pvpm_data ORDER BY kills DESC LIMIT 50"); $pos = 1; while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.$pvp['kills'].'</td> </tr> '; $pos++; } ?></table></div> </body></html> Por exemplo, Posição, Nome, Classe, Matou. Grato. Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 11, 2014 Eu poderia ver a estrutura da tabela? A tabela é na mesma base de dados como o resto de dados no jogo? 1 mukinhas reacted to this Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 11, 2014 (edited) Eu poderia ver a estrutura da tabela? A tabela é na mesma base de dados como o resto de dados no jogo? Exatamente. __ @EDIT Com "ver a estrutura da tebela", você gostaria de ver isso? -- v1.0.0+DROP TABLE IF EXISTS `pvpm_data`;CREATE TABLE `pvpm_data` (`id` int(11) unsigned NOT NULL default '0',`name` varchar(255) NOT NULL default '',`kills` int(11) unsigned NOT NULL default '0',`dies` int(11) unsigned NOT NULL default '0',`leader` int(11) unsigned NOT NULL default '0',`annc` int(11) unsigned NOT NULL default '0',`ban` int(11) unsigned NOT NULL default '0',`type` int(11) unsigned NOT NULL default '0',KEY `id` (`id`),KEY `kills` (`kills`),KEY `dies` (`dies`)) ENGINE=MyISAM; -- v1.1.1+alter table pvpm_data add ratio int(11) not null default '0' after dies; -- v1.1.7+DROP TABLE IF EXISTS `pvpm_map`;CREATE TABLE `pvpm_map` (`id` int(11) unsigned NOT NULL default '0',`map` varchar(255) NOT NULL default 'NULL',`type` int(11) unsigned NOT NULL default '0',KEY `id` (`id`)) ENGINE=MyISAM;insert into pvpm_map (id,map,type) values (0,'guild_vs3',0);insert into pvpm_map (id,map,type) values (1,'pvp_n_1-5',0);insert into pvpm_map (id,map,type) values (2,'guild_vs1',2);insert into pvpm_map (id,map,type) values (3,'prt_are01',2);insert into pvpm_map (id,map,type) values (4,'guild_vs2',1); -- v1.2.3+alter table pvpm_map add noguild int(11) not null default '0';update pvpm_map set noguild=1 where map='guild_vs1'; -- v1.3.0+ DROP TABLE IF EXISTS `pvpm_lang`;CREATE TABLE IF NOT EXISTS `pvpm_lang` ( `id` int(11) unsigned NOT NULL, `lang` int(11) unsigned NOT NULL default '0', `str` varchar(255) NOT NULL default '', KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1; No caso é sem esses <div> </div>, não faço ideia porque entrou no code Edited July 11, 2014 by mukinhas Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 11, 2014 Sim. Também gostaria de saber se a coluna id da tabela é para char id ou account id. Então use a seguinte consulta SQL em vez da atual: SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` WHERE p.`type` = 0 ORDER BY p.`kills` DESC LIMIT 50 e pode mudar tudo o codigo para o seguinte (adicione as classes restantes): <?PHP $connecta = mysql_connect('127.0.0.1','ragnarok','ragnarok');$db = mysql_select_db('ragnarok');?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="estilo.css" /><title>Ranking PvP Mooka</title></head> <body><div id="ranking"><table border="0" cellpadding="0" cellspacing="0"> <tr align="center" id="title"> <td>Posição</td> <td>Nome</td> <td>Classe</td> <td>Matou</td> </tr> <?PHP $tabela = mysql_query("SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` WHERE p.`type` = 0 ORDER BY p.`kills` DESC LIMIT 50"); $pos = 1; while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.nome_do_classe($pvp['class']).'</td> <td>'.$pvp['kills'].'</td> </tr> '; $pos++; } ?></table></div> </body></html><?phpfunction nome_do_classe($classe) { switch($classe) { case 0: return "Novice"; case 1: return "Swordman"; case 2: return "Mage"; case 3: return "Archer"; case 4: return "Acolyte"; case 5: return "Merchant"; case 6: return "Thief"; // (Adicione as classes restantes) default: return "Erro"; }}?> Pode utilizar este arquivo se quiser: http://sourceforge.net/p/cerescp/svn/HEAD/tree/trunk/db/jobs.txt Em outro caso, me dizer e tentarei de adapta-lo. P.E.: Eu não sou Português ou Brasileiro, sou Espanhol, me desculpe meus erros. 1 mukinhas reacted to this Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 (edited) Sim. Também gostaria de saber se a coluna id da tabela é para char id ou account id. Então use a seguinte consulta SQL em vez da atual: SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` ORDER BY p.`kills` DESC LIMIT 50 e pode mudar tudo o codigo para o seguinte (adicione as classes restantes): <?PHP $connecta = mysql_connect('127.0.0.1','ragnarok','ragnarok');$db = mysql_select_db('ragnarok');?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="estilo.css" /><title>Ranking PvP Mooka</title></head> <body><div id="ranking"><table border="0" cellpadding="0" cellspacing="0"> <tr align="center" id="title"> <td>Posição</td> <td>Nome</td> <td>Classe</td> <td>Matou</td> </tr> <?PHP $tabela = mysql_query("SELECT * FROM pvpm_data ORDER BY kills DESC LIMIT 50"); $pos = 1; while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.nome_do_classe($pvp['classe']).'</td> <td>'.$pvp['kills'].'</td> </tr> '; $pos++; } ?></table></div> </body></html><?phpfunction nome_do_classe($classe) { switch($classe) { case 0: return "Novice"; case 1: return "Swordman"; case 2: return "Mage"; case 3: return "Archer"; case 4: return "Acolyte"; case 5: return "Merchant"; case 6: return "Thief"; // (Adicione as classes restantes) default: return "Erro"; }}?> Pode utilizar este arquivo se quiser: http://sourceforge.net/p/cerescp/svn/HEAD/tree/trunk/db/jobs.txt Em outro caso, me dizer e tentarei de adapta-lo. P.E.: Eu não sou Português ou Brasileiro, sou Espanhol, me desculpe meus erros. Rapaz, você escreve melhor que MUITOS br's, parabéns. Se não falasse que era espanhol eu continuaria achando que é brasileiro =] Mas voltando ao assunto, deu erro da linha 34. <td>'.nome_do_classe($pvp['classe']).'</td> Eu tentei por uma $ antes de nome <td>'.$nome_do_classe($pvp['classe']).'</td> Mas deu certo não, sabe o que pode ser? Agradeço seu esforço para tentar me ajudar. Edited July 12, 2014 by mukinhas Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 Oh, mea culpa. O resultado é na membro 'class' do array $pvp, não na 'classe'. Eu editei o meu post anterior. Se o erro não é resolvido, favor poste a mensagem do erro aqui. P.E.: Eu testei este código e parece funcional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Ranking PvP Mooka</title></head> <body><?php for ($i = 0; $i <= 6; $i++) echo nome_do_classe($i) . '<br>';?></body></html><?phpfunction nome_do_classe($classe) { switch($classe) { case 0: return "Novice"; case 1: return "Swordman"; case 2: return "Mage"; case 3: return "Archer"; case 4: return "Acolyte"; case 5: return "Merchant"; case 6: return "Thief"; // (Adicione as classes restantes) default: return "Erro"; }}?> 1 mukinhas reacted to this Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 Oh, mea culpa. O resultado é na membro 'class' do array $pvp, não na 'classe'. Eu editei o meu post anterior. Se o erro não é resolvido, favor poste a mensagem do erro aqui. P.E.: Eu testei este código e parece funcional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Ranking PvP Mooka</title></head> <body><?php for ($i = 0; $i <= 6; $i++) echo nome_do_classe($i) . '<br>';?></body></html><?phpfunction nome_do_classe($classe) { switch($classe) { case 0: return "Novice"; case 1: return "Swordman"; case 2: return "Mage"; case 3: return "Archer"; case 4: return "Acolyte"; case 5: return "Merchant"; case 6: return "Thief"; // (Adicione as classes restantes) default: return "Erro"; }}?> Cara, valeu!!! Você não sabe como que estou feliz por você me ajudar. Está funcionando do jeito que eu queria. Mas aproveitando o post e abusando um pouco de sua boa vontade haha. Na imagem a seguir, observe que na 3ª posição "Os sem nomes" e na 5ª "Nao quero cla" são gulds. Eu tentei algumas coisas aqui mas não consegui deixar somente players no ranking. while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> // <<-- aqui eu apaguei o player coloquei outras coisas e funciona da mesma forma <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.nome_do_classe($pvp['class']).'</td> <td>'.$pvp['kills'].'</td> </tr> Tem alguma ideia de como me ajudar? Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 A minha pergunta é: como têm aparecido clãs na tabela? A não ser que a tabela foi concebida para o armazenamento de clãs em vez de jogadores, ou clãs e jogadores ao mesmo tempo. Nesse caso eu necessito de mais informaçao do script que maneja as inserções na tabela. 1 mukinhas reacted to this Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 (edited) A minha pergunta é: como têm aparecido clãs na tabela? A não ser que a tabela foi concebida para o armazenamento de clãs em vez de jogadores, ou clãs e jogadores ao mesmo tempo. Nesse caso eu necessito de mais informaçao do script que maneja as inserções na tabela. Bom, as tabelas do ranking são essas do link. detalhe: Tem mais uma tabela, porém é de idioma. http://pastebin.com/raw.php?i=f8whNSsY Essa tabela de cima é do pvp, tanto jogadores tanto clãs. No NPC in-game há a separação entre eles. O script a seguir é o que você editou pra mim. Vale lembrar que antes mesmo da edição já estava tudo junto misturado. <?PHP $connecta = mysql_connect('127.0.0.1','ragnarok','ragnarok');$db = mysql_select_db('ragnarok');?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="estilo.css" /><title>Ranking PvP Mooka</title></head> <body><div id="ranking"><table border="0" cellpadding="0" cellspacing="0"> <tr align="center" id="title"> <td>Posição</td> <td>Nome</td> <td>Classe</td> <td>Matou</td> </tr> <?PHP $tabela = mysql_query("SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` ORDER BY p.`kills` DESC LIMIT 50"); $pos = 1; while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.nome_do_classe($pvp['class']).'</td> <td>'.$pvp['kills'].'</td> </tr> '; $pos++; } ?></table></div> </body></html> <?phpfunction nome_do_classe($classe) { switch($classe) { case 0: return "Novice"; case 1: return "Swordman"; case 2: return "Mage"; case 3: return "Archer"; case 4: return "Acolyte"; case 5: return "Merchant"; case 6: return "Thief"; case 7: return "Knight"; case 8: return "Priest"; case 9: return "Wizard"; case 10: return "Blacksmith"; case 11: return "Hunter"; case 12: return "Assassin"; case 13: return "Knight"; case 14: return "Crusader"; case 15: return "Monk"; case 16: return "Sage"; case 17: return "Rogue"; case 18: return "Alchemist"; case 19: return "Bard"; case 20: return "Dancer"; case 21: return "Crusader"; case 22: return "Wedding"; case 23: return "SuperNovice"; case 24: return "Gunslinger"; case 25: return "Ninja"; case 26: return "Santa_Costume"; case 27: return "Summer_Suit"; case 28: return "Hanbok"; case 4001: return "High_Novice"; case 4002: return "High_Swordman"; case 4003: return "High_Mage"; case 4004: return "High_Archer"; case 4005: return "High_Acolyte"; case 4006: return "High_Merchant"; case 4007: return "High_Thief"; case 4008: return "High_Knight"; case 4009: return "High_Priest"; case 4010: return "High_Wizard"; case 4011: return "Whitesmith"; case 4012: return "Sniper"; case 4013: return "Assassin_Cross"; case 4014: return "Lord_Knight"; case 4015: return "Paladin"; case 4016: return "Champion"; case 4017: return "Professor"; case 4018: return "Stalker"; case 4019: return "Creator"; case 4020: return "Clown"; case 4021: return "Gypsy"; case 4022: return "Paladin"; case 4023: return "Baby_Novice"; case 4024: return "Baby_Swordman"; case 4025: return "Baby_Mage"; case 4026: return "Baby_Archer"; case 4027: return "Baby_Acolyte"; case 4028: return "Baby_Merchant"; case 4029: return "Baby_Thief"; case 4030: return "Baby_Knight"; case 4031: return "Baby_Priest"; case 4032: return "Baby_Wizard"; case 4033: return "Baby_Blacksmith"; case 4034: return "Baby_Hunter"; case 4035: return "Baby_Assassin"; case 4036: return "Baby_Knight"; case 4037: return "Baby_Crusader"; case 4038: return "Baby_Monk"; case 4039: return "Baby_Sage"; case 4040: return "Baby_Rogue"; case 4041: return "Baby_Alchemist"; case 4042: return "Baby_Bard"; case 4043: return "Baby_Dancer"; case 4044: return "Baby_Crusader"; case 4045: return "Super_Baby"; case 4046: return "Taekwon"; case 4047: return "Star_Gladiator"; case 4048: return "Star_Gladiator"; case 4049: return "Soul_Linker"; case 4050: return "Gangsi"; case 4051: return "Death_Knight"; case 4052: return "Dark_collector"; case 4054: return "Rune_Knight"; case 4055: return "Warlock"; case 4056: return "Ranger"; case 4057: return "Arch_Bishop"; case 4058: return "Mechanic"; case 4059: return "Guillotine_Cross"; case 4060: return "Rune_Knight"; case 4061: return "Warlock"; case 4062: return "Ranger"; case 4063: return "Arch_Bishop"; case 4064: return "Mechanic"; case 4065: return "Guillotine_Cross"; case 4066: return "Royal_Guard"; case 4067: return "Sorcerer"; case 4068: return "Minstrell"; case 4069: return "Wanderer"; case 4070: return "Sura"; case 4071: return "Genetic"; case 4072: return "Shadow_Chaser"; case 4073: return "Royal_Guard"; case 4074: return "Sorcerer"; case 4075: return "Minstrel"; case 4076: return "Wanderer"; case 4077: return "Sura"; case 4078: return "Genetic"; case 4079: return "Shadow_Chaser"; case 4080: return "Rune_Knight"; case 4081: return "Rune_Knight"; case 4082: return "Royal_Guard"; case 4083: return "Royal_Guard"; case 4084: return "Ranger"; case 4085: return "Ranger"; case 4086: return "Mechanic"; case 4087: return "Mechanic"; case 4096: return "Baby_Rune"; case 4097: return "Baby_Warlock"; case 4098: return "Baby_Ranger"; case 4099: return "Baby_Bishop"; case 4100: return "Baby_Mechanic"; case 4101: return "Baby_Cross"; case 4102: return "Baby_Guard"; case 4103: return "Baby_Sorcerer"; case 4104: return "Baby_Minstrel"; case 4105: return "Baby_Wanderer"; case 4106: return "Baby_Sura"; case 4107: return "Baby_Genetic"; case 4108: return "Baby_Chaser"; case 4109: return "Baby_Rune"; case 4110: return "Baby_Guard"; case 4111: return "Baby_Ranger"; case 4112: return "Baby_Mechanic"; case 4190: return "Super_Novice_Expanded"; case 4191: return "Super_Baby_Expanded"; case 4211: return "Kagerou"; case 4212: return "Oboro"; default: return "Erro"; } }?> Já tentei muita coisa, mas meu conhecimento sobre o assunto é muito limitado e não sei como arrumar. Só faltou eu postar o npc mesmo. Edited July 12, 2014 by mukinhas Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 Eu poderia ver a saída de fazer a seguinte consulta na tabela, feita desde PhpMyAdmin ou outro gestor de bases de dados? SELECT * FROM `pvpm_data` ORDER BY `kills` DESC LIMIT 10" (Ou o código do NPC, si possível, para encontrar o função das colunas da tabela) Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 (edited) Eu poderia ver a saída de fazer a seguinte consulta na tabela, feita desde PhpMyAdmin ou outro gestor de bases de dados? SELECT * FROM `pvpm_data` ORDER BY `kills` DESC LIMIT 10" (Ou o código do NPC, si possível, para encontrar o função das colunas da tabela) Se eu substitui por essa linha continua a mesma coisa, com exceção de que agora todos são lidos como "novice" Edited July 12, 2014 by mukinhas Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 Oh, eu queria saver os dados na tabela (você pode usar essa consulta no PhpMyAdmin ou similar), não que você trocara a consulta atual por essa. Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 Oh, eu queria saver os dados na tabela (você pode usar essa consulta no PhpMyAdmin ou similar), não que você trocara a consulta atual por essa. Bom, quando eu pesquisei SELECT * FROM `pvpm_data` ORDER BY `kills` DESC LIMIT 10" retornou isso aqui Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 Vistos os dados, a consulta SQL você deveria fazer é a seguinte: SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` WHERE p.`type` = 0 ORDER BY p.`kills` DESC LIMIT 50 Teste, e voçê me dizer. 2 mukinhas and Söel reacted to this Quote Share this post Link to post Share on other sites
0 mukinhas 0 Posted July 12, 2014 Vistos os dados, a consulta SQL você deveria fazer é a seguinte: SELECT p.`name`, p.`kills`, c.`class` FROM `pvpm_data` p LEFT JOIN `char` c on p.`id` = c.`char_id` WHERE p.`type` = 0 ORDER BY p.`kills` DESC LIMIT 50 Teste, e voçê me dizer. Você é bom mesmo kkkkk. Primeiro eu fiz a consulta e retornou só os players. Depois coloquei essa linha no script e funcionou perfeito. Vlw mesmo Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted July 12, 2014 Já editei a minha resposta e marquei como resolvido. Feliz que serviu. 3 mukinhas, Söel and JulioCF reacted to this Quote Share this post Link to post Share on other sites
Como posso mudar de modo que apareça também as classes dos respectivos jogadores?
<?PHP $connecta = mysql_connect('127.0.0.1','ragnarok','ragnarok');$db = mysql_select_db('ragnarok');?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="estilo.css" /><title>Ranking PvP Mooka</title></head> <body><div id="ranking"><table border="0" cellpadding="0" cellspacing="0"> <tr align="center" id="title"> <td>Posição</td> <td>Nome</td> <td>Matou</td> </tr> <?PHP $tabela = mysql_query("SELECT * FROM pvpm_data ORDER BY kills DESC LIMIT 50"); $pos = 1; while($pvp = mysql_fetch_assoc($tabela)){ echo ' <tr align="center" id="player"> <td>'.$pos.'º</td> <td>'.$pvp['name'].'</td> <td>'.$pvp['kills'].'</td> </tr> '; $pos++; } ?></table></div> </body></html>Por exemplo, Posição, Nome, Classe, Matou.
Grato.
Share this post
Link to post
Share on other sites