00003 不思议迷宫.0009.7:一键采矿(钻石、金蛋等)
矿有很多种,今天要说的是其中的钻石矿这种,也是就神龙许愿“我想要钻石”后进到夹层中,地上显示的那些需要点击99次(初次999次)的钻石矿。为了那么一点钻石,一顿狂点,手机屏幕不怕,那手也累啊,自动化它。
有游戏源码中,这种矿不叫“矿”,而是“矿山”。UIGrid中创建矿山的代码:
-- 创建矿山
function UIGrid:initMineHill()
local mineId = self.gridData.mine_id;
local pos = self.gridData:getPos();
local function onClicked(sender, eventType)
if eventType == ccui.TouchEventType.began then
-- 不能采矿
if not MineHillM.canMining(pos) then
return;
end
-- 更新建筑访问
self:updateBuildingVisit();
local mineId = self.gridData.mine_id;
if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then
-- 金蛋
if not self.gridData:canHit() then
alert(getLocStr("cannot_reach"));
return;
end
elseif #MineHillM.findEmptyPos() <= 0 then
-- 如果没有空位了
alert(getLocStr("no_pos_for_mine"));
return;
end
-- 采矿
DungeonActionM.go("mining_diamond", pos);
EventMgr.fire(event.PLAYER_MOVE, pos);
end
end
-- 建筑图标
local iconPath = getLevelItemIconPath(MineHillM.query(mineId, "icon"));
self:myShowContent(iconPath);
self.icon = ccui.ImageView:create(iconPath);
self.icon:setTouchEnabled(true);
self.icon:addTouchEventListener(onClicked);
self.item:addChild(self.icon);
self.iconPath = iconPath;
-- 剩余次数
self:redrawMineHillLeftTimes();
if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then
-- 金蛋先隐藏
self.icon:setVisible(false);
self.barNode:setVisible(false);
end
end
onClicked这个回调函数没有被保存,那我们就自己存一下。然后在UIDungeonMain构造中进行调用。
首先判断地牢中是否存在矿上,如果存在,就创建“自动采矿”按钮,设置其点击回调:
local function tiewen_hasMineHill()
for i=1,#self.grids do
local g = self.grids[i];
if g.tiewen_pickMineHillClick ~= nil then return true; end
end
return false;
end
local function tiewen_isUnminedMineHill(grid)
if grid.tiewen_pickMineHillClick == nil then return false; end
if not MineHillM.canMining(grid.index) then
return false;
end
local mineId = grid.gridData.mine_id;
if MineHillM.query(mineId, "type") == MINE_TYPE_EGG then
if not grid.gridData:canHit() then return false; end
elseif #MineHillM.findEmptyPos() <= 0 then return false; end
return true;
end
local function tiewen_hasUnminedMineHill()
for i=1,#self.grids do
local g = self.grids[i];
if tiewen_isUnminedMineHill(g) and g.icon:isVisible() then return true; end
end
return false;
end
local function tiewen_autoMiningMineHill()
for i=1,#self.grids do
local g = self.grids[i];
if tiewen_isUnminedMineHill(g) and g.icon:isVisible() then
g.tiewen_pickMineHillClick(nil, ccui.TouchEventType.began);
end
end
end
local function onMyButton_autoMiningMineHill(sender, eventType)
if eventType ~= ccui.TouchEventType.ended then return; end
local o = {};
o.timer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function ()
if tiewen_hasUnminedMineHill() then
tiewen_autoMiningMineHill()
else
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(o.timer);
end
end, 0.05, false);
end
local ammh = nil;
if tiewen_hasMineHill() then
ammh = TieWen_UI.createButton(self, "自动采矿", onMyButton_autoMiningMineHill);
end
如有需要,可进群161355323下载补丁或安装程序。