aozhiwei 2eace95439 1
2021-01-29 13:29:23 +08:00

139 lines
3.6 KiB
PHP

<?php
namespace metatable;
use phpcommon;
function getDropConf()
{
return _internalGetDropConf();
}
function getDropById($drop_id)
{
$conf = getDropConf();
$drop_id = (int)$drop_id;
return array_key_exists($drop_id, $conf) ? $conf[$drop_id] : null;
}
function getExplode($string)
{
$delim = "|";
$drop_multiply = explode($delim, $string);
$delim1 = ":";
$arr = array();
for ($i = 0; $i < count($drop_multiply); $i++) {
$mul = explode($delim1, $drop_multiply[$i]);
array_push($arr, $mul);
}
return $arr;
}
function _internalGetDropConf()
{
global $g_drop_table;
if (!$g_drop_table) {
$g_drop_table = require(getConfigBaseDir() . 'drop@drop.php');
}
return $g_drop_table;
}
function getDropAllListById($drop_id, $item_list)
{
$d = getDropById($drop_id);
if (!$d) {
return null;
}
$item_list = getDropInfo($d, $item_list);
return $item_list;
}
function getDropInfo($d, $item_list) {
$item_id_array = getExplode($d['item_id']);
$item_num_array = getExplode($d['num']);
$weight_array = getExplode($d['weight']);
$time_array = getExplode($d['time']);
if ($d['type'] == 1) {
for ($i = 0; $i < count($weight_array); $i++) {
$random = Rand(0, 10000);
if ($weight_array[$i][0] > $random) {
$item_id = $item_id_array[$i][0];
$item_num = $item_num_array[$i][0];
$time = 0;
if (!empty($time_array[$i][0]) && $time_array[$i][0] != '') {
$time = $time_array[$i][0];
}
array_push($item_list, array(
'item_id' => $item_id,
'item_num' => $item_num,
'time' => $time,
));
}
}
} else if ($d['type'] == 2) {
$weight_sum = 0;
$keys = 0;
for ($i = 0; $i < count($weight_array); $i++) {
$weight_sum += $weight_array[$i][0];
}
$random = Rand(0, $weight_sum);
$weight = 0;
for ($i = 0; $i < count($weight_array); $i++) {
$weight += $weight_array[$i][0];
if ($weight > $random) {
$keys = $i;
break;
}
}
$item_id = $item_id_array[$keys][0];
$item_num = $item_num_array[$keys][0];
$item_time = $time_array[$keys][0];
array_push($item_list, array(
'item_id' => $item_id,
'item_num' => $item_num,
'time' => $item_time,
));
}
return $item_list;
}
function getDropListById($drop_id)
{
$d = getDropById($drop_id);
if (!$d) {
return null;
}
$item_list = array();
$item_list = getDropInfo($d, $item_list);
return $item_list;
}
function getDropInfoById($drop_id)
{
$d = getDropById($drop_id);
if (!$d) {
return null;
}
$item_list = array();
$item_id_array = getExplode($d['item_id']);
$item_num_array = getExplode($d['num']);
$weight_array = getExplode($d['weight']);
$time_array = getExplode($d['time']);
for ($i = 0; $i < count($weight_array); $i++) {
$item_id = $item_id_array[$i][0];
$item_num = $item_num_array[$i][0];
$weight = $weight_array[$i][0];
$time = 0;
if (!empty($time_array[$i][0]) && $time_array[$i][0] != '') {
$time = $time_array[$i][0];
}
array_push($item_list, array(
'item_id' => $item_id,
'item_num' => $item_num,
'time' => $time,
'weight' => $weight,
));
}
return $item_list;
}