public function resetpop($params) { $uid = $params['u']; $tu = new TTUser($uid); $ret['bshopnum'] = $tu->numch(TT::SHOP_NUM, 0); $ret['ashopnum'] = $tu->numch(TT::SHOP_NUM, 0 - $ret['bshopnum']); /* $ret['bpop'] = $tu->numch( TT::POPU,0 ); $ret['apop'] = $tu->numch( TT::POPU,0-$ret['bpop'] ); */ return $ret; }
/** * 达成成就 * @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; }
break; } } } 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'>
/** * 进货 * @param $params * require u -- user_id * require c -- the car to be lold * id -- id of the car * goodsTag -- goods type the car can load * @return * s -- OK * c -- car status */ public function go_goods($params) { $uid = $params['u']; $goodsTag = $params['c']['goodsTag']; $cid = $params['c']['id']; $tu = new TTUser($uid); $car_obj = $tu->getbyid($cid); if (!$car_obj) { $ret['s'] = 'notexist'; return $ret; } if ($car_obj['t']) { $ret['s'] = 'doing'; return $ret; } $car = ItemConfig::getItem($car_obj['tag']); if (!$car) { $ret['s'] = 'caritemnotexist'; return $ret; } $goods = ItemConfig::getItem($goodsTag); if (!$goods) { $ret['s'] = 'goodsitemnotexist'; return $ret; } $buy_ret = $tu->buyItem($goods['tag'], $car['goodsNumber']); if ($buy_ret['s'] != 'OK') { return $buy_ret; } $add_exp = $goods['exp'] * $car['goodsNumber']; if ($add_exp) { $tu->addExp($add_exp); } $now = time(); $car_obj['goodsTag'] = $goodsTag; $car_obj['t'] = $now; $tu->puto($car_obj, TT::CAR_GROUP); $gogoods_count = $tu->numch('gogoods_count', 1); $ret['s'] = 'OK'; $params['c']['t'] = $now; $ret['c'] = $params['c']; // $ret['c'] = $car_obj; 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 $data (对应数据库的一条记录) * @param $num * @return */ public function saleItem(&$data, $num = 1) { $tag = $data['tag']; $stat['tag'] = $tag; $stat['num'] = $num; $stat['u'] = $this->_u; $stat['op'] = 'sale'; $stat['tm'] = $_SERVER['REQUEST_TIME']; $gemt = TT::GemTT(); $item = ItemConfig::getItem($tag); if (!$item || !isset($item['tag'])) { $ret['s'] = 'notfind'; $stat['s'] = $ret['s']; $gemt->putKeep(null, $stat); return $ret; } if ($item['onlygem'] == 'true') { //对用宝石购买的物品,按1:10000换成金币再3折 $num = $item['gem'] * 3000; } else { if ($item['group'] == 'g') { $num = $item['sellmoney'] * $item['unitcout'] * 0.3; } else { $num = $item['money'] * 0.3; } } $rnum = $this->numch(TT::MONEY_STAT, $num); $tusys = new TTUser(0); $statid = 'usalenum_' . $item['tag']; $saled = $tusys->numch($statid, $num); //记录系统回购每种商品总数 $ret['s'] = 'OK'; $ret['money'] = $rnum; $stat['money'] = $cnum; $stat['t'] = 'money'; $stat['s'] = $ret['s']; $gemt->putKeep(null, $stat); return $ret; }
/** * 结算卖货 * @param $params use shop * u - userid * sids - shop ids * @return * s - OK,noneed(短期内没有需要结算的商品),busy(太快) * income - 获得金币 * money - 总金币 * selloutids - 卖完删除的id * goods --数量有辩护的商品列表 */ public static function shop_checkout($params) { $uid = $params['u']; $sids = $params['sids']; $now = $params['now']; if (!$now) { $now = time(); } $tu = new TTUser($uid); //获取人气和宣传值 $shops = $tu->get(TT::SHOP_GROUP); foreach ($shops as $shop) { if ($shop['pos'] != 's') { $item = ItemConfig::getItem($shop['tag']); @asort($shop['goods']); $gids = @array_keys($shop['goods']); if ($gids) { $gs = $tu->getbyids($gids); if ($gs['g']) { $condata[$shop['id']]['sconfig'] = $item; $condata[$shop['id']]['shop'] = $shop; $condata[$shop['id']]['goods'] =& $gs['g']; $total_width += $item['gridWidth']; } else { unset($shop['goods']); //=array(); $tu->puto($shop); } } } } if (!$condata || !$total_width) { $ret['s'] = 'OK'; $ret['msg'] = 'nogoods'; 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']; $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); foreach ($gaps as $k => $gr) { //测试信息需要该索引值 //$snum = floor( $gr[0]/$gconfig['selltime']*$gr[1] ); $pertime = $gr[0] / $gconfig['selltime'] * $gr[1] * $sconfig['gridWidth']; $snum = floor($gr[0] / $pertime); if ($snum >= $g['num']) { //卖完了 $asnum = $g['num']; } else { $asnum = $snum; } if ($asnum == 0) { break; } $ret['sell'][$g['tag']] += $asnum; $sale_count += $asnum; //记录销售份数,成就用 $income += $asnum * $gconfig['sellmoney']; //sellmoney是单份物品的卖价 $g['num'] -= $asnum; $curtime += floor($asnum * $pertime); // $shop_changed = true; $shop['ctime'] = $curtime; $g['ctime'] = $curtime; if ($g['num'] == 0) { //当前时间段卖光此箱货物,继续卖下一个货物 $cgoods[] = $g; $selloutids[] = $g['id']; unset($shop['goods'][$g['id']]); break; //跳出时间段循环,继续卖同一商店下一个上架时间的货物(在同一商店,同一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间) } } //foreach group if ($g['num'] != 0) { $tu->puto($g, TT::GOODS_GROUP); break; //跳出上架时间循环,但是继续店铺循环,终止同一店铺的货物队列中其他货物的结算 } } //foreach goods if ($shop_changed) { $tu->puto($shop); } } //foreach shop //总销售份数 $now_sale_count = $tu->numch('total_count', $sale_count); //总销售额 $now_total_sale = $tu->numch('total_sale', $income); //记录玩家每一种物品卖出量 if ($ret['sell']) { foreach ($ret['sell'] as $gid => $num) { $tu->numch("sale_goods_{$gid}", $num); } } $ret['s'] = 'OK'; $ret['income'] = $income; $ret['money'] = $tu->chMoney($income); $ret['t'] = $now; $ret['rids'] = $selloutids; $ret['u'] = $uid; TTLog::record(array('m' => __METHOD__, 'u' => $uid, 'tm' => $_SERVER['REQUEST_TIME'], 'p' => json_encode($ret))); $tu->remove($selloutids); return $ret; }
<?php echo "<pre>\n"; require_once '../base.php'; $u = $argv[1]; if (!$u) { $u = $_REQUEST['u']; } if (!$u) { $pid = $argv[2]; if (!$pid) { $pid = $_REQUEST['pid']; } if (!$pid) { $pid = $_COOKIE['user_name']; } if (!$pid) { die("no param"); } $data = TTGenid::getbypid($pid); } else { $data = TTGenid::getbyid($u); } $u = $data['id']; if (!$u) { die("no u get"); } $tu = new TTUser($u); $tu->numch('money', 100000); $tu->numch('gem', 500); echo "OK\n";
/** * 完成任务 * * @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 -- user id * require d -- item_id 数组 * * @return * s -- OK ,or other fail * notexsit ,不存在配置 * notsale ,不能购买的物品 * level,等级未到 * achive, 所需成就buy_need_achiveid 未达成 * task,所需任务未达成 * buynumlimit,限量版已经卖完 * money, * gem */ public function sale($params) { $uid = $params['u']; $tu = new TTUser($uid); if ($tu->check_dup($params['_cid'], $ret)) { return $ret; } foreach ($params['d'] as $index => $id) { $item_obj = $tu->getbyid($id); if (!$item_obj) { $ret['s'] = 'notexsit'; $ret['index'] = $index; return $ret; } $item = ItemConfig::getItem($item_obj['tag']); if (!$item) { $ret['s'] = 'notexsit'; $ret['index'] = $index; return $ret; } $sale_ret = $tu->saleItem($item_obj); if ($sale_ret['s'] != 'OK') { $sale_ret['index'] = $index; return $sale_ret; } if ($item_obj['pos'] != 's') { $pop -= $item['pop']; } } if ($pop) { $tu->numch(TT::POPU, $pop); } $tu->remove($params['d']); $ret['s'] = 'OK'; return $ret; }
/** * 金手指 * @param $params * require u -- 玩家id * money -- 增加金币数 * gem -- 增加宝石数 * exp -- 增加经验数 * @return * s -- OK */ public function cheat($params) { $uid = $params['u']; $tu = new TTUser($uid); $tu->chMoney($params['money']); $tu->numch(TT::GEM_STAT, $params['gem']); // $tu->numch( TT::EXP_STAT,$params['exp'] ); $tu->addExp($params['exp']); $ret['a'] = $tu->getf(array(TT::MONEY_STAT, TT::GEM_STAT, TT::EXP_STAT)); $ret['s'] = 'OK'; return $ret; }
$data = TTGenid::getbyid($u); } if (!$data || !$data['id']) { echo "<p>查找用户</p>"; echo "<p><form method='get'>PID: <input name='pid' type='text' /><input type='submit' value='获取用户' /> </form></p>"; } else { $u = $data['id']; $name = $data['name']; if (!$u) { die("no u get"); } $tu = new TTUser($u); echo "<p><a href='add_user_money.php'>换个用户</a>  <a target='_blank' href='get_user.php?u=" . $u . "'>用户信息</a><p>"; echo "<p>" . $name . "</p>"; if ($_POST['money'] !== null && $_POST['gem'] !== null && $_POST['money'] >= 0 && $_POST['gem'] >= 0 && $_POST['money'] <= 1000000000 && $_POST['gem'] <= 1000) { $tu->numch('money', $_POST['money']); $tu->numch('gem', $_POST['gem']); echo "<p>OK, <a target='_blank' href='http://msg.renren.com/SendMessage.do?id=" . $data['pid'] . "'>发送站内信通知" . $name . "</a></p>"; } else { echo "<p>输入要加的金币和宝石数</p>"; echo "<form method='post'>"; echo "<p>金币: <input name='money' value='0' type='text' /></p>"; echo "<p>宝石: <input name='gem' value='0' type='text' /></p>"; echo "<p><input type='submit' value='确定'/></p></form>"; } echo "<p>现有金币" . $tu->chMoney(0) . ",宝石" . $tu->chGem(0) . "</p><br/><br/>"; } ?> </body> </html>