Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/L2Top и системы поощрения/Скрипт голосования L2top
Search

Скрипт голосования L2top

4 replies214 viewsCurrently viewing: 1
S
semiromid
· 11/19/2009, 12:06 PM

Помогите разобратся .Голосую по этому скрипту ,голоса заносятся в таблицу Бд "L2top".Но в инвентарь игроку не добовляются вещь.

Запрос Бд .

Код
<style>
body {
  margin: 0px;
  margin-left:10px;
  font-family:arial,sans-serif;
  background-color: #ffffff;
  font-size: 80%;
}

.header {
    font-family:"Times New Roman", Times, serif;
    font-size:23px;
    text-align:;
    border-bottom:1px solid #000;
    font-weight:bold;

}
.login_box{
    width:200px;
    height:200px;
    margin-left:10px;
    margin-top:10px;
    background:#ddf8cc;
    border:1px solid #bbbbbb;
    
    
    }
.login_text{
    font-family:Arial, Helvetica, sans-serif;
    font-size:16px;
    
    }
.base_text{
    margin-left:15px;
    font-size:15px;
    
    }
.exit{
    margin-left:10px;
    margin-top:10px;
    text-align:center;
    background:#ddf8cc;
    border:1px solid #bbbbbb;
    
    
    }

</style>
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251">


<br>
<?
if(!isset($_POST['name']))

{
echo "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
</table><br><br>";
echo "<table  width='70%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='login_box'><center>
    <span class= 'login_text'>1. Проголосуйте на L2Top</span><br>
    <a href='http://l2top.ru/vote/1/' target='_blank'><img src='http://l2top.ru/vb/1.pgif' width='88' height='31' border='0' alt='L2top.ru: Рейтинг-каталог серверов Lineage2'></a><p>
    <form action='index.php?id=l2top' method='post'>
    2. Введите ник персонажа<br/>
      <input type='text' name='name'/><br/><br/>
      <input type='submit' value='Получить бонус'/>
      </form>
    </td>
    <td width='5%'></td>
<td class ='base_text'>

<span>Важно: для правильного зачисления ник персонажа должен соответстовать нику в игре<br>
<strong><li>Ник чара A-Za-z.</strong><br> Ваш чар не должен содержать спец символов.<br>
<strong><li>Оффлайн</strong><br>
Для зачисления бонуса ваш чар должен находится <font color='red'><strong>off-line</strong></font>.<br>





</td>
  </tr>
</table>
";




}else{

$id_l2top=xxxx; // Ваш ID в рейтинге L2Top
$bonus_id=4037; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=10; // Колличество зачисляемых вещей за одно голосование

$host='xxxxxxxx'; // сервер на котором установлена база данных L2J
$user='xxxxxxxx'; // имя пользователя от базы данный
$pass='xxxxxxxx'; // пароль пользователя от базы данный
$db='xxxxxxxxxx'; // название базы данных

$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/info/'.$id_l2top.'/');
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)");
}
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 .= "

<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
</table><br><br>
<table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td>Голос за ". $time." зачислен.<br/>
    <br><b>".$total."</b> Евро зачислено вашему персонажу!<br/>
    </td></tr></table>";
}
else
$error .= "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
  
  <table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr><br><br>
    <td>
  
  Голос за ". $time." уже был зачислен.<br/></td></tr></table>";
}
}
else
$error .= "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
  
  <table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr><br><br>
    <td>
  Ваш голос на сайте L2Top.ru не найден.<br></td></tr></table>";
}

echo $error."";

}
?>
</center>



Моя таблица items

Код
-- -------------------------
-- Table structure for 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(5,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`)
) DEFAULT CHARSET=utf8;


Тестил все на Денвери.

0
defense
defense

User

Новичок

Posts: 11

На форуме с: 11/18/2009

Рейтинг: 0

· 11/19/2009, 12:27 PM

Полагаю, ошибка в этом куске:

Код
if ($row == array())
{
$result = mysql_query("SELECT * FROM `items` WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673"); // Них... не понял, причем тут Festival Adena? Нелогичный запрос. Т.е. по сути, если у чара нету фестиваль адены, запрос на добавление итема (4037, 10) выполняться не будет.

$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, '', 0, 0, -1)"); // я бы добавил в конце: or die(mysql_error());
}
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 .= "

<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
</table><br><br>
<table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td>Голос за ". $time." зачислен.<br/>
    <br><b>".$total."</b> Евро зачислено вашему персонажу!<br/>
    </td></tr></table>";
}

0
S
semiromid
· 11/19/2009, 02:09 PM

Переделал Вот смотри .

Сам скрипт .

Код
[<style>
body {
  margin: 0px;
  margin-left:10px;
  font-family:arial,sans-serif;
  background-color: #ffffff;
  font-size: 80%;
}

.header {
    font-family:"Times New Roman", Times, serif;
    font-size:23px;
    text-align:;
    border-bottom:1px solid #000;
    font-weight:bold;

}
.login_box{
    width:200px;
    height:200px;
    margin-left:10px;
    margin-top:10px;
    background:#ddf8cc;
    border:1px solid #bbbbbb;
    
    
    }
.login_text{
    font-family:Arial, Helvetica, sans-serif;
    font-size:16px;
    
    }
.base_text{
    margin-left:15px;
    font-size:15px;
    
    }
.exit{
    margin-left:10px;
    margin-top:10px;
    text-align:center;
    background:#ddf8cc;
    border:1px solid #bbbbbb;
    
    
    }

</style>
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251">


<br>
<?
if(!isset($_POST['name']))

{
echo "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
</table><br><br>";
echo "<table  width='70%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='login_box'><center>
    <span class= 'login_text'>1. Проголосуйте на L2Top</span><br>
    <a href='http://l2top.ru/vote/1/' target='_blank'><img src='http://l2top.ru/vb/1.pgif' width='88' height='31' border='0' alt='L2top.ru: Рейтинг-каталог серверов Lineage2'></a><p>
    <form action='index.php?id=l2top' method='post'>
    2. Введите ник персонажа<br/>
      <input type='text' name='name'/><br/><br/>
      <input type='submit' value='Получить бонус'/>
      </form>
    </td>
    <td width='5%'></td>
<td class ='base_text'>

<span>Важно: для правильного зачисления ник персонажа должен соответстовать нику в игре<br>
<strong><li>Ник чара A-Za-z.</strong><br> Ваш чар не должен содержать спец символов.<br>
<strong><li>Оффлайн</strong><br>
Для зачисления бонуса ваш чар должен находится <font color='red'><strong>off-line</strong></font>.<br>





</td>
  </tr>
</table>
";




}else{

$id_l2top=xxxx; // Ваш ID в рейтинге L2Top
$bonus_id=6673; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=10; // Колличество зачисляемых вещей за одно голосование

$host='xxxxx'; // сервер на котором установлена база данных L2J
$user='xxxxx'; // имя пользователя от базы данный
$pass='xxxxx'; // пароль пользователя от базы данный
$db='xxxxxx'; // название базы данных

$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/info/'.$id_l2top.'/');
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`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`, `attributes`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, 0, -1, 0 )");
}
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 .= "

<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
</table><br><br>
<table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td>Голос за ". $time." зачислен.<br/>
    <br><b>".$total."</b> Евро зачислено вашему персонажу!<br/>
    </td></tr></table>";
}
else
$error .= "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
  
  <table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr><br><br>
    <td>
  
  Голос за ". $time." уже был зачислен.<br/></td></tr></table>";
}
}
else
$error .= "<table width='90%' align ='right' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class ='header'>Проголосуй за сервер и получи Бонус
    </td>
  </tr>
  
  <table class='exit' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr><br><br>
    <td>
  Ваш голос на сайте L2Top.ru не найден.<br></td></tr></table>";
}

echo $error."";

}
?>
</center>/code]

Таблица items БД
[code]-- -------------------------
-- Table structure for 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,
  `time_of_use` int(11) DEFAULT NULL,
  `custom_type1` int(11) DEFAULT '0',
  `custom_type2` int(11) DEFAULT '0',
  `mana_left` decimal(5,0) NOT NULL DEFAULT -1,
  `attributes` varchar(50) DEFAULT '',
  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`)
) DEFAULT CHARSET=utf8;


Итем записывается в таблицу L2top в БД ,но в таблицу items не как не хочет записыватся ((((.
У меня в БД items последняя таблмца пустая `attributes`,что вот сюда
Код
mysql_query("INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`, `attributes`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", $bonus_id, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, 0, -1, 0 )");
надо вписывать если она пустая ,нолик ?

Что здесь может быть не так ??

0
The-Ice
The-Ice

User

Бывалый

Posts: 284

На форуме с: 08/17/2008

Репутация: +98

Рейтинг: 0

· 12/15/2009, 06:36 PM

Если пустая то NULL

0
Войдите или зарегистрируйтесь чтобы ответить