以下引用永劫的咎人于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 最后编辑]
以下引用永劫的咎人于2007-8-17 20:31:49的发言:
似乎每张图上的事件在载入地图的时候就已经设定好了,要说暂时消除,好像要用到运行中设定数据库……但是ms运行中设定数据库生效要重启动rm.....
lz100个子弹的想法是不错,但是rm这样描绘是肯定要卡的。
北欧女神2的弓箭手的决之技+敌人的各个块,总共瞬间变幻的图不下百张,电脑的处理能力已经不行了,所以只有在ps2平台上面开发。
再加上本来rm的技能就有所极限,要说瞬间处理漫天的弹幕,虽然不能说不可以防卡,但是以我个人估计是要用到api之类的东西了。(那个防卡脚本的功能也很局限,而且有死机可能。)
尽管理解lz着急的心情,而且我对于pm的问题都会很认真地对待,但是我能力不够,实在无能为力。
对不起。
[本贴由作者于 2007-8-17 20:33:01 最后编辑]
以下引用索尔迦·蓝于2007-8-17 20:40:55的发言:
以下引用冰鸷殛霰于2007-8-17 20:37:05的发言:
又被理解错了...
这样给你说吧
夜想曲里的箭
那什么先传里的子弹
都是N个N个的.
打中后删除而消失是不会卡的.
而我用100个事件做实验.
都用暂时消除是会卡的
很简单,因为它不是用事件做的……
以下引用索尔迦·蓝于2007-8-17 21:11:35的发言:
以下引用冰鸷殛霰于2007-8-17 20:45:45的发言:
啊?
那是????
图片???????????
# ■ ARPG_Bullet
#------------------------------------------------------------------------------
# 处理ARPG中的远程攻击。
现生成的而已……
以下引用索尔迦·蓝于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系统。
如果要想流畅刷新的话还是用脚本来写吧,事件的功能是很有限的。
| 欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |