Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[展示] 新天下游戏 - 制作技术支援

[复制链接]
Eiffel 发表于 2006-8-26 17:59:44 | 显示全部楼层 |阅读模式
本文是说明 新天下游戏插件 中的游戏制件方法
https://discuz.dismall.com/thread-369782-1-1.html

原理:
1.把好玩的flash游戏下载,
2.然后把swf文件转成fla文件,
3.进行修改,
4.发布.

软件需求:
1.SWFDECOMPILER (可在sothinkhttp://www.sothink.com/product/flashdecompiler/download.htm下载试用版, 或是在网上找绿色版本)
2.flash mx 2004或以上 (建议使用FLASH 8 版本)

详细说明:
(初学者,最好找一些比较简单,容量较小的游戏来改造.)

1.下载SWF档
可以使用SWFDECOMPILER内附的CATCHER协助.
或者使用flash viewer http://www.unhsolutions.net/Flash-Saving-Plugin/downloads.shtml 都是比较方便的.

2.如何把swf转成FLA文件
这里有一些视象教学. http://ws3.wsps.tyc.edu.tw/sb2/07tools/swfdecompiler2005/
其实安装SWF-DECOMPILER后,在swf文件上按右键,选convert to fla便可以了.
在过程中,会问用什么版本解译,一般都选recommanded的一种.

3.测试转好的FLA文件
转好的fla文件,要先拿到flash8上尝试发布测试(按f12),如果发布成功(没有错误信息),游戏正常,便可以进行下一步.
以我经验,有8成以上的swf都是正常可以转成fla无误的.
但也有20%失败,原因有两个:
1.swf游戏太旧,用了一些不支援的语句.此时需要自己除虫,一般在出问题的地方上按一下f1便有说明档了
2.swf被保护了:有大约百分之一的swf被发布人使用了aso(ActionScript Obfuscator)加了保护,防止别人反组译.        这些swf就很难修改了.暂时只有放弃.

4.开始修改FLA文件
a. 在游戏开始的地方导入玩家的资料
通常在第一影格(只会执行一次的地方) 加以下的actionscript

  1. function end(score,level,bonus,others) {
  2.     nk_now = new Date();
  3.     _root.sendLV.starttime = _root.nk_starttime;
  4.     _root.sendLV.playedtime = Math.round((getTimer()-_root.nk_starttimer)/1000);
  5.     _root.sendLV.playertime = _root.nk_timediff + Math.round(nk_now.getTime() / 1000);
  6.     _root.nk_playedtime = Math.floor(_root.sendLV.playedtime/60)+'分'+(_root.sendLV.playedtime % 60)+'秒';   // 可以用playedtime来显示游戏时间
  7.     _root.sendLV.fscore = score;
  8.     _root.sendLV.level = level;
  9.     _root.sendLV.bonus = bonus;
  10.     _root.sendLV.others = others;
  11.     _root.sendLV.action = "swfrecord";
  12.     _root.loadok = false;
  13.     _root.sendLV.sendAndLoad("plugins.php", _root.loadLV, "POST");
  14.     _root.nk_money = Math.round( score /_root.nk_rate + bonus);  // 用来显示所得金钱
  15.     if (_root.nk_money > _root.nk_bonuslimit and _root.nk_bonuslimit>0)
  16.                 _root.nk_money = _root.nk_bonuslimit;
  17. }

  18. System.useCodepage = true;
  19. _root.sendLV = new LoadVars();
  20. _root.loadLV = new LoadVars();
  21. _root.loadLV.onLoad = function(success) {
  22.         if (success) {
  23.                 nk_now = new Date();
  24.                 _root.nk_starttime = this.servertime;
  25.                 _root.nk_starttimer = getTimer();
  26.                 _root.nk_timediff = this.servertime-Math.round(nk_now.getTime()/1000);
  27.                 _root.nk_toplist = this.toplist;  //排行榜使用的变数
  28.                 _root.nk_rate = this.rate;        
  29.                 _root.nk_username = this.username;   //人名使用的变数
  30.                 _root.nk_bonuslimit = this.bonuslimit;
  31.                 _root.loadok = true;
  32.         }
  33. };
  34. _root.sendLV.p = "nkflash";
  35. _root.sendLV.game = "游戏id";  // 请修改game_id
  36. _root.sendLV.action = "swfstart";
  37. _root.loadok = false;
  38. _root.sendLV.sendAndLoad("plugins.php", _root.loadLV, "POST");
复制代码



B. 确保正确读得PHP信息才可开始游戏.
在开始(或重新开始)的按钮, 加入 一句判断是否_root.loadok
例如:原本是
  1. ON (PRESS) { gotoAndPlay("GAMESTART"); }
复制代码
, 就要改成
  1. ON (PRESS) { if (_root.loadok) gotoAndPlay("GAMESTART"); }
复制代码


C.结束时传回游戏成绩.
在GameOver时加以下AS码, 用来传送成绩回网站的资料库

  1. _root.end(gamescore, gamelevel, gamebonus, gameothes);
复制代码

以上gamescore, gamelevel, gamebonus, gameothes要自己修改
gamescore 为游戏中记录积分的变数
gamelevel 为游戏中记录等级的变数,如果无等级可设为0
gamebonus 游戏中记录额外奖金的变数,如果无额外奖金可设为0
gameothers 是附加在排行榜的内容,可为空字元
例: _root.end(score,0,0,"");

要在何处加这句 _root.end(XXXX) 是一个难点!
一般会先看主影片,哪一格是游戏的回圈,结束在哪里.
也可以了解GAMEOVER的原因,从而判断回圈的结束点是何处.
例如:生命是0时游戏便结束,可以找显示生命文字的变数是什么,再用找寻ctrl+F,找哪些地方与这个变数有关.

5.到论坛测试
加入上述程序后,应该开始去论坛测试.看游戏能否正常记录分数.
要先去前台管理,新增游戏,类别写成[未开放].
然后玩两三局,看能否正常记录得分.

6.美化游戏

A. 加入排行榜.
先要判断时间轴中哪一影格比较适合显示排行榜.继而修改.
一般会在画面上加1个文字框,再在属性中选择动态文字,
在变数栏填上 _root.nk_toplist  
选[多行], [<>], 不选[Ab] 调整行距. 字体颜色和大小.
但要注意字型必须选用 ()系统预设字型.

B.游戏结束时显示奖金.
可以在GAMEOVER时,显示游戏得分的地方,
插入文字方块(动态文字),并把变数设成_root.nk_money可显示游戏获得的金钱.

C.對遊戲的不良地方進行修改.
(適合高手)

7.发布游戏
1.为游戏做一幅缩图,尺寸是 140 X 105
2.调整 游戏种类,得分限制,奖金比率.
3.导出游戏SQL码,发布游戏
(发布时,请提供演示,SQL码,图档,SWF档的连结)

==============================================================

对以上有问题,欢迎提出讨论

[ 本帖最后由 Eiffel 于 2006-8-26 18:11 编辑 ]

评分

1

查看全部评分

 楼主| Eiffel 发表于 2006-8-26 18:00:15 | 显示全部楼层

常見問題

留位
回复

使用道具 举报

slmtly 发表于 2006-8-26 18:13:51 | 显示全部楼层


[ 本帖最后由 slmtly 于 2006-8-26 18:18 编辑 ]
回复

使用道具 举报

slmtly 发表于 2006-8-26 18:26:32 | 显示全部楼层
好难
回复

使用道具 举报

250! 发表于 2006-8-26 19:05:36 | 显示全部楼层
学习一下
回复

使用道具 举报

校风 发表于 2006-8-26 19:39:27 | 显示全部楼层
这个要学习下~~ 看到好游戏 不能找不到人的话 只能自己来了
回复

使用道具 举报

smalldragon 发表于 2006-8-26 19:44:36 | 显示全部楼层
:)
回复

使用道具 举报

83267556 发表于 2006-8-29 00:07:12 | 显示全部楼层
好象有点适合耐心的人
回复

使用道具 举报

M55 发表于 2006-8-29 00:23:35 | 显示全部楼层

看到了!

支持中!
回复

使用道具 举报

after80 发表于 2006-8-29 00:24:46 | 显示全部楼层
原帖由 M55 于 2006-8-29 00:23 发表
支持中!

也支持下我吧 哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 07:13 , Processed in 0.034883 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表