예제 #1
0
파일: Achieve.php 프로젝트: uning/mall-back
 /**
  * 达成成就
  * @param $params
  *  require    u      --  userid
  *             tag    --  成就种类,对应xml的id
  * @return
  *   s                --  OK,others fail
  */
 public function finish($params)
 {
     $uid = $params['u'];
     $tag = $params['tag'];
     $tu = new TTUser($uid);
     $id = $tu->getoid('achieves', TT::OTHER_GROUP);
     $achieves = $tu->getbyid($id);
     if ($achieves[$tag]) {
         $ret['s'] = 'repeat';
         return $ret;
     }
     $config = AchieveConfig::getAchieve($tag);
     $count = $tu->getf($config['group']);
     if ($count < $config['aimNum']) {
         //检验是否真的完成
         $ret['s'] = 'unfinish';
         return $ret;
     }
     $achieves[$tag] = time();
     $money = $tu->chMoney($config['rewardMoney']);
     $exp = $tu->numch('exp', $config['rewardRep']);
     if ($config['item']) {
         //成就达成的物品奖励
     }
     $achieves['id'] = $id;
     //		$ret['b'] = $achieves;
     $tu->puto($achieves);
     $ret['a'] = $tu->getbyid($id);
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #2
0
파일: accept.php 프로젝트: uning/mall-back
        }
    }
} else {
    if (!is_array($ids)) {
        $ids = array();
    }
    if (array_key_exists($touser, $ids)) {
        $invite = true;
    }
    if (array_key_exists($touser, $getted)) {
        $got = true;
    }
}
if ($invite && $new == 1 && !$gemd && !$ut && !$got) {
    $ftu->numch('invite_num', 1);
    $cid = $ftu->getoid('copilot', TT::OTHER_GROUP);
    $copilot = $ftu->getbyid($cid);
    $copilot['id'] = $cid;
    $copilot['bag'][2004] += 1;
    $ftu->puto($copilot);
    $tsess['gemd'] = 1;
    TTGenid::update($tsess, $tsess['id']);
}
if ($invite) {
    $gid = $link['gift'];
    if ($gid) {
        ?>
		<div id='content'>
	<div class='container'>
        <div class='canvas'>
			<div id="header">
예제 #3
0
 /**
  * 使用副驾驶
  * @param $params
  * require          u             --   user_id
  *                  tag           --   副驾驶类别
  *                  cid           --   car id
  * @return
  *                  s             --   OK
  *                  tag           --   副驾驶tag
  *                  car           --   测试信息
  *                  copi          --   测试信息
  */
 public function apply_copolit($params)
 {
     $uid = $params['u'];
     $tag = $params['tag'];
     $cid = $params['cid'];
     $copi = self::$_config[$tag];
     $stat['tag'] = $tag;
     $stat['op'] = 'apply_copolit';
     $stat['num'] = $num;
     $stat['u'] = $uid;
     $stat['tm'] = $_SERVER['REQUEST_TIME'];
     $gemt = TT::GemTT();
     if (!$copi) {
         $ret['s'] = 'copinotexist';
         $stat['s'] = $ret['s'];
         $gemt->putKeep(null, $stat);
         return $ret;
     }
     $tu = new TTUser($uid);
     $id = $tu->getoid('copilot', TT::OTHER_GROUP);
     $copilot = $tu->getbyid($id);
     $car_obj = $tu->getbyid($cid);
     if (!$car_obj) {
         $ret['s'] = 'carnotexsit';
         $stat['s'] = $ret['s'];
         $gemt->putKeep(null, $stat);
         return $ret;
     }
     if ($tag != 2006 && $car_obj['copolitTag']) {
         $ret['s'] = 'repeat';
         $stat['s'] = $ret['s'];
         $gemt->putKeep(null, $stat);
         return $ret;
     }
     $goods = ItemConfig::getItem($car_obj['goodsTag']);
     if ($tag != 2006) {
         if ($copilot['bag'][$tag] < 1) {
             $ret['s'] = 'needbuy';
             $stat['s'] = $ret['s'];
             $gemt->putKeep(null, $stat);
             return $ret;
         }
         $copilot['bag'][$tag] -= 1;
         $car_obj['copolitTag'] = $tag;
     } else {
         if ($goods['buytime'] >= 1800) {
             $car = ItemConfig::getItem($car_obj['tag']);
             $add_exp = $goods['exp'] * $car['goodsNumber'];
             //乘以载重箱,经验不包括好友帮助增加的箱数
             if ($add_exp) {
                 $tu->addExp($add_exp);
             }
         }
         unset($car_obj['addgoods']);
         unset($car_obj['accelerate']);
         unset($car_obj['t']);
         unset($car_obj['help']);
         unset($car_obj['goodsTag']);
         unset($car_obj['copolitTag']);
     }
     $copilot['id'] = $id;
     $now = time();
     $tu->puto($copilot);
     if ($copi['addgoods']) {
         $car_obj['addgoods'] += $copi['addgoods'];
     }
     if ($copi['accelerate'] && $car_obj['t']) {
         if ($now - $car_obj['t'] + $copi['accelerate'] > $goods['buytime']) {
             $car_obj['t'] = $now - $goods['buytime'];
         } else {
             $car_obj['t'] -= $copi['accelerate'];
         }
     }
     $tu->puto($car_obj);
     $ret['s'] = 'OK';
     $ret['tag'] = $tag;
     $stat['s'] = $ret['s'];
     $gemt->putKeep(null, $stat);
     return $ret;
 }
예제 #4
0
 public function checkshop($params)
 {
     $uid = $params['u'];
     $sid = $params['sid'];
     $tu = new TTUser($uid);
     $shop_obj = $tu->getbyid($sid);
     if (!$shop_obj) {
         $ret['s'] = 'notexsit';
         return $ret;
     }
     $goods_list = $shop_obj['goods'];
     $condata = array();
     if (!$goods_list) {
         $ret['s'] = 'nogoods';
         return $ret;
     }
     foreach ($goods_list as $goods_id => $stime) {
         $goods_obj = $tu->getbyid($goods_id);
         $condata[$stime] = $goods_obj;
     }
     $ret['condata'] = $condata;
     $popu = $params[TT::POPU];
     $ret['bpopu'] = $popu;
     $ua = UpgradeConfig::getUpgradeNeed($params['exp']);
     $ret['ua'] = $ua;
     //算人气
     $shops = $tu->get(TT::SHOP_GROUP);
     foreach ($shops as $shop) {
         $ret['shop_num_shop'][] = $shop;
         if ($shop['pos'] != 's') {
             $item = ItemConfig::getItem($shop['tag']);
             $shop_num += $item['gridWidth'];
         }
     }
     $ret['ashopnum'] = $shop_num;
     if (!$shop_num) {
         $ret['s'] = 'noshopexist';
         return $ret;
     }
     $shop_popu = $shop_num * 15;
     //只算店面人气
     $popu += $shop_popu;
     if ($popu > $ua['maxpopu']) {
         $popu = $ua['maxpopu'];
     }
     $ret['apopu'] = $popu;
     $aid = $tu->getoid('advert', TT::OTHER_GROUP);
     $adv = $tu->getbyid($aid);
     $used_advert = $adv['use'];
     //		$ret['bbbbbadvert'] = $adv;
     $computetime = $params[TT::COMPUTE_PONIT];
     //		$ret['now'] = date( TM_FORMAT,$now );
     //		$ret['lastcomputetime'] = date( TM_FORMAT,$computetime );
     $selloutids = array();
     $income = 0;
     $special = 0;
     //特殊商店的收入
     $sale_count = 0;
     //销售份数
     $now = time();
     $sconfig = ItemConfig::getItem($shop_obj['tag']);
     //			$ret['sconfig'][$s] = $sconfig;
     ksort($condata);
     $curtime = 0;
     //可以售卖新商品时间
     $cgoods = array();
     foreach ($condata as $t => $g) {
         $gconfig = ItemConfig::getItem($g['tag']);
         $ctime = $g['ctime'];
         //上次结算时间
         if ($curtime < $t) {
             $curtime = $t;
         }
         //上架时间
         if ($curtime < $ctime) {
             $curtime = $ctime;
         }
         $g['ctime'] = $now;
         $ret['tloop'][$t] = date(TM_FORMAT, $curtime);
         $gaps = array();
         if ($used_advert) {
             $tmp = self::getTimeRates($tu, $gaps, $used_advert, $curtime, $popu, $ua['maxpopu'], $now, $shop_num);
             //			            $ret['advertisement'][$s][$t] = $tmp;
         } else {
             $gaps = array(array($now - $curtime, $popu / ($shop_num * 15)));
         }
         $ret['gaps'][$t] = $gaps;
         //			foreach($gaps as $gr){
         foreach ($gaps as $k => $gr) {
             //测试信息需要该索引值
             $stime = $gr[0];
             if ($sconfig['gridWidth']) {
                 $pertime = $gconfig['selltime'] / ($sconfig['gridWidth'] * $gr[1]);
             }
             if ($pertime) {
                 $snum = floor($stime / $pertime);
             }
             $ret['pertime'][$t][$k] = $pertime;
             if ($snum >= $g['num']) {
                 //卖完了
                 $asnum = $g['num'];
             } else {
                 $asnum = $snum;
             }
             //				$ret['asnum'][$s][$t][$k][$g['tag'] ] = $asnum;
             $ret['sell'][$g['tag']] += $asnum;
             $sale_count += $asnum;
             //记录销售份数,成就用
             $income += $asnum * $gconfig['sellmoney'];
             //sellmoney是单份物品的卖价
             $g['num'] -= $asnum;
             //				$g['scount'] += $asnum;
             if ($g['num'] == 0) {
                 //当前时间段卖光此箱货物,继续卖下一个货物
                 $cgoods[] = $g;
                 $selloutids[] = $g['id'];
                 unset($shop_obj['goods'][$g['id']]);
                 break;
                 //跳出时间段循环,继续卖同一商店下一个上架时间的货物(在同一商店,同一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
             }
         }
         $tu->puto($shop_obj, TT::SHOP_GROUP);
         if ($g['num'] != 0) {
             $tu->puto($g, TT::GOODS_GROUP);
             //未卖完的商品需要保存回库,继续卖同一商店下一个上架时间的货物(在同一商店,一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
             break;
             //跳出上架时间循环,但是继续店铺循环,终止同一店铺的货物队列中其他货物的结算
         }
     }
     //删除使用过的广告队列
     unset($adv['use']);
     if ($used_advert) {
         //如果是空数组
         $adv['use'] = $used_advert;
     }
     $adv['id'] = $aid;
     $tu->puto($adv, TT::ADVERT_GROUP, false);
     //总销售份数
     $now_sale_count = $tu->numch('total_count', $sale_count);
     //总销售额
     $now_total_sale = $tu->numch('total_sale', $income);
     $ret['s'] = 'OK';
     $ret['income'] = $income;
     $ret['money'] = $tu->numch('money', $income);
     $ret['t'] = $now;
     $tu->remove($selloutids);
     $tu->putf(TT::COMPUTE_PONIT, $now);
     return $ret;
 }
예제 #5
0
파일: Man.php 프로젝트: uning/mall-back
 /**
          * update
 * @param $params
 *  require u        -- user 
 *          type     -- 满足type
 * @return 
 *  s   -- OK ,or other fail
                    max,超出限制
                    notype,超出限制
          *  money  -- total money
          *  exp    -- total exp 
 *  award 
                  money
                  exp
 *  d   --新的对象
 */
 public function satisfy($params)
 {
     static $type2award = array(1 => array('money' => 10, 'exp' => 2));
     $uid = $params['u'];
     $type = $params['type'];
     $award = $type2award[$type];
     //$type  = 1;
     if (!$award) {
         $ret['s'] = 'notype';
         return $ret;
     }
     $tu = new TTUser($uid);
     $id = $tu->getoid('satisfy', TT::OTHER_GROUP);
     $data = $tu->getbyid($id);
     $data['id'] = $id;
     $now = time();
     $now_date = date('Ymd', $now);
     if ($data['date'] != $now_date) {
         $data['r'] = array();
         $data['date'] = $now_date;
     }
     if (++$data['r'][$type] > 10) {
         $ret['s'] = 'max';
         return $ret;
     }
     $ret['award'] = $award;
     foreach ($award as $k => $v) {
         $ret[$k] = $tu->numch($k, $v);
     }
     $ret['d'] = $data;
     $ret['s'] = 'OK';
     $tu->puto($data, '', false);
     return $ret;
 }
예제 #6
0
파일: Advert.php 프로젝트: uning/mall-back
 /**
  * 获取广告
  * @param $params
  *   require  u       --  玩家id
  * @return 
  *   s                --  OK,other failed
  *   use              -- 使用广告宣传队列,包括历史和当前正在使用
  *                    starttime=>tag
  *                    1234445=>122
  *   bag              tag=>num,数组
  */
 public function get($params)
 {
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $id = $tu->getoid('advert', TT::OTHER_GROUP);
     $advbag = $tu->getbyid($id);
     //      $ret['advbag'] = $advbag;
     if (!$advbag['bag'] && !$advbag['use']) {
         $ret['s'] = 'notexsit';
         return $ret;
     }
     $advbag['s'] = 'OK';
     $advbag['id'] = $id;
     return $advbag;
 }
예제 #7
0
파일: Tool.php 프로젝트: uning/mall-back
 public function test_feed($params)
 {
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $id = $tu->getoid('achieves', TT::OTHER_GROUP);
     $achieves = $tu->getbyid($id);
     $aparams = $tu->getf(array('popu', 'invite_count', 'gogoods_count', 'total_count', 'total_sale'));
     $ret['baparams'] = $aparams;
     foreach (AchieveConfig::$_config as $tag => $conf) {
         $ret['tag'][] = $tag;
         $ret['conf'][] = $conf;
     }
     $data = array('total_count' => 50000, 'total_sale' => 100000, 'gogoods_count' => 3000);
     $tu->mputf($data);
     $aparams = $tu->getf(array('popu', 'invite_count', 'gogoods_count', 'total_count', 'total_sale'));
     $ret['aaparams'] = $aparams;
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #8
0
 public static function dcheckout($params)
 {
     $uid = $params['u'];
     $sids = $params['sids'];
     $now = $params['now'];
     $tu = new TTUser($uid);
     if (!$now) {
         $now = time();
     }
     $debug = true;
     $goods = $tu->get(TT::GOODS_GROUP);
     //$ret['goods']=$goods;
     foreach ($goods as $g) {
         $shopid = $g['pos']['y'];
         if (!$shopid || $shopid == 's') {
             continue;
         }
         if (!isset($condata[$shopid]['shop'])) {
             $shop = $tu->getbyid($shopid);
             if (!$shop) {
                 //error log
                 $ret['goods_no_shop'][] = $g;
                 continue;
             }
             $condata[$shopid]['shop'] = $shop;
             $item = ItemConfig::getItem($shop['tag']);
             $condata[$shopid]['sconfig'] = $item;
             $total_width += $item['gridWidth'];
         }
         $stime = $g['stime'];
         //上架时间
         $condata[$shopid]['goods'][$stime] = $g;
     }
     //$ret['condata'] = $condata;
     if (!$condata || !$total_width) {
         $ret['s'] = 'OK';
         $ret['msg'] = 'nogoods';
         $ret['condata'] = $condata;
         $ret['total_width'] = $total_width;
         return $ret;
     }
     $params = $tu->getf(array(TT::POPU, TT::EXP_STAT));
     $popu = $params[TT::POPU];
     $ua = UpgradeConfig::getUpgradeNeed($params['exp']);
     $maxpopu = $ua['maxpopu'];
     $aid = $tu->getoid('advert', TT::OTHER_GROUP);
     $adv = $tu->getbyid($aid);
     $used_advert = $adv['use'];
     if (!$used_advert) {
         $used_advert = array();
     }
     //处理广告
     foreach ($used_advert as $k => $v) {
         $adv = AdvertConfig::getAdvert($tag);
         if ($start + $adv['allTime'] < $now) {
             continue;
         }
         $savead[$k] = $v;
     }
     if ($savead) {
         $adv['use'] = $savead;
         //	$tu->puto($adv);
     } else {
         if ($used_advert) {
             unset($adv['use']);
             //	$tu->puto($adv);
         }
     }
     $selloutids = array();
     $income = 0;
     $sale_count = 0;
     //销售份数
     $popu += 15 * $total_width;
     foreach ($condata as $s => $vvv) {
         $sconfig =& $vvv['sconfig'];
         $gs =& $vvv['goods'];
         ksort($gs);
         $shop =& $vvv['shop'];
         $curtime = $shop['ctime'];
         //可以售卖新商品时间
         $cgoods = array();
         $shop_changed = false;
         foreach ($gs as $t => $g) {
             $gconfig = ItemConfig::getItem($g['tag']);
             if (!$gconfig) {
                 continue;
             }
             $ctime = $g['ctime'];
             //上次结算时间
             if ($curtime < $t) {
                 $curtime = $t;
             }
             //上架时间
             if ($curtime < $ctime) {
                 $curtime = $ctime;
             }
             if ($curtime < $g['stime']) {
                 $curtime = $g['stime'];
             }
             $gaps = self::getTimeRates($used_advert, $curtime, $now, $popu, $maxpopu, $total_width);
             $ret[$g['id']]['startctime'] = $curtime;
             $ret[$g['id']]['gaps'] = $gaps;
             $ret[$g['id']]['shop'] = $s;
             $ret[$g['id']]['mydata'] = $g;
             foreach ($gaps as $k => $gr) {
                 //测试信息需要该索引值
                 $pertime = $gconfig['selltime'] / $gr[1] / $sconfig['gridWidth'];
                 $snum = floor($gr[0] / $pertime);
                 if ($snum >= $g['num']) {
                     //卖完了
                     $asnum = $g['num'];
                 } else {
                     $asnum = $snum;
                 }
                 $ret['sell'][$g['tag']] += $asnum;
                 $sale_count += $asnum;
                 //记录销售份数,成就用
                 $income += $asnum * $gconfig['sellmoney'];
                 //sellmoney是单份物品的卖价
                 $g['num'] -= $asnum;
                 $curtime += floor($asnum * $pertime);
                 //
                 $g['ctime'] = $curtime;
                 $shop['ctime'] = $curtime;
                 if ($debug) {
                     $ret[$g['id']][$k]['sell_num'] = $asnum;
                     $ret[$g['id']][$k]['endcurtime'] = $curtime;
                     $ret[$g['id']][$k]['gap'] = $gr[0];
                     $ret[$g['id']][$k]['pertime'] = $pertime;
                     $ret[$g['id']][$k]['ratio'] = $gr[1];
                     $ret[$g['id']][$k]['left_num'] = $g['num'];
                     $ret[$g['id']][$k]['basespertime'] = $gconfig['selltime'];
                     $ret[$g['id']][$k]['shopwidth'] = $sconfig['gridWidth'];
                 }
                 if ($g['num'] == 0) {
                     //当前时间段卖光此箱货物,继续卖下一个货物
                     $cgoods[] = $g;
                     $selloutids[] = $g['id'];
                     $shop_changed = true;
                     unset($shop['goods'][$g['id']]);
                     break;
                     //跳出时间段循环,继续卖同一商店下一个上架时间的货物(在同一商店,同一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
                 }
             }
             if ($g['num'] != 0) {
                 if (!$debug) {
                     $tu->puto($g, TT::GOODS_GROUP);
                 }
                 break;
                 //跳出上架时间循环,但是继续店铺循环,终止同一店铺的货物队列中其他货物的结算
             }
         }
         //foreach goods
         if ($shop_changed) {
             if (!$debug) {
                 $tu->puto($g, TT::GOODS_GROUP);
             }
         }
     }
     //foreach shop
     if ($debug) {
         $ret['total_width'] = $total_width;
         $ret['popu'] = $popu;
         $ret['maxpopu'] = $maxpopu;
         $ret['params'] = $params;
     }
     //总销售份数
     //总销售额
     //记录玩家每一种物品卖出量
     $ret['s'] = 'OK';
     $ret['income'] = $income;
     //$ret['money']  = $tu->numch('money',$income);
     $ret['t'] = $now;
     $ret['rids'] = $selloutids;
     $ret['u'] = $uid;
     return $ret;
 }
예제 #9
0
 /**
  * 完成任务
  *   
  * @param $params
  *  require   u       --  uid
  *            tag     --  任务id
  *            rids     -- 消耗物品ids(只能是空闲物品)
  *            minus  (money=>11,gem=>122)
  * @return 
  *            s       --  OK,正常
  *            award    --  和新手等一致
  *                        finished,该任务不存在
  */
 public function finish($params)
 {
     $uid = $params['u'];
     $tag = $params['tag'];
     //判断用户是否正在任务中
     $tu = new TTUser($uid);
     $tid = $tu->getoid($tag, 'to');
     $to = $tu->getbyid($tid);
     if (!$to) {
         //	$ret['s']='no';
         //	return $ret;
         $to['id'] = $tid;
     }
     if ($to['s'] == 'finished') {
         $ret['s'] = 'finished';
         return $ret;
     }
     $conf = self::getConf($tag);
     $d = $conf['award'];
     if ($d) {
         foreach ($d as $k => $v) {
             $tu->numch($k, $v);
             $award[$k] = $v;
         }
     }
     $d = $params['minus'];
     if ($d) {
         foreach ($d as $k => $v) {
             $tu->numch($k, -$v);
         }
     }
     $items = $conf['items'];
     if ($items) {
         foreach ($items as $item) {
             $num = $item['num'];
             unset($item['num']);
             $iconf = ItemConfig::getItem($item['tag']);
             $g = $iconf['group'];
             if (!$g) {
                 $g = 'o';
             }
             if (!$num) {
                 $num = 1;
             }
             for ($i = 0; $i < $num; $i++) {
                 $item['pos'] = 's';
                 $item['id'] = $tu->getoid(null, $g);
                 $tu->puto($item);
                 $award['items'][] = $item;
             }
         }
     }
     $rids = $params['rids'];
     if ($rids) {
         $tu->remove($rids);
     }
     $ret['award'] = $award;
     $to['id'] = $tid;
     $to['s'] = 'finished';
     $to['ut'] = time();
     $tu->puto($to);
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #10
0
파일: HelpGet.php 프로젝트: uning/mallb
 /**
 * 领取
 * @param $params
 *   require  u      --  玩家id
 *            tag    --  对应xml的id,物品
 *            
 * @return 
 *            s      --  OK,other failed
 no,不能open的物品
 nopen,没有打开
 cond,没有达到条件
 award,已经领取
 *            ids    --  新增物品id
 */
 public function award($params)
 {
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $tag = $params['tag'];
     $conf = self::getConf($tag);
     if (!$conf) {
         $ret['s'] = 'no';
         return $ret;
     }
     $id = $tu->getoid($tag, 'ho');
     $obj = $tu->getbyid($id);
     if (!$obj) {
         $ret['s'] = 'nopen';
         return $ret;
     }
     if (count($obj['help']) < $conf['need_num']) {
         $ret['s'] = 'cond';
         return $ret;
     }
     if ($obj['award']) {
         $ret['s'] = 'award';
         return $ret;
     }
     $obj['award'] = $_SERVER['REQUEST_TIME'];
     $obj['id'] = $id;
     $tu->puto($obj);
     $iid = $tu->getoid(null, $conf['group']);
     $item['id'] = $iid;
     $item['pos'] = 's';
     $item['tag'] = $tag;
     $tu->puto($item);
     $ret['s'] = 'OK';
     $ret['id'] = $iid;
     $ret['tag'] = $tag;
     return $ret;
 }