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

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

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

  1. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Код:
    <?php
    
    
    //script by Botchal
    $db_host="127.0.0.1";//хост базы
    $db_user="botchal";//юзер базы
    $db_pass="12345";//пароль
    $db_name="pw";//название базы
    $db_type="1";//тип, если 1 то MySQL если 2 то MSSQL
    $table_gms="auth";//таблица гмов
    $table_gms_td_id="userid";//столбик в таблице гмов с айди
    $table_online="point";//таблица онлайна
    $table_online_td_id="uid";//столбик в таблице онлайна с айди
    $table_online_td_echo="lastlogin";//ещё чтото надо выбрать
    $table_accounts="users";//таблица аккаунтов
    $table_accounts_td_id="ID";//столбик в таблице аккаунтов с айди
    $table_accounts_td_name="name";//столбик в таблице аккаунтов с логином
    $vivod_teh_kto_off="1";//если 1 то выводить
    $kolichestvo_iz_vseh="1";//если 1 то выводить
    $start_gm_online="0";//если приписать то к числу ГМов в онлайне будет прибавляться то что вы приписали
    
    
    if($db_type=="1"){
    $db=@mysql_connect($db_host,$db_user,$db_pass) or die("нет конекта, правь конфиг
    ");$db=@mysql_select_db($db_name,$db) or die("нет такой базы, правь конфиг
    ");
    $result1=@mysql_query("select $table_gms_td_id from $table_gms") or die("нет такой таблицы\"".$table_gms."\" или столбика \"".$table_gms_td_id."\", правь конфиг
    и вообще ты идёш нахуй
    ");$num_rows1=mysql_num_rows($result1);
    if($num_rows1!="0"){
    while($row1=mysql_fetch_array($result1)){
    $userid=$row1['userid'];
    $result2=mysql_query("select $table_online_td_id,$table_online_td_echo from $table_online where $table_online_td_id='$userid'");$num_rows2=mysql_num_rows($result2);
    if($num_rows2!="0"){
    $result3=mysql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mysql_fetch_array($result3);
    $name_user=$row3['name'];
    $start_gm_online=$start_gm_online+1;
    echo"
    <font color='green'>GameMaster - ".$name_user." сейчас в игре</font><br>
    ";// строчка с именем ГМа если он в сети, для диза правте её
    }
    if($num_rows2=="0" and $vivod_teh_kto_off=="1"){
    $result3=mysql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mysql_fetch_array($result3);
    $name_user=$row3['name'];
    echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font><br>
    ";// строчка с именем ГМа если он НЕ в сети, для диза правте её
    }}
    if($kolichestvo_iz_vseh=="1"){
    $vse=mysql_num_rows($result1);
    echo"GM'ов онлайн - ".$start_gm_online." из ".$vse."<br>";
    }
    }else{echo"<font color='red'>GM'ов на сервере нету, вы можете связаться с администрацией для уточнения</font><br>
    ";}
    }
    
    
    
    
    
    if($db_type=="1"){
    $db=@mssql_connect($db_host,$db_user,$db_pass) or die("нет конекта, правь конфиг
    ");$db=@mssql_select_db($db_name,$db) or die("нет такой базы, правь конфиг
    ");
    $result1=@mssql_query("select $table_gms_td_id from $table_gms") or die("нет такой таблицы\"".$table_gms."\" или столбика \"".$table_gms_td_id."\", правь конфиг
    и вообще ты идёш нахуй
    ");$num_rows1=mssql_num_rows($result1);
    if($num_rows1!="0"){
    while($row1=mssql_fetch_array($result1)){
    $userid=$row1['userid'];
    $result2=mssql_query("select $table_online_td_id,$table_online_td_echo from $table_online where $table_online_td_id='$userid'");$num_rows2=mssql_num_rows($result2);
    if($num_rows2!="0"){
    $result3=mssql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mssql_fetch_array($result3);
    $name_user=$row3['name'];
    $start_gm_online=$start_gm_online+1;
    echo"
    <font color='green'>GameMaster - ".$name_user." сейчас в игре</font><br>
    ";// строчка с именем ГМа если он в сети, для диза правте её
    }
    if($num_rows2=="0" and $vivod_teh_kto_off=="1"){
    $result3=mssql_query("select $table_accounts_td_id,$table_accounts_td_name from $table_accounts where $table_accounts_td_id='$userid'");$row3=mssql_fetch_array($result3);
    $name_user=$row3['name'];
    echo"<font color='red'>GameMaster - ".$name_user." сейчас не в игре</font><br>
    ";// строчка с именем ГМа если он НЕ в сети, для диза правте её
    }}
    if($kolichestvo_iz_vseh=="1"){
    $vse=mssql_num_rows($result1);
    echo"GM'ов онлайн - ".$start_gm_online." из ".$vse."<br>";
    }
    }else{echo"<font color='red'>GM'ов на сервере нету, вы можете связаться с администрацией для уточнения</font><br>
    ";}
    }
    
    
    
    
    
    
    
    ?>
    
    
    1 человеку нравится это.
  2. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Код:
    Не думаю что это будет работать) т.к. в таблице forbid хранятся баны аккаунтов, а не айди ГМов. Да и алгоритм проверки ГМа далеко не лучший, вот я поражаюсь уже дал готовый SQL запрос, и никто так и не использовал его, изобретают велосипед 
    ну еслиб ты его прокоментировал то может кто-то и начал делать бы php. Но это врятли потому,что те кто просит такой скрипт статуса не пишут php поэтому и просят.Если шарить то хоть доделай
  3. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Да что там комментировать? Выполнил запрос да посмотрел результат, плохо что практически нет людей к-е пытаются включить мозг и что-то сделать.

    Ну держите готовое, раз всё так туго)

    Код:
    <?php
    $db_host="localhost";	//хост базы
    $db_user="user";		//юзер базы
    $db_pass="pass";		//пароль
    $db_name="pw";		//имя базы	(для mssql обычно dbo)
    $db_type="1";			//тип, если 1 то MySQL если 2 то MSSQL
    $nik_table="name";		//название поля с логином или ником гма (в таблице users) например truename
    
    if($db_type=="1"){
     $db=mysql_connect($db_host,$db_user,$db_pass) or die("Ошибка коннекта к базе.");
     $db=mysql_select_db($db_name,$db) or die("База ".$db_name." не найдена");
     $res=mysql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса");
     while ($row=mysql_fetch_array($res)){
     	if ($row['zoneid']==1) {
     		echo '<font color="#00ff00">'.$row[$nik_table].'</font><br>';	// Тут пишем что нужно, если ГМ онлайн. На заметку в переменной $row['userid'] - айди ГМа
     	} else {
     		echo '<font color="#ff0000">'.$row[$nik_table].'</font><br>';	// Тут пишем что нужно, если ГМ оффлайн
     	}
     }
    } else
    {
     $db=mssql_connect($db_host,$db_user,$db_pass) or die("Ошибка коннекта к базе.");
     $db=mssql_select_db($db_name,$db) or die("База ".$db_name." не найдена");
     $res=mssql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса");
     while ($row=mssql_fetch_array($res)){
     	if ($row['zoneid']==1) {
     		echo '<font color="#00ff00">'.$row[$nik_table].'</font><br>';	// Тут пишем что нужно, если ГМ онлайн. На заметку в переменной $row['userid'] - айди ГМа
     	} else {
     		echo '<font color="#ff0000">'.$row[$nik_table].'</font><br>';	// Тут пишем что нужно, если ГМ оффлайн
     	}
     }
    }
    
    
  4. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Просьба кого либо слить рабочую базу сервера для опытов, попробую компактный скрипт соорудить и легко настраиваемый
  5. АсСиРиS Пользователи

    Сообщения:
    7
    Лайки:
    0
    Репутация:
    0
    Дамп чистых баз...

    Если что там процедура для добавления ГМов есть. Если хочется наглядного примера
    call addGM(ID, 1);
  6. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Ошибка
    SQL-запрос:
    Код:
    /*use pw$$*/ CREATE PROCEDURE  `acquireuserpasswd` ( IN name1 VARCHAR( 64 ) , out uid1 INTEGER, out passwd1 VARCHAR( 64 ) ) BEGIN SELECT id, passwd
    INTO uid1, passwd1
    FROM users
    WHERE name = name1;

    Ответ MySQL:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7

    можешь сделать пустую таблицу с двумя гм'ами?
  7. АсСиРиS Пользователи

    Сообщения:
    7
    Лайки:
    0
    Репутация:
    0
    Разделитель "$$" поставь. Забыл совсем...
  8. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Не подскажешь куда его поставить? я не очень силен в sql
  9. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
  10. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Чтобы создать чисто юзверя достаточно его прописать в таблицу users или он ещё куда прописывается?
  11. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    еще в 2 таблицы: usecashnow и point, 1я это информация о голде, 2я - о его последнем входе в игру

    Насчет обязательности - хз
  12. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Fedcomp для создания чистого юзера только в users и никуда больше
  13. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    мне нужен примерный вид базы с тремя пользователями, двое онлайн один оффлайн. Т.к "абстрактно" кодить я не умею. Собственно и нужна лишь для этого скрипта и его тестирования.
  14. АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    Warning: mssql_query() [function.mssql-query]: message: Line 1: Incorrect syntax near '`'. (severity 15) in /opt/lampp/htdocs/register/statusgm.php on line 24

    Warning: mssql_query() [function.mssql-query]: Query failed in /opt/lampp/htdocs/register/statusgm.php on line 24

    я там нечего не трогал :О
  15. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Код:
    $res=mysql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса");
    Запросы в MSSQL и MySQL идеинтичны, а разве так должно быть?
  16. kanaply Пользователи

    Сообщения:
    1
    Лайки:
    0
    Пол:
    Мужской
    Репутация:
    0
  17. АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    у меня спрашиваеш?:О
  18. АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    кэп, он везде кэп..
  19. АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    я в этом не шарю какбе... в чем тут ошибко....
    Код:
     $res=mssql_query("SELECT DISTINCT userid, point.zoneid, users.".$nik_table." FROM `auth` LEFT JOIN point ON auth.userid=point.uid LEFT JOIN users ON auth.userid=users.id") or die("Ошибка запроса");
    
  20. Chaos13 Проверенный II Пользователи

    Сообщения:
    10
    Лайки:
    11
    Репутация:
    0
    А разве MSSQL поддерживает двойной left join?
Черновик сохранён Черновик удалён

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