Скрипты L2Top
Вот долго ждал пока выложат этот скрипт, нашел сам.
Скрипт полностью рабочий, проверял сам
<tr>
<td valign="top" align="center" class=line_up><table border="0" cellspacing="2" cellpadding="2">
<tr>
<td valign="top"><div class=title_stat>ПОЛУЧЕНИЕ Gold Bar ЗА ГОЛОСОВАНИЕ</div></td>
</tr>
</table>
</td>
</tr>
</table><br />
<?php
$cols_for_vote = 1; // Это количество COL за 1 голос
if (isset($_POST['nick']))
{
$total = 0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$your_ipf = explode(".", $your_ip);
$array = array($your_ipf[0], $your_ipf[1], $your_ipf[2],'xxx');
$your_ip = implode(".", $array);
echo '<b>Ник вашего чара: </b>'.$_POST['nick'].'<br />';
echo '<b>Ваш ip: </b>'.$your_ip.'<br />';
$error = '';
$voters = array();
include 'config/config.php';
$link = mysql_connect($L2JBS_config["mysql_host"], $L2JBS_config["mysql_login"], $L2JBS_config["mysql_password"]) or die("Could not connect : " . mysql_error());
mysql_select_db($L2JBS_config["mysql_db"]) or die("Could not connect : " . mysql_error());
mysql_query ("set NAMES cp1251");
$result = mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '".mysql_escape_string($_POST['nick'])."'");
$row = mysql_fetch_assoc($result);
if ($row == array())//есть ли такой чар вообще
$error .= 'Нет чара с таким именем!<br />';
else
{
$char_id = $row['obj_Id'];
$html = @file_get_contents('http://l2top.ru/?servID=3810&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с l2top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if ($ip == $your_ip)
$voters[] = $matches[2][$id];
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip)."' 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` = 3470");
$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`, `attributes`, `create_time`, `source`, `destination`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", 3470, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1, 'none', NULL, NULL, NULL)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 3470");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".mysql_escape_string($_POST['nick'])."', '".mysql_escape_string($your_ip)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' засчитан!<br/>';
}
else
$error .= 'Голос за '. $time.' уже был засчитан ранее!<br/>';
}
}
else
$error .= 'Вы НЕ голосовали!<br>';
}
}
echo $error.'<b>'.$total.'</b> Gold Bar добавлено вашему чару!<br/><a href="index.php?id=l2top">Назад</a>';
}
else
{
?>
<form method="POST" action="index.php?id=l2top">
<b>1. <a href="http://l2top.ru/?voteme=3810" target="_blank">Проголосуйте на L2Top</a></b>
<br />
<a href="http://l2top.ru/?voteme=3810" target="_blank"><img style="filter:alpha(opacity=50); opacity:0.5; -moz-opacity:0.5;" src="http://l2top.ru/catalog/top.php?id=3810" width="88" height="31" border="0" alt="L2top.ru: Рейитинг-каталог серверов Lineage2" ></a>
<br /><br />
<b>2.</b> Введите ник вашего чара:
<br />
<input type="text" name="nick" maxlength="25">
<br /><br />
<input type="submit" value="Получить Gold Bar">
</form>
<?php
}
?>
Незабываем нажимать спасибо ! )
ResteS: Не в запросе (Insert) проблема, хотя его подправить надо под конкретную сборку. ПРОБЛЕМА В ТОИ, ЧТО НЕ ИЗВЛЕКАЕТСЯ ВРЕМЯ С СТРАНИЦЫ Л2ТОПА.
проблема исправлена
меняем на:
$voters[] = $matches[1][$id+1];
взято с алчитс, автор doubleaxe
вот поправленый для l2emu
<tr>
<td valign="top" align="center" class=line_up><table border="0" cellspacing="2" cellpadding="2">
<tr>
<td valign="top"><div class=title_stat>Как получить Coin Of Luck за голосование?</div></td>
</tr>
</table>
</td>
</tr>
</table>
<p><br />
<?php
$cols_for_vote = 10; // Это количество COL за 1 голос
if (isset($_POST['nick']))
{
$total = 0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$your_ipf = explode(".", $your_ip);
$array = array($your_ipf[0], $your_ipf[1], $your_ipf[2],'xxx');
$your_ip = implode(".", $array);
echo '<b>Ник вашего чара: </b>'.$_POST['nick'].'<br />';
echo '<b>Ваш ip: </b>'.$your_ip.'<br />';
$error = '';
$voters = array();
include 'config/config.php';
$link = mysql_connect($L2JBS_config["mysql_host"], $L2JBS_config["mysql_login"], $L2JBS_config["mysql_password"]) or die("Could not connect : " . mysql_error());
mysql_select_db($L2JBS_config["mysql_db"]) or die("Could not connect : " . mysql_error());
mysql_query ("set NAMES cp1251");
$result = mysql_query("SELECT `charId` FROM `characters` WHERE `char_name` = '".mysql_escape_string($_POST['nick'])."'");
$row = mysql_fetch_assoc($result);
if ($row == array())//есть ли такой чар вообще
$error .= 'Нет чара с таким именем!<br />';
else
{
$char_id = $row['charId'];
$html = @file_get_contents('http://l2top.ru/?servID=5071&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с l2top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if ($ip == $your_ip)
$voters[] = $matches[2][$id];
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip)."' 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` = 4037");
$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.", 4037, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1, 'none', NULL, NULL, NULL)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 4037");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".mysql_escape_string($_POST['nick'])."', '".mysql_escape_string($your_ip)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' засчитан!<br/>';
}
else
$error .= 'Голос за '. $time.' уже был засчитан ранее!<br/>';
}
}
else
$error .= 'Вы НЕ голосовали!<br>';
}
}
echo $error.'<b>'.$total.'</b> Coin Of Luck добавлено вашему чару!<br/><a href="index.php?id=l2top">Назад</a>';
}
else
{
?>
<form method="POST" action="index.php?id=l2top">
<b>1. <a href="http://l2top.ru/?voteme=5071" target="_blank">Проголосуйте за нас на L2Top</a></b>
<br />
<a href="http://l2top.ru/?voteme=5071" target="_blank"><img style="filter:alpha(opacity=50); opacity:0.5; -moz-opacity:0.5;" src="http://l2top.ru/catalog/top.php?id=5071" width="88" height="31" border="0" alt="L2top.ru: Рейитинг-каталог серверов Lineage2" ></a>
<br /><br />
<b>2.</b> Введите ник вашего чара:
<br />
<input type="text" name="nick" maxlength="25">
<br /><br />
<input type="submit" value="Получить Coin Of Luck">
</form>
<?php
}
?>
Dj StaL':Код$result = mysql_query("SELECT MAX(`object_id`)+1 AS `id` FROM `items`");
$row = mysql_fetch_assoc($result);
Данный запрос если переписать, чтобы он не прибавлял +1, а давал именно итем...
Данный запрос определяет какой ID максимальный в базе, чтобы вставить с правильным ID'ом вещь, если она не существует.
А тебе надо, по структуре таблицы items вывести нормально запрос:
Скрипт работает отлично, немного правда с опеределением IP пришлось поиграться:
$dip=explode('.',$your_ip);
$your_ip = $dip[0].'.'.$dip[1].'.'.$dip[2].'.xxx';
А не просто:
А то при сравнении IP, они были не равны, поэтому голоса не считались
— 37
Объясняю как на уроках информатики в школе :D
Необходимо, переменной $name присвоить занчение игрока, которому будем зачислять бонус за голосование. Т.е. вам на страницу, типа так: votes.php?name=Nick_Personaja надо передавать ник персонажа, которому зачисляем. Дальше в скрипте, в самом начале надо вписать, $name=$_GET['name']; т.е. присвоить значение Nick_Personaja переменной $name
MIXER, я писал выше.
Да, кстати, сейчас у меня получилась такая ситуация. На сервере игрок зарегистрирован с ником Nick ввел при голосовании просто nick в итоге его голос не находило. Вот исправление:
изменить:
$voters[] = $matches[1][$id-2];
}
}
на:
$voters[] = $matches[1][$id-2];
}
}
— 37
InShell l2vote script rev 1.0
Идея скрипта: Скрипт предназначен для быстрой и простой раскрутки сервера Lineage.
Алгоритм работы:
1 игрок голосует за ваш сервер, вводя ник своего игрока.
2 скрипт парсит страничку статистики л2топ и добавляет в базу ники игроков, которых следует наградить.
3 скрипт обрабатывает таблицу с игроками, которых надо наградить и награждает их (если персонаж игрока в он-лайне, скрипт выдает поощрительный айтем черз telnet, иначе пишет в mysql базу)
>>>>>>>>>>>>>>>>>>>
1 заливаем l2vote.sql в базу данных гейм сервера
2 правим config.php
3 заливаем файлы из архива на сайт
4 в крон вписываем вызов parce.php и checknew.php (интервал по усмотрению - я ставлю 5 минут)
5 радуемся
Скачать скрипт
И не забываем про спасибо
Автор данного скрипта не я) Я просто им пользуюсь -)
— 39
Мой вариант выложил для "Somesay" (дается по 15 кол голосовавшему, вроде работает тестим)
Запрос
CREATE TABLE `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=latin1;
код (есть места где надо изменить на собственный адрес (адрес вашего сайта))
$cols_for_vote = 15; // Это количество COL за 1 голос
if (isset($_POST['nick']))
{
$total = 0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$your_ipf = explode(".", $your_ip);
$array = array($your_ipf[0], $your_ipf[1], $your_ipf[2],'xxx');
$your_ip = implode(".", $array);
echo '<b>Ник вашего чара: </b>'.$_POST['nick'].'<br />';
$error = '';
$voters = array();
$mysql_host="localhost";
$port='3306';
$mysql_user="пользователь";
$mysql_password="пароль";
$my_database="l2jdb";
$link = mysql_connect($mysql_host,$mysql_user,$mysql_password)
or die("Could not connect : " . mysql_error());
mysql_select_db($my_database) or die("Could not select database");
mysql_query ("set NAMES utf-8");
$result = mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '".mysql_escape_string($_POST['nick'])."'");
$row = mysql_fetch_assoc($result);
if ($row == array())//есть ли такой чар вообще
$error .= 'Нет чара с таким именем!<br />';
else
{
$char_id = $row['obj_Id'];
$html = @file_get_contents('http://l2top.ru/?servID=5084&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с l2top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if ($matches[1][$id]==trim($nick)){
$voters[] = $matches[1][$id-2];
}
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip)."' 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` = 4037");
$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`, `attributes`, `create_time`, `source`, `destination`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", 4037, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1, 'none', NULL, NULL, NULL)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 4037");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".mysql_escape_string($_POST['nick'])."', '".mysql_escape_string($your_ip)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' засчитан!<br/>';
}
else
$error .= 'Голос за '. $time.' уже был засчитан ранее!<br/>';
}
}
else
$error .= 'Вы НЕ голосовали!<br>';
}
}
echo $error.'<b>'.$total.'</b> Coin of Luck добавлено вашему чару!<br/><a href="http://la2earth.ru/index.php?do=static&page=l2top">Назад</a>';
}
else
{
?>
<tr>
<td align="left" class="ntitle">Голосование</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td align="left" valign="top" class="news">Помогая серверу вы так же получаете бонус в размере 15 CoL. <br><br>
<form method="POST" action="http://la2earth.ru/index.php?do=golos">
<b>1. <a href="http://l2top.ru/?voteme=5084" target="_blank">Проголосуйте на L2Top</a></b>
<br />
<br /><br />
<b>2.</b> Введите ник вашего чара:
<br />
<input type="text" name="nick" maxlength="25">
<br /><br />
<input type="submit" value="Я проголосовал!">
</form>
<?php
}
?>
</tr>
<tr>
<td height="240" align="center" valign="top" class="stext">
</br>
$bonus_id='6673'; // ID вещи которую зачисляем игроку как бонус за голосование
$cols_for_vote=1; // Колличество зачисляемых вещей за одно голосование
$host='localhost';
$user='имя_пользователя_бд';
$pass='пароль_пользователя_от_бд';
$db='название_базы_данных';
$mc = mysql_connect($host, $user, $pass);
if($mc){
$db = mysql_select_db ($db);
}
$name='НИК_ПЕРСОНАЖА_КОТОРОМУ_ЗАЧИСЛЯЕМ_БОНУС';
$ch=mq("SELECT obj_Id FROM characters WHERE char_name = '$name';");
$chd=mdata($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=4118&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с L2Top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if (strtolower(trim($matches[1][$id]))==strtolower(trim($name))){
$voters[] = $matches[1][$id-2];
}
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip1)."' 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 .= 'Голос за '. $time.' зачислен.<br/>';
}
else
$error .= 'Голос за '. $time.' уже был зачислен.<br/>';
}
}
else
$error .= 'Ваш голос на сайте L2Top.ru не найден.<br>';
}
}
echo $error.'<br><b>'.$total.'</b> Festival Adena зачислено вашему персонажу!<br/>';
?>
Замените вверху переменный на свои $host, $user, $pass, $db, $name и будет вам счастье.
Перед этим создайте таблицу в БД:
`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=latin1;
Скрипт добавляет итемы в таблицу 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;
У кого не добавляет бонусы, пишите свою структуру таблицы items.
— 37
<tr>
<td valign="top" align="center" class=line_up><table border="0" cellspacing="2" cellpadding="2">
<tr>
<td valign="top"><div class=title_stat>ПОЛУЧЕНИЕ 10 Darktime Coin ЗА ГОЛОСОВАНИЕ</div></td>
</tr>
</table>
</td>
</tr>
</table><br />
<?php
$cols_for_vote = 10; // Это количество COL за 1 голос
if (isset($_POST['nick']))
{
$total = 0;
$your_ip = $_SERVER['REMOTE_ADDR'];
$your_ipf = explode(".", $your_ip);
$array = array($your_ipf[0], $your_ipf[1], $your_ipf[2],'xxx');
$your_ip = implode(".", $array);
echo '<b>Ник вашего чара: </b>'.$_POST['nick'].'<br />';
echo '<b>Ваш ip: </b>'.$your_ip.'<br />';
$error = '';
$voters = array();
include 'config/config.php';
$link = mysql_connect($L2JBS_config["mysql_host"], $L2JBS_config["mysql_login"], $L2JBS_config["mysql_password"]) or die("Could not connect : " . mysql_error());
mysql_select_db($L2JBS_config["mysql_db"]) or die("Could not connect : " . mysql_error());
mysql_query ("set NAMES cp1251");
$result = mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '".mysql_escape_string($_POST['nick'])."'");
$row = mysql_fetch_assoc($result);
if ($row == array())//есть ли такой чар вообще
$error .= 'Нет чара с таким именем!<br />';
else
{
$char_id = $row['obj_Id'];
$html = @file_get_contents('http://l2top.ru/?servID=5348&act=info');
if (!$html || !preg_match_all('/<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с l2top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if ($ip == $your_ip)
$voters[] = $matches[2][$id];
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip)."' 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` = 1165");
$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`, `attributes`, `create_time`, `source`, `destination`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", 1165, ".$cols_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1, 'none', NULL, NULL, NULL)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$cols_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 1165");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".mysql_escape_string($_POST['nick'])."', '".mysql_escape_string($your_ip)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= 'Голос за '. $time.' засчитан!<br/>';
}
else
$error .= 'Голос за '. $time.' уже был засчитан ранее!<br/>';
}
}
else
$error .= 'Вы НЕ голосовали!<br>';
}
}
echo $error.'<b>'.$total.'</b> 10 Darktime Coin добавлено вашему чару!<br/><a href="index.php?id=l2top">Назад</a>';
}
else
{
?>
<form method="POST" action="index.php?id=l2top">
<b>1. <a href="http://l2top.ru/?voteme=5348" target="_blank">Проголосуйте на L2Top</a></b>
<br />
<a href="http://l2top.ru/?voteme=5348" target="_blank"><img style="filter:alpha(opacity=50); opacity:0.5; -moz-opacity:0.5;" src="http://l2top.ru/catalog/top.php?id=3810" width="88" height="31" border="0" alt="L2top.ru: Рейитинг-каталог серверов Lineage2" ></a>
<br /><br />
<b>2.</b> Введите ник вашего чара:
<br />
<input type="text" name="nick" maxlength="25">
<br /><br />
<input type="submit" value="Получить 10 Darktime Coin">
</form>
<?php
}
?>
НА MW отлично пашет!
— 2+2 = ? Оо
Вот вам готовый скрипт, полностью рабочий на описанной мной структуре таблицы items
Дизайн только там под себя приделаете какой вам надо, не стал на этом заморачиваться.
Пароль на архив: la2base.ru
[attachment=1664:l2top.zip]
Исправил зачисление голосов с разных IP. Теперь вроде ОК, тестируйте.
— 37
blastoma: 1 проблем как сделать чтоб на странице с голосованием была автоматом кодировка utf8
После <?php добавь
kosar: Плз исправьте пожалуйста скрипт чтоб выдавал призы по нику а не айпи - ибо меняют айпи и получают докуя. У мя пару человек срубило по 2 к колов когда дается по 15 вот и представьте до чего доходит.
Я же выше выложил новый, где это исправлено. Обнови что у тебя имеется на данный.
— 37
Объединил 3 темы в одну.
Небольшие правила для этой темы:
1. Сообщение типа "Спасибо" - Удаляются, автору +20% к репутации (есть для этого кнопка)
2. Флду - Удаляется +20% к репутации автора
3. Прежде чем задать вопрос, посмотрите весь топик (оставил тока нужные сообщения)
4. Если по пункту 3 вы ничего не нашли, юзаем поиск и только по том оставляем свой вопрос.
PS: По остальным вопросам, Автору в ПМ или в ICQ. ![]()
Главная ошибка одится в полуметре от монитора...
В скрипте от Лекса баг есть, что можно получать в двойном объеме:
Делается так, имеем колы в инветаре и варехаузе - идут туда и туда)
поправил:
Проблему решил на 50% Сори кого ввел в заблуждение
Нужно использовать именно такой синтаксис моего фикса, иначе не выдает колы. Оставшиеся 50% заключаются в том что действительно каким то образом читает формат айпи с л2топ если формат не ххх.ххх.ххх.ххх колы не выдает. как исправить? Или намекните где находится, исправлю сам.
kosar: Проблему решил на 50% Сори кого ввел в заблуждение
Нужно использовать именно такой синтаксис моего фикса, иначе не выдает колы. Оставшиеся 50% заключаются в том что действительно каким то образом читает формат айпи с л2топ если формат не ххх.ххх.ххх.ххх колы не выдает. как исправить? Или намекните где находится, исправлю сам.
ТУТ не че не делай оставь как было в оригинальном скрипте правь вот тут
$result = mysql_query("SELECT * FROM `items` WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 9142 AND 'loc' = inventory");
$row = mysql_fetch_assoc($result);
if ($row == array())
И будет приходить только в инвентарь, кому помог дайте спасибку)
— 10
А нет все, я исправил уже, вот кому надо для l2emu:
<?
#Copyright автора не известен
#Edit By "Slastik" 3.12.2008
if(!isset($_POST['name'])){
echo '<form action="index.php?t=core&f=l2top" method="post">';
echo '
<b>1. <a href="http://l2top.ru/?voteme='.$id_l2top.'" target="_blank">Проголосуйте на L2Top</a></b>
<br />
<a href="http://l2top.ru/?voteme='.$id_l2top.'" target="_blank">
<img style="filter:alpha(opacity=50); opacity:0.5; -moz-opacity:1.0;" src="http://l2top.ru/vb/'.$id_l2top.'.pgif" width="88" height="31" border="0" alt="L2top.ru: Рейтинг-каталог серверов Lineage2"></a>
<br /><br />
<b>2. Введите ник персонажа<br/>
<input type="text" name="name"/><br/><br/>
<input type="submit" class="but" value="Получить бонус"/>
</form>';
}else{
$bonus_id=4037; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=5; // Колличество зачисляемых вещей за одно голосование
$id_l2top=0000; // Ваш ID в рейтинге L2Top
$host='хост'; // сервер на котором установлена база данных L2J
$user='логин'; // имя пользователя от базы данный
$pass='пасс'; // пароль пользователя от базы данный
$db='база'; // название базы данных
$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 charId FROM characters WHERE char_name = '$name';");
$chd=mysql_fetch_assoc($ch);
$char_id=$chd['charId'];
$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='.$id_l2top.'&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` = ".$bonus_id." AND `loc`='INVENTORY';");
$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, NULL, 0, 0, -1)");
данный запрос необходимо переделывать взависимости от того, какая структура таблицы items у вас на сборке сервера. Данный запрос отвечает за добавление бонусной вещи за голосование в инвентарь, если у вас её еще нет.
*/
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` = ".$bonus_id." AND `loc`='INVENTORY';");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".$name."', '".mysql_escape_string($your_ip1)."', '".mysql_escape_string($time)."')");
$total += $cols_for_vote;
$error .= '<font color="green">Голос за '. $time.' засчитан.</font><br/>';
}
else
$error .= '<font color="red">Голос за '. $time.' уже был засчитан ранее.</font><br/>';
}
}
else
$error .= '<font color="red">Ваш голос на сайте L2Top.ru не найден.</font><br>';
}
echo $error.'<br><b><font color="red">'.$total.'</font></b> CoL зачислено вашему персонажу!<br/>';
}
?>
— I am DJ
Вот скрипт голосования для l2f (можно переделать структуру под любую сборку) с исправленым багом получения поощрения в двойном размере скрипт
1.Создаём в корне сайта файл "l2top.php"
2.Туда пихаем вот ето:
if(!isset($_POST['name'])){
echo '<form action="l2top.php" method="post">';
echo 'Ник персонажа<br/>
<input type="text" name="name"/><br/><br/>
<input type="submit" value="Получить бонус"/>
</form>';
}else{
$bonus_id=6673; // ID вещи которую зачисляем игроку как бонус за голосование | По умолчанию 6673 - Festival Adena
$cols_for_vote=2; // Колличество зачисляемых вещей за одно голосование
$id_l2top=5086; // Ваш ID в рейтинге L2Top
$host='localhost'; // сервер на котором установлена база данных L2J
$user='логин'; // имя пользователя от базы данный
$pass='пасс'; // пароль пользователя от базы данный
$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='.$id_l2top.'&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> Festival Adena зачислено вашему персонажу!<br/>';
}
?>
3.В базу заливаем вот ето:
`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=latin1;
4.Радуемся,и ТЫКАЕМ МНЕ СПАСИБКИ!!!!!!
На сборке la2base 1.1.6 100% работает!!!
— Оо
-=[BloodKill]=- Маленькая поправка в скрипте.
код
надо заменить на
т.к. ИД мы же сами задаем нашего айтема, а в первом случаи он быд жеско установлен на ФА что не верно.








![-=[BloodKill]=-](/uploads/fotos/av-39301.jpg)