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

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

Тема в разделе 'Архив', создана пользователем Mr.Deash, 28 апр 2010.

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

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

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Определить ГМ юзер или нет просто

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

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

    Сообщения:
    25
    Лайки:
    0
    Пол:
    Мужской
    Репутация:
    0
    алекс спасибо за хороший статус
  4. BEE Пользователи

    Сообщения:
    17
    Лайки:
    2
    Репутация:
    0
    Кнопку юзай[​IMG]
  5. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Могу сделать одним единственным запросом в базу с LEFT JOIN, нужен примерный вид базы, можешь сделать?
    Поставим вопрос по другому, как сервер определяет гм юзверь или нет по базе?
    впрочем не особо надо, гораздо лучше скинуть бэкап для mysql
  6. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    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

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    В таблице auth записывается айди ГМа и список прав, на каждое право ГМа одна запись, обычно по 22 записи для одного айди.
    1 человеку нравится это.
  8. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    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 Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    А..ботчал скрипт писал..я думал ты парсил для гугла :D
  10. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    шесть с половиной минут, это с учётом того что я скачал базы для сервера чтоб посмотреть названия таблиц и перерыл лс в поисках подсказок что где чего и для чего записывается
  11. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    С секундомером сидел ?:D
  12. BEE Пользователи

    Сообщения:
    17
    Лайки:
    2
    Репутация:
    0
    Плюсанул,самый лучший вариант.
    А если оставить

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

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    А что не должно?
  14. BEE Пользователи

    Сообщения:
    17
    Лайки:
    2
    Репутация:
    0
    Понятия не имел. Я полный ноль в SQL :D
  15. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    самый лучший способ проверить работает ли скрипт это его проверить)
  16. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    чтобы понять рекурсию, нужно понять рекурсию (с)
  17. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Не думаю что это будет работать) т.к. в таблице forbid хранятся баны аккаунтов, а не айди ГМов. Да и алгоритм проверки ГМа далеко не лучший, вот я поражаюсь уже дал готовый SQL запрос, и никто так и не использовал его, изобретают велосипед  :D
  18. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    тогда в какой таблице id ГМов, от этогои плесать будем
  19. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    если аутх то сча писану
  20. Sneeska Леонидус :D Old school Пользователи

    Сообщения:
    133
    Лайки:
    40
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Virron PvP Team
    Да вроде auth, точно непомню на память говорю Оо
Черновик сохранён Черновик удалён

Поделиться этой страницей