1
This commit is contained in:
parent
0df61ca158
commit
765a6117e8
@ -3,6 +3,8 @@
|
||||
namespace models;
|
||||
|
||||
require_once('mt/Hero.php');
|
||||
require_once('mt/HeroLevel.php');
|
||||
require_once('mt/HeroQuality.php');
|
||||
require_once('models/HeroSkin.php');
|
||||
|
||||
use mt;
|
||||
@ -82,15 +84,16 @@ class Hero extends BaseModel {
|
||||
public static function addHero($heroMeta)
|
||||
{
|
||||
$realHeroMeta = mt\Hero::get($heroMeta['id']);
|
||||
SqlHelper::upsert(
|
||||
$randAttr = array();
|
||||
{
|
||||
$initQualityMeta = mt\HeroQuality::getByQuality(1);
|
||||
if ($initQualityMeta) {
|
||||
$randAttr = mt\HeroQuality::getRandAttr($initQualityMeta);
|
||||
}
|
||||
}
|
||||
SqlHelper::insert(
|
||||
myself()->_getSelfMysql(),
|
||||
't_hero',
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'hero_id' => $heroMeta['id']
|
||||
),
|
||||
array(
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'hero_id' => $heroMeta['id'],
|
||||
@ -99,7 +102,7 @@ class Hero extends BaseModel {
|
||||
'state' => self::GETED_STATE,
|
||||
'skill_lv1' => 1,
|
||||
'skill_lv2' => 1,
|
||||
'rand_attr' => '[]',
|
||||
'rand_attr' => json_encode($randAttr),
|
||||
'lock_type' => self::NO_LOCK,
|
||||
'unlock_time' => 0,
|
||||
'unlock_trade_time' => 0,
|
||||
@ -112,6 +115,13 @@ class Hero extends BaseModel {
|
||||
public static function addTryHero($heroMeta, $tryCount)
|
||||
{
|
||||
$realHeroMeta = mt\Hero::get($heroMeta['id']);
|
||||
$randAttr = array();
|
||||
{
|
||||
$initQualityMeta = mt\HeroQuality::getByQuality(1);
|
||||
if ($initQualityMeta) {
|
||||
$randAttr = mt\HeroQuality::getRandAttr($initQualityMeta);
|
||||
}
|
||||
}
|
||||
SqlHelper::upsert(
|
||||
myself()->_getSelfMysql(),
|
||||
't_hero',
|
||||
|
@ -17,9 +17,26 @@ class HeroQuality {
|
||||
return getXVal(self::$qualityHash, $quality, null);
|
||||
}
|
||||
|
||||
public static function getRandAttr($initMeta, $nextMeta, $oldAttr, &$newAttr)
|
||||
public static function getRandAttr($qualityMeta)
|
||||
{
|
||||
|
||||
$nums = explode(':', $qualityMeta['rand_attrs_num']);
|
||||
$attrs = StrHelper::parseList($qualityMeta['rand_attrs'], array('|', ':'));
|
||||
$num = rand($nums[0], $nums[1]);
|
||||
shuffle($attrs);
|
||||
$result = array();
|
||||
$i = 0;
|
||||
foreach ($attrs as $item) {
|
||||
if ($i < $num) {
|
||||
array_push($result,
|
||||
array(
|
||||
'attr_id' => $item[0],
|
||||
'type' => $item[1],
|
||||
'val' => rand($item[2], $item[3])
|
||||
));
|
||||
}
|
||||
++$i;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected static function getMetaList()
|
||||
@ -30,7 +47,7 @@ class HeroQuality {
|
||||
return self::$metaList;
|
||||
}
|
||||
|
||||
protected static function mustBeQualityLevelHash()
|
||||
protected static function mustBeQualityHash()
|
||||
{
|
||||
if (!self::$qualityHash) {
|
||||
self::$qualityHash = array();
|
||||
|
@ -10,21 +10,22 @@ class StrHelper {
|
||||
{
|
||||
$values = array();
|
||||
if (!empty($val) && count($separators) > 0) {
|
||||
function parse($data, $separators, $i, &$arr) {
|
||||
$strs = explode($separators[$i], $data);
|
||||
foreach ($strs as $str) {
|
||||
if ($i + 1 < count($separators)) {
|
||||
$item = array();
|
||||
parse($str, $separators, $i + 1, $item);
|
||||
array_push($arr, $item);
|
||||
} else {
|
||||
array_push($arr, $str);
|
||||
}
|
||||
}
|
||||
}
|
||||
parse($val, $separators, 0, $values);
|
||||
self::parse($val, $separators, 0, $values);
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
|
||||
private function parse($data, $separators, $i, &$arr) {
|
||||
$strs = explode($separators[$i], $data);
|
||||
foreach ($strs as $str) {
|
||||
if ($i + 1 < count($separators)) {
|
||||
$item = array();
|
||||
self::parse($str, $separators, $i + 1, $item);
|
||||
array_push($arr, $item);
|
||||
} else {
|
||||
array_push($arr, $str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user