1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

[Web]Статус GM В сети

本贴由 Mr.Deash2010-04-28 发布. 版块名称: Архив

  1. Fedcomp Пользователи

    注册日期:
    2010-05-16
    帖子:
    49
    支持:
    4
    Репутация:
    0
    скажите по каким образом можно через базу определить гм юзверь или нет и я напишу скрипт в 4-6 строк делающий мизерную нагрузку. У вас (кроме алекснепро, у него ещё вполне съедобное решение) все решения делают по куче достаточно больших запросов в базу, когда наверняка можно сделать один проооостенький и маааленький запрос =\
    ещё раз
    Как по базе определить гм пользователь или нет?
  2. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    Определить ГМ юзер или нет просто

    SELECT * FROM auth WHERE userid=тут_айди_юзера

    Но только не пойму зачем тебе это? Я уже написал ранее как получить айди всех ГМов (ничего лишнего) одним запросом, потом в цикле вытягиваются данные об этом айди ГМа (ник или логин или что угодно) и проверяется онлайн он или нет если нужно. Итого 1 запрос на получение кол-ва, и по 2 запроса на каждого найденного ГМа (если без статуса онлайн то по 1-му)
  3. kline Пользователи

    注册日期:
    2010-04-11
    帖子:
    25
    支持:
    0
    性别:
    Репутация:
    0
    алекс спасибо за хороший статус
  4. BEE Пользователи

    注册日期:
    2010-05-31
    帖子:
    17
    支持:
    2
    Репутация:
    0
    Кнопку юзай[​IMG]
  5. Fedcomp Пользователи

    注册日期:
    2010-05-16
    帖子:
    49
    支持:
    4
    Репутация:
    0
    Могу сделать одним единственным запросом в базу с LEFT JOIN, нужен примерный вид базы, можешь сделать?
    Поставим вопрос по другому, как сервер определяет гм юзверь или нет по базе?
    впрочем не особо надо, гораздо лучше скинуть бэкап для mysql
  6. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    Ну если тебе важно именно одним запросом, то держи

    SELECT DISTINCT userid, point.zoneid, users.name FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id

    Тут одним запросом получаем айди, онлайн/оффлайн и логин аккаунта всех ГМов. Вместо users.name можно подставить любое другое поле из таблицы users, чтобы выводить не аккаунт, а ник.
  7. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    В таблице auth записывается айди ГМа и список прав, на каждое право ГМа одна запись, обычно по 22 записи для одного айди.
    1 человеку нравится это.
  8. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    [​IMG]

    代码:
    <?php
    
    
    // script by Botchal
    $dbhost="127.0.0.1";$dbuser="botchal";$dbpass="12345";$dbname="pw";// настройте подключение к базе
    $dbtype="1";// если 1 то MySQL, если 2 то MSSQL
    
    if($dbtype=="1"){
    $db=mysql_connect($dbhost,$dbuser,$dbpass);$db=mysql_select_db($dbname,$db);
    $result1=mysql_query("select ID,name from users");
    while($row1=mysql_fetch_array($result1)){
    $id_user=$row1['ID'];
    $name_user=$row1['name'];
    $result2=mysql_query("select * from forbid where userid='$id_user'");$gm=mysql_num_rows($result2);
    if($gm!="0"){
    $result3=mysql_query("select * from point where uid='$id_user'");$online=mysql_num_rows($result3);
    if($online!="0"){
    echo"<font color='green'>GameMaster - ".$name_user." сейчас в игре</font><br>";// строчка с именем ГМа если он в сете, для диза правте её
    }else{
    echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font><br>";// строчка с именем ГМа если он НЕ в сете, для диза правте её
    }}else{}}}
    
    
    
    
    
    if($dbtype=="2"){
    $db=mssql_connect($dbhost,$dbuser,$dbpass);$db=mssql_select_db($dbname,$db);
    $result1=mssql_query("select ID,name from users");
    while($row1=mssql_fetch_array($result1)){
    $id_user=$row1['ID'];
    $name_user=$row1['name'];
    $result2=mssql_query("select * from forbid where userid='$id_user'");$gm=mssql_num_rows($result2);
    if($gm!="0"){
    $result3=mssql_query("select * from point where uid='$id_user'");$online=mssql_num_rows($result3);
    if($online!="0"){
    echo"<font color='green'>GameMaster - ".$name_user." сейчас в игре</font><br>";// строчка с именем ГМа если он в сете, для диза правте её
    }else{
    echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font><br>";// строчка с именем ГМа если он НЕ в сете, для диза правте её
    }}else{}}}
    
    ?>
    
    已获得2人支持.
  9. TheMazzahaka Пользователи

    注册日期:
    2010-05-22
    帖子:
    223
    支持:
    76
    性别:
    Репутация:
    0
    Команда:
    J-Games Dev
    А..ботчал скрипт писал..я думал ты парсил для гугла :D
  10. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    шесть с половиной минут, это с учётом того что я скачал базы для сервера чтоб посмотреть названия таблиц и перерыл лс в поисках подсказок что где чего и для чего записывается
  11. TheMazzahaka Пользователи

    注册日期:
    2010-05-22
    帖子:
    223
    支持:
    76
    性别:
    Репутация:
    0
    Команда:
    J-Games Dev
    С секундомером сидел ?:D
  12. BEE Пользователи

    注册日期:
    2010-05-31
    帖子:
    17
    支持:
    2
    Репутация:
    0
    Плюсанул,самый лучший вариант.
    А если оставить

    Работать будет?[​IMG]
  13. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    А что не должно?
  14. BEE Пользователи

    注册日期:
    2010-05-31
    帖子:
    17
    支持:
    2
    Репутация:
    0
    Понятия не имел. Я полный ноль в SQL :D
  15. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    самый лучший способ проверить работает ли скрипт это его проверить)
  16. JoLan Команда форума Администратор AngeliCore Программист

    注册日期:
    2010-03-29
    帖子:
    1,061
    支持:
    948
    性别:
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    чтобы понять рекурсию, нужно понять рекурсию (с)
  17. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    Не думаю что это будет работать) т.к. в таблице forbid хранятся баны аккаунтов, а не айди ГМов. Да и алгоритм проверки ГМа далеко не лучший, вот я поражаюсь уже дал готовый SQL запрос, и никто так и не использовал его, изобретают велосипед  :D
  18. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    тогда в какой таблице id ГМов, от этогои плесать будем
  19. Botchal MMORPG-DEVS.RU Пользователи

    注册日期:
    2010-04-08
    帖子:
    182
    支持:
    67
    Репутация:
    0
    если аутх то сча писану
  20. Sneeska Леонидус :D Old school Пользователи

    注册日期:
    2010-03-22
    帖子:
    140
    支持:
    45
    性别:
    Репутация:
    0
    Команда:
    Virron PvP Team
    Да вроде auth, точно непомню на память говорю Оо
Черновик сохранён Черновик удалён

分享此页面