code-upload (#1)
Upload code Изменил(а) на 'README.md' Изменил(а) на 'README.md' Reviewed-on: https://src.lopar.us/lopar/AntiBK/pulls/1 Co-Authored-By: Ivor Barhansky <lopar@noreply.lopar.us> Co-Committed-By: Ivor Barhansky <lopar@noreply.lopar.us>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
<?
|
||||
defined('AntiBK') or die("Доступ запрещен!");
|
||||
|
||||
class Mail extends Char
|
||||
{
|
||||
public $guid;
|
||||
public $db;
|
||||
public $char;
|
||||
function Init ($object)
|
||||
{
|
||||
$this->guid = $object->guid;
|
||||
$this->db = $object->db;
|
||||
$this->char = $object;
|
||||
}
|
||||
/*Вычисление цены передачи предмета*/
|
||||
function getPrice ($item_id)
|
||||
{
|
||||
if (checki($item_id))
|
||||
return 0;
|
||||
|
||||
$i_info = $this->db->selectRow("SELECT `i`.`price`, `i`.`mass`,
|
||||
`c`.`tear_cur`, `c`.`tear_max`,
|
||||
`i`.`tear`
|
||||
FROM `character_inventory` AS `c`
|
||||
LEFT JOIN `item_template` AS `i`
|
||||
ON `c`.`item_entry` = `i`.`entry`
|
||||
WHERE `c`.`id` = ?d
|
||||
and `c`.`guid` = ?d
|
||||
and (`i`.`item_flags` & '1')
|
||||
and `i`.`price_euro` = '0';", $item_id ,$this->guid);
|
||||
list($price, $mass, $tear_cur, $tear_max, $max_tear) = array_values($i_info);
|
||||
|
||||
if (!$i_info)
|
||||
return 0;
|
||||
|
||||
$cof = abs (100 - $mass * 1.5);
|
||||
$sell = round (($price / $cof), 2);
|
||||
|
||||
if ($sell < 0.01)
|
||||
$sell = 0.01;
|
||||
|
||||
return $sell;
|
||||
}
|
||||
/*Отправка денег*/
|
||||
function sendMoney ($mail_to, $send_money)
|
||||
{
|
||||
if (checki($send_money))
|
||||
$this->char->error->Mail(325);
|
||||
|
||||
if (checki($mail_to))
|
||||
$this->char->error->Mail(106, 'money');
|
||||
|
||||
$mail_to = $this->getChar('char_db', 'guid', $mail_to);
|
||||
|
||||
if (!$mail_to)
|
||||
$this->char->error->Mail(106, 'items');
|
||||
|
||||
$transfers = $this->getChar('char_db', 'transfers');
|
||||
|
||||
if ($transfers <= 0)
|
||||
$this->char->error->Mail(113, 'money');
|
||||
|
||||
if ($send_money < 1)
|
||||
$this->char->error->Mail(410, 'money', 1);
|
||||
|
||||
if (!($this->changeMoney(-$send_money)))
|
||||
$this->char->error->Mail(107);
|
||||
|
||||
$send_money = round (0.95 * $send_money, 2);
|
||||
$this->db->query("INSERT INTO `city_mail_items` (`sender`, `to`, `item_id`, `count`, `delivery_time`, `date`)
|
||||
VALUES (?d, ?d, '1000', ?f, ?d, ?d)", $this->guid ,$mail_to ,rdf($send_money) ,time() ,time());
|
||||
$this->char->history->Mail('Send', "Деньги: $send_money кр", $mail_to);
|
||||
$this->char->error->Mail(409, 'money', $send_money);
|
||||
}
|
||||
/*Получение/Возврат денег*/
|
||||
function getMoney ($mail_id, $type)
|
||||
{
|
||||
if (checki($mail_id))
|
||||
$this->char->error->Mail(112, 'get_mail');
|
||||
|
||||
$m_info = $this->db->selectRow("SELECT `m`.`id`,
|
||||
`m`.`sender`,
|
||||
`i`.`name`,
|
||||
`m`.`count`
|
||||
FROM `city_mail_items` AS `m`
|
||||
LEFT JOIN `item_template` AS `i`
|
||||
ON `m`.`item_id` = `i`.`entry`
|
||||
WHERE `m`.`to` = ?d
|
||||
and `m`.`delivery_time` < ?d
|
||||
and `m`.`id` = ?d", $this->guid ,time (), $mail_id) or $this->char->error->Mail(112, 'get_mail');
|
||||
list($mail_id, $sender, $name, $money_count) = array_values($m_info);
|
||||
$name = sprintf($name, $money_count);
|
||||
echoScript("top.menu.location.reload();");
|
||||
$this->db->query("DELETE FROM `city_mail_items` WHERE `id` = ?d", $mail_id);
|
||||
switch ($type)
|
||||
{
|
||||
case 'get_money':
|
||||
$this->Money(-$money_count);
|
||||
$this->char->history->Mail('Receive', $name, $sender);
|
||||
$this->char->error->Mail(407, 'get_mail', $name);
|
||||
break;
|
||||
case 'return_money':
|
||||
$this->db->query("INSERT INTO `city_mail_items` (`sender`, `to`, `item_id`, `count`, `delivery_time`, `date`)
|
||||
VALUES (?d, ?d, '1000', ?f, ?d, ?d)", $this->guid ,$sender ,rdf($money_count) ,time() ,time());
|
||||
$this->char->history->Mail('Return', $name, $sender);
|
||||
$this->char->error->Mail(408, 'get_mail', $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*Отправка предмета*/
|
||||
function sendItem ($mail_to, $item_id)
|
||||
{
|
||||
if (checki($item_id))
|
||||
$this->char->error->Mail(213, 'items');
|
||||
|
||||
if (checki($mail_to))
|
||||
$this->char->error->Mail(106, 'items');
|
||||
|
||||
if ($mail_to == $this->guid)
|
||||
$this->char->error->Mail(218);
|
||||
|
||||
$mail_to = $this->getChar('char_db', 'guid', $mail_to);
|
||||
|
||||
if (!$mail_to)
|
||||
$this->char->error->Mail(106, 'items');
|
||||
|
||||
$transfers = $this->getChar('char_db', 'transfers');
|
||||
|
||||
if ($transfers <= 0)
|
||||
$this->char->error->Mail(113, 'items');
|
||||
|
||||
$i_info = $this->db->selectRow("SELECT `i`.`name`,
|
||||
`i`.`mass`
|
||||
FROM `character_inventory` AS `c`
|
||||
LEFT JOIN `item_template` AS `i`
|
||||
ON `c`.`item_entry` = `i`.`entry`
|
||||
WHERE `c`.`id` = ?d
|
||||
and `c`.`guid` = ?d
|
||||
and `c`.`wear` = '0'
|
||||
and `c`.`mailed` = '0'
|
||||
and `i`.`price_euro` = '0';", $item_id ,$this->guid) or $this->char->error->Mail(213, 'items');
|
||||
list($i_name, $i_mass) = array_values($i_info);
|
||||
$price = $this->getPrice($item_id);
|
||||
|
||||
if (!($this->changeMoney(-$price)))
|
||||
$this->char->error->Mail(107);
|
||||
|
||||
$delivery_time = 1800 + time ();
|
||||
$this->db->query("UPDATE `characters` SET `transfers` = `transfers` - '1' WHERE `guid` = ?d", $this->guid);
|
||||
$this->db->query("UPDATE `character_inventory` SET `mailed` = '1' WHERE `guid` = ?d and `id` = ?d", $this->guid ,$item_id);
|
||||
$this->changeMass(-$i_mass);
|
||||
$this->db->query("INSERT INTO `city_mail_items` (`sender`, `to`, `item_id`, `delivery_time`, `date`)
|
||||
VALUES (?d, ?d, ?d, ?d, ?d)", $this->guid ,$mail_to ,$item_id ,$delivery_time ,time());
|
||||
$this->char->history->Mail('Send', "$i_name ($price кр)", $mail_to);
|
||||
$this->char->error->Mail(406, 'items', "$i_name|$price");
|
||||
}
|
||||
/*Получение/Возврат предмета*/
|
||||
function getItem ($item_id, $type)
|
||||
{
|
||||
if (checki($item_id))
|
||||
$this->char->error->Mail(112, 'get_mail');
|
||||
|
||||
global $history;
|
||||
$i_info = $this->db->selectRow("SELECT `m`.`id`,
|
||||
`m`.`sender`,
|
||||
`i`.`name`,
|
||||
`i`.`mass`
|
||||
FROM `city_mail_items` AS `m`
|
||||
LEFT JOIN `character_inventory` AS `c`
|
||||
ON `m`.`item_id` = `c`.`id`
|
||||
LEFT JOIN `item_template` AS `i`
|
||||
ON `c`.`item_entry` = `i`.`entry`
|
||||
WHERE `m`.`to` = ?d
|
||||
and `m`.`sender` = `c`.`guid`
|
||||
and `m`.`item_id` = ?d
|
||||
and `m`.`delivery_time` < ?d
|
||||
and `c`.`mailed` = '1';", $this->guid ,$item_id ,time()) or $this->char->error->Mail(112, 'get_mail');
|
||||
list($mail_id, $sender, $i_name, $i_mass) = array_values($i_info);
|
||||
$this->db->query("DELETE FROM `city_mail_items` WHERE `id` = ?d", $mail_id);
|
||||
echoScript("top.menu.location.reload();");
|
||||
switch ($type)
|
||||
{
|
||||
case 'get_item':
|
||||
$this->db->query("UPDATE `character_inventory` SET `mailed` = '0', `guid` = ?d, `last_update` = ?d WHERE `guid` = ?d and `id` = ?d", $this->guid ,time() ,$sender ,$item_id);
|
||||
$this->changeMass($i_mass);
|
||||
$this->char->history->Mail('Receive', $i_name, $sender);
|
||||
$this->char->error->Mail(407, 'get_mail', $i_name);
|
||||
break;
|
||||
case 'return_item':
|
||||
$delivery_time = 1800 + time();
|
||||
$this->db->query("UPDATE `character_inventory` SET `mailed` = '1' WHERE `guid` = ?d and `id` = ?d", $sender ,$item_id);
|
||||
$this->db->query("INSERT INTO `city_mail_items` (`sender`, `to`, `item_id`, `delivery_time`, `date`)
|
||||
VALUES (?d, ?d, ?d, ?d, ?d)", $this->guid ,$sender ,$item_id ,$delivery_time ,time());
|
||||
$this->char->history->Mail('Return', $i_name, $sender);
|
||||
$this->char->error->Mail(408, 'get_mail', $i_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user