Перейти к содержанию

centrix

Пользователи
  • Публикаций

    117
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Весь контент centrix

  1. centrix

    Добавление На Сервер

    еще я бы перед созданием нового hexid залазил бы в базу и из таблицы gameserver поудалял бы все. Ну и само собой новый hexid кидать в \game\config)
  2. парт2 сборок переставил тьму, последние 4 месяца проект работает на ядре L2Dream. Взяли последнюю open-source и занимаемся доработкой самостоятельно. В принципе сборка неплохая, только ХБ не работает. Пришлось самостоятельно дописывать. И квесты на Parnasus. А вобщем - неплохая сборка. Сейчас дримы закрыли ядро, перешли на платную основу. Купил у них 1 сборку финалки - полное Г. парт 2 опенсурс лучше раза в 3))) Так что тоже попробуйте. ГМ шоп, баферы и все остальное сразу встроено в сборку. Ссылочку на закачку не дам, но на la2base есть она.
  3. centrix

    Сервер Lineage Ii И Linux

    Проблема такая: система стоит Linux ubuntu x64 desktop. Не работает статистика на сайте (сайт на удаленном хостинге). Проблема в том, что порт 3306 (MySQL) закрыт в линуксе на внешние подключения. Догадываюсь, что ответ лежит в файле настроек MySQL. Но вот что именно там подправить или закомментировать - не знаю. Кто подскажет?)
  4. Пробовал. результат тот же. Видел в природе скрипт, который самостоятельно каждые 10 минут проверяет л2топ на новые голоса и сам выдает поощрение. У вас на сайте не нашел. может, кто поделится? для дримовской сборки)
  5. Сервер на выделенной машине, а сайт на хостинге. Ставил сборку старой команды дрим (ядро V25), там у меня без проблем вышло статистику на сайт вывести. Ну да ладно. Другой вопрос: есть скрипты для сайтов, позволяющие строить графики изменения он-лайна? Очень нужно мне такое..
  6. Всю папку статистики скинул. Если еще чего надо - пиши)
  7. <?php if (!defined("STRESSWEB")) die("Hacking!!!"); $_act = (isset($_POST["act"])) ? phpInjection(sqlInjection($_POST["act"])) : ""; if ($config["l2top"]["enable"] == "1") { $_vote_error = ""; $tmpServerList = array(); $tpl->get_template("vote.tpl"); $tpl->set_var('{voteID}', $config["l2top"]["id"]); if ($_act == "") { $time = time(); if ((cache_get("l2top_time") + 1) > $time) { $time = (cache_get("l2top_time") + 1) - $time; $time_min = date("i", $time); $time_sec = date("s", $time); $tpl->set_block("'\\[time\\](.*?)\\[/time\\]'si", "\\1"); $tpl->set_block("'\\[check\\](.*?)\\[/check\\]'si", ""); $tpl->set_block("'\\[vote\\](.*?)\\[/vote\\]'si", ""); $tpl->set_block("'\\[error\\](.*?)\\[/error\\]'si", ""); $tpl->set_var('{min}', $time_min); $tpl->set_var('{sec}', $time_sec); } else { for ($i = 0; $i < $l2db["gameserver"]["count"]; $i++) { if ($l2db["gameserver"][$i]["on"] == "1" && $l2db["gameserver"][$i]["l2top"]["allow"] == "1") { $tmpServerList[$i] = $l2db["gameserver"][$i]["title"]; } } $tpl->set_block("'\\[time\\](.*?)\\[/time\\]'si", ""); $tpl->set_block("'\\[check\\](.*?)\\[/check\\]'si", "\\1"); $tpl->set_block("'\\[vote\\](.*?)\\[/vote\\]'si", ""); $tpl->set_block("'\\[error\\](.*?)\\[/error\\]'si", ""); $tpl->set_var('{selectServer}', select("server", $tmpServerList, $_serv_id, "style='width: 125px;'")); $tpl->set_var("{l2sec_code}", "<span id=\"sw-captcha\"><img src=\"/inc/captcha/antibot.php\" alt=\"Код безопасности\" border=\"0\" /> <br /><a onclick=\"reload(); return false;\" href=\"#\">Обновить код</a></span>"); } } /************************** * Vote **************************/ if ($_act == "check") { $_vote_nick = $ldb->safe($_POST["character"]); $_vote_sec_code = $ldb->safe($_POST["l2sec_code"]); $_sess_sec_code = $_SESSION["sw_captcha"]; //Розкомментировать для отключения каптчи //$_vote_sec_code = 1; //$_sess_sec_code = 1; if (empty($_vote_error) && ($_vote_nick == "" || $_vote_sec_code == "")) { $_vote_error = "<div class='error'>Вы не ввели ник персонажа или код с картинки. <a href='index.php?f=vote'>Назад</a></div>"; } if (empty($_vote_error) && ($_vote_sec_code != $_sess_sec_code || !$_sess_sec_code)) { $_vote_error = "<div class='error'>Введенный код не совпадает с указанным на картинке! <a href='index.php?f=vote'>Назад</a></div>"; } if (empty($_vote_error) and is_numeric($_vote_nick)) { $_vote_error = "<div class='error'>Имя вашего игрока содержит запрещенные символы. <a href='index.php?f=vote'>Назад</a></div>"; } if (empty($_vote_error)) { $query = $gdb[$_serv_id]->query($gdb[$_serv_id]->_parse_query($qList[$l2db_gs]["l2top"]["getChar"], array("name" => $_vote_nick))); if ($gdb[$_serv_id]->numrows($query) == 1) { $tpl->set_block("'\\[time\\](.*?)\\[/time\\]'si", ""); $tpl->set_block("'\\[check\\](.*?)\\[/check\\]'si", ""); $tpl->set_block("'\\[vote\\](.*?)\\[/vote\\]'si", "\\1"); $tpl->set_block("'\\[error\\](.*?)\\[/error\\]'si", ""); $tpl->set_var('{server}', $_serv_id); $tpl->set_var('{character}', $_vote_nick); } else { $_vote_error = "<div class='error'>Такой игрок на нашем сервере не существует. <a href='index.php?f=vote'>Назад</a></div>"; } } } if ($_act == "get") { $name = $ldb->safe($_POST["name"]); $lines = explode("\n", file_get_contents($config["l2top"]["url"])); cache_set("l2top_time", time()); $top = array(); $n = 0; $kk = array(); foreach ($lines as $line) { $date = substr($line, 0, 19); $char = rtrim(substr($line, 20)); $isset_prefix = empty($l2db["gameserver"][$_serv_id]["l2top"]["prefix"]) ? false : true; if ($isset_prefix && strval(strtolower($l2db["gameserver"][$_serv_id]["l2top"]["prefix"] . "-" . $name)) == strval(strtolower($char))) { $top[$n]['nick'] = $name; $top[$n]['server'] = $_serv_id; $top[$n]['date'] = $date; $n++; } elseif (!$isset_prefix && strval(strtolower($name)) == strval(strtolower($char))) { $top[$n]['nick'] = $name; $top[$n]['server'] = $_serv_id; $top[$n]['date'] = $date; $n++; } } if (empty($top)) { $_vote_error = "<div class='error'>Ваш голос в L2Top.ru не найден. <a href='index.php?f=vote'>Назад</a></div>"; } else { $bonus_count = 0; $bonus_name = ""; $status = false; for ($i = 0; $i < count($top); $i++) { $query = $ldb->query("SELECT `id` FROM `l2top` WHERE `nick`='{$top[$i]["nick"]}' AND `date` = '{$top[$i]["date"]}'"); if ($ldb->numrows($query) == 0) { $status = true; $server = $top[$i]["server"]; $success = false; $l2db_gs = $versionList[$l2db["gameserver"][$server]["version"]]; $character_data = $gdb[$server]->fetch_array($gdb[$server]->query($gdb[$server]->_parse_query($qList[$l2db_gs]["l2top"]["getChar"], array("name" => $top[$i]["nick"])))); if ($l2db["gameserver"][$server]["l2top"]["bonus"] == "l2money") { $ldb->query("INSERT INTO `l2top` SET `nick` = '{$top[$i]["nick"]}', `date` = '{$top[$i]["date"]}', `server` = '{$server}', `success`='0'"); $bonus_name = $config["wm"]["money"]; $money = floatval($l2db["gameserver"][$server]["l2top"]["l2money_count"]); $bonus_count += $money; $query = $ldb->query("SELECT `money` FROM `stress_donate_money` WHERE `account`='{$character_data["account_name"]}'"); if ($ldb->numrows($query) == 1) { $ldb->query("UPDATE `stress_donate_money` SET `money` = `money` + {$money} WHERE `account` = '{$character_data["account_name"]}'"); } else { $ldb->query("INSERT INTO `stress_donate_money` SET `account`='{$character_data["account_name"]}', `money` = '{$money}'"); } if ($ldb->affectedrows() > 0) $success = true; } else { $bonusType = null; $bonus_name = "бонусных предметов"; if ($l2db["gameserver"][$server]["l2top"]["method"] == "telnet" && $character_data["online"] != 1) { $_vote_error = "<div class='error'>Ваш персонаж должен быть онлайн!</div>"; } elseif ($l2db["gameserver"][$server]["l2top"]["method"] == "mysql" && $character_data["online"] == 1) { $_vote_error = "<div class='error'>Ваш персонаж должен быть оффлайн!</div>"; } elseif ($l2db["gameserver"][$server]["l2top"]["method"] == "mysqltelnet") { $bonusType = ($character_data["online"] == 1) ? "telnet" : "mysql"; } elseif ($l2db["gameserver"][$server]["l2top"]["method"] != "telnet" && $l2db["gameserver"][$server]["l2top"]["method"] != "mysql") { $_vote_error = "<div class='error'>Ошибка, попробуйте еще раз!</div>"; } if (empty($_vote_error) && ($l2db["gameserver"][$server]["l2top"]["method"] == "telnet" || $bonusType == "telnet")) { $ldb->query("INSERT INTO `l2top` SET `nick` = '{$top[$i]["nick"]}', `date` = '{$top[$i]["date"]}', `server` = '{$server}', `success`='0'"); $host = $l2db["gameserver"][$server]["server"]["host"]; $port = $l2db["gameserver"][$server]["telnet"]["port"]; $timeout = $l2db["gameserver"][$server]["telnet"]["timeout"]; $telnet = @fsockopen($host, $port, $errno, $errstr, $timeout); if ($telnet) { @fputs($telnet, $l2db["gameserver"][$server]["telnet"]["pass"]); @fputs($telnet, "\r\n"); if (!empty($l2db["gameserver"][$server]["telnet"]["gmname"])) { @fputs($telnet, $l2db["gameserver"][$server]["telnet"]["gmname"]); @fputs($telnet, "\r\n"); } $itemId = $l2db["gameserver"][$server]["l2top"]["itemID"]; $itemCount = $l2db["gameserver"][$server]["l2top"]["item_count"]; fputs($telnet, "give {$top[$i]["nick"]} {$itemId} {$itemCount}"); $success = true; $bonus_count += $l2db["gameserver"][$server]["l2top"]["item_count"]; } @fclose($telnet); } if (empty($_vote_error) && ($l2db["gameserver"][$server]["l2top"]["method"] == "mysql" || $bonusType == "mysql")) { $ldb->query("INSERT INTO `l2top` SET `nick` = '{$top[$i]["nick"]}', `date` = '{$top[$i]["date"]}', `server` = '{$server}', `success`='0'"); $query = $gdb[$server]->query($gdb[$server]->_parse_query($qList[$l2db_gs]["l2top"]["getItem"], array("ownerID" => $character_data["charID"], "itemID" => $l2db["gameserver"][$server]["l2top"]["itemID"]))); if ($item = $gdb[$server]->fetch_array($query)) { $gdb[$server]->query($gdb[$server]->_parse_query($qList[$l2db_gs]["l2top"]["setItem"], array("ownerID" => $character_data["charID"], "itemID" => $item["item_id"], "count" => $item["count"] + $l2db["gameserver"][$server]["l2top"]["item_count"]))); if ($gdb[$server]->affectedrows() > 0) { $success = true; $bonus_count += $l2db["gameserver"][$server]["l2top"]["item_count"]; } } else { $object_id = $gdb[$server]->fetch_array($gdb[$server]->query($gdb[$server]->_parse_query($qList[$l2db_gs]["l2top"]["getMax"]))); $gdb[$server]->query($gdb[$server]->_parse_query($qList[$l2db_gs]["l2top"]["insItem"], array("charID" => $character_data["charID"], "objectID" => $object_id["max"], "itemID" => $l2db["gameserver"][$server]["l2top"]["itemID"], "count" => $l2db["gameserver"][$server]["l2top"]["item_count"]))); if ($gdb[$server]->affectedrows() > 0) { $success = true; $bonus_count += $l2db["gameserver"][$server]["l2top"]["item_count"]; } } } } if ($success == true) { $ldb->query("UPDATE `l2top` SET `success`='1' WHERE `nick` = '{$top[$i]["nick"]}' AND `date` = '{$top[$i]["date"]}'"); } } } if ($status == false) { $_vote_error .= "<div class='error'>Вы уже получали призы. <a href='index.php?f=vote'>Назад</a></div>"; } else { $_vote_error .= "<div class='noerror'>Вам зачислено {$bonus_name}: {$bonus_count}</div>"; } } } if (!empty($_vote_error)) { $tpl->set_block("'\\[time\\](.*?)\\[/time\\]'si", ""); $tpl->set_block("'\\[check\\](.*?)\\[/check\\]'si", ""); $tpl->set_block("'\\[vote\\](.*?)\\[/vote\\]'si", ""); $tpl->set_block("'\\[error\\](.*?)\\[/error\\]'si", "\\1"); $tpl->set_var("{error}", $_vote_error); } /************************** * Top voters **************************/ if ($config["l2top"]["top"] == "1") { $tpl->set_block("'\\[topVoters\\](.*?)\\[/topVoters\\]'si", "\\1"); $tpl->set_var("{top_count}", $config["l2top"]["top_count"]); if (cache_get("l2vote_time") > $_TIME && $config["cache"]["allow"]) { $votersList = cache_get("l2vote"); } else { $votersList = " <table cellpadding='3' cellspacing='3' width='90%' id='voteTab'> <tr> <th width='35'>#</th> <th width=''>Персонаж</th> <th width='70'>Голосов</th> </tr>"; $month = date("m", time()); $sel_voters = $ldb->query($ldb->_parse_query($qList[$l2db_ls]["l2top"]["getVotersList"], array("time" => $month, "limit" => $config["l2top"]["top_count"]))); $n = 1; while ($voters_data = $ldb->fetch_array($sel_voters)) { $votersList .= " <tr> <td>{$n}</td> <td>{$voters_data["nick"]}</td> <td>{$voters_data["votes"]}</td> </tr>"; $n++; } $votersList .= "</table>"; if ($config["cache"]["allow"]) { cache_set("l2vote_time", $_TIME + 60 * $config["cache"]["vote"]); cache_set("l2vote", $votersList); } } $tpl->set_var("{votersList}", $votersList); } else { $tpl->set_block("'\\[topVoters\\](.*?)\\[/topVoters\\]'si", ""); } $tpl->parse("content"); $tpl->clear(); } else { $tpl->result["content"] = "<div class='error'>Система получения призов L2Top отключена!</div>"; } ?> Вот код скрипта (vote.php). Уходит в штопор на этапе проверки наличия голоса в списках л2топ. Подскажите, че в нем не так?
  8. centrix

    Community Board

    1. Попробовал. пишет - сервис не реализован. 2. Понял)
  9. centrix

    Community Board

    На сервере запущена PvP версия Community board (Alt+. Туда встроны ГМ шоп, бафер, глобал ГК (по умолчанию с сервером идут) 1. Хочу добавить туда кнопку "Sell", чтобы игроки могли избавиться от ненужного хлама на месте (скинуть в магазин). Кнопку такую вставил, а вот что в код прописать, чтобы функция продажи заработала? 2. Предусмотрена вкладка "Профессии". Она пустая. На сервере есть профменеджер (кот), продающий профессии. Как его встроить в эту вкладку? Кто поможет - вечный респект;-)
  10. На сборках дрима в конфиге ГС есть функция для включения генерации статистики. На локальной машине ее можно просмотреть в файле /server/data/webserver/index.html Как сделать, чтобы эту статистику можно было наблюдать с сайта или с любой другой удаленной машины?
  11. Добавлю еще одно: В поле hostname нужно вбивать следующее: 1. Если сервер MуSQL расположен на этой же машине - вбиваешь localhost 2. Если хочешь подцепиться к удаленной БД - вбиваешь IP адрес сервера MySQL. Ну и нужно, чтоб на удаленном сервере порт 3306 был открыт на внешнее подключение.
  12. Есть пара вопросов по MySQL: 1. Как сменить root пароль на подключение к MySQL? 2. Как ускорить работу базы данных?
  13. Все было легко и просто) Тогда еще 1 вопрос про этот же скрипт. Периодически возникает такая ситауция, что скрипт начинает очень долго "думать" и в итоге писать, что ваш голос не найден. Хотя он есть. В чем может быть проблема?
  14. На обвязке от STRESS есть скрипт выдачи поощрений. Т.е. игрок, после голосования на L2TOP заходит на сайт, вбивает свой ник, каптчу и, если его голос найден, то сам себе выдает призовой итем. Все очень удобно и хорошо, кроме одного. Интервал между запросами с одного IP - 5 минут. Подскажите, как убрать это ограничение, ну или сделать его хотя-бы 5-10 секунд. На сервере много игроков с динамическим IP, и выдать себе призов за 10-15 голосов выливается в очень длительную и муторную операцию.
  15. Все, получилось) Спасибо за помощь!)
  16. В общем, заморочек много)
  17. В настройке - L2Dream (может, ее там и нет по умолчанию. Мне один товарищ поделился собственной наработкой для ядра дрима) Таблица ХБ имеет такую структуру DROP TABLE IF EXISTS `hellbound`; CREATE TABLE IF NOT EXISTS `hellbound` ( `name` INT UNSIGNED NOT NULL DEFAULT 0, `hb_points` INT UNSIGNED NOT NULL DEFAULT 0, `hb_level` INT UNSIGNED NOT NULL DEFAULT 1, `unlocked` INT UNSIGNED NOT NULL DEFAULT 0, `dummy` INT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`name`,`hb_points`,`hb_level`,`unlocked`,`dummy`) ) ENGINE=MyISAM AVG_ROW_LENGTH=26 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
  18. centrix

    Откат Скила)

    Все, разобрался. спасибо.
  19. Приветствую. Работаю со сборкой L2Dream part 2 (opensource). В сборке не реализованы квесты на Parnasus. Если взять готовые квесты с папки scripts\quest с других сборок и запихать к себе, заработают они или нет? или еще что-то где-то править надо будет?)
  20. Доброго времени суток. Есть веб-обвязка на движке стресса, работает замечательно. Хотелось бы добавить в общую статистику две строчки: Hellbound points и Hellbound level. Все эти данные можно взять в таблице hellbound (hb_points, hb_level). Так вот что дописать в модуль статистики?
  21. centrix

    Откат Скила)

    Да просто на этапе загрузки скилов вылетает. Сейчас не могу точно сказать, логи не сохранились.
  22. centrix

    Откат Скила)

    <skill id="664" levels="1" name="Transform Anakim"> <!-- L2Dream Team --> <set name="target" val="TARGET_SELF"/> <set name="skillType" val="TRANSFORMATION"/> <set name="isMagic" val="true"/> <set name="reuseDelay" val="14400000"/> <set name="isSkillTimePermanent" val="true"/> <set name="isReuseDelayPermanent" val="true"/> <set name="allowInOlympiad" val="false"/> <set name="operateType" val="OP_ACTIVE"/> <set name="isCommon" val="true"/> <set name="transformId" val="306"/> <for> <effect count="1" name="Transformation" time="1800" val="306"> <set order="0x40" stat="STR" val="46"/> <set order="0x40" stat="DEX" val="30"/> <set order="0x40" stat="CON" val="49"/> <set order="0x40" stat="INT" val="50"/> <set order="0x40" stat="WIT" val="20"/> <set order="0x40" stat="MEN" val="45"/> </effect> </for> </skill> вот я так понимаю, что править надо параметр reuseDelay?
  23. centrix

    Откат Скила)

    Доброго времени суток!) Есть вопрос: как увеличить на сервере время отката скила Transform Anakim (сделать 3 часа). В *.xml залазил, ставил reuseDelay=10800. В результате ГС вылетел. Кто что посоветует? Могу кусок кода даже предоставить....
×
×
  • Создать...