打游戏的时候,自己搞来一个挂机脚本,算不算犯规?
比方说一些回合制或者棋牌类游戏,搞一些脚本自动出招或者出棋出牌(当然是软件根据对方的出招方式把自己的出招方式最优化),算不算犯规?
又比如跟别人下围棋,我搞来一个阿尔法狗围棋九段AI软件。对方如何下,我就在软件上模仿对方怎么下,把子落在对方给出的地方,然后阿尔法狗围棋AI软件给出对策。我就使用它的对策。把下棋的子落在阿尔法狗给出的地方。好不好?
比方说,跟别人现实生活实体围棋或者网络下棋,可以把围棋桌面坐标化。比方说,对方下棋。然后阿尔法狗给出或者报出自己下的棋的坐标。可能是通过手机图像发送过来的,也许是声音(最好带耳机)。
卡牌这种,炉石传说脚本满天飞,天梯20级以下几乎全脚本,也见怪不怪了。不过那样的脚本,智力低下,没有足够智能的应变。
而下围棋这事……你拿AI下赢人家,你在干嘛呢?你的乐趣在哪呢?
或者,自己写个AI试试?
个人观点是,只要脚本的行为普通玩家也能做到,那就不违规
开挂为什么违规,因为开挂的行为普通玩家做不到
但脚本正常情况只要不干扰游戏运行,其行为和普通玩家没有区别甚至弱于普通玩家,显然对于平衡性影响不大,仅仅是节约玩家自己的精力和时间支出,我认为是可以的
你说的第三种情况, 早就有小机灵鬼这么做过了 (
业余围棋赛选手被指用AI软件作弊-新华网近日,浙江的一场全国业余围棋比赛中,被誉为“业余棋王”的胡煜清输掉的一局棋,引发众多围棋爱好者关注。有网友根据棋谱和胡煜清的对手刘超在现场“将手机插在上衣口袋,摄像头对准棋盘”的细节,怀疑刘超利用了围棋AI(人工智能)软件作弊获得了胜利。
4月26日,北青报记者从大赛组委会了解到,目前刘超的参赛资格已被取消,“比赛当时,无法判断出他是否利用AI软件作弊,但其手机放置的位置,违反了相应的规则”。组委会工作人员表示,后续举办其他比赛时,将把“禁止选手使用人工智能辅助比赛”写进规则。
所以打比赛做好被抓的准备, 街头下棋做好被打的觉悟, 这么做是没问题的 (x
近几年越来越多的全自动挂机赚钱软件出现在市面上,出现在大家的视野里,有收费的,有免费的,那么这些是真的还是假的?全自动挂机赚钱软件是不是骗子?
看到很多人都关心这个问题,那么接下来简单说说这个东西吧
通过百度搜索全自动挂机赚钱软件,几乎可以看到很多网站都有。点进去一看都是一些游戏、或者聊天室软件,写着下载安装好,挂机一小时**元、这种绝对是假的。
一般都是你下载完,就会提示你需要拉够多少个人就可以挂机了。需要你发广告给他拉人,这就是拿我们当免费苦力,也有一种是以软件的形式,软件上也是如出一辙,写明需要下载安装几个软件,然后推广多少人就可以挂机了,绝对是假的!
做这种网站或者软件的人,就是通过cpa下载安装赚钱的,而你白白给人家做苦力,给人家干活了。这种人只不过是利用挂机的幌子诱导你安装他的软件而已。你是得不到任何收益的。
为什么说这个东西是假的呢?
你可以想一下,平台如果随随便便就被你用一个不知名的小软件,还是从网上免费找到的就能实现挂机盈利,平台不是早都亏的连裤衩都不剩了么
那么有真的吗?
这个当然是有的,不过你得懂一些技术,比如,硬件虚拟化技术
这个技术是干嘛用的?
其实就是可以利用技术手段,将一部手机模拟出无数个独一无二的手机,可以通过群控脚本NodeJS 集中起来刷赞,引流,养号 ,也可以批量挂机手游。
为什么要用这个技术呢?
因为手机的成本很大,你挂机200个,如果得有200个手机的话,一个手机假如说1000块,200个也20万了
为了在平台薅个羊毛,先搭进去20万,试问,谁能做到
这里呢,应该有人会想到模拟器这个东西,是的,模拟器能模拟手机,而且多开,但是,模拟器是不能够完全的模拟真实的手机环境的
如果你用鲁大师去检测就会发现

这里边的很多数据都不是真实手机的数据,而是你电脑的硬件数据
那么说明,模拟器就是模拟不成功的
模拟不成功,你在平台挂机干了活,要么就是平台把你号封了,要么就是平台把你拉黑名单不给你提取收益
赔了西瓜丢了芝麻,这种事情发生在不懂行的小白身上屡见不鲜
所以,如果你还想要从这个方向上面捞钱,了解一下这个东西是必须的
那么如何做呢?
这里就要涉及到专业的知识原理讲解了,文字说起来有点枯燥
如果你感兴趣的话,可以参考下图来找我交流
我这里用视频讲解了一下这个东西,你看完之后就能够清楚的明白
如何修改手机设备信息 - 西瓜视频var GameLayer=cc.Layer.extend({ | |
touchStartX:0, | |
touchStartY:0, | |
bullets:[], | |
enemies:[], | |
tools:[], | |
ctor: function (){ | |
this._super(); | |
this.touchStartX=0; | |
this.touchStartY=0; | |
this.bullets=[]; | |
this.enemies=[]; | |
this.tools=[]; | |
// 播放背景音乐 | |
cc.audioEngine.playMusic("res/sound/game_music.mp3",true); | |
// 加载plist | |
cc.spriteFrameCache.addSpriteFrames(res.shoot_background_plist); | |
cc.spriteFrameCache.addSpriteFrames(res.shoot_plist); | |
// 添加背景图 | |
var bg=new Background(false); | |
bg.setPosition(0,0); | |
this.addChild(bg); | |
// 添加飞机 | |
var player=new Player(this); | |
player.setPosition(cc.winSize.width / 2, -player.height / 2); | |
this.addChild(player); | |
player.setTag(1); | |
// 产生敌机 | |
this.schedule(function(){ | |
this.createEnemy(1); | |
},Global.createEnemySpeed(1)); | |
this.schedule(function(){ | |
this.createEnemy(2); | |
},Global.createEnemySpeed(2)); | |
this.schedule(function(){ | |
this.createEnemy(3); | |
},Global.createEnemySpeed(3)); | |
// 产生道具 | |
this.schedule(function(){ | |
this.createTool(1); | |
},Global.createToolSpeed(1)); | |
this.schedule(function(){ | |
this.createTool(2); | |
},Global.createToolSpeed(2)); | |
// 添加爆炸道具 | |
var bombNor=new cc.Sprite(cc.spriteFrameCache.getSpriteFrame("bomb.png")); | |
var bombSelected=new cc.Sprite(cc.spriteFrameCache.getSpriteFrame("bomb.png")); | |
bombSelected.setPosition(-bombSelected.width/4,-bombSelected.height/4); | |
bombSelected.setScale(1.5); | |
var bombBtn=new cc.MenuItemSprite( | |
bombNor, | |
bombSelected, | |
function (){ | |
var bombNum=this.getChildByTag(3); | |
if(parseInt(bombNum.getString().slice(1))==0){ | |
return; | |
} | |
// 全屏爆炸 | |
var blowEnemy=[]; | |
for(var i in this.enemies){ | |
var enemy=this.enemies[i]; | |
blowEnemy.push(enemy); | |
} | |
for(var j in blowEnemy){ | |
blowEnemy[j].blowUp(); | |
} | |
// 数量减一 | |
bombNum.setString("X"+(parseInt(bombNum.getString().slice(1))-1)); | |
}, this); | |
bombBtn.setPosition(50+bombBtn.width/2,50+bombBtn.height/2); | |
var bombMenu=new cc.Menu(bombBtn); | |
bombMenu.setPosition(0,0); | |
bombMenu.setAnchorPoint(0,0); | |
this.addChild(bombMenu); | |
// 爆炸道具数量 | |
var bombNum=new cc.LabelBMFont("X2",res.font); | |
bombNum.setAnchorPoint(0,0.5); | |
bombNum.setPosition(bombBtn.getPositionX()+bombBtn.width/2+50,bombBtn.getPositionY()); | |
bombNum.setTag(3); | |
this.addChild(bombNum); | |
// 暂停开始按钮 | |
var pauseBtn=new cc.MenuItemSprite( | |
new cc.Sprite(cc.spriteFrameCache.getSpriteFrame("game_pause_nor.png")), | |
new cc.Sprite(cc.spriteFrameCache.getSpriteFrame("game_pause_pressed.png")), | |
function (){ | |
// 暂停音乐音效 | |
cc.audioEngine.pauseAllEffects(); | |
cc.audioEngine.pauseMusic(); | |
pauseBtn.setEnabled(false); | |
cc.director.pause(); | |
this.addChild(new PauseLayer(pauseBtn),10); | |
}, this); | |
var pauseMenu=new cc.Menu(pauseBtn); | |
pauseMenu.setPosition(20+pauseBtn.width/2,cc.winSize.height-pauseBtn.height/2-20); | |
pauseMenu.setAnchorPoint(0,0); | |
this.addChild(pauseMenu); | |
// 分数 | |
var score=new cc.LabelBMFont("0",res.font); | |
score.setAnchorPoint(0,0.5); | |
score.setPosition(pauseMenu.getPositionX()+pauseBtn.width/2+50,pauseMenu.getPositionY()); | |
score.setTag(2); | |
this.addChild(score); | |
// 碰撞检测 | |
this.schedule(this.collision); | |
return true; | |
}, | |
collision:function(){ | |
var bullets=this.bullets; | |
var enemies=this.enemies; | |
var tools=this.tools; | |
var score=parseInt(this.getChildByTag(2).getString()); | |
for(var i in enemies){ | |
var enemy=enemies[i]; | |
// 检测是否与玩家碰撞 | |
var player=this.getChildByTag(1); | |
if(cc.rectIntersectsRect(enemy.getBoundingBox(),player.getBoundingBox())){ | |
// 游戏结束 | |
this.unschedule(this.collision); | |
player.blowUp(); | |
// 停止背景音乐 | |
cc.audioEngine.stopMusic("res/sound/game_music.mp3"); | |
cc.audioEngine.playEffect("res/sound/game_over.mp3"); | |
this.scheduleOnce(function(){ | |
cc.director.runScene(new cc.TransitionFade(1,new OverScene(score))); | |
},2); | |
} | |
// 检测是否吃到道具 | |
for(var m in tools){ | |
var tool=tools[m]; | |
if(cc.rectIntersectsRect(tool.getBoundingBox(),player.getBoundingBox())){ | |
switch(tool.type){ | |
case 1: | |
// 双排子弹道具 | |
cc.audioEngine.playEffect("res/sound/get_double_laser.mp3"); | |
player.shootDoubleBegin(); | |
break; | |
case 2: | |
// 清屏道具 | |
cc.audioEngine.playEffect("res/sound/get_bomb.mp3"); | |
var bomb=this.getChildByTag(3); | |
bomb.setString("X"+(parseInt(bomb.getString().slice(1))+1)); | |
bomb.runAction(cc.sequence(cc.scaleTo(0.1,1.2),cc.scaleTo(0.1,1))); | |
break; | |
} | |
tool.remove(); | |
} | |
} | |
for(var j in bullets){ | |
var bullet=bullets[j]; | |
// 检测是否与子弹碰撞 | |
if(cc.rectIntersectsRect(enemy.getBoundingBox(),bullet.getBoundingBox())){ | |
enemy.hit(); | |
bullet.remove(); | |
} | |
} | |
} | |
}, | |
addScore:function(type){ | |
var score=this.getChildByTag(2); | |
var addScore=0; | |
var curScore=parseInt(score.getString()); | |
switch(type){ | |
case 1: | |
addScore=100 + Math.ceil(Math.random()*(curScore/1000)); | |
break; | |
case 2: | |
addScore=200 + Math.ceil(Math.random()*(curScore/1000)); | |
break; | |
case 3: | |
addScore=500 + Math.ceil(Math.random()*(curScore/1000)); | |
break; | |
} | |
score.setString(curScore+addScore); | |
}, | |
createEnemy:function(type){ | |
var enemy=new Enemy(type,this); | |
var randomX=Math.random()*(cc.winSize.width-enemy.width/2-enemy.width/2)+enemy.width/2; | |
enemy.setPosition(randomX,cc.winSize.height+enemy.height/2); | |
this.addChild(enemy); | |
this.enemies.push(enemy); | |
}, | |
createTool:function(type){ | |
var tool=new Tool(type,this); | |
var randomX=Math.random()*(cc.winSize.width-tool.width/2-tool.width/2)+tool.width/2; | |
tool.setPosition(randomX,cc.winSize.height+tool.height/2); | |
this.addChild(tool); | |
this.tools.push(tool); | |
}, | |
onEnter:function(){ | |
this._super(); | |
// 添加触摸事件 | |
cc.eventManager.addListener({ | |
event:cc.EventListener.TOUCH_ONE_BY_ONE, | |
swallowTouches:true, | |
onTouchBegan:this.touchbegan, | |
onTouchMoved:this.touchmoved, | |
onTouchEnded:this.touchended | |
},this); | |
return true; | |
}, | |
touchbegan:function(touch,event){ | |
event.getCurrentTarget().touchStartX=touch.getLocation().x; | |
event.getCurrentTarget().touchStartY=touch.getLocation().y; | |
return true; | |
}, | |
touchmoved:function(touch,event){ | |
var touchX=touch.getLocation().x; | |
var touchY=touch.getLocation().y; | |
var touchStartX=event.getCurrentTarget().touchStartX; | |
var touchStartY=event.getCurrentTarget().touchStartY; | |
var player=event.getCurrentTarget().getChildByTag(1); | |
if(player!=null){ | |
player.moveBy(touchX-touchStartX,touchY-touchStartY); | |
event.getCurrentTarget().touchStartX=touchX; | |
event.getCurrentTarget().touchStartY=touchY; | |
} | |
return true; | |
}, | |
touchended:function(touch,event){ | |
return true; | |
} | |
}); | |