Project1

标题: 如何设置死后回最近的宿屋 [打印本页]

作者: 地理去    时间: 2012-1-29 22:17
标题: 如何设置死后回最近的宿屋
本帖最后由 地理去 于 2012-1-29 22:20 编辑

我曾经用事件做过,但失败,显示地图id不能为零
像神奇宝贝一样dsu_plus_rewardpost_czw
作者: 429259591    时间: 2012-1-29 22:24
本帖最后由 429259591 于 2012-1-30 11:34 编辑

首先先判断主角所在地图的ID
然后再来判断地图中谁的ID与主角所在的ID最近,然后就场所移动
确定变量没有用错?然后判断是不是其他地方一直初始化变量了
@地理去
发下截图来看看?表示经测试能用无误
因为某些原因表示把图给拿下了...
作者: 精灵使者    时间: 2012-1-30 09:46
很明显,每次进入宿屋的时候都需要动些手脚的……然后再用到“战斗结束后执行公共事件”调用……
作者: woxihuanaobi    时间: 2012-1-31 12:50
战斗处理-允许战斗失败-战斗失败后边加上场所移动
作者: linyifei    时间: 2012-1-31 12:53
每进入一个地图设置一个变量的数值……根据数值,在敌人队伍里判断主角没血的时候移动……

好吧当我什么也没说吧
作者: BS包仔    时间: 2012-1-31 13:08
进入宿屋或者去某个地图的时候更改变量设置并行处理事件角色死亡条件分歧变量为**回到**
或者在暗雷里的怪物设置角色死亡条件分歧变量**为**回到**
作者: 地理去    时间: 2012-1-31 13:11
精灵使者 发表于 2012-1-30 09:46
很明显,每次进入宿屋的时候都需要动些手脚的……然后再用到“战斗结束后执行公共事件”调用…… ...

    if result == 2 and  $game_troop.can_lose
       $game_temp.common_event_id = 1
为什么他不执行公共事件1还是留在原地
作者: 怪蜀黍    时间: 2012-2-2 11:52
本帖最后由 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。
  1. def after_death_initialize
  2.   $after_death = [0,1,2]#把地图与最近的宿屋分别对应,这里举例是3组对应
  3.   $after_death_xy = [[10,15],[4,18],[22,9]] #设定返回各不同宿屋后角色的坐标
  4.   $after_death[0] = [9,1,2,3,4,5,6,7,8]#数组第一个元素为最近的宿屋的地图ID
  5.   $after_death[1] = [13,10,11,12,13,14,15,16]
  6.   $after_death[2] = [29,17,18,19,20,21,22]
  7. end
复制代码
3、按照你地图的实际情况修改函数after_death_initialize中的地图ID分类。
4、写一个函数after_death,每次死亡都调用它来返回最进的宿物。
  1. def after_death
  2.   for i in 0...$after_death.size
  3.     if $after_death[i].include?[$game_map.map_id]
  4.       id = $after_death[i][0]#因为数组第一个元素即0号元素为最近的宿屋的地图ID
  5.       x = $after_death_xy[i][0]#假定在9号地图宿屋附近死亡,那么调用$after_death_xy第一个元素的第一个元素$after_death_xy[0][0]为x坐标即10
  6.       y = $after_death_xy[i][1]#假定在9号地图宿屋附近死亡,那么调用$after_death_xy第一个元素的第二个元素$after_death_xy[0][1]为y坐标即15
  7.     end
  8.   end
  9.   $game_player.reserve_transfer(id,x,y,2)#2为角色朝向,2是下,4是左,6是右,8是上
  10. end
复制代码
5、每次死亡都调用函数after_death——即全局搜索$scene = Scene_Gameover.new,全部替换成以下两行:
  1. $scene = Scene_Map.new
  2. after_death
复制代码
6、完成。
回复你这个问题花了我一小时,本来想写方法二的,后来实在没耐心了再写了。
我都有耐心写,希望你有耐心看。




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