骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 3761|回复: 4

[讨论] 刚写的张飞咆哮杀敌代码,求大佬纠错(已解决)

[复制链接]

52

主题

443

回帖

269

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
2743526
第纳尔
2436
精华
0
互助
18
荣誉
3
贡献
10
魅力
252
注册时间
2016-5-3

霸主正版勋章

鲜花(198) 鸡蛋(0)
发表于 2020-3-11 16:19:02 | 显示全部楼层 |阅读模式
本帖最后由 黑脸小白 于 2020-4-10 17:52 编辑

模型感觉弄的勉强差不多了,分配给个士兵也弄得想吐了,今天便开始看代码。在我的mod里,设定的是张飞在野战中,每隔一段时间有50%的几率随机吓死30米内的敌军,于是早上试着写了一段进游戏无效;下午吃完饭又开始研究,研究到现在,可以用了,但就是有个问题,第二个说明文字不是杀一个人说一句,而是有可能杀一个却刷出来好几句,求大佬帮忙纠错,在下感激不尽,代码以及游戏效果图如下:
  1. (
  2.   15, 0, 5, [],#触发相关时间的间隔
  3.   [
  4.     (try_for_agents,":agent_no"),
  5.                   (agent_is_alive,":agent_no"),
  6.                  (agent_is_human,":agent_no"),
  7.                  (agent_is_ally,":agent_no"),        
  8.         (try_begin),
  9.                  (agent_get_troop_id,":wujiang",":agent_no"),
  10.                  (eq,":wujiang","trp_knight_8_2"), #是张飞
  11.                  (store_random_in_range, ":gailv", 0, 100),         
  12.                  (ge, ":gailv", 50),#50%概率
  13.                  (play_sound, "snd_zhangfei"), #张飞的吼声
  14.                  (display_message,"@zhangfei_1",0x33DD33),#吼声的内容:尔 等 鼠 辈 , 快 快 下 马 受 死 , 与 我 张 飞 决 一 死 战 ! ! !
  15.          (agent_get_position,pos1,":agent_no"), #获取张飞的位置
  16.     (try_for_agents,":enemy_agent_no"),#循环敌人
  17.              (neg|agent_is_ally, ":enemy_agent_no"),
  18.         (try_begin),        
  19.              (agent_get_position,pos2,":enemy_agent_no"), #获取敌军位置
  20.          (get_distance_between_positions,":juli",pos1,pos2), #获取张飞与敌人的位置
  21.                  (neg|gt,":juli",1500),#如果距离小于30米
  22.                  (agent_deliver_damage_to_agent, ":agent_no",":enemy_agent_no", 150), #对范围内敌军造成150伤害
  23.                  (display_message,"@zhangfei_2",0x33DD33),#弹出文字,也就是第二段:张 飞 之 咆 哮 , 让 数 名 敌 人 肝 胆 俱 裂 而 死 !
复制代码

        言必,因为刚开始写,这个技能里面还有部分功能没写上去,比如喝死敌军的范围,我理想的是在30米内随机吓死敌人,但目前是范围内的150血以下的敌人全死,有点英霸;还有,因为做的匆忙,以后应该将被吓死的人数存起来,用寄存器输出准确的敌人人数;另外出于游戏性的需要,或许还会加些减伤,根据杀人数回血等。


mb35.jpg
mb36.jpg

57

主题

954

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-3-11 19:05:20 | 显示全部楼层
你这个逻辑应该是只要30米以内(1500这个距离我也不知道是多少,一直以为是15米)有敌人,你的那句display_message就会被触发触发,触发次数是30米内敌人的个数。
首先,把你的display_message写在循环外,不过这样的效果是每隔5秒吼一声
其次,在循环体内加一个杀死人的flag,之后通过判断这个flag来判断是否吼叫杀了人,再触发display_message
最后,给个建议,你的try_for_agents其实有四个参数,(try_for_agents, <destination>, [<position_no>], [<radius_fixed_point>]),
可以改成(try_for_agents, ":enemy_agent_no",pos1,1500),这样效率高。":enemy_agent_no"存放的就是靠近pos1距离为1500的人。

鲜花鸡蛋

黑脸小白  在2020-3-11 19:52  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

15

主题

544

回帖

193

积分

见习骑士

Rank: 3

UID
57810
第纳尔
2381
精华
0
互助
5
荣誉
0
贡献
0
魅力
2
注册时间
2007-12-9

骑砍中文站APP会员勋章元老骑士勋章

鲜花(36) 鸡蛋(0)
发表于 2023-1-22 01:25:26 | 显示全部楼层
请问这个代码完善好了吗?

52

主题

443

回帖

269

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
2743526
第纳尔
2436
精华
0
互助
18
荣誉
3
贡献
10
魅力
252
注册时间
2016-5-3

霸主正版勋章

鲜花(198) 鸡蛋(0)
 楼主| 发表于 2023-2-1 16:52:07 | 显示全部楼层
adslhyl510 发表于 2023-1-22 01:25
请问这个代码完善好了吗?

很久以前已经完善,这是我刚学习写代码的时候写的,很多地方不懂、不注意。

15

主题

544

回帖

193

积分

见习骑士

Rank: 3

UID
57810
第纳尔
2381
精华
0
互助
5
荣誉
0
贡献
0
魅力
2
注册时间
2007-12-9

骑砍中文站APP会员勋章元老骑士勋章

鲜花(36) 鸡蛋(0)
发表于 2023-2-7 07:02:17 来自手机 | 显示全部楼层
黑脸小白 发表于 2023-2-1 16:52
很久以前已经完善,这是我刚学习写代码的时候写的,很多地方不懂、不注意。

请问能方便分享完善好的思路学习下吗?
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-5-18 14:39 , Processed in 0.123258 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表