[question]Плиз скрочно
4 ответов68 просмотровСейчас просматривают: 1
· 08.05.2009, 09:03
Сборка: IT, La2base, 1.1.7
Краткое изложение СУТИ проблемы: Приз за голоса в L2top на веб обвязке от S.T.R.E.S.
Вопрос: Короче 1 человек голосует 1 раз потом жмет получить приз вводит ник и получает 350кол потом жмет опять получить вводит ник и опять 350кол и Т.Д и все это при том что он голосовал 1 раз!!!Как это исправить?????
Мои соображения по этому поводу: Без понятия с L2Top не оч((
0
· 08.05.2009, 09:44
скорее всего эт происходит потому что у тебя не ведется учет игроков получивших бонус, посмотри у тебя в базе ест таблица l2top????
0
· 08.05.2009, 11:20
Раскрывающийся текст
<center></center><br><center style="color: rgb(51, 204, 0);"><font size="4">Чтобы получить бонус за голосование нужно:</font></center><center><br style="color: rgb(102, 102, 204);"><font size="3"><span style="color: rgb(102, 102, 204);">*Проголосовать на л2топ</span></font><br><a href="http://l2top.ru/?voteme=6864" target="_blank"><img style="width: 76px; height: 26px;" ilo-full-src="http://l2top.ru/vb/6950.pgif" src="http://l2top.ru/vb/6950.pgif" alt="L2top.ru: Рейтинг-каталог серверов Lineage2" border="0"></a><br></center><center><div style="text-align: center;"><span style="color: rgb(204, 51, 204);"></span><span style="color: rgb(204, 51, 204);"><br>*Выйти из игры</span><br></div><br><span style="color: rgb(255, 0, 0);">*Нажать на кнопку</span><br style="color: rgb(255, 0, 0);"></center><div style="text-align: center;"><span style="color: rgb(255, 0, 0);">Получить бонус</span><br> </div><center>
<br>
<?
#Copyright автора не известен
#Moded by Lex 3.11.08
/*
Для работы скрипта необходимо создать таблицу:
CREATE TABLE IF NOT EXISTS `l2top` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nick` varchar(30) NOT NULL,
`ip` varchar(20) NOT NULL,
`time` varchar(20) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Скрипт полностью функционирует на данной структуре таблицы items:
CREATE TABLE IF NOT EXISTS `items` (
`owner_id` int(11) DEFAULT NULL,
`object_id` int(11) NOT NULL DEFAULT '0',
`item_id` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`enchant_level` int(11) DEFAULT NULL,
`loc` varchar(10) DEFAULT NULL,
`loc_data` int(11) DEFAULT NULL,
`price_sell` int(11) DEFAULT NULL,
`price_buy` int(11) DEFAULT NULL,
`time_of_use` int(11) DEFAULT NULL,
`custom_type1` int(11) DEFAULT '0',
`custom_type2` int(11) DEFAULT '0',
`mana_left` decimal(3,0) NOT NULL DEFAULT '-1',
PRIMARY KEY (`object_id`),
KEY `key_owner_id` (`owner_id`),
KEY `key_loc` (`loc`),
KEY `key_item_id` (`item_id`),
KEY `key_time_of_use` (`time_of_use`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
if(!isset($_POST['name'])){
echo '<form action="http://91.146.45.182/index.php?id=l2top" method="post">';
echo 'Ник персонажа<br/>
<input type="text" name="name"/><br/><br/>
<input type="submit" value="Получить бонус"/>
</form>';
}else{
$bonus_id=4037; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=25; // Колличество зачисляемых вещей за одно голосование
$id_l2top=6468; // Ваш ID в рейтинге L2Top
$host='localhost'; // сервер на котором установлена база данных L2J
$user='root'; // имя пользователя от базы данный
$pass='root'; // пароль пользователя от базы данный
$db='l2jdb'; // название базы данных
$mc = mysql_connect($host, $user, $pass);
if($mc){
$db = mysql_select_db ($db);
}
if(!$mc || !$db){
echo 'Нет соединения с базой данных.';
exit;
}
$name=mysql_escape_string($_POST['name']);
$ch=mysql_query("SELECT obj_Id FROM characters WHERE char_name = '$name';");
$chd=mysql_fetch_assoc($ch);
$char_id=$chd['obj_Id'];
$total=0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$dip=explode('.',$your_ip);
$your_ip1 = $dip[0].'.'.$dip[1].'.'.$dip[2].'.xxx';
$html = @file_get_contents('http://l2top.ru/?servID=6864&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с L2Top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $nick)
{
if (strtolower(trim($nick))==strtolower(trim($name))){
$voters[] = $matches[1][$id-2];
}
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `nick` = '".mysql_escape_string($name)."' AND `time` = '".mysql_escape_string($time)."'");
$row = mysql_fetch_assoc($result);
if ($row == array())
{
$result = mysql_query("SELECT * FROM `items` WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673");
$row = mysql_fetch_assoc($result);
if ($row == array())
{
$result = mysql_query("SELECT MAX(`object_id`)+1 AS `id` FROM `items`");
$row = mysql_fetch_assoc($result);
$ins_id = $row['id'];
/*
mysql_query("INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1)");
данный запрос необходимо переделывать взависимости от того, какая структура таблицы items у вас на сборке сервера. Данный запрос отвечает за добавление бонусной вещи за голосование в инвентарь, если у вас её еще нет.
*/
mysql_query("INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".$name."', '".mysql_escape_string($your_ip1)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' зачислен.<br/>';
}
else
$error .= 'Голос за '. $time.' уже был зачислен.<br/>';
}
}
else
$error .= 'Ваш голос на сайте L2Top.ru не найден.<br>';
}
echo $error.'<br><b>'.$total.'</b> Coin(s) of Luck зачислено вашему персонажу!<br/>';
}
?>
</center>
<br>
<?
#Copyright автора не известен
#Moded by Lex 3.11.08
/*
Для работы скрипта необходимо создать таблицу:
CREATE TABLE IF NOT EXISTS `l2top` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nick` varchar(30) NOT NULL,
`ip` varchar(20) NOT NULL,
`time` varchar(20) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Скрипт полностью функционирует на данной структуре таблицы items:
CREATE TABLE IF NOT EXISTS `items` (
`owner_id` int(11) DEFAULT NULL,
`object_id` int(11) NOT NULL DEFAULT '0',
`item_id` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
`enchant_level` int(11) DEFAULT NULL,
`loc` varchar(10) DEFAULT NULL,
`loc_data` int(11) DEFAULT NULL,
`price_sell` int(11) DEFAULT NULL,
`price_buy` int(11) DEFAULT NULL,
`time_of_use` int(11) DEFAULT NULL,
`custom_type1` int(11) DEFAULT '0',
`custom_type2` int(11) DEFAULT '0',
`mana_left` decimal(3,0) NOT NULL DEFAULT '-1',
PRIMARY KEY (`object_id`),
KEY `key_owner_id` (`owner_id`),
KEY `key_loc` (`loc`),
KEY `key_item_id` (`item_id`),
KEY `key_time_of_use` (`time_of_use`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
if(!isset($_POST['name'])){
echo '<form action="http://91.146.45.182/index.php?id=l2top" method="post">';
echo 'Ник персонажа<br/>
<input type="text" name="name"/><br/><br/>
<input type="submit" value="Получить бонус"/>
</form>';
}else{
$bonus_id=4037; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=25; // Колличество зачисляемых вещей за одно голосование
$id_l2top=6468; // Ваш ID в рейтинге L2Top
$host='localhost'; // сервер на котором установлена база данных L2J
$user='root'; // имя пользователя от базы данный
$pass='root'; // пароль пользователя от базы данный
$db='l2jdb'; // название базы данных
$mc = mysql_connect($host, $user, $pass);
if($mc){
$db = mysql_select_db ($db);
}
if(!$mc || !$db){
echo 'Нет соединения с базой данных.';
exit;
}
$name=mysql_escape_string($_POST['name']);
$ch=mysql_query("SELECT obj_Id FROM characters WHERE char_name = '$name';");
$chd=mysql_fetch_assoc($ch);
$char_id=$chd['obj_Id'];
$total=0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$dip=explode('.',$your_ip);
$your_ip1 = $dip[0].'.'.$dip[1].'.'.$dip[2].'.xxx';
$html = @file_get_contents('http://l2top.ru/?servID=6864&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с L2Top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $nick)
{
if (strtolower(trim($nick))==strtolower(trim($name))){
$voters[] = $matches[1][$id-2];
}
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `nick` = '".mysql_escape_string($name)."' AND `time` = '".mysql_escape_string($time)."'");
$row = mysql_fetch_assoc($result);
if ($row == array())
{
$result = mysql_query("SELECT * FROM `items` WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673");
$row = mysql_fetch_assoc($result);
if ($row == array())
{
$result = mysql_query("SELECT MAX(`object_id`)+1 AS `id` FROM `items`");
$row = mysql_fetch_assoc($result);
$ins_id = $row['id'];
/*
mysql_query("INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1)");
данный запрос необходимо переделывать взависимости от того, какая структура таблицы items у вас на сборке сервера. Данный запрос отвечает за добавление бонусной вещи за голосование в инвентарь, если у вас её еще нет.
*/
mysql_query("INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".$name."', '".mysql_escape_string($your_ip1)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' зачислен.<br/>';
}
else
$error .= 'Голос за '. $time.' уже был зачислен.<br/>';
}
}
else
$error .= 'Ваш голос на сайте L2Top.ru не найден.<br>';
}
echo $error.'<br><b>'.$total.'</b> Coin(s) of Luck зачислено вашему персонажу!<br/>';
}
?>
</center>
Используй этот скрипт.
0
Войдите или зарегистрируйтесь чтобы ответить



