天堂123分類:天堂123新手區 天堂123玩家分享 天堂123私服技巧 天堂123架設教學 返回天堂123首頁
您当前位置: 天堂123 > 天堂架設 > 私服傳送師執行行動分析

私服傳送師執行行動分析

2022/7/14

以下分析使用銀騎士村莊的麥特(傳送師)來做分析修改範例。
可見該NPC第一頁對話檔內有我想要到其他村莊黃色字體,點擊後會對話框會顯示第二頁的對話檔內容。


1.使用名稱找尋:
進入資料庫搜尋spawnlist_npc的location為麥特。
透過npcid去搜尋對應的行動。
資料庫搜尋npcaction的npcid為50056。
最終可以取得對話檔名稱為telesilver1。
SELECT * FROM spawnlist_npc WHERE location = '麥特'
-- 50056
SELECT * FROM npcaction WHERE npcid = 50056
-- telesilver1

-- telesilver2
-- telesilver3

2.使用抽檔程式抽檔:
使用抽檔工具去看telesilver1對話檔。
以下為telesilver1對話檔的內容,對應麥特的對話框第一頁的內容。

透過抽檔工具匯出該對話檔`telesilver1-c.html。
3.查看對話檔:
以下使用編輯器去開啟。

<body>
<font fg=ffffff><p align=left>魔法師 麥特:</p></font>
<br>
你好,我是從歐瑞'象牙塔'派到這裡來的魔法師麥特。<br>
<br>
象牙塔為了用魔法來做公益,因此做了很多事情。
而我負責的就是幫忙傳送到其他地區去。
請問你有想要去的地方嗎?<br>
 <br><br>
<a action="teleportURL">我想要到其他村莊</a><br>
<a action="teleportURLL">我想要到狩獵區</a><br>
</body>
這邊來針對我想要到其他村莊的內容分析。
可見使用<a>標籤,且action屬性的值為teleportURL。
所以在伺服器端會收到teleportURL這個字串做判斷對應。
4.分析XML檔:
透過搜尋teleportURL關鍵字,開啟檔案。
data/xml/NpcActions/Teleporter.xml
可以發現針對NpcId="50056"的以下內容。
<!--銀騎士村莊-->
<!--麥特 / 肯特村莊-->
<Action Name="teleport silver-kent" NpcId="50056">
<Teleport X="33050" Y="32782" Map="4" Heading="5" Price="55" />
</Action>
<!--麥特 / 風木村莊-->
<Action Name="teleport silver-woods" NpcId="50056">
<Teleport X="32640" Y="33203" Map="4" Heading="5" Price="55" />
</Action>
<!--麥特 / 海音村莊-->
<Action Name="teleport silver-heine" NpcId="50056">
<Teleport X="33612" Y="33257" Map="4" Heading="5" Price="55" />
</Action>
<!--麥特 / 古魯丁村莊-->
<Action Name="teleport silver-gludin" NpcId="50056">
<Teleport X="32608" Y="32734" Map="4" Heading="5" Price="132" />
</Action>
<!--麥特 / 奇岩村莊-->
<Action Name="teleport silver-giran" NpcId="50056">
<Teleport X="33438" Y="32796" Map="4" Heading="5" Price="132" />
</Action>
<!--麥特 / 亞丁城鎮-->
<Action Name="teleport silver-aden" NpcId="50056">
<Teleport X="33965" Y="33253" Map="4" Heading="5" Price="132" />
</Action>
<!--麥特 / 燃柳村莊-->
<Action Name="teleport silver-willow" NpcId="50056">
<Teleport X="32715" Y="32448" Map="4" Heading="5" Price="198" />
</Action>
<!--麥特 / 威頓村莊-->
<Action Name="teleport silver-werldern" NpcId="50056">
<Teleport X="33709" Y="32500" Map="4" Heading="5" Price="198" />
</Action>
<!--麥特 / 貝希摩斯村莊-->
<Action Name="teleport silver-behemoth" NpcId="50056">
<Teleport X="32779" Y="32887" Map="1001" Heading="5" Price="198" />
</Action>
<!--麥特 / 希培利亞村莊-->
<Action Name="teleport silver-silveria" NpcId="50056">
<Teleport X="32841" Y="32856" Map="1000" Heading="2" Price="246" />
</Action>
<!--麥特 / 歐瑞村莊-->
<Action Name="teleport silver-oren" NpcId="50056">
<Teleport X="34062" Y="32278" Map="4" Heading="5" Price="246" />
</Action>
<!--麥特 / 正義神殿-->
<Action Name="teleport silver-lowful" NpcId="50056">
<Teleport X="33118" Y="32933" Map="4" Heading="5" Price="330" />
</Action>
<!--麥特 / 邪惡神殿-->
<Action Name="teleport silver-chaos" NpcId="50056">
<Teleport X="32885" Y="32652" Map="4" Heading="5" Price="330" />
</Action>
<!--麥特 / 肯特葡萄園-->
<Action Name="teleport silver-grape" NpcId="50056">
<Teleport X="32871" Y="32805" Map="4" Heading="5" Price="330" />
</Action>
<!--麥特 / 說話之島-->
<Action Name="teleport silver-island" NpcId="50056">
<Teleport X="32583" Y="32924" Map="0" Heading="5" Price="770" />
</Action>
<!--麥特 / 狄亞得要塞-->
<Action Name="teleport silver-diad" NpcId="50056">
<Teleport X="32828" Y="32900" Map="320" Heading="5" Price="7480" />
</Action>
<!--顯示金額-->
<ShowHtml Name="teleportURL" HtmlId="telesilver2" NpcId="50056">
<Data Value="55" /><!--肯特村莊-->
<Data Value="55" /><!--風木村莊-->
<Data Value="55" /><!--海音村莊-->
<Data Value="132" /><!--古魯丁村莊-->
<Data Value="132" /><!--奇岩村莊-->
<Data Value="132" /><!--亞丁城鎮-->
<Data Value="198" /><!--燃柳村莊-->
<Data Value="198" /><!--威頓村莊-->
<Data Value="198" /><!--貝希摩斯村莊-->
<Data Value="246" /><!--希培利亞村莊-->
<Data Value="246" /><!--歐瑞村莊-->
<Data Value="330" /><!--正義神殿-->
<Data Value="330" /><!--邪惡神殿-->
<Data Value="330" /><!--肯特葡萄園-->
<Data Value="770" /><!--說話之島-->
<Data Value="7480" /><!--狄亞得要塞-->
</ShowHtml>
5.使用抽檔程式抽檔:
使用抽檔工具去看telesilver2對話檔。
以下為telesilver2對話檔的內容,對應麥特的對話框第二頁的內容。

透過抽檔工具匯出該對話檔`telesilver2-c.html。
6.查看對話檔:
以下使用編輯器去開啟。

<body>
<font fg=ffffff><p align=left>魔法師麥特:</p></font>
<br>
可以從這個地方送過去的村莊以及花費費用如下。<br>
要去哪個村莊呢?<br>
<br><br>
<a action="teleport silver-kent">肯特: <var src="#0"> 金幣</a><br>
<a action="teleport silver-woods">風木: <var src="#1"> 金幣</a><br>
<a action="teleport silver-heine">海音: <var src="#2"> 金幣</a><br>
<a action="teleport silver-gludin">古魯丁: <var src="#3"> 金幣</a><br>
<a action="teleport silver-giran">奇岩: <var src="#4"> 金幣</a><br>
<a action="teleport silver-aden">亞丁: <var src="#5"> 金幣</a><br>
<a action="teleport silver-willow">燃柳: <var src="#6"> 金幣</a><br>
<a action="teleport silver-werldern">威頓: <var src="#7"> 金幣</a><br>
<a action="teleport silver-behemoth">貝希摩斯: <var src="#8"> 金幣</a><br>
<a action="teleport silver-silveria">希培利亞: <var src="#9"> 金幣</a><br>
<a action="teleport silver-oren">歐瑞: <var src="#10"> 金幣</a><br>
<a action="teleport silver-grape">肯特葡萄園: <var src="#11"> 金幣</a><br>
<a action="teleport silver-island">說話之島: <var src="#12"> 金幣</a><br>
<a action="teleport silver-diad">狄亞得要塞?: <var src="#13"> 金幣</a><br>
<a action="teleport silver-cave">沉默洞穴: <var src="#14"> 金幣</a><br>
</body>
觀察到action與上方XML內容的Action Name是相呼應的,並對應Teleport傳送的做標位置和地圖…等等資訊。
觀察到var src與上方XML內容的Data Value是相對位置對應,代表顯示傳送的金額。
其他
關於程式碼的部分請自行分析,非此篇重點<請自行閱讀程式碼>。