骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[求助] 【可有偿】【已解决】如何废除领主带兵系统?

[复制链接]

20

主题

60

回帖

49

积分

扈从

Rank: 2Rank: 2

UID
3067732
第纳尔
127
精华
0
互助
5
荣誉
0
贡献
0
魅力
5
注册时间
2019-4-11
鲜花(10) 鸡蛋(0)
发表于 2020-3-29 16:50:15 | 显示全部楼层 |阅读模式
本帖最后由 TurpinHero 于 2020-4-1 08:18 编辑

我在做一个英格兰内战的mod,有个设想:比如说克伦威尔(圆颅党)的新规范军有十二个步兵团一个一千二百人十一个骑兵团一个六百人一个炮兵团炮九百门,然后我削了下变成了:
第一步兵团- 步兵 600 + 炮3门
第二步兵团- 步兵 600 + 炮3门
第三步兵团- 步兵 600 + 炮3门
第四步兵团- 步兵 600 + 炮3门
第五步兵团- 步兵 600 + 炮3门
第六步兵团- 步兵 600 + 炮5门
第七步兵团- 步兵 600 + 炮5门
第八步兵团- 步兵 600 + 炮5门
第九步兵团- 步兵 600 + 炮5门
第十步兵团- 步兵 600 + 炮5门
第十一步兵团- 步兵 600 + 炮5门
第十二步兵团- 步兵 600 + 炮5门

第一骑兵团- 骑兵 300
第二骑兵团- 骑兵 300
第三骑兵团- 骑兵 300
第四骑兵团- 骑兵 300
第五骑兵团- 骑兵 300
第六骑兵团- 骑兵 300
第七骑兵团- 骑兵 300
第八骑兵团- 骑兵 300
第九骑兵团- 骑兵 300

第一龙骑兵团- 1000

后备炮兵营- 炮850门

后备步兵营- 步兵 7200

(将多余的放入了后备营中,不会在大地图出现)

而问题出现了——我的设想是这些人死了就会自动去后备的领,而后备的会每周征一次兵多个五百人甚么的,却不会写代码(何等的尴尬
所以哪个大神帮个忙?——标题说有偿我不会做标题党,,但不要狮子大开口我还是学生党

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
发表于 2020-3-30 10:42:06 | 显示全部楼层
本帖最后由 yunwei1237 于 2020-3-30 13:11 编辑

你好,你的功能和基本是类似的,他的功能是,根据指令出现在地图上,你的是出现地图上时,从据点中的预备兵中直接招募。

你的功能大概分以下几个步骤:
1.定时贮备预备兵
2.限制领主私自招募士兵
3.领主士兵不够时直接从据点取兵


针对这三个问题

定时贮备预备兵:
给据点(城镇,城堡,村庄)使用两个slot,用于保存预备兵的id(不同国家可能不一样)和预备兵的数量。在游戏开始时,就给每一个据点设置好兵种,创建一个触发器,定时给据点增加预备兵的数量
限制领主私自招募士兵
系统本身有一个触发器,每48小时会自动检测领主是否从监狱放出,然后给该领主创建部队和招募士兵,可以从这个触发器入手,用改变招募士兵,并从预备兵的数量中减去,创建部队和招募士兵使用的是script_create_kingdom_hero_party,可以创建一个新的脚本,用于创建部队,并从预备兵中招募,以及维护据点士兵数量。不需要大改这个触发器。

领主士兵不够时直接从据点取兵
这个最简单,创建一个触发器,定时检测领主士兵是否够用(可以使用script_party_get_ideal_size来检测士兵是否满员),如果不够就从预备军中招募,然后修改据点士兵数量。为了真实一点,也可以定时让领主移到到自己的土地,然后,再修改士兵数量,这样看起来就像是从领地招募的士兵,而不是凭空出现的士兵。
我只提供了思路,并没有提供代码,现在没有时间写,所以只能写一个思路给你。


简单触发器(第二个问题参考的触发器)如下:
  1. # Respawn hero party after kingdom hero is released from captivity.
  2.   (48,
  3.    [
  4.        (try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
  5.          (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),

  6.          (str_store_troop_name, s1, ":troop_no"),
  7.       
  8.          (neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0),
  9.          (neg|troop_slot_ge, ":troop_no", slot_troop_leaded_party, 1),

  10.          (store_troop_faction, ":cur_faction", ":troop_no"),
  11.          (try_begin),
  12.            (eq, ":cur_faction", "fac_outlaws"), #Do nothing
  13.          (else_try),         
  14.            (try_begin),
  15.              (eq, "$cheat_mode", 2),
  16.              (str_store_troop_name, s4, ":troop_no"),
  17.              (display_message, "str_debug__attempting_to_spawn_s4"),
  18.            (try_end),
  19.            
  20.            (call_script, "script_cf_select_random_walled_center_with_faction_and_owner_priority_no_siege", ":cur_faction", ":troop_no"),#Can fail
  21.            (assign, ":center_no", reg0),

  22.            (try_begin),
  23.              (eq, "$cheat_mode", 2),            
  24.              (str_store_party_name, s7, ":center_no"),
  25.                          (str_store_troop_name, s0, ":troop_no"),
  26.              (display_message, "str_debug__s0_is_spawning_around_party__s7"),
  27.            (try_end),
  28.       
  29.            (call_script, "script_create_kingdom_hero_party", ":troop_no", ":center_no"),

  30.                    (try_begin),
  31.                      (eq, "$g_there_is_no_avaliable_centers", 0),
  32.              (party_attach_to_party, "$pout_party", ":center_no"),
  33.            (try_end),
  34.            
  35.            #new
  36.            #(troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  37.                    #(call_script, "script_npc_decision_checklist_party_ai", ":troop_no"), #This handles AI for both marshal and other parties               
  38.                    #(call_script, "script_party_set_ai_state", ":party_no", reg0, reg1),
  39.                    #new end

  40.            (troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  41.            (call_script, "script_party_set_ai_state", ":party_no", spai_holding_center, ":center_no"),           
  42.            
  43.          (else_try),
  44.            (neg|faction_slot_eq, ":cur_faction", slot_faction_state, sfs_active),
  45.            (try_begin),
  46.              (is_between, ":troop_no", kings_begin, kings_end),
  47.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, "fac_commoners"),
  48.            (else_try),
  49.              (store_random_in_range, ":random_no", 0, 100),
  50.              (lt, ":random_no", 10),
  51.              (call_script, "script_cf_get_random_active_faction_except_player_faction_and_faction", ":cur_faction"),
  52.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, reg0),
  53.            (try_end),
  54.          (try_end),
  55.        (try_end),
  56.     ]),
复制代码

【已解决】如何实现国家没有元帅或者指令一个阵营的所有领主不在大地图出现?
http://bbs.mountblade.com.cn/thread-2054894-1-1.html
(出处: 骑马与砍杀中文站论坛)

评分

参与人数 1第纳尔 +20 互助 +1 收起 理由
幼稚园殺手 + 20 + 1 乐于助人!

查看全部评分

鲜花鸡蛋

TurpinHero  在2020-3-30 12:45  送朵鲜花  并说:谢谢你!——不过那个链接失效了😂
TurpinHero  在2020-3-30 12:45  送朵鲜花  并说:谢谢你!——不过那个链接失效了😂
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-11-19 10:31 , Processed in 0.113526 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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