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

Результаты поиска

  1. Botchal
  2. Botchal
  3. Botchal
  4. Botchal
  5. Botchal
  6. Botchal
    Если не знаешь, то писать не нужно. Конструкция switch-case даёт большую производительность при варианте, когда в теле используется много логики либо когда много условий. В моём случае ни того ни другого. В посте, что ты скинул это упоминается, но во первых не в полном объеме, во вторых не точно. Очень жаль мне моё время потраченое на прочтение, читаю инглиш медленнее русского. Как минимум elseif юзать надо было. вот с elseif и будет говнокод, зачем лишнее? Раз уж про оптимизацию ты сказал, то вот что ты должен знать: оператор elseif по сути своей связывает несколько тел и чем больше elseif тем впринципе хуже. И что вообще такое вид?)) Ты вообще хоть что-то понимаешь адекватно? Мнение моё и многих, говорит, что нет. Поэтому бан тебе на 9 дней. Пока сообщений.
    Сообщение от: Botchal, 12 май 2012 в разделе: PW Web
  7. Botchal
  8. Botchal
  9. Botchal
  10. Botchal
  11. Botchal
  12. Botchal
  13. Botchal
  14. Botchal
  15. Botchal
    Только чтение. Для занесения - сокет. ОФФТОП: Я это всё начал так как меня не устраивала работа скрипта с сокетом при каждой загрузке страницы. У нас на pw-project.eu будет портал, где комментарии, голосования итд, вобщем много плюшек и какбы всё это интегрировано с игровой информацией. По реальному опыту с J-Games за сутки набегало 22000 просмотров страниц сайта, а тут теперь статус сервера + онлайн по классам тамже на главной странице. Я просто прикинул сколько надо отправить пакетов чтоб получить список персонажей онлайн по классам с дополнительной информацией типа название клана и ссылка на профиль, короче хренова туча). А теперь это реально 1 запрос к MySQL за 0.006 сек.  Разница, да?) А эти чудные байты - для прочей информации, например экипировка, коты в игре, почтовый ящик в игре, друзья в игре, чат, инвентарь, квесты. И это всё будет также доступтно из MySQL. То, что с этими данными, расфасованными по полочкам, делать, ограничивается лиш фантазией. Тоесть мы получаем нормальное чтение. Запись происходит на много реже, тоесть только при редактировании персонажа, при отправке вещей по почте итд, вот тут опасаться нечего и можно использовать сокеты. Вот собсно такая идея.
    Сообщение от: Botchal, 1 май 2012 в разделе: PW Web
  16. Botchal
  17. Botchal
  18. Botchal
  19. Botchal
    Решил поделиться альтернативным способом получения информации о персонажах, кланах и городах для топов. Для начала нужно создать 12 таблиц в MySQL у вас на сайте. 6 таблиц основных и 6 временных. Временные таблицы типа MEMORY нужны для быстрого INSERT'a. Ну а с основными вы будете работать из ваших скриптов, так как персонажей может быть очень много рекомендую расставить индексы в основных таблицах, индексы во временных ставить не нужно. SQL код таблиц для вашего сайта. -- -- Структура таблицы `gamedbd2mysql_listcity` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listcity` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listcity_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listcity_temp` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`fid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfaction` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfaction` ( `fid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `level` int(20) NOT NULL DEFAULT '0', `masterid` int(20) NOT NULL DEFAULT '0', `masterrole` int(20) NOT NULL DEFAULT '1', `member_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfactionuser` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfactionuser` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`rid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfactionuser_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfactionuser_temp` ( `rid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', `fid` int(20) NOT NULL DEFAULT '0', `cls` int(20) NOT NULL DEFAULT '0', `role` int(20) NOT NULL DEFAULT '1', `loyalty` int(20) NOT NULL DEFAULT '0', `nickname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`rid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listfaction_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listfaction_temp` ( `fid` int(20) NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `level` int(20) NOT NULL DEFAULT '0', `masterid` int(20) NOT NULL DEFAULT '0', `masterrole` int(20) NOT NULL DEFAULT '1', `member_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`fid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrole` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrole` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `race` int(20) NOT NULL DEFAULT '0', `occupation` int(20) NOT NULL DEFAULT '0', `gender` int(20) NOT NULL DEFAULT '0', `custom_data_size` int(20) NOT NULL DEFAULT '0', `custom_stamp` int(20) NOT NULL DEFAULT '0', `status` int(20) NOT NULL DEFAULT '1', `delete_time` datetime NOT NULL, `create_time` datetime NOT NULL, `lastlogin_time` datetime NOT NULL, `forbid_size` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `level2` int(20) NOT NULL DEFAULT '0', `exp` int(20) NOT NULL DEFAULT '0', `sp` int(20) NOT NULL DEFAULT '0', `pp` int(20) NOT NULL DEFAULT '0', `hp` int(20) NOT NULL DEFAULT '75', `mp` int(20) NOT NULL DEFAULT '45', `posx` float NOT NULL DEFAULT '218.3', `posy` float NOT NULL DEFAULT '218.7', `posz` float NOT NULL DEFAULT '2838.3', `worldtag` int(20) NOT NULL DEFAULT '1', `money` int(20) NOT NULL DEFAULT '0', `invader_state` int(20) NOT NULL DEFAULT '0', `invader_time` int(20) NOT NULL DEFAULT '0', `pariah_time` int(20) NOT NULL DEFAULT '0', `factionid` int(20) NOT NULL DEFAULT '0', `factionrole` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `custom_status_size` int(20) NOT NULL DEFAULT '0', `filter_data_size` int(20) NOT NULL DEFAULT '4', `charactermode_size` int(20) NOT NULL DEFAULT '0', `instancekeylist_size` int(20) NOT NULL DEFAULT '708', `dbltime_expire` int(20) NOT NULL DEFAULT '0', `dbltime_mode` int(20) NOT NULL DEFAULT '0', `dbltime_begin` int(20) NOT NULL DEFAULT '1253466000', `dbltime_used` int(20) NOT NULL DEFAULT '0', `dbltime_max` int(20) NOT NULL DEFAULT '28800', `time_used` int(20) NOT NULL DEFAULT '766', `timestamp` int(20) NOT NULL DEFAULT '5', `storesize` int(20) NOT NULL DEFAULT '16', `petcorral_size` int(20) NOT NULL DEFAULT '5', `vitality` int(20) NOT NULL DEFAULT '5', `energy` int(20) NOT NULL DEFAULT '5', `strength` int(20) NOT NULL DEFAULT '5', `agility` int(20) NOT NULL DEFAULT '5', `max_hp` int(20) NOT NULL DEFAULT '75', `max_mp` int(20) NOT NULL DEFAULT '45', `hp_gen` int(20) NOT NULL DEFAULT '3', `mp_gen` int(20) NOT NULL DEFAULT '2', `walk_speed` float NOT NULL DEFAULT '2', `run_speed` float NOT NULL DEFAULT '5', `swim_speed` float NOT NULL DEFAULT '3', `flight_speed` float NOT NULL DEFAULT '5', `attack` int(20) NOT NULL DEFAULT '0', `damage_low` int(20) NOT NULL DEFAULT '1', `damage_high` int(20) NOT NULL DEFAULT '1', `attack_speed` int(20) NOT NULL DEFAULT '16', `attack_range` float NOT NULL DEFAULT '2.5', `damage_low0` int(20) NOT NULL DEFAULT '0', `damage_low1` int(20) NOT NULL DEFAULT '0', `damage_low2` int(20) NOT NULL DEFAULT '0', `damage_low3` int(20) NOT NULL DEFAULT '0', `damage_low4` int(20) NOT NULL DEFAULT '0', `damage_high0` int(20) NOT NULL DEFAULT '0', `damage_high1` int(20) NOT NULL DEFAULT '0', `damage_high2` int(20) NOT NULL DEFAULT '0', `damage_high3` int(20) NOT NULL DEFAULT '0', `damage_high4` int(20) NOT NULL DEFAULT '0', `damage_magic_low` int(20) NOT NULL DEFAULT '1', `damage_magic_high` int(20) NOT NULL DEFAULT '1', `resistance0` int(20) NOT NULL DEFAULT '0', `resistance1` int(20) NOT NULL DEFAULT '0', `resistance2` int(20) NOT NULL DEFAULT '0', `resistance3` int(20) NOT NULL DEFAULT '0', `resistance4` int(20) NOT NULL DEFAULT '0', `defense` int(20) NOT NULL DEFAULT '1', `armor` int(20) NOT NULL DEFAULT '0', `max_ap` int(20) NOT NULL DEFAULT '0', `var_data_size` int(20) NOT NULL DEFAULT '56', `skills_size` int(20) NOT NULL DEFAULT '28', `storehousepasswd_size` int(20) NOT NULL DEFAULT '0', `waypointlist_size` int(20) NOT NULL DEFAULT '2', `coolingtime_size` int(20) NOT NULL DEFAULT '8', `storehouse_money` int(20) NOT NULL DEFAULT '0', `storehouse_size` int(20) NOT NULL DEFAULT '0', `inventory_size` int(20) NOT NULL DEFAULT '0', `equipment_size` int(20) NOT NULL DEFAULT '1', `taskinventory_size` int(20) NOT NULL DEFAULT '0', `task_data_size` int(20) NOT NULL DEFAULT '0', `task_complete_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrolebrief` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrolebrief` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `occupation` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `exp` int(20) NOT NULL DEFAULT '0', `moneyall` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `role_yinpiao` int(20) NOT NULL DEFAULT '0', `user_yinpiao` int(20) NOT NULL DEFAULT '0', `updatetime` int(20) NOT NULL DEFAULT '1253784988', `gender` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrolebrief_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrolebrief_temp` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `occupation` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `exp` int(20) NOT NULL DEFAULT '0', `moneyall` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `role_yinpiao` int(20) NOT NULL DEFAULT '0', `user_yinpiao` int(20) NOT NULL DEFAULT '0', `updatetime` int(20) NOT NULL DEFAULT '1253784988', `gender` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listrole_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listrole_temp` ( `roleid` int(20) NOT NULL DEFAULT '16', `userid` int(20) NOT NULL DEFAULT '16', `name` varchar(255) NOT NULL DEFAULT 'cls0gender0', `race` int(20) NOT NULL DEFAULT '0', `occupation` int(20) NOT NULL DEFAULT '0', `gender` int(20) NOT NULL DEFAULT '0', `custom_data_size` int(20) NOT NULL DEFAULT '0', `custom_stamp` int(20) NOT NULL DEFAULT '0', `status` int(20) NOT NULL DEFAULT '1', `delete_time` datetime NOT NULL, `create_time` datetime NOT NULL, `lastlogin_time` datetime NOT NULL, `forbid_size` int(20) NOT NULL DEFAULT '0', `level` int(20) NOT NULL DEFAULT '1', `level2` int(20) NOT NULL DEFAULT '0', `exp` int(20) NOT NULL DEFAULT '0', `sp` int(20) NOT NULL DEFAULT '0', `pp` int(20) NOT NULL DEFAULT '0', `hp` int(20) NOT NULL DEFAULT '75', `mp` int(20) NOT NULL DEFAULT '45', `posx` float NOT NULL DEFAULT '218.3', `posy` float NOT NULL DEFAULT '218.7', `posz` float NOT NULL DEFAULT '2838.3', `worldtag` int(20) NOT NULL DEFAULT '1', `money` int(20) NOT NULL DEFAULT '0', `invader_state` int(20) NOT NULL DEFAULT '0', `invader_time` int(20) NOT NULL DEFAULT '0', `pariah_time` int(20) NOT NULL DEFAULT '0', `factionid` int(20) NOT NULL DEFAULT '0', `factionrole` int(20) NOT NULL DEFAULT '0', `reputation` int(20) NOT NULL DEFAULT '0', `custom_status_size` int(20) NOT NULL DEFAULT '0', `filter_data_size` int(20) NOT NULL DEFAULT '4', `charactermode_size` int(20) NOT NULL DEFAULT '0', `instancekeylist_size` int(20) NOT NULL DEFAULT '708', `dbltime_expire` int(20) NOT NULL DEFAULT '0', `dbltime_mode` int(20) NOT NULL DEFAULT '0', `dbltime_begin` int(20) NOT NULL DEFAULT '1253466000', `dbltime_used` int(20) NOT NULL DEFAULT '0', `dbltime_max` int(20) NOT NULL DEFAULT '28800', `time_used` int(20) NOT NULL DEFAULT '766', `timestamp` int(20) NOT NULL DEFAULT '5', `storesize` int(20) NOT NULL DEFAULT '16', `petcorral_size` int(20) NOT NULL DEFAULT '5', `vitality` int(20) NOT NULL DEFAULT '5', `energy` int(20) NOT NULL DEFAULT '5', `strength` int(20) NOT NULL DEFAULT '5', `agility` int(20) NOT NULL DEFAULT '5', `max_hp` int(20) NOT NULL DEFAULT '75', `max_mp` int(20) NOT NULL DEFAULT '45', `hp_gen` int(20) NOT NULL DEFAULT '3', `mp_gen` int(20) NOT NULL DEFAULT '2', `walk_speed` float NOT NULL DEFAULT '2', `run_speed` float NOT NULL DEFAULT '5', `swim_speed` float NOT NULL DEFAULT '3', `flight_speed` float NOT NULL DEFAULT '5', `attack` int(20) NOT NULL DEFAULT '0', `damage_low` int(20) NOT NULL DEFAULT '1', `damage_high` int(20) NOT NULL DEFAULT '1', `attack_speed` int(20) NOT NULL DEFAULT '16', `attack_range` float NOT NULL DEFAULT '2.5', `damage_low0` int(20) NOT NULL DEFAULT '0', `damage_low1` int(20) NOT NULL DEFAULT '0', `damage_low2` int(20) NOT NULL DEFAULT '0', `damage_low3` int(20) NOT NULL DEFAULT '0', `damage_low4` int(20) NOT NULL DEFAULT '0', `damage_high0` int(20) NOT NULL DEFAULT '0', `damage_high1` int(20) NOT NULL DEFAULT '0', `damage_high2` int(20) NOT NULL DEFAULT '0', `damage_high3` int(20) NOT NULL DEFAULT '0', `damage_high4` int(20) NOT NULL DEFAULT '0', `damage_magic_low` int(20) NOT NULL DEFAULT '1', `damage_magic_high` int(20) NOT NULL DEFAULT '1', `resistance0` int(20) NOT NULL DEFAULT '0', `resistance1` int(20) NOT NULL DEFAULT '0', `resistance2` int(20) NOT NULL DEFAULT '0', `resistance3` int(20) NOT NULL DEFAULT '0', `resistance4` int(20) NOT NULL DEFAULT '0', `defense` int(20) NOT NULL DEFAULT '1', `armor` int(20) NOT NULL DEFAULT '0', `max_ap` int(20) NOT NULL DEFAULT '0', `var_data_size` int(20) NOT NULL DEFAULT '56', `skills_size` int(20) NOT NULL DEFAULT '28', `storehousepasswd_size` int(20) NOT NULL DEFAULT '0', `waypointlist_size` int(20) NOT NULL DEFAULT '2', `coolingtime_size` int(20) NOT NULL DEFAULT '8', `storehouse_money` int(20) NOT NULL DEFAULT '0', `storehouse_size` int(20) NOT NULL DEFAULT '0', `inventory_size` int(20) NOT NULL DEFAULT '0', `equipment_size` int(20) NOT NULL DEFAULT '1', `taskinventory_size` int(20) NOT NULL DEFAULT '0', `task_data_size` int(20) NOT NULL DEFAULT '0', `task_complete_size` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`roleid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listuserbrief` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listuserbrief` ( `userid` int(20) NOT NULL DEFAULT '16', `rolelist` int(20) NOT NULL DEFAULT '16', `cash` int(20) NOT NULL DEFAULT '0', `money` int(20) NOT NULL DEFAULT '0', `cash_2` int(20) NOT NULL DEFAULT '1', `cash_add` int(20) NOT NULL DEFAULT '0', `cash_buy` int(20) NOT NULL DEFAULT '0', `cash_sell` int(20) NOT NULL DEFAULT '0', `cash_used` int(20) NOT NULL DEFAULT '0', `cash_used_2` int(20) NOT NULL DEFAULT '0', `add_serial` int(20) NOT NULL DEFAULT '0', `use_serial` int(20) NOT NULL DEFAULT '0', `cash_current` int(20) NOT NULL DEFAULT '0', `exg_logcount` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; -- -------------------------------------------------------- -- -- Структура таблицы `gamedbd2mysql_listuserbrief_temp` -- CREATE TABLE IF NOT EXISTS `gamedbd2mysql_listuserbrief_temp` ( `userid` int(20) NOT NULL DEFAULT '16', `rolelist` int(20) NOT NULL DEFAULT '16', `cash` int(20) NOT NULL DEFAULT '0', `money` int(20) NOT NULL DEFAULT '0', `cash_2` int(20) NOT NULL DEFAULT '1', `cash_add` int(20) NOT NULL DEFAULT '0', `cash_buy` int(20) NOT NULL DEFAULT '0', `cash_sell` int(20) NOT NULL DEFAULT '0', `cash_used` int(20) NOT NULL DEFAULT '0', `cash_used_2` int(20) NOT NULL DEFAULT '0', `add_serial` int(20) NOT NULL DEFAULT '0', `use_serial` int(20) NOT NULL DEFAULT '0', `cash_current` int(20) NOT NULL DEFAULT '0', `exg_logcount` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`userid`) ) ENGINE=MEMORY DEFAULT CHARSET=cp1251; Перенос информации состоит из 2 частей: 1) Выполнение команд gamedbd на игровом сервере 2) Запись полученной информации в MySQL Если коротко всё выглядит так: Crontab у вас на сайте вызывает скрипт который получает информацию от скрипта у вас на сервере и заносит в базу. Для понимания условно назовём их скриптами для сайта и скриптами для сервера. Пример серверного скрипта: <?php if($_GET['db']=="listcity"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listcity"); } if($_GET['db']=="listfaction"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listfaction"); } if($_GET['db']=="listfactionuser"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listfactionuser"); } if($_GET['db']=="listrole"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrole"); } if($_GET['db']=="listrolebrief"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrolebrief"); } if($_GET['db']=="listuserbrief"){ passthru("/pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listuserbrief"); } ?> Где /pwserver/gamedbd/ путь до gamedbd от корня сервера. Для проверки наберите в терминале /pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrole если выдаст - значит правильно. Назовём его server.php, в зависимости от GET параметра скрипт будет выполнять ту или иную команду и выводить полученную информацию. Этот скрипт живёт у вас на сервере с игровым серверов в директории www. Более подробно с командами gamedbd вы можете ознакомиться набрав в Яндексе "gamedbd команды" там ссылка в первых пяти позициях с заголовком - Gamedbd Модуль-игровой-базы-данных всё подробно описано. Для того, чтобы PHP скрипт мог выполнять команды, вам необходимо прописать права на директорию с сервером chmod -R 777 /pwserver/ где /pwserver/ - директория вашего сервера. если сервер живёт в 2 директориях например в PWServer и в home, то прописать как на /home/ так и на /PWServer/ С серверным скриптом разобрались, теперь пример скриптов для сайта, в кронтабе я использую утилиту php5 вместо wget так как wget у меня создаёт побочные файлы, и это никак не убрать. Но через php5 нельзя передать GET параметры, поэтому необходимо для каждой команды сделать отдельный скрипт. php код скриптов для сайта (создать и залить на сайт). В коде изменить 255.255.255.255 на ваш IP-адрес и вписать в $db = new mysqli("", "", "", ""); хост, юзер, пасс, название базы для подключения к MySQL у вас на сайте. Данные скрипты будут брать информацию от скриптов с вашего сервера по средству file_get_contents(), заносить в MySQL данные. listcity.php - для информации о территориях и их владельцах <?php //script by vk.com/botchal $db = new mysqli("хост", "юзер", "пасс", "название базы"); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listcity")); $db->query("TRUNCATE gamedbd2mysql_listcity_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listcity_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listcity_temp WHERE rid='0'"); $db->query("TRUNCATE gamedbd2mysql_listcity"); $db->query("INSERT gamedbd2mysql_listcity SELECT * FROM gamedbd2mysql_listcity_temp"); $db->query("TRUNCATE gamedbd2mysql_listcity_temp"); ?> listfaction.php - инфо о кланах <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listfaction")); $db->query("TRUNCATE gamedbd2mysql_listfaction_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listfaction_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listfaction_temp WHERE fid='0'"); $db->query("TRUNCATE gamedbd2mysql_listfaction"); $db->query("INSERT gamedbd2mysql_listfaction SELECT * FROM gamedbd2mysql_listfaction_temp"); $db->query("TRUNCATE gamedbd2mysql_listfaction_temp"); ?> listfactionuser.php - инфо о мемберах кланов <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listfactionuser")); $db->query("TRUNCATE gamedbd2mysql_listfactionuser_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listfactionuser_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listfactionuser_temp WHERE rid='0'"); $db->query("TRUNCATE gamedbd2mysql_listfactionuser"); $db->query("INSERT gamedbd2mysql_listfactionuser SELECT * FROM gamedbd2mysql_listfactionuser_temp"); $db->query("TRUNCATE gamedbd2mysql_listfactionuser_temp"); ?> listrole.php - персонажи <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listrole")); $db->query("TRUNCATE gamedbd2mysql_listrole_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listrole_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listrole_temp WHERE roleid='0'"); $db->query("TRUNCATE gamedbd2mysql_listrole"); $db->query("INSERT gamedbd2mysql_listrole SELECT * FROM gamedbd2mysql_listrole_temp"); $db->query("TRUNCATE gamedbd2mysql_listrole_temp"); ?> listrolebrief.php - персонажи коротко <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listrolebrief")); $db->query("TRUNCATE gamedbd2mysql_listrolebrief_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listrolebrief_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listrolebrief_temp WHERE roleid='0'"); $db->query("TRUNCATE gamedbd2mysql_listrolebrief"); $db->query("INSERT gamedbd2mysql_listrolebrief SELECT * FROM gamedbd2mysql_listrolebrief_temp"); $db->query("TRUNCATE gamedbd2mysql_listrolebrief_temp"); ?> listuserbrief.php - голд и ещё инфа <?php //script by vk.com/botchal $db = new mysqli("", "", "", ""); $data = explode("\n", file_get_contents("http://255.255.255.255/server.php?db=listuserbrief")); $db->query("TRUNCATE gamedbd2mysql_listuserbrief_temp"); foreach($data as $str){ $str=str_replace(array("\"","\n"), "", $str); $db->query(" INSERT INTO gamedbd2mysql_listuserbrief_temp VALUES ( '".str_replace(",","', '",$str)."' ) "); } $db->query("DELETE FROM gamedbd2mysql_listuserbrief_temp WHERE userid='0'"); $db->query("TRUNCATE gamedbd2mysql_listuserbrief"); $db->query("INSERT gamedbd2mysql_listuserbrief SELECT * FROM gamedbd2mysql_listuserbrief_temp"); $db->query("TRUNCATE gamedbd2mysql_listuserbrief_temp"); ?> Эти скрипты можно повесить на крон как я уже сказал, а можно вызывать руками. Для того, чтобы проверить работает ли система, вам нужно набрать в вашем браузере http://255.255.255.255/server.php?db=listrole если вы прописали права и правильно указали путь до директории с gamedbd, то вы увидите нечто вроде roleid,userid,name,race,occupation,gender,custom_data_size,custom_stamp,status,delete_time,create_time,lastlogin_time,forbid_size,level,level2,exp,sp,pp,hp,mp,posx,posy,posz,worldtag,money,invader_state,invader_time,pariah_time,factionid,factionrole,reputation,custom_status_size,filter_data_size,charactermode_size,instancekeylist_size,dbltime_expire,dbltime_mode,dbltime_begin,dbltime_used,dbltime_max,time_used,timestamp,storesize,petcorral_size,vitality,energy,strength,agility,max_hp,max_mp,hp_gen,mp_gen,walk_speed,run_speed,swim_speed,flight_speed,attack,damage_low,damage_high,attack_speed,attack_range,damage_low0,damage_low1,damage_low2,damage_low3,damage_low4,damage_high0,damage_high1,damage_high2,damage_high3,damage_high4,damage_magic_low,damage_magic_high,resistance0,resistance1,resistance2,resistance3,resistance4,defense,armor,max_ap,var_data_size,skills_size,storehousepasswd_size,waypointlist_size,coolingtime_size,storehouse_money,storehouse_size,inventory_size,equipment_size,taskinventory_size,task_data_size,task_complete_size 16,16,"cls0gender0",0,0,0,0,0,1,,,2009-09-24 13:36:28,0,1,0,0,0,0,75,45,218.3,218.7,2838.3,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,766,5,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 17,16,"cls9gender1",0,9,1,0,0,1,,,2010-11-12 09:31:46,0,1,0,0,0,0,50,70,-2417.9,135.2,-3062.3,1,0,0,0,0,0,0,0,0,4,0,736,0,0,1289149200,0,36000,487,12,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,40,0,2,8,0,0,0,1,0,0,0 18,16,"cls8gender0",0,8,0,0,0,1,,,2010-11-12 09:17:24,0,1,0,0,0,0,75,45,-2581.0,136.4,-3026.1,1,0,0,0,0,0,0,0,0,4,0,736,0,0,1289149200,0,36000,1483,16,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,0,0 19,16,"cls1gender1",0,1,1,0,0,1,,,2009-09-24 13:36:11,0,1,0,0,0,0,50,70,217.3,218.5,2838.4,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,203,4,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 20,16,"cls2gender0",0,2,0,0,0,1,,,2009-11-16 13:19:08,0,1,0,0,0,0,50,70,2559.9,216.2,-3406.2,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1258304400,0,7200,396,5,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,1,0,0,0 21,16,"cls2gender1",0,2,1,0,0,1,,,,0,1,0,0,0,0,50,70,2623.0,225.0,-3407.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,50,70,-1075842064,0, 0.0,-1.7, 0.0, 0.0,0,1,1,136265260, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 22,16,"cls3gender0",1,3,0,0,0,1,,,,0,1,0,0,0,0,60,60,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,60,60,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 23,16,"cls3gender1",1,3,1,0,0,1,,,2009-09-24 13:36:45,0,1,0,0,0,0,60,60,-1442.0,242.2,1383.1,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,210,2,16,5,5,5,5,5,60,60,2,3, 2.0, 5.1, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 24,16,"cls4gender0",2,4,0,0,0,1,,,2009-09-24 13:19:29,0,1,0,0,0,0,85,35,-1442.1,242.1,1383.6,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,247,1,16,5,5,5,5,5,85,35,4,1, 2.0, 4.9, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 25,16,"cls4gender1",2,4,1,0,0,1,,,,0,1,0,0,0,0,85,35,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,85,35,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 26,16,"cls5gender0",3,5,0,0,0,1,,,,0,1,0,0,0,0,65,50,2623.0,225.0,-3407.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,65,50,-1075842064,0, 0.0,-1.7, 0.0, 0.0,0,1,1,136265260, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 27,16,"cls5gender1",3,5,1,0,0,1,,,2009-11-12 08:55:06,0,1,0,0,0,0,65,50,2559.4,216.2,-3406.1,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1257699600,0,28800,202,2,16,5,5,5,5,5,65,50,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,28,0,2,8,0,0,0,1,0,0,0 28,16,"cls6gender0",4,6,0,0,0,1,,,2009-09-24 13:18:13,0,1,0,0,0,0,65,55,-317.4,218.1,-911.0,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,882,3,16,5,5,5,5,5,65,55,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,3,0,0,0 29,16,"cls6gender1",4,6,1,0,0,1,,,,0,1,0,0,0,0,65,55,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,65,55,0,0, 0.0, 0.0, 0.0, 0.0,0,1,1,0, 0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 30,16,"cls7gender0",5,7,0,0,0,1,,,,0,1,0,0,0,0,30,50,332.0,241.0,3068.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,5,10,30,50,135870208,-1210298380,-0.0, 0.0,-1.3, 0.0,0,1,1,135144543,-0.0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 31,16,"cls7gender1",5,7,1,0,0,1,,,2009-09-24 13:18:00,0,1,0,0,0,0,50,70,-318.5,218.1,-910.8,1,0,0,0,0,0,0,0,0,4,0,708,0,0,1253466000,0,28800,303,2,16,5,5,5,5,5,50,70,1,4, 2.0, 4.8, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,56,40,0,2,8,0,0,0,2,0,0,0 1024,32,"Avatar",0,8,0,176,1,1,,2012-04-25 21:50:45,2012-04-27 23:33:59,0,119,0,25,1935,0,5995,2214,1481.7,219.8,774.4,1,70909738,0,0,0,0,0,0,0,4,8,764,0,0,1335128400,0,36000,18074,57,24,5,150,10,230,220,5790,2214,3,2, 2.0, 5.0, 3.0, 5.0,0,119,119,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,23,18,21,0,360,26 1025,32,"Fedora",3,5,1,176,0,1,,2012-04-27 17:28:35,2012-04-27 23:00:24,0,1,0,0,0,0,65,50,2555.6,216.1,-3403.3,1,0,0,0,0,0,0,0,0,4,0,764,0,0,1335128400,0,36000,482,4,16,5,5,5,5,5,65,50,3,2, 2.0, 5.2, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,40,4 1042,64,"JoTest",0,8,0,176,0,1,,2012-04-27 17:20:59,2012-04-27 17:20:59,0,1,0,0,0,0,75,45,-2581.0,136.4,-3026.1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1289149200,0,36000,1483,16,16,5,5,5,5,5,75,45,3,2, 2.0, 5.0, 3.0, 5.0,0,1,1,16, 2.5,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,64,28,0,2,8,0,0,0,1,0,0,0 1043,64,"Debian",0,2,0,176,0,1,,2012-04-27 17:22:03,2012-04-29 07:56:54,0,150,0,0,605605,458,3030,7798,1136.9,219.6,839.7,1,145736186,0,0,0,0,0,0,0,4,0,764,0,0,1335128400,0,50400,4679,20,16,5,5,259,38,5,3030,7798,1,4, 2.0, 4.8, 3.0, 5.0,0,31,31,16, 2.5,0,0,0,0,0,0,0,0,0,0,150,150,0,0,0,0,0,1,0,0,64,616,0,2,8,0,0,4,5,0,360,12 Если экран пустой - значит вы либо не прописали права либо указали не верно пути до gamedbd в server.php Теперь проверим занесение в MySQL у вас на сайте. Запросим через браузер скрипт http://you_site.ru/listrole.php Это тот скрипт что вы создали и залили. Для отладки добавте в начало скрипта ini_set('display_errors','On'); сразу после <?php через пробел или на следующей строчке, это поможет увидеть ошибки вывод которых по умолчанию отключён. Быть может у вас отключена file_get_contents(), нужно капнуть php.ini, подробности в яндексе. Если ошибок нет, то можно смотреть наши таблицы в MySQL. Там данные. Ну а что с этими данными делать сами решайте, можно топ - http://www.pw-projec...p?name=listrole можно онлайн по классам - http://www.pw-projec...name=listonline или ещё что другое.  
    Автор темы: Botchal, 1 май 2012, ответов - 96, в разделе: PW Web
  20. Botchal