骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] 使每局游戏的城镇各个场景随机化

[复制链接]

22

主题

77

回帖

340

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1428
精华
1
互助
14
荣誉
14
贡献
10
魅力
134
注册时间
2020-4-2

霸主正版勋章

鲜花(40) 鸡蛋(0)
发表于 2021-11-25 07:00:19 | 显示全部楼层 |阅读模式
本帖最后由 我只玩MID 于 2021-11-25 14:55 编辑

玩过潘德的预言的都知道,白鹿堡是自立的不二之选,对于玩家而言,易攻易守。这让很多人(我)新档自立都是选在白鹿堡,让整局游戏都枯燥了不少。
这次的分享主要是让各个城镇的场景变得随机化,相同的城每个档的场景都不一样,包括攻守城。这里只写了城镇场景的随机化,不过城堡和村子也都大同小异。
首先得增加两个简单的脚本:
  1. ##初始化城镇场景
  2.   ("initialization_town_scene",
  3.     [
  4.     (store_script_param, ":party_id", 1),
  5.     (store_script_param, ":number_id", 2),
  6.    
  7.     (party_set_slot,":party_id", slot_party_type, spt_town),
  8.    
  9.     (assign, ":offset", -1),
  10.     (val_add, ":offset", ":number_id"),
  11.    
  12.     (store_add, ":cur_object_no", "scn_town_1_center", ":offset"),
  13.     (party_set_slot,":party_id", slot_town_center, ":cur_object_no"),
  14.     (store_add, ":cur_object_no", "scn_town_1_castle", ":offset"),
  15.     (party_set_slot,":party_id", slot_town_castle, ":cur_object_no"),
  16.     (store_add, ":cur_object_no", "scn_town_1_prison", ":offset"),
  17.     (party_set_slot,":party_id", slot_town_prison, ":cur_object_no"),
  18.     (store_add, ":cur_object_no", "scn_town_1_walls", ":offset"),
  19.     (party_set_slot,":party_id", slot_town_walls, ":cur_object_no"),
  20.     (store_add, ":cur_object_no", "scn_town_1_tavern", ":offset"),
  21.     (party_set_slot,":party_id", slot_town_tavern, ":cur_object_no"),
  22.     (store_add, ":cur_object_no", "scn_town_1_store", ":offset"),
  23.     (party_set_slot,":party_id", slot_town_store, ":cur_object_no"),
  24.     (store_add, ":cur_object_no", "scn_town_1_arena", ":offset"),
  25.     (party_set_slot,":party_id", slot_town_arena, ":cur_object_no"),
  26.     (store_add, ":cur_object_no", "scn_town_1_alley", ":offset"),
  27.     (party_set_slot,":party_id", slot_town_alley, ":cur_object_no"),
  28.    
  29.     (party_set_slot,":party_id", slot_town_reinforcement_party_template, "pt_center_reinforcements"),
  30.   ]),
  31.   
  32. ##随机一个可行的场景
  33.   ("random_town_scene",
  34.     [
  35.     (store_script_param, ":party_id", 1),
  36.    
  37.     (store_faction_of_party, ":party_faction", ":party_id"),
  38.     (faction_get_slot, ":faction_culture", ":party_faction", slot_faction_culture),
  39.    
  40.     (store_random_in_range, ":rand", 1, 23),
  41.     (assign, ":rand_town", ":rand"),
  42.     (val_sub, ":rand_town", 1),
  43.     (val_add, ":rand_town", "p_town_1"),
  44.     (assign, ":pass_check", 0),
  45.    
  46.     ##11##
  47.     (try_begin),
  48.       (eq, ":faction_culture", fac_culture_3),
  49.       (try_begin),
  50.         (this_or_next|is_between, ":rand_town", "p_town_17", "p_town_19"),
  51.         (this_or_next|eq, ":rand_town", "p_town_10"),
  52.         (eq, ":rand_town", "p_town_14"),
  53.         (assign, ":pass_check", 1),
  54.       (try_end),
  55.     (else_try),
  56.       (try_begin),
  57.         (this_or_next|is_between, ":rand_town", "p_town_3", "p_town_9"),
  58.         (this_or_next|eq, ":rand_town", "p_town_13"),
  59.         (is_between, ":rand_town", "p_town_15", "p_town_17"),
  60.         (assign, ":pass_check", 1),
  61.       (try_end),
  62.     (try_end),
  63.     ##11##
  64.    
  65.     (try_begin),
  66.       (eq, ":pass_check", 1),
  67.       (assign, reg0, ":rand"),
  68.     (else_try),
  69.       (call_script, "script_random_town_scene",":party_id"),
  70.     (try_end),
  71.   ]),
复制代码
很好理解,第一个脚本是重新设置城镇的一些场景slot,第二个则是给各个城镇随机一个契合的场景(不至于大地图上草原地形,场景里确是雪地)但这里只是用库吉特文化演示了一下。
添加完这两个脚本后,在新增一个触发器:
  1. (0, 0, ti_once, [],
  2.   [
  3.     (try_for_range, ":town_no", towns_begin, towns_end),
  4.       (call_script, "script_random_town_scene", ":town_no"),
  5.       (call_script, "script_initialization_town_scene", ":town_no", reg0),
  6.     (try_end),
  7.    
  8.     ]),
复制代码
随机脚本的核心是##11##区域,按照自己的实际情况来写。
都是简单的语句组成,没什么学习价值,但好像没有mod做过类似的功能,所以发出来给大伙提供个思路。


评分

参与人数 2第纳尔 +20 互助 +3 魅力 +5 收起 理由
幼稚园殺手 + 10 + 1 + 5 您的帖子很有价值!
aliang227 + 10 + 2 您的帖子很有价值!

查看全部评分

鲜花鸡蛋

幼稚园殺手  在2021-11-25 13:25  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

55

主题

2773

回帖

1773

积分

子爵[版主]

吟游诗人

Rank: 7Rank: 7Rank: 7

UID
3054380
第纳尔
23779
精华
2
互助
57
荣誉
44
贡献
916
魅力
1418
注册时间
2019-1-18

骑砍中文站APP会员勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章霸主正版勋章剧本设计大奖赛骑友真人秀Ⅷ勋章骑友真人秀Ⅶ勋章骑友真人秀Ⅸ勋章

QQ
鲜花(514) 鸡蛋(2)
发表于 2021-11-25 13:25:26 | 显示全部楼层
牛逼啊
珍惜 奉献 不负韶华

62

主题

2883

回帖

924

积分

骑士

Rank: 4Rank: 4

UID
2481918
第纳尔
6067
精华
0
互助
8
荣誉
0
贡献
0
魅力
28
注册时间
2015-3-26

骑砍中文站APP会员勋章骑士美德之英勇勋章[杰出会员活跃勋章]元老骑士勋章骑砍中文站微博会员勋章

鲜花(270) 鸡蛋(50)
发表于 2021-11-26 16:41:22 | 显示全部楼层
楼主这个方法不错啊
重振中文站荣光,吾辈义不容辞

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12138
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1263) 鸡蛋(0)
发表于 2022-1-22 16:37:12 | 显示全部楼层
感谢,借鉴一下,思路很好!

不过想补充一下的是,其他的都无所谓,但是攻城场景的随机还要注意是否有攻城塔,和攻城梯的mt不一样,是由这个slot控制的 slot_center_siege_with_belfry

可以在初始化的时候把party的这个设置注释掉,用个类似的scene slot来让他和scene绑定,如slot_scene_siege_with_belfry

之后在随机的时候用个简单的script把scene的这个 slot调出来,再赋给随机的party就行了。

1

主题

13

回帖

24

积分

随仆

Rank: 1

UID
3283531
第纳尔
301
精华
0
互助
2
荣誉
1
贡献
0
魅力
16
注册时间
2021-11-1
鲜花(34) 鸡蛋(0)
发表于 2022-1-22 20:39:15 来自手机 | 显示全部楼层
早在几年前r大就提出过这个想法,但当时有不少人反对这个。来自: Android客户端
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-29 10:14 , Processed in 0.147245 second(s), 30 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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