diff --git a/webapp/models/Gun.php b/webapp/models/Gun.php index 45978fde..7ac6d6a6 100644 --- a/webapp/models/Gun.php +++ b/webapp/models/Gun.php @@ -258,4 +258,25 @@ class Gun extends BaseModel { )); } + public static function gainGold($gunDto, $addGold) + { + $finalyAddGold = 0; + $goldLimit = 0; + $gunQualityMeta = mt\GunQuality::getByQuality($gunDto['quality']); + if ($gunQualityMeta) { + $attr = mt\AttrHelper::getAbsVal($gunDto['attr'], kHAT_LUCKY); + if ($attr) { + $goldLimit += $attr['val']; + } + $newGold = min($goldLimit, $gunDto['today_get_gold'] + $addGold); + $finalyAddGold = max(0, $newGold - $gunDto['today_get_gold']); + self::update($gunDto['gun_uniid'], + array( + 'today_get_gold' => $newGold, + 'last_get_gold_time' => myself()->_getNowTime() + )); + } + return $finalyAddGold; + } + } diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index cda4e287..2d0d121a 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -306,4 +306,25 @@ class Hero extends BaseModel { )); } + public static function gainGold($heroDto, $addGold) + { + $finalyAddGold = 0; + $goldLimit = 0; + $heroQualityMeta = mt\HeroQuality::getByQuality($heroDto['quality']); + if ($heroQualityMeta) { + $attr = mt\AttrHelper::getAbsVal($heroDto['attr'], kHAT_LUCKY); + if ($attr) { + $goldLimit += $attr['val']; + } + $newGold = min($goldLimit, $heroDto['today_get_gold'] + $addGold); + $finalyAddGold = max(0, $newGold - $heroDto['today_get_gold']); + self::update($heroDto['hero_uniid'], + array( + 'today_get_gold' => $newGold, + 'last_get_gold_time' => myself()->_getNowTime() + )); + } + return $finalyAddGold; + } + } diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index f6acbfc6..57519c14 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -16,6 +16,7 @@ require_once('models/Season.php'); require_once('models/Battle.php'); require_once('models/Bag.php'); require_once('models/Hero.php'); +require_once('models/Gun.php'); use mt; use phpcommon\SqlHelper; @@ -23,6 +24,7 @@ use models\Season; use models\Battle; use models\Bag; use models\Hero; +use models\Gun; class BattleDataService extends BaseService { @@ -30,10 +32,11 @@ class BattleDataService extends BaseService { public function updateBattleData() { - $heroDb = Hero::find(getReqVal('hero_uniid', 0)); - if (!$heroDb) { + $row = Hero::find(getReqVal('hero_uniid', 0)); + if (!$row) { return false; } + $heroDb = Hero::toDto($row); error_log(json_encode($_REQUEST)); error_log('updateBattleData1'); if (!$this->decCost($heroDb)) { @@ -354,26 +357,25 @@ class BattleDataService extends BaseService { if ($gold > 0) { $addGold = floor($gold / 3); } + $finalyAddGold = 0; if ($addGold) { - $heroQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality']); - if ($heroQualityMeta) { - $goldLimit = $heroMeta['gold_limit']; - $randAttr = emptyReplace(json_decode($row['rand_attr'], true), - array()); - if ($randAttr) { - $attr = mt\AttrHelper::getAbsVal($randAttr, kHAT_LUCKY); - if ($attr) { - $goldLimit += $attr['val']; + $finalyAddGold += Hero::gainGold($heroDb, $addGold); + { + for ($i = 1; $i <= 2; ++$i) { + $weaponUniid = getReqVal('weapon_uuid' . $i, 0); + if ($weaponUniid) { + $row = Gun::find($weaponUniid); + $gunDto = $gunDb ? Gun::toDto($row) : null; + if ($gunDto){ + $finalyAddGold += Gun::gainGold($gunDto, $addGold); + } } } - $newGold = min($goldLimit, $heroDb['today_get_gold'] + $addGold); - Hero::update($heroDb['hero_uniid'], - array( - 'today_get_gold' => $newGold, - 'last_get_gold_time' => myself()->_getNowTime() - )); } } + if ($finalyAddGold > 0) { + myself()->_addVirtualItem(V_ITEM_GOLD, $finalyAddGold); + } } }