Exemple #1
0
 /**
  * 达成成就
  * @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;
 }
Exemple #2
0
 /**
  * 接受任务
  *   
  * @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;
 }
Exemple #3
0
 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;
 }
Exemple #4
0
 /**
  * 使用广告
  * @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;
 }
Exemple #5
0
        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;
//**
Exemple #6
0
 /**
  * 互相加为好友
  */
 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;
 }
Exemple #7
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;
 }
Exemple #8
0
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 
Exemple #9
0
 /**
  * 金手指
  * @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;
 }
Exemple #10
0
        $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;
//**