- 好友
 - 12
  
- 在线时间
 - 486 小时
  
- 最后登录
 - 2025-11-2
  
 
 
 
 
子爵[版主] 
    
- UID
 - 2893127
  
- 第纳尔
 - 14877 
  
- 精华
 - 0
  
- 互助
 - 94 
  
- 荣誉
 - 21 
  
- 贡献
 - 325 
  
- 魅力
 - 1394 
  
- 注册时间
 - 2017-11-5
  
 
  鲜花( 435)   鸡蛋( 0)  
 | 
 
 本帖最后由 vegetto 于 2023-5-4 20:47 编辑  
 
最近和过去看很多人说复活功能要不什么spawn单位把真的死亡的单位装备数据复制过来,要么是set player的troop夺舍op怎么怎么无效。 
其实本来ms提供了一个op和一个trigger的组合来做这个。 
 
op就是 (agent_set_no_death_knock_down_only, ":agent", 1), #第一个参数代表agent的id,第二个参数默认0,设为1时人不会死亡,血条打空会做出倒地动作后爬起,血条回满。 
trigger就是 (ti_on_agent_knocked_down, 0.000000, 0.000000,  #可以检测上面op造成agent人不死时,摔倒那个时刻。 
 
所以我们可以采用一个slot记录agent的额外可复活的生命点数,当对agent人设置 (agent_set_no_death_knock_down_only, ":agent", 1),  
通过ti_on_agent_knocked_down记录摔倒而不死的状态使得点数slot+1变化,当到需要额外复活生命点上限时,当对agent人设置 (agent_set_no_death_knock_down_only, ":agent", 0), 关闭不死状态。这时ti_on_agent_knocked_down对此agent将无效,此时agent再次死亡就是ti_on_agent_killed_or_wounded,的事情了。 
 
注意事项: 
1.knock复活时衣服上的血迹不会清除,所以人被反复杀可能全身变成血人,如果不想这样,需要每次复活清除血迹,请采用强制装备物品来重置衣服。 
2.ti_on_agent_knocked_down抓取的时间点是人刚开始做出倒地动作的时间(也就是动作有往后仰的趋势还没真正倒地),并且倒地动作执行完毕后立即站起来,所以如果需要人物真正的假死倒了躺在地上时做出什么事情比如倒地动作维持或者传送回推塔游戏的泉水,需要在ti_on_agent_knocked_down先设一个变量,再通过变量进行一点延迟。 
 
3.被knockover击倒会视作死亡式送经验,如果确定自己的游戏机制允许这么做可以无视。 
4.假如按我提供的思路做多生命复活点数,注意在ti_on_agent_knocked_down条件下的触发内用(agent_set_no_death_knock_down_only, ":agent", 0),关闭不死状态后,你这次还是不死成功的,下次空血才是真正的die or wounded,所以实际生命点数应该比期望的减1。 
 
5.这种功能对于玩家或者配合有血条功能的ai,效果显得更加直观。 
 
6.knock的op和trigger专为彼此服务,不受die等形式的其他产生倒地动作的事件影响 
 
 
 
 
 
 
 
 
 
 
 
 
 |   
 
评分
- 
查看全部评分
 
 
 
鲜花鸡蛋英勇的苹果  在2024-9-19 19:16   送朵鲜花  并说:大佬N13!   
 
 |