/** * 达成成就 * @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; }
/** * 接受任务 * * @param $params * require u -- uid * tid -- 任务id * option fid -- freind id 接受好友分享的任务有此参数,否则不需要此参数 * @return * s -- OK,正常 * repeat,重复领取任务 * notexsit,该任务不存在 * notowner,是领取到的分享的任务,并非每天产生的3个任务 * notshare,好友未共享该任务 * cantaccept,状态不为0,不能接受 * locked,不能同时进行多项任务 * * at -- 接受任务的时间 * id -- 任务id,可能有变(接受好友的) * all,lock-- 测试用,稳定后删除 */ public function accept($params) { $uid = $params['u']; $fid = $params['fid']; $tid = $params['tid']; //判断用户是否正在任务中 $tu = new TTUser($uid); $lock = $tu->getf(TT::TASK_STAT); $ret['lock_status'] = $lock; if ($lock == '0') { //任务进行中 $ret['s'] = "locked"; return $ret; } if ($fid) { //接受好友的任务 $ftu = new TTUser($fid); $ftask_obj = $ftu->getbyid($tid); if (!$ftask_obj) { $ret['s'] = 'notexsit'; return $ret; } /* $today_start = strtotime (date( 'Y-m-d',time() ) ); if( $ftask_obj['ct'] < $today_start ){ $ret['s'] = 'needfriendupdate'; return $ret; } */ if ($ftask_obj['sc'] != '0') { //不是好友自己的任务,是分享来的 $ret['s'] = 'notowner'; return $ret; } if ($ftask_obj['s'] != '3') { $ret['s'] = 'notshare'; return $ret; } //遍历自己的任务列表,以免重复领取任务 $tasks = $tu->get(TT::TASK_GROUP); foreach ($tasks as $task) { if ($task['sc'] == $tid) { $ret['s'] = 'repeat'; return $ret; } } $task_obj = $ftask_obj; $ftask_obj['ac'] += 1; $ftu->puto($ftask_obj, TT::TASK_GROUP); //新任务需改为从tag生成 unset($task_obj['id']); $task_obj['s'] = '1'; $task_obj['at'] = time(); $task_obj['sc'] = $tid; $id = $tu->puto($task_obj, TT::TASK_GROUP); //返回新的任务id $ret['id'] = $id; $ret['at'] = $task_obj['at']; } else { //接受自己的任务 $task_obj = $tu->getbyid($tid); if (!$task_obj) { $ret['s'] = 'notexsit'; return $ret; } if ($task_obj['sc'] != '0') { //不是自己产生的任务 $ret['s'] = 'notowner'; return $ret; } if ($task_obj['s'] != '0') { $ret['s'] = 'cantaccept'; return $ret; } $task_obj['s'] = '1'; $task_obj['at'] = time(); $id = $tu->puto($task_obj, TT::TASK_GROUP); $ret['id'] = $id; $ret['at'] = $task_obj['at']; } //上锁 $tu->putf(TT::TASK_STAT, '0'); $ret['s'] = 'OK'; return $ret; }
public function debug_get($params) { $now = time(); $uid = $params['u']; $tu = new TTUser($uid); $fids = $params['fids']; $infos = $tu->get('fr', false); if (!$fids) { $fids = $tu->getf(TT::FRIEND_STAT); if (!$fids) { $fids = "quest01,quest02,quest03,quest04,quest05,quest06,quest07,quest08,quest09"; } /* if($infos){ $ret['infos']=TTExtend::processlist($infos); $ret['s'] = 'OK'; return $ret; } */ } else { $tu->putf(TT::FRIEND_STAT, $fids); } $fl = explode(',', $fids); $rinfos = array(); $dup = array(); $now = time(); $dup['253382225'] = 1; //$fl[]='253382225'; $friend_count = 0; //记录好友个数 foreach ($fl as $pid) { if ($dup[$pid]) { continue; } $dup[$pid] = 1; $finfos = TTGenid::getbypid($pid); //by tingkun $id = $finfos['id']; if ($id) { $fdid = $tu->getdid($id, 'fr'); $fdata = json_decode($infos[$fdid], true); //if(!$fdata || $fdata['ut']<$now - 3600){ if (!$fdata || $fdata['ut'] < $now - 3600) { $ftu = new TTUser($finfos['id']); $acc = $ftu->getdata(); $acc['name'] = $finfos['name']; $acc['icon'] = $finfos['icon']; $acc['pid'] = $pid; $acc['ut'] = $now; $acc['id'] = $fdid; $acc['dbid'] = $id; $tu->puto($acc); $rinfos[] = $acc; } else { $rinfos[] = $fdata; } unset($infos[$fdid]); } else { $ret['notget'][] = $pid; } //$rids = array_keys($infos); //$tu->remove($rids); $friend_count++; } if ($friend_count > $tu->getf('friend_count')) { $tu->putf('friend_count', $friend_count); } //* $rinfos[] = array('name' => 'GM', 'icon' => 'http://hdn.xnimg.cn/photos/hdn121/20100807/1345/h_tiny_WtRB_190e0000358b2f75.jpg', 'pid' => '253382225', 'exp' => '10000', 'dbid' => 2, 'ht' => $now, 'help_car' => 1); //GM //*/ $ret['infos'] = $rinfos; $ret['fids'] = $fids; $ret['s'] = 'OK'; return $ret; }
/** * 使用广告 * @param $params * require u -- 玩家id * tag -- 某类广告id; * * @return * s -- OK,other failed * s -- nofind,没有该广告 * s -- error, */ public function set($params) { $uid = $params['u']; $adv_tag = $params['tag']; $adv = AdvertConfig::getAdvert($adv_tag); if (!$adv) { $ret['s'] = 'notexsit'; return $ret; } $tu = new TTUser($uid); //增加扣钱操作和加人气值 $id = $tu->getoid('advert', TT::OTHER_GROUP); $advbag = $tu->getbyid($id); if (!$advbag || $advbag['bag'][$adv_tag] < 1) { $ret['s'] = 'notexsit'; $ret['r'] = $advbag; return $ret; } $now = time(); $advbag['use'][$now] = $adv_tag; $advbag['bag'][$adv_tag] -= 1; $exp = $tu->getf(TT::EXP_STAT); $ua = UpgradeConfig::getUpgradeNeed($exp); $maxpopu = $ua['maxpopu'] + $adv['maxpopular']; if ($maxpopu > $tu->getf('max_popu')) { $tu->putf('maxpopu', $maxpopu); } //使用广告次数 $ret['s'] = 'OK'; $ret['t'] = $now; $ret['tag'] = $adv_tag; $tu->puto($advbag, TT::ADVERT_GROUP, false); return $ret; }
eval('print_r( ' . $str . ');'); record_time($st, $str); echo "\n"; } } //Test::test_tt(); //testFeed(); /* Test::testTTable(); exit; Test::testTTUDB(); //Test::test_TTExtend(); exit; */ $u = 10; $tu = new TTUser($u); $f = 'gem'; $f = 'money'; $num = 1000; $ret[] = $tu->change($f, -$num); $ret[] = $tu->change($f, 100); $ret[] = $tu->change($f, 100); $ret[] = $tu->change($f, 100); $ret[] = $tu->change($f, 0); $ret[] = $tu->change($f, -100); $ret[] = $tu->getf($f); print_r($ret); //*/ //Test::testTTDB(); exit; //**
/** * 互相加为好友 */ public function add_friends($params) { $pids = $params['pids']; $ret['pids'] = $pids; $apids = explode(",", $pids); $length = count($apids); for ($i = 0; $i < $length; $i++) { $ui = TTGenid::getbypid($apids[$i]); $tu = new TTUser($ui['id']); $ret['bf'][$i] = $tu->getf(TT::FRIEND_STAT); $tu->putf(TT::FRIEND_STAT, $pids); $ret['af'][$i] = $tu->getf(TT::FRIEND_STAT); } /* $pids1 = $params['pids1']; $pids2 = $params['pids2']; $ret['pids1'] = $pids1; $ret['pids2'] = $pids2; $pid_array1 = explode(",",$pids1); $pid_array2 = explode(",",$pids2); $ret['array1'] = $pid_array1; $ret['array2'] = $pid_array2; foreach( $pid_array1 as $pid1 ){ $u1 = TTGenid::getbypid( $pid1 ); $tu1 = new TTUser( $u1['id'] ); } foreach( $pid_array2 as $pid2 ){ $u2 = TTGenid::getbypid( $pid2 ); $tu2 = new TTUser( $u2['id'] ); } $ret['bfids1'] = $tu1->getf( TT::FRIEND_STAT ); $ret['bfids2'] = $tu2->getf( TT::FRIEND_STAT ); // $tu1->putf( TT::FRIEND_STAT,$pid2 ); // $tu2->putf( TT::FRIEND_STAT,$pid1 ); $ret['afids1'] = $tu1->getf( TT::FRIEND_STAT ); $ret['afids2'] = $tu2->getf( TT::FRIEND_STAT ); */ 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; }
require_once '../../config.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <table> <tr> <?php $id = '4'; $user = new TTUser($id); $frd = $user->getf(TT::FRIEND_STAT); print_r($frd); $content = '<fb:name uid="loggedinuser"" firstnameonly="true" shownetwork="false"/>正在玩<a href="$facebook->canvas_url">開心酒店</a>,推薦你也來玩一把!<br><fb:req-choice url="kokopio" label="開始玩開心酒店"/>'; $gift = $_REQUEST["gift"]; if ($gift != NULL && $gift != '') { $content = '<fb:name uid="loggedinuser"" firstnameonly="true" shownetwork="false"/>用Mall送给你<a href="$facebook->canvas_url"><img src="../giftIcon/' . $gift . '"/></a>,快来领悟吧!<br/><fb:req-choice url="kokopio" label="開始玩mall"/>'; echo '<td>'; echo '<img src="../giftIcon/' . $gift . '"/>'; echo '</td>'; } ?> <td> <fb:serverfbml> <script type="text/fbml"> <fb:request-form action="inviteCallBack.php?<?php
/** * 金手指 * @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; }
$str = '$tn->numch("newdd")'; echo "{$str}="; eval('print_r( ' . $str . ');'); echo "\n"; } static function testGenId() { echo "test genid\n"; $data['pid'] = 'uning'; print_r($data = TTGenid::genid($data)); $data['newdatapid'] = 'uning1'; print_r(TTGenid::update($data)); print_r(TTGenid::genid($data)); $data['newdatapid'] = 'uning1 update iii'; $data['i newdatapid'] = 'uning1 update iii'; print_r(TTGenid::update($data)); print_r(TTGenid::genid(array('pid' => 'uning'))); } } Test::testTTUDB(); Test::test_TTExtend(); exit; $u = 20; $tu = new TTUser($u); $tu->putf($u, 'capacity', "5,3"); $ret['all'] = $tu->getf($u, 'capacity'); print_r($ret); print_r($tu->getf($u, array('capacity'))); //Test::testTTDB(); exit; //**