骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] [狂人的知识]子阵营系统与其显示界面

[复制链接]

32

主题

72

回帖

181

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1041
精华
0
互助
30
荣誉
0
贡献
1
魅力
203
注册时间
2020-9-4
鲜花(54) 鸡蛋(0)
发表于 2023-5-31 04:36:37 | 显示全部楼层 |阅读模式
本帖最后由 奥杜因阿卡托什 于 2023-5-31 11:08 编辑

       国家之下的“派系”很多mod都做过,但我因为要做野外势力的支线,需要给野怪阵营也来上一套派系。有一天突发奇想,既然国家有子势力,野怪也有子势力,为什么不给它们整合进一个系统呢?这就是我最近做这个新子阵营系统的初衷了,效果如图所示,现应@黑暗路西法 的请求,进行开源。
       首先先介绍一下这个新系统吧,由于faction数量上限很小,本来我是用faction做的,现在改成item。原有的faction与这些新势力的关系可以理解为“文化”和具体的国家,仅仅作为一些“身份”或“性质”存在。新的势力被分为五阶,第一阶是一些特殊部队、小商会、教支、学阀等,第二阶是骑士团、世族、大商行、冒险团、佣兵团等,第三阶是附属国、地区贵族组织、朋党、外神派系等,第四阶是主权国家以及与其体量相当的力量,第五阶是国际联合、跨国组织、世界性宗教等。在我这个系统里可以设置它们之间的所属,另外有一个比较特别的点是,npc和派系可以是平权的,就像下图“成员”所示的那样,领主和骑士团同样直属某个附属国。加入某个派系的领主可以设置其地位,分别有首领、支柱、普通成员三种,当然在目前这个框架下还没有什么区别。
       除此之外点“军事力量”那个按钮,是可以显示改派系的兵种树的。差不多就是这样。
       在放代码前先说一下注意事项,第一,这个帖子并不是“猴子都能学会的”手把手式教程,往自己的mod里加了以后多半水土不服,编译时很难不爆错,需要使用者有一定的解读代码及解决问题的能力。实在有完全搞不明白的问题可以问我,但如果对报错没有任何解决能力的,只能说还没到用这个代码的时候。
       第二是我整个五阶派系树,很大一部分原因是为了方便玩家在野外阵营的支线中查阅各角色、组织的关系,属于是剧情需要,如果本身并没有做一堆小势力的打算,大可不必用这个玩意儿。
       接下来放代码,首先自然是slot
  1. 虽然写的都是faction,但这些其实是item的slot。就像之前说的,责任全在夫妻档。
  2. #item clique
  3. slot_item_faction_related =100

  4. #faction structure
  5. slot_faction_affiliation = 101#Member satisfacitionis between 0 and 99. If there is no superior faction, this slot will be -1.
  6. slot_faction_member_satisfaction = 102
  7. slot_faction_member_position = 103#2 is leader, 1 is pillar, 0 is normal member.

  8. 这个是troop的
  9. #faction structure
  10. slot_troop_affiliation = 218#Member satisfacitionis between 0 and 99. If there is no superior faction, this slot will be -1.
  11. slot_troop_member_satisfaction = 219
  12. slot_troop_member_position = 220#2 is leader, 1 is pillar, 0 is normal member.

  13. slot_troop_secret_allegiance = 221#faction or troop that secretly alleged to. 10000*type(0 is faction and 1 is troop)+ID

  14. #slot_troop_belonged_spy = 222#The structure of these three value is 1000Xmember satisfacition+superior faction id. Member satisfacitionis between 0 and 99. If there is no superior faction, this slot will be -1.
复制代码
      然后把mesh和string里要定义的定义完
  1.   ("faction_window", 0, "faction_window", 0, 0, 0, 0, 0, 0, 1, 1, 1),  
  2.   ("background_1", 0, "background_1", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  3.   ("background_2", 0, "background_2", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  4.   ("background_3", 0, "background_3", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  5.   ("background_4", 0, "background_4", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  6.   ("background_5", 0, "background_5", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  7.   ("background_6", 0, "background_6", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  8.   ("faction_panel", 0, "faction_panel", 0, 0, 0, 0, 0, 0, 1, 1, 1),
  9.   ("faction_note", 0, "facegen_board", 0, 0, 0, 0, 0, 0, 1, 1, 1),
复制代码
faction_note这个我用的就是战团的素材啊。
  1.   ("total", "total"),
  2.   ("faction_grade_1", "footstone team"),
  3.   ("faction_grade_2", "colossus organization"),
  4.   ("faction_grade_3", "macro power"),
  5.   ("faction_grade_4", "leviathan"),
  6.   ("faction_grade_5", "detached institution"),
  7.   ("country_faction", "country_faction"),
  8.   ("out_faction", "out_faction"),
  9.   ("highest_faction", "highest_faction"),
  10.   ("not_highest_faction", "not_highest_faction"),
  11.   ("bottom_faction", "bottom_faction"),
  12.   ("not_bottom_faction", "not_bottom_faction"),

  13.   ("order", "order"),
  14.   ("neutrality", "neutrality"),
  15.   ("chaos", "chaos"),
  16.   ("good", "good"),
  17.   ("moderation", "moderation"),
  18.   ("evil", "evil"),

  19.   ("normal_member", "normal_member"),
  20.   ("pillar", "pillar"),
  21.   ("leader", "leader"),

  22.   ("power_structure", "power_structure"),
  23.   ("power_structure_default", "power_structure_default"),
  24.   ("autocratic", "autocratic"),
  25.   ("centralization", "centralization"),
  26.   ("co-discussion", "co-discussion"),
  27.   ("power_structure_default_description", "power_structure_default_description"),
  28.   ("autocratic_description", "autocratic_description"),
  29.   ("centralization_description", "centralization_description"),
  30.   ("co-discussion_description", "co-discussion_description"),
复制代码
然后是presentaion
  1. ("faction_window",0,mesh_faction_window,[
  2.       (ti_on_presentation_load,
  3.        [(set_fixed_point_multiplier, 1000),

  4. #faction_choosen>> the object of whole prsnt about. When it is 0, showed the retrival.
  5. #faction_showed>> what is showed in main area, including retrival, introduction, member and army.
  6. #faction_biref_show/troop_biref_show/lord_biref_show>> Brief information showed in the right side of prsnt, the note part.
  7. #faction_grade/faction_character/faction_affiliation is three retrival conditions.

  8. #_________________________________________________________________________________initialization___________________________________________________________________________
  9.         (try_for_range, ":count_no", 0, 500),
  10.            (troop_set_slot, "trp_temp_array_a", ":count_no", -1),
  11.            (troop_set_slot, "trp_temp_array_b", ":count_no", -1),
  12.            (troop_set_slot, "trp_temp_array_c", ":count_no", -1),
  13.         (try_end),

  14.         (assign, "$g_presentation_obj_1", -1),
  15.         (assign, "$g_presentation_obj_2", -1),
  16.         (assign, "$g_presentation_obj_3", -1),
  17.         (assign, "$g_presentation_obj_4", -1),

  18.         (assign, "$g_presentation_retrival_1", -1),
  19.         (assign, "$g_presentation_retrival_2", -1),
  20.         (assign, "$g_presentation_retrival_3", -1),

  21. #______________________________________________________________________________unchangeable prsnt______________________________________________________________________
  22.         (try_begin),
  23.            (gt, "$faction_chossen", 0),
  24.            (call_script, "script_faction_superior_country_check", "$faction_chossen", 0),
  25.            (gt, reg1, 0),
  26.            (store_sub, ":mesh_no", reg1, "itm_player_supporters_faction"),
  27.            (val_add, ":mesh_no", "mesh_faction_window"),
  28.         (else_try),
  29.            (assign, ":mesh_no", "mesh_faction_window"),
  30.         (try_end),
  31.         (create_mesh_overlay, reg1, ":mesh_no"),
  32.         (overlay_set_additional_render_height, reg1, -1),

  33.         (create_mesh_overlay, reg1, "mesh_faction_panel"),
  34.         (position_set_x, pos1, 0),
  35.         (position_set_y, pos1, 660),
  36.         (overlay_set_position, reg1, pos1),
  37.         (position_set_x, pos1, 1000),
  38.         (position_set_y, pos1, 700),
  39.         (overlay_set_size, reg1, pos1),
  40.         (overlay_set_additional_render_height, reg1, -1),

  41.         (create_mesh_overlay, reg1, "mesh_faction_note"),
  42.         (position_set_x, pos1, 700),
  43.         (position_set_y, pos1, 50),
  44.         (overlay_set_position, reg1, pos1),
  45.         (position_set_x, pos1, 500),
  46.         (position_set_y, pos1, 800),
  47.         (overlay_set_size, reg1, pos1),

  48.         (create_button_overlay, "$g_presentation_obj_1", "@Back", tf_center_justify),
  49.         (position_set_x, pos1, 885),
  50.         (position_set_y, pos1, 25),
  51.         (overlay_set_position, "$g_presentation_obj_1", pos1),
  52.         (overlay_set_color, "$g_presentation_obj_1", 0xFFFFFF),

  53. #___________________________________________________________________________________top and button part______________________________________________________________________
  54.         (try_begin),
  55.            (gt, "$faction_chossen", 0),
  56.            (str_store_item_name, s1, "$faction_chossen"),
  57.         (else_try),
  58.            (str_store_string, s1, "@Retrieval"),
  59.         (try_end),
  60.         (create_text_overlay, reg1, s1, tf_center_justify),
  61.         (position_set_x, pos1, 500),
  62.         (position_set_y, pos1, 720),
  63.         (overlay_set_position, reg1, pos1),
  64.         (position_set_x, pos1, 1000),
  65.         (position_set_y, pos1, 1000),
  66.         (overlay_set_size, reg1, pos1),
  67.         (overlay_set_color, reg1, 0xFFFFFF),

  68.         (try_begin),
  69.            (gt, "$faction_chossen", 0),
  70.            (item_get_slot, ":culture_faction_no", "$faction_chossen", slot_item_faction_related),
  71.            (faction_get_color, ":color_no", ":culture_faction_no"),
  72.            (create_mesh_overlay, reg1, "mesh_white_plane"),
  73.            (overlay_set_color, reg1, ":color_no"),
  74.            (position_set_x, pos1, 485),
  75.            (position_set_y, pos1, 675),
  76.            (overlay_set_position, reg1, pos1),
  77.            (position_set_x, pos1, 1500),
  78.            (position_set_y, pos1, 1500),
  79.            (overlay_set_size, reg1, pos1),
  80.         (try_end),

  81.         (str_store_string, s1, "@Faction_introduction"),
  82.         (call_script, "script_create_special_button_overlay", 88, 690),
  83.         (assign, "$g_presentation_button_1", reg1),

  84.         (str_store_string, s1, "@Member"),
  85.         (call_script, "script_create_special_button_overlay", 228, 690),
  86.         (assign, "$g_presentation_button_2", reg1),

  87.         (str_store_string, s1, "@Power_possessed"),
  88.         (call_script, "script_create_special_button_overlay", 368, 690),
  89.         (assign, "$g_presentation_button_3", reg1),

  90.         (str_store_string, s1, "@_"),
  91.         (call_script, "script_create_special_button_overlay", 633, 690),
  92.         (assign, "$g_presentation_button_4", reg1),

  93.         (str_store_string, s1, "@_"),
  94.         (call_script, "script_create_special_button_overlay", 773, 690),
  95.         (assign, "$g_presentation_button_5", reg1),

  96.         (str_store_string, s1, "@_"),
  97.         (call_script, "script_create_special_button_overlay", 913, 690),
  98.         (assign, "$g_presentation_button_6", reg1),


  99.         (create_button_overlay, "$g_presentation_obj_2", "@Retrieval", tf_center_justify),
  100.         (position_set_x, pos1, 775),
  101.         (position_set_y, pos1, 25),
  102.         (overlay_set_position, "$g_presentation_obj_2", pos1),
  103.         (overlay_set_color, "$g_presentation_obj_2", 0xFFFFFF),

  104. #_________________________________________________________________________________member part__________________________________________________________________________
  105. #leader and other information show in the left part, unscrollable
  106.         (try_begin),
  107.            (eq, "$faction_showed", 2),
  108.            (gt, "$faction_chossen", 0),

  109.            (create_text_overlay, reg1, "str_leader", tf_center_justify),
  110.            (position_set_x, pos1, 100),
  111.            (position_set_y, pos1, 630),
  112.            (overlay_set_position, reg1, pos1),
  113.            (overlay_set_color, reg1, 0xFFFFFF),

  114.            (create_text_overlay, reg1, "str_pillar", tf_center_justify),
  115.            (position_set_x, pos1, 300),
  116.            (position_set_y, pos1, 630),
  117.            (overlay_set_position, reg1, pos1),
  118.            (overlay_set_color, reg1, 0xFFFFFF),

  119.            (create_text_overlay, reg1, "str_normal_member", tf_center_justify),
  120.            (position_set_x, pos1, 500),
  121.            (position_set_y, pos1, 630),
  122.            (overlay_set_position, reg1, pos1),
  123.            (overlay_set_color, reg1, 0xFFFFFF),

  124.            (call_script, "script_faction_leader_check", "$faction_chossen"),
  125.            (try_begin),
  126.               (ge, reg1, 0),
  127.               (assign, ":faction_affiliation_no", reg1),
  128.               (val_mul, reg1, 10),
  129.               (assign, ":leader_faction_no", reg2),
  130.               (val_add, ":leader_faction_no", reg1),                                                          #10*id+type(0>>faction and 1>>troop)
  131.               (call_script, "script_draw_faction_image", ":faction_affiliation_no", reg2, 100, 540),
  132.               (troop_set_slot, "trp_temp_array_a", reg1, ":leader_faction_no"),
  133.            (try_end),

  134.            (item_get_abundance, ":count_no", "$faction_chossen"),                        #faction_power_structure
  135.            (store_add, ":string_no", ":count_no", "str_power_structure_default"),
  136.            (str_store_string, s1, ":string_no"),
  137.            (str_store_string, s2, "str_power_structure"),
  138.            (create_text_overlay, reg1, "@{s2}:_{s1}", tf_center_justify),
  139.            (position_set_x, pos1, 100),
  140.            (position_set_y, pos1, 430),
  141.            (overlay_set_position, reg1, pos1),
  142.            (position_set_x, pos1, 900),
  143.            (position_set_y, pos1, 900),
  144.            (overlay_set_size, reg1, pos1),
  145.            (try_begin),
  146.               (eq, ":count_no", 0),#default
  147.               (overlay_set_color, reg1, 0xCCCCCC),
  148.            (else_try),
  149.               (eq, ":count_no", 1),#autocrat
  150.               (overlay_set_color, reg1, 0x336688),
  151.            (else_try),
  152.               (eq, ":count_no", 2),#centralization
  153.               (overlay_set_color, reg1, 0x6699CC),
  154.            (else_try),
  155.               (eq, ":count_no", 3),#co-discussion
  156.               (overlay_set_color, reg1, 0x99CCFF),
  157.            (try_end),

  158.            (store_add, ":string_no", ":count_no", "str_power_structure_default_description"),
  159.            (str_store_string, s1, ":string_no"),
  160.            (create_text_overlay, reg1, s1, tf_scrollable),
  161.            (position_set_x, pos1, 10),
  162.            (position_set_y, pos1, 300),
  163.            (overlay_set_position, reg1, pos1),
  164.            (position_set_x, pos1, 800),
  165.            (position_set_y, pos1, 800),
  166.            (overlay_set_size, reg1, pos1),
  167.            (position_set_x, pos1, 180),
  168.            (position_set_y, pos1, 100),
  169.            (overlay_set_area_size, reg1, pos1),
  170.            (overlay_set_color, reg1, 0xFFFFFF),

  171.            (call_script, "script_faction_pillar_number_check", "$faction_chossen"),
  172.            (str_store_string, s1, "str_pillar"),
  173.            (assign, ":member_count_1", reg1),
  174.            (create_text_overlay, reg1, "@{s1}number:_{reg1}", tf_center_justify),
  175.            (position_set_x, pos1, 100),
  176.            (position_set_y, pos1, 270),
  177.            (overlay_set_position, reg1, pos1),
  178.            (position_set_x, pos1, 900),
  179.            (position_set_y, pos1, 900),
  180.            (overlay_set_size, reg1, pos1),
  181.            (overlay_set_color, reg1, 0xFFFFFF),

  182.            (call_script, "script_faction_normal_number_check", "$faction_chossen"),
  183.            (str_store_string, s1, "str_normal_member"),
  184.            (assign, ":member_count_2", reg1),
  185.            (create_text_overlay, reg1, "@{s1}number:_{reg1}", tf_center_justify),
  186.            (position_set_x, pos1, 100),
  187.            (position_set_y, pos1, 240),
  188.            (overlay_set_position, reg1, pos1),
  189.            (position_set_x, pos1, 900),
  190.            (position_set_y, pos1, 900),
  191.            (overlay_set_size, reg1, pos1),
  192.            (overlay_set_color, reg1, 0xFFFFFF),

  193.            (val_max, ":member_count_1", ":member_count_2"),

  194.            (create_mesh_overlay, reg1, "mesh_white_plane"),
  195.            (position_set_x, pos1, 200),
  196.            (position_set_y, pos1, 55),
  197.            (overlay_set_position, reg1, pos1),
  198.            (position_set_x, pos1, 50),
  199.            (position_set_y, pos1, 28500),
  200.            (overlay_set_size, reg1, pos1),

  201.            (create_mesh_overlay, reg1, "mesh_white_plane"),
  202.            (position_set_x, pos1, 400),
  203.            (position_set_y, pos1, 55),
  204.            (overlay_set_position, reg1, pos1),
  205.            (position_set_x, pos1, 50),
  206.            (position_set_y, pos1, 28500),
  207.            (overlay_set_size, reg1, pos1),
  208.         (try_end),

  209. #_______________________________________________________________________________________right part____________________________________________________________________________
  210.         (try_begin),
  211.            (gt, "$faction_biref_show", 0),
  212.            (call_script, "script_faction_brief_show", "$faction_biref_show"),
  213.         (else_try),
  214.            (gt, "$lord_biref_show", 0),
  215.            (call_script, "script_lord_brief_show", "$lord_biref_show"),
  216.         (else_try),
  217.            (gt, "$troop_biref_show", 0),
  218.            (call_script, "script_troop_brief_show", "$troop_biref_show"),
  219.         (try_end),

  220. #_______________________________________________________________________________________main part____________________________________________________________________________
  221.         (create_text_overlay, "$g_presentation_container_1", "@ ", tf_scrollable),
  222.         (position_set_x, pos1, 50),
  223.         (position_set_y, pos1, 70),
  224.         (overlay_set_position, "$g_presentation_container_1", pos1),
  225.         (position_set_x, pos1, 600),
  226.         (position_set_y, pos1, 550),
  227.         (overlay_set_area_size, "$g_presentation_container_1", pos1),
  228.         (set_container_overlay, "$g_presentation_container_1"),
  229. #________________________________________________________________________________________retrival___________________________________________________________________________
  230.         (try_begin),
  231.            (le, "$faction_showed", 0),
  232.            (le, "$faction_chossen", 0),

  233.            (assign, ":cur_y", 30),
  234.            (store_add, ":faction_begin", "itm_faction_begin", 1),
  235.            (try_for_range, ":count_no", ":faction_begin", "itm_faction_end"),
  236.               (item_get_difficulty, ":grade_no", ":count_no"),#faction grade
  237.               (ge, ":grade_no", 1),
  238.               (call_script, "script_cf_faction_retrival_check", ":count_no"),

  239.               (str_store_item_name, s1, ":count_no"),
  240.               (create_button_overlay, reg1, s1),
  241.               (position_set_x, pos1, 20),
  242.               (position_set_y, pos1, ":cur_y"),
  243.               (overlay_set_position, reg1, pos1),
  244.               (position_set_x, pos1, 1000),
  245.               (position_set_y, pos1, 1000),
  246.               (overlay_set_size, reg1, pos1),
  247.               (overlay_set_color, reg1, 0xFFFFFF),
  248.               (val_add, ":cur_y", 30),
  249.               (troop_set_slot, "trp_temp_array_a", reg1, ":count_no"),
  250.            (try_end),
  251. #_____________________________________________________________________________________introduction___________________________________________________________________________
  252.         (else_try),
  253.            (eq, "$faction_showed", 1),
  254.            (gt, "$faction_chossen", 0),

  255.            (create_mesh_overlay_with_item_id, reg1, "$faction_chossen"),
  256.            (position_set_x, pos1, 300),
  257.            (position_set_y, pos1, 540),
  258.            (overlay_set_position, reg1, pos1),
  259.            (position_set_x, pos1, 2500),
  260.            (position_set_y, pos1, 2500),
  261.            (overlay_set_size, reg1, pos1),

  262.            (str_store_item_name_plural, s1, "$faction_chossen"),
  263.            (create_text_overlay, reg1, s1, tf_scrollable),
  264.            (position_set_x, pos1, 20),
  265.            (position_set_y, pos1, 320),
  266.            (overlay_set_position, reg1, pos1),
  267.            (position_set_x, pos1, 900),
  268.            (position_set_y, pos1, 900),
  269.            (overlay_set_size, reg1, pos1),
  270.            (position_set_x, pos1, 560),
  271.            (position_set_y, pos1, 70),
  272.            (overlay_set_area_size, reg1, pos1),
  273.            (overlay_set_color, reg1, 0xFFFFFF),

  274.            (item_get_difficulty, ":grade_no", "$faction_chossen"),#faction grade
  275.            (val_sub, ":grade_no", 1),
  276.            (val_add, ":grade_no", "str_faction_grade_1"),
  277.            (str_store_string, s1, ":grade_no"),
  278.            (create_text_overlay, reg1, s1),
  279.            (position_set_x, pos1, 40),
  280.            (position_set_y, pos1, 250),
  281.            (overlay_set_position, reg1, pos1),
  282.            (position_set_x, pos1, 1000),
  283.            (position_set_y, pos1, 1000),
  284.            (overlay_set_size, reg1, pos1),
  285.            (try_begin),
  286.               (eq, ":grade_no", "str_faction_grade_1"),
  287.               (overlay_set_color, reg1, 0xCCCCCC),
  288.            (else_try),
  289.               (eq, ":grade_no", "str_faction_grade_2"),
  290.               (overlay_set_color, reg1, 0xFFCCCC),
  291.            (else_try),
  292.               (eq, ":grade_no", "str_faction_grade_3"),
  293.               (overlay_set_color, reg1, 0xFF9999),
  294.            (else_try),
  295.               (eq, ":grade_no", "str_faction_grade_4"),
  296.               (overlay_set_color, reg1, 0xFF6666),
  297.            (else_try),
  298.               (eq, ":grade_no", "str_faction_grade_5"),
  299.               (overlay_set_color, reg1, 0xFF3333),
  300.            (try_end),

  301.            (item_get_thrust_damage, reg1, "$faction_chossen"),#order and chaos
  302.            (item_get_swing_damage, reg2, "$faction_chossen"),#good_and_evil
  303.            (try_begin),
  304.               (le, reg1, 30),
  305.               (str_store_string, s1, "str_neutrality"),
  306.            (else_try),
  307.               (item_get_thrust_damage_type, ":return_value", "$faction_chossen"),#0 is order and 1 is chaos
  308.               (try_begin),
  309.                  (eq, ":return_value", 0),
  310.                  (str_store_string, s1, "str_order"),
  311.               (else_try),
  312.                  (str_store_string, s1, "str_chaos"),
  313.               (try_end),
  314.            (try_end),
  315.            (try_begin),
  316.               (le, reg2, 30),
  317.               (str_store_string, s2, "str_moderation"),
  318.            (else_try),
  319.               (item_get_swing_damage_type, ":return_value", "$faction_chossen"),#0 is good and 1 is evil
  320.               (try_begin),
  321.                  (eq, ":return_value", 0),
  322.                  (str_store_string, s2, "str_good"),
  323.               (else_try),
  324.                  (str_store_string, s2, "str_evil"),
  325.               (try_end),
  326.            (try_end),
  327.            (create_text_overlay, reg1, "@{s1}{s2}_({reg1}|{reg2})_"),
  328.            (position_set_x, pos1, 40),
  329.            (position_set_y, pos1, 220),
  330.            (overlay_set_position, reg1, pos1),
  331.            (position_set_x, pos1, 1000),
  332.            (position_set_y, pos1, 1000),
  333.            (overlay_set_size, reg1, pos1),
  334.            (store_add, ":count_no", reg1, reg2),
  335.            (try_begin),
  336.               (gt, ":count_no", 60),
  337.               (overlay_set_color, reg1, 0x66CC00),
  338.            (else_try),
  339.               (gt, ":count_no", 0),
  340.               (overlay_set_color, reg1, 0xCCFFFF),
  341.            (else_try),
  342.               (eq, ":count_no", 0),
  343.               (overlay_set_color, reg1, 0xCCCCCC),
  344.            (else_try),
  345.               (ge, ":count_no", -60),
  346.               (overlay_set_color, reg1, 0xCC99FF),
  347.            (else_try),
  348.               (overlay_set_color, reg1, 0x9933FF),
  349.            (try_end),

  350.            (store_relation, reg1, ":culture_faction_no", "fac_player_supporters_faction"),
  351.            (create_text_overlay, reg1, "@Player_relation"),
  352.            (position_set_x, pos1, 400),
  353.            (position_set_y, pos1, 220),
  354.            (overlay_set_position, reg1, pos1),
  355.            (position_set_x, pos1, 1000),
  356.            (position_set_y, pos1, 1000),
  357.            (overlay_set_size, reg1, pos1),
  358.            (overlay_set_color, reg1, 0xFFFFFF),

  359.            (create_mesh_overlay, reg1, "mesh_white_plane"),
  360.            (position_set_x, pos1, 25),
  361.            (position_set_y, pos1, 200),
  362.            (overlay_set_position, reg1, pos1),
  363.            (position_set_x, pos1, 27500),
  364.            (position_set_y, pos1, 50),
  365.            (overlay_set_size, reg1, pos1),

  366.            (create_text_overlay, reg1, "@Superior_faction", tf_center_justify),
  367.            (position_set_x, pos1, 300),
  368.            (position_set_y, pos1, 160),
  369.            (overlay_set_position, reg1, pos1),
  370.            (position_set_x, pos1, 1000),
  371.            (position_set_y, pos1, 1000),
  372.            (overlay_set_size, reg1, pos1),
  373.            (overlay_set_color, reg1, 0xFFFFFF),

  374.            (try_begin),
  375.               (call_script, "script_get_faction_affiliation", "$faction_chossen", 0),
  376.               (gt, reg1, 0),
  377.               (assign, ":faction_affiliation_no", reg1),
  378.               (call_script, "script_draw_faction_image", ":faction_affiliation_no", 0, 100, 100),
  379.               (assign, "$g_presentation_obj_4", reg1),

  380.               (call_script, "script_get_faction_position", "$faction_chossen", 0),
  381.               (val_add, reg1, "str_normal_member"),
  382.               (str_store_string, s1, reg1),
  383.               (create_text_overlay, reg1, "@Faction_position", tf_center_justify),
  384.               (position_set_x, pos1, 400),
  385.               (position_set_y, pos1, 90),
  386.               (overlay_set_position, reg1, pos1),
  387.               (position_set_x, pos1, 1000),
  388.               (position_set_y, pos1, 1000),
  389.               (overlay_set_size, reg1, pos1),
  390.               (overlay_set_color, reg1, 0xFFFFFF),
  391.            (try_end),
  392. #_____________________________________________________________________________________member___________________________________________________________________________
  393.         (else_try),
  394.            (eq, "$faction_showed", 2),
  395.            (gt, "$faction_chossen", 0),

  396.            (store_mul, ":cur_y", ":member_count_1", 150),
  397.            (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  398.               (call_script, "script_get_faction_affiliation", ":count_no", 0),
  399.               (eq, reg1, "$faction_chossen"),
  400.               (call_script, "script_get_faction_position", ":count_no", 0),
  401.               (eq, reg1, 1),#pillar
  402.               (call_script, "script_draw_faction_image", ":count_no", 0, 250, ":cur_y"),
  403.               (store_mul, ":member_faction_no", ":count_no", 10),
  404.               (troop_set_slot, "trp_temp_array_a", reg1, ":member_faction_no"),
  405.               (val_sub, ":cur_y", 150),
  406.            (try_end),

  407.            (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  408.               (call_script, "script_get_faction_affiliation", ":count_no", 1),
  409.               (eq, reg1, "$faction_chossen"),
  410.               (call_script, "script_get_faction_position", ":count_no", 1),
  411.               (eq, reg1, 1),#pillar
  412.               (call_script, "script_draw_faction_image", ":count_no", 1, 250, ":cur_y"),
  413.               (store_mul, ":member_troop_no", ":count_no", 10),
  414.               (val_add, ":member_troop_no", 1),
  415.               (troop_set_slot, "trp_temp_array_a", reg1, ":member_troop_no"),
  416.               (val_sub, ":cur_y", 150),
  417.            (try_end),

  418.            (store_mul, ":cur_y", ":member_count_1", 150),
  419.            (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  420.               (call_script, "script_get_faction_affiliation", ":count_no", 0),
  421.               (eq, reg1, "$faction_chossen"),
  422.               (call_script, "script_get_faction_position", ":count_no", 0),
  423.               (eq, reg1, 0),#normal member
  424.               (call_script, "script_draw_faction_image", ":count_no", 0, 450, ":cur_y"),
  425.               (store_mul, ":member_faction_no", ":count_no", 10),
  426.               (troop_set_slot, "trp_temp_array_a", reg1, ":member_faction_no"),
  427.               (val_sub, ":cur_y", 150),
  428.            (try_end),

  429.            (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  430.               (call_script, "script_get_faction_affiliation", ":count_no", 1),
  431.               (eq, reg1, "$faction_chossen"),
  432.               (call_script, "script_get_faction_position", ":count_no", 1),
  433.               (eq, reg1, 0),#normal member
  434.               (call_script, "script_draw_faction_image", ":count_no", 1, 450, ":cur_y"),
  435.               (store_mul, ":member_troop_no", ":count_no", 10),
  436.               (val_add, ":member_troop_no", 1),
  437.               (troop_set_slot, "trp_temp_array_a", reg1, ":member_troop_no"),
  438.               (val_sub, ":cur_y", 150),
  439.            (try_end),

  440. #_________________________________________________________________________________________troop__________________________________________________________________________
  441.         (else_try),
  442.            (eq, "$faction_showed", 3),
  443.            (gt, "$faction_chossen", 0),

  444.            (assign, reg2, 100),
  445.            (try_for_range, ":cur_troop_no", soldiers_begin, soldiers_end),           # find all root troops of selected faction
  446.               (neg|troop_is_hero, ":cur_troop_no"),
  447.               (troop_get_upgrade_troop, ":upgrade_troop", ":cur_troop_no", 0),
  448.               (gt, ":upgrade_troop", 0),          # can upgrade
  449.               (store_troop_faction, ":cur_troop_faction", ":cur_troop_no"),
  450.               (eq, ":cur_troop_faction", ":culture_faction_no"),          # cur troop faction

  451.               (assign, ":is_root_troop", 1),
  452.               (assign, ":end_cond", soldiers_end),
  453.               (try_for_range, ":loop_troop_no", soldiers_begin, ":end_cond"),
  454.                  (neg|troop_is_hero, ":loop_troop_no"),
  455.                  (store_troop_faction, ":loop_troop_faction", ":loop_troop_no"),
  456.                  (eq,  ":loop_troop_faction", ":culture_faction_no"),          # loop troop faction

  457.                  (troop_get_upgrade_troop, ":upgrade_troop_1", ":loop_troop_no", 0),
  458.                  (troop_get_upgrade_troop, ":upgrade_troop_2", ":loop_troop_no", 1),
  459.                  (this_or_next|eq, ":upgrade_troop_1", ":cur_troop_no"),
  460.                  (eq, ":upgrade_troop_2", ":cur_troop_no"),
  461.                  (assign, ":is_root_troop", 0),          #not a root faction
  462.                  (assign, ":end_cond", 0), #break
  463.               (try_end),
  464.               (eq, ":is_root_troop", 1),
  465.               (call_script, "script_faction_troop_tree_recursive_backtracking", ":cur_troop_no", 50, reg2, 125),
  466.               (val_add, reg2, 200),
  467.            (try_end),

  468.         (try_end),

  469.         (set_container_overlay, -1),

  470. #_______________________________________________________________________________retrival condition__________________________________________________________________________

  471.         (try_begin),
  472.            (le, "$faction_showed", 0),
  473.            (le, "$faction_chossen", 0),

  474.            (create_text_overlay, reg1, "@Retrival_condition", tf_center_justify),
  475.            (position_set_x, pos1, 535),
  476.            (position_set_y, pos1, 220),
  477.            (overlay_set_position, reg1, pos1),
  478.            (overlay_set_color, reg1, 0xFFFFFF),

  479.            (create_text_overlay, reg1, "@Faction_grade"),
  480.            (position_set_x, pos1, 435),
  481.            (position_set_y, pos1, 180),
  482.            (overlay_set_position, reg1, pos1),
  483.            (position_set_x, pos1, 1000),
  484.            (position_set_y, pos1, 1000),
  485.            (overlay_set_size, reg1, pos1),
  486.            (overlay_set_color, reg1, 0xFFFFFF),

  487.            (create_text_overlay, reg1, "@Faction_character"),
  488.            (position_set_x, pos1, 435),
  489.            (position_set_y, pos1, 120),
  490.            (overlay_set_position, reg1, pos1),
  491.            (position_set_x, pos1, 1000),
  492.            (position_set_y, pos1, 1000),
  493.            (overlay_set_size, reg1, pos1),
  494.            (overlay_set_color, reg1, 0xFFFFFF),

  495.            (create_text_overlay, reg1, "@Faction_affiliation"),
  496.            (position_set_x, pos1, 435),
  497.            (position_set_y, pos1, 60),
  498.            (overlay_set_position, reg1, pos1),
  499.            (position_set_x, pos1, 1000),
  500.            (position_set_y, pos1, 1000),
  501.            (overlay_set_size, reg1, pos1),
  502.            (overlay_set_color, reg1, 0xFFFFFF),

  503.            (try_begin),
  504.               (le, "$faction_grade", 0),
  505.               (str_store_string, s1, "str_total"),
  506.            (else_try),
  507.               (store_add, ":string_no", "$faction_grade", "str_faction_grade_1"),
  508.               (val_sub, ":string_no", 1),
  509.               (str_store_string, s1, ":string_no"),
  510.            (try_end),
  511.            (call_script, "script_create_special_button_overlay", 580, 180),
  512.            (assign, "$g_presentation_retrival_1", reg1),

  513.            (try_begin),
  514.               (le, "$faction_character", 0),
  515.               (str_store_string, s1, "str_total"),
  516.            (else_try),
  517.               (le, "$faction_character", 1),
  518.               (str_store_string, s1, "str_country_faction"),
  519.            (else_try),
  520.               (le, "$faction_character", 2),
  521.               (str_store_string, s1, "str_out_faction"),
  522.            (try_end),
  523.            (call_script, "script_create_special_button_overlay", 580, 120),
  524.            (assign, "$g_presentation_retrival_2", reg1),

  525.            (try_begin),
  526.               (le, "$faction_affiliation", 0),
  527.               (str_store_string, s1, "str_total"),
  528.            (else_try),
  529.               (le, "$faction_affiliation", 1),
  530.               (str_store_string, s1, "str_highest_faction"),
  531.            (else_try),
  532.               (le, "$faction_affiliation", 2),
  533.               (str_store_string, s1, "str_not_highest_faction"),
  534.            (else_try),
  535.               (le, "$faction_affiliation", 3),
  536.               (str_store_string, s1, "str_bottom_faction"),
  537.            (else_try),
  538.               (le, "$faction_affiliation", 4),
  539.               (str_store_string, s1, "str_not_bottom_faction"),
  540.            (try_end),
  541.            (call_script, "script_create_special_button_overlay", 580, 60),
  542.            (assign, "$g_presentation_retrival_3", reg1),
  543.         (try_end),

  544.             ####### mouse fix pos system #######
  545. #        (call_script, "script_mouse_fix_pos_load"),
  546.             ####### mouse fix pos system #######

  547.         (presentation_set_duration, 999999),
  548.        ]),

  549.       (ti_on_presentation_run,
  550.        [
  551.             ####### mouse fix pos system #######
  552. #        (call_script, "script_mouse_fix_pos_run"),
  553.             ####### mouse fix pos system #######
  554.         ]),

  555.       (ti_on_presentation_mouse_enter_leave, [
  556.          (store_trigger_param_1, ":object"),
  557.          (store_trigger_param_2, ":enter_leave"),
  558.          (try_begin),
  559.             (gt, "$troop_biref_show", 0),
  560.             (is_between, ":object", "$g_presentation_obj_3", "$g_presentation_container_1"),
  561.             (troop_get_inventory_capacity, ":inventroy_limit", "$troop_biref_show"),
  562.             (try_begin),
  563.                (eq, ":enter_leave", 0),#enter
  564.                (try_for_range, ":inventory_slot_no", 0, ":inventroy_limit"),
  565.                   (troop_slot_eq, "trp_temp_array_b", ":inventory_slot_no", ":object"),
  566.                   (troop_get_inventory_slot, ":item_no", "$troop_biref_show", ":inventory_slot_no"),
  567.                   (gt, ":item_no", -1),
  568.                   (troop_get_inventory_slot_modifier, ":modifier_no", "$troop_biref_show", ":inventory_slot_no"),

  569.                   (troop_get_slot, ":inventroy_position", "trp_temp_array_c", ":inventory_slot_no"),
  570.                   (overlay_get_position, pos0, ":inventroy_position"),
  571.                   (show_item_details_with_modifier, ":item_no", ":modifier_no", pos0, 100),
  572.                   (assign, "$g_current_opened_item_details", ":inventory_slot_no"),
  573.                (try_end),
  574.             (else_try),
  575.                (eq, ":enter_leave", 1),#leave
  576.                (try_for_range, ":inventory_slot_no", 0, ":inventroy_limit"),
  577.                   (troop_slot_eq, "trp_temp_array_b", ":inventory_slot_no", ":object"),
  578.                   (eq, "$g_current_opened_item_details", ":inventory_slot_no"),
  579.                   (close_item_details),
  580.                (try_end),
  581.            (try_end),
  582.         (try_end),
  583.         ]),

  584.       (ti_on_presentation_event_state_change,
  585.        [(store_trigger_param_1, ":object"),
  586.         (try_begin),
  587.            (eq, ":object", "$g_presentation_obj_1"),
  588.            (presentation_set_duration, 0),
  589.          (else_try),                                                                         #show retrival
  590.            (eq, ":object", "$g_presentation_obj_2"),
  591.            (assign, "$faction_showed", 0),
  592.            (assign, "$faction_chossen", 0),
  593.            (start_presentation, "prsnt_faction_window"),
  594. #_______________________________________________________________________________main button__________________________________________________________________________
  595.         (else_try),
  596.            (gt, "$faction_chossen", 0),
  597.            (lt, ":object", "$g_presentation_obj_2"),
  598.            (try_begin),
  599.               (eq, ":object", "$g_presentation_button_1"),
  600.               (neq, "$faction_showed", 1),
  601.               (assign, "$faction_showed", 1),
  602.               (start_presentation, "prsnt_faction_window"),
  603.            (else_try),
  604.               (eq, ":object", "$g_presentation_button_2"),
  605.               (neq, "$faction_showed", 2),
  606.               (assign, "$faction_showed", 2),
  607.               (start_presentation, "prsnt_faction_window"),
  608.            (else_try),
  609.               (eq, ":object", "$g_presentation_button_3"),
  610.               (neq, "$faction_showed", 3),
  611.               (assign, "$faction_showed", 3),
  612.               (start_presentation, "prsnt_faction_window"),
  613.            (else_try),
  614.               (eq, ":object", "$g_presentation_button_4"),
  615.               (neq, "$faction_showed", 4),
  616.               (assign, "$faction_showed", 4),
  617.               (start_presentation, "prsnt_faction_window"),
  618.            (else_try),
  619.               (eq, ":object", "$g_presentation_button_5"),
  620.               (neq, "$faction_showed", 5),
  621.               (assign, "$faction_showed", 5),
  622.               (start_presentation, "prsnt_faction_window"),
  623.            (else_try),
  624.               (eq, ":object", "$g_presentation_button_6"),
  625.               (neq, "$faction_showed", 6),
  626.               (assign, "$faction_showed", 6),
  627.               (start_presentation, "prsnt_faction_window"),
  628.            (try_end),

  629. #__________________________________________________________________________________retrival__________________________________________________________________________
  630.         (else_try),                                                                            #retrival show brief
  631.            (le, "$faction_showed", 0),
  632.            (le, "$faction_chossen", 0),
  633.            (troop_slot_ge, "trp_temp_array_a", ":object", 1),
  634.            (troop_get_slot, "$faction_biref_show", "trp_temp_array_a", ":object"),
  635.            (assign, "$lord_biref_show", -1),
  636.            (assign, "$troop_biref_show", -1),
  637.            (start_presentation, "prsnt_faction_window"),
  638.         (else_try),
  639.            (le, "$faction_showed", 0),
  640.            (le, "$faction_chossen", 0),
  641.            (eq, ":object", "$g_presentation_retrival_1"),
  642.            (val_add, "$faction_grade", 1),
  643.            (try_begin),
  644.               (eq, "$faction_grade", 6),
  645.               (assign, "$faction_grade", 0),
  646.            (try_end),
  647.            (start_presentation, "prsnt_faction_window"),
  648.         (else_try),
  649.            (le, "$faction_showed", 0),
  650.            (le, "$faction_chossen", 0),
  651.            (eq, ":object", "$g_presentation_retrival_2"),
  652.            (val_add, "$faction_character", 1),
  653.            (try_begin),
  654.               (eq, "$faction_character", 3),
  655.               (assign, "$faction_character", 0),
  656.            (try_end),
  657.            (start_presentation, "prsnt_faction_window"),
  658.         (else_try),
  659.            (le, "$faction_showed", 0),
  660.            (le, "$faction_chossen", 0),
  661.            (eq, ":object", "$g_presentation_retrival_3"),
  662.            (val_add, "$faction_affiliation", 1),
  663.            (try_begin),
  664.               (eq, "$faction_affiliation", 5),
  665.               (assign, "$faction_affiliation", 0),
  666.            (try_end),
  667.            (start_presentation, "prsnt_faction_window"),

  668. #_______________________________________________________________________________right part brief__________________________________________________________________________
  669.         (else_try),                                                                          #enter another faction's window
  670.            (gt, "$faction_biref_show", 0),
  671.            (eq, ":object", "$g_presentation_obj_3"),
  672.            (assign, "$faction_chossen", "$faction_biref_show"),
  673.            (assign, "$faction_biref_show", -1),
  674.            (assign, "$lord_biref_show", -1),
  675.            (assign, "$troop_biref_show", -1),
  676.            (start_presentation, "prsnt_faction_window"),
  677.         (else_try),                                                                          #show brief information in the right part, used in introduction part
  678.            (eq, "$faction_showed", 1),
  679.            (gt, "$faction_chossen", 0),
  680.            (eq, ":object", "$g_presentation_obj_4"),
  681.            (call_script, "script_get_faction_affiliation", "$faction_chossen", 0),
  682.            (gt, reg1, 0),
  683.            (assign, "$faction_biref_show", reg1),
  684.            (assign, "$lord_biref_show", -1),
  685.            (assign, "$troop_biref_show", -1),
  686.            (start_presentation, "prsnt_faction_window"),
  687.         (else_try),                                                                          #show brief information in the right part, used in member part
  688.            (eq, "$faction_showed", 2),
  689.            (gt, "$faction_chossen", 0),
  690.            (troop_slot_ge, "trp_temp_array_a", ":object", 1),
  691.            (troop_get_slot, ":target_no", "trp_temp_array_a", ":object"),
  692.            (store_mod, ":type_no", ":target_no", 10),
  693.            (val_div, ":target_no", 10),
  694.            (try_begin),
  695.               (eq, ":type_no", 1),#troop
  696.               (assign, "$faction_biref_show", -1),
  697.               (assign, "$lord_biref_show", ":target_no"),
  698.            (else_try),
  699.               (assign, "$faction_biref_show", ":target_no"),
  700.               (assign, "$lord_biref_show", -1),
  701.            (try_end),
  702.            (assign, "$troop_biref_show", -1),
  703.            (start_presentation, "prsnt_faction_window"),
  704.         (else_try),                                                                          #show brief information in the right part, used in troop part
  705.            (eq, "$faction_showed", 3),
  706.            (gt, "$faction_chossen", 0),
  707.            (troop_slot_ge, "trp_temp_array_a", ":object", 1),
  708.            (troop_get_slot, ":troop_no", "trp_temp_array_a", ":object"),
  709.            (assign, "$faction_biref_show", -1),
  710.            (assign, "$lord_biref_show", -1),
  711.            (assign, "$troop_biref_show", ":troop_no"),
  712.            (start_presentation, "prsnt_faction_window"),
  713.         (try_end),
  714.        ]),
  715.   ]),
复制代码
最后是要用到的script
  1. ##__________________________________________________________________________________faction related___________________________________________________________________________

  2. ##Be awared that since factions can only reach 128, new factions will be made by items. Normal factions will only used as IDENTITIES.
  3. #set a substitude for player in film mode. Output two weapon no in game variables.
  4.   ("set_faction_affiliation", [
  5.       (store_script_param, ":joiner_no", 1),
  6.       (store_script_param, ":joiner_type", 2),#0 is faction(item), 1 is troop.
  7.       (store_script_param, ":superior_faction_no", 3),
  8.       (store_script_param, ":joiner_status", 4),#0 is normal member, 1 is pillar member, 2 is leader.

  9.       (try_begin),
  10.          (eq, ":joiner_type", 0),#faction
  11.          (item_set_slot, ":joiner_no", slot_faction_affiliation, ":superior_faction_no"),
  12.          (item_set_slot, ":joiner_no", slot_faction_member_position, ":joiner_status"),
  13.       (else_try),
  14.          (eq, ":joiner_type", 1),#troop
  15.          (troop_set_slot, ":joiner_no", slot_troop_affiliation, ":superior_faction_no"),
  16.          (troop_set_slot, ":joiner_no", slot_troop_member_position, ":joiner_status"),
  17.       (try_end),

  18. #      (try_begin),
  19. #         (eq, ":joiner_status", 2),
  20. #         (faction_get_slot, ":leader_no", ":superior_faction_no", slot_faction_leader)
  21. #         (try_begin),
  22. #            (gt, ":leader_no", 0),#already have leader
  23. #            (display_message, "@Already_have_leader", 0xFF0000),
  24. #         (else_try),
  25. #            (faction_set_slot, ":superior_faction_no", slot_faction_leader, ":joiner_no"),
  26. #         (try_end),
  27. #      (else_try),
  28. #         (eq, ":joiner_status", 1),
  29. #         (assign, ":end_cond", slot_faction_bottom_begin),
  30. #         (try_for_range, ":slot_no", slot_faction_pillar_begin, ":end_cond"),
  31. #            (faction_get_slot, ":pillar_no", ":superior_faction_no", ":slot_no")
  32. #            (le, ":pillar_no", 0),
  33. #            (faction_set_slot, ":superior_faction_no", ":slot_no", ":joiner_no"),
  34. #            (assign, ":end_cond", slot_faction_pillar_begin),#break
  35. #         (try_end),
  36. #         (eq, ":end_cond", slot_faction_bottom_begin),
  37. #         (display_message, "@Already_have_enough_pillar", 0xFF0000),
  38. #      (else_try),
  39. #         (eq, ":joiner_status", 0),
  40. #         (assign, ":end_cond", 100),
  41. #         (try_for_range, ":slot_no", slot_faction_bottom_begin, ":end_cond"),
  42. #            (faction_get_slot, ":bottom_no", ":superior_faction_no", ":slot_no")
  43. #            (le, ":bottom_no", 0),
  44. #            (faction_set_slot, ":superior_faction_no", ":slot_no", ":joiner_no"),
  45. #            (assign, ":end_cond", slot_faction_bottom_begin),#break
  46. #         (try_end),
  47. #      (try_end),
  48.     ]),

  49.   ("get_faction_affiliation", [#output reg1
  50.       (store_script_param, ":joiner_no", 1),
  51.       (store_script_param, ":joiner_type", 2),#0 is faction(item), 1 is troop.

  52.       (try_begin),
  53.          (eq, ":joiner_type", 0),#faction
  54.          (item_get_slot, reg1, ":joiner_no", slot_faction_affiliation),
  55.       (else_try),
  56.          (eq, ":joiner_type", 1),#troop
  57.          (troop_get_slot, reg1, ":joiner_no", slot_troop_affiliation),
  58.       (try_end),
  59.     ]),

  60.   ("get_faction_position", [#output reg1
  61.       (store_script_param, ":joiner_no", 1),
  62.       (store_script_param, ":joiner_type", 2),#0 is faction(item), 1 is troop.

  63.       (try_begin),
  64.          (eq, ":joiner_type", 0),#faction
  65.          (item_get_slot, reg1, ":joiner_no", slot_faction_member_position),
  66.       (else_try),
  67.          (eq, ":joiner_type", 1),#troop
  68.          (troop_get_slot, reg1, ":joiner_no", slot_troop_member_position),
  69.       (try_end),
  70.     ]),


  71.   ("draw_faction_image", [#output reg1 (overlay id of button)
  72.       (store_script_param, ":faction_no", 1),
  73.       (store_script_param, ":type_no", 2),#0 is faction(item), 1 is troop.
  74.       (store_script_param, ":cur_x", 3),
  75.       (store_script_param, ":cur_y", 4),

  76.       (try_begin),
  77.          (neq, ":type_no", 1),
  78.          (create_mesh_overlay_with_item_id, reg1, ":faction_no"),
  79.          (position_set_x, pos1, ":cur_x"),
  80.          (position_set_y, pos1, ":cur_y"),
  81.          (overlay_set_position, reg1, pos1),

  82.          (val_sub, ":cur_y", 65),
  83.          (str_store_item_name, s1, ":faction_no"),
  84.          (create_text_overlay, reg1, s1, tf_center_justify),
  85.          (position_set_x, pos1, ":cur_x"),
  86.          (position_set_y, pos1, ":cur_y"),
  87.          (overlay_set_position, reg1, pos1),
  88.          (position_set_x, pos1, 800),
  89.          (position_set_y, pos1, 800),
  90.          (overlay_set_size, reg1, pos1),
  91.          (overlay_set_color, reg1, 0xFFFFFF),

  92.          (val_sub, ":cur_x", 40),
  93.          (val_add, ":cur_y", 25),
  94.          (create_image_button_overlay, reg1, "mesh_white_plane", "mesh_white_plane"),
  95.          (position_set_x, pos1, ":cur_x"),
  96.          (position_set_y, pos1, ":cur_y"),
  97.          (overlay_set_position, reg1, pos1),
  98.          (position_set_x, pos1, 4000),
  99.          (position_set_y, pos1, 4000),
  100.          (overlay_set_size, reg1, pos1),
  101.          (overlay_set_color, reg1, 0x000000),

  102.       (else_try),
  103.          (val_sub, ":cur_y", 65),
  104.          (str_store_troop_name, s1, ":faction_no"),
  105.          (create_text_overlay, reg1, s1, tf_center_justify),
  106.          (position_set_x, pos1, ":cur_x"),
  107.          (position_set_y, pos1, ":cur_y"),
  108.          (overlay_set_position, reg1, pos1),
  109.          (position_set_x, pos1, 800),
  110.          (position_set_y, pos1, 800),
  111.          (overlay_set_size, reg1, pos1),
  112.          (overlay_set_color, reg1, 0xFFFFFF),

  113.          (val_sub, ":cur_x", 60),
  114.          (val_add, ":cur_y", 20),
  115.          (create_image_button_overlay_with_tableau_material, reg1, -1, "tableau_troop_note_mesh", ":faction_no"),
  116.          (set_fixed_point_multiplier, 1000),
  117.          (position_set_x, pos1, ":cur_x"),
  118.          (position_set_y, pos1, ":cur_y"),
  119.          (overlay_set_position, reg1, pos1),
  120.          (position_set_x, pos1, 300),
  121.          (position_set_y, pos1, 300),
  122.          (overlay_set_size, reg1, pos1),
  123.       (try_end),
  124.     ]),


  125. #show in the right of faction  window
  126.   ("faction_brief_show", [
  127.       (store_script_param, ":faction_no", 1),#item no
  128.       (create_mesh_overlay_with_item_id, reg1, ":faction_no"),
  129.       (position_set_x, pos1, 825),
  130.       (position_set_y, pos1, 550),
  131.       (overlay_set_position, reg1, pos1),
  132.       (position_set_x, pos1, 1300),
  133.       (position_set_y, pos1, 1300),
  134.       (overlay_set_size, reg1, pos1),

  135.       (str_store_item_name, s1, ":faction_no"),
  136.       (create_text_overlay, reg1, s1, tf_center_justify),
  137.       (position_set_x, pos1, 825),
  138.       (position_set_y, pos1, 450),
  139.       (overlay_set_position, reg1, pos1),
  140.       (position_set_x, pos1, 1000),
  141.       (position_set_y, pos1, 1000),
  142.       (overlay_set_size, reg1, pos1),

  143.       (item_get_difficulty, ":grade_no", ":faction_no"),#faction grade
  144.       (val_sub, ":grade_no", 1),
  145.       (val_add, ":grade_no", "str_faction_grade_1"),
  146.       (str_store_string, s1, ":grade_no"),
  147.       (create_text_overlay, reg1, s1, tf_center_justify),
  148.       (position_set_x, pos1, 825),
  149.       (position_set_y, pos1, 410),
  150.       (overlay_set_position, reg1, pos1),
  151.       (position_set_x, pos1, 1000),
  152.       (position_set_y, pos1, 1000),
  153.       (overlay_set_size, reg1, pos1),
  154.       (try_begin),
  155.          (eq, ":grade_no", "str_faction_grade_1"),
  156.          (overlay_set_color, reg1, 0xCCCCCC),
  157.       (else_try),
  158.          (eq, ":grade_no", "str_faction_grade_2"),
  159.          (overlay_set_color, reg1, 0xFFCCCC),
  160.       (else_try),
  161.          (eq, ":grade_no", "str_faction_grade_3"),
  162.          (overlay_set_color, reg1, 0xFF9999),
  163.       (else_try),
  164.          (eq, ":grade_no", "str_faction_grade_4"),
  165.          (overlay_set_color, reg1, 0xFF6666),
  166.       (else_try),
  167.          (eq, ":grade_no", "str_faction_grade_5"),
  168.          (overlay_set_color, reg1, 0xFF3333),
  169.       (try_end),

  170.       (create_game_button_overlay, "$g_presentation_obj_3", "@Check_this_faction"),
  171.       (position_set_x, pos1, 825),
  172.       (position_set_y, pos1, 350),
  173.       (overlay_set_position, "$g_presentation_obj_3", pos1),
  174.     ]),

  175.   ("lord_brief_show", [
  176.       (store_script_param, ":troop_no", 1),
  177.       (store_mul, ":cur_troop", ":troop_no", 2), #with weapons
  178.       (create_mesh_overlay_with_tableau_material, reg1, -1, "tableau_game_party_window", ":cur_troop"),
  179.       (set_fixed_point_multiplier, 1000),
  180.       (position_set_x, pos1, 720),
  181.       (position_set_y, pos1, 420),
  182.       (overlay_set_position, reg1, pos1),
  183.       (position_set_x, pos1, 700),
  184.       (position_set_y, pos1, 700),
  185.       (overlay_set_size, reg1, pos1),

  186.       (str_store_troop_name, s1, ":troop_no"),
  187.       (create_text_overlay, reg1, s1, tf_center_justify),
  188.       (position_set_x, pos1, 825),
  189.       (position_set_y, pos1, 390),
  190.       (overlay_set_position, reg1, pos1),
  191.       (position_set_x, pos1, 1000),
  192.       (position_set_y, pos1, 1000),
  193.       (overlay_set_size, reg1, pos1),

  194.       (create_game_button_overlay, "$g_presentation_obj_3", "@Check_this_lord"),
  195.       (position_set_x, pos1, 825),
  196.       (position_set_y, pos1, 350),
  197.       (overlay_set_position, "$g_presentation_obj_3", pos1),
  198.       (overlay_set_display, "$g_presentation_obj_3", 0),
  199.     ]),

  200.   ("troop_brief_show", [
  201.       (store_script_param, ":troop_no", 1),
  202.       (store_mul, ":cur_troop", ":troop_no", 2), #with weapons
  203.       (create_mesh_overlay_with_tableau_material, reg1, -1, "tableau_game_party_window", ":cur_troop"),
  204.       (set_fixed_point_multiplier, 1000),
  205.       (position_set_x, pos1, 650),
  206.       (position_set_y, pos1, 420),
  207.       (overlay_set_position, reg1, pos1),
  208.       (position_set_x, pos1, 700),
  209.       (position_set_y, pos1, 700),
  210.       (overlay_set_size, reg1, pos1),

  211.       (str_store_troop_name, s1, ":troop_no"),
  212.       (create_text_overlay, reg1, s1, tf_center_justify),
  213.       (position_set_x, pos1, 825),
  214.       (position_set_y, pos1, 420),
  215.       (overlay_set_position, reg1, pos1),
  216.       (position_set_x, pos1, 1000),
  217.       (position_set_y, pos1, 1000),
  218.       (overlay_set_size, reg1, pos1),

  219. #attributes
  220.       (try_for_range, ":count", 0, 4),
  221.          (store_add, ":string_no", ":count", "str_strength"),
  222.          (str_store_string, s1, ":string_no"),
  223.          (store_mul, ":high", ":count", -15),
  224.          (val_add, ":high", 615),

  225.          (create_text_overlay, reg1, s1),
  226.          (position_set_x, pos1, 800),
  227.          (position_set_y, pos1, ":high"),
  228.          (overlay_set_position, reg1, pos1),
  229.          (position_set_x, pos1, 700),
  230.          (position_set_y, pos1, 700),
  231.          (overlay_set_size, reg1, pos1),

  232.          (store_add, ":attribute_no", ":count", ca_strength),
  233.          (store_attribute_level, ":attribute_level", ":troop_no", ":attribute_no"),
  234.          (assign, reg2, ":attribute_level"),
  235.          (create_text_overlay, reg1, "@_{reg2}_"),
  236.          (position_set_x, pos1, 890),
  237.          (position_set_y, pos1, ":high"),
  238.          (overlay_set_position, reg1, pos1),
  239.          (position_set_x, pos1, 700),
  240.          (position_set_y, pos1, 700),
  241.          (overlay_set_size, reg1, pos1),
  242.       (try_end),

  243. #weapon talent
  244.       (try_for_range, ":count", 0, 7),
  245.          (store_add, ":string_no", ":count", "str_wpt_one_handed"),
  246.          (str_store_string, s1, ":string_no"),
  247.          (store_mul, ":high", ":count", -15),
  248.          (val_add, ":high", 535),

  249.          (create_button_overlay, reg1, s1),
  250.          (position_set_x, pos1, 800),
  251.          (position_set_y, pos1, ":high"),
  252.          (overlay_set_position, reg1, pos1),
  253.          (position_set_x, pos1, 700),
  254.          (position_set_y, pos1, 700),
  255.          (overlay_set_size, reg1, pos1),

  256.          (store_add, ":weapon_no", wpt_one_handed_weapon, ":count"),
  257.          (store_proficiency_level, ":weapon_level", ":troop_no", ":weapon_no"),
  258.          (assign, reg2, ":weapon_level"),
  259.          (create_button_overlay, reg1, "@_{reg2}_"),
  260.          (position_set_x, pos1, 890),
  261.          (position_set_y, pos1, ":high"),
  262.          (overlay_set_position, reg1, pos1),
  263.          (position_set_x, pos1, 700),
  264.          (position_set_y, pos1, 700),
  265.          (overlay_set_size, reg1, pos1),
  266.       (try_end),

  267. #skills
  268. #      (create_text_overlay, reg1, "@ ", tf_scrollable),
  269. #      (position_set_x, pos1, 710),
  270. #      (position_set_y, pos1, 315),
  271. #      (overlay_set_position, reg1, pos1),
  272. #      (position_set_x, pos1, 230),
  273. #      (position_set_y, pos1, 100),
  274. #      (overlay_set_area_size, reg1, pos1),
  275. #      (set_container_overlay, reg1),

  276.       (assign, ":count_3", -1),
  277.       (try_for_range, ":count", 0, 42),
  278.          (store_sub, ":skill_no", skl_reserved_18, ":count"),
  279.          (store_skill_level, ":skill_level", ":skill_no", ":troop_no"),
  280.          (gt, ":skill_level", 0),
  281.          (val_add, ":count_3", 1),

  282.          (store_add, ":string_no", ":count", "str_reserved_18"),
  283.          (str_store_string, s1, ":string_no"),

  284.          (store_div, ":count_1", ":count_3", 3),
  285.          (store_mod, ":count_2", ":count_3", 3),
  286.          (store_mul, ":high", ":count_1", -15),
  287.          (val_add, ":high", 400),

  288.          (create_button_overlay, reg1, s1),
  289.          (try_begin),
  290.             (eq, ":count_2", 0),
  291.             (position_set_x, pos1, 728),
  292.          (else_try),
  293.             (eq, ":count_2", 1),
  294.             (position_set_x, pos1, 798),
  295.          (else_try),
  296.             (position_set_x, pos1, 868),
  297.          (try_end),
  298.          (position_set_y, pos1, ":high"),
  299.          (overlay_set_position, reg1, pos1),
  300.          (position_set_x, pos1, 700),
  301.          (position_set_y, pos1, 700),
  302.          (overlay_set_size, reg1, pos1),

  303.          (assign, reg2, ":skill_level"),
  304.          (create_button_overlay, reg1, "@_{reg2}_"),
  305.          (try_begin),
  306.             (eq, ":count_2", 0),
  307.             (position_set_x, pos1, 763),
  308.          (else_try),
  309.             (eq, ":count_2", 1),
  310.             (position_set_x, pos1, 833),
  311.          (else_try),
  312.             (position_set_x, pos1, 903),
  313.          (try_end),
  314.          (position_set_y, pos1, ":high"),
  315.          (overlay_set_position, reg1, pos1),
  316.          (position_set_x, pos1, 700),
  317.          (position_set_y, pos1, 700),
  318.          (overlay_set_size, reg1, pos1),
  319.       (try_end),
  320. #      (set_container_overlay, -1),

  321. #description
  322.       (str_store_troop_name_plural, s1, ":troop_no"),
  323.       (create_text_overlay, reg1, s1, tf_scrollable),
  324.       (position_set_x, pos1, 710),
  325.       (position_set_y, pos1, 225),
  326.       (overlay_set_position, reg1, pos1),
  327.       (position_set_x, pos1, 900),
  328.       (position_set_y, pos1, 900),
  329.       (overlay_set_size, reg1, pos1),
  330.       (position_set_x, pos1, 230),
  331.       (position_set_y, pos1, 100),
  332.       (overlay_set_area_size, reg1, pos1),

  333.       (create_game_button_overlay, "$g_presentation_obj_3", "@Check_this_troop"),
  334.       (position_set_x, pos1, 825),
  335.       (position_set_y, pos1, 350),
  336.       (overlay_set_position, "$g_presentation_obj_3", pos1),
  337.       (overlay_set_display, "$g_presentation_obj_3", 0),

  338. #inventory
  339.       (create_text_overlay, reg1, "@ ", tf_scrollable),
  340.       (position_set_x, pos1, 700),
  341.       (position_set_y, pos1, 58),
  342.       (overlay_set_position, reg1, pos1),
  343.       (position_set_x, pos1, 250),
  344.       (position_set_y, pos1, 160),
  345.       (overlay_set_area_size, reg1, pos1),
  346.       (set_container_overlay, reg1),
  347.       
  348.       (troop_get_inventory_capacity, ":inventroy_limit", ":troop_no"),
  349.       (store_div, ":cur_y", ":inventroy_limit", 6),
  350.       (val_mul, ":cur_y", 40),
  351.       (assign, ":cur_x", 5),
  352.       (try_for_range, ":count_no", 0, ":inventroy_limit"),
  353.          (create_mesh_overlay, reg1, "mesh_mp_inventory_choose"),
  354.          (position_set_x, pos1, 320),
  355.          (position_set_y, pos1, 320),
  356.          (overlay_set_size, reg1, pos1),
  357.          (position_set_x, pos1, ":cur_x"),
  358.          (position_set_y, pos1, ":cur_y"),
  359.          (overlay_set_position, reg1, pos1),
  360.          (troop_set_slot, "trp_temp_array_b", ":count_no", reg1),

  361.          (create_mesh_overlay, reg1, "mesh_inv_slot"),
  362.          (position_set_x, pos1, 400),
  363.          (position_set_y, pos1, 400),
  364.          (overlay_set_size, reg1, pos1),
  365.          (position_set_x, pos1, ":cur_x"),
  366.          (position_set_y, pos1, ":cur_y"),
  367.          (overlay_set_position, reg1, pos1),

  368.          (troop_get_inventory_slot, ":item_no", ":troop_no", ":count_no"),
  369.          (val_max, ":item_no", 0),
  370.          (create_mesh_overlay_with_item_id, reg1, ":item_no"),
  371.          (position_set_x, pos1, 400),
  372.          (position_set_y, pos1, 400),
  373.          (overlay_set_size, reg1, pos1),
  374.          (store_add, ":cur_x_1", ":cur_x", 20),
  375.          (store_add, ":cur_y_1", ":cur_y", 20),
  376.          (position_set_x, pos1, ":cur_x_1"),
  377.          (position_set_y, pos1, ":cur_y_1"),
  378.          (overlay_set_position, reg1, pos1),
  379.          (troop_set_slot, "trp_temp_array_c", ":count_no", reg1),

  380.          (try_begin),
  381.             (store_mod, ":position_change", ":count_no", 6),
  382.             (neq, ":position_change", 5),
  383.             (val_add, ":cur_x", 40),
  384.          (else_try),
  385.             (assign, ":cur_x", 5),
  386.             (val_sub, ":cur_y", 40),
  387.          (try_end),
  388.       (try_end),
  389.       (set_container_overlay, -1),
  390.     ]),

  391. #retrival condition
  392.   ("cf_faction_retrival_check", [
  393.       (store_script_param, ":faction_no", 1),#item no
  394.       (assign, ":continue_no", 0),

  395.       (try_begin),                                          #faction grade
  396.          (eq, "$faction_grade", 0),#total
  397.          (val_add, ":continue_no", 1),
  398.       (else_try),
  399.          (item_get_difficulty, ":grade_no", ":faction_no"),#faction grade
  400.          (eq, ":grade_no", "$faction_grade"),
  401.          (val_add, ":continue_no", 1),
  402.       (try_end),

  403.       (try_begin),                                          #faction character
  404.          (eq, "$faction_character", 0),#total
  405.          (val_add, ":continue_no", 1),
  406.       (else_try),
  407.          (eq, "$faction_character", 1),#country_faction
  408.          (call_script, "script_faction_superior_country_check", ":faction_no", 0),
  409.          (gt, reg1, 0),
  410.          (val_add, ":continue_no", 1),
  411.       (else_try),
  412.          (eq, "$faction_character", 2),#non-country_faction
  413.          (call_script, "script_faction_superior_country_check", ":faction_no", 0),
  414.          (le, reg1, 0),
  415.          (val_add, ":continue_no", 1),
  416.       (try_end),

  417.       (try_begin),                                          #faction affiliation
  418.          (eq, "$faction_affiliation", 0),#total
  419.          (val_add, ":continue_no", 1),
  420.       (else_try),
  421.          (eq, "$faction_affiliation", 1),#highest faction
  422.          (call_script, "script_get_faction_affiliation", ":faction_no", 0),
  423.          (le, reg1, 0),
  424.          (val_add, ":continue_no", 1),
  425.       (else_try),
  426.          (eq, "$faction_affiliation", 2),#not highest faction
  427.          (call_script, "script_get_faction_affiliation", ":faction_no", 0),
  428.          (gt, reg1, 0),
  429.          (val_add, ":continue_no", 1),
  430.       (else_try),
  431.          (eq, "$faction_affiliation", 3),#bottom faction
  432.          (assign, ":count_no_2", 0),
  433.          (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  434.             (call_script, "script_get_faction_affiliation", ":count_no", 0),
  435.             (eq, reg1, ":faction_no"),
  436.             (assign, ":count_no_2", 1),
  437.          (try_end),
  438. #         (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  439. #            (call_script, "script_get_faction_affiliation", ":count_no", 1),
  440. #            (eq, reg1, ":faction_no"),
  441. #            (assign, ":count_no_2", 1),
  442. #         (try_end),
  443.          (eq, ":count_no_2", 0),
  444.          (val_add, ":continue_no", 1),
  445.       (else_try),
  446.          (eq, "$faction_affiliation", 4),#not bottom faction
  447.          (assign, ":count_no_2", 0),
  448.          (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  449.             (call_script, "script_get_faction_affiliation", ":count_no", 0),
  450.             (eq, reg1, ":faction_no"),
  451.             (assign, ":count_no_2", 1),
  452.          (try_end),
  453.          (eq, ":count_no_2", 1),
  454.          (val_add, ":continue_no", 1),
  455.       (try_end),
  456.       (eq, ":continue_no", 3),
  457.     ]),

  458. #Check if certain faction is the object faction's superior, including itself
  459.   ("cf_faction_superior_check", [
  460.       (store_script_param, ":object_faction_no", 1),
  461.       (store_script_param, ":superior_faction_no", 2),
  462.       (store_script_param, ":joiner_type", 3),#0 is faction(item), 1 is troop.

  463.       (assign, ":continue_no", 0),
  464.       (try_begin),
  465.          (eq, ":object_faction_no", ":superior_faction_no"),
  466.          (assign, ":continue_no", 1),
  467.       (else_try),
  468.          (call_script, "script_get_faction_affiliation", ":object_faction_no", ":joiner_type"),
  469.          (try_begin),
  470.             (eq, ":superior_faction_no", reg1),
  471.             (assign, ":continue_no", 1),
  472.          (else_try),
  473.             (item_get_difficulty, ":return_value", reg1),#faction grade
  474.             (le, ":return_value", 5),
  475.             (call_script, "script_cf_faction_superior_check", reg1, ":superior_faction_no", 0),#check superior faction's superior.
  476.             (assign, ":continue_no", 1),
  477.          (try_end),
  478.       (try_end),
  479.       (eq, ":continue_no", 1),
  480.     ]),


  481. #Check if certain faction is affiliated to ceratin country, return country faction id. Otherwise return 0.
  482.   ("faction_superior_country_check", [
  483.       (store_script_param, ":object_faction_no", 1),
  484.       (store_script_param, ":joiner_type", 2),#0 is faction(item), 1 is troop.

  485.       (assign, ":continue_no", 0),
  486.       (try_begin),
  487.          (is_between, ":object_faction_no", "itm_player_supporters_faction", "itm_kingdoms_end"),
  488.          (assign, ":continue_no",":object_faction_no"),
  489.       (else_try),
  490.          (call_script, "script_get_faction_affiliation", ":object_faction_no", ":joiner_type"),
  491.          (try_begin),
  492.             (is_between, reg1, "itm_player_supporters_faction", "itm_kingdoms_end"),
  493.             (assign, ":continue_no", reg1),
  494.          (else_try),
  495.             (item_get_difficulty, ":return_value", reg1),#faction grade
  496.             (le, ":return_value", 4),
  497.             (call_script, "script_faction_superior_country_check", reg1, 0),#check superior faction's superior.
  498.             (assign, ":continue_no", reg1),
  499.          (try_end),
  500.       (try_end),
  501.       (assign, reg1, ":continue_no"),
  502.     ]),

  503. #faction get leader
  504.   ("faction_leader_check", [#ouput reg1 and reg2, if there is no leader, output -1
  505.       (store_script_param, ":object_faction_no", 1),

  506.       (assign, ":target_faction_no", -1),
  507.       (assign, ":target_faction_type", -1),
  508.       (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  509.          (call_script, "script_get_faction_affiliation", ":count_no", 0),
  510.          (eq, reg1, ":object_faction_no"),
  511.          (call_script, "script_get_faction_position", ":count_no", 0),
  512.          (eq, reg1, 2),#leader
  513.          (assign, ":target_faction_no", ":count_no"),
  514.          (assign, ":target_faction_type", 0),
  515.       (try_end),

  516.       (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  517.          (call_script, "script_get_faction_affiliation", ":count_no", 1),
  518.          (eq, reg1, ":object_faction_no"),
  519.          (call_script, "script_get_faction_position", ":count_no", 1),
  520.          (eq, reg1, 2),#leader
  521.          (assign, ":target_faction_no", ":count_no"),
  522.          (assign, ":target_faction_type", 1),
  523.       (try_end),
  524.       (assign, reg1, ":target_faction_no"),
  525.       (assign, reg2, ":target_faction_type"),#0 is faction(item), 1 is troop.
  526.     ]),

  527. #faction get pillar number
  528.   ("faction_pillar_number_check", [#ouput reg1
  529.       (store_script_param, ":object_faction_no", 1),

  530.       (assign, ":target_faction_num", 0),
  531.       (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  532.          (call_script, "script_get_faction_affiliation", ":count_no", 0),
  533.          (eq, reg1, ":object_faction_no"),
  534.          (call_script, "script_get_faction_position", ":count_no", 0),
  535.          (eq, reg1, 1),#pillar
  536.          (val_add, ":target_faction_num", 1),
  537.       (try_end),

  538.       (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  539.          (call_script, "script_get_faction_affiliation", ":count_no", 1),
  540.          (eq, reg1, ":object_faction_no"),
  541.          (call_script, "script_get_faction_position", ":count_no", 1),
  542.          (eq, reg1, 1),#pillar
  543.          (val_add, ":target_faction_num", 1),
  544.       (try_end),
  545.       (assign, reg1, ":target_faction_num"),
  546.     ]),

  547. #faction get pillar number
  548.   ("faction_normal_number_check", [#ouput reg1
  549.       (store_script_param, ":object_faction_no", 1),

  550.       (assign, ":target_faction_num", 0),
  551.       (try_for_range, ":count_no", "itm_faction_begin", "itm_faction_end"),
  552.          (call_script, "script_get_faction_affiliation", ":count_no", 0),
  553.          (eq, reg1, ":object_faction_no"),
  554.          (call_script, "script_get_faction_position", ":count_no", 0),
  555.          (eq, reg1, 0),#normal member
  556.          (val_add, ":target_faction_num", 1),
  557.       (try_end),

  558.       (try_for_range, ":count_no", "trp_player", "trp_relative_of_merchants_end"),
  559.          (call_script, "script_get_faction_affiliation", ":count_no", 1),
  560.          (eq, reg1, ":object_faction_no"),
  561.          (call_script, "script_get_faction_position", ":count_no", 1),
  562.          (eq, reg1, 0),#normal member
  563.          (val_add, ":target_faction_num", 1),
  564.       (try_end),
  565.       (assign, reg1, ":target_faction_num"),
  566.     ]),

  567. #draw troop tree
  568.   ("faction_troop_tree_recursive_backtracking", [
  569.       (store_script_param, ":troop_no", 1),
  570.       (store_script_param, ":cur_x", 2),
  571.       (store_script_param, ":cur_y", 3),
  572.       (store_script_param, ":offset_x", 4),   #troops in one upgarde tree have a distance of 125
  573.       
  574.       (store_add, ":next_x", ":cur_x", ":offset_x"),
  575.       (troop_get_upgrade_troop, ":upgrade_troop_1", ":troop_no", 0),      # upgrade_troop
  576.       (troop_get_upgrade_troop, ":upgrade_troop_2", ":troop_no", 1),
  577.       (try_begin),
  578.          (gt,  ":upgrade_troop_2", 0),
  579.          (call_script, "script_faction_troop_tree_recursive_backtracking", ":upgrade_troop_2", ":next_x", reg2, ":offset_x"),
  580.          (assign, ":upgrade_troop_2_y", reg0),
  581.          (val_add, reg2, 200), # current global y
  582.          (call_script, "script_faction_troop_tree_recursive_backtracking", ":upgrade_troop_1", ":next_x", reg2, ":offset_x"),
  583.          (assign, ":upgrade_troop_1_y", reg0),
  584.       (else_try),
  585.          (gt,  ":upgrade_troop_1", 0),
  586.          (call_script, "script_faction_troop_tree_recursive_backtracking", ":upgrade_troop_1", ":next_x", reg2, ":offset_x"),
  587.          (assign, ":upgrade_troop_1_y", reg0),
  588.       (try_end),
  589.       
  590.       # troop_tree_line
  591.       (try_begin),
  592.          (gt,  ":upgrade_troop_2", 0),
  593.          (store_add, reg0, ":upgrade_troop_1_y", ":upgrade_troop_2_y"),
  594.          (val_div, reg0, 2),
  595.          #                       3---- upgrade_troop_1
  596.          #                       |2
  597.          # troop_no ----1
  598.          #                       |2
  599.          #                       3---- upgrade_troop_2
  600.          (store_div, ":half_offset_x", ":offset_x", 2),
  601.          (store_add, ":middle_x", ":cur_x", ":half_offset_x"),
  602.          (call_script, "script_prsnt_line", ":half_offset_x", 1, ":cur_x", reg0, 0xFFFFFF),#1
  603.          (call_script, "script_prsnt_line", ":half_offset_x", 1, ":middle_x", ":upgrade_troop_1_y", 0xFFFFFF),#3
  604.          (call_script, "script_prsnt_line", ":half_offset_x", 1, ":middle_x", ":upgrade_troop_2_y", 0xFFFFFF),#3
  605.          (store_sub, ":size_y", ":upgrade_troop_1_y", ":upgrade_troop_2_y"),
  606.          (val_add, ":size_y", 1),
  607.          (call_script, "script_prsnt_line", 1, ":size_y", ":middle_x", ":upgrade_troop_2_y", 0xFFFFFF),#2
  608.       (else_try),
  609.          (gt,  ":upgrade_troop_1", 0),
  610.          (assign, reg0, ":upgrade_troop_1_y"),
  611.          #
  612.          # troop_no -------- upgrade_troop_1
  613.          #
  614.          (call_script, "script_prsnt_line", ":offset_x", 2, ":cur_x", ":upgrade_troop_1_y", 0xFFFFFF),
  615.       (else_try),
  616.          (assign, reg0, ":cur_y"),
  617.       (try_end),
  618.       
  619.       # troop name
  620.       (str_store_troop_name, s1, ":troop_no"),
  621.       (create_text_overlay, reg1, "@{s1}", tf_center_justify|tf_vertical_align_center|tf_double_space|tf_scrollable),
  622.       (store_sub, ":name_x", ":cur_x", 50),
  623.       (store_sub, ":name_y", reg0, 130),
  624.       (position_set_x, pos1, ":name_x"),
  625.       (position_set_y, pos1, ":name_y"),
  626.       (overlay_set_position, reg1, pos1),
  627.       (position_set_x, pos1, 100),
  628.       (position_set_y, pos1, 60),
  629.       (overlay_set_area_size, reg1, pos1),
  630.       (position_set_x, pos1, 800),
  631.       (position_set_y, pos1, 800),
  632.       (overlay_set_size, reg1, pos1),
  633.       (overlay_set_color, reg1, 0xFFFFFF),
  634.       
  635.       # troop avatar
  636.       (store_sub, ":avatar_x", ":cur_x", 75),
  637.       (store_sub, ":avatar_y", reg0, 75),
  638.       (store_mul, ":cur_troop", ":troop_no", 2), #with weapons
  639.       (create_image_button_overlay_with_tableau_material, reg1, -1, "tableau_game_party_window", ":cur_troop"),
  640.       (set_fixed_point_multiplier, 1000),
  641.       (position_set_x, pos1, 450),
  642.       (position_set_y, pos1, 600),
  643.       (overlay_set_size, reg1, pos1),
  644.       (position_set_x, pos1, ":avatar_x"),
  645.       (position_set_y, pos1, ":avatar_y"),
  646.       (overlay_set_position, reg1, pos1),
  647.       (troop_set_slot, "trp_temp_array_a", reg1, ":troop_no"),
  648.     ]),
复制代码
      注意一下每个国家都要有一幅背景图,由于我把文本都设置成白色了,所以得用比较深的背景。我个人是很喜欢黑底白字的。
       应该不难看出来,兵种树的迭代用的是Rubik的圣遗物,仅仅换了个颜色,变细了而已。白色显粗。这几天重温Rubik的代码,受益匪浅,感觉他的迭代思路写得是真不错啊,简直巧夺天工,可惜天妒英才。

       最后介绍一下装填数据的办法,前面说过,因为faction太少了所以改用了item。item可是好东西,里面的数据有两个string、一个模型、两处可检测的可新增的flag、20+2个空填数据、可以写faction,甚至能用触发器写一点代码,非常不错。我看有些人数据储存东一块西一块的,一个骑士团,介绍在string里,图标存在mesh里,总部位置等信息写在script里,有些数据甚至存的全局变量,这种存法要用时真的找得到吗?建议改成拿item来储存。
       使用的item1是这么写的。
  1. #Never use horse_charge, as horse_charge is just the same value of thrust_damage.
  2. #thrust_damage>>order and chaos, 0 is order, 1, is chaos.
  3. #swing_damage>>good_and_evil, 0, is good, 1 is evil.
  4. #difficulty>>grade, 1 is footstone team, 2 is colossus organization, 3 is macro power ,4 is leviathan, 5 is detached institution
  5. #abundance>>power structure, 0 is blank, 1 is autocrat, 2 is centralization, 3 is co-discussion

  6. ["national_knights_order", "national_knights_order", [("sorcery_11_1", 0)], 0, 0, 1000,
  7. weight(0)|difficulty(1)|head_armor(0)|body_armor(0)|leg_armor(0)|hit_points(0)|weapon_length(0)|spd_rtng(0)|shoot_speed(0)|max_ammo(0)|accuracy(0)|shield_width(0)|shield_height(0)|horse_scale(0)|horse_speed(0)|horse_maneuver(0)|food_quality(0)|abundance(1)|thrust_damage(80, 0)|swing_damage(50, 0), imodbits_none, [], [fac_kingdom_1]],
复制代码
单数填名字,复数填介绍,模型里填旗帜或者徽章等东西,难度是等级,其他还有一些秩与乱、善与恶的倾向以及权力架构,这些的填法看注释。最后那个阵营写的就是这个派系的“文化”或者“背景”或者“性质”,比如我这个“国家骑士团”是“普威尔联合王国”治下“普威尔ZY”这个贵族派系下的“王冠骑士团”下的一个执行部队,其所属就是联合王国kingdom_1,在界面中显示的阵营颜色与兵种会由它决定。
       然后要设置所属的话,就用script_set_faction_affiliation。注意这个脚本后面要接四个数据,第一个是成员,第二个是这个成员的性质,0是阵营(item),1是npc。第三个是它要加入的,第四个是加入后的地位,0是普通成员,1是支柱,2是首领。
       最后招募一下人员,我这里预计会给各种小势力都来一个兵种树,但是领主我甚至都还没出完装,要做的事还有很多虽然出装和写兵种树也很有意思,两三年前我还能一杯茶一根棒棒糖,对着电脑坐一下午玩骑砍暖暖,但自打能搓新功能和新剧情后,骑砍暖暖是越来越没有吸引力了。中文站有很多擅长魔球的汽油,也有很多喜爱捏新兵种画兵种树的,不知道有没有人能有闲心来帮哥们我这个忙。
       有意向者加QQ群号344394142。
兵种.png
成员.png
介绍.png

评分

参与人数 1第纳尔 +10 魅力 +1 收起 理由
agjib + 10 + 1 您的帖子很有价值!

查看全部评分

鲜花鸡蛋

黑暗路西法  在2023-5-31 10:44  送朵鲜花  并说:摸摸你的

0

主题

57

回帖

17

积分

随仆

Rank: 1

UID
3346943
第纳尔
519
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2022-4-8
鲜花(2) 鸡蛋(0)
发表于 2023-5-31 08:08:58 来自手机 | 显示全部楼层
代码量过去庞大来自: Android客户端

16

主题

586

回帖

326

积分

见习骑士

Rank: 3

UID
3102512
第纳尔
2380
精华
0
互助
29
荣誉
0
贡献
0
魅力
63
注册时间
2019-9-6

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

鲜花(51) 鸡蛋(0)
发表于 2023-5-31 09:50:18 来自手机 | 显示全部楼层
都学不会还敢叫开源!来自: Android客户端

15

主题

139

回帖

151

积分

见习骑士

Rank: 3

UID
3048044
第纳尔
2026
精华
0
互助
17
荣誉
2
贡献
20
魅力
284
注册时间
2018-12-15
鲜花(30) 鸡蛋(0)
发表于 2023-5-31 10:44:11 | 显示全部楼层
欧内的手,好汉

30

主题

200

回帖

169

积分

见习骑士

Rank: 3

UID
2462463
第纳尔
1472
精华
0
互助
20
荣誉
0
贡献
0
魅力
50
注册时间
2015-3-3
鲜花(43) 鸡蛋(0)
发表于 2023-5-31 11:34:58 | 显示全部楼层
这代码量。。。6666666666666
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-4-23 14:24 , Processed in 0.140093 second(s), 32 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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