Нужна помощь по скрипту.
2 ответов162 просмотровСейчас просматривают: 1
· 22.10.2008, 13:04
Код
<?php
}
$lang["teleport"][0] = "Персонаж '%' перенесён в ближайший город";
$lang["teleport"][1] = "Сервис отключен";
$lang["teleport"][2] = "Персонаж '%' должен быть в офф-лайне";
$lang["teleport"][3] = "Сервисом можно пользоваться раз в ".$config["teleport"]["refuse"]." минут";
$lang["teleport"][4] = "Неверный ID персонажа";
$lang["teleport"][5] = "Персонаж '%' в тюрьме";
$lang["teleport"][6] = "Персонаж '%' забанен";
$lang["password"][0] = "Пароль успешно сменен";
$lang["password"][1] = "Пароль введен не верно";
$lang["password"][2] = "Подтверждение нового пароля не правильно";
$lang["password"][3] = "Пароль должен быть не меньше 4, но не более 16 символов";
$lang["password"][4] = "Ошибка базы данных";
// Функция для добавления предмета в базу
function GetCoin($id, $item_id, $item_count = 1) {
global $dbg,$SERVER;
$query = $dbg[$SERVER]->sql_query($sql="SELECT object_id, count FROM `items` WHERE owner_id = '".$id."' AND item_id='".$item_id."' AND loc='INVENTORY' ORDER BY count DESC LIMIT 1");
$object_id = $dbg[$SERVER]->result($query,0);
$count = $dbg[$SERVER]->result($query,1);
if (intval($count)==0) {
$query = $dbg[$SERVER]->sql_query("SELECT MAX(`object_id`)+1 FROM `items`");
$object_id = $dbg[$SERVER]->result($query,0);
do {
$dbg[$SERVER]->sql_query("INSERT items (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `mana_left`) VALUES (".$id.", ".$object_id.", '".$item_id."', ".$item_count.", 0, 'INVENTORY', 0, 0, 0, 'NULL', -1)");
$object_id++;
$error = $dbg[$SERVER]->sql_error();
$error = $error["code"];
} while ($error!=0);
} else {
$dbg[$SERVER]->sql_query("UPDATE items SET count = '".($count+$item_count)."' WHERE object_id = '".$object_id."'");
}
}
/********************************************************************/
/* */
/* Авторизация */
/* */
/********************************************************************/
$account_data = array();
unset($login);
unset($password);
if (!($config['guest']['account']&&empty($member_id['name']))) {
// Авторизация
if (isset($_REQUEST["action"])&&$_REQUEST["action"]=="login") {
$login = mysql_escape_string(substr($_REQUEST['l2login'], 0, 32));
$password = md5(base64_encode(pack('H*', sha1(substr($_REQUEST['l2password'], 0, 32)))).$_SERVER['REMOTE_ADDR']);
// Выход
} elseif (isset($_REQUEST["action"])&&$_REQUEST["action"]=="exit") {
setcookie("l2login", "", time()-$config["sess_time"], "/");
setcookie("l2hash", "", time()-$config["sess_time"], "/");
// Проверка сессии
} else {
$login = mysql_escape_string(substr($_COOKIE['l2login'], 0, 32));
$password = substr($_COOKIE['l2hash'], 0, 32);
}
if ($_REQUEST["action"]!="exit"&&!empty($login)) {
$query = $dbl->sql_query("SELECT * FROM accounts WHERE login='".$login."' LIMIT 1");
$account_data = $dbl->sql_fetchrow($query);
if ($account_data) {
$account_data['password'] = md5($account_data['password'].$_SERVER['REMOTE_ADDR']);
}
}
if ($dbl->sql_numrows($query)!=1||$account_data['password']!=$password) {
if ($_REQUEST["action"]=="login") {
$error_msg = "Ошибка при авторизации";
}
setcookie("l2login", "", time()-$config["sess_time"], "/");
setcookie("l2hash", "", time()-$config["sess_time"], "/");
unset($account_data);
} else {
setcookie("l2login", $login, time()+$config["sess_time"], "/");
setcookie("l2hash", $password, time()+$config["sess_time"], "/");
}
}
unset($login);
unset($password);
/********************************************************************/
/* */
/* Вывод */
/* */
/********************************************************************/
if (($account_data["login"]=="") || ($config['guest']['account']&&empty($member_id['name']))) {
$menu = "";
$lineage = "<center>";
if ($config['guest']['account']&&empty($member_id['name'])) {
$error_msg = "Гости сайта не могут просматривать данный раздел, пожалуйста зарегистрируйтесь.";
}
if (empty($error_msg)) {
$lineage.= "Вы не авторизованны<br /><br >";
} else {
$lineage.= "<span class='warning'>".$error_msg."</span><br /><br />";
}
if (!($config['guest']['account']&&empty($member_id['name']))) {
$lineage.= "<form action='".$LINK."&module=account' method='post'>";
$lineage.= "<input type='hidden' name='action' value='login'>";
$lineage.= "<table id='l2tbl' width='100%' border='0' cellpadding='1' cellspacing='1'>";
$lineage.= "<tr><td class='left'><b>Аккаунт:</b></td><td class='right'><input style='width:100px;' type='text' name='l2login' size='24'></td></tr>";
$lineage.= "<tr><td class='left'><b>Пароль:</b></td><td class='right'><input style='width:100px;' type='password' name='l2password' size='24'></td></tr>";
$lineage.= "<tr><td colspan=2><center><input class='submit' type='submit' value='Go!'></center></td></tr>";
$lineage.= "</table>";
$lineage.= "</form>";
}
$lineage.= "</center>\n";
} else {
if ($id) {
// проверка валидности id
$query = $dbg[$SERVER]->sql_query("SELECT * FROM `characters` WHERE obj_id='".$id."' LIMIT 1");
$char_data = $dbg[$SERVER]->sql_fetchrow($query);
if (strtolower($char_data["account_name"])!=strtolower($account_data["login"])) {
$lineage = "Ошибка выбора персонажа!";
// Донат
} elseif ($_REQUEST["action"]=="donate") {
$tag_start = $config["donate"]["sms_start_tag"];
$tag_end = $config["donate"]["sms_end_tag"];
$key_id = $config["donate"]["smskey_id"];
$s_enc = $config["donate"]["s_enc"];
$s_language = $config["donate"]["s_language"];
if (intval($key_id) > 200000 && CheckServerOnline("service.smscoin.com", 80, $config["donate"]["timeout"])) {
if($s_language == "") {
$s_language = "russian";
}
if($s_enc == "") {
$s_enc = "windows-1251";
}
$old_ua = @ini_set('user_agent', 'smscoin_key_1.0.6');
$response = @file("http://7bbc.key.smscoin.com/language/".$s_language."/key/?s_pure=1&s_enc=".$s_enc."&s_key=".$key_id
."&s_pair=".urlencode(substr($_GET["s_pair"],0,10))
."&s_language=".urlencode(substr($_GET["s_language"],0,10))
."&s_ip=".$_SERVER["REMOTE_ADDR"]
."&s_url=".$_SERVER["SERVER_NAME"].htmlentities(urlencode($_SERVER["REQUEST_URI"])));
if ($response !== false) {
if (count($response)>1 || $response[0] != 'true') {
if (isset($_REQUEST["s_pair"]) && !empty($_REQUEST["s_pair"])) {
$dbl->sql_query($sql="INSERT donate (`character`, `action`, `key`) VALUES ('".$char_data["char_name"]."', 'w', '".mysql_escape_string(substr($_REQUEST["s_pair"],0,16))."')");
}
$rpl_hidd = implode("", $response);
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si","<div id='l2account'>".$rpl_hidd."</div><br/>");
} else {
$dbl->sql_query("INSERT donate (`character`, `action`, `key`) VALUES ('".$char_data["char_name"]."', 'r', '".mysql_escape_string(substr($_REQUEST["s_pair"],0,16))."')");
GetCoin($id, $config["donate"]["item_id"], $config["donate"]["item_count"]);
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si","<div class='quote'><strong>Вы оплатили услугу!</strong><br/>\\1</div>");
}
} else {
die('Не удалось запросить внешний сервер');
}
@ini_set('user_agent', $old_ua);
} else {
$rpl_hidd = '<div style="text-align: center;"> Пожертвования отключены или временно недоступны </div>';
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si",$rpl_hidd."<br/>");
}
$lineage = "[smscol]Вы получили ".$config["donate"]["item_count"]." коинов[/smscol]";
// вывод информации о чаре
} else {
// ****************************************************************************
// ** **
// ** Character Information **
// ** **
// ****************************************************************************
if (!($near=isCharacterInTown(intval($char_data["x"]),intval($char_data["y"])))) {
$town = "near ";
} else {
$town = "";
}
$town .= getClosestTownName(intval($char_data["x"]),intval($char_data["y"]));
if ($char_data['accesslevel']<0 || $char_data['in_jail']) {
$nstyle = "l2offline";
} else {
$nstyle = "l2online";
}
if ($char_data['sex']) {
$sex = "<img border='0' src='".$tpldir."/lineage/img/female.png'>\n";
} else {
$sex = "<img border='0' src='".$tpldir."/lineage/img/male.png'>\n";
}
$query = $dbg[$SERVER]->sql_query("
SELECT item_id, loc_data, count, loc, enchant_level FROM `items`
WHERE owner_id = '".$id."' and loc = 'PAPERDOLL'
ORDER BY loc_data
");
$content.= "<center><div id='l2inventory'>";
while ($paperdoll_data=$dbg[$SERVER]->sql_fetchrow($query)) {
$item_info=item_info($id,$paperdoll_data['item_id']);
if ($item_info) {
$title = "onmouseover=\"Tip('".str_replace("'", "\\'", $item_info["name"]);
$title .= ($paperdoll_data['count']>1)?" (".number_format($paperdoll_data['count'], 2, ".", " ").")":"";
$title .= ($paperdoll_data['enchant_level']>0)?" +".$paperdoll_data['enchant_level']:"";
$title .= (!empty($item_info['crystal']))?" <img border=\\'0\\' src=\\'".$tpldir."/lineage/img/grade/grade_".$item_info["crystal"].".gif\\'>":"";
$title .= "', FONTCOLOR, '#333333',BGCOLOR, '#FFFFFF', BORDERCOLOR, '#666666', FADEIN, 500, FADEOUT, 500, FONTWEIGHT, 'bold')\"";
}
if(($img=echo_img_item($paperdoll_data['item_id'],$title))!=" ") {
$content.= "<!-- Item :".$paperdoll_data['loc_data']." --> <div id='item' class='".GetItemType($paperdoll_data['loc_data'])."'>".$img."</div>\n";
}
}
$content.= "<div id='l2inventory_container'><div id='l2inventory_container2' class='flexcroll'>\n";
$query = $dbl->sql_query("
SELECT item_id, object_id, count, loc, enchant_level
FROM `items`
WHERE owner_id = '".$id."' AND loc='INVENTORY'
ORDER BY loc ASC, item_id
");
if ($dbg[$SERVER]->sql_numrows($query)) {
while ($item_data=$dbg[$SERVER]->sql_fetchrow($query)) {
$item_info = item_info($id,$item_data['item_id']);
$title = "class=\"floated\" onmouseover=\"Tip('".str_replace("'", "\\'", $item_info["name"]);
$title .= ($item_data['count']>1)?" (".number_format($item_data['count'], 0, ".", " ").")":"";
$title .= ($item_data['enchant_level']>0)?" +".$item_data['enchant_level']:"";
$title .= (!empty($item_info['crystal']))?" <img border=\\'0\\' src=\\'".$tpldir."/lineage/img/grade/grade_".$item_info["crystal"].".gif\\'>":"";
$title .= "', FONTCOLOR, '#333333',BGCOLOR, '#FFFFFF', BORDERCOLOR, '#666666', FADEIN, 500, FADEOUT, 500, FONTWEIGHT, 'bold')\"";
$img=echo_img_item($item_data['item_id'],$title);
$content.= $img."\n";
}
}
$content.= "<div class='clearfloat'></div></div></div></div></center><br>";
$tpl->load_template($tpl_dir.'/lineage/character.tpl');
$tpl->set('{account}', $account_data['login']);
$tpl->set('{lastactive}', date("H:i d.m.Y",intval(substr($account_data['lastactive'],0,10)+$time_offset)));
$tpl->set('{lastip}', $account_data['lastIP']);
$tpl->set('{servName}',$config["gameserver"][$SERVER]["title"]);
$tpl->set('{nstyle}', $nstyle);
$tpl->set('{town}', $town);
$tpl->set('{charname}', $char_data['char_name']);
$tpl->set('{level}', $char_data['level']);
$tpl->set('{sex}', $sex);
$tpl->set('{onlinetime}', round($char_data['onlinetime']/60/60)."ч.");
$tpl->set('{race}',$config["race"][$char_data['race']]);
$tpl->set('{prof}',"<img ".$alt." border='0' src='".$tpldir."/lineage/img/prof/".$char_data["base_class"].".gif'>");
$tpl->set('{hp}', $char_data['maxHp']);
$tpl->set('{mp}', $char_data['maxMp']);
$tpl->set('{pvp}', $char_data['pvpkills']);
$tpl->set('{pk}', $char_data['pkkills']);
$tpl->set('{karma}', $char_data['karma']);
$tpl->set('{exp}', $char_data['exp']);
$tpl->set('{sp}', $char_data['sp']);
$tpl->set('{str}', $char_data['str']);
$tpl->set('{dex}', $char_data['dex']);
$tpl->set('{con}', $char_data['con']);
$tpl->set('{int}', $char_data['_int']);
$tpl->set('{wit}', $char_data['wit']);
$tpl->set('{men}', $char_data['men']);
$tpl->set('{content}',$content);
$tpl->compile('lineage');
$lineage = $tpl->result['lineage'];
}
//
} else {
// Смена пароля
if ($_REQUEST["action"]=="password") {
if (isset($_POST['submit'])&&$_POST['submit']) {
$error["password"] = 0;
$pwd=base64_encode(pack('H*', sha1(substr($_REQUEST['password1'], 0, 32))));
$pwdc = md5(base64_encode(pack('H*', sha1(substr($_REQUEST['passwordold'], 0, 32)))).$_SERVER['REMOTE_ADDR']);
if ($pwdc!=$account_data['password'] && $error["password"]==0) {
$error["password"] = 1;
}
if ($_POST['password1']!=$_POST['password2'] && $error["password"]==0) {
$error["password"] = 2;
}
if (strlen($_POST['password1'])<4||strlen($_POST['password1'])>16 && $error["password"]==0) {
$error["password"] = 3;
}
if ($error["password"]==0) {
$query = $dbl->sql_query("
UPDATE accounts
SET password = '".$pwd."'
WHERE login='".$account_data['login']."'
");
if ($dbl->sql_affectedrows()<=0) {
$error["password"] = 4;
} else {
setcookie("l2hash", md5($pwd.$_SERVER['REMOTE_ADDR']), time()+$config["sess_time"],"/");
}
}
unset($pwd);
unset($pwdc);
$content = "<div class='warning center'>".$lang["password"][$error["password"]]."</div><br>";
} else {
$content = "
<form action='".$MODULE."&action=password' method='post'>
<center>
<table width='300px' align='center' border='0' cellpadding='0' cellspacing='0'>
<tr><td class='chl'>Текущий пароль:</td><td class='chr'><input type='password' name='passwordold' size='16' value=''></td></tr>
<tr><td class='chl'>Новый пароль:</td><td class='chr'><input type='password' name='password1' size='16' value=''></td></tr>
<tr><td class='chl'>Новый пароль:</td><td class='chr'><input type='password' name='password2' size='16' value=''></td></tr>
<tr><td class='chs' colspan='2'><input type='submit' name='submit' value='Изменить пароль'></td></tr>
</table>
</center>
</form>
";
}
} else {
// ****************************************************************************
// ** **
// ** Teleport To Town **
// ** **
// ****************************************************************************
if (isset($_REQUEST["teleport"])) {
$error["teleport"] = 0;
if (!$config["teleport"]["enable"]) {
$error["teleport"] = 1;
} else {
if (intval($_REQUEST["teleport"])) {
$query = $dbl->sql_query($sql="SELECT * FROM `characters` WHERE obj_id='".intval($_REQUEST["teleport"])."' and account_name='".$account_data["login"]."' LIMIT 1");
if ($dbl->sql_affectedrows()>0) $temp_data=$dbl->sql_fetchrow($query);
else $error["teleport"] = 4;
} else $error["teleport"] = 4;
}
if (intval($temp_data["online"]) && !$error["teleport"]) {
$error["teleport"] = 2;
}
if (intval($temp_data["lastTeleport"])+60*$config["teleport"]["refuse"]>time() && !$error["teleport"]) {
$error["teleport"] = 3;
}
if (intval($temp_data["in_jail"]) && !$error["teleport"]) {
$error["teleport"] = 5;
}
if (intval($char_data['accesslevel'])<0 && !$error["teleport"]) {
$error["teleport"] = 6;
}
if ($error["teleport"]==0) {
$location = EscapeToTown($temp_data);
$dbg[$SERVER]->sql_query($sql="UPDATE `characters` SET x = '".$location[0]."', y = '".$location[1]."', z = '".$location[2]."'".($config["teleport"]["refuse"]>0?", lastTeleport = '".time()."'":"")." WHERE obj_id='".intval($_REQUEST["teleport"])."'");
}
$lang = str_replace("%", $temp_data["char_name"], $lang["teleport"][intval($error["teleport"])]);
$content .= "<div class='l2title'>".$lang."</div>";
if (isset($temp_data)) unset($temp_data);
}
// ****************************************************************************
// ** **
// ** Вывод персонажей с аккаунта **
// ** **
// ****************************************************************************
$content .= "<table id='l2tbl2' width='100%' border='0' cellpadding='1' cellspacing='1'>
<tr>
<td class='header' width=''><b>Ник</b></td>
<td class='header' width='80px'><b>Клан</b></td>
<td class='header' width='50px' ><b>Статус</b></td>
<td class='header' width='30px' ><b>Lvl</b></td>
<td class='header' width='60px' ><b>Геймтайм</b></td>
<td class='header' width='110px'><b>Последний вход</b></td>
";
// if ($config["teleport"]["enable"]) {
$content .= "<td class='header' width='125px' ><b>Действие</b></td>";
// }
$colspan = 6;
if ($config["teleport"]["enable"]) $colspan++;
for ($i=0;$i<count($serverList);$i++) { // перебор баз геймсерверов
$serv = $serverList[$i];
$content .= "<tr><td class='serv' height='22' colspan='".$colspan."'><b>".$config["gameserver"][$serv]["title"]."</b></td></tr>\n";
$query = $dbg[$serv]->sql_query("
SELECT chars.obj_Id,chars.char_name,chars.lastAccess,chars.level,
chars.karma,chars.pvpkills,chars.pkkills,
chars.onlinetime,chars.online,chars.accesslevel,chars.in_jail,
clist.classname,chars.clanid,clan.clan_name
FROM `characters` AS chars
LEFT JOIN `char_templates` AS clist ON chars.classid = clist.classid
LEFT JOIN `clan_data` AS clan ON chars.clanid = clan.clan_id
WHERE chars.account_name='".$account_data['login']."'
ORDER BY chars.online DESC, chars.accesslevel DESC, chars.char_name
LIMIT 7
");
if ($dbg[$serv]->sql_numrows($query)) { // если персонажи найдены
while ($char_data=$dbg[$serv]->sql_fetchrow($query)) {
if ($char_data['accesslevel']<0) $status = "<font color='l2offline'>Бан</font>";
elseif($char_data['in_jail']) $status = "<font color='l2offline'>Тюрьма</font>";
else $status = $char_data['online']?"<span class='l2online'>Online</span>":"<span class='l2offline'>Offline</span>";
$content.= "<tr class=''>\n";
$content.= "<td class=''><a href='".$LINK."&module=account&id=".$char_data['obj_Id']."&server=".$serv."'><b>".$char_data['char_name']."</b></a></td>\n";
if (empty($char_data['clan_name'])) $content .= "<td class='tr'>n/a</td>\n";
else $content .= "<td class='tr'>".$char_data['clan_name']."</td>\n";
$content.= "<td class=''>".$status."</a></td>\n";
$content.= "<td class=''>".$char_data['level']."</td>\n";
$content.= "<td class=''>".round($char_data['onlinetime']/60/60)."ч.</td>\n";
$content.= "<td class=''>".date("H:i d.m.Y",intval(substr($char_data['lastAccess'],0,10)+$config["offset"]*60))."</td>\n";
$content.= "<td class=''>\n";
if ($config["teleport"]["enable"])
$content.= "<div class='button'><a href='".$LINK."&module=account&server=".$serv."&teleport=".$char_data['obj_Id']."'>в город</a></div>\n";
if ($config["donate"]["smskey_id"]>200000)
$content.= "<div class='button'><a href='".$LINK."&module=account&action=donate&server=".$serv."&id=".$char_data['obj_Id']."'>донат</a></div>";
$content .= "</td></tr>\n";
}
} else {
if ($dbg[$serv]&&$dbg[$serv]->db_connect_id) {
$content .= "<tr><td class='center' colspan='".$colspan."'>У вас нет персонажей на этом сервере.</td></tr>\n";
} else {
$content .= "<tr><td class='center' colspan='".$colspan."'>Не удалось получить данные этого сервера.</td></tr>\n";
}
}
}
$content .= "</table>";
}
$tpl->load_template($tpl_dir.'/lineage/account.tpl');
$tpl->set('{servName}',$config["gameserver"][$SERVER]["title"]);
$tpl->set('{account}', $account_data['login']);
$tpl->set('{lastactive}', date("H:i d.m.Y",intval(substr($account_data['lastactive'],0,10)+$time_offset)));
$tpl->set('{lastip}', $account_data['lastIP']);
$tpl->set('{content}', $content);
$tpl->compile('lineage');
$lineage = $tpl->result['lineage'];
}
}
?>
}
$lang["teleport"][0] = "Персонаж '%' перенесён в ближайший город";
$lang["teleport"][1] = "Сервис отключен";
$lang["teleport"][2] = "Персонаж '%' должен быть в офф-лайне";
$lang["teleport"][3] = "Сервисом можно пользоваться раз в ".$config["teleport"]["refuse"]." минут";
$lang["teleport"][4] = "Неверный ID персонажа";
$lang["teleport"][5] = "Персонаж '%' в тюрьме";
$lang["teleport"][6] = "Персонаж '%' забанен";
$lang["password"][0] = "Пароль успешно сменен";
$lang["password"][1] = "Пароль введен не верно";
$lang["password"][2] = "Подтверждение нового пароля не правильно";
$lang["password"][3] = "Пароль должен быть не меньше 4, но не более 16 символов";
$lang["password"][4] = "Ошибка базы данных";
// Функция для добавления предмета в базу
function GetCoin($id, $item_id, $item_count = 1) {
global $dbg,$SERVER;
$query = $dbg[$SERVER]->sql_query($sql="SELECT object_id, count FROM `items` WHERE owner_id = '".$id."' AND item_id='".$item_id."' AND loc='INVENTORY' ORDER BY count DESC LIMIT 1");
$object_id = $dbg[$SERVER]->result($query,0);
$count = $dbg[$SERVER]->result($query,1);
if (intval($count)==0) {
$query = $dbg[$SERVER]->sql_query("SELECT MAX(`object_id`)+1 FROM `items`");
$object_id = $dbg[$SERVER]->result($query,0);
do {
$dbg[$SERVER]->sql_query("INSERT items (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `mana_left`) VALUES (".$id.", ".$object_id.", '".$item_id."', ".$item_count.", 0, 'INVENTORY', 0, 0, 0, 'NULL', -1)");
$object_id++;
$error = $dbg[$SERVER]->sql_error();
$error = $error["code"];
} while ($error!=0);
} else {
$dbg[$SERVER]->sql_query("UPDATE items SET count = '".($count+$item_count)."' WHERE object_id = '".$object_id."'");
}
}
/********************************************************************/
/* */
/* Авторизация */
/* */
/********************************************************************/
$account_data = array();
unset($login);
unset($password);
if (!($config['guest']['account']&&empty($member_id['name']))) {
// Авторизация
if (isset($_REQUEST["action"])&&$_REQUEST["action"]=="login") {
$login = mysql_escape_string(substr($_REQUEST['l2login'], 0, 32));
$password = md5(base64_encode(pack('H*', sha1(substr($_REQUEST['l2password'], 0, 32)))).$_SERVER['REMOTE_ADDR']);
// Выход
} elseif (isset($_REQUEST["action"])&&$_REQUEST["action"]=="exit") {
setcookie("l2login", "", time()-$config["sess_time"], "/");
setcookie("l2hash", "", time()-$config["sess_time"], "/");
// Проверка сессии
} else {
$login = mysql_escape_string(substr($_COOKIE['l2login'], 0, 32));
$password = substr($_COOKIE['l2hash'], 0, 32);
}
if ($_REQUEST["action"]!="exit"&&!empty($login)) {
$query = $dbl->sql_query("SELECT * FROM accounts WHERE login='".$login."' LIMIT 1");
$account_data = $dbl->sql_fetchrow($query);
if ($account_data) {
$account_data['password'] = md5($account_data['password'].$_SERVER['REMOTE_ADDR']);
}
}
if ($dbl->sql_numrows($query)!=1||$account_data['password']!=$password) {
if ($_REQUEST["action"]=="login") {
$error_msg = "Ошибка при авторизации";
}
setcookie("l2login", "", time()-$config["sess_time"], "/");
setcookie("l2hash", "", time()-$config["sess_time"], "/");
unset($account_data);
} else {
setcookie("l2login", $login, time()+$config["sess_time"], "/");
setcookie("l2hash", $password, time()+$config["sess_time"], "/");
}
}
unset($login);
unset($password);
/********************************************************************/
/* */
/* Вывод */
/* */
/********************************************************************/
if (($account_data["login"]=="") || ($config['guest']['account']&&empty($member_id['name']))) {
$menu = "";
$lineage = "<center>";
if ($config['guest']['account']&&empty($member_id['name'])) {
$error_msg = "Гости сайта не могут просматривать данный раздел, пожалуйста зарегистрируйтесь.";
}
if (empty($error_msg)) {
$lineage.= "Вы не авторизованны<br /><br >";
} else {
$lineage.= "<span class='warning'>".$error_msg."</span><br /><br />";
}
if (!($config['guest']['account']&&empty($member_id['name']))) {
$lineage.= "<form action='".$LINK."&module=account' method='post'>";
$lineage.= "<input type='hidden' name='action' value='login'>";
$lineage.= "<table id='l2tbl' width='100%' border='0' cellpadding='1' cellspacing='1'>";
$lineage.= "<tr><td class='left'><b>Аккаунт:</b></td><td class='right'><input style='width:100px;' type='text' name='l2login' size='24'></td></tr>";
$lineage.= "<tr><td class='left'><b>Пароль:</b></td><td class='right'><input style='width:100px;' type='password' name='l2password' size='24'></td></tr>";
$lineage.= "<tr><td colspan=2><center><input class='submit' type='submit' value='Go!'></center></td></tr>";
$lineage.= "</table>";
$lineage.= "</form>";
}
$lineage.= "</center>\n";
} else {
if ($id) {
// проверка валидности id
$query = $dbg[$SERVER]->sql_query("SELECT * FROM `characters` WHERE obj_id='".$id."' LIMIT 1");
$char_data = $dbg[$SERVER]->sql_fetchrow($query);
if (strtolower($char_data["account_name"])!=strtolower($account_data["login"])) {
$lineage = "Ошибка выбора персонажа!";
// Донат
} elseif ($_REQUEST["action"]=="donate") {
$tag_start = $config["donate"]["sms_start_tag"];
$tag_end = $config["donate"]["sms_end_tag"];
$key_id = $config["donate"]["smskey_id"];
$s_enc = $config["donate"]["s_enc"];
$s_language = $config["donate"]["s_language"];
if (intval($key_id) > 200000 && CheckServerOnline("service.smscoin.com", 80, $config["donate"]["timeout"])) {
if($s_language == "") {
$s_language = "russian";
}
if($s_enc == "") {
$s_enc = "windows-1251";
}
$old_ua = @ini_set('user_agent', 'smscoin_key_1.0.6');
$response = @file("http://7bbc.key.smscoin.com/language/".$s_language."/key/?s_pure=1&s_enc=".$s_enc."&s_key=".$key_id
."&s_pair=".urlencode(substr($_GET["s_pair"],0,10))
."&s_language=".urlencode(substr($_GET["s_language"],0,10))
."&s_ip=".$_SERVER["REMOTE_ADDR"]
."&s_url=".$_SERVER["SERVER_NAME"].htmlentities(urlencode($_SERVER["REQUEST_URI"])));
if ($response !== false) {
if (count($response)>1 || $response[0] != 'true') {
if (isset($_REQUEST["s_pair"]) && !empty($_REQUEST["s_pair"])) {
$dbl->sql_query($sql="INSERT donate (`character`, `action`, `key`) VALUES ('".$char_data["char_name"]."', 'w', '".mysql_escape_string(substr($_REQUEST["s_pair"],0,16))."')");
}
$rpl_hidd = implode("", $response);
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si","<div id='l2account'>".$rpl_hidd."</div><br/>");
} else {
$dbl->sql_query("INSERT donate (`character`, `action`, `key`) VALUES ('".$char_data["char_name"]."', 'r', '".mysql_escape_string(substr($_REQUEST["s_pair"],0,16))."')");
GetCoin($id, $config["donate"]["item_id"], $config["donate"]["item_count"]);
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si","<div class='quote'><strong>Вы оплатили услугу!</strong><br/>\\1</div>");
}
} else {
die('Не удалось запросить внешний сервер');
}
@ini_set('user_agent', $old_ua);
} else {
$rpl_hidd = '<div style="text-align: center;"> Пожертвования отключены или временно недоступны </div>';
$tpl->set_block("'\[".$tag_start."\](.*?)\[/".$tag_end."\]'si",$rpl_hidd."<br/>");
}
$lineage = "[smscol]Вы получили ".$config["donate"]["item_count"]." коинов[/smscol]";
// вывод информации о чаре
} else {
// ****************************************************************************
// ** **
// ** Character Information **
// ** **
// ****************************************************************************
if (!($near=isCharacterInTown(intval($char_data["x"]),intval($char_data["y"])))) {
$town = "near ";
} else {
$town = "";
}
$town .= getClosestTownName(intval($char_data["x"]),intval($char_data["y"]));
if ($char_data['accesslevel']<0 || $char_data['in_jail']) {
$nstyle = "l2offline";
} else {
$nstyle = "l2online";
}
if ($char_data['sex']) {
$sex = "<img border='0' src='".$tpldir."/lineage/img/female.png'>\n";
} else {
$sex = "<img border='0' src='".$tpldir."/lineage/img/male.png'>\n";
}
$query = $dbg[$SERVER]->sql_query("
SELECT item_id, loc_data, count, loc, enchant_level FROM `items`
WHERE owner_id = '".$id."' and loc = 'PAPERDOLL'
ORDER BY loc_data
");
$content.= "<center><div id='l2inventory'>";
while ($paperdoll_data=$dbg[$SERVER]->sql_fetchrow($query)) {
$item_info=item_info($id,$paperdoll_data['item_id']);
if ($item_info) {
$title = "onmouseover=\"Tip('".str_replace("'", "\\'", $item_info["name"]);
$title .= ($paperdoll_data['count']>1)?" (".number_format($paperdoll_data['count'], 2, ".", " ").")":"";
$title .= ($paperdoll_data['enchant_level']>0)?" +".$paperdoll_data['enchant_level']:"";
$title .= (!empty($item_info['crystal']))?" <img border=\\'0\\' src=\\'".$tpldir."/lineage/img/grade/grade_".$item_info["crystal"].".gif\\'>":"";
$title .= "', FONTCOLOR, '#333333',BGCOLOR, '#FFFFFF', BORDERCOLOR, '#666666', FADEIN, 500, FADEOUT, 500, FONTWEIGHT, 'bold')\"";
}
if(($img=echo_img_item($paperdoll_data['item_id'],$title))!=" ") {
$content.= "<!-- Item :".$paperdoll_data['loc_data']." --> <div id='item' class='".GetItemType($paperdoll_data['loc_data'])."'>".$img."</div>\n";
}
}
$content.= "<div id='l2inventory_container'><div id='l2inventory_container2' class='flexcroll'>\n";
$query = $dbl->sql_query("
SELECT item_id, object_id, count, loc, enchant_level
FROM `items`
WHERE owner_id = '".$id."' AND loc='INVENTORY'
ORDER BY loc ASC, item_id
");
if ($dbg[$SERVER]->sql_numrows($query)) {
while ($item_data=$dbg[$SERVER]->sql_fetchrow($query)) {
$item_info = item_info($id,$item_data['item_id']);
$title = "class=\"floated\" onmouseover=\"Tip('".str_replace("'", "\\'", $item_info["name"]);
$title .= ($item_data['count']>1)?" (".number_format($item_data['count'], 0, ".", " ").")":"";
$title .= ($item_data['enchant_level']>0)?" +".$item_data['enchant_level']:"";
$title .= (!empty($item_info['crystal']))?" <img border=\\'0\\' src=\\'".$tpldir."/lineage/img/grade/grade_".$item_info["crystal"].".gif\\'>":"";
$title .= "', FONTCOLOR, '#333333',BGCOLOR, '#FFFFFF', BORDERCOLOR, '#666666', FADEIN, 500, FADEOUT, 500, FONTWEIGHT, 'bold')\"";
$img=echo_img_item($item_data['item_id'],$title);
$content.= $img."\n";
}
}
$content.= "<div class='clearfloat'></div></div></div></div></center><br>";
$tpl->load_template($tpl_dir.'/lineage/character.tpl');
$tpl->set('{account}', $account_data['login']);
$tpl->set('{lastactive}', date("H:i d.m.Y",intval(substr($account_data['lastactive'],0,10)+$time_offset)));
$tpl->set('{lastip}', $account_data['lastIP']);
$tpl->set('{servName}',$config["gameserver"][$SERVER]["title"]);
$tpl->set('{nstyle}', $nstyle);
$tpl->set('{town}', $town);
$tpl->set('{charname}', $char_data['char_name']);
$tpl->set('{level}', $char_data['level']);
$tpl->set('{sex}', $sex);
$tpl->set('{onlinetime}', round($char_data['onlinetime']/60/60)."ч.");
$tpl->set('{race}',$config["race"][$char_data['race']]);
$tpl->set('{prof}',"<img ".$alt." border='0' src='".$tpldir."/lineage/img/prof/".$char_data["base_class"].".gif'>");
$tpl->set('{hp}', $char_data['maxHp']);
$tpl->set('{mp}', $char_data['maxMp']);
$tpl->set('{pvp}', $char_data['pvpkills']);
$tpl->set('{pk}', $char_data['pkkills']);
$tpl->set('{karma}', $char_data['karma']);
$tpl->set('{exp}', $char_data['exp']);
$tpl->set('{sp}', $char_data['sp']);
$tpl->set('{str}', $char_data['str']);
$tpl->set('{dex}', $char_data['dex']);
$tpl->set('{con}', $char_data['con']);
$tpl->set('{int}', $char_data['_int']);
$tpl->set('{wit}', $char_data['wit']);
$tpl->set('{men}', $char_data['men']);
$tpl->set('{content}',$content);
$tpl->compile('lineage');
$lineage = $tpl->result['lineage'];
}
//
} else {
// Смена пароля
if ($_REQUEST["action"]=="password") {
if (isset($_POST['submit'])&&$_POST['submit']) {
$error["password"] = 0;
$pwd=base64_encode(pack('H*', sha1(substr($_REQUEST['password1'], 0, 32))));
$pwdc = md5(base64_encode(pack('H*', sha1(substr($_REQUEST['passwordold'], 0, 32)))).$_SERVER['REMOTE_ADDR']);
if ($pwdc!=$account_data['password'] && $error["password"]==0) {
$error["password"] = 1;
}
if ($_POST['password1']!=$_POST['password2'] && $error["password"]==0) {
$error["password"] = 2;
}
if (strlen($_POST['password1'])<4||strlen($_POST['password1'])>16 && $error["password"]==0) {
$error["password"] = 3;
}
if ($error["password"]==0) {
$query = $dbl->sql_query("
UPDATE accounts
SET password = '".$pwd."'
WHERE login='".$account_data['login']."'
");
if ($dbl->sql_affectedrows()<=0) {
$error["password"] = 4;
} else {
setcookie("l2hash", md5($pwd.$_SERVER['REMOTE_ADDR']), time()+$config["sess_time"],"/");
}
}
unset($pwd);
unset($pwdc);
$content = "<div class='warning center'>".$lang["password"][$error["password"]]."</div><br>";
} else {
$content = "
<form action='".$MODULE."&action=password' method='post'>
<center>
<table width='300px' align='center' border='0' cellpadding='0' cellspacing='0'>
<tr><td class='chl'>Текущий пароль:</td><td class='chr'><input type='password' name='passwordold' size='16' value=''></td></tr>
<tr><td class='chl'>Новый пароль:</td><td class='chr'><input type='password' name='password1' size='16' value=''></td></tr>
<tr><td class='chl'>Новый пароль:</td><td class='chr'><input type='password' name='password2' size='16' value=''></td></tr>
<tr><td class='chs' colspan='2'><input type='submit' name='submit' value='Изменить пароль'></td></tr>
</table>
</center>
</form>
";
}
} else {
// ****************************************************************************
// ** **
// ** Teleport To Town **
// ** **
// ****************************************************************************
if (isset($_REQUEST["teleport"])) {
$error["teleport"] = 0;
if (!$config["teleport"]["enable"]) {
$error["teleport"] = 1;
} else {
if (intval($_REQUEST["teleport"])) {
$query = $dbl->sql_query($sql="SELECT * FROM `characters` WHERE obj_id='".intval($_REQUEST["teleport"])."' and account_name='".$account_data["login"]."' LIMIT 1");
if ($dbl->sql_affectedrows()>0) $temp_data=$dbl->sql_fetchrow($query);
else $error["teleport"] = 4;
} else $error["teleport"] = 4;
}
if (intval($temp_data["online"]) && !$error["teleport"]) {
$error["teleport"] = 2;
}
if (intval($temp_data["lastTeleport"])+60*$config["teleport"]["refuse"]>time() && !$error["teleport"]) {
$error["teleport"] = 3;
}
if (intval($temp_data["in_jail"]) && !$error["teleport"]) {
$error["teleport"] = 5;
}
if (intval($char_data['accesslevel'])<0 && !$error["teleport"]) {
$error["teleport"] = 6;
}
if ($error["teleport"]==0) {
$location = EscapeToTown($temp_data);
$dbg[$SERVER]->sql_query($sql="UPDATE `characters` SET x = '".$location[0]."', y = '".$location[1]."', z = '".$location[2]."'".($config["teleport"]["refuse"]>0?", lastTeleport = '".time()."'":"")." WHERE obj_id='".intval($_REQUEST["teleport"])."'");
}
$lang = str_replace("%", $temp_data["char_name"], $lang["teleport"][intval($error["teleport"])]);
$content .= "<div class='l2title'>".$lang."</div>";
if (isset($temp_data)) unset($temp_data);
}
// ****************************************************************************
// ** **
// ** Вывод персонажей с аккаунта **
// ** **
// ****************************************************************************
$content .= "<table id='l2tbl2' width='100%' border='0' cellpadding='1' cellspacing='1'>
<tr>
<td class='header' width=''><b>Ник</b></td>
<td class='header' width='80px'><b>Клан</b></td>
<td class='header' width='50px' ><b>Статус</b></td>
<td class='header' width='30px' ><b>Lvl</b></td>
<td class='header' width='60px' ><b>Геймтайм</b></td>
<td class='header' width='110px'><b>Последний вход</b></td>
";
// if ($config["teleport"]["enable"]) {
$content .= "<td class='header' width='125px' ><b>Действие</b></td>";
// }
$colspan = 6;
if ($config["teleport"]["enable"]) $colspan++;
for ($i=0;$i<count($serverList);$i++) { // перебор баз геймсерверов
$serv = $serverList[$i];
$content .= "<tr><td class='serv' height='22' colspan='".$colspan."'><b>".$config["gameserver"][$serv]["title"]."</b></td></tr>\n";
$query = $dbg[$serv]->sql_query("
SELECT chars.obj_Id,chars.char_name,chars.lastAccess,chars.level,
chars.karma,chars.pvpkills,chars.pkkills,
chars.onlinetime,chars.online,chars.accesslevel,chars.in_jail,
clist.classname,chars.clanid,clan.clan_name
FROM `characters` AS chars
LEFT JOIN `char_templates` AS clist ON chars.classid = clist.classid
LEFT JOIN `clan_data` AS clan ON chars.clanid = clan.clan_id
WHERE chars.account_name='".$account_data['login']."'
ORDER BY chars.online DESC, chars.accesslevel DESC, chars.char_name
LIMIT 7
");
if ($dbg[$serv]->sql_numrows($query)) { // если персонажи найдены
while ($char_data=$dbg[$serv]->sql_fetchrow($query)) {
if ($char_data['accesslevel']<0) $status = "<font color='l2offline'>Бан</font>";
elseif($char_data['in_jail']) $status = "<font color='l2offline'>Тюрьма</font>";
else $status = $char_data['online']?"<span class='l2online'>Online</span>":"<span class='l2offline'>Offline</span>";
$content.= "<tr class=''>\n";
$content.= "<td class=''><a href='".$LINK."&module=account&id=".$char_data['obj_Id']."&server=".$serv."'><b>".$char_data['char_name']."</b></a></td>\n";
if (empty($char_data['clan_name'])) $content .= "<td class='tr'>n/a</td>\n";
else $content .= "<td class='tr'>".$char_data['clan_name']."</td>\n";
$content.= "<td class=''>".$status."</a></td>\n";
$content.= "<td class=''>".$char_data['level']."</td>\n";
$content.= "<td class=''>".round($char_data['onlinetime']/60/60)."ч.</td>\n";
$content.= "<td class=''>".date("H:i d.m.Y",intval(substr($char_data['lastAccess'],0,10)+$config["offset"]*60))."</td>\n";
$content.= "<td class=''>\n";
if ($config["teleport"]["enable"])
$content.= "<div class='button'><a href='".$LINK."&module=account&server=".$serv."&teleport=".$char_data['obj_Id']."'>в город</a></div>\n";
if ($config["donate"]["smskey_id"]>200000)
$content.= "<div class='button'><a href='".$LINK."&module=account&action=donate&server=".$serv."&id=".$char_data['obj_Id']."'>донат</a></div>";
$content .= "</td></tr>\n";
}
} else {
if ($dbg[$serv]&&$dbg[$serv]->db_connect_id) {
$content .= "<tr><td class='center' colspan='".$colspan."'>У вас нет персонажей на этом сервере.</td></tr>\n";
} else {
$content .= "<tr><td class='center' colspan='".$colspan."'>Не удалось получить данные этого сервера.</td></tr>\n";
}
}
}
$content .= "</table>";
}
$tpl->load_template($tpl_dir.'/lineage/account.tpl');
$tpl->set('{servName}',$config["gameserver"][$SERVER]["title"]);
$tpl->set('{account}', $account_data['login']);
$tpl->set('{lastactive}', date("H:i d.m.Y",intval(substr($account_data['lastactive'],0,10)+$time_offset)));
$tpl->set('{lastip}', $account_data['lastIP']);
$tpl->set('{content}', $content);
$tpl->compile('lineage');
$lineage = $tpl->result['lineage'];
}
}
?>
Этот скрипт я взял с обвязки DLE.
Все знают,что в этой обвязки много полезных скриптов.
Но мало кто знает,как эти скрипты импользовать без обвязки.
Кто сможет помоч не много отредактировать этот скрипт,что бы им можно было пользоваться без обвязки?
спасибок будет много....
— ы
0
Тема закрыта для ответов


