夢幻西遊出神入化新資源提取 梦幻西游素材提取

本文來自互聯網

之前有人問我新出的錦衣是否是在shape.wd8資源包內,但是分析之後發現資源是以3D模型的形式存放在r3d.npk內的。雖然去年夏天簡單分析過.gim模型格式,但要我把它渲染的跟夢幻裏一樣效果還是有些難度的,畢竟我也只是剛剛導出了T-Pose模型而已。
前幾天又看到了別人的留言,大家還在為提取新資源而頭疼。既然如此,那麼何不嘗試提取一下,也小小的滿足一下自己的好奇心。

問題切入點
負責渲染的程序xyqsvc.exe是如何將渲染好的圖片傳給客戶端程序my.exe使用的?

最開始時,我以為xyqsvc.exe將渲染好的圖片存放在v3d_cache目錄下的文件內,然後my.exe讀取這個文件。但仔細一想,多個程序對同一個文件同時讀寫,還要同步,這幾乎是不可能的。而且使用FileMon監視文件讀寫,發現my.exe是根本不讀取這些文件的。之後的分析顯示,v3d_cache下的v3d.hdr和v3d.dat只是xyqsvc.exe的緩存文件,是為了方便下次使用而保存的。傳送圖片的真正辦法是內存共享。(查找內存共享時看到了雲風哥對這個技術的介紹,證明我的分析是基本正確的。出乎我的意料的是,xyqsvc.exe是多個客戶端共享的)

言歸正傳,既然渲染好的圖片緩存下來了,那麼必定是可以提取的。(其實不緩存也可以在內存裏截取,但涉及的問題就要復雜許多)

下面把我分析的 v3d.hdr 和 v3d.dat 的格式寫出來,全當是做個備忘吧。


v3d.hdr 的格式分析

文件開頭是一個
typedef struct {
unsigned long flag; // 'v3dh'
unsigned long version; // 0x10005 等,版本很多
unsigned long offset; // 索引表所在的地址
} v3dh_file_header;

跳轉到v3dh_file_header.offset後是
long v3dd_size; // v3d.dat 的大小(以字節為單位)
long v3dh_index_size; // v3dh 索引表的大小(以字節為單位)
接著是一片(就是數組啦)
typedef struct {
long offset1; // 見後面說明
long offset2; // 同上
long linker; // 與此索引相關聯的索引編號(從零開始計數)
} v3dh_index;

v3dh_index.offset1 所指內容的格式
unsigned char size; // 這部分數據的大小,不包含這一字節
unsigned long var1; // 未知
unsigned long var2; // 裝備調色板信息
unsigned long var3; // 武器調色板編號
unsigned long var4; // 未知(實際是一個鏈表,目前見到的都是NULL)
unsigned long var5; // 指向名稱信息,開頭1字節總是0,想不明白
unsigned char Ext[235]; // 最長為 235 ,具體數值根據 size 判斷

以上變量中 var2 var4 var5 均為實際相對 var1 的偏移量。
如果 var2 為零,那麼對應的調色板為 ("mypal/weapon\%d.pal", var3)
如果 var2 不為零,那麼它指向如下結構:
typedef struct {
short num1;
short count;
short num2[count];
};
這個結構的含義不是非常清楚,目前見到的例子中,count總是1,這裏只對這種情況說明。
如果 num2[0] 中的高3位不為零,即 (num2[0] & 0xE000) != 0時,對應的調色板為 ("mypal/equip\%d.pal", num2[0])
否則,對應的調色板為 ("mypal/equip\%d_%d.pal", num2[0], num1)

v3dh_index.offset2 所指內容的格式
與 offset1 相比,這個就簡單的太多了。
long frameCount;// 幀數
long dirCount; // 方向數
long dat_offset_list[frameCount*dirCount]; // 每一幀數據在 v3d.dat裏的地址

mypal.wdf 中 .pal 文件的格式
unsigned long flag; // '.pal'
unsigned short palCount; // 調色板顏色數(目前見到的都是256)
unsigned short sectionCount; // 分段數目(從邏輯上來說 sectionCount要麼等於零,要麼大於等於二)
unsigned char sectionSize[sectionCount]; // 這個數組之和等於 palCount
_ARGB palItems[palCount]; // 實際上,這裏的 alpha 都是錯的,遊戲也不使用

v3d.dat 的格式分析

文件開頭同樣是一個
typedef struct {
unsigned long flag; // 'v3dd'
unsigned long version; // 版本號 0x10005 等
} v3dd_file_header;

接著就是一幀一幀的圖片數據,可以根據 v3dh 中的dat_offset_list[] 來定位。
下面對定位後的一幀數據進行分析。
unsigned short Size; // 此幀數據的大小,不包含這2字節
typedef struct {
long keyx; // 很常見的一個結構,不多廢話
long keyy;
long width;
long height;
} v3dd_frame_header;


接下來,可能存在一個512字節的16位調色板,也可能不存在,這完全取決於xyqsvc.exe渲染圖片時是否正確加載了mypal.wdf裏的調色板。
然後是每一行數據的偏移地址,這一點與was圖片格式一樣,因為它要支持邊解壓邊繪制。此外,數據的壓縮格式與was圖片也是一樣的。

判斷是否存在512字節內置調色板的方法是,判斷幀數據開始16字節處(也就是height後面)的4字節數據的值是否為圖片高度的4倍再加16,如果為真,那麽基本可以確定不包含內置調色板。

至此,緩存文件分析完畢。

根據以上分析,我寫了一個提取工具,如圖:

使用說明

本工具是通過xyqsvc.exe生成的緩存文件來提取錦衣和唯美版資源的。
所以,要提取的資源必須在遊戲中顯示過。為了減少無關圖片的提取,可以先將v3d_cache(唯美版是vmresv3d_cache)下的v3d.hdr和v3d.dat刪除,然後再進入遊戲。

遊戲目錄的選擇:
如要提取經典版的圖片,就要選擇遊戲所在的目錄。如果要提取唯美版的圖片,就要選擇遊戲目錄下的vmres文件夾。假設遊戲安裝在"D:夢幻西遊"裏,那麽提取經典版要選擇"D:夢幻西遊",唯美版要選擇"D:夢幻西遊vmres"。

選擇好導出目錄後,點Go

小編我:那麼就四說要想獲得所有的錦衣資源就必須在遊戲中等級要六十幾以上還要把所有錦衣都買了,都穿上然後把所有的動作都顯示一遍(表情、戰鬥、坐騎等等)才行。OMG,不現實啊!不過可以用來做靜態的,做Flash就不太現實了。我研究了下,提取出的文件很乱很乱,都不知道怎么多文件里哪个是你想要的,而且还是TGA格式图片一个个查看太麻烦了,提取出的部分文件还会有缺胳膊少腿的问题。锦衣所有动作、渡劫所有动作都可以提取出来,只要在游戏里显示过就行,不管是别的玩家还是你都可以。

软件下载

v3d_extractor.rar

該資源為新浪微盤共享,暫時不支持外鏈,請在評論中留下您的郵箱(支持匿名,無需註冊),我會在24小時內發送。

用於提取夢幻西遊出神入化資料片錦衣系統新資源

解压密码
本站资源解压密码为:xlongoo@hotmail.com
本站所有资源均为共享,如果共享过期请联系站长。

本站声明

⒈本站资源收集于网络,纯属爱好,不做任何商业用途!版权归合法所有者所有;

⒉本站提供的资源下载连接于其他网站,不保证提供的下载资源的准确性、安全性和完整性;下载后请自行检查是否带有病毒,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。

⒊如果认为侵犯您的版权,请通知我们,我们立即删除;

⒋如不同意以上声明请勿下载,谢谢合作;

⒌我们强烈建议您购买和使用正版软件、光盘等。使用正版资源自豪光荣!

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/42308.html

更多阅读

梦幻西游新铃铛攻略 梦幻西游周六铃铛攻略

梦幻西游新铃铛攻略——简介《梦幻西游》是一款由中国网易公司自行开发并营运的网络游戏。梦幻西游新铃铛攻略梦幻西游新铃铛到哪梦幻西游新铃铛攻略——工具/原料黄纸若干(蜡烛和香也可以,CA福寿店有售),包子若干,77充足,梦幻西游

2014年梦幻西游新手礼包领取流程 cf新手礼包领取

2014年梦幻西游新手礼包领取流程——简介1、通行证帐号没有《梦幻西游》产生过点卡消费(就是新账号没充值过点卡);2、通行证帐号下第一个建立的角色;3、角色建立的时间在1个月内;4、角色等级小于或者等于9级;5、帐号之前并没有激活过

怎样获得梦幻西游兽态犀牛将军宠物 变异犀牛将军兽态进阶

犀牛将军在测试区一开区,因为所带法爆法波技能吸引人,猎人抓了88W、100W一个随便卖,造成了猎人抓一个卖一个的现象,但是抓兽态犀牛将军并不是那么容易的,我朋友说他一个晚上才抓了5只,但是随着人们的探索发现,现在兽态的犀牛将军已经降到20

梦幻西游帮战攻略 梦幻西游帮战建设

梦幻西游帮战攻略——简介开了这个新帮战有2周了,发现没人写功略,只是抱怨这个帮战的BUG 所以献丑我写个新帮战功略。梦幻西游帮战攻略——方法/步骤梦幻西游帮战攻略 1、一、8点半开始帮战后,MS还可以进场,具体怎么个进入方式不得而

声明:《夢幻西遊出神入化新資源提取 梦幻西游素材提取》为网友嚣張勁兒分享!如侵犯到您的合法权益请联系我们删除