- 好友
 - 5
  
- 在线时间
 - 0 小时
  
- 最后登录
 - 2025-11-1
  
 
 
 
 
见习骑士 
  
 
- UID
 - 3199602
  
- 第纳尔
 - 1177 
  
- 精华
 - 0
  
- 互助
 - 36 
  
- 荣誉
 - 0 
  
- 贡献
 - 1 
  
- 魅力
 - 227 
  
- 注册时间
 - 2020-9-4
  
 
  鲜花( 63)   鸡蛋( 0)  
 | 
 
 
 楼主 |
发表于 2025-10-14 00:41:08
|
显示全部楼层
 
 
 
 本帖最后由 奥杜因阿卡托什 于 2025-10-14 00:42 编辑  
 
    上面的办法,给物品、部队、部队模板、阵营这些用已经足够了,然而还有兵种却还有一个问题。加上之后,会发现兵种树顶端的兵,莫名多了一截升级。这就是因为升级树也是在troop之外添加的,和它冲突了。 
因此,给troop添加新数组,需要让两位出来。比如 
-   ["watchman","Watchman","Watchmen",#眼线
 
 -    tf_guarantee_boots|tf_guarantee_armor,
 
 -    no_scene,reserved,fac_commoners,
 
 -    [itm_shirt, itm_linen_tunic, itm_burlap_tunic, itm_leather_apron, itm_tabard, itm_butchering_knife, itm_dagger, itm_sword_medieval_b_small, itm_sword_medieval_c, itm_straw_hat, itm_head_wrappings, itm_headcloth, itm_felt_hat, itm_felt_hat_b, itm_wrapping_boots, itm_woolen_hose, itm_blue_hose, itm_ankle_boots, itm_pitch_fork, itm_military_fork, itm_battle_fork, itm_boar_spear, itm_simple_bow, itm_practice_arrows_2, itm_arrows],  
 
 -    str_9|agi_7|int_5|cha_5|level(9), wp_one_handed (60) | wp_two_handed (60) | wp_polearm (60) | wp_archery (70) | wp_crossbow (60) | wp_throwing (70), 
 
 -    knows_ironflesh_1|knows_power_draw_1|knows_athletics_1|knows_horse_archery_1|knows_looting_1|knows_tracking_1|knows_pathfinding_1|knows_spotting_1|knows_first_aid_1|knows_trade_1, 
 
 -    mercenary_face_1, mercenary_face_2, "none", 
 
 -    0, 0, tff_reconnaissance, #侦察
 
 -   ],
 
  复制代码 前面这两个0,0就是给升级树留的位。 
    然而这还不够,升级树在写的时候并没有考虑会有人给它留位的情况,所以用的插值,会导致有升级的兵数组比没升级的兵多两位,填入的数位置也不同了。因此,找到header_troops.py,反到最下面def upgrade(troops,troop1_id,troop2_id):和def upgrade2(troops,troop1_id,troop2_id,troop3_id):,看到这两个升级树函数的最后一行,都用的是 
-       cur_troop[14:14] = [troop2_no, 0]
 
  复制代码 这个表示插值,会往14位后凭空插入两行。我们给它改成替换,用上预留的两位 
-       cur_troop[14:14] = [troop2_no, 0]
 
  复制代码 就行了。 
    其余的差不多,记得因为多留了两位,process里需要18位, 
- def save_troops():
 
 -   file = open(export_dir + "troops.txt","w")
 
 -   file.write("troopsfile version 2\n")
 
 -   file.write("%d "%len(troops))
 
 -   for troop in troops:
 
 -     troop_len = len(troop)
 
 -     if troop_len == 11:
 
 -       troop[11:11] = [0, 0, 0, 0, 0, 0, 0, 0]
 
 -     elif troop_len == 12:
 
 -       troop[12:12] = [0, 0, 0, 0, 0, 0, 0]
 
 -     elif troop_len == 13:
 
 -       troop[13:13] = [0, 0, 0, 0, 0, 0]
 
 -     elif troop_len == 14:
 
 -       troop[14:14] = [0, 0, 0, 0, 0]
 
 -     elif troop_len == 15:
 
 -       troop[15:15] = [0, 0, 0, 0]
 
 -     elif troop_len == 16:
 
 -       troop[16:16] = [0, 0, 0]
 
 -     elif troop_len == 17:
 
 -       troop[17:17] = [0, 0]
 
 -     elif troop_len == 18:
 
 -       troop[18:18] = [0]
 
  复制代码 
 
而脚本里的def set_troop_function()只要写16位就行。不是18位也是由于那两个升级树。 
- def set_troop_function():
 
 -   troop_function = []
 
 -   for i_troop in xrange(len(troops)):
 
 -     troop_function.append((troop_set_slot, i_troop, slot_troop_function, troops[i_troop][16]))
 
 -   return troop_function[:]
 
  复制代码 
 
 |   
 
 
 
 |