Project1

标题: 怎么永久消除事件而不是暂时消除事件 [打印本页]

作者: 冰鸷殛霰    时间: 2007-8-18 03:45
标题: 怎么永久消除事件而不是暂时消除事件
怎么永久消除事件而不是暂时消除事件
是在游戏中哦!
我发现暂时消除的话
FPS还是会被影响的.
比如弄100个事件并行处理 暂时消除事件
嘿嘿FPS马上只有10以下.
我的意思懂了吧~
作者: 冰鸷殛霰    时间: 2007-8-18 03:45
标题: 怎么永久消除事件而不是暂时消除事件
怎么永久消除事件而不是暂时消除事件
是在游戏中哦!
我发现暂时消除的话
FPS还是会被影响的.
比如弄100个事件并行处理 暂时消除事件
嘿嘿FPS马上只有10以下.
我的意思懂了吧~
作者: 御灵    时间: 2007-8-18 03:47
打开一个独立开关.
新建事件页,页面为空,条件是独立开关为ON.
作者: Bhaal    时间: 2007-8-18 03:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 第二道光芒    时间: 2007-8-18 04:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 04:06
楼上仨个该扣分的吧?
请看清楚问题!!!
那你自己试试
复制100个事件
并行处理独立开关!
你看卡不卡
没试的东西都敢说....
作者: 第二道光芒    时间: 2007-8-18 04:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 永劫的咎人    时间: 2007-8-18 04:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 04:19
以下引用永劫的咎人于2007-8-17 20:16:17的发言:

独立开关法……可以啊,事件脚本。
更改其他事件的独立开关

# 生成独立开关键
     key = [$game_map.map_id, @event_id, @parameters[0]]
     # 更改独立开关
     $game_self_switches[key] = (@parameters[1] == 0)


$game_map.map_id:地图id
@event_id : 事件id
@parameters[0] : 事件操作中的开关a,b,c,d分别为脚本中的0,1,2,3
@parameters[1] : 打开或者关闭,true or false


[本贴由作者于 2007-8-17 20:17:05 最后编辑]

难道我这样弄.
我用这样的方法.
复制了100个事件.
然后开关开了.
事件也消除 了.
可是FPS.............
我是做子弹的............

作者: 永劫的咎人    时间: 2007-8-18 04:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 04:37
以下引用永劫的咎人于2007-8-17 20:31:49的发言:

似乎每张图上的事件在载入地图的时候就已经设定好了,要说暂时消除,好像要用到运行中设定数据库……但是ms运行中设定数据库生效要重启动rm.....
lz100个子弹的想法是不错,但是rm这样描绘是肯定要卡的。
北欧女神2的弓箭手的决之技+敌人的各个块,总共瞬间变幻的图不下百张,电脑的处理能力已经不行了,所以只有在ps2平台上面开发。
再加上本来rm的技能就有所极限,要说瞬间处理漫天的弹幕,虽然不能说不可以防卡,但是以我个人估计是要用到api之类的东西了。(那个防卡脚本的功能也很局限,而且有死机可能。)
尽管理解lz着急的心情,而且我对于pm的问题都会很认真地对待,但是我能力不够,实在无能为力。
对不起。


[本贴由作者于 2007-8-17 20:33:01 最后编辑]

又被理解错了...
这样给你说吧

夜想曲里的箭
那什么先传里的子弹
都是N个N个的.
打中后删除而消失是不会卡的.
而我用100个事件做实验.
都用暂时消除是会卡的
作者: 索尔迦·蓝    时间: 2007-8-18 04:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 04:45
以下引用索尔迦·蓝于2007-8-17 20:40:55的发言:


以下引用冰鸷殛霰于2007-8-17 20:37:05的发言:
又被理解错了...
这样给你说吧

夜想曲里的箭
那什么先传里的子弹
都是N个N个的.
打中后删除而消失是不会卡的.
而我用100个事件做实验.
都用暂时消除是会卡的


很简单,因为它不是用事件做的……

啊?
那是????
图片???????????

作者: 索尔迦·蓝    时间: 2007-8-18 05:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 05:34
以下引用索尔迦·蓝于2007-8-17 21:11:35的发言:


以下引用冰鸷殛霰于2007-8-17 20:45:45的发言:


啊?
那是????
图片???????????


# ■ ARPG_Bullet
#------------------------------------------------------------------------------
#  处理ARPG中的远程攻击。

现生成的而已……

晕啊!
我是用的仓库提取的事件......不一样么?

作者: 幻の飞鱼    时间: 2007-8-18 05:35
其实也不是不能删事件- -
只是默认没提供这个功能罢了

我记得在原版的夜想曲里有用到

当时试图提取出来使用没成功- -|

LZ可以去下载下来看看 …………
作者: 索尔迦·蓝    时间: 2007-8-18 05:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 05:53
汗..
那为什么在行走图那找到个箭误导我.....
这些脚本很难理解...
我研究研究.
对了 .
那什么先传就6大做的那个也是这样的么?
是敌人的子弹哦~
作者: 索尔迦·蓝    时间: 2007-8-18 06:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰鸷殛霰    时间: 2007-8-18 06:50
以下引用索尔迦·蓝于2007-8-17 21:42:07的发言:


以下引用冰鸷殛霰于2007-8-17 21:34:25的发言:
晕啊!
我是用的仓库提取的事件......不一样么?


当然不一样了。
夜想曲是在
def update_actor_attk
   # C按下时
   if ((Kboard.trigger?($R_Key_SPACE) or Kboard.trigger?($R_Key_RETURN)) or S[1])and @actor_atktime <= 0
     if @actor.weapon_id.between?(50, 65) # and $data_weapons[@actor.weapon_id].rang >= 1
       new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
       new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
       event = $game_map.events[$game_map.check_event(new_x,new_y)]
       return if !event.nil? and !event.is_enemy?
       rang_atk#(@actor.animation1_id)
       return
     end
     new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
     new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
     event = $game_map.events[$game_map.check_event(new_x,new_y)]
     if !event.nil? and event.maxhp > 0 and @actor_atktime <= 0
       @attev = event
       dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
     end
   end
end
这里判定是否为远程攻击,如果是,则使用rang_atk方法

def rang_atk
   bullet = ARPG_Bullet.new("Arrow", @x, @y, @d)
   $scene.spriteset.add_bullet(bullet)
   @bullets.push(bullet)
   @actor_atktime = $data_weapons[@actor.weapon_id].time
end

子弹是一个ARPG_Bullet对象。

class ARPG_Bullet < Game_Character

本质上就是一个Event,比event底层一些,是角色活动块一类的冬冬

这个子弹的刷新在这里
def update_bullet
   for bullet in @bullets
     bullet.update
     case bullet.hit_event
     when String
       if bullet.opacity <= 10
         $scene.spriteset.delete_bullet(bullet)
         @bullets.delete(bullet)
       end
     when Game_Event
       event = bullet.hit_event
       next if !event.is_enemy?
       @attev = event
       dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
       $scene.spriteset.delete_bullet(bullet)
       @bullets.delete(bullet)
     end
   end
end
最后使用delete删除这个活动块。

总而言之就是特地为它的ARPG系统设计的一个远程攻击系统,你可以参考这个思路写自己的ARPG系统。
如果要想流畅刷新的话还是用脚本来写吧,事件的功能是很有限的。

能给这些脚本都打上注释么?

作者: 索尔迦·蓝    时间: 2007-8-18 07:29
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1