Не работает скрипт автоматического поощрения л2топ
Переделал скрипт получения бонуса из обычного(ввел ник - получил бонус) в автоматический(крон запускает, скрипт раздает бонусы), но где-то накосячил, о выдаче бонуса и говорить не приходится ибо скрипт даже данные в таблицу голосов не записывает, очень прошу ткнуть пальцем где косяк =) вот собственно сам скрипт, файл конфига я разумеется не выкладываю ибо не имеет смысла:
<?
require_once 'config.php';
connect();
//проверки char_id_ar теперь смысла не имеют, просто так их оставил чтобы не испортить скрипт
$char_id_ar=mysql_fetch_assoc(mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = 'admin';"));
if($char_id_ar!=array())
{
$char_id_ar=mysql_fetch_assoc(mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = 'admin';"));
if($char_id_ar!=array())
{
$bonus_id_sql=mysql_escape_string($config['bonus_id']);
$numberous_sql=mysql_escape_string($config['numberous']);
$html=@file_get_contents($config['url_info']);
if ($html && preg_match_all('/([^\s]+)/', $html, $matches))
{
foreach ($matches[1] as $id => $nick)
{
$voters[]=$matches[1][$id-2];
}
if ($voters!=array())
{
foreach ($voters as $time)
{
$char_id_arr=mysql_fetch_assoc(mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '$nick';"));
$char_id_sql=mysql_escape_string($char_id_arr['obj_Id']);
$time_sql=mysql_escape_string($time);
$array=mysql_fetch_assoc(mysql_query("SELECT * FROM `character_vote1` WHERE `char_name` = '$nick' AND `date` = '$time_sql';"));
if ($array == array())
{
$SQL=mysql_query("INSERT INTO `items_delayed` (`owner_id`, `item_id`, `count`, `enchant_level`, `flags`, `payment_status`, `description`)
VALUES('$char_id_sql', '$bonus_id_sql', '$numberous_sql', '0', '0', '0', 'L2Top')");
}
if ($SQL)
{
mysql_query("INSERT INTO `character_vote1` (`char_name`, `date`, `osn`) VALUES ('$nick', '$time', 'L2Top');");
}
?>
xLaPax: Ув. поделись авто голосовалкой:) давно в поисках етого скрипта
Если кто-нибудь поможет довести его до рабочего состояния конешн выложу, мне не жалко, но пока неработает т.ч. смысла скидывать нету =)
А чем тебе готовый скрипт не нравится?
То о чем ты говоришь должно правильно парсить страницу топа и вносить изменения в БД, а твой лишь поверхностно ищит совпадения буковок.
На Форуме я тоже Radar!
Я везде Radar!
http://la2base.ru/forum/index.php?showtopic=32941
Там немного староват, но изменить под себя проще чем воять заново))
На Форуме я тоже Radar!
Я везде Radar!
Radar: http://la2base.ru/forum/index.php?showtopic=32941
Там немного староват, но изменить под себя проще чем воять заново))
ех.... облом полний, сылка уже бита на дамп (_dump.ru/file/1464426 Запрошенный файл удален)
Radar: http://la2base.ru/forum/index.php?showtopic=32941
Там немного староват, но изменить под себя проще чем воять заново))
Нет, мне проще мой рабочий под себя переделать ибо тот скрипт который даешь ты я уже качал и он берет данные старым способом(со страницы топ 50 голосов), а мне нужно новым, кароче я поколдовал и вот новый вариант, тут уже я точно знаю что трабла где-то в выборке голосов непосредственно из топа, а вот где понять немогу, часть кода выдрано из hellevil последнего, мб от этого и неработает, кароче вот сам код, надеюсь на вашу помощь:
<?
require_once 'config.php';
connect();
$limit = true;
$limit_count = intval($config['limit']);
$prefixList = array_map("trim", explode(",", $la2config["l2top"]["prefix_list"]));
$bonus_id_sql=mysql_escape_string($config['bonus_id']);
$numberous_sql=mysql_escape_string($config['numberous']);
$html=@file_get_contents(htmlspecialchars_decode($config['url_info']));
if (preg_match_all("#([0-9]{4}\-[0-9]{2}\-[0-9]{2}\s+[0-9]{2}:[0-9]{2}\:[0-9]{2})\t+([0-9a-zA-Z \-\=]*)#",$html,$matches)) {
for($i = 0; $i < count($matches[1]); $i++) {
$time = substr($dbl->escape($matches[1][$i]),0,20);
if (preg_match("#([a-zA-Z0-9]+)\-([a-zA-Z0-9 -]*)#", $matches[2][$i], $char_matches)) {
if (($server = array_search($char_matches[1])) === false) {
$server = intval($char_matches[1]);
}
$nick = $dbl->escape(substr($char_matches[2],0,30));
} else {
$server = "0";
$nick = $dbl->escape(substr($matches[2][$i],0,30));
}
if (isset($dbg[$server]) == false) {
$server = "0";
}
if ($nick != "") {
$char_id_arr=mysql_fetch_assoc(mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '$nick';"));
$char_id_sql=mysql_escape_string($char_id_arr['obj_Id']);
$time_sql=mysql_escape_string($time);
$array=mysql_fetch_assoc(mysql_query("SELECT * FROM `character_vote1` WHERE `char_name` = '$nick' AND `date` = '$time_sql';"));
if ($array == array())
{
$SQL=mysql_query("INSERT INTO `items_delayed` (`owner_id`, `item_id`, `count`, `enchant_level`, `flags`, `payment_status`, `description`)
VALUES('$char_id_sql', '$bonus_id_sql', '$numberous_sql', '0', '0', '0', 'L2Top')");
}
if ($SQL)
{
mysql_query("INSERT INTO `character_vote1` (`char_name`, `date`, `osn`) VALUES ('$nick', '$time', 'L2Top');");
}
}
}
}
?>
Мне кажется не работает из за этой хрени $dbl->, похоже что это значение берется из hellevil модуля а тут разумеется ему взяться не от куда...но мб это и не единственная трабла...а как убрать $dbl-> я тоже не в курсе...
Кароче говоря скрипт я сделал, все работает, зашарил на сайте, кому нужен ждите когда промодерируют новость. Должен подойти для любой сборки т.к. работает на таблице items_delayed, а она во всех сборках на сколько я знаю одинаковая.
Crystallon: Кароче говоря скрипт я сделал, все работает, зашарил на сайте, кому нужен ждите когда промодерируют новость. Должен подойти для любой сборки т.к. работает на таблице items_delayed, а она во всех сборках на сколько я знаю одинаковая.
Ну во-первых таблица есть только на сборках основанных на Ребе, а во-вторых сказал бы сразу чего хочешь)) я б тебе готовое дал)
Выложат на сайте глянем.
На Форуме я тоже Radar!
Я везде Radar!
Radar: Ну во-первых таблица есть только на сборках основанных на Ребе, а во-вторых сказал бы сразу чего хочешь)) я б тебе готовое дал)
Выложат на сайте глянем.
А я думал на всех :D
З.Ы. Походу мою новость не пропустили...
Вот архив: _http://dump.ru/file/3873054
Пароль: www.la2base.ru
Скрипт с парсом последних 500 голосов?
Правильно понял?
На Форуме я тоже Radar!
Я везде Radar!
Подредактировал код, так, что если у персонажа есть уже итем, то он прибовляет к их числу, а если итема нет, то чтобы не возникало проблем с object_id присваиваем ему новое.
Vo1N: Подредактировал код, так, что если у персонажа есть уже итем, то он прибовляет к их числу, а если итема нет, то чтобы не возникало проблем с object_id присваиваем ему новое.
Мда, ты важное дело сделал...
Ты в курсе что такое таблица items_delayed?
И что интересно знать ты там подредактировал?
Никаких object_id там нет, и через эту таблицу итем попадает к персу в инвентарь не зависимо от того есть такое в его инвентаре или нет, а так же пофигу онлайн перс или оффлайн!
На Форуме я тоже Radar!
Я везде Radar!
Не везде есть таблица "items_delayed".
У меня выдает через обычную таблицу итемов, поэтому там и нужно использовать object_id.
В моем случае итем тоже попадет к чару независимо в игре он или нет.
Я не про это, я про то что ты из скрипта выложенного выше сделал обычный скрипт коих на форуме как котят не резаных.
И таким образом это говорит лишь о том что пытаешься заработать "спасибо".
И за одно расскажи как он попадет чару если он в игре?
На Форуме я тоже Radar!
Я везде Radar!
Во-первых, автору скрипта огромное спасибо.
Во-вторых, то, что ты говоришь, что я якобы "сделал обычный скрипт коих на форуме как котят не резаных" это канечно гон, я все эти скрипты ставил и все они не работали так как нужно...
В-третьих, благодаря скрипту предложенным Crystallon, я добавил пару строк из другого скрипта в итоге получил, то, что я так давно искал.
В-четвертых, уж незнаю какую привилегию дают эти спасибки, но мне они как-то не очень нужны, просто хочется, чтобы хоть так сказали спасибо.
В-пятых, насчет того, как итемы попадут в рюкзак даже если игрок в игре. Если игрок релогнится, то в его рюкзаке появятся эти итемы, вот и всего-то.



