最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【物競天擇2】NS2-MOD 制作指南

2023-03-04 16:40 作者:祖莉ZulyHiroky  | 我要投稿

本文意指向更多對物競天擇2或技術(shù)感興趣,

并樂于為社區(qū)開發(fā)做貢獻的人提供最基礎(chǔ)的幫助,

更多詳情或問題咨詢可以進Q群:540422237了解,群內(nèi)會提供更細致的幫助。


入門

Brute's Modding Guide 吃下這篇指南以掌握基本MOD的開發(fā)流程.


進階

以下內(nèi)容多數(shù)需要翻墻,請自備梯子跟英文翻譯.

音效添加:Rio的MOD創(chuàng)作帖

地圖制作:Natural Selection 2 Mapping Tutorial

Cinematic(動畫/特效)制作:Natural Selection 2 Cinematic Tutorial

NS2CN社區(qū)正在運行的開源MOD.StriteR's Github (NS2開頭倉庫)


施工中

原文:Ghouls Modding Guide

這是一個舊的草案,有些細節(jié)可能已經(jīng)過時了!


Spark Engine (火花引擎)

在開始制作NS2mod之前,必須先看一下它所使用的引擎。對于NS2來說,它使用了由UWE自研的Spark火花引擎。

關(guān)于Spark引擎有兩件重要的事情需要理解。首先是它基本的工作原理,其次是它是如何掛載文件的。


工作原理

火花引擎Spark(以下簡稱火花)包含了很多不同的模塊。我現(xiàn)在只描述最重要的那些,這樣你就可以基本知道火花是如何工作的。


理解這一點很重要,因為不理解這個那開始修改制作mod將是毫無意義的。

基本上所有的NS2游戲代碼都是用Lua編寫的,并由引擎通過Lua模塊來執(zhí)行。


Lua代碼本身現(xiàn)在也可以在不同的Lua虛擬機(vm)中運行,但我稍后將更詳細地解釋這一點。

基本上,火花通過網(wǎng)絡(luò)模塊使用網(wǎng)絡(luò)包與客戶端/服務(wù)器進行通信。


如果網(wǎng)絡(luò)模塊接收到一個包,它將在Lua模塊上調(diào)用一個事件,該模塊調(diào)用負責(zé)處理該包的所有代碼函數(shù),并根據(jù)它來決定應(yīng)該發(fā)生什么。


除此之外,還有一些我剛才調(diào)用的核心模塊?;旧?,它是用來管理本地按鍵輸入和相關(guān)的調(diào)用,如網(wǎng)絡(luò)模塊Lua模塊的事件,從而調(diào)用Lua 虛擬機中的某些注冊函數(shù),根據(jù)輸入生成輸出,如按下M鍵換圖→ 呼出事件“按下M鍵”→ 在客戶端虛擬機上調(diào)用Lua函數(shù)KeyDown(Key)按下M鍵→ 玩家在游戲中游玩→ 顯示地圖→ 輸出到渲染模塊:顯示貼圖實體(出現(xiàn)地圖選擇欄)


在輸入給定的模塊時,通過事件調(diào)用某些Lua函數(shù),該函數(shù)根據(jù)輸入生成一個特定的輸出,這些輸出被傳遞到輸出模塊(渲染,網(wǎng)絡(luò)等。)

基本上就是這樣運作的。


如何裝載文件

通常,火花會在裝載文件時檢查該給定的文件是否已掛載。

如果是,它將卸載舊文件并掛載新文件。

否則,它只會安裝最新的個。

例如:

我們的mod包中有l(wèi)ua/Alien.lua。現(xiàn)在spark注意到它已經(jīng)裝入了lua/Alien.lua,因為這是一個普通的文件。所以它會卸載普通文件,而裝載我們的修改過的mod文件。


這使得有兩種最基礎(chǔ)的方法讓修改NS2文件成為可能:


①.?替換普通文件:

您可以通過很基礎(chǔ)地替換普通文件,來添加你修改過的文件,并將它們添加到mod列表中。因為spark將用修改過的mod文件替換掉普通文件。

但這可能會導(dǎo)致兩個問題:

  1. 其他mod的同名文件可能會替換掉你已經(jīng)被修改后的mod文件。

    所以,僅僅替換文件很容易導(dǎo)致兩個插件沖突

  2. ?如果在普通文件中添加了一些對其他游戲代碼很重要的東西,會發(fā)生什么呢?因為你基于舊的ns2構(gòu)建的修改文件不包含新的東西,那么你的mod將導(dǎo)致ns2奔潰,直到你更新你的mod。

②.?添加新文件:

這樣你就可以為你的mod創(chuàng)建屬于自己的文件,這樣就不會卸載任何其他文件,你的mod文件也不會被其他任何mod卸載。但問題是如何鏈接你的mod文件被普通代碼執(zhí)行?


我將在游戲代碼修改部分回答這些問題?,F(xiàn)在讓我說,如果你正確使用了文件夾結(jié)構(gòu),映射器就根本不會有鏈接問題,因為ns2會讓所有映射都可以自動選擇:)這就引出了我們的下一點。


普通文件夾結(jié)構(gòu)

NS2使用了一種特定的文件夾結(jié)構(gòu),我將在這里簡要地通過在下面的列表中展示它,并在“-”后面解釋每個文件夾的用途:


??Lua 包含所有游戲代碼文件(.lua 文件)

??Model 模型 — 包含游戲使用的所有模型(.model 模型文件 .material 材質(zhì)文件和.dds 貼圖文件)

??Map 映射 — 包含所有映射文件(.level 文件)

??Material 材質(zhì) — 貼圖所使用的材質(zhì)和貼圖(.material 材質(zhì)文件和 .dds 貼圖文Sound 聲音 — 包含游戲使用的所有聲音文件(.fsb 事件索引文件 .fev音頻數(shù)據(jù)文件和.soundinfo 音效文件)

??Ui — 包含UI使用的所有紋理(.dds 紋理貼圖文件)

??Screen 屏幕 — 包含用于加載屏幕背景的所有圖像(.jpg 圖片文件)

??Shaders 著色器 — 包含游戲使用的所有著色器(.fx 高階著色器文件 .screenfx 屏幕著色器文件 .hlsl 高階著色器源代碼文件 和.Shader 著色器文件)

??Cinematic 電影動畫 — 包含游戲使用的所有動畫(.cinematic 和 .dds 紋理文件)

??Gamestrings 游戲字符串 — 包含用于翻譯游戲文本的文本文件(.txt 文本文件)

ns2使用的普通文件可以在ns2安裝文件夾下的ns2和“ns2核心文件”中找到。提示:如何打開ns2安裝文件夾:

瀏覽本地文件夾
火花引擎登錄器

右鍵單擊Steam庫→右鍵natural selection 2中的管理→瀏覽本地文件


火花引擎登錄器

圖像啟動板UI
圖像啟動板UI

1.?新建-創(chuàng)建一個新的mod文件夾

2.?打開-打開一個現(xiàn)有的mod文件夾

3.?配置-配置當前打開的mod

4.?發(fā)布-發(fā)布當前打開的模型

5.?源文件-打開當前打開的mod文件夾的源文件夾

6.?輸出-打開當前打開的mod文件夾的輸出文件夾

7.?生成器-將源文件夾的所有源文件轉(zhuǎn)換為ns2使用的格式,并將它們保存到輸出文件夾中

8.?啟動游戲-啟動游戲與輸出文件夾的所有文件的安裝。

9.?地圖編輯器-打開地圖編輯器。

10.?查看器-打開模型查看器。

11.?動畫編輯器-打開動畫編輯器。

12.?Decoda-打開隨ns2附帶的LuaIDE(Lua編譯器)

13.?編輯器手冊-打開地圖編輯器的手冊。

14.?地圖指南-打開ns2普通地圖設(shè)計指南。

15.?示例-打開ns2資產(chǎn)文件夾,其中包括ns2附帶的所有資產(chǎn)(模型源文件等)。


測試mod

至少運行一次生成器以構(gòu)建源文件夾。

然后點擊啟動板中的“啟動游戲”,用你的mod安裝開始游戲。然后通過服務(wù)器瀏覽器→創(chuàng)建啟動一個本地服務(wù)器

開啟本地服務(wù)器
本地服務(wù)器設(shè)置

習(xí)慣使用ns2的作弊模式指令和控制臺調(diào)試指令來復(fù)原某些情況并使用機器人測試mod是非常必要的。


您可以在這里找到所有可用的ns2控制臺命令的更新列表:http://wiki.unknownworlds.com/ns2/Console_Commands

然而,對于一個真正的玩家測試,你無法避免的需要發(fā)布你的mod,并在一個專門的服務(wù)器上測試它們。


發(fā)布模塊

在發(fā)布之前,請確保你的mod在“configure 配置”下有如下圖的標題和描述,[圖像編號]待添加


否則就不可能從創(chuàng)意工坊安裝你的mod了。在您檢查沒問題之后只需點擊發(fā)布按鍵就可以發(fā)布mod到創(chuàng)意工坊了。

更新一個mod的方式也是一樣的。

錯誤警告:如果你點擊發(fā)布,顯示說“發(fā)布成功”,但登錄器只把你的publish_id(發(fā)布id)從 mod.settings (模組配置)文件中刪除。

在這種情況下,只需打開mod.settings 文件(您可以在mod的父文件夾中找到它)并添加

publish_id=“[modid]” //賦值一個發(fā)布id和mod id

提示:手動設(shè)置publish_id還允許你再次上傳和更新舊的創(chuàng)意工坊mod,為此你可能會刪除mod文件夾。

提示:根據(jù)創(chuàng)意工坊鏈接獲取mod Id。

如果你忘記了你的modid再點擊創(chuàng)意工坊鏈接可以很容易找到。

獲取到你的mod的創(chuàng)意工坊頁面的鏈接,然后復(fù)制鏈接中“id=”后面的數(shù)字。進入谷歌,輸入將[從鏈接獲得的數(shù)字ID]轉(zhuǎn)碼為十六進制。谷歌呈現(xiàn)給你的十六位數(shù)字就是十六位的modid(忽略0x前綴


地圖編輯器

作為地圖編輯器,登錄器面板上的地圖編輯器將是您使用的唯一工具。要適應(yīng)地圖編輯器的UI界面,請閱讀游戲根目錄下的地圖編輯器手冊,還有地圖設(shè)計參數(shù)的一些標準。


為了開始使用ns2地圖編輯器,我推薦mendasp的這個教程視頻:http://youtu.be/oIyS0Z7CJFY?list=PLH0GoQmA4BGUbl0UxgR65XPAcDO0O_jSu

地圖編輯器如何使用

https://www.bilibili.com/video/BV1v3411i73k/?spm_id_from=333.999.0.0


基本上,一個很好的教程列表可以在這里找:http://www.youtube.com/watch?v=oIyS0Z7CJFY&index=1&list=PLcQ9D-WW8z7EmVgv2lIokfciBLqQhF2Xi


總的來說,我建議以ns2地圖制作者的身份加入SCC組,因為它提供了一個很好的問題收集反饋,并如果你被卡在某個地方可以去官方Discord上尋求幫助。


動畫電影

注意:這有點像僅僅使用動畫編輯器的mod。我自己從來沒有真正使用過它,所以希望能找到其他人能補充這個話題。


建模

NS2支持max和fbx文件。Blender文件也將很快被支持添加

可以學(xué)習(xí)3DMAX.攪拌機的插件可以在論壇里獲得


紋理模塊

物競天擇2使用DDS來存儲它的紋理。所以,如果你想打開一個紋理來編輯它,你將需要一個能夠打開DDS文件的軟件。


然而,對于新紋理的最佳做法是將它們保存為PSD文件,并讓構(gòu)建器將它們轉(zhuǎn)換為DDS。


您可以使用的軟件:

??Paint.net (http://www.getpaint.net/)(對于PSD支持:https://psdplugin.codeplex.com/)

??gimp (http://www.gimp.org/)(對于對DDS的支持:https://code.google.com/p/gimp-dds/)

??(為DDS支持:下載免費的Nvidea紋理工具https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop)


編輯dds文件

https://www.bilibili.com/video/BV1SA411F7Q3/?spm_id_from=333.999.0.0


音效模塊

[更新里約熱內(nèi)盧的聲音圖:http://forums.unknownworlds.com/discussion/comment/2076854/#Comment_2076854使用最新的fmod軟件]


著色器模塊

注意:NS2使用HLSL著色器,所以你應(yīng)該在互聯(lián)網(wǎng)上找到足夠的指南來開始。


游戲代碼模塊

首先,你需要使用Lua來修改ns2的游戲代碼。


在本教程中,我不會解釋Lua!所以如果你不習(xí)慣Lua,我建議你讀這篇文章免費的Lua書(http://www.lua.org/pil/contents.html),然后你繼續(xù)閱讀本指南。


Spark還使用多個Lua虛擬機,所以在我們開始修改之前,了解這些虛擬機和它們做什么是很重要的。


LUA IDE(Lua語言編譯器)

如果您不確定要使用什么IDE,這里有一個簡短的列表(按受歡迎程度排序):

●?Intellij IDE(有EmmyLua 插件)

●?VSCode (帶有vscode-lua or emmylua 插件)

●?記事本++ (帶有 LuaC & GLua 插件)

●?Atom(帶有l(wèi)anguage-lua, 或linter & linter-glualint 插件)

●?Decoda IDE(包含在NS2火花引擎登錄器中)

●?ZeroBrainStudio (特別是這個分支: https://github.com/sclark39/ZeroBraneStudio/tree/master)

●?帶有l(wèi)ua插件的Eclipse

●?Sublime

●?...


LUA 虛擬機VMs

客戶端虛擬機,它將運行客戶端代碼和客戶端上的共享代碼

共享虛擬機VM-VM,它將比對預(yù)測服務(wù)器端與客戶端的操作,以平滑網(wǎng)絡(luò)延遲。

服務(wù)器端虛擬機,它將運行服務(wù)器端代碼和服務(wù)器上的共享代碼

加載正在加載屏幕的虛擬機。預(yù)緩存文件和啟動其他虛擬機。為主菜單加載的主菜單(當未連接到服務(wù)器時)


提示:此外,少量的UI元素(比如武器的彈藥計數(shù)器)也可以在它們各自的虛擬機vm中運行。

提示:服務(wù)器端的權(quán)限為最高總是高于用于預(yù)測的共享虛擬機。因此,客戶端會盡快糾正錯誤的預(yù)測。


服務(wù)器和客戶端虛擬機通過網(wǎng)絡(luò)消息相互通信,如前面關(guān)于Spark引擎的部分所述。

我們現(xiàn)在將忽略共享虛擬機VM,因為你只需要看它更高級的東西。


在這一點上,你做了一些需要被預(yù)測的事情,你將如此習(xí)慣于游戲代碼,你不再需要任何指導(dǎo)了:)


這意味著我們基本上有3個不同的Lua文件:


-?客戶端:Lua文件有一個“_Client”附錄。這些文件將在客戶端虛擬機VM上加載

-?服務(wù)器:Lua文件有一個“_Server”附錄。這些文件將在服務(wù)器虛擬機VM上加載。

-?共享:所有沒有附錄的Lua文件都是普通共享文件,將加載到客戶端和服務(wù)器端兩個虛擬機中


請注意,您不能訪問沒有在同一虛擬機VM中聲明的變量、對象或函數(shù),除非它們已聯(lián)網(wǎng)。


寫代碼

編碼步驟:

1.?首先要知道你想做什么。寫下你的mod的簡短概念。

2.?查找您將需要修改的普通類、方法、變量和文件。

3.?開始編碼(逐步進行)

4.?測試您的mod并調(diào)試它


為了在普通類中查找東西,我強烈推薦ns2文檔。您可以根據(jù)這個簡短的指南生成您自己的ns2文檔:http://forums.unknownworlds.com/discussion/112360/ns2docs/p1


或者只是使用我維護的ns2文檔鏡像:http://ns2docs.bplaced.net/

否則,只能使用IDE的搜索文件函數(shù)來查找在普通代碼中如何使用方法和變量。


也要記住引擎功能,它的文檔可以在/docs文件夾的ns2安裝文件夾中找到(.json格式)。

結(jié)合這些事情,你應(yīng)該很快就知道必須修改那些文件才能實現(xiàn)你想要的功能了。


如果你仍然不能實現(xiàn)你的代碼功能,可能是由于在普通的代碼中有的東西是隱藏的,可以去discord上尋求修改部分隱藏代碼的幫助。


當你概念化你的mod時,你也必須考慮如何將你的mod集成到普通文件中。

我將在本指南中介紹4種讓mod運行的方法。你所能接受到的是兩種方法,你可以修改添加完整的ns2文件或重載這些文件。


我現(xiàn)在將向您介紹基于它們所代表的什么類型的4種修改方式:


??文件替換

??只是替換和修改普通的文件

這是實現(xiàn)ns2mod最簡單的方法,因為你所要做的就是將給定的普通文件復(fù)制到mod文件夾中,并按照你喜歡的方式修改它。

但是這樣做,您將遇到與我已經(jīng)提到的被相同文件名替換的問題。

??game_setup.xml (游戲配置拓展文件):

該文件定義了每個LuaVM 虛擬機的起點,這意味著它定義了在啟動LuaVM虛擬機時加載了哪個Lua文件。通過將這些條目更改為您自己的文件,您可以完全修改spark火花引擎mod的加載順序。

這意味著您只需替換一個文件就可以創(chuàng)建一個完整的mod?;旧?,如果你想創(chuàng)造一個游戲,這就是正確的選擇。


提示:game_setup.xml還定義了在服務(wù)器列表中顯示的游戲模式名稱。

??文件添加:

??進入系統(tǒng):

通過編寫引導(dǎo)文件,您可以在所有普通文件都已經(jīng)完全加載后,再將設(shè)置文件加載到每個VM虛擬機中。

這允許您輕松地加載mod,并通過鉤子和表項覆蓋輕松地修改函數(shù)、變量和類。


欲了解更多細節(jié),請查看Modloader Gdoc


??Shine插件:

由許多ns2服務(wù)器運行的ShineMod基本上是一個框架,它通過插件提供了其他更加靈活的功能,可以由服務(wù)器管理員動態(tài)地啟用或禁用。

Shine會自動加載安裝在lua/Shine/擴展文件夾中的所有插件。

因此,使用shine核心框架,您可以通過編寫shine插件輕松擴展ns2


這樣做的好處是,您可以使用完整的shine框架和所有的shine庫,這允許您更快地寫功能,而無需考慮如何讓功能運行。

更多的細節(jié)可以在這里找到:https://github.com/Person8880/Shine/wiki#for-developers


引擎事件鉤

除了連接到lua函數(shù)之外,您還可以通過事件向某些引擎事件添加鉤子。鉤子(字符串鉤子名稱,函數(shù)鉤子函數(shù))是創(chuàng)建mod的最重要的引擎特性之一。

下面是最常用的引擎掛鉤的一個簡短的列表:


??服務(wù)器虛擬機事件

??“客戶端連接”-呼叫連接連接的客戶端

??“客戶端斷開連接”-調(diào)用連接與斷開連接的客戶端

??“加載地圖后”-在完成加載地圖后調(diào)用鉤子

??“加載地圖前”-在開始加載地圖之前調(diào)用鉤子

??“映射實體”-在映射實體時使用類名、組名和值

??“更新服務(wù)器”-調(diào)用連接每個服務(wù)器的提示符


??客戶端虛擬機事件

??“更新客戶端”-呼叫連接每個客戶端提示

??“加載地圖后”-在完成加載地圖后調(diào)用鉤子

??“客戶端斷開連接”——在客戶端與服務(wù)器斷開連接后調(diào)用鉤子


網(wǎng)絡(luò)消息

由于您不能從客戶端對服務(wù)器端的變量進行訪問,而另一方面,您必須共享兩者都需要的值,對吧?這是通過網(wǎng)絡(luò)消息來完成的。


您可以使用Shared設(shè)置網(wǎng)絡(luò)消息。注冊寄存器網(wǎng)絡(luò)消息(字符串消息名稱,表參數(shù))

在參數(shù)表中,您必須為每個表條目定義一個類型,例如:



本地參數(shù)={

間隔1=“整數(shù)(0到10)”,

浮動1=“浮點(0到1乘0.05)”,

字符串1=“字符串(255)”,

布爾1=“布爾”

}


發(fā)送您在客戶端和服務(wù)器端上使用的網(wǎng)絡(luò)消息。發(fā)送網(wǎng)絡(luò)消息(客戶端目標、字符串消息名稱、表數(shù)據(jù)、布爾可靠)(可靠定義服務(wù)器是否應(yīng)確??蛻舳耸盏较ⅲ┖涂蛻舳丝蛻舳?。發(fā)送網(wǎng)絡(luò)消息(字符串消息名稱、表數(shù)據(jù))。


如果您想向服務(wù)器上的所有客戶端發(fā)送消息,您可以簡單地使用

服務(wù)器。發(fā)送網(wǎng)絡(luò)消息(字符串消息名稱、表數(shù)據(jù)、布爾值的可靠性)。


對于接收網(wǎng)絡(luò)消息,我們再次使用引擎鉤子函數(shù),稱為服務(wù)器。連接網(wǎng)絡(luò)消息(字符串消息名稱、函數(shù)連接函數(shù)(客戶端、消息表))或客戶端。連接網(wǎng)絡(luò)消息(字符串消息名,函數(shù)連接函數(shù)(客戶端,消息表))


控制臺命令

您可能希望使用控制臺命令。這些也只是另一個引擎事件鉤子


假設(shè)你想鉤子到sv_hello輸出“你好”,你所需要做的就是使用事件。鉤(“Console_sv_hello”,函數(shù)命令([客戶端],arg1、arg2、...))

Let’s say you want to hook into sv_hello to print out “hello” all you need to do is use Event.Hook(“Console_sv_hello”, function Command( [Client], arg1, arg2, … ) )


客戶端只在服務(wù)器上傳遞,傳遞的參數(shù)是在命令后面以空格分隔而給出的字符串。


混合器

它們在ns2代碼中起著核心作用,并且是獨特的SparkLua結(jié)構(gòu),這使得它們一開始很難理解。我經(jīng)常稱它們?yōu)椤耙褜崿F(xiàn)的接口”,因為這基本上是它們的設(shè)計智慧。每個Mixin都可以擴展給定類的功能,而不干擾類方法或其他混合方法。


有時唯一的缺點是,如果兩個混合物都被附加到同一個類上,你就不能正確地說出使用相同名稱的mixin方法。當然,這也可以用于偵聽某些方法的調(diào)用。


關(guān)于這個話題,非常有趣的是下面的視頻, Dushan 試圖獨自進一步解釋混合器的概念:https://www.youtube.com/watch?v=EQhlp6rCrY8


示例代碼項目“Zombie”

好吧,目前這樣的理論已經(jīng)足夠了。我現(xiàn)在將使用這個小mod項目向您展示編碼mod是如何工作的。我會用我之前給你展示的所有mod方式來實現(xiàn)這個mod。

在我們開始之前,我們需要一個關(guān)于我們的小mod的概念。


我決定為這個教程制作一個小的僵尸模式mod。

基本游戲玩法:


異形作為僵尸,每個陸戰(zhàn)隊員如果被僵尸殺死都會變成僵尸。

在還沒開始的時候,玩家只能加入陸戰(zhàn)隊,如果有超過一定數(shù)量的陸戰(zhàn)隊玩家加入,我們就會選擇一定數(shù)量的玩家來扮演僵尸。


隨著游戲的開始,我們將建好地圖上的所有電源節(jié)點,如果一個電源節(jié)點被摧毀(沒有應(yīng)急燈),我們將把房間完全弄黑


游戲?qū)⒃谝欢〞r間內(nèi)如果陸戰(zhàn)隊沒有全部變成僵尸則陸戰(zhàn)隊員獲勝,否則如所有陸戰(zhàn)隊員都被變成僵尸,則僵尸獲勝

如果一個僵尸被殺死,它會在一段短暫的延遲后重生。

個人資源點=均衡分數(shù)點

僵尸應(yīng)該在開始的時候就比陸戰(zhàn)隊員更強大一些。僵尸會根據(jù)陸戰(zhàn)隊的死亡而獲得分數(shù)

陸戰(zhàn)隊的生存時間和僵尸死亡都可以獲得分數(shù)。


陸戰(zhàn)隊應(yīng)該能夠按B鍵打開購買菜單以購買新武器。

這個概念還不夠完美,但它應(yīng)該足以編寫一個基本的ns2mod。

所以,讓我們來看看我們將需要修改或改變什么。


因為這將是一種游戲模式的mod,我們將無法在不改變NS2游戲玩家類的情況下創(chuàng)建它,它基本上管理著所有的游戲回合邏輯。


所以我們需要改變檢查回合開始和結(jié)束的函數(shù)。查看ns2游戲子項的ns2文檔頁面

http://ns2docs.bplaced.net/ns2docs/tables/NS2Gamerules/index.html我們可以很容易地發(fā)現(xiàn)NS2游戲:檢查啟動()和NS2游戲:檢查啟動()

we can easily spot NS2Gamerules:CheckGameStart() and NS2Gamerules:CheckGameEnd()


接下來,我們需要避免任何人加入異形隊伍,而不是直接把他們和我們的mod放在那里。

如果你再看NS2游戲的ns2文檔頁面,你會看到它也通過NS2游戲處理團隊加入(玩家,加入的隊伍編號,強制)。

If you look again at the ns2docs page of NS2Gamerules you see that it also handles team joins via NS2Gamerules:JoinTeam(player, newTeamNumber, force).



游戲開始的代碼會隱藏在NS2游戲玩家類中。有一個NS2游戲規(guī)則:SetGame啟動了(),但正如它之前的評論所說,它似乎只是為了測試的原因才存在。

The game start code is a bit hidden in the NS2Gamerules class. There is a NS2Gamerules:SetGameStarted() but as the comment in before it say it seems to be only there for test reasons.



但是,即使這個函數(shù)沒有在普通的ns2中被使用,它也會幫助我們,如果我們看看它調(diào)用ns2玩家的代碼:Set游戲狀態(tài)(k游戲狀態(tài)。已啟動)。

But even if that function doesn't get used in vanilla ns2 it helps us as we see if we look at the code that it calls NS2Gamerules:SetGameState( kGameState.Started).



看看這個方法,我們找到了一個關(guān)于k游戲狀態(tài)的如果檢查。開始,其中包括“真正的”開始游戲呼叫。所以我們需要添加我們的開始游戲的內(nèi)容。

Looking at that method we find an if check for kGameState.Started which includes the “real” start game calls. So we need to add there our Start Game stuff.



我們現(xiàn)在如何把一個陸戰(zhàn)隊員變成一個異形?只是把死后的陸戰(zhàn)隊員放進了異形的隊伍。讓我們來看看人類頁面的子項有什么http://ns2docs.bplaced.net/ns2docs/tables/Marine/index.html



哦,找到了“kill”指令,向我們展示了有一個陸戰(zhàn)隊員:OnKill(攻擊者,行動者,指向,方向)的方法。完美!

Oh look searching for “kill” shows us that there is a Marine:OnKill(attacker, doer, point, direction) method. Perfect!


這已經(jīng)足夠了,現(xiàn)在我們可以在做剩下的事情之前先從核心內(nèi)容開始了。

That's enough by now we can start with the core stuff before doing the rest.


譯:祖莉ZulyHiroky? ?校準、編輯:StriteR.

【物競天擇2】NS2-MOD 制作指南的評論 (共 條)

分享到微博請遵守國家法律
东兴市| 方山县| 温宿县| 巍山| 都匀市| 沧州市| 登封市| 峨边| 徐州市| 拉萨市| 正镶白旗| 渝中区| 余姚市| 涿州市| 上栗县| 治县。| 密云县| 双流县| 吉首市| 马龙县| 阳春市| 长宁区| 象州县| 鄂托克前旗| 青阳县| 宣威市| 福建省| 佛冈县| 濉溪县| 绥滨县| 谷城县| 泽州县| 昭苏县| 全南县| 平湖市| 山阴县| 杭锦旗| 砚山县| 南充市| 漳浦县| 岗巴县|