1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Вам понравится, наверно :)

Тема в разделе 'Общение', создана пользователем Synth (LM), 15 ноя 2010.

  1. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Решил такую штуку сделать, но из-за недостатка знаний в php обращаюсь к вам, дорогие друзья:

    Почти каждый владелец бота имеет свой сайт статистики, со своей базой и игроками. Все это уже привычно, да и дизайн на сайтах почти одинаковый у всех. К чему я тяну? А вот к чему - решил украсить сайт статистики неким Измерителем динамики ЛЮБЫХ критерий игрока. Тоесть в моем случае это граффик, в котором указана динамика получения очков в течении всего времени (деления по оси х также хз как настроить :facepalm: ). Вот пример.

    Но для создания динамического массива (а не $datay = array(0,547,971,1201,1680,1942,1754,1639,1890,1987,2340,2514,2714,2910), как в моем примере) нужно этот код использовать на личной страничке игрока (в D.O.S. это user.php). Только вот как это сделать, если в "правильно" вставке кода, странчка просто белого цвета.

    Методом народного тыка, я понял, но как всегда безоружен - это из-за
    Код:
    $graph->Stroke();
    Как быть? Идея то отличная, но знаний нет :spy:
  2. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    не катит, я уже выбрал что мне нужно
  4. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Так, другой вопрос :newcry:

    Как мне узнать количество очков у юзера до какого то периода?
    Ну например сколько было очков у User1 до 10 ноября? Как это узнать?

    Есть даже образец:
    Где:
    $scoreFormula = моя формула подсчета очков
    $minPlayedRatio = 0.8
    $gid = id игры, где играл данный игрок (вот как еще это узнать - была идея найти последние 14 игр игрока и записать в массив - не умею :palevo:)
    $name3 = имя искомого игрока
    $minGamesPlayed = константа из конфига равна 1
    $gmtime = время окончания игры с Id $gid
    Код:
    function GetScoreBefore($scoreFormula,$minPlayedRatio,$gid,$name3,$minGamesPlayed,$gmtime) {
    	$sql = "SELECT *, case when (kills = 0) then 0 when (deaths = 0) then 1000 else ((kills*1.0)/(deaths*1.0)) end as killdeathratio, ($scoreFormula) as totalscore 
    	 FROM ( 
    	 SELECT gp.name as name, bans.name as banname, avg(dp.courierkills) as courierkills, avg(dp.raxkills) as raxkills,
    avg(dp.towerkills) as towerkills, avg(dp.assists) as assists, avg(dp.creepdenies) as creepdenies, avg(dp.creepkills) as creepkills,
    avg(dp.neutralkills) as neutralkills, avg(gp.left) as avgleft, avg(ga.duration) as avgduration, avg(dp.deaths) as deaths, avg(dp.kills) as kills, count(*) as totgames, 
    case when (kills = 0) then 0 when (deaths = 0) then 1000 else ((kills*1.0)/(deaths*1.0)) end as killdeathratio,
    SUM(case when(((dg.winner = 1 and dp.newcolour < 6) or (dg.winner = 2 and dp.newcolour > 6)) 
         AND gp.`left`/ga.duration >= $minPlayedRatio) then 1 else 0 end) as wins, 
         SUM(case when(((dg.winner = 2 and dp.newcolour < 6) or (dg.winner = 1 and dp.newcolour > 6)) 
         AND gp.`left`/ga.duration >= $minPlayedRatio) then 1 else 0 end) as losses
         FROM gameplayers as gp 
         LEFT JOIN dotagames as dg ON gp.gameid = dg.gameid AND gp.gameid != $gid
         LEFT JOIN dotaplayers as dp ON dg.gameid = dp.gameid AND dg.gameid != $gid
    	 AND gp.colour = dp.colour 
    	 AND dp.newcolour <> 12 
    	 AND dp.newcolour <> 6
    	 LEFT JOIN games as ga ON dp.gameid = ga.id
    	 LEFT JOIN bans on bans.name = gp.name
    	 WHERE dg.winner <> 0  AND gp.name = '$name3' AND ga.datetime<='$gmtime' and gp.leftreason NOT LIKE CONVERT( _utf8 '%err%' USING latin1)
    	 GROUP BY gp.name) as i
    	 ORDER BY totalscore ASC LIMIT 1";
    	 return $sql;

    Код:
    	function GetScoreAfter($scoreFormula,$minPlayedRatio,$name3,$minGamesPlayed,$gmtime) {
    	$sql = "SELECT *, case when (kills = 0) then 0 when (deaths = 0) then 1000 else ((kills*1.0)/(deaths*1.0)) end as killdeathratio, ($scoreFormula) as totalscore 
    	 FROM ( 
    	 SELECT gp.name as name, bans.name as banname, avg(dp.courierkills) as courierkills, avg(dp.raxkills) as raxkills,
    avg(dp.towerkills) as towerkills, avg(dp.assists) as assists, avg(dp.creepdenies) as creepdenies, avg(dp.creepkills) as creepkills,
    avg(dp.neutralkills) as neutralkills, avg(gp.left) as avgleft, avg(ga.duration) as avgduration, avg(dp.deaths) as deaths, avg(dp.kills) as kills, count(*) as totgames, 
    case when (kills = 0) then 0 when (deaths = 0) then 1000 else ((kills*1.0)/(deaths*1.0)) end as killdeathratio,
    SUM(case when(((dg.winner = 1 and dp.newcolour < 6) or (dg.winner = 2 and dp.newcolour > 6)) 
         AND gp.`left`/ga.duration >= $minPlayedRatio) then 1 else 0 end) as wins, 
         SUM(case when(((dg.winner = 2 and dp.newcolour < 6) or (dg.winner = 1 and dp.newcolour > 6)) 
         AND gp.`left`/ga.duration >= $minPlayedRatio) then 1 else 0 end) as losses
         FROM gameplayers as gp 
         LEFT JOIN dotagames as dg ON gp.gameid = dg.gameid 
         LEFT JOIN dotaplayers as dp ON dg.gameid = dp.gameid 
    	 AND gp.colour = dp.colour 
    	 AND dp.newcolour <> 12 
    	 AND dp.newcolour <> 6
    	 LEFT JOIN games as ga ON dp.gameid = ga.id
    	 LEFT JOIN bans on bans.name = gp.name
    	 WHERE dg.winner <> 0  AND gp.name = '$name3' AND ga.datetime<='$gmtime' and gp.leftreason NOT LIKE CONVERT( _utf8 '%err%' USING latin1)
    	 GROUP BY gp.name having totgames >= $minGamesPlayed) as i 
    	 ORDER BY totalscore ASC LIMIT 1";
    	 return $sql;
    	}
  5. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    мб создать таблицу отдельную? :bIbIbIblya:
  6. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    И какова структура таблицы?
  7. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    ммм ну это какбЭ на твой лад, либо чтобы в ней каждую игру писало и скок очей получил(можно изменить dotaplayers) или чисто таблица(ник-дата-птс) офк не есть гуд, но всёже
  8. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    и ежедневно делать переброс с 1 колонки на другую... явно не есть гуд)
  9. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Можно дотаело отредактировать на твой вкус и сделать его запуск после каждой игры, или просто выполнять мускул запрос после каждой игры.
  10. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Как sql Запросом найти max(var1, var2, var3) итд?