139 lines
3.6 KiB
PHP
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;
|
|
}
|