• <strike id="ykw6o"><rt id="ykw6o"></rt></strike>
    <fieldset id="ykw6o"><menu id="ykw6o"></menu></fieldset>
    <strike id="ykw6o"></strike>
    <fieldset id="ykw6o"><input id="ykw6o"></input></fieldset>
    <tfoot id="ykw6o"></tfoot>
  • <strike id="ykw6o"></strike>
    13888888888
    當前位置:杰姆小屋  -  本地文章  -  今日頭條

    守望先鋒地圖工坊教學(守望先鋒地圖工坊入門教程)

    2023/6/30 20:13:13

    評論:0

    瀏覽量:212

    本文的目的是從0開始到入門。如果你已經理解了地圖工坊是怎么回事了,那么本文可能對你幫助并不大。


    我們先用幾個問題來“揭開”地圖工坊神秘的“面紗”:


       地圖工坊是什么?它是一個功能更多的自定義模式。

       地圖工坊能做什么?現階段,它可以做一些很有意思的玩法,相信你已經體驗過地圖工坊的作品了。

       地圖工坊不能做什么?它不能脫離游戲的基本框架,例如OW限制了只能有12個玩家,地圖工坊并不能讓你的房間能塞更多人。現階段它也不能替換模型,不能改變地形。

       地圖工坊在哪里?它不難找,新建一個自定義房間,打開設置,你就會發現一個大大的“地圖工坊”按鈕。地圖工坊所有的設置就在這里面了。


    什么是規則


    地圖工坊是由很多條“規則”組成的。規則是什么?你可以把它看做是一條一條的“條例”。當“規則”該被運行的時候,它就會被運行。


    舉個例子:在生活中,如果你上班遲到了,那么老板就會扣你工資。當你早上鬧鈴響了,那么你就應該起床了。這些都是生活中的“規則”。


    規則由三個部分組成:事件,條件和動作。還是上面的例子,當你上班遲到,并且今天不是休息日的話,那么老板就會扣你工資。這條“規則”中,“上班遲到”是事件,“今天不是休息日”是條件,“扣工資”則是動作。


    那在游戲里怎么體現呢?例如,我們知道,DVA的核爆會對一定范圍內的敵人造成傷害,那么,“機甲爆炸”是事件,“玩家在爆炸范圍內,且玩家和DVA是敵對關系”是條件,“造成傷害”則是動作。(PS:這里只是用“機甲爆炸”舉例子,讓你明白事件、條件、動作之間的關系)


    總而言之,規則即是:當某件事(事件)發生,且條件滿足時,就做一些動作。


    編寫規則


    相信你已經知道“規則”是什么了,那么,接下來,我們就通過“規則”做一件簡單的事:讓玩家每次受傷時,回復10生命值。


    過程其實很簡單:玩家受傷→回血。那么相應的規則應該是什么樣?


    通過翻閱事件列表,我們發現有一個事件剛好合適:玩家受到傷害。那么我們就用它作為事件了。


    我們并沒有什么特別的要求,所以不需要“條件”。


    動作是給玩家回血。我們應該用什么動作?通過翻閱文檔,我們發現了一個“治療”的動作。它需要選擇幾個東西:


       玩家

       治療者

       治療量


    “玩家”就是這個動作的目標,即給誰治療。我們怎么讓游戲知道,治療的目標是受傷的玩家呢?我們可以使用“事件玩家”。顧名思義,“事件玩家”指的是觸發事件的玩家。我們在上面使用了“玩家受到傷害”事件,那么,在這里“事件玩家”指的就是受到傷害的那個玩家。類似的,如果我們使用“玩家陣亡”作為事件,那么就可以用“事件玩家”來代指陣亡的那個玩家。


    在本例中,治療者是誰并不重要,所以我們選擇“無”就行了。


    最后,我們設定的治療量是10點,所以我們選擇“數字”,然后輸入10。


    變量


    沒接觸過編程的朋友可能會覺得這個東西有一些難以理解。但它并沒有想象中那么難。我們可以用數學來理解它。


    例如我們有一個等式:y=x+1。在數學上,我們把x叫做自變量:當我們放入不同的x時,y就不一樣。我們的“方程”只是定義了一個從x到y的過程。


    在我們上面的例子中,我們有一條動作:給事件玩家治療10點生命值。這里面,“事件玩家”是一個變量——因為觸發事件的玩家可以有很多個。過程是給玩家治療。而10我們一般把它叫做“常量”——因為它不會變,無論是哪個玩家受傷了,治療量都是10。


    當然了,這只是變量最基本的概念。其實變量就像一個“盒子”,我們可以把東西放進去,也可以把里面的東西拿出來。


    在OW中,變量和常量統稱叫“值”。


    實現“冰凍彈”


    現在我們來寫一點更復雜的規則。我們希望讓麥克雷的子彈變成“冰凍彈”——被麥克雷打中的玩家,就會被冰凍住1秒。


    同樣的,我們先想一想過程:玩家被麥克雷打中→把玩家凍住。


    我們發現“事件”并沒有“被麥克雷打中”的事件。怎么辦?這時候就該讓“條件”出馬了。被麥克雷打是受到傷害的一種,所以“事件”我們可以繼續用“玩家受到傷害”。但是我們有一個附加條件:傷害的來源應該是一名麥克雷玩家。


    我們翻閱文檔,找到“攻擊方”可以代指傷害來源。但我們應該直接拿它來做比較嗎?仔細想想,“玩家使用的是麥克雷”比較的應該是英雄,而不是玩家。因此,我們繼續找找怎么知道玩家用的什么英雄。最后,我們找到了“英雄”這個選項。條件便是:英雄(攻擊方) == 英雄(麥克雷)


    注意:等號的左右兩邊一定要是相同類型的,即類似事件玩家 == 英雄(麥克雷)是不正確的,因為左邊是玩家,右邊是英雄。正確的寫法是英雄(事件玩家) == 英雄(麥克雷)


    動作應該是什么?“冰凍”是官方提供的狀態之一,我們可以直接使用“設置狀態”。


       玩家

       助攻者

       狀態

       持續時間


    “玩家”和上面一樣,使用“事件玩家”即可。助攻者即為“攻擊方”。狀態是“凍結”。“持續時間”輸入“1”。


    兩個“特殊”的事件


    通過上面的內容,我們已經知道了規則是什么,以及基本都規則編寫。但你發現,“事件”只有非常少的幾項。如果我們要做一些其他功能,例如,我們想讓玩家重生后馬上將他移到某個位置,無論是受到、造成傷害事件,還是陣亡事件,都不能滿足要求。這時候,就需要用到持續事件+條件了。


    持續事件和其他的事件都不太一樣。其他事件都是“當這件事發生時”,而持續事件則是“我會一直等著,直到條件滿足”。


    例如,我們可以用“存活”來判斷玩家陣亡與否。而結合我們上面所說的持續事件,我們可以寫出這樣的規則:


       事件:持續 - 每名玩家

       條件:存活(事件玩家) == 真


    這是什么意思呢?根據上面的介紹,我們把它“翻譯”過來,就是:一直等,直到玩家活著的時候,就做下面的動作。


    官方文檔中有這樣的解釋:“當首次檢查就滿足條件時,則會執行行動。當未滿足條件列表,但之后又滿足時,則會嘗試再次執行行動”。


    因此,我們上面的規則,實際上就是:當玩家陣亡的時候,游戲就會等——等到玩家復活,然后做相應的動作。之后玩家又陣亡了,游戲又會繼續等。不斷重復上述的過程。


    類似的,我們現在要編寫一個規則,能響應不在地板上的玩家按互動鍵(F),那么我們就可以這樣寫


    事件:


    * 持續 - 每名玩家


    條件:


    * 在地面上(事件玩家) == 假


    * 按鈕被按下(事件玩家, 互動) == 真


    動手做一個模式


    通過上面的文章,我們已經知道了如何編寫規則。但相信你還不知道如何編寫一個簡單的玩法。不知道大家是否玩過有“守望傳火”之稱的“燙手山芋”模式?這里,我們就以此模式為例子。(如果沒玩過的朋友可以在[這里]體驗)


    注意:因為本文是一篇教程文章,所以不會完整覆蓋整個游戲模式。


    傳火


    我們想想這個模式是怎么玩的?帶著“火”的玩家通過攻擊別的玩家(不論是何種方式),就可以把“火”傳給別人。


    那么,這個過程用規則怎么描述?我們可以這樣說:當一名玩家受到傷害,并且他自己沒有火,但是攻擊他的玩家有火的時候,就把火傳給這名玩家。


    從上面的描述不難看出,我們應該選擇“玩家受到傷害”事件。但是,我們如何知道玩家有沒有“火”呢?不知道大家是否記得艾什的“延時雷管”——我們可以用點燃狀態來表示火。通過翻閱手冊,我們可以找到“具有狀態”和“設置狀態”、“清除狀態”幾個東西。這樣,我們就可以把條件組合出來。


    條件是受傷的玩家沒有火,而攻擊方有火。因為我們使用了“玩家受到傷害”事件,因此,我們使用“事件玩家”表示前者,“攻擊方”表示后者。條件便是:


       具有狀態(事件玩家, 點燃) == 假

       具有狀態(攻擊方, 點燃) == 真


    動作是把火“傳給”另一名玩家。“傳”的過程,又分為一名玩家“失去”火,和一名玩家“得到”火。因此,規則有兩條:


    * 設置狀態(事件玩家, 無, 點燃, 9999)


    * 清除狀態(攻擊方, 點燃)


    另外,“點燃”只是效果——能看不能用,所以,我們還得再加上一個“傷害”的動作:


    * 開始持續傷害(事件玩家, 無, 9999, 50)


    * 設置玩家變量(事件玩家, A, 上一個持續傷害效果ID)


    * 停止持續傷害(玩家變量(攻擊方, A))


    這里我們用到了變量。大家可以結合上面的變量小節,想一想為什么要這樣做。(PS:你可以把變量想象成一個“盒子”,設置就是往“盒子”里放東西)


    最終的規則如圖所示:


    加分


    俗話說“萬事開頭難”。既然我們已經把最基本的東西做出來了,那么我們就可以做下一個東西了:勝利判斷。我們的邏輯是:剩下一名玩家的時候,就給這名玩家加一分。


    我們不知道什么時候會剩下一名玩家——可能是某位玩家死亡后,但也可能是某位玩家退出游戲后。我們沒辦法確定到底是什么時候,但我們條件非常清楚:只剩下一名活著的玩家。因此,我們使用持續事件+條件來做這件事。我們翻閱手冊,可以找到一個叫做“存活玩家數量”的值。我們直接使用它:


       事件:持續 - 全局

       條件:存活玩家數量(所有隊伍) == 1


    而我們要做的,就是給他加一分。我們在手冊中找到一個叫“所有存活玩家”的內容,但注意:它是一個數組。因為游戲中可能有很多玩家存活,也可能一個都沒有。游戲沒有那么智能,它并不知道我們的規則一定只有一個玩家。因此,我們需要使用“數組中的值”:


       修改玩家分數(數組中的值(所有存活玩家(所有隊伍), 0), 1)


    接下來,我們要復活所有玩家,開始一局新的比賽:


       重生(所有玩家(所有隊伍))


    最終的規則如圖所示:


    隨機傳火


    現在大體框架已經有了,但是,我們還沒處理一些特別的情況:例如,當玩家死亡時,或者玩家退出游戲,導致“火”不見了的時候,我們需要將“火”隨機給一名玩家。和上面一樣,我們使用持續事件+條件。


    我們的條件應該是,當所有玩家都沒有火的時候。換句話說,就是有火的玩家數量=0的時候。游戲并不能直接獲取到有火的玩家,但我們可以利用“已過濾的數組”來做到這一點:我們從所有存活玩家里,篩選出有火的玩家,不就可以了?


    換成條件,就應該這樣寫:數量(已過濾的數組(所有存活玩家, 具有狀態(當前數組元素, 被點燃))) == 0。(如果這條規則你不太看得懂,請嘗試把括號拆開,從里到外,結合手冊,一點一點看)


    動作則是從存活玩家里面,隨機選擇一個玩家,讓他有“火”。同樣的,我們又要用到“數組”了:


       設置全局變量(A, 數組隨機取值(所有存活玩家(所有隊伍)))

       設置狀態(全局變量(A), 點燃)

       開始持續傷害(全局變量(A), 無, 9999, 50)

       設置玩家變量(全局變量(A), A, 上一個持續傷害效果ID)


    最終規則如下:


    修復問題:死亡掉火


    現在邀請幾個好友,或者多開賬號進入游戲。開始一局游戲。你們愉快的傳火中,有一名玩家陣亡了。但是,你們發現,“火”并沒有傳給下一個人。房主打開“地圖工坊查看器”一看,哎?隨機傳火的規則怎么沒有運行呢?


    原來,死亡是不會自動掉火的,我們還需要手動處理它:


    * 事件:玩家陣亡


    * 具有狀態(事件玩家, 點燃) == 真


    “掉火”其實就是把狀態去掉,所以動作也很簡單,基本上就是上面的規則復制粘貼:


    * 清除狀態(事件玩家, 點燃)


    * 停止持續傷害(玩家變量(事件玩家, A))


    最終規則如下:


    總結


    通過幾條規則,我們就寫出了一個簡單的“燙手山芋”模式。相信你也發現了,這并不是什么難事。你需要的,只是把一件事變成一件件小事,然后用規則來完成它。

    評論 
    還沒有人評論此條信息!
    發布評論:
    評論內容:
    13888888888
    • Q Q: 892340404
    • 微信:
    微信公眾號
    微信小程序
    Copyright © 2025 “杰姆小屋”版權所有  |  ICP證:京ICP備2022032254號-1  |  技術支持:框分類信息系統(v2023.1)  |  
    網頁內的所有信息均為用戶自由發布,交易時請注意識別信息的虛假,交易風險自負!網站內容如有侵犯您權益請聯系我們刪除,舉報信息、刪除信息聯系客服
    亚洲人成网站看在线播放| 国产乱辈通伦影片在线播放亚洲| 精品亚洲视频在线观看 | 亚洲综合丁香婷婷六月香| 久久亚洲精品人成综合网| 久久亚洲精品成人| 亚洲av中文无码乱人伦在线r▽| 亚洲乱码中文字幕久久孕妇黑人| 国产亚洲精品看片在线观看 | 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲毛片基地日韩毛片基地| 亚洲理论片中文字幕电影| 亚洲国产超清无码专区| 亚洲一卡2卡4卡5卡6卡残暴在线| 久久精品国产亚洲AV久| 亚洲一卡2卡三卡4卡无卡下载 | 国产亚洲人成无码网在线观看 | 亚洲第一精品福利| 久久亚洲日韩看片无码| 亚洲最大中文字幕无码网站| 精品丝袜国产自在线拍亚洲| 亚洲一级黄色大片| 亚洲色无码专区一区| 色婷婷六月亚洲综合香蕉| jizzjizz亚洲| 亚洲精品一级无码中文字幕| 国产亚洲成人在线播放va| 国产亚洲精品一品区99热| 亚洲精品国产成人99久久| 亚洲精品亚洲人成在线麻豆| 亚洲人成电影在线观看青青| 亚洲最大的成人网站| 国产成人综合亚洲| 在线精品亚洲一区二区小说| 亚洲av无码成h人动漫无遮挡 | 亚洲福利视频网站| 亚洲综合色一区二区三区| 久久精品熟女亚洲av麻豆| 亚洲日韩在线观看免费视频| 亚洲精品中文字幕无码蜜桃| 久久亚洲精品国产精品|