|
@@ -54,17 +54,28 @@ class StoreProc {
|
|
* @return Resp
|
|
* @return Resp
|
|
*/
|
|
*/
|
|
public static function gemLockState() {
|
|
public static function gemLockState() {
|
|
- list($index) = req()->paras;
|
|
|
|
|
|
+ list($uid) = req()->paras;
|
|
$user = ctx();
|
|
$user = ctx();
|
|
|
|
|
|
//把 qual pos u一样的宝石开锁关锁
|
|
//把 qual pos u一样的宝石开锁关锁
|
|
|
|
+ $gemStore = $user->store->gemStore;
|
|
|
|
+ $gem = $gemStore->$uid;
|
|
|
|
|
|
|
|
+ $tag = $gem->isUnlock == 0?1:0;
|
|
|
|
+ $gem->isUnlock = $tag;
|
|
|
|
|
|
- $user->store->equipPag = $index;
|
|
|
|
-
|
|
|
|
|
|
+ foreach ($gemStore as $k => $ins_gem) {
|
|
|
|
+ if($ins_gem->typeId ==$gem->typeId && $ins_gem->predicateId == $gem->predicateId){
|
|
|
|
+ $gemStore->$k->isUnlock = $tag;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
ctx($user);
|
|
ctx($user);
|
|
UserProc::updateUserInfo();
|
|
UserProc::updateUserInfo();
|
|
- return Resp::ok(array());
|
|
|
|
|
|
+ return Resp::ok(array(
|
|
|
|
+ 'gold'=>0,
|
|
|
|
+ 'store' => $user->store,
|
|
|
|
+ ));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -83,17 +94,83 @@ class StoreProc {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 所有装备的一键升级
|
|
|
|
+ * 规则:等级不同从等级小到大,等级一样按照部位顺序
|
|
*
|
|
*
|
|
- * @return type
|
|
|
|
|
|
+ * @return Resp
|
|
*/
|
|
*/
|
|
public static function allEquipUpgrade() {
|
|
public static function allEquipUpgrade() {
|
|
list($uid) = req()->paras;
|
|
list($uid) = req()->paras;
|
|
$user = ctx();
|
|
$user = ctx();
|
|
|
|
|
|
- //my_Assert(StlUtil::dictHasProperty($user->store->equip, $uid), ErrCode::user_store_NoEquip);
|
|
|
|
|
|
+ $equipDic = $user->store->equip;
|
|
|
|
+
|
|
|
|
+ $arr = array();
|
|
|
|
+ if($equipDic != null){
|
|
|
|
+ foreach ($equipDic as $k => $equip) {
|
|
|
|
+ $lvMo = GameConfig::equip_levelupgrade_getItem($equip->level);
|
|
|
|
+ $needGold = $lvMo->needGold;
|
|
|
|
+ $needItemNum = $lvMo->needItemNum;
|
|
|
|
+ $neeItemId = $equip->mo()->costTuzhiId;
|
|
|
|
+
|
|
|
|
+ if($user->baseInfo->gold >= $needGold && StlUtil::dictHasProperty($user->store->items, $neeItemId) && $user->store->items->$neeItemId >= $needItemNum){
|
|
|
|
+ $arr[] = $equip;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(count($arr) > 0){
|
|
|
|
+ //进行排序
|
|
|
|
+ $len = count($arr);
|
|
|
|
+ for($i = 0; $i < $len - 1; $i++){
|
|
|
|
+ for($j = 0; $j < $len -$i - 1; $j++){
|
|
|
|
+ if($arr[$j]->level > $arr[$j+1]->level){//从小到大
|
|
|
|
+ $temp = $arr[$j];
|
|
|
|
+ $arr[$j] = $arr[$j+1];
|
|
|
|
+ $arr[$j+1] = $temp;
|
|
|
|
+ } elseif ($arr[$j]->level == $arr[$j+1]->level) {
|
|
|
|
+ if($arr[$j]->mo()->position > $arr[$j+1]->mo()->position){
|
|
|
|
+ $temp = $arr[$j];
|
|
|
|
+ $arr[$j] = $arr[$j+1];
|
|
|
|
+ $arr[$j+1] = $temp;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //升级,扣除金币和图纸
|
|
|
|
+ while (true) {
|
|
|
|
+ $n = count($arr);
|
|
|
|
+ for($k = 0; $k < $n; $k++){
|
|
|
|
+ $equip = $arr[$k];
|
|
|
|
+ $lvMo = GameConfig::equip_levelupgrade_getItem($equip->level);
|
|
|
|
+ $needGold = $lvMo->needGold;
|
|
|
|
+ $needItemNum = $lvMo->needItemNum;
|
|
|
|
+ $neeItemId = $equip->mo()->costTuzhiId;
|
|
|
|
+
|
|
|
|
+ if($user->baseInfo->gold >= $needGold && StlUtil::dictHasProperty($user->store->items, $neeItemId) && $user->store->items->$neeItemId >= $needItemNum){
|
|
|
|
+ $id = $equip->typeId;
|
|
|
|
+ $equipDic->$id->level += 1;
|
|
|
|
+ $user->baseInfo->Consume_Gold($needGold);
|
|
|
|
+ $user->store->removeItem($neeItemId, $needItemNum);
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ StlUtil::arrayRemoveAt($arr, $k);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(count($arr) <= 0){
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ctx($user);
|
|
UserProc::updateUserInfo();
|
|
UserProc::updateUserInfo();
|
|
return Resp::ok(array(
|
|
return Resp::ok(array(
|
|
- 'heros' => $user->heros,
|
|
|
|
|
|
+ 'gold' => $user->baseInfo->gold,
|
|
'store' => $user->store,));
|
|
'store' => $user->store,));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -141,13 +218,15 @@ class StoreProc {
|
|
* @return type
|
|
* @return type
|
|
*/
|
|
*/
|
|
public static function gemCompose() {
|
|
public static function gemCompose() {
|
|
- list($uid) = req()->paras;
|
|
|
|
|
|
+ list($gemIds) = req()->paras;
|
|
$user = ctx();
|
|
$user = ctx();
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
//my_Assert(StlUtil::dictHasProperty($user->store->equip, $uid), ErrCode::user_store_NoEquip);
|
|
//my_Assert(StlUtil::dictHasProperty($user->store->equip, $uid), ErrCode::user_store_NoEquip);
|
|
UserProc::updateUserInfo();
|
|
UserProc::updateUserInfo();
|
|
return Resp::ok(array(
|
|
return Resp::ok(array(
|
|
- 'heros' => $user->heros,
|
|
|
|
|
|
+ 'gold' => $user->baseInfo->gold,
|
|
'store' => $user->store,));
|
|
'store' => $user->store,));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -382,13 +461,14 @@ class StoreProc {
|
|
my_Assert(count($val) > 1, "解析奖励字符串出错");
|
|
my_Assert(count($val) > 1, "解析奖励字符串出错");
|
|
|
|
|
|
list($itemId, $num) = $val; # ID, 数量
|
|
list($itemId, $num) = $val; # ID, 数量
|
|
- if (GameConfig::equip_getItem($itemId) != null) {
|
|
|
|
- self::PutEquipInStore($itemId, $num);
|
|
|
|
|
|
+ if (GameConfig::gem_getItem($itemId) != null) {
|
|
|
|
+ self::PutGemInStore($itemId, $num);
|
|
} else {
|
|
} else {
|
|
$itemMo = GameConfig::item_getItem($itemId);
|
|
$itemMo = GameConfig::item_getItem($itemId);
|
|
switch ($itemMo->itemType) {
|
|
switch ($itemMo->itemType) {
|
|
case 1:
|
|
case 1:
|
|
ctx()->baseInfo->Add_Gold($num);
|
|
ctx()->baseInfo->Add_Gold($num);
|
|
|
|
+ self::checkEquipUpgradeTip();
|
|
break;
|
|
break;
|
|
case 2:
|
|
case 2:
|
|
ctx()->baseInfo->Add_Cash($num);
|
|
ctx()->baseInfo->Add_Cash($num);
|
|
@@ -402,7 +482,9 @@ class StoreProc {
|
|
case 100:
|
|
case 100:
|
|
case 103:
|
|
case 103:
|
|
self::PutItemsInStore($itemId, $num);
|
|
self::PutItemsInStore($itemId, $num);
|
|
-
|
|
|
|
|
|
+ if($itemMo->itemType == 100){//图纸
|
|
|
|
+ self::checkEquipUpgradeTip();
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
|
|
|
|
@@ -419,23 +501,92 @@ class StoreProc {
|
|
} else {
|
|
} else {
|
|
$items->$itemId = $num;
|
|
$items->$itemId = $num;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
ctx()->store->items = $items;
|
|
ctx()->store->items = $items;
|
|
}
|
|
}
|
|
|
|
|
|
- public static function PutEquipInStore($equipId, $num) {
|
|
|
|
- if ($equipId == 0) {
|
|
|
|
- return;
|
|
|
|
|
|
+// public static function PutEquipInStore($equipId, $num) {
|
|
|
|
+// if ($equipId == 0) {
|
|
|
|
+// return;
|
|
|
|
+// }
|
|
|
|
+// $n = count((array) ctx()->store->equip) + 1;
|
|
|
|
+//
|
|
|
|
+// for ($index = 0; $index < $num; $index++) {
|
|
|
|
+// $Equip = new Ins_Equip();
|
|
|
|
+// $Equip->uid = $n;
|
|
|
|
+// $Equip->typeId = $equipId;
|
|
|
|
+// $Equip->qual = GameConfig::equip_getItem($equipId)->qual;
|
|
|
|
+// ctx()->store->equip->$n = $Equip;
|
|
|
|
+// $n += 1;
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 得到金币或是图纸的时候校验下,是否满足装备升级条件,满足则tip字段设置为1
|
|
|
|
+ */
|
|
|
|
+ public static function checkEquipUpgradeTip() {
|
|
|
|
+ $equipDic = ctx()->store->equip;
|
|
|
|
+ if($equipDic != null){
|
|
|
|
+ foreach ($equipDic as $k => $equip) {
|
|
|
|
+ $lvMo = GameConfig::equip_levelupgrade_getItem($equip->level);
|
|
|
|
+ $needGold = $lvMo->needGold;
|
|
|
|
+ $needItemNum = $lvMo->needItemNum;
|
|
|
|
+ $neeItemId = $equip->mo()->costTuzhiId;
|
|
|
|
+
|
|
|
|
+ if(ctx()->baseInfo->gold >= $needGold && StlUtil::dictHasProperty(ctx()->store->items, $neeItemId) && ctx()->store->items->$neeItemId >= $needItemNum){
|
|
|
|
+ $equipDic->$k->tip = 1;//绿点是每次得到金币或是图纸了,只要满足升级条件都变绿
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- $n = count((array) ctx()->store->equip) + 1;
|
|
|
|
|
|
+ ctx()->store->equip = $equipDic;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 新宝石入库
|
|
|
|
+ */
|
|
|
|
+ public static function PutGemInStore($id,$num) {
|
|
|
|
+ $length = ctx()->store->gemLength;
|
|
|
|
+
|
|
|
|
+ for ($i = 0; $i < $num; $i++) {
|
|
|
|
+ $length +=1;
|
|
|
|
+ $gem = new Ins_Gem();
|
|
|
|
+ $gem->uid = $length;
|
|
|
|
+ $gem->typeId = $id;
|
|
|
|
+ $gem->predicateId = self::RandomGemPredicateId($id);
|
|
|
|
+ $tag = self::CheckNewGemTip($gem);
|
|
|
|
+ $gem->isNew = $tag;
|
|
|
|
+
|
|
|
|
+ ctx()->store->gemStore->$length = $gem;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ctx()->store->gemLength = $length;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 新宝石随机词条 临时等刚哥
|
|
|
|
+ */
|
|
|
|
+ public static function RandomGemPredicateId($id) {
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
- for ($index = 0; $index < $num; $index++) {
|
|
|
|
- $Equip = new Ins_Equip();
|
|
|
|
- $Equip->uid = $n;
|
|
|
|
- $Equip->typeId = $equipId;
|
|
|
|
- $Equip->qual = GameConfig::equip_getItem($equipId)->qual;
|
|
|
|
- ctx()->store->equip->$n = $Equip;
|
|
|
|
- $n += 1;
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 新宝石提示
|
|
|
|
+ */
|
|
|
|
+ public static function CheckNewGemTip($gem) {
|
|
|
|
+ $gemStore = ctx()->store->gemStore;
|
|
|
|
+ $tag = false;
|
|
|
|
+ foreach ($gemStore as $k => $ins_gem) {
|
|
|
|
+ if($ins_gem->typeId ==$gem->typeId && $ins_gem->predicateId == $gem->predicateId){
|
|
|
|
+ $tag = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ return $tag == true?0:1;
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|