Файл: _gladiators2_/gladiators2/gladiators/gladiators/system/modules/mod_transfer.php
Строк: 198
<?
function check_transfer($id,$opp_id)
{
global $DOCUMENT_ROOT;
$find = 0;
$file = @file($DOCUMENT_ROOT."/database/transfer/transfer.dat");
for($i=0;$i<=count($file)-1;$i++)
{
$row = explode("|",$file[$i]);
if($row[0]==$id && $row[1]==$opp_id)
$find = 1;
}
return $find;
}
if($_POST["send_gold"] && preg_match("/^[-A-Za-zА-Яа-я0-9_\s]+$/",$_GET["ch"]))
{
sleep(3);
$db->query("select id,login,level from users where login='".$_GET["ch"]."'");
$db->num_rows();
$db->fetch_array();
if(!$db->num)
$error_msg = "Указанный персонаж не существует!";
elseif(!check_online($db->row["login"],$_SESSION["room"],$config["rooms"]))
$error_msg = "Персонажа отошел от вас на значительное расстояние!";
elseif($db->row["level"] < 5)
$error_msg = "Перевод золота возможен только персонажам с 5-го уровня!";
elseif(!preg_match("/^[0-9]+(.){0,1}[0-9]*$/",$_POST["send_gold"]))
$error_msg = "Не верно указана сумма золота для передачи!";
elseif( $user->money < 0.01 )
$error_msg = "Слишком маленькая сумма!";
elseif( $user->money < $_POST["send_gold"] )
$error_msg = "Не достаточно наличных для совершения перевода!";
else
{
srand ((double) microtime() * 1000000);
if((Date("G")>=0 && Date("G")<=7) && rand(0,100)==37)
{
$user->money -= ToFloat(($_POST["send_gold"]*10/100),2);
$error_msg = "Вас ограбили на ".ToFloat(($_POST["send_gold"]*10/100),2)." золота, сделка не состоялась!";
}
elseif(Date("G")>7 && rand(0,1000)==37)
{
$user->money -= ToFloat(($_POST["send_gold"]*10/100),2);
$error_msg = "Вас ограбили на ".ToFloat(($_POST["send_gold"]*10/100),2)." золота, сделка не состоялась!";
}
if(!$error_msg)
{
$user->money -= ToFloat($_POST["send_gold"],2);
mysql_query("update users set money=money+".ToFloat($_POST["send_gold"],2)." where login='".$db->row["login"]."'");
insys($db->row["login"],"<b><span style=cursor:hand>".$_SESSION["login"]."</span></b> передал вам <b>".ToFloat($_POST["send_gold"],2)."</b> золота.");
private_add($_SESSION["id"],"transfer bot","передал ".ToFloat($_POST["send_gold"],2)." золота персонажу ".$db->row["login"]);
private_add($db->row["id"],"transfer bot","получил ".ToFloat($_POST["send_gold"],2)." золота от персонажа ".$_SESSION["login"]);
$scs_msg = "Деньги переданы персонажу ".$_GET["ch"]."!";
}
}
}
if(preg_match("/^[0-9]+$/",$_GET["present"]))
{
sleep(3);
$db2 = new DBconn;
$db2->Conn("greece",$server_conf);
$db2->query("select count(*) from bag where owner='".$_SESSION["id"]."' and present='n' and id='".$_GET["present"]."'");
$db2->fetch_array();
if(!$db->row[0])
$error_msg = "Предмет отсутствует!";
elseif(!check_online($db->row["login"],$_SESSION["room"],$config["rooms"]))
$error_msg = "Персонажа отошел от вас на значительное расстояние!";
elseif($db->row["level"] < 5)
$error_msg = "Дарить предметы возможно только персонажам с 5-го уровня!";
else
{
mysql_query("update bag set owner='".$db->row["id"]."',present='y' where id='".$_GET["present"]."' and owner='".$_SESSION["id"]."' and present='n' LIMIT 1");
$db2->query("select name from items where id='".$_GET["present"]."'");
$db2->fetch_array();
insys($db->row["login"],"<b><span style=cursor:hand>".$_SESSION["login"]."</span></b> подарил вам <b>«".$db2->row["name"]."»</b>.");
private_add($_SESSION["id"],"transfer bot","передал «".$db2->row["name"]."» персонажу ".$db->row["login"]);
private_add($db->row["id"],"transfer bot","получил «".$db2->row["name"]."» от персонажа ".$_SESSION["login"]);
$scs_msg = "Подарок передан персонажу ".$_GET["ch"]."!";
}
}
if(preg_match("/^[0-9]+$/",$_GET["item_id"]))
{
sleep(3);
$db2 = new DBconn;
$db2->Conn("greece",$server_conf);
$db2->query("select count(*) from bag where owner='".$_SESSION["id"]."' and present='n' and id='".$_GET["item_id"]."'");
$db2->fetch_array();
$num = $db2->row[0];
$db2->query("select price from items where id='".$_GET["item_id"]."'");
$db2->fetch_array();
if(!$num)
$error_msg = "Предмет отсутствует!";
elseif(!preg_match("/^[0-9]+(.){0,1}[0-9]*$/",$_POST["set_gold"]))
$error_msg = "Не верно указана стоимость предмета!";
elseif($_POST["set_gold"] < ($db2->row["price"]*30/100))
$error_msg = "Вы не можете продать предмет по столь низкой цене!";
elseif(!check_online($db->row["login"],$_SESSION["room"],$config["rooms"]))
$error_msg = "Персонажа отошел от вас на значительное расстояние!";
elseif($db->row["level"] < 5)
$error_msg = "Продовать предметы возможно только персонажам с 5-го уровня!";
elseif(check_transfer($_SESSION["id"],$db->row["id"]))
$error_msg = "Вы уже предложили персонажу купить предмет, подождите завершения сделки.";
else
{
$fp = fopen($HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/database/transfer/transfer.dat","a+");
flock($fp,2);
fwrite($fp,$_SESSION["id"]."|".$db->row["id"]."|".$_GET["item_id"]."|".ToFloat($_POST["set_gold"],2)."|n");
flock($fp,3);
fclose($fp);
}
}
if($_GET["cancel"])
{
sleep(3);
$find = 0;
$file = @file($DOCUMENT_ROOT."/database/transfer/transfer.dat");
for($i=0;$i<=count($file)-1;$i++)
{
$row = explode("|",$file[$i]);
if($row[0]==$_SESSION["id"] && $row[1]==$db->row["id"])
{
$find = 1;
unset($file[$i]);
}
}
if($find)
{
$fp = @fopen($HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/database/transfer/transfer.dat","w");
@flock($fp,2);
@fwrite($fp,implode("",$file));
@flock($fp,3);
@fclose($fp);
$scs_msg = "Сделка окончена по вашему запросу";
}
else
$error_msg = "Возможно персонаж уже провел сделку и вы не можете ее отменить, либо вы до этого сами отменили сделку.";
}
if($_GET["cancel_buy"])
{
sleep(3);
$find = 0;
$file = @file($DOCUMENT_ROOT."/database/transfer/transfer.dat");
for($i=0;$i<=count($file)-1;$i++)
{
$row = explode("|",$file[$i]);
if($row[0]==$db->row["id"] && $row[1]==$_SESSION["id"])
{
$find = 1;
unset($file[$i]);
}
}
if($find)
{
$fp = @fopen($HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/database/transfer/transfer.dat","w");
@flock($fp,2);
@fwrite($fp,implode("",$file));
@flock($fp,3);
@fclose($fp);
$scs_msg = "Сделка отменена по вашему запросу";
}
}
if($_GET["buy"])
{
sleep(3);
$inform = "";
$line = "";
$file = @file($DOCUMENT_ROOT."/database/transfer/transfer.dat");
for($i=0;$i<=count($file)-1;$i++)
{
$row = explode("|",$file[$i]);
if($row[0]==$db->row["id"] && $row[1]==$_SESSION["id"])
{
$line = $i;
$inform = $file[$i];
}
}
if($inform)
{
$db2 = new DBconn;
$db2->Conn("greece",$server_conf);
$row = explode("|",$inform);
$db2->query("select count(*) from bag where owner='".$db->row["id"]."' and id='".$row[2]."' and present='n' and dressed='n'");
$db2->fetch_array();
if($user->money < $row[3])
$error_msg = "Не достаточно золота для покупки предмета!";
elseif(!$db2->row[0])
$error_msg = "Персонаж снял этот предмет с продажи!";
elseif(!check_online($db->row["login"],$_SESSION["room"],$config["rooms"]))
$error_msg = "Персонажа отошел от вас на значительное расстояние!";
else
{
$user->money -= $row[3];
$db2->query("update users set money=money+".$row[3]." where id='".$db->row["id"]."'");
$db2->query("update bag set owner='".$_SESSION["id"]."' where owner='".$db->row["id"]."' and id='".$row[2]."' and present='n' and dressed='n' LIMIT 1");
$db2->query("select name from items where id='".$row[2]."'");
$db2->fetch_array();
insys($db->row["login"],"<b><span style=cursor:hand>".$_SESSION["login"]."</span></b> купил у вас предмет <b>«".$db2->row["name"]."»</b> за <b>".$row[3]."</b> золота.");
private_add($db->row["id"],"transfer bot","продал предмет «".$db2->row["name"]."» за ".$row[3]." золота персонажу ".$_SESSION["login"]);
private_add($_SESSION["id"],"transfer bot","купил предмет «".$db2->row["name"]."» за ".$row[3]." золота у персонажа ".$db->row["login"]);
unset($file[$line]);
$fp = @fopen($HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/database/transfer/transfer.dat","w");
@flock($fp,2);
@fwrite($fp,implode("",$file));
@flock($fp,3);
@fclose($fp);
$scs_msg = "Преобретен предмет «".$db2->row["name"]."»!";
}
}
else
$error_msg = "Персонаж разорвал сделку!";
}
?>