186 lines
5.5 KiB
PHP
186 lines
5.5 KiB
PHP
<?php
|
|
|
|
require_once('mt/Item.php');
|
|
require_once('services/AwardService.php');
|
|
require_once('services/PropertyChgService.php');
|
|
require_once('models/Nft.php');
|
|
|
|
use phpcommon\SqlHelper;
|
|
use models\Nft;
|
|
|
|
class GMController extends BaseAuthedController {
|
|
|
|
public function _handlePre()
|
|
{
|
|
parent::_handlePre();
|
|
if (SERVER_ENV == _ONLINE) {
|
|
die("can't create GMController");
|
|
return;
|
|
}
|
|
}
|
|
|
|
public function execCmd()
|
|
{
|
|
$cmds = explode(' ', getReqVal('cmd', ''));
|
|
if (count($cmds) < 0) {
|
|
$this->_rspErr(1, 'Please enter instructions');
|
|
return;
|
|
}
|
|
$cmd = $cmds[0];
|
|
$params = count($cmds) > 1 ? array_slice($cmds, 1) : array();
|
|
$cmdHash = array(
|
|
'.help' => function () use($params) {
|
|
$this->help($params);
|
|
},
|
|
'.additem' => function () use($params) {
|
|
$this->addItem($params);
|
|
},
|
|
'.addnft' => function () use($params) {
|
|
$this->addNft($params);
|
|
},
|
|
'.addtili' => function () use($params) {
|
|
$this->addTili($params);
|
|
},
|
|
'.getsystime' => function () use($params) {
|
|
$this->getSysTime($params);
|
|
},
|
|
'.setsystime' => function () use($params) {
|
|
$this->setSysTime($params);
|
|
},
|
|
'.reset_mission' => function () use($params) {
|
|
$this->resetMission($params);
|
|
}
|
|
);
|
|
$func = getXVal($cmdHash, $cmd);
|
|
if ($func) {
|
|
$func($params);
|
|
} else {
|
|
$this->_rspErr(2, 'Unrecognized instruction');
|
|
return;
|
|
}
|
|
}
|
|
|
|
private function help($params)
|
|
{
|
|
$this->_rspData(array(
|
|
'text' => <<<END
|
|
.additem 道具id 道具数量 //添加道具
|
|
.addtili 英雄id 体力值 //添加英雄体力
|
|
.getsystime //获取服务器时间
|
|
.setsystime //设置服务器时间,示例:.setsystime 2021-12-08 00:00:00
|
|
.reset_mission //重置任务
|
|
END
|
|
));
|
|
}
|
|
|
|
private function addItem($params)
|
|
{
|
|
$itemId = getXVal($params, 0, 0);
|
|
$itemNum = getXVal($params, 1, 0);
|
|
$propertyChgService = new services\PropertyChgService();
|
|
$awardService = new services\AwardService();
|
|
$this->_addItems(array(
|
|
array(
|
|
'item_id' => $itemId,
|
|
'item_num' => $itemNum
|
|
)
|
|
), $awardService, $propertyChgService);
|
|
$this->_rspData(array(
|
|
'text' => 'add item success',
|
|
'award' => $awardService->toDto(),
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
));
|
|
}
|
|
|
|
private function addNft($params)
|
|
{
|
|
$itemId = getXVal($params, 0, 0);
|
|
$propertyChgService = new services\PropertyChgService();
|
|
$awardService = new services\AwardService();
|
|
|
|
$itemMeta = mt\Item::get($itemId);
|
|
if ($itemMeta) {
|
|
$tokenType = Nft::getTokenType($itemMeta);
|
|
if ($tokenType == Nft::NONE_TYPE) {
|
|
myself()->_rspErr(1, 'param item_id error');
|
|
return;
|
|
} else {
|
|
SqlHelper::insert(
|
|
myself()->_getMarketMysql(),
|
|
't_nft',
|
|
array(
|
|
'token_id' => Nft::genTempTokenId(),
|
|
'token_type' => $tokenType,
|
|
'game_id' => 2006,
|
|
'item_id' => $itemId,
|
|
'owner_address' => myself()->_getAddress(),
|
|
'createtime' => myself()->_getNowTime(),
|
|
'modifytime' => myself()->_getNowTime(),
|
|
)
|
|
);
|
|
}
|
|
} else {
|
|
myself()->_rspErr(1, 'param item_id error');
|
|
return;
|
|
}
|
|
|
|
$this->_rspData(array(
|
|
'text' => 'add nft success',
|
|
'award' => $awardService->toDto(),
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
));
|
|
}
|
|
|
|
private function addTili($params)
|
|
{
|
|
$heroId = getXVal($params, 0, 0);
|
|
$tili = getXVal($params, 1, 0);
|
|
Hero::update($heroId, array(
|
|
'hero_tili' => "hero_tili + ${tili}"
|
|
));
|
|
$propertyChgService->addHeroChg();
|
|
$this->_rspData(array(
|
|
'text' => 'add item success',
|
|
'award' => $awardService->toDto(),
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
));
|
|
}
|
|
|
|
private function getSysTime($params)
|
|
{
|
|
$sysTime = phpcommon\timestamp_to_datetime(phpcommon\getNowTime());
|
|
$this->_rspData(array(
|
|
'text' => $sysTime,
|
|
));
|
|
}
|
|
|
|
private function setSysTime($params)
|
|
{
|
|
if (!defined('GLOBAL_TIME_OFFSET_KEY')) {
|
|
die('不支持设置系统时间');
|
|
return;
|
|
}
|
|
$newtime = strtotime($_REQUEST['newtime']);
|
|
if ($newtime <= 0) {
|
|
die('时间格式错误');
|
|
return;
|
|
}
|
|
$time_offset = $newtime - phpcommon\getRealTime();
|
|
$r = new phpcommon\Redis(array(
|
|
'host' => '127.0.0.1',
|
|
'port' => 6379,
|
|
'passwd' => ''
|
|
|
|
));
|
|
$r->set(GLOBAL_TIME_OFFSET_KEY, $time_offset);
|
|
}
|
|
|
|
private function resetMission($params)
|
|
{
|
|
myself()->_getSelfMysql()->execScript('DELETE FROM t_mission;');
|
|
myself()->_getSelfMysql()->execScript('DELETE FROM t_bigdata;');
|
|
myself()->_rspOk();
|
|
}
|
|
|
|
}
|