骑马与砍杀中文站论坛

标题: modules system記事本(裡面的教學僅供參考用)-停更 [打印本页]

作者: 小丑遊戲    时间: 2018-10-6 14:49
标题: modules system記事本(裡面的教學僅供參考用)-停更
本帖最后由 小丑遊戲 于 2018-11-4 15:31 编辑

寫這篇的主要因是砍二的到來,砍一的MOD製作手冊還停留在原版0.808版本。因此我萌生了做戰團版1.171版的教學。
而這個教學紀錄本本體是參考0.808版本的教學手冊去重新編寫的,除此之外,還參考各大MS大神所寫下的帖子。
因為這是第一ˋ次編寫,所以如果有錯誤的地方還請多多指導。

因為這是第一ˋ次編寫,所以如果有錯誤的地方還請多多指導。

第一樓就先放置以前大佬所撰寫的0.808版本的教學帖子,和寫ˋ這個教程所參考的帖子。以及每整理出一個章節,就放出整理在PDF檔的紀錄本。

第二樓就放置MS的學習紀錄本。

引用名單帖子:

騎馬與砍殺MOD製作教程中文版正式發布: by foxyman
http://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=92636&extra=page%3D1

[入門向]<Mod製作終極入門>中文版 by   
http://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=440176&extra=page%3D1

MOD製作最簡入門(2011年4月13日更新) by 阿坑
http://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=78202

[分享]騎馬與砍殺MOD製作教程&工具下載 by 心中飛翔
http://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=235715&extra=page%3D1

PDF檔案:

開啟PDF檔案的軟體官網:
https://www.sumatrapdfreader.org/free-pdf-reader.html


騎馬與砍殺MOD教學第一章.pdf (1.74 MB, 下载次数: 1181)    騎馬與砍殺MOD教學第二章.pdf (762.76 KB, 下载次数: 1112)



作者: 小丑遊戲    时间: 2018-10-6 14:49
本帖最后由 小丑遊戲 于 2018-11-4 01:02 编辑

第一章:MOD概論


[spoiler=什麼是騎砍MOD?]騎馬與砍殺MOD系統(MS,全名是ModuleSystem,中文說法是模組系統)是一組Python腳本,藉由編寫python代碼後,將python腳本編譯生成二進制碼的txt文檔。
而後點進遊戲的主程序,程序有選拉式選單可以讓我們選擇要運行的MOD,確認後按進入遊戲,會從Mount&Blade/Module文件夾裡讀取資料,就可以進入遊戲。

基於此,我們可以利用python腳本來修改物品、兵種、人物、任務和對話,以及遊戲的元素,甚至可以顛覆騎砍以往的玩法,做出新的遊戲MOD出來。
由於騎馬與砍殺遊戲主要讀取的是編譯後的txt文檔,而不是python腳本,所以修改txt文檔也可以做出MOD,但是編譯後的txt文檔除了可讀性差之外,要深度的修改則是相當艱難。

開發MOD中有兩種方法,一種是修改官方開放出來的Native的MS腳本,而後編譯生成txt文檔,這種方法是比較正規的。
另一種是修改txt文檔,在歷代的版本中,有著官方或者是民間(非官方)騎砍txt文檔編輯器,其中以開發戰團的txt文檔,魔球編輯器最為盛名。
但是,不管是哪種類型的騎砍文檔編輯器,共通的特點是修改的侷限遠不如用python腳本去修改來的大。

目前,騎砍有分原版跟戰團這兩種類型。
原版主程序1.011版(MS代碼為1.010)為最終版本,在這之前還有0.9、0.89x、0.80x….版本,而有開放相對應的代碼,但是系統卻是不能向下兼容txt文檔。
官方原版不再更新後,重心往戰團開發,戰團的版本中,其遊戲程序能夠向下兼容txt文檔。
戰團目前最新主程序是1.173版本,MS代碼為1.171版。[/spoiler]

[spoiler=製作MOD需要條件]製作MOD工具及配置:
本教學是以程序編輯為主,要編譯Python腳本編程要有以下條列的程序和物件。
    &#8226; Python程序
    &#8226; 文檔編輯器
    &#8226; MS代碼
    &#8226; 騎馬與砍殺主程序
[/spoiler]

[spoiler=Python安裝]製作MOD是由Python腳本所構成,所以要下載python的程序,

其Python的主頁鏈結:https://www.python.org/

在主頁上,將鼠標滑向Download上,有下拉選單,點選你目前所用的系統,而我則是用Windows 10系統,所以點選Windows,進入下載頁面。



在下載Python的版本中,2.7x和3.x的兩種版本,由於騎砍所運行的Python腳本是用2.6版本(2.5版本也可以),
而這裡提供的是2.7x的版本,這版本騎砍Python腳本其實也可以運用,而3開頭版本的則是行不通,所以下載2.7x版本



下一頁就是點選要下載檔案,這有分Windows 64位元和32位元的,系統是哪一個位元的就下載哪個。



下載完後按安裝檔,第一步默認下一步,第二步就設置下載的路徑,我的例子是路徑設在D槽後下一步。



到這裡有個安裝設定,其中有個加入環境變量的設定,但是預設是沒有的,所以將他加入設定值然後下一步就開始安裝了,之後慢慢等待,就安裝成功了。

[/spoiler]

[spoiler=Python環境變數設定]如果在安裝設定時沒有將環境變數加入設定值,或者是某個版本中沒有這個選項,需要自己去設置。
沒預設環境變數的話,那編譯python腳本的話絕對會出現錯誤的。
所以,不論是否有在安裝時加入環境變數,手動環境變數這步驟是需要去學習的。
各種版本有各種不同的設定,我這教學是以window 10新版去設定的。
首先要做的是點開電腦本機,然後鼠標在項目的本機中,按下滑鼠右鍵,點選選單的內容。



進入到系統裡面後,點選進階系統設定。會出現系統內容的視窗,在進階的資料中,點選環境變數。



進入到環境變數視窗,在系統變數中選則Path變數後,按下編輯進入編輯環境變數。
如果有在安裝設定中有加入環境變數的設定的話,在列表中會出現D:\Python27\(Python安裝路徑)和D:\Python27\Scripts(此設定不影響騎砍Python腳本運作),這也表示Python環境變數設定完成。
如果沒有,只要按新增,輸入Python安裝路徑之後都按確定就設定成功了。

[/spoiler]

[spoiler=文檔編輯器]下載完Python並把環境變數加入進去後,就可以開始著手使用Python語言了。
打開Python腳本檔案可以用記事本去開啟,不過記事本的功能簡陋,運用起來不方便。
所以在這推薦用一款文檔編輯器,Notepad++。
雖然說有著其他的文檔編輯器軟件可以使用,但是Notepad++在所有的軟件中,使用性和方便性是屈指可數的,
而它免費和開放原始碼的自由軟件特性,更是讓許多人去使用。
至於使用Notepad++的部分,會在後面部分慢慢講解。下載Notepad++則自行摸索。

Notepad++的官網首頁如下:https://notepad-plus-plus.org/



點選任一個py檔案後按右鍵,點選內容。將開啟方式變更為Notepad++,這樣日後就能夠直接編輯python內部程式碼了。

[/spoiler]

[spoiler=MS代碼]要獲得騎馬與砍殺Native的Python腳本,可以在官方網站中下載,在中文站中,也有許多人分流載點。
而我有在這些帖子中,統整出所有開源的MOD的MS下載。

官網1.011和前版本源碼下載區:
http://forums.taleworlds.com/index.php/topic,30480.0.html

1.011版載點:
https://www.mbrepository.com/file.php?id=1716

中文站戰團1.171版分流載點: by 蛋清
http://bbs.mountblade.com.cn/thread-1899299-1-1.html

個人統整開源MOD下載總和: by 小丑遊戲
http://bbs.mountblade.com.cn/thread-1932070-1-1.html

下載完後,是一個壓縮檔案(需要7zip壓縮軟件),將裡面的資料解壓縮到該MOD的文件夾內。(放置MOD內是為了方便開發。)

7-zip官方網站:https://www.7-zip.org/

以戰團原版Native最新版本1.171版為例,文檔中有兩個文件夾,Module_system 1.171和Module_data 1.171,
分別把這兩個文件放置到 Native檔內跟MOD裡的Data檔裡,大致上就完成基本製作MOD配置
(因為要運行的腳本是Module_system 1.171內的文件,Module_data 1.171是備分的數據,就算刪了也不影響MOD開發)

[/spoiler]

[spoiler=Notepad++方面小功能]在Notepad++文檔編輯器中,上方選單中點選檢視>文件夾工作區,出現文件夾工作區的區塊。
然後將然將MS代碼檔案夾丟進文件夾工作區的白色區塊,這樣以後只要在那點選檔案就可以開啟了。


[/spoiler]


第二章:MOD內容


[spoiler=MOD項目]現在,已經把基本配置弄完成了,點開Module_system 1.171文件夾。在文件夾裡,有一個build_module的bat批次檔(也是PY程式編寫的)和PY檔案。
在PY檔案裡,有分四種文件:

    &#8226; header_前綴文件
    &#8226; process_前綴文件
    &#8226; ID_前綴文件
    &#8226; module_前綴文件


header_文件,是屬於MOD中的常數文件,可以去修改的文件,但是在未深入開發時則不建議去變動,所有操作的函數歸類在header_operations.py文件內。
如果真的要定義新的向量,可以在module_文件修改。

process_文件,主要是MOD編譯成數據(數字),因為process_文件是屬於重要的文件,在未確認他的運作流程時千萬別去更動。

ID_文件,主要是運作遊戲內部的單元,是遊戲內部所有事項的索引區塊。
是生成MOD時所建立的臨時文件,在每次的編譯時會重新創建,所以不能去修改,也不能在編譯前將ID_文件刪除。
你也能夠利用ID_文件去檢查所有事項的索引,如果遊戲出現BUG錯誤,會出現錯誤BUG的條列索引,可以在ID_文件中快速查獲。

module_文件,包含的是MOD內容,是我們主要修改的文件。
包含修改兵種、物品、裝備、NPC、對話、場景等等。

*(除了process_文件和build_module的bat批次檔是python語言去編寫,其他的文件都是用MS語法去編寫的。)

最後就是build_module的bat批次檔,他是最主要的編譯執行檔案。
執行這類的檔案,它會自行將py檔案編譯成txt文檔,並覆蓋原先MOD的txt文檔。[/spoiler]

[spoiler=MOD編譯]現在,把原版MOD(Native)文件夾複製,然後貼到 Modules文件夾中,改檔名為test。
再來是進入到test\Module_system 1.171文件夾裡,執行build_module的bat批次檔。



在未修改裡面任何的文件下去執行,結果出現了錯誤。
先查看module_info.py文字內部代碼,有一行是export_dir = "../WOTS/Modules/Native/"
以我的MOD為例,放置MOD的位置在D:/Program Files (x86)/Steam/steamapps/common/MountBlade Warband/Modules/test/
那就要修改export_dir 指向文件夾,修改成export_dir = "D:/Program Files (x86)/Steam/steamapps/common/MountBlade Warband/Modules/test/"

*若是檔案路徑過長,或者是嫌太麻煩,可以修改成export_dir = "../",指向預設的目錄。
*在MOD系統裡,目錄名是用正斜槓(/)而不是用反斜槓(\),再來就是目錄尾端還要在加上一個正斜槓。




之後再執行一次build_module的bat批次檔,如果運行解果如下面的輸出文字所示,那就代表執行成功。

Initializing...
Compiling all global variables...
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Exporting map icons...
Creating new tag_uses.txt file...
Creating new quick_strings.txt file...
Exporting faction data...
Exporting item data...
Exporting scene data...
Exporting troops data
Exporting particle data...
Exporting scene props...
Exporting tableau materials data...
Exporting presentations...
Exporting party_template data...
Exporting parties
Exporting quest data...
Exporting info_page data...
Exporting scripts...
Exporting mission_template data...
Exporting game menus data...
exporting simple triggers...
exporting triggers...
exporting dialogs...
Checking global variable usages...
Exporting postfx_params...

______________________________

Script processing has ended.
Press any key to exit. . .

*一般按照上面的流程做下去,是不會出現錯誤的。但如果其他的錯誤訊息,在官方和中文站上有著各種BUG的解決方法,請善用搜索引擎。

[分享]收集:常見py報錯解決方案(4-17更新): by 惡豬
http://bbs.mountblade.com.cn/thread-487284-1-1.html

[分享] 關於製作MOD時常見的bug&以及其解決方法 by 心中飛翔
http://bbs.mountblade.com.cn/thread-360772-1-1.html

編譯完成了,可以到MOD的txt文檔看看,除了game_variables.txtmap.txt沒更新外,其他的txt文檔都已經更新。[/spoiler]

[spoiler=MOD文檔項目細則]在MOD的編譯文檔中,雖然有分著四大類,但這四大類之中,每一類又分著不同的項目。
在這四大類的各個項目,雖然有許多是相同的項目,但是也有的是單一種類,下面的條目是用來分類的細則。[/spoiler]

[spoiler=module文檔]
項目 說明
animations 動作編輯(順序和總量不能更改)
constants 變量,slots和其他變量都能在這設定
dialogs 對話(單機)
factions 勢力
game_menus 遊戲介面菜單
info 指向輸出目錄(輸出txt檔路徑)
info_pages 記錄裡遊戲概念的文字內容
items 物品和裝備的各項設施
map_icons 大地圖圖標
meshes 圖片定義。例如進入遊戲時的背景圖片,及盾牌上的紋章圖案
mission_templates 戰鬥場面的定時觸發器(聯機主要修改內容)
music 音樂
particle_systems 粒子系統。如火焰、閃電、煙霧等等
parties 大地圖單位,包含建築、部隊、領主等單位的定義
party_templates 大地圖上的部隊模板定義
postfx 著色器參數設定
presentations 定義介面顯示效果
quests 任務,只定義名稱(單機)
scenes 場景定義,如地形、出生點、水平高度等
scene_props
場景物品,如攻城器具(要有模型)
scripts
處理器腳本文件,讓各大區塊能夠調用
simple_triggers
大地圖觸發器,主要是用於週期檢測觸發器
skills
技能顯示(技能效果寫在string、trigger、script和引擎中)
skins
皮膚、臉及身體定義
sound
音效
strings
字串語句,如進遊戲開新局時出現的介紹字串
tableau_materials
模型材質參數,還有紋章盾牌、衣服等
triggers
大地圖觸發器,用於條件塊和檢測CD、延遲觸發時間觸發器
troops
兵種(升級樹)、領主、國王和NPC等定義
variables
變量(系統)
[/spoiler]

[spoiler=header、process和ID文件]
項目 說明
header_common 公共常數
header_ground_types 場景類型常數
header_item_modifiers 物品修飾名常數
header_operations 操作常數
header_terrain_types 地勢類型常數
process_global_variables 全局變量處理
process_global_variables_unused 無用全局變量處裡
process_init 初始處理
process_line_correction 行列矯正處理
process_particle_sys 粒子系統處理
process_party_tmps 部隊模板處理
process_tags_unused 無用標籤處理
ID_postfx_params 著色器變量ID
[/spoiler]

[spoiler=MS源碼大致規格]打開任一個module_的文檔,除了有少數檔案,大致有著三個規格。



引進模組
騎馬與砍殺的python腳本,彼此都有引入或者是被引入到各自區塊的程式碼,作為引用參數的模組。(可以了解代碼間的相互關係性)
代碼講解
第二個區塊是用井字號包圍的綠色英文,是講解下面的源代碼大致情況,以及如何簡略的修改參數。(代碼講解很重要,要學習MS代碼的一定要閱讀)
源代碼
就是我們要修改的項目。
[/spoiler]

[spoiler=整理MS檔案歸檔]這個部分我是參考rubik的領軍者這部分,關於領軍者的MOD夾帶著原代碼,下載地址:

【領軍者:技能大修】for戰團1.171版及上,2018-3-10更新1.439版 by rubik
http://bbs.mountblade.com.cn/thread-120447-1-1.html

將Modules_system 1.171檔案夾改成source,在source檔案內新建一個檔案,名字改為MS File,
然後將header_前綴文件、ID_前綴文件和process_前綴文件全部丟進MS Files檔案內。
接下來就是要修改文檔,而文檔主要修改的部分就是build_module.bat批次檔

點選build_module.bat批次檔,然後以記事本或者是Notepad++文檔編輯器方式開啟,在@echo off的下一行中輸入:

@del Process_Log.txt
copy ".\MS Files\*.*" ".\" >>Process_Log.txt

再來是在python process_postfx.py下一行中輸入:

@del header_*.py
copy ".\ID_*.py" ".\MS Files\" >>Process_Log.txt
@del ID_*.py
@del process_*.py

存檔後執行就完成了,這個檔案歸檔主要是為了方便查看檔案資料。

*一開始的執行可能會出現 Process_Log.txt找不到的訊息,不過不影響輸出結果,再次執行就沒這問題了。
[/spoiler]

[spoiler=程式注釋]在MS腳本中,許多文件都是上千上萬行的程式碼,一般外行人要理解需要花上相當漫長的時間。
程式註解的主要原因是為了讓程式更容易了解,方便自己或者是其他人。

一般python的註解都是用#來註釋,但如果要大段落的註解,則是用三個單引號或者是雙引號包夾。
註釋區在編譯時會忽略不去編譯。


[/spoiler]

[spoiler=在PY程式碼加上中文字幕]一般來說,python在3版以前是不默認中文字幕的,裡面有中文字幕(就算是在註釋區輸入中文字幕)編譯時也絕對會出錯。

如果要在裡面輸入中文的話,就要在程式的首行(第一行)輸入#coding=utf-8,就可以在裡面輸入中文了。
不過要編譯的遊戲內直接出現中文,這方法是不可行的。
有關於更詳細的解決方法,在下方的帖子可以參考。

在PY代碼中直接加入中文對話 by alixyang
http://bbs.mountblade.com.cn/thread-85836-1-8.html
[/spoiler]


第三章:module_items物品(待編輯)


[spoiler=items物品內容概述]到了第三章,可以正式開始編寫騎砍MOD的python腳本,來做出我們世界觀的騎砍MOD。
在這個章節中,教導如何新增物品,修改參數設定值等。

下面例子是練習劍practice_sword 的元組列表,包含在items框格內。

["practice_sword","Practice Sword", [("practice_sword",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_wooden_attack, itc_longsword, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(22,blunt)|thrust_damage(20,blunt),imodbits_none],

[(1)"物品ID",(2)"物品名稱",[(3)("模型名字","特定狀態")],(4)物品種類,(5)物品動作,(6)物品價額,(7)物品屬性,(8)物品類型修飾語,[(9)觸發器],[(10)販賣地點]],

每個物品記錄包含以下條列的意義:(註釋內容)

   1. 物品ID:用於被其他MS引用的項目。
    2. 物品名稱:物品的名字。
    3. 物品模型:
        3.1. 模型名字:物品模型的名字。
        3.2. 特定狀態:非默認物品狀態。
    4. 物品種類:物品使用的效果。詳細部分在header_items.py。
    5. 物品動作:物品使用的動作。詳細部分在header_items.py。
    6. 物品價額:物品基礎的金額。
    7. 物品屬性:按照各種物品的統計數據。
    8. 物品類型修飾語:遊戲中物品會在該類型的修飾語而出現在名字前的前綴。
    9. 觸發器(可設定的):與物品相關的簡易觸發器列表。
    10. 販賣地點(可設定的):物品作為商品可以在設定的販賣地點中找到。
[/spoiler]

[spoiler=練習劍表格化分析]
*觸發器和販賣地點無設定通常是可以忽略或者是刪除的。
順位
特性
練習劍內容
1 物品ID practice_sword
2 物品名稱 Practice Sword
3.1 模型名字 practice_sword
3.2 特定狀態 0
4 物品種類 itp_type_one_handed_wpn
itp_primary
itp_secondary
itp_wooden_parry
itp_wooden_attack
5 物品動作 itc_longsword
6 物品價額 3
7 物品屬性 weight(1.5)
spd_rtng(103)
weapon_length(90)
swing_damage(22,blunt)
thrust_damage(20,blunt)
8 物品類型修飾語 imodbits_none
9 觸發器(可設定的) 無設定
10
販賣地點(可設定的) 無設定
[/spoiler]

[spoiler=物品內容解析-物品ID-1]如果其他MS文件引用物品ID項目時,要加itm_+物品ID的名字。

以練習劍的ID名是practice_sword,引用的話就成了itm_practice_sword

*物品ID的特性是專一性,不能有重複的名字,否則編譯時會出錯。[/spoiler]

[spoiler=物品內容解析-物品名稱-2]顯示在物品欄中的名字,如果有修飾語的會是以前綴名+物品名顯示。[/spoiler]

[spoiler=物品內容解析-物品模型-模型名字-3.1]Resource(MOD)或者是CommonRes(原版Native)的內部brf檔案,用Openbrf開啟檔案,裡面模型區的3D模型名字。

[下載] Openbrf0.082e和漢化翻譯文件下載 by 蔣亞軍1990
http://bbs.mountblade.com.cn/thread-1894806-1-1.html

Openbrf0.082e下載區
https://www.mbrepository.com/file.php?id=1466
[/spoiler]

[spoiler=物品內容解析-物品模型-特定狀態-3.2]簡單的說法是,在同樣一個物品ID,在不同的情形下,模型也會不一樣。
弓弩的箭矢,有些在物品欄和裝備在身是以箭矢袋的模型顯示,用弓箭射出去後顯示的是箭矢模型。
另外是物品欄和裝備在身的模型,以及使用時的模型各是不一樣的。
加設修飾語也能夠改變模型。

目前有這幾種特定狀態模型的設定:

ixmesh_inventory        物品在物品欄時
ixmesh_flying_ammo     物品在飛行中
*射出的箭,子彈,和其他投射類武器,如果不加上這個狀態模型,就會使用默認的模型
ixmesh_carry             物品在身上的時候(裝備物品不使用的狀態下)

下面為模型設定的範例:
    ("example_item",0) 默認模型狀態設定,一律設為0
    ("example_item_inventroy",ixmesh_carry) 裝備在身上時的模型。
    ("example_item_old",imodbit_old|ixmesh_carry) 物品有前綴名的模型。
[/spoiler]

[spoiler=物品內容解析-物品種類-4]物品種類,除將主要的物品進行分類外,還能將主要物品分類加上該物品特性的次要特性。

主要物品分類以武器為例,有單手、雙手、長竿、投擲、弓和弩的武器分類。
次要特性則是在主要物品分類的基礎上再加上它所擁有的特性,
例如在巨劍分類在雙手的武器分類外,還可以給它加上破盾、對盾攻擊加成的特效。
物品種類的分類前綴名為itp_type_(一定要有這個分類),特效前綴名為itp_(可有可無)。[/spoiler]

[spoiler=物品種類列表]
物品種類(英) 物品種類(中)
itp_type_horse 馬匹類型
itp_type_one_handed_wpn 單手武器
itp_type_two_handed_wpn 雙手武器
itp_type_polearm 長桿武器
itp_type_arrows 弓箭箭矢類型
itp_type_bolts 弩箭箭矢類型
itp_type_shield 盾牌類型
itp_type_bow 弓箭武器
itp_type_crossbow 弩箭武器
itp_type_thrown 投擲武器
itp_type_goods 貿易貨物類型
itp_type_head_armor 頭部防具
itp_type_body_armor 身體防具
itp_type_foot_armor 腳部防具
itp_type_hand_armor 手部防具
itp_type_pistol 單手手槍武器
itp_type_musket 滑膛槍(雙手步槍)武器
itp_type_bullets 子彈類型
itp_type_animal 動物類型
itp_type_book 書本類型
[/spoiler]

[spoiler=物品種類特點]
物品特點(英)
物品特點(中)
itp_force_attach_left_hand
強制綁定左手
itp_force_attach_right_hand強制綁定右手
itp_force_attach_left_forearm強制綁定右臂
itp_attach_armature
綁定腳部
itp_attachment_mask
綁定臉部
itp_unique
唯一的(不會出現在戰利品+商店出售)
itp_always_loot
一定會在戰利品中出現
itp_no_parry
無法格檔
itp_default_ammo
初始彈藥量
itp_merchandise
商品+商店出售
itp_wooden_attack
木頭攻擊聲音
itp_wooden_parry
格檔發出木頭聲音
itp_food
食物
itp_cant_reload_on_horseback
不能在馬背上填裝
itp_two_handed
雙手持握
itp_primary
主要的(未知)
itp_secondary
次要的(未知)
itp_covers_legs
覆蓋腳部
itp_doesnt_cover_hair
不覆蓋頭髮
itp_can_penetrate_shield
穿透盾牌
itp_consumable
可消耗的物品
itp_bonus_against_shield
對盾加成
itp_penalty_with_shield
不能配盾
itp_cant_use_on_horseback
不能在馬背上使用
itp_civilian
市民用品
itp_next_item_as_melee
可設置為近戰武器
itp_fit_to_head
適合頭部
itp_offset_lance
馬背上無法進行長槍衝刺
itp_covers_head
覆蓋頭部
itp_couchable
馬背上可進行長槍衝刺
itp_crush_through
可以擊破盾牌
itp_remove_item_on_use
使用後消失
itp_unbalanced
可以突破格檔
itp_covers_beard
包住鬍子
itp_no_pick_up_from_ground
掉到地面上後無法撿取
itp_can_knock_down
可以將敵人擊倒在地
itp_covers_hair
覆蓋頭髮
itp_force_show_body
強制顯示身體
itp_force_show_left_hand
強制顯示左手
itp_force_show_right_hand
強制顯示右手
itp_covers_hair_partially
包住部分的頭髮
itp_extra_penetration
額外穿透力
itp_has_bayonet
有刺刀
itp_cant_reload_while_moving
無法在移動時填裝
itp_ignore_gravity
忽視重力
itp_ignore_friction
忽視風力
itp_is_pike
是長矛
itp_offset_musket
無法使用雙手手槍
itp_no_blur
無模糊
itp_cant_reload_while_moving_mounted
在移動時無法填裝
itp_has_upper_stab
可以上刺攻擊
itp_disable_agent_sounds
禁止使用代理聲音
itp_kill_info_mask
殺死訊息偽裝
itp_kill_info_bits
殺死訊息位元
[/spoiler]

[spoiler=物品內容解析-物品動作-5]在使用物品(武器或盾牌)做攻擊或者是防守,甚至是走路時,都會有各式各樣的動作。

例如拿著單手劍,有著它的攻擊和防守的動作,但是拿著盾牌時,動作又會改變。
而拿著長矛,獨步攻擊和馬上攻擊又會有不同的動作。

動作名有分兩大區塊,分別有itcf_itc_的前綴。
區別為itcf_前綴名是指一個的物品動作名,
例如拿著武器往左揮砍即一個動作名稱,右揮砍即另一個動作名稱,上砍、下砍、中間刺擊和隔檔各個有itcf_前綴名稱。
而itc_前綴名是將一些itcf_前綴名和itc前綴名整合在一起,所組成一套的物品使用動作設定。

下面介紹物品動作(itc_)的名稱,至於itcf_和itc_所整合的動作, 在header_items.py的文件有整合。
以下面的itc_greatsword雙手巨劍物品動作為例子,它所擁有的動作如下:

itc_greatsword = itc_cut_two_handed |  itcf_thrust_twohanded | itc_parry_two_handed |itcf_thrust_onehanded_lance

雙手巨劍除了有itc_parry_two_handed(雙手格擋)和itc_cut_two_handed(雙手刀)的物品動作外,
還包含 了itcf_thrust_twohanded和itcf_thrust_onehanded_lance單一的動作。

*itc_物品動作在物品中只能放置一個,itcf則不設限。

*若列表上字串有顏色框,則代表此功能並未完全確認。
  也不代表著所有為框起來的就是完全確定的,所有的列表的功能僅做為參考使用。
[/spoiler]

[spoiler=物品動作列表]
物品動作(英) 物品動作(中)
itc_cleaver 小刀(不能格擋)
itc_dagger 匕首(不能格擋)
itc_parry_onehanded 單手格擋
itc_longsword 單手長劍
itc_scimitar 單手彎刀
itc_parry_two_handed 雙手格擋
itc_cut_two_handed 雙手刀(不可刺,無法格擋)
itc_greatsword 雙手巨劍
itc_nodachi 雙手刀斧頭錘子(不可刺)
itc_bastardsword 單雙手劍
itc_morningstar 單雙手刀錘(不可刺)
itc_parry_polearm 長桿(無法格擋)
itc_poleaxe 長桿戰斧(鉞,步戟)
itc_staff 棍棒(揮動)
itc_spear 矛(無法揮動)
itc_cutting_spear 騎槍(無法揮動,只能馬下上劈)
itc_pike 長槍(同巨型騎槍,不可格擋)
itc_guandao 關刀(馬上不可刺)
itc_greatlance 巨型騎槍(同長槍,不可格擋)
itc_musket_melee 步槍
[/spoiler]

[spoiler=物品內容解析-物品價格-6]物品的基礎價格。
在交易技能未達到10級時,在商店購買的價格會比預設的價格高。
除此之外,物品會隨著前綴名的設定而價格有所變動。

貿易商品(也就是雜貨商店)和一般村莊商店,
除了會因為商品內的數量多寡而價格變動外,販賣地點、時間等等其它錯綜雜的關係也會影響到價格。

*最不受價格影響的是作弊商店,但仍然會被交易技能影響到價格。

[/spoiler]

[spoiler=物品內容解析-物品屬性-7]主要的功能是給予不同種類的物件賦予各種不同的屬性及參數。
例如馬類物品給予應有的設定及參數,如給予護甲值、使用難度、速度、操控、衝刺的參數。

下面列表是各種不同屬性的物件所賦予的設定:[/spoiler]

[spoiler=共用類型設定列表]
類型(英)

類型(中)

解釋

abundance
充裕度-百分比
0~255
在商店和戰利品物品欄中所出現的頻率,以100為基準,最小為0(代表絕對不會出現),
最高數值為255(爆出機率為基準的2.55倍,但不代表一定會出現)。
weight
重量-kg
物品的重量。裝備在身會降低行走的速度,放置物品欄會影響大地圖的行軍速度。
[/spoiler]

[spoiler=馬匹類型設定列表]
類型(英)
類型(中)
解釋
body_horse
護甲
決定馬匹的護甲值和生命值。
值越大生命和護甲值越高。
difficulty
難度
騎馬所需要的最低騎術技能點數值
horse_speed
速度
馬匹速度,值愈大速度越快
horse_maneuver
操控
馬匹靈活性
horse_charge
衝刺
馬匹衝撞力度,代表撞上步兵輸出傷害和衝撞後的損失。
值越大,傷害越大,也能撞開越多步兵。
[/spoiler]

[spoiler=單、雙、長竿武器類型列表]
類型(英)
類型(中)
解釋
difficulty 難度 在使用該類武器時所需要最低力量值,如果未達到標準則無法使用
spd_rtng 速度 武器揮砍和直刺的攻擊速度
weapon_length 武器長度 以厘米單位,這個設定能決定武器能接觸(攻擊)到的範圍,和實際模型長度無關。
swing_damage 砍傷值 武器揮砍攻擊所造成的基礎傷害值
thrust_damage 刺傷值 武器直刺攻擊所造成的基礎傷害值
[/spoiler]

[spoiler=弓、弩箭矢類型列表]
類型(英)
類型(中)
解釋
weapon_length
武器長度
以厘米單位,弓弩箭矢的長度,和實際模型長度無關。
thrust_damage
刺傷值
箭矢射擊所造成箭矢+弓弩的基礎傷害值
max_ammo
最大箭數值
每一袋箭矢的數量
[/spoiler]

[spoiler=盾牌類型列表]
類型(英)
類型(中)
解釋
hit_points
生命值
盾牌所能承受的最大傷害值
body_armor
護甲值
盾牌的防禦值,每次被攻擊到的傷害減少。
spd_rtng
速度
切換到盾牌防禦的速度
weapon_length
武器長度
盾的覆蓋值,值越大,覆蓋量越大,能保護身體不被箭矢攻擊的作用越大。
[/spoiler]

[spoiler=弓類型列表]
類型(英)
類型(中)
解釋
difficulty
難度
使用弓所需要的最低強弓技能點數值
spd_rtng
速度
弓填裝箭矢的速度。弓箭射出後,到填裝箭矢,再次裝弓的速度。
值越大速度越快。
shoot_speed
射速
箭射出去的飛行速度,值越大速度越快。
注意,太快可能會穿越近距離的目標而無法對其造成傷害。
thrust_damage
刺傷值
弓的基礎傷害值
accuracy
準確度(百分比)
射出點和瞄準點的機率重和,100則代表著重和率為100%,較低會影響到射中的機率。
[/spoiler]

[spoiler=弩類型列表]
類型(英)
類型(中)
解釋
difficulty
難度
在使用該類武器時所需要最低力量值
spd_rtng
速度
弩填裝箭矢的速度。弩箭射出後,到填裝箭矢,再次裝弩的速度。
值越大速度越快。
shoot_speed
射速
箭射出去的飛行速度,值越大速度越快。
注意,太快可能會穿越近距離的目標而無法對其造成傷害。
thrust_damage
刺傷值
弩的基礎傷害值
max_ammo
最大箭數值
再次填裝前能射出的箭量
accuracy
準確度(百分比)
射出點和瞄準點的機率重和,100則代表著重和率為100%,較低會影響到射中的機率。
[/spoiler]

[spoiler=投擲類型列表]
類型(英)
類型(中)
解釋
difficulty
難度
使用投擲武器所需要的最低強擲技能點數值
spd_rtng
速度
武器填裝速度,即準備投擲下一個投植物的速度。
shoot_speed
射速
武器飛射在天空中的速度
thrust_damage
刺傷值
武器射擊的基礎傷害值
max_ammo
最大數量值
每個投擲武器的最大數量
weapon_length
武器長度
厘米代表著武器長度,和實際模型長度無關。
[/spoiler]

[spoiler=貿易貨物類型列表]
類型(英)
類型(中)
解釋
food_quality
食物品質
食物對於隊伍士氣的影響,高於或低於50分別會提高和降低士兵的士氣。
max_ammo
最大數量
物品能消費的數量
[/spoiler]

[spoiler=頭部、身體、腳步、手部防具類型列表]
類型(英)
類型(中)
解釋
head_armor
謢頭
保護頭部降低傷害的數值
body_armor
護身
保護身體降低傷害的數值
leg_armor
謢腿
保護腳部降低傷害的數值
difficulty
難度
在使用該類武器時所需要最低力量值,如果未達到標準則無法使用。
[/spoiler]

[spoiler=手槍、步槍、子彈類型列表]
類型(英)
類型(中)
解釋
difficulty
難度
在使用該類武器時所需要最低力量值,如果未達到標準則無法使用。
spd_rtng
速度
子彈填裝的速度。即射出後重新填裝子彈並眇準的速度。
shoot_speed
射速
子彈在射出後的飛行速度。
thrust_damage
刺傷值
武器射擊的基礎傷害值
max_ammo
最大子彈數值
再次填裝前能射出的子彈數量
accuracy
準確度(百分比)
射出點和瞄準點的機率重和,100則代表著重和率為100%,較低會影響到射中的機率。
[/spoiler]

[spoiler=物品內容解析-物品類型修飾語-8]modules_items在開頭部分是常數,來管理物品的修飾語(modifier)
也就是物品的前綴名,是用來調整物品的參數,依照這些物品賦予的修飾語,來調高或降低物品原有的參數。
例如彎曲的長竿回火的長劍活潑的戰馬等,都是由修飾語+物品名而成的。

各種類型的物品,則有各自賦予的修飾語。
例如戰馬,則會有活潑、倔強、老等等修飾前贅詞;
而長竿,則會有精良、平衡、有缺口和斷裂等前贅詞。
戰馬和長竿它們的前綴詞是不能通用的。

在modules_items文件中,有#Some constants for ease of use.的註釋。
內容講述著下方列出常用的類型修飾語,
例如無前綴imodbits_none = 0和馬的前綴
imodbits_horse_basic = imodbit_swaybacked|imodbit_lame|imodbit_spirited|imodbit_heavy|imodbit_stubborn。
仔細觀察後,發現它的條列是,imodbits_修飾語種類 = imodbit_前綴名稱,也就是物品修飾語=遊戲物品名修飾語。
除了這些前綴外,還有其他不同類型所搭配的修飾語。

下面第一個列表列出各項物品種類前綴,而在前面要加上imodbits_,如imodbits_none之類的,
而在=之後的前綴名稱,要加上imodbit_,諸如imodbit_swaybacked,-而這個前綴名稱是「老」。

*除了給該物品種類前綴外,還有就是給物品單一前綴名稱。[/spoiler]

[spoiler=物品種類前綴列表]






none 無前綴 horse_basic 馬的前綴 cloth 布衣前綴
armor 盔甲前綴 plate 鐵甲前綴 polearm 長竿前綴
shield 盾牌前綴 sword 刀劍前綴 sword_high 長劍前綴
axe 斧頭前綴 mace 槌子前綴 pick 長槍/矛前綴
bow 弓前綴 crossbow 弩前綴 missile 箭/矢前綴
thrown 投擲武器前綴 horse_good 馬好的前綴 good 好前綴
bad 壞前綴 thrown_minus_heavy 重型投擲武器前綴
[/spoiler]

[spoiler=物品種類前綴(英)]
物品種類前綴 前綴名稱
none 0
horse_basic swaybacked | lame | spirited | heavy | stubborn
cloth tattered | ragged | sturdy | thick | hardened
armor rusty | battered | crude | thick | reinforced | lordly
platec*racked | rusty | battered | crude | thick | reinforced | lordly
polearm c*racked | bent | balanced
shield c*racked | battered | thick | reinforced
sword rusty | chipped | balanced | tempered
sword_high rusty | chipped | balanced | tempered | masterwork
axe rusty | chipped | heavy
mace rusty | chipped | heavy
pick rusty | chipped | balanced | heavy
bow c*racked | bent | strong | masterwork
crossbow c*racked | bent | masterwork
missile bent | large_bag
thrown bent | heavy | balanced | large_bag
horse_good spirited | heavy
good sturdy | thick | hardened | reinforced
bad rusty | chipped | tattered | ragged | c*racked | bent
thrown_minus_heavy bent | balanced | large_bag
Unprefixed_name champion | meek | timid | superb | powerful | exquisite | deadly | sharp | well_made | fine | cheap | old | poor | plain
[/spoiler]

[spoiler=物品種類前綴(中)]
物品種類前綴
前綴名稱
無前綴
0
馬的前綴
老 | 瘸腿 | 活潑的 | 重 | 倔強的
布衣前綴
破爛的 | 破舊的 | 結實的 | 厚 | 加硬
盔甲前綴
生銹的 | 有凹陷的 | 粗糙的 | 厚 | 加強 | 豪華的
鐵甲前綴
裂開的 | 生銹的 | 有凹陷的 | 粗糙的 | 厚 | 加強 | 豪華的
長竿前綴
裂開的 | 彎曲的 | 平衡的
盾牌前綴
裂開的 | 有凹陷的 | 厚 |  加強
刀劍前綴
生銹的 | 有缺口的 | 平衡的 | 回火的
長劍前綴
生銹的 | 有缺口的 | 平衡的 | 回火的 | 極品
斧頭前綴
生銹的 | 有缺口的 |  重
槌子前綴
生銹的 | 有缺口的 |  重
長槍/矛前綴
生銹的 | 有缺口的 | 平衡的 |  重
弓前綴
裂開的| 彎曲的 | 堅硬的 | 極品
弩前綴
裂開的 | 彎曲的 | 極品
箭/矢前綴
彎曲的 | 一大袋
投擲武器前綴
彎曲的 | 重 | 平衡的 | 一大袋
馬好的前綴
活潑的 |  重
好前綴
結實的 | 厚 | 加硬 |  加強
壞前綴
生銹的 | 有缺口的 | 破爛的 | 破舊的 | 裂開的 | 彎曲的
重型投擲武器前綴
彎曲的 | 平衡的 | 一大袋
未編入物品種類前綴名
一流的 | 溫順的 | 膽小的 | 華麗的 | 強有力的 | 精致的 | 致命的 |
鋒利的 | 精良的 | 優質的 | 便宜的 | 舊 | 粗劣的 | 普通的
[/spoiler]

[spoiler=物品內容解析-觸發器-9]觸發器,這個設定是與物品產生相關的事件。
例如,一般的火槍物品,在發射子彈時,所產生的煙硝。

下面則是物品觸發條件設定,使用時加上ti_on_

ti_on_init_item        裝備在身上時
ti_on_weapon_attack    武器攻擊時
ti_on_missile_hit        被遠程武器擊中時

EX:紋章甲帶外套裝備在身時所觸發的狀況

[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_armor_a", ":agent_no", ":troop_no")])]

*這個範例觸發的所有效果和細節部分礙於本章關係無法一一講解,下面的帖子可以給予參考。

[原創] Module System 簡易觸發判斷教程 by 心中飛翔
http://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=235962[/spoiler]

[spoiler=物品內容解析-販賣地點-10]物品販賣的範圍,包含販賣的陣營,地點等設定。
設定如[陣營id]、[地點id]

單一陣營:[fac_kingdom_1] - 只能在斯瓦迪亞陣營商店購買。

地點:[p_zendar] - 只能在禪達商店購買。

複數陣營:[fac_kingdom_2,fac_kingdom_4] - 只能在維吉亞和諾德陣營商店購買。[/spoiler]

[spoiler=傷害類型]在騎砍的世界中,武器的傷害類型有分三大中,有分砍傷、鈍傷及刺傷。
而防具則分類為無護甲、輕甲,和重甲這兩大區別。

砍傷的特點是以尖銳利刃的武器,作切割的動作,如劍跟斧。
砍傷對於無護甲或者是輕甲防具有著顯著的傷害,
但是對於重甲防具的傷害則是有固定比例的削減,甚至對於高防禦重甲防具,用低攻擊性的砍傷武器則毫無傷害。
如果砍傷對目標(敵人)的生命值降到0或者是以下,則能夠對目標造成死亡。

刺傷的特點是以前端尖銳的武器,作直刺,上刺或者是下刺的穿刺攻擊,以長矛和槍為近戰穿刺武器的代表。
遠程穿刺武器作為代表的則是以弓箭、弩箭和手槍步槍等等類型。
刺傷和砍傷的共通點是在於對目標(敵人)的生命值降到0或者是以下,能夠對目標造成死亡。
相異點就在於不論是對於無護甲和輕甲防具有著顯著的傷害外,對於重甲防具也有著50%的攻擊加成,
但是由於平衡其他武器攻擊類型的設定,刺傷的傷害值通常會設定的比較低。

鈍傷則是以無尖銳無利刃的鈍器,作出攻擊的動作,最具代表性的武器是棒類或者是錘類的武器。
鈍器傷害對於重甲防具有50%的攻擊加成, 但是對於無護甲或者是輕甲防具傷害不像砍傷和刺傷攻擊那麼顯著,
加上這類型的武器如錘類的總體長度偏短,總體傷害也是偏低。
但是他最大的特點是鈍傷對於目標(敵人)的生命值降到0或者是以下時,目標是被擊昏的狀態,
而不是被殺死的情形,通常被擊昏的敵人可以做為俘虜或者是作為奴隸販賣。
另外,衝刺的馬也能發揮鈍傷進行攻擊。

*拿著長矛或者是長槍騎上馬作衝刺狀態,默認或者是武器有衝刺前綴的設定下,正面衝向敵人,也能作出穿刺的傷害。
[/spoiler]

[spoiler=創建物品]在module_items中,有著各種類型的練習物件,可以提供我們練習編寫參數的設定值。
而這些物件,可以藉由遊戲內的作弊營地的方式,去觀看是否有成功的創建物品。

如果要用的模型是在MountBlade Warband的CommonRes資料夾裡,那可以直接編輯module_items.py增減物品。
反之,如果模型是放置MOD文件的Resource文件夾的話,就必須動到MOD文件中的modules.ini檔案。

在下面的帖子中,有個柴刀模型,可以先進行下載,下載完後解壓,
將裡面的xxx.brf檔案名字改成chaidao.brf,而後分別將brf檔和dds檔各自歸屬在MOD檔案裡的Resource跟Texture資料夾內。
之後用文字編輯器開啟modules.ini檔案,加入一行load_mod_resource = chaidao後存檔。
如果沒做這個步驟,就算編譯時沒出現問題,但進到遊戲中只要出現這個物品就會出現相關BUG的訊息。

[裝備] SixSixCCFF開源模型帖—5-3 一把農具-柴刀 by SixSixCCFF
http://bbs.mountblade.com.cn/thread-535326-1-1.html



做完上面的步驟後,可以開始編譯module_items了。
可以藉由裡面練習劍的設定,來訂製一把自己專屬的物品。
將練習劍的設定複製後貼到items = [ 的下一行和id為items_end的上一行的範圍內,
然後修改ID名和模型名字再進行編譯,就算是完成簡單創件物品的基本條件。
之後可以在作弊商店中看到自訂的物品。若是要大幅度的修改參數,請參考上面的教學。

練習劍的設定:
["practice_sword","Practice Sword", [("practice_sword",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_wooden_attack, itc_longsword, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(22,blunt)|thrust_damage(20,blunt),imodbits_none],

我自訂的物品:
["chaidao","chaidao", [("chaidao",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_wooden_attack, itc_longsword, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(22,blunt)|thrust_damage(20,blunt),imodbits_none],

[/spoiler]

[spoiler=作弊營地的開啟]作弊營地除了讓我們使用作弊商店外,還有其他的作弊讓我們能快速的了遊戲方面的BUG,能快速地解決。
但是這個設定在遊戲是隱藏起來的,所以要開啟作弊營地的方法就是稍微修改module_game_menus.py的設定。

首先開啟module_game_menus.py後,尋找camp_cheat,然後有這段程式:

("camp_cheat",
       [(ge, "$cheat_mode", 1)
        ], "CHEAT MENU!",

修改成下方的設定後儲存編譯,就可以開啟作弊營地了。

("camp_cheat",
       [(ge, "$cheat_mode", 0)
        ], "CHEAT MENU!",



[/spoiler]



作者: malimalihonh1    时间: 2018-10-6 17:40
非常好      
作者: 1834844750    时间: 2018-10-13 17:10
很好,希望不要坑

作者: tangtt    时间: 2018-10-22 17:54
6666666666 强烈支持!~~~
作者: 小丑遊戲    时间: 2018-10-26 23:27
在這一樓作為日後編輯的帖子。
作者: 蛋清    时间: 2018-11-3 12:30
本帖最后由 蛋清 于 2018-11-3 20:01 编辑

[spoiler=挑刺]1.simple trigger和trigger并不能暴力地分为“新”和“旧”,这是两种用于不同场合的触发器。st只检测触发时间适合一些周期性触发检测的功能,而trigger拥有条件块和检测CD、延迟触发时间,更适合做一些各方面要求比较高的触发器。在只需要做一个周期检测的触发器时,st更有效率。

2.script更类似一个处理器脚本文件,在使用时调用处理。有一些需要输入变量,有一些可以输出变量,具体根据需要。也有把script当做一个复杂的判断条件来用(cf_),一般是在某个复杂判断条件会被反复调用时直接将其写为script,在需要的地方之间call script,若条件为真则执行下一行,为否则跳出循环或结束触发器运行。

3.skill并非技能定义,技能的效果写在st、trigger、script和引擎中,skill只是单纯将skl与id联系起来,以及一些供引擎读取的flag而已。在这个文件可以隐藏技能、让被隐藏的技能显示出来。

4.关于strings,骑砍里应用了两种string,一种是game string,另一种是quick string。quick string不需要定义,在使用的地方直接用[url=]“@xxx[/url]”这种方式生成,其汉化文件在languages里面的quick_strings中。而game string则需要首先在module_string定义才可以调用,否则报错。

5.header_common里面并非联机专用,而是一些将变量名与常数ID联系起来的东西。这个文件几乎被所有module文件挂起调用,因此储存的大都是比较多用的东西。可以将骨骼id与骨骼名字在此定义,然后在其他文件中基本可以直接用骨骼名字代替骨骼的id,更加方便人类读写。

6.itp那块基本都是直译的……比如next item as melee这个flag,它是战团加入的X键切换姿态的产物,效果是把带有这个flag的item的下一个item作为X切换之后的物品。你的翻译“可设置为近战武器”极容易产生误解。pri和sec这两个flag据说会影响AI的武器切换优先度,具体我只做过简单测试,似乎有一些作用。itp default ammo也不是初始弹药,带有这个flag的itm会成为没有携带弹药的武器弹夹内的第一发子弹。举个栗子,若钢弩箭带有这个flag,那么在一个troop携带弩而没有装备弩箭的情况下拿出它的弩,弩的弹夹内装填的那一发子弹就是钢弩箭。类似的还有几个不多赘述,建议在这里把其用途解释出来,而非单纯直译。直译方面百度翻译和谷歌翻译更有效率

7.itc相当于一个整合表格,你举得那个巨剑的例子在实际读取中相当于同时出现那三个itc。itc的根本相当于将一系列动作打包起来并给个人类可以理解并方便读写的名字。比如guandao实际就是可挥砍不可刺的长杆武器,而非一定用于关刀这种武器。如果要整理这一块的内容,最好将其可执行动作与不可执行动作翻译过来。不过我个人建议是如果你把itcf翻译过来的话,itc这块只要解释一下其本质就够了。

8.物品价格也会影响带有物品栏的npc选择哪些装备穿上。

9.difficulty只是一个相对的设定。用在战马上是骑术等级要求,用在弓上是强弓,投掷是强掷,盔甲类和其他武器类则是力量。这些没必要分开,分开会显得杂冗,一个解释就能解决的东西分多类itm讲,你写着蛋疼,看着也蛋疼。

10.weapon length具体长度和模型有关,单位不详。这个值一般是openbrf软件内开游标卡尺得到的数据,大部分情况下是一把近战武器的攻击范围,偶尔会根据需要进行魔改(这也是一些模型看着没打到其实打到了,看着打到了其实没伤害的原因之一)

11.shoot speed基本相当于抛射初速。至于抛射初速有啥用,简单来说就是这个速度越大,抛物线越直。至于初速影响飞行速度就不用解释了。

12.物品触发器的条件不止这三个,还有一个是盾牌类使用的。在lav的源码注释里有提到过:
ti_on_shield_hit              = -80.0 #
    # trigger param 1 = defender agent_id
    # trigger param 2 = attacker agent_id
    # trigger param 3 = inflicted damage
    # trigger param 4 = weapon item_id (ranged weapon in case of ranged attack)
    # trigger param 5 = missile item_id (ammo in case of ranged attack)
    # If (set_trigger_result) is used in the code, operation parameter will override the damage dealt to the shield

13.init item严格说来是这个itm mesh在scene中被生成时,而非一定要将其装备。

14.砍刺钝的根本在于module.ini里面影响伤害计算公式的几个参数,并非硬核设定,可以根据mod需要自行改动。钝伤100%击昏也可以通过mt进行二次判定改变,虽然写在引擎里但也并非硬核设定。[/spoiler]

很久没碰ms了,打眼一看也就看到这点。
个人建议:简单讲解ms表层东西的教程在本版基本备述,LZ在这个时候要编写一个新的教程,尽可能讲解一些比较深层的东西,而非简单翻译解释各个框架——这件事已经有很多人做过了,心飞的教程也已经基本把它做完,拿出来再轮一遍意义不大。如果是单纯整合的话也没必要夹杂一些你自己的误解。

骑砍的MOD手册停留在那个版本是因为ms的大框架基本没变过。即使到战团也只是官方规模性地修改了一些代码,并在引擎里加入了几个对应的变化。其最主要变化是新增加的MOD作者可以利用的修改端口。严格说来真的有心学习,那个教程手册加上心飞的教程是绝对足以入门的,之后如果能详尽地阅读并理解rubik的系列教程,就足以自行制作一个MOD了。至于更加进阶的东西比较细碎,强行整理也容易让人摸不着头脑,更加依赖制作MOD时的经验(详见borr的整合MOD隐雷帖子)。我把那个MS隐雷帖置顶本版也是因为那个可以说是整理、汇总经验之谈最好的形式了。MS学习最根本的方式方法是上手去做然后累积经验。能够教的基本课程也就那些,实际运用还是要尝试理解别人的代码(最好的老师是native)然后自己举一反三。



作者: 春哥教痴汉    时间: 2018-11-3 14:50
有没有1.168珍藏版的MOD SYSTEM。或者自己做
作者: 海涵狮心王理查    时间: 2018-11-3 19:30
本帖最后由 海涵狮心王理查 于 2018-11-3 20:18 编辑

之前听说楼主在写教程,个人还是比较高兴的。毕竟在全站玩家扔下战团、空想吹捧膜拜砍2的今天,在中国玩家坐“等”砍2而老外们若无其事继续搞研究做mod的情况下,中文站能出来愿意研究战团mod技术的人尤其难得。
何况楼主在技术群待了不少时间了,虽然水平肯定远远不足以写出一份完善全面的MS教程来(目前基本无人有此水平),但凭借其搜寻整合资料的能力,在量力而行、广鉴前人的基础上,作一番教程整理应该是不难的。
至于错漏,虽说必然是有,但我不是喷子,不能干出那种自己懒得建设、还给建设者鸡蛋里挑骨头的嘴强王者之事。至于帮助楼主修改完善的想法,由于个人时间所限,也难以实现,索性就持鼓励态度远远在一边旁观了。

这就是我为什么到今天才来真的看一看这个教程。
真的真的是巧合,我在今天看这篇教程,绝对不是来给新晋版主打脸的。

今天简单看了一下,发现和几个试图干这件事的前人写的一样,谬误实在太多,虽然只看了一小部分,虽然我水平也不高,但也已经看不下去了。
楼主与我是熟人,这种事情本来私下建议改正就行了,然而考虑到楼主新得的影响力,有必要让所有读者重新斟酌此教程的可靠性究竟几分。所以不得不驳友人脸面,公开指正。
以下只包含我看过的段落,即“module文档”折叠栏里的内容。其数量已能说明楼主的水平和此教程的价值,故不再进一步纠错。
该栏内未列于下文的内容,并非全都没错,而是有些已由蛋清指正,有些错误不大无需挑刺。
其他还有一些事情无需公开发表,请楼主读过后私聊我交流。

这一段小丑游戏为各module文件标注作用,这是一项基本工作,故对准确性要求极高,基本不能容忍误导。就如同一颗子弹,在出膛时被风吹一下,和在命中前被风吹一下,偏差是完全不一样的。同时由于这段处在全篇前列,读者还处在外行阶段,用俗话、多举例、结合普通玩家游戏直观体验进行解释也是必须的,但一定要明示哪个是俗话讲解、哪个是举例解释、哪个是代码本质,绝对不能把俗话、举例、表面现象和其代码本质混淆起来。下文所列,除部分完全错误外,多是违背了此两条原则,看似小事,但并非有意挑刺、无事生非。
考虑到技术区人气“复兴”后水贴水人众多,这话还是要提前强调一下的。

constants變量,slots和其他變量都能在這設定
constant,查任何一本英汉词典,可知汉意:常量。
game_menus遊戲介面菜單
game_menus.py里面是菜单,但骑砍里可以有并非用menu写就的菜单,比如维京征服的村庄实景菜单。这就需要你作一下额外说明。不作额外说明也无妨,但无端加一句“游戏界面”只是让你的解释更加不准确。
例:游戏菜单
例:游戏菜单,如战团里的城镇、战前出现的菜单。

items物品和裝備的各項設施
装备就属于物品,另外ms里不存在“装备”这个概念。
例:装备等物品

meshes圖片定義。例如進入遊戲時的背景圖片,及盾牌上的紋章圖案
meshes.py里是一类可用于显示图片的对象,其模型大多是面片模型,其所显示的图片则是它们的贴图。在可变素材上增加图案是其用途之一。而不是指面片模型本身,更不是指那张图。
例:用于在游戏里显示某些图片,如进入游戏时的背景图,及盾牌上的纹章。

mission_templates戰鬥場面的定時觸發器(聯機主要修改內容)
城镇场景不是战斗,用不用任务模板?刷兵设定不是触发器,在不在任务模板里?
例:用刷兵设定和触发器等内容控制一套场景内事件,如士兵的移动和逃跑、某些战斗技能效果等。

parties大地圖單位,包含建築、部隊、領主等單位的定義
且不说parties.py里有没有哪个party带有决定其是否为“建筑”的标识,骑砍里有“建筑”这个概念?另外,领主什么时候成了party了?
别提村庄城镇领主造的磨坊和学校,那属于功能的外化形式,不是代码里的概念。
例:大地图上的部队,如村庄、城镇、领主所带领的人马、盗贼团等等,也包括桥和刷怪点等不可见、不可选对象。

postfx著色器參數設定
例:设定部分用于环境渲染的着色器参数

scenes場景定義,如地形、出生點、水平高度等
出生点的设定跟scenes.py没什么关系,另外,放过“定义”这个词吧,它在错误的岗位上快累死了。

scene_props
場景物品,如攻城器具(要有模型)
("city_fire_fly_night",0,"0","0", …     它有模型吗?
例:场景物品

scripts
功能(程式)模塊集中地,讓各大區塊能夠調用
这一串字,既没有定义script,也没有说出其作用,与script无关却让人愈加糊涂的新概念倒是一下给出了四个:“功能”,“程式”,“模块”,“区块”。
例:脚本
例:脚本,是一些按其功能集中起来便于统一调用的代码段落。
为什么我同样写了“功能”却说你写的“功能”是在抛出无用的新概念,观察你我各自的语句结构,自己想。

skins
皮膚、臉及身體定義
“定义”了皮肤、脸及身体,唯独没定义什么叫skin。
例:定义了兵种的可用“种类”。男性、女性、某些mod里的漂亮女性或是不死族都属于skin。可以为每个skin指定脸型模型、声音、发型模型及身体模型等。

strings
字串語句,如進遊戲開新局時出現的介紹字串
在战团里,可以举的例子有3201个,你偏偏举了个不在其内的非string当例子。

tableau_materials
模型材質參數,還有紋章盾牌、衣服等
模型材质参数在brf文件里写着;纹章盾牌是一种物品;衣服也是一种物品。
例:可变素材,用于根据需要在同一模型上显示不同图案,如盾牌的纹章效果。

troops
兵種(升級樹)、領主、國王和NPC等定義
兵种按“身份”划分只有两种:英雄和非英雄,或称npc和非npc。领主和国王都属于npc。
例:兵种及其升级树,如普通小兵、领主、国王和同伴等。

作者: 神仙打架    时间: 2018-12-3 12:55
海涵狮心王理查 发表于 2018-11-3 19:30
之前听说楼主在写教程,个人还是比较高兴的。毕竟在全站玩家扔下战团、空想吹捧膜拜砍2的[/bac ...

大佬我想要个武器击中根据伤害回血的修改方法
求教
作者: 伴生生    时间: 2019-1-8 11:57
厉害厉害厉害
作者: lzdmimo    时间: 2019-1-8 12:11
感谢贡献者!
作者: 请叫我丨神丨    时间: 2022-7-10 13:52
大佬请教一下
下面这个路径报错怎么改?第一次尝试做这个
先查看module_info.py文字內部代碼,有一行是export_dir = "../WOTS/Modules/Native/",
以我的MOD為例,放置MOD的位置在D:/Program Files (x86)/Steam/steamapps/common/MountBlade Warband/Modules/test/,
那就要修改export_dir 指向文件夾,修改成export_dir = "D:/Program Files (x86)/Steam/steamapps/common/MountBlade Warband/Modules/test/"。





欢迎光临 骑马与砍杀中文站论坛 (https://bbs.mountblade.com.cn/) Powered by Discuz! X3.4