/** * 达成成就 * @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; }
} } } 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">
/** * 使用副驾驶 * @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; }
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; }
/** * 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; }
/** * 获取广告 * @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; }
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; }
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; }
/** * 完成任务 * * @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; }
/** * 领取 * @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; }