赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 45 |
经验 | 251834 |
最后登录 | 2025-2-19 |
在线时间 | 5229 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4547
- 在线时间
- 5229 小时
- 注册时间
- 2009-4-29
- 帖子
- 14320

|
本帖最后由 protosssonny 于 2012-2-2 11:57 编辑
问题的关键的就是怎样判断“最近的宿屋”。解决方法有很多,我提供一种方法。
脚本事件结合法。
1、假定在1-8号地图死亡后,离9号地图(此地图为宿屋)最近;10-16号地图死亡,离13号地图(此地图为宿屋)最近;17-22号地图死亡,离29号地图(此地图为宿屋)最近。
2、写一个函数after_death_initialize,并在游戏一开始就用事件中的脚本命令调用,即在事件页1的脚本中写after_death_initialize,开始条件为自动执行,然后独立开关A设定为ON,新建事件页2,开始条件为独立开关A为ON。- def after_death_initialize
- $after_death = [0,1,2]#把地图与最近的宿屋分别对应,这里举例是3组对应
- $after_death_xy = [[10,15],[4,18],[22,9]] #设定返回各不同宿屋后角色的坐标
- $after_death[0] = [9,1,2,3,4,5,6,7,8]#数组第一个元素为最近的宿屋的地图ID
- $after_death[1] = [13,10,11,12,13,14,15,16]
- $after_death[2] = [29,17,18,19,20,21,22]
- end
复制代码 3、按照你地图的实际情况修改函数after_death_initialize中的地图ID分类。
4、写一个函数after_death,每次死亡都调用它来返回最进的宿物。- def after_death
- for i in 0...$after_death.size
- if $after_death[i].include?[$game_map.map_id]
- id = $after_death[i][0]#因为数组第一个元素即0号元素为最近的宿屋的地图ID
- x = $after_death_xy[i][0]#假定在9号地图宿屋附近死亡,那么调用$after_death_xy第一个元素的第一个元素$after_death_xy[0][0]为x坐标即10
- y = $after_death_xy[i][1]#假定在9号地图宿屋附近死亡,那么调用$after_death_xy第一个元素的第二个元素$after_death_xy[0][1]为y坐标即15
- end
- end
- $game_player.reserve_transfer(id,x,y,2)#2为角色朝向,2是下,4是左,6是右,8是上
- end
复制代码 5、每次死亡都调用函数after_death——即全局搜索$scene = Scene_Gameover.new,全部替换成以下两行:- $scene = Scene_Map.new
- after_death
复制代码 6、完成。
回复你这个问题花了我一小时,本来想写方法二的,后来实在没耐心了再写了。
我都有耐心写,希望你有耐心看。 |
|