WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 3535查看
  • 7回复

主题

好友

22

积分

新手上路

发表于 2010-10-27 10:38:16 |显示全部楼层
昨晚抽空完成了下今天的教程,但时间比较晚了.所以没有发上来.今天趁上班空闲时间把教程发下.在上一讲中我给大家演示了如何登陆游戏.现在进入了游戏了.我们自然就得开始游戏了.像帝国这种游戏自然一开始就是自行建造房屋之类.所以这一讲我就教大家如何去用脚本自动建房屋之类.好了进入正题:

先看下我们当初进入的游戏界面:






上图中有一处房子就是昨晚我做测试时建的.现在还有几块空地.我们要建东西自然是要在空地上建的.所以我们的第一步应该是寻找游戏界面中的空地.然后随机选择其中的一块建我们想要建的东西.这里以建房屋为例

我们看游戏界面中,空地都是有空地二字做为标识的.我们查看源文件.发现空地的都是这样的代码:

<DIV class=normal_mask style="LEFT: 393px; CURSOR: pointer; BOTTOM: 5px; POSITION: absolute" onclick=building_click(this); jQuery1236910391968="550" m_position="9"><IMG class=bTG id=building_9 style="DISPLAY: inline-block; WIDTH: 115px; HEIGHT: 100px" src="images/blank.gif" jQuery1236910391968="551">

<DIV class=buildingLabel id=building_9_label style="RIGHT: 14%; BOTTOM: 2px; POSITION: absolute; normal: " jQuery1236910391968="552">空 地</DIV></DIV>
而像军事指挥所则是这样的:

<DIV class=normal_mask style="LEFT: 275px; CURSOR: pointer; BOTTOM: 280px; POSITION: absolute" onclick=building_click(this); jQuery1236910391968="529" m_position="2"><IMG class=bTG id=building_2 style="DISPLAY: inline-block; WIDTH: 115px; HEIGHT: 100px" src="images/blank.gif" jQuery1236910391968="530">

<DIV class=buildingLabel id=building_2_label style="RIGHT: 14%; BOTTOM: 2px; POSITION: absolute; normal: " jQuery1236910391968="531">军事指挥所: 1级</DIV></DIV>
可以看到它的所有的都是用点击后触发:onclick=building_click(this);

我们要在空地上建东西,自然就要找到一块空地的ID然后点击它就会在右下角出现建造的功能页:






现在思路清了就开始动手吧.我们用正则来取界面中所有的空地:

var placereg=/<DIV class=buildingLabel.+?地<\/DIV>/ig;

var aplace =document.body.innerHTML.match(placereg);
复制代码
上面两句就是取空地的DIV然后得到一个空地的数组付给了aplace;
我们可以用

for(var i=0;i<aplace.length;i++){

alert(aplice);

}
复制代码
查看是否取正确了.上面总共得到八块空地.我们只需要有一块就好了.所以呢我们就选择第一块;而如果一块空地也没有我们就应该告诉用户说无法建东西了.因为没有了空地.代码如下:

//寻找空地并建筑房屋



function build_home(){

var placereg=/<DIV class=buildingLabel.+?地<\/DIV>/ig;

var aplace =document.body.innerHTML.match(placereg);

if(aplace.length>0){

      getbyid(getdivid(aplace[1])).click();实行 //注意这里的getdivid这个函数是用来得到获取的空地的DIV里的id号用的.

}else{

alert('已经没有空地');

}

}
getdivid这个函数的代码如下:

//取ID号

function getdivid(str){

var re=/building_\d+/ig

var id=str.match(re);

return id;
好了现在我们已经选择了一块空也并且点击了.也让右下角出现了建筑的功能表.现在我们就要造房子了.还是一样的,分析源文件.知道建造房屋的启发动作是:

button_event('289',pos)
这个289代表的是房子的等级和建筑的类型.而pos则是告诉服务器建筑是放在了哪一个点上.所以呢我们还要传一个pos参数给它.而分析了相关的数据包后发现.其实这个pos就是id里的那个数字.如我们的ID号是building_4_label
那么这个pos就是4 所以这里写上一个函数来得到这个pos点.代码如下:

//得到对应的位置点

function getdgjpos(str){

var re=/\d/ig

var pos=str.match(re);

return pos;

}
好了一切都满足了就可以去造房子了.但是为了今后的扩展性.我们还得查下,当前我们的各项资源是否够建这房子的.如果不够显然是无法成功的.所以我们要得到各项资源.这里如何得到我就不细说了.一样的查看源文件.这里的代码如下:

//得到当前的食物

function getfood(){

return getbyid('food').innerHTML;

}



//得到当前的木材料

function getwood(){

return getbyid('wood').innerHTML;

}

//得到当前的黄金

function getgold(){

return getbyid('gold').innerHTML;

}

//得到当前的石头

function getstone(){

return getbyid('stone').innerHTML;

}

//得到当前的能力

function getcapacity(){

return getbyid('stone').innerHTML;

}

//得到当前的人口

function getperson(){

return getbyid('person').innerHTML;

}
我们在建房子之前先检测下是否资源够.够就可以建.代码如下:

//寻找空地并建筑房屋



function build_home(){

var placereg=/<DIV class=buildingLabel.+?地<\/DIV>/ig;

var aplace =document.body.innerHTML.match(placereg);

if(aplace.length>0){

getbyid(getdivid(aplace[1])).click();

var pos=getdivid(aplace[1]);

var flag=1

if(getfood()<150){

flag=0;

alert('食物不够150');

return;

}

if(getwood<37){

flag=0;

alert('木材不够37');

return;

}

if(getstone<75){

flag=0;

alert('石头不够75');

return;

}

if(getgold()<112){

flag=0

alert('黄金不够112');

return;

}

if(flag==1){

setTimeout("button_event('289',pos)",1000); //点击建筑房屋的按钮.此时会跳出一个对话框.要求确认

setTimeout("confirm_build();",3000); //为了照顾网络延时这里我延迟三秒再点确认按钮.

}



}else{

alert('已经没有空地');

}

}



//建筑东西时点击确认按钮

function confirm_build(){

getbyid('submit_dialog').click();

}

主题

好友

1264

积分

金牌会员

发表于 2010-10-27 17:48:21 |显示全部楼层
不太懂。。。看看呗
回复

使用道具 举报

主题

好友

98

积分

注册会员

发表于 2010-10-28 22:45:23 |显示全部楼层
是网页的吗? 这么说的话---- 可以改资源的?
回复

使用道具 举报

主题

好友

148

积分

注册会员

发表于 2010-10-28 23:27:43 |显示全部楼层
看不懂。。。。。。。。。。
回复

使用道具 举报

主题

好友

22

积分

新手上路

发表于 2010-10-29 09:41:49 |显示全部楼层
目前网页游戏早就进入flash时代了。。。 那种纯JS+HTML的网页游戏很少了
回复

使用道具 举报

主题

好友

118

积分

注册会员

发表于 2010-11-1 16:03:56 |显示全部楼层
- - 迷茫了  看不懂内
回复

使用道具 举报

主题

好友

358

积分

中级会员

发表于 2010-11-17 00:55:40 |显示全部楼层
只能改成自己看的吧?
回复

使用道具 举报

主题

好友

22

积分

新手上路

发表于 2010-11-18 22:26:07 |显示全部楼层
flash呀老大,教教呀
回复

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-11 17:08 , Processed in 0.060306 second(s), 16 queries .

返回顶部