Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
pendialek

Statistika postav-hotove reseni

Recommended Posts

Jak sem nedavno slibil, prinasim hotovy system statistiky postav pro patch 1.12.1.

Stahnout ho muze tady.

 

Navod k instalaci:

1) urcite nemusim rikat, ze bez Apache serveru nebo jinyho podobnyho softu to nepojede.

2) rozbalte balik a upravte udaje o pripojeni k databazi v souboru statistika.php

$host="localhost";        //adresa k MySQL serveru
$name="";                  //pristupove jmeno
$pass="";                    //heslo
$db="mangos";            //nazev databaze MaNGOSu

 

3) v podslozce script si otevrete v poznamkovem bloku soubor script.bat a vlozte do nej stejne udaje jako do statistika.php, pripadne upravte cestu k MySQL serveru

set uzivatel=root
set heslo=heslo
set mdb=mangos
set mysqlbin=C:\Program Files\MySQL\MySQL Server 5.0\bin\    //cesta k MySQL serveru

 

4) do databaze mangos aplikujte sql patch stats_table.sql

5) a ted uz jen staci si ve windows nastavit pravidelne spousteni souboru script.bat (doporucuji na 12:00 a 00:00)

6) spustit rucne script.bat

7) otevrit si soubor statistika.php v internetovem prohlizeci a uvidite vysledek

 

- pri kazdem spusteni script.bat se vytvori statistika vsech postav a ulozi se do tabulky stats v DB mangos, takze se potom kvuli kazdemu kdo chce videt statistiku nemusi prohledavat cela databaze, ale posle se jen tech par cicel z tabulky stats

 

 

Jeste planuji udelat podobnou vec s guildama (nazev, pocet clenu, leader atd.), ale to se budou udaje brat primo z databaze.

 

 

Myslim, ze navod je srozumitelny, pokud ne, prosím poradte si mezi sebou. Bohuzel nemam cas tu delat podporu. Urcite to zmakne kazdy co rozjel server. Snad timto nekomu vyresim bezesne noci a ohryzane nechty.

 

Vysledek muzete videt tu.

Pokud nekdo vymysli jak stavajici reseni upravit tak, aby se udaje radily podle velikosti, necht to tu prosim vystavi (je to uz nad moje vedomosti) a ja to zkusim upravit.

Edited by hisgrak

Share this post


Link to post
Share on other sites

NICE!

GJ, ale mel bych par vylepseni... napriklad se mi nelibi ta tabulka a spousteni nejakeho *.bat

 

Tady je kod, co "by mel fachat" (moc jsem netestoval ) bez te tabulky; generuje staty rovnou z db

 

<?php

$host="localhost";       //adresa k MySQL serveru
$name="root";            //pristupove jmeno
$pass="";                //heslo
$db="mangos";            //nazev databaze MaNGOSu
$img_base = "img/";      //slozka s obrazky
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<LINK id=bnetstyle href="style.css" type=text/css rel=stylesheet>
<title>
Statistika postav
</title></head>
<body>

<br><br><br><br><center>
<?php

$bgart="#252525";
$bgart2="#000000";

// Race value is index in ChrRaces.dbc
define ('RACE_HUMAN', 1);
define ('RACE_ORC', 2);
define ('RACE_DWARF', 3);
define ('RACE_NIGHTELF', 4);
// if it needs be to official, it's actually SCOURGE acording to the story/.dbc
define ('RACE_UNDEAD_PLAYER', 5);
define ('RACE_TAUREN', 6);
define ('RACE_GNOME', 7);
define ('RACE_TROLL', 8);
define ('MAX_RACES', 9);
    // officially, this exists but was never taken into use.. neutral faction which could
    // learn some skills/spells from horde/alliance. maybe it'll be of some use later on.
define ('RACE_GOBLIN', 9);


// Class value is index in ChrClasses.dbc
define ('CLASS_WARRIOR', 1);
define ('CLASS_PALADIN', 2);
define ('CLASS_HUNTER', 3);
define ('CLASS_ROGUE', 4);
define ('CLASS_PRIEST', 5);
//unused define ('CLASS_UNK1', 6);
define ('CLASS_SHAMAN', 7);
define ('CLASS_MAGE', 8);
define ('CLASS_WARLOCK', 9);
//unused define ('CLASS_UNK2', 10);
define ('CLASS_DRUID', 11);
define ('MAX_CLASSES', 12);
    
$race = array();
$class = array();

//konec premennych

$link = mysql_connect($host,$name,$pass)
    or die('Could not connect: ' . mysql_error());
//echo 'Connected successfully';
mysql_select_db($db, $link) || die('Could not select database');

$sql = "SELECT `race`, COUNT( * ) AS r_c FROM `character` GROUP BY `race`;";
$res = mysql_query($sql, $link);
$res || die('Query failed: ' . mysql_error() );

//check if table isn't empty (only this time)
if ( mysql_num_rows($res) == 0 )
{
  echo "No rows found, nothing to print so am exiting";
  exit;
}

while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) $race[$row['race']] = $row['r_c'];

$sql = "SELECT `class`, COUNT( * ) AS c_c FROM `character` GROUP BY `class`;";
$res = mysql_query($sql, $link); 
$res || die('Query failed: ' . mysql_error() );
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) $class[$row['class']] = $row[c_c];


//matika
$aliance = $race[RACE_HUMAN] + $race[RACE_DWARF] + $race[RACE_GNOME] + $race[RACE_NIGHTELF];
$horda =  $race[RACE_ORC] + $race[RACE_UNDEAD_PLAYER] + $race[RACE_TAUREN] + $race[RACE_TROLL];
$postav = $aliance + $horda;

$ali_p = round($aliance / $postav,4)*100;
$hor_p = round($horda / $postav,4)*100;


$huma = round($race[RACE_HUMAN] / $aliance,4)*100;
$dwaf = round($race[RACE_DWARF] / $aliance,4)*100;
$gnom = round($race[RACE_GNOME] / $aliance,4)*100;
$elf = round($race[RACE_NIGHTELF] / $aliance,4)*100;
$orc = round($race[RACE_ORC] / $horda,4)*100;
$taur = round($race[RACE_TAUREN] / $horda,4)*100;
$unde = round($race[RACE_UNDEAD_PLAYER] / $horda,4)*100;
$trol = round($race[RACE_TROLL] / $horda,4)*100;

$warr = round($class[CLASS_WARRIOR] / $postav,4)*100;
$pala = round($class[CLASS_PALADIN] / $postav,4)*100;
$hunt = round($class[CLASS_HUNTER] / $postav,4)*100;
$roug = round($class[CLASS_ROGUE] / $postav,4)*100;
$prie = round($class[CLASS_PRIEST] / $postav,4)*100;
$sham = round($class[CLASS_SHAMAN] / $postav,4)*100;
$mage = round($class[CLASS_MAGE] / $postav,4)*100;
$warl = round($class[CLASS_WARLOCK] / $postav,4)*100;
$drui = round($class[CLASS_DRUID] / $postav,4)*100;

echo "<font class=\"title\">Statistika postav (celkem $postav)</font><br><br><br>";

//aliance
echo "<table width=\"450\" border=\"0\" rowspan=\"1\" colspan=\"2\"><tr><td>

<table width=\"90%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" align=\"left\" bgcolor=\"black\" ID=\"ramecek\"><tr><td>

<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"stat_tab\">
<tr><td colspan=\"4\" class=\"hlavicka\">Aliance</td></tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/1-0.gif\"></td><td class=\"kategorie\"> Human</td>
<td class=\"cislo\">{$race[RACE_HUMAN]}</td><td class=\"cislo\">$huma%</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/3-0.gif\"></td><td class=\"kategorie\"> Dwaft</td>
<td class=\"cislo\">{$race[RACE_DWARF]}</td><td class=\"cislo\">$dwaf%</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/7-0.gif\"></td><td class=\"kategorie\"> Gnome</td>
<td class=\"cislo\">{$race[RACE_GNOME]}</td><td class=\"cislo\">$gnom%</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/4-0.gif\"></td><td class=\"kategorie\"> Elf</td>
<td class=\"cislo\">{$race[RACE_NIGHTELF]}</td><td class=\"cislo\">$elf%</tr>

<tr bgcolor=\"$bgart\" height=\"40\"><td bgcolor=\"$bgart2\"></td><td><font class=\"celkem\"> CELKEM </td>
<td class=\"procenta\">$aliance</td><td class=\"procenta\">$ali_p%</tr></table>

</td></tr></table></td>";


//horda
echo "<td>

<table width=\"90%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" align=\"right\" bgcolor=\"black\" ID=\"ramecek\"><tr><td>

<table width=\"100%\" cellspacing=\"2\" cellpadding=\"1\" class=\"stat_tab\">
<tr><td colspan=\"4\" class=\"hlavicka\">Horda</td></tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/2-0.gif\"></td><td class=\"kategorie\"> Orc</td>
<td class=\"cislo\">{$race[RACE_ORC]}</td><td class=\"cislo\">$orc%</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/6-0.gif\"></td><td class=\"kategorie\"> Tauren</td>
<td class=\"cislo\">{$race[RACE_TAUREN]}</td><td class=\"cislo\">$taur%</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/5-0.gif\"></td><td class=\"kategorie\"> Undead</td>
<td class=\"cislo\">{$race[RACE_UNDEAD_PLAYER]}</td><td class=\"cislo\">$unde%</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/8-0.gif\"></td><td class=\"kategorie\"> Troll</td>
<td class=\"cislo\">{$race[RACE_TROLL]}</td><td class=\"cislo\">$trol%</tr>

<tr bgcolor=\"$bgart\" height=\"40\"><td bgcolor=\"$bgart2\"></td><td><font class=\"celkem\"> CELKEM </td>
<td class=\"procenta\">$horda</td><td class=\"procenta\">$hor_p%</tr></table>

</td></tr></table>
</td></tr></table>";


//povolani
echo "<table style=\"margin-top:50px\" align=\"center\" width=\"200\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\" align=\"left\" bgcolor=\"black\" ID=\"ramecek\"><tr><td>


<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"1\" class=\"stat_tab\">

<tr bgcolor=\"$bgart1\"><td colspan=\"4\" class=\"hlavicka\">Povolání</td></tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/1.gif\"></td><td  class=\"kategorie\"> Warrior</td>
<td class=\"cislo\">{$class[CLASS_WARRIOR]}</td><td class=\"cislo\">$warr%</td>
</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/2.gif\"></td><td class=\"kategorie\"> Paladin</td>
<td class=\"cislo\">{$class[CLASS_PALADIN]}</td><td class=\"cislo\">$pala%</td>
</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/3.gif\"></td><td class=\"kategorie\"> Hunter</td>
<td class=\"cislo\">{$class[CLASS_HUNTER]}</td><td class=\"cislo\">$hunt%</td>
</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/4.gif\"></td><td class=\"kategorie\"> Rogue</td>
<td class=\"cislo\">{$class[CLASS_ROGUE]}</td><td class=\"cislo\">$roug%</td>
</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/5.gif\"></td><td class=\"kategorie\"> Priest</td>
<td class=\"cislo\">{$class[CLASS_PRIEST]}</td><td class=\"cislo\">$prie%</td>
</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/7.gif\"></td><td class=\"kategorie\"> Shaman </td>
<td class=\"cislo\">{$class[CLASS_SHAMAN]}</td><td class=\"cislo\">$sham%</td>
</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/8.gif\"></td><td class=\"kategorie\"> Mage</td>
<td class=\"cislo\">{$class[CLASS_MAGE]}</td><td class=\"cislo\">$mage%</td>
</tr>

<tr bgcolor=\"$bgart1\"><td><img src=\"$img_base/9.gif\"></td><td class=\"kategorie\"> Warlock</td>
<td class=\"cislo\">{$class[CLASS_WARLOCK]}</td><td class=\"cislo\">$warl%</td>
</tr>

<tr bgcolor=\"$bgart\"><td><img src=\"$img_base/11.gif\"></td><td class=\"kategorie\"> Druid</td>
<td class=\"cislo\">{$class[CLASS_DRUID]}</td><td class=\"cislo\">$drui%</td>
</tr></table>
</td></tr></table>";
?>

</body>
</html>

Share this post


Link to post
Share on other sites

dik, ale moje reseni je optimalizovany pro minimalni zatez serveru. kdyz se ma pri kazdym nahlidnuti do statistiky prochazet 900 postav, tak to asi neni moc brnkacka

Edited by pendialek

Share this post


Link to post
Share on other sites
dik, ale moje reseni je optimalizovany pro minimalni zatez serveru. kdyz se ma pri kazdym nahlidnuti do statistiky prochazet 900 postav, tak to asi neni moc brnkacka

Moje database ma 4800 postav, ted jsem pustil dotazy na vytizenem serveru (online 126+- hracu)

 

Zobrazeny záznamy 0 - 7 (8 celkem, Dotaz zabral 0.0201 sekund)
SQL-dotaz: SELECT `race` , COUNT( * ) AS r_c
FROM `character`
GROUP BY `race`;

 

Zobrazeny záznamy 0 - 8 (9 celkem, Dotaz zabral 0.0203 sekund)
SQL-dotaz: SELECT `class` , COUNT( * ) AS c_c
FROM `character`
GROUP BY `class`;

 

soucet: 0.0404 sec

 

Co mas, proboha, za server, ze ti ho tohle zatezuje?!? Protze me neprijdou tyhle dotazy jako zatezujici, mangos posila kazdou chvili mnohem horsi kousky.

Share this post


Link to post
Share on other sites
ok ok, nic nerikam a nikoho do myho reseni netlacim. asi to predelam.

 

ja to myslel v dobrym, ale jsem proste linej poustet nejaky script nebo ho davat do cronu...

Share this post


Link to post
Share on other sites

jj s tim php to nemuze zatezovat. Btw. jak de udelat na web statistika Jak dlouho server uplynulo od boslednihoo padu. Kdy byl posledi pad atd.. ?

Share this post


Link to post
Share on other sites

no ja bych to zase tak moc neodsuzoval, je pravda ze globalne je php zrejme rychlejsi. ale v asp muzes delat jine veci... navic se tu nikdo nepozastavuje proc nejsou zadne webovky v perlu, ktery taky neni k zahozeni :)

 

btw: neflamujte, jestli ste to nepochopili ;)

Share this post


Link to post
Share on other sites
no ja bych to zase tak moc neodsuzoval, je pravda ze globalne je php zrejme rychlejsi. ale v asp muzes delat jine veci... navic se tu nikdo nepozastavuje proc nejsou zadne webovky v perlu, ktery taky neni k zahozeni :)

 

btw: neflamujte, jestli ste to nepochopili ;)

 

<OT>

Pravda je, ze s php a asp dneska diru do sveta neudelas. Vsechny vetsi webove projekty vali dneska pres cpp pripadne jeste python v kombinaci s FastRPC (Fast Remote Procedure Call) , kdy na pozadi stejne jede app v cpp. Jinak perl je vyborny na nejaky stredne velky chat, je to asi nejrychlejsi scriptovaci jazyk pro praci se strings.

</OT>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×