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 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 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 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 Söel, JulioCF and mukinhas 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?
Por exemplo, Posição, Nome, Classe, Matou.
Grato.
Share this post
Link to post
Share on other sites