设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 雷欧纳德
打印 上一主题 下一主题

论坛回档说明,所有会员请注意(新增:内容恢复方法)

 关闭 [复制链接]

Lv1.梦旅人

随缘

梦石
0
星屑
55
在线时间
12 小时
注册时间
2007-12-16
帖子
671
51
发表于 2007-12-16 04:41:44 | 只看该作者
什么多没了!!!!晕倒!!!
论坛:
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
4054
在线时间
83 小时
注册时间
2007-12-16
帖子
4
52
发表于 2007-12-16 06:05:00 | 只看该作者
{/ll}可恨的黑客.......太不人道了.......对于新人滴偶棉这真素青天霹雳的噩耗啊!!!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

太后老佛爷

梦石
0
星屑
90
在线时间
297 小时
注册时间
2007-1-13
帖子
1912
53
发表于 2007-12-16 06:33:24 | 只看该作者
我觉得换个论坛系统吧
[
回复 支持 反对

使用道具 举报

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
54
发表于 2007-12-16 06:36:35 | 只看该作者
我晕 我说呢…… 上不去 上了 然后没我号了……
还不能下素材么? 大概什么时候就可以了?
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

Lv1.梦旅人

大火烧了毛毛虫

梦石
0
星屑
205
在线时间
288 小时
注册时间
2006-3-18
帖子
2335
55
发表于 2007-12-16 06:50:07 | 只看该作者
我本来有8VIP.兰色枫叶转给了我196点.总共204点,不知道可以回复不… 帮我转VIP的版版我也忘是谁了…
回复 支持 反对

使用道具 举报

Lv1.梦旅人

传奇

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-4-10
帖子
427
56
发表于 2007-12-16 07:22:09 | 只看该作者
我的3VIP  和几百经验  几张好人卡  经验和好人卡  不记得是多少了  不知道能回复不?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

劒剋

梦石
0
星屑
50
在线时间
27 小时
注册时间
2007-12-16
帖子
1304
57
发表于 2007-12-16 08:28:46 | 只看该作者
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
我……………………………………………………………………………………
Shining...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2007-12-15
帖子
513
58
发表于 2007-12-16 14:11:36 | 只看该作者
在这里祝福6R能够尽快振作起来并且发展得更加繁荣,让那些黑客都气得见鬼去吧!!!
「不要担心,可怕的事情都交给老师来击退哟。」
这样说着的你已不在了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
11 小时
注册时间
2007-7-1
帖子
327
59
发表于 2007-12-16 16:46:23 | 只看该作者
我发一下冰水的那个易用动画增强 是原创技术区的
主题贴:【 易用的增强动画显示脚本 】(原帖)(无图)(目录)
冰水  (2007-10-12 13:31:42)
--------------------------------------------------------------------------------
可在游戏标题等窗口任意位置显示运动的动画.
可以动态令动画按直线或圆(圆有些不完善-_-)移动.
动态制造的流星火雨^^用商业素材可以很华丽哦

建立轨迹库功能(很不完善,也不易用)可以令动画用不规则速度按折线前进

rm1.02xp压缩的范例及脚本
  1. http://rpg.blue/upload_program/files/动画显示增强.exe
复制代码


越前リョーマ :
不错,

下来看看后才发现一件事……{/gg}
--------------------------------------------------------------------------------
>闪电 :
做开场动画的话应该很有用吧,收了
--------------------------------------------------------------------------------
>小真·爱舞 :
楼主很强大呢,不会是马甲吧。
不过这种东西对于我来说是没有什么用就是了。
我会用自己的方法来控制播放的坐标之类的……
呃,说实在的,我不太喜欢用动画来实现动态效果|||
--------------------------------------------------------------------------------
>神思 :
小小的失望一下...
以为是重写RPG::Sprite
结果只是在外面加了些东西控制而已````
--------------------------------------------------------------------------------
>enghao_lim :

以下引用小真·爱舞于2007-10-12 15:51:34的发言:
楼主很强大呢,不会是马甲吧。
不过这种东西对于我来说是没有什么用就是了。
我会用自己的方法来控制播放的坐标之类的……
呃,说实在的,我不太喜欢用动画来实现动态效果|||


认同呢,对我来说也一样。
--------------------------------------------------------------------------------
>冰水 :
{/pz}这本来就是给新人用的东西喔.
不过我也是新人^^
重写RPG::Sprite……
而且那个我感觉没什么需要改进的啊?改成3d或者外挂api滤镜那种工作可不是我这种初学脚本的新人能办得到的,要是加个简单的跳出文字效果或改渐变一类的方法,也太没意义了

我写这个脚本最初的目的就是要简单的实现类似Arpg那种移动的魔法,一两句脚本可以任意位置出现可以移动到指定位置的动画而不用再操心释放移动等问题。

需要是技术发展的原动力。把想要的效果具体的描述出来,才会有脚本的发展啊。


我先吼一个。我想要可以动态画抛物线的脚本。那位大虾可以提供些参考啊?(抛物线和椭圆的导数计算都忘光了,几何书也都扔了……555这个脚本中椭圆那个方程都是勉强回忆起的)我不想重学几何啊。用抛物线就可以模拟投石机扔燃烧的火球和射箭了,这个可很有用啊。也是这个脚本编写的主要目的之一^^!
--------------------------------------------------------------------------------
>小真·爱舞 :

以下引用神思于2007-10-12 16:59:26的发言:

小小的失望一下...
以为是重写RPG::Sprite
结果只是在外面加了些东西控制而已````



我没看脚本..听你这么一说就明白了...
楼主请加油吧……
--------------------------------------------------------------------------------
>灵龙 :
原始的事件方法
http://rpg.blue/viewthread.php?tid=73582&ntime=2007%2D11%2D3+9%3A44%3A48
--------------------------------------------------------------------------------
>幻の飞鱼 :
我觉得挺不错的啊=。=
做一些即时的效果省了很多事

大家期望是不是放太高了啊
还是小鱼的要求比较低=。=

总之强烈支持LZ,这个脚本应该有不错的拓展空间……
--------------------------------------------------------------------------------
>精灵使者 :
动画么。我用并行事件+开关来控制动画就可以了。
开关控制动画可以拿事件陷阱做。
--------------------------------------------------------------------------------
>Eclair :
思路不复杂...
算法看起来还是很赞的~~

偶对复杂的图形算法很头痛呢~~~~
--------------------------------------------------------------------------------
>36763183 :
天 楼主 为什么我在游戏标题使用的动画到了游戏场景不能及时消失?是只能用一个吗?还是脚本的刷新问题?  
我看来也回来吧~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
11 小时
注册时间
2007-7-1
帖子
327
60
发表于 2007-12-16 16:53:59 | 只看该作者
再有一个是雪地脚印系统...是刹那的微笑在幻之飞鱼的基础上修改的
帖子如下:是原创技术区的
  1. ]☆ 思考与研究 ☆ 『脚本从零改起』雪地脚印系统

  2. by 刹那的微笑,欢迎发布与随意转载

  3. 这个系统的来源讨论贴如下:http://rpg.blue/forumTopicRead_formake.asp?id=73881

  4. 这个系统的需求就是:当在雪地上移动的时候,人物走过的地方会留下脚印。这个脚本从零开始创建难度颇高,我这里仅仅简略给出整个系统的思考过程:

  5. 1、在雪地移动才留下脚印,说明需要对地图上的地形进行区分,这里使用地形标志进行判断。

  6. 2、走过才留下,所以需要和人物的移动有一定的关系(包括角色和NPC),可以监视角色和NPC的移动,也可以仅仅改写他们移动的函数。

  7. 3、脚印片刻后会消失,那么这里就需要对画到地图上的脚印进行刷新计数。片刻后消失表示需要动画,在RMXP中动画有两种方式,一种是数据库制作的动画,另一种角色character的动画,这里需要做出一个选择。由于数据库制作的动画默认Z值很高,会覆盖过树木和房屋,如果修改默认Z对系统改动太大,很可能出其他意外Bug,鉴于下面还有问题4的存在,所以这里我选用角色character制作动画。所以首先制作4张图片:u2,u4,u6,u8,分别对应下左右上4个方向的脚印。

  8. 4、屏幕移动的时候,脚印应该是留在地图上而不是画在屏幕上——所以脚印最好是作为一个事件存在。


  9. 以上基本定型了整个系统的技术,也就是:当人物在雪地(这里规定雪地的地形标志为5)上移动的时候,在人物的位置创建一个事件,事件的图片是脚印。然后随着刷新,脚印会自动播放character动画,当播放差不多的时候将其消失。

  10. 这里需要在地图上创建事件,在www.66RPG.com搜索“事件”,可以找到灼眼的夏娜写的脚本:http://rpg.blue/web/htm/news620.htm,研究一下发现这个脚本的使用方法是$scene.conjure(x,y,事件名,角色形象文件名) 来在地图上创建事件的。不过这个创建方法需要dispose掉整个地图然后重绘,这肯定是有点效率问题,没关系,最后再优化。

  11. 下面开始详细写整个脚本,过程分为实现和优化两步:

  12. 效果实现:

  13. 第一步:创建几个变量,用来记录各位角色站在雪地上的X、Y、面向,放在Game_Character 1的创建initialize里面:

  14.    本帖相关代码如下:
  15. # 记录主角当前坐标的各种情况
  16.    @oldx = -1
  17.    @oldy = -1
  18.    @oldd = 0
  19.    @oldt = 0
  20.    @ani = []


  21. 第二步:在Game_Character里面创建生成脚印的函数:

  22.    本帖相关代码如下:
  23. # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  
  24. #---------------------------------------------------
  25. # 生成脚印
  26. #---------------------------------------------------
  27. def showani
  28.    # 如果地形标志不是5,就不播动画了。
  29.    return if @oldt != 5
  30.    
  31.    # 根据走步的方向来决定脚印的动画
  32.    @ani.push([$scene.conjure(@oldx, @oldy,"st","u"[email protected]_s), 50])

  33. end

  34. 这里用到了上面夏娜的外挂脚本,使用这种方法是想要将@ani弄成一个数组,大体结构如下:
  35. [
  36. [脚印事件1, 脚印事件1的刷新帧数]
  37. [脚印事件2, 脚印事件2的刷新帧数]
  38. [脚印事件3, 脚印事件3的刷新帧数]
  39. ……
  40. ]
  41. 这里刷新帧数表示脚印事件还差多少帧需要消失掉。

  42. 第三步:设置脚印的创建(上面只是写了创建时候使用的函数,还没有被调用),为了省事,我们将监视的内容写在Game_Character的def update里面:

  43.    本帖相关代码如下:
  44. # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  45.    # 如果NPC挪动了,那么就生成脚印
  46.    if @oldx != self.x or @oldy != self.y
  47.      showani
  48.      @oldx = self.x
  49.      @oldy = self.y
  50.      @oldd = self.direction
  51.      @oldt = self.terrain_tag
  52.    end

  53. 这样,当NPC挪动之后就会创建脚印事件了,因为中间调用了showani,同时确保人物移动之后保持XY等监视内容的监视。

  54. 第四步:设置脚印的刷新和消失:

  55.    本帖相关代码如下:
  56. # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  57.    # 如果存在脚印,则用for循环找到每个脚印,将等待帧数-1
  58.    # 当等待帧数=0的时候,就把这个脚印删除
  59.    if @ani != nil
  60.      for ani in @ani
  61.        ani[1] -= 1
  62.        if ani[1] == 0
  63.          $scene.del_event(ani[0])
  64.          @ani.delete(ani)
  65.        end        
  66.      end
  67.    end

  68. 这里就是首先判断,@ani这个记录脚印和刷新的东西是否为空,不为空的时候开始循环所有的脚步,将等待帧数-1。当等待帧数为0的时候,从屏幕上和@ani里面删除掉这个脚步事件。由于是“事件”,所以事件本身的刷新不需要在这里写。

  69. 第五步:在夏娜的脚本书写del_event的方法,因为夏娜那个脚本只能创建不能删除:

  70.    本帖相关代码如下:
  71. # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  72. #-------------------------------------
  73. # 删除事件
  74. #-------------------------------------
  75. def del_event(map_events)
  76.    $game_map.map.events[map_events.id] = nil   
  77.    $game_map.events.delete(map_events.id + 1)
  78.    @spriteset_map.dispose
  79.    @spriteset_map = Spriteset_Map.new
  80. end


  81. 完成这些之后,脚本基本能凑合使用了,但是实际上距离能够真正应用还很远,因为这里每次把@spriteset_map给dispose之后重新创建,速度非常慢。所以下面需要进行优化。


  82. --------------------------------------------------------------------------------


  83. 优化步骤:

  84. 第一步:首先,夏娜脚本的一个bug是,如果地图上事件的编号不连续,那么就会发生创建bug,为了考虑不连续的情况,我们需要先能够找到地图上事件编号的最大值,写一个简单的查找功能即可:

  85.    本帖相关代码如下:
  86. #-------------------------------------
  87. # 专门用于寻找当前地图上最大的ID
  88. #-------------------------------------
  89. class Game_Map
  90. def find_max_id
  91.    maxid = 0
  92.    for event in $game_map.events.values
  93.      if event.id > maxid
  94.        maxid = event.id
  95.      end
  96.    end
  97.    return maxid
  98. end  
  99. end


  100. 第二步:我们把Spriteset_Map的@character_sprites修改为公开的$character_sprites,便于以后使用,于此同时当然也需要将@viewport1修改为公开的$viewport1便于以后使用。

  101. 第三步:将整张地图释放和创建改为仅仅对精灵操作,需要重写夏娜的def conjure:

  102.    本帖相关代码如下:
  103. #-------------------------------------
  104. # 创建事件
  105. #-------------------------------------
  106. def conjure(x,y,name="ani_step",character_name="")
  107.   id = $game_map.find_max_id + 1
  108.   $game_map.events[id+1] = Game_Event.new($game_map.map_id,produce_event(x,y,name,character_name))
  109.   $game_map.map.events[id+1] = produce_event(x,y,name,character_name)
  110.   sprite = Sprite_Character.new($viewport1, $game_map.events[id+1])
  111.   $character_sprites.push(sprite)
  112.   return $game_map.events[id+1]
  113. end

  114. 这里id首先找到地图的最大ID+1,然后用这个id创建。创建完毕地图数据后,生成对应的sprite,然后将其加入地图上全部事件精灵图的合集里面,最后把创建的event返回(返回是为了便于在@ani里面调用)。

  115. 第四步:修改def produce_event,将id改为$game_map.find_max_id + 1

  116. 第五步:修改删除事件,也是操作新公开出来的变量:

  117.    本帖相关代码如下:
  118. #-------------------------------------
  119. # 删除事件
  120. #-------------------------------------
  121. def del_event(map_events)
  122.    $game_map.map.events[map_events.id] = nil   
  123.    $game_map.events.delete(map_events.id + 1)
  124.    
  125.    for sprite in $character_sprites
  126.      sprite.dispose
  127.    end

  128.    $character_sprites = []
  129.    for i in $game_map.events.keys.sort
  130.      sprite = Sprite_Character.new($viewport1, $game_map.events[i])
  131.      $character_sprites.push(sprite)
  132.    end
  133.    $character_sprites.push(Sprite_Character.new($viewport1, $game_player))
  134.    
  135. end

  136. end

  137. 其实就是把原来事件dispose的一部分抽出来,然后把创建部分抽出来组合在一起。


  138. --------------------------------------------------------------------------------


  139. 经过以上全部步骤的操作,就完成了制作。范例工程:http://rpg.blue/upload_program/files/幻鱼的脚印,修改版.rar

  140. 实际制作过程并没有这么简单,真正做的时候是要在错误中不断摸索出来,比如优化和实现这两个内容,可以看到我前面教学里面的“实现”已经是“优化”后的函数,但实际制作过程中,到底是先写了实现还是先写了优化,很难说,可能是同时写的。其实还可能有其他的BUG,都是需要靠经验来慢慢调整。

  141. 这个教学的意义主要在:
  142. 一、首先,请确认一个脚本的实现方法:
  143. 1、仔细思考这个脚本的功能、需求
  144. 2、根据功能和需求,想一个合理的技术方法
  145. 3、先不管任何优化过程,尽量实现这个技术
  146. 4、从已经实现的技术开始慢慢修改进行优化——这一步格外关键,因为可能优化到最后,第3步写的实现代码已经几乎不剩几行了,甚至推翻掉重新完成了。
  147. 这是我认为比较合理的脚本制作过程。比较糟糕的制作过程是,先做一般的1,然后跳过2做3,这样出来的内容,经常是bug比较多,甚至有难以逾越的bug而完全没有意义的技术。

  148. 二、请保持这样一个理念:自己修改的脚本,无论如何,都比插件好用。如果自己能够修改——哪怕是按着教程照猫画虎,一步一步复制粘贴修改内容做的修改,也比直接拿来用强百倍。

  149. 就比如这个系统,只要跟着做一遍,以后无论你的系统是什么样,都100%可以成功将其改为支持雪地脚印的系统。而如果是只用一个插件,我想很难改脚本成功的,至少我自己都认为那样改起来很难很难。


  150. --------------------------------------------------------------------------------


  151. 欢迎回帖讨论,如果回帖后我没有看到这个帖子,可以论坛短信提醒我一下,也可以直接将问题发邮箱:[email protected],不过遇到问题的话,我希望能是有自己的尝试和失败过程的,以及制作失败的工程等,不然描述起来实在太难了
复制代码
我看来也回来吧~
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-6-17 05:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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