導航:首頁 > 源碼編譯 > 傳奇3d源碼傳奇游戲源碼

傳奇3d源碼傳奇游戲源碼

發布時間:2024-05-25 18:16:41

❶ 鏈変簡浼犲囨簮鐮佸彲浠ュ湪鏈嶅姟鍣ㄤ笂鐢ㄥ悧

鍙浠ャ備紶濂囨簮鐮佸寘鍚浜嗘父鎴忕殑鍩烘湰鏋舵瀯鍜岃勫垯錛屼互鍙婃墍鏈夌墿鍝併佹鐗┿佸湴鍥懼拰瑙掕壊鐨勫睘鎬у拰鏁版嵁絳夛紝鍙浠ョ敤鍦ㄦ湇鍔″櫒涓婏紝鏀鎸佽繛鎺ュ埌鏈嶅姟鍣ㄣ傛湇鍔″櫒鏄涓縐嶇$悊璧勬簮騫朵負鐢ㄦ埛鎻愪緵鏈嶅姟鐨勮$畻鏈鴻懼囥

❷ 傳奇 原碼 是什麼東西 有什麼作用 是多少

傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。
先剖析一下WindHorn工程。
1.CWHApp、CWHWindow和CWHDXGraphicWindow。Window程序窗口的創建。
CWHApp派生CWHWindow,CWHWindow又派生CWHDXGraphicWindow。CWHWindow類
中完成窗口的注冊和創建。CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後再調用CreateDXG()來初始化DirectX。

2.CWHDefProcess派生出CloginProcess、CcharacterProcess、CgameProcess三個類。
這三個類是客戶端處理的核心類。

3. 全局變數:
CWHDXGraphicWindow g_xMainWnd; 主窗口類。
CLoginProcess g_xLoginProc; 登錄處理。
CCharacterProcess g_xChrSelProc; 角色選擇處理。
CgameProcess g_xGameProc; 游戲邏輯處理。

4.代碼分析:
1.首先從LoginGate.cpp WinMain分析:
g_xMainWnd定義為CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後
調用DirectDrawEnumerateEx枚舉顯示設備,(執行回調函數DXGDriverEnumCallbackEx) 再調用CreateDXG()來初始化DirectX(創建DirectDraw對象, 取得獨占和全屏模式, 設置顯示模式等)。
g_xSound.InitMirSound創建CSound對象。
g_xSpriteInfo.SetInfo();
初始化聲音,載入Socket庫之後,進行CWHDefProcess*指針賦值(事件綁定)。g_bProcState變數反應了當前游戲的狀態(登錄,角色選擇,游戲邏輯處理)。調用Load初始化一些操作(登錄,角色選擇,游戲邏輯處理)。進行消息循環。
case _LOGIN_PROC:
g_xLoginProc.RenderScene(dwDelay);
case _CHAR_SEL_PROC:
g_xChrSelProc.RenderScene(dwDelay);
case _GAME_PROC:
g_xGameProc.RenderScene(dwDelay);
根據g_bProcState變數標志,選擇顯示相應的畫面。

2.接收處理網路消息和接收處理窗口消息。
在不同的狀態下(登錄,角色選擇,游戲邏輯處理),接收到的消息(網路,窗口消息)會分派到不同的函數中處理的。這里是用虛函數處理(調用子類方法,由實際的父類完成相應的處理)。
OnMessageReceive主要處理網路消息。DefMainWndProc則處理窗體消息(按鍵,重繪等),創建窗體類為CWHDXGraphicWindow,回調函數為:
MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) [Page]
if ( m_pxDefProcess )
m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);
else
return MainWndProcDXG(hWnd, uMsg, wParam, lParam);

m_pxDefProcess->DefMainWndProc調用父類的實際處理。
在WM_PAINT事件里: g_xClientSocket.ConnectToServer連接登陸伺服器。

❸ 誰能告訴我傳奇源碼是多少

傳奇源碼分析-序言
簡述:
最近對高性能的伺服器比較感興趣,讀過了DELPHI的Socker源碼WebService及RemObject之後,高性能的伺服器感興趣。
你可能需要的以下知識才能更好的讀懂一個商業源碼:
1).SOCKET的I/O模型熟悉掌握。
2).面向對象技術的熟悉掌握。
3).Socket的API掌握。
4).多線程技術等。
5).一門熟悉的開發工具掌握,和多種語言的源碼閱讀能力。

我下的源碼 LegendOfMir2_Server:共包含AdminCmd, DBSrv, GameGate, GameSvr,LoginGate, LoginSvr, SelGate七個工程文件。傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。
我分析的, 主要是VC SQL版本的, DELPHI翎風源碼不做分析, 另外下載了樂都WIL編輯器和樂都MPA地圖編輯器這些工具.

傳奇源碼分析-客戶端(WindHorn簡述和傳奇文件格式分析)

DirectX類庫分析(WindHorn):

1. RegHandler.cpp 注冊表訪問(讀寫)。
2. CWHApp派生CWHWindow,CWHWindow完成窗口的注冊和創建。CWHWindow派生出CWHDXGraphicWindow,CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後再調用CreateDXG()來初始化DirectX。
3. WHDefProcess.cpp在構造函數中獲得CWHDXGraphicWindow句柄。
Clear函數中調用在後台緩存上進行繪圖操作,換頁至屏幕。
ShowStatus函數,顯示狀態信息。
DefMainWndProc函數,調用CWHDXGraphicWindow->MainWndProcDXG消息處理。
4. WHImage.cpp圖象處理。載入點陣圖,點陣圖轉換。優化處理。
5. WHSurface.cpp 主頁面處理。
6. WHWilTexture.cpp 材質渲染。
WILTextureContainer: WIL容器類。m_pNext指向下一個WILTextureContainer,單鏈表。
7. WHWilImage.cpp 從Data目錄中載入Wix文件(內存映射)。
8. WHDXGraphic.cpp 處理DirectX效果。

文件類型格式探討:
Wix文件:索引文件,根據索引查找到相應數據地址(數據文件)。
// WIX 文件頭格式
typedef struct tagWIXFILEIMAGEINFO
{
CHAR szTmp[40]; // 庫文件標題 'WEMADE Entertainment inc.' WIL文件頭
INT nIndexCount; // 圖片數量
INT* pnPosition; // 位置
}WIXIMAGEINFO, *LPWIXIMAGEINFO;

我們下載一個Hedit編輯器打開一個Wil文件,分析一下。我們發現Wix文件中,0x23地址(含該地址)以前的內容是都相同的,即為:#INDX v1.0-WEMADE Entertainment inc.
Ofs44 0x2C的地方:存放著0B 00 00 00,高低位轉換後為:0xB轉換十進制數為11(圖片數量)Ofs48 0x30的地方:存放著38 04 00 00,高低位轉換後為:0x438 = 1080, 這個就是圖象數據的開始位置。

我們用Wil編輯打開對應的Wil文件,發現,果然有11張圖片。另外我們發現,在Ofs = 44 -47之間的數據總是38 04 00 00,終於明白,所有的圖片起始位置是相同的。

Wil文件: 數據文件。
前面我們說了圖象數據的開始位置為0x438 = 1080, 1080中有文件開頭的44位元組都是相同的。所以,就是說有另外的1036位元組是另有用途。1036中有1024是一個256色的調色板。
我們看到圖片位置數據為: 20 03 58 02, 轉化為十六進制: 0x320, 0x258 剛好就是800*600大小的圖片。07 00 D4 FF。圖片起始位置為:
Ofs 1088: 0x440 圖片大小為480000
起始位置:0x440 1088 終止位置:0x7573F 481087 為了驗證數據是否正確,我們通過Wil工具,把第一幅圖片導出來,然後用Hedit編輯器打開,經過對比,我們發現,數據一致。大小一致。
第二張BMP圖片(圖片起始位置:0x436 10078) : F0 01 69 01 , 07 00 D4 FF
剛好大小。第二張Wil起始位置:Ofs:481096 0x75748
知道了圖片格式,我們可以寫一個抓圖片格式的程序了。

傳奇源碼分析-客戶端(全局變數與總體執行流程)
客戶端:
傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。

❹ 易語言如何製作3D游戲,快點.或者源碼,可以修改的.後給分了.手頭緊.

3D游戲:小優傳奇之哆啦A夢版,源碼太長了……去網路搜索易語言3D游戲就可以找到,至少3W字我可以提供其中的代碼,如果你要製作游戲的話40M要一個月半多,我支持你,但是要引擎才能啟動
.版本 2
.子程序 Draw
.局部變數 i
.局部變數 Colort, 小數型
.局部變數 F1, 小數型
.局部變數 F2, 小數型
表面渲染1.開始渲染 ()
' //////////////////////////////////////////////////////
天空.渲染 () ' 渲染大氣
天空.霧啟用 (真)
' //////////////////////////////////////////////////////
.如果真 (地圖信息.HeightX ≠ 0)
地形.渲染 () ' 渲染地面
.如果真結束
' //////////////////////////////////////////////////////
' 渲染背景模型
.如果真 (地圖信息.MeshNum > 0)
.計次循環首 (地圖信息.MeshNum, i)
.如果真 (TempMesh [i].Over = 假 且 TempMesh [i].Kind ≠ 2)
模型 [i].渲染 ()
.如果真結束
.計次循環尾 ()
.如果真結束
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' 繪制人物部分
.如果真 (是否開動態陰影)
場景.完成渲染陰影 () ' 繪制陰影
.如果真結束
Npc [1].Body.渲染 (假)
.變數循環首 (2, 地圖信息.NpcNum + 1, 1, i)
.如果真 (Npc [i].Enable 且 Npc [i].Kind ≠ 6)
Colort = 1 - Npc [i].ActNum1 ÷ 5000
.如果真 (Colort > 1)
Colort = 1
.如果真結束
.如果真 (Colort < 0)
Colort = 0
.如果真結束
.如果真 (Npc [i].State = 4)
材質.設置不透明 (正常, Colort)
.如果真結束
Npc [i].Body.渲染 (假)
.如果真 (Npc [i].State = 4)
材質.設置不透明 (正常, 1)
.如果真結束
.如果真結束
.變數循環尾 ()

法杖 [當前法杖 + 1].渲染 (假)
' If IfPart Then GE.DrawGlow '繪制武器發光
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' 繪制minimesh
.如果真 (水R.是否啟用 ())
水R.渲染 ()
.如果真結束
.如果真 (地圖信息.MiniNum > 0)
.計次循環首 (地圖信息.MiniNum, i)
.如果真 (臨時迷你模型 [i].Num ≠ 0)
迷你模型 [i].渲染 ()
.如果真結束
.計次循環尾 ()
.如果真結束
.如果真 (ModelActor [14].是否啟用 ())
ModelActor [14].渲染 (真)
.如果真結束
.如果真 (ModelActor [15].是否啟用 ())
ModelActor [15].渲染 (真)
.如果真結束
天空.霧啟用 (假)
' 繪制前景透明模型
.如果真 (地圖信息.MeshNum > 0)
.計次循環首 (地圖信息.MeshNum, i)
.如果真 (TempMesh [i].Over)
模型 [i].渲染 ()
.如果真結束
.計次循環尾 ()
.如果真結束
' //////////////////////////////////////////////////////
.如果真 (水.是否啟用 ())
水.渲染 () ' 繪制水面
.如果真結束
' //////////////////////////////////////////////////////
.計次循環首 (地圖信息.NpcNum + 1, i)
.如果真 (Npc [i].Shadow.是否啟用 () 且 是否開動態陰影 = 假)
Npc [i].Shadow.渲染 () ' 繪制影子
.如果真結束
.如果真 (Npc [i].Emotion > 0)
Npc [i].EmotionM.渲染 ()
Npc [i].Emotion = Npc [i].Emotion - 持續時間
.如果真結束
.計次循環尾 ()
' //////////////////////////////////////////////////////
.如果真 (法杖軌跡特效.是否啟用 ())
法杖軌跡特效.渲染 ()
.如果真結束
.計次循環首 (#EffectAnimMax + 1, i)
.如果真 (EffectAnim [i].Enable)
EffectAnim [i].Body.渲染 (真)
.如果真結束
.計次循環尾 ()
.如果真 (是否開粒子)
場景.渲染全部粒子系統 (真) ' 繪制粒子
.如果真結束
屏幕畫圖.畫3D矩形 (Vecc [1], Vecc [2], -1)
表面渲染1.結束渲染 ()
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
.如果真 (是否全屏泛光)
.如果 (是否模糊)
特效.設置輝光參數 (創建E顏色 (1, 1, 1, 1), 泛光 × 0.1, 柔化)
.否則
特效.設置輝光參數 (創建E顏色 (1, 1, 1, 1), 泛光, 柔化)
.如果結束
輝光表面渲染.BLT表面渲染 (表面渲染1)
特效.更新輝光 ()
.如果真結束
' //////////////////////////////////////////////////////
' 最終畫面
引擎.清屏 (是否模糊) ' 清屏
.如果 (是否全屏泛光)
GammaA = 0.5
.否則
GammaA = 1
.如果結束
.如果真 (是否模糊)
GammaA = GammaA × 0.2
.如果真結束
屏幕畫圖.開始2D繪制 ()
屏幕畫圖.畫紋理 (表面渲染1.取紋理索引 (), 0, 0, 屏幕寬度, 屏幕高度, RGBA (GammaR, GammaG, GammaB, GammaA)) ' 渲染主畫面
.如果真 (切換屏幕計數器 > 0)
切換屏幕計數器 = 切換屏幕計數器 + 持續時間
.如果真 (切換屏幕計數器 > 1500)
切換屏幕計數器 = 1500
.如果真結束
.如果 (是否全屏泛光)
屏幕畫圖.畫紋理 (RS2.取紋理索引 (), 0, 0, 屏幕寬度, 屏幕高度, RGBA (GammaR, GammaG, GammaB, (1 - 切換屏幕計數器 ÷ 1500) × 0.5))
.否則
屏幕畫圖.畫紋理 (RS2.取紋理索引 (), 0, 0, 屏幕寬度, 屏幕高度, RGBA (GammaR, GammaG, GammaB, 1 - 切換屏幕計數器 ÷ 1500))
.如果結束
.如果真 (切換屏幕計數器 = 1500)

❺ 鐧芥棩闂ㄤ紶濂囨墜娓告簮鐮佸備綍涓嬭澆

涓嬭澆鍦板潃錛http://www.37moyu.com/azyx/jsby/juezhanrimenh5shouyouv093.html
綾誨瀷錛氬畨鍗撴父鎴-瑙掕壊鎵婕
鐗堟湰錛氬喅鎴樼櫧鏃ラ棬h5鎵嬫父v0.9.3
澶у皬錛269.40M
璇璦錛氫腑鏂
騫沖彴錛氬畨鍗揂PK
鎺ㄨ崘鏄熺駭錛堣瘎鍒嗭級錛氣槄鈽呪槄鈽呪槄
娓告垙鏍囩: 鍐蟲垬鐧芥棩闂 浼犲囨墜娓 鍐蟲垬鐧芥棩闂╤5鍦ㄧ嚎鐜╂墜娓鏄鍒涗綔鑰呬滑浠ュ叏鏂扮殑寮曟搸鎶鏈鎵綺懼績鎵撻犵殑涓嬈懼睜榫欎紶濂囨父鎴忥紝娓告垙鍜屾垜浠甯哥帺鐨勭娓稿唴瀹瑰苟鏃犲お澶х殑鍖哄埆錛屽彧鏄榪欓噷鐨勭敾璐ㄦ洿涓烘竻鏅幫紝鐜╁朵滑鎿嶄綔璧鋒潵涔熶細鏇村姞嫻佺晠錛岃繕鏈変笓灞炵ぜ鍖呭彲浠ョ洿鎺ラ嗗彇鍝︼紝鍠滄㈢殑鏈嬪弸灝辮鋒潵澧ㄩ奔涓嬭澆絝欏畨瑁呬綋楠屽惂錛
鍐蟲垬鐧芥棩闂╤5瀹樻柟鐗堟父鎴忎粙緇 3d嬈′笘浠g駭欖斿夠鐗硅壊mmo銆婂喅鎴樼櫧鏃ラ棬銆嬬珛浣撴柊鐢熺櫥鍦猴紝娓告垙鎷ユ湁騫塊様瀹忎紵絝嬩綋鍦板浘錛屽叏瑙嗚3d鑷鐢辨帰緔錛岄瓟騫誨寲瑙掕壊璁╃粡鍏哥珛浣撻潻鏂幫紝鍔犱笂綺捐嚧涓鎬у寲澶栬傛祦鍏夎呭囧拰椴滄椿鐨勬垬鏂椾竾浜哄悓鏈嶇湡瀹炴儏涔夛紝榪欏氨鏄銆婂喅鎴樼櫧鏃ラ棬銆嬪甫緇欎綘欏剁駭mmo鐨勫夠鎯熾

娓告垙鐗硅壊 銆愰泦鏉鎬鐗 鎷嶅崠鍒嗙孩銆?
嬋鎯呮墦鏂楋紝閰風偒鎶鑳斤紝浣犳兂瑕佺殑錛岃繖閲岄兘鑳界粰浣狅紒闆嗘潃boss錛屾媿鍗栧垎綰錛屽彧瑕佸嚭鍔涳紝灝辨湁鍥炴姤銆
銆愮儹琛pk 嬋鎯呮寚鎸ャ?
涓板瘜鐨刾ve媧誨姩涔愯叮鏃犵┓錛氬叏鏂板壇鏈銆侀噹澶朾oss銆佷釜浜篵oss鎸戞垬璁╀綘褰誨滀笉鐪犮傝法鏈嶅ぇ鎴樿╀綘棰嗙暐澶氱嶅ぉ璧嬪拰鎴樻湳鎼閰嶇殑緇勫悎濂ュ欙紱鎴樺満浼欎即鐩擱殢鐨勫厔寮熶箣鎯呫傚姪浣犲害榪囬毦蹇樼殑闈掍簯鏃跺厜銆
銆愬崈浜烘縺鎴 鍐寵儨宸呭嘲銆?
涓庝粰鐩熸垬鍙嬪崗鍚屾埉鏁岋紝鎸戞垬鍏ㄦ湇瓚呭己鐨勫瓨鍦錛屾嫾涓婂叏鐩熶粰鍙嬬殑鑽h鍘諱簤闇擱潚浜戱紝鍦ㄨ繖娣鋒矊涓囪薄鐨勪笘鐣屼腑緙旈犲睘浜庤嚜宸辯殑浠欎緺浼犲囷紒?
娓告垙浜鐐 銆愭案涓嶅繕璁板垵蹇冿紝鎯呮婊$偣鏋佽嚧榪樺師銆
銆婂喅鎴樼櫧鏃ラ棬銆嬭櫧鐒跺湪鐢婚潰涓婅繍鐢ㄤ簡3d鎶鏈鍋氬嚭浜嗗緢澶х殑鍒涙柊錛屼絾瀹冧綋鍐呬粛鏃ф湁鎴戜滑鐔熸倝鐨勪紶濂囪緇燂紒鐑х尓緇冪駭銆佹姢闀栥佸府鎴樸佹矙鍩庣瓑浼犲囩殑緇忓吀瑕佺礌灝界撼鍏朵腑錛岃繖灝嗘槸涓涓璁╀綘鎰熷埌宕鏂板張鐔熸倝鐨勪紶濂囧ぇ闄嗭紝鍐嶅害鐐圭噧浣犲硅繖鍧楀ぇ闄嗙殑寰佹湇嬈叉湜錛
銆愬埛鏂拌嗚夊啿鍑伙紝鍥炲繂澶ч檰鍐嶇幇鐪煎墠銆
銆婂喅鎴樼櫧鏃ラ棬銆嬮噰鐢ㄦ渶鏂3d鎶鏈鏋佽嚧榪樺師澶у跺洖蹇嗕腑鐨勪紶濂囧ぇ闄嗭紝娓告垙鐣岄潰銆佸煄奼犮佷漢鐗┿佽糠瀹銆乥oss鍏ㄩ潰鍗囩駭錛岃掕壊鍔ㄤ綔銆佺壒鏁堢殑嫻佺晠搴︿篃鍥犳ゅぇ騫呮彁鍗囷紝鏇存湁瓚呭己鐜板満綰ч煶鏁堝敖鎯呮尌媧掍紶濂囬瓌鍔涳紒
銆愬己鏁屽竻姘旀潵琚錛岄偅騫存垜浠寰佹湇榪囩殑boss銆
榪樻浘璁板緱涓庡厔寮熶滑鍦ㄨ糠瀹鍒鍏夊墤褰卞埛boss鐨勬椂鍏夊悧錛熷湪銆婂喅鎴樼櫧鏃ラ棬銆3d鎶鏈鐨勬覆鏌撲笅錛岃繖浜沚oss灝嗗啀搴﹂噸鐢燂紒鍦ㄥ叏鏂扮殑3d涓栫晫涓闈㈠硅繖浜涚粡鍏竍oss錛岀噧鐑т綘浣撳唴娌夊瘋宸蹭箙鐨勭儹琛錛屾彁鍒澶ф垬鍥涙柟鍚э紒

緇間笂鎵榪幫紝澧ㄩ奔涓嬭澆絝欐槸鎮ㄥ繪壘瀹夊崜娓告垙鍜岃掕壊鎵婕旇В鍐蟲柟妗堢殑鐞嗘兂涔嬮夈傛棤璁烘槸瀹夊崜娓告垙瑙掕壊鎵婕旂埍濂借呰繕鏄涓撲笟浜哄+錛屾垜浠鎺ㄨ崘瀹夊崜娓告垙瑙掕壊鎵婕旂殑鐩稿叧鍐呭歸兘鑳芥弧瓚蟲偍鐨勯渶奼傘傜珛鍗充笅杞芥垨浣撻獙鍐蟲垬鐧芥棩闂╤5鎵嬫父錛屼韓鍙楀畨鍗撴父鎴忚掕壊鎵婕斿甫鏉ョ殑鏃犲敖涔愯叮錛佹ゅ栵紝鎴戜滑榪樻彁渚涘喅鎴樼櫧鏃ラ棬h5鎵嬫父鐨勮︾粏淇℃伅錛屽寘鎷鍔熻兘浠嬬粛銆佺敤鎴瘋瘎浠蜂互鍙婂畼鏂逛笅杞介摼鎺http://www.37moyu.com/azyx/jsby/juezhanrimenh5shouyouv093.html 銆傝╂偍鐨勪笅杞借繃紼嬫洿鍔犺交鏉懼揩鎹鳳紒

閱讀全文

與傳奇3d源碼傳奇游戲源碼相關的資料

熱點內容
oppor系列如何解除應用加密 瀏覽:599
程序員那麼可愛姜逸城初戀 瀏覽:496
modbustcp編程 瀏覽:491
實況為什麼安卓看不了 瀏覽:129
Java多線程Queue 瀏覽:95
雲伺服器499元三年 瀏覽:980
nbd源碼 瀏覽:847
x86在arm上編譯 瀏覽:8
linux怎麼配置網路 瀏覽:307
程序員想要的小禮物 瀏覽:186
java獲取網頁url 瀏覽:625
怎麼做解壓神器泡泡版 瀏覽:967
自己動手做一個c編譯器 瀏覽:930
手機如何鏈接谷歌伺服器地址 瀏覽:137
廢掉一個程序員的武功 瀏覽:249
java樹形演算法 瀏覽:642
通達信加鎖指標源碼怎麼看 瀏覽:755
將同名文件移動到部分同名文件夾 瀏覽:404
擺盪指標加壓力線源碼 瀏覽:916
新一代單片機特徵 瀏覽:770