﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-liquidx-随笔分类-写过的一些作品 </title><link>http://www.cppblog.com/liquidx/category/10842.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 May 2014 00:42:07 GMT</lastBuildDate><pubDate>Fri, 02 May 2014 00:42:07 GMT</pubDate><ttl>60</ttl><item><title>kbengine mmo源码(完整服务端源码+资源+完整客户端源码)</title><link>http://www.cppblog.com/liquidx/archive/2014/05/01/206792.html</link><dc:creator>liquidx</dc:creator><author>liquidx</author><pubDate>Thu, 01 May 2014 13:12:00 GMT</pubDate><guid>http://www.cppblog.com/liquidx/archive/2014/05/01/206792.html</guid><wfw:comment>http://www.cppblog.com/liquidx/comments/206792.html</wfw:comment><comments>http://www.cppblog.com/liquidx/archive/2014/05/01/206792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liquidx/comments/commentRss/206792.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liquidx/services/trackbacks/206792.html</trackback:ping><description><![CDATA[<div><p>kbengine mmo源码(完整服务端源码+资源+完整客户端源码)</p><div><p>PyConsole: display server information.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/pyconsole1.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/pyconsole1.jpg" /></p></div><div><p>PyConsole: Stop the server.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/pyconsole_stop.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/pyconsole_stop.jpg" /></p></div><div><p>Guiconsole: debug.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/guiconsole_debug.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/guiconsole_debug.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/guiconsole_pyprofile.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/guiconsole_pyprofile.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/guiconsole_cprofile.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/guiconsole_cprofile.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/guiconsole_watcher.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/guiconsole_watcher.jpg" /></p></div><div><p>Guiconsole: log.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/guiconsole_log.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/guiconsole_log.jpg" /></p></div><div><p>Demo: Ogre.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/ogre_demo1.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/ogre_demo1.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/ogre_demo2.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/ogre_demo2.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/ogre_demo3.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/ogre_demo3.jpg" /></p></div><div><p>Demo: Unity3d.</p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo1.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo1.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo2.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo2.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo3.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo3.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo4.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo4.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo5.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo5.jpg" /></p><p><img src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo6.jpg" alt="" data-mce-src="http://www.kbengine.org/assets/img/screenshots/unity3d_demo6.jpg" /></p></div><p>&nbsp;<br /> <br />demo视频: <br /> <br /><a href="http://v.youku.com/v_show/id_XNjU5Nzc0MDQ4.html" target="_blank" data-mce-href="http://v.youku.com/v_show/id_XNjU5Nzc0MDQ4.html">http://v.youku.com/v_show/id_XNjU5Nzc0MDQ4.html</a> </p><p>&nbsp;</p><p><br />下载地址: </p>demo下载地址: <br /><a href="http://sourceforge.net/projects/kbengine/files/" target="_blank" data-mce-href="http://sourceforge.net/projects/kbengine/files/">http://sourceforge.net/projects/kbengine/files/</a>  <br /> <br />服务端源码:  <br /><a href="http://www.kbengine.org" target="_blank" data-mce-href="http://www.kbengine.org">http://www.kbengine.org</a>  <br /> <br />客户端源码下载:  <br /><a href="https://kbengine@bitbucket.org/kbengine/warring.git" target="_blank" data-mce-href="https://kbengine@bitbucket.org/kbengine/warring.git">https://kbengine@bitbucket.org/kbengine/warring.git</a></div><img src ="http://www.cppblog.com/liquidx/aggbug/206792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liquidx/" target="_blank">liquidx</a> 2014-05-01 21:12 <a href="http://www.cppblog.com/liquidx/archive/2014/05/01/206792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>研究了好几个月的游戏场景，完成了部分</title><link>http://www.cppblog.com/liquidx/archive/2009/06/09/87221.html</link><dc:creator>liquidx</dc:creator><author>liquidx</author><pubDate>Tue, 09 Jun 2009 09:46:00 GMT</pubDate><guid>http://www.cppblog.com/liquidx/archive/2009/06/09/87221.html</guid><wfw:comment>http://www.cppblog.com/liquidx/comments/87221.html</wfw:comment><comments>http://www.cppblog.com/liquidx/archive/2009/06/09/87221.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/liquidx/comments/commentRss/87221.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liquidx/services/trackbacks/87221.html</trackback:ping><description><![CDATA[最后一次更新于2007年04月21日<br>使用directX9.0c, vs2005sdk, hlsl 开发 环境7300GS,奔4CPU, 1024x768&nbsp;&nbsp; ０级lod 因速度可以接受所以没有继续做lod(不过已经做了lod相关设计只是没用而已)　还没有做遮挡消除等功能，　目前实现了　动态云，太阳，天空，大地，碰撞检测．　４层细节贴图　和　８层细节贴图　在我机器环境上可以达到　（8layer）１００～(1layer)２5０fps,下一步该实现　真实水，和　树木，草，石头，建筑，天气效果等等...&nbsp;&nbsp;最近写的点累，每天要上班．．．先放着... <br><br>代码有很强的灵活性，　直接继承基类root　添加渲染对象就可以实现用户自定义coding． <br>这是这个　demo的user代码. <br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#pragma&nbsp;once&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBCommon.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBRoot.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBWorld.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBWorldGeometry.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBFps.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;KBEngine;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CSceneWorld&nbsp;:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;CKBWorldBase&nbsp;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_198_420_Open_Image onclick="this.style.display='none'; Codehighlighter1_198_420_Open_Text.style.display='none'; Codehighlighter1_198_420_Closed_Image.style.display='inline'; Codehighlighter1_198_420_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_198_420_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_198_420_Closed_Text.style.display='none'; Codehighlighter1_198_420_Open_Image.style.display='inline'; Codehighlighter1_198_420_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_198_420_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">继承CKBWorldBase　可以自定义渲染　如　雾的方式，　灯光　等系列渲染参数&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:&nbsp;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_271_272_Open_Image onclick="this.style.display='none'; Codehighlighter1_271_272_Open_Text.style.display='none'; Codehighlighter1_271_272_Closed_Image.style.display='inline'; Codehighlighter1_271_272_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_271_272_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_271_272_Closed_Text.style.display='none'; Codehighlighter1_271_272_Open_Image.style.display='inline'; Codehighlighter1_271_272_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>CSceneWorld(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_271_272_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:&nbsp;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_303_304_Open_Image onclick="this.style.display='none'; Codehighlighter1_303_304_Open_Text.style.display='none'; Codehighlighter1_303_304_Closed_Image.style.display='inline'; Codehighlighter1_303_304_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_303_304_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_303_304_Closed_Text.style.display='none'; Codehighlighter1_303_304_Open_Image.style.display='inline'; Codehighlighter1_303_304_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">CSceneWorld(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_303_304_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;BOOL&nbsp;create(&nbsp;TiXmlNode</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;section&nbsp;)&nbsp;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id=Codehighlighter1_351_417_Open_Image onclick="this.style.display='none'; Codehighlighter1_351_417_Open_Text.style.display='none'; Codehighlighter1_351_417_Closed_Image.style.display='inline'; Codehighlighter1_351_417_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_351_417_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_351_417_Closed_Text.style.display='none'; Codehighlighter1_351_417_Open_Image.style.display='inline'; Codehighlighter1_351_417_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_351_417_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;CKBWorldBase::create(&nbsp;section&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">自定义创建&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;&nbsp;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CSceneApplication&nbsp;:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;CKBRoot&nbsp;<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img id=Codehighlighter1_466_636_Open_Image onclick="this.style.display='none'; Codehighlighter1_466_636_Open_Text.style.display='none'; Codehighlighter1_466_636_Closed_Image.style.display='inline'; Codehighlighter1_466_636_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_466_636_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_466_636_Closed_Text.style.display='none'; Codehighlighter1_466_636_Open_Image.style.display='inline'; Codehighlighter1_466_636_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_466_636_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:&nbsp;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img id=Codehighlighter1_501_502_Open_Image onclick="this.style.display='none'; Codehighlighter1_501_502_Open_Text.style.display='none'; Codehighlighter1_501_502_Closed_Image.style.display='inline'; Codehighlighter1_501_502_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_501_502_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_501_502_Closed_Text.style.display='none'; Codehighlighter1_501_502_Open_Image.style.display='inline'; Codehighlighter1_501_502_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>CSceneApplication(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_501_502_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:&nbsp;<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">CSceneApplication(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);&nbsp;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;BOOL&nbsp;createScene(&nbsp;TiXmlNode</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;section&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img id=Codehighlighter1_591_599_Open_Image onclick="this.style.display='none'; Codehighlighter1_591_599_Open_Text.style.display='none'; Codehighlighter1_591_599_Closed_Image.style.display='inline'; Codehighlighter1_591_599_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_591_599_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_591_599_Closed_Text.style.display='none'; Codehighlighter1_591_599_Open_Image.style.display='inline'; Codehighlighter1_591_599_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_591_599_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_591_599_Open_Text><span style="COLOR: #808080">///</span><span style="COLOR: #008000">鼠标控制&nbsp;</span><span style="COLOR: #808080"></span></span><br><span style="COLOR: #008080">31</span><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ProcessMouse(&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SceneApplication.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KBSkyGeometry.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>CKBRenderObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m_worldGeo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>CKBRenderObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;g_fps&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;<br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>CKBRenderObject</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;skyDomeModel&nbsp;;&nbsp;<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img id=Codehighlighter1_848_932_Open_Image onclick="this.style.display='none'; Codehighlighter1_848_932_Open_Text.style.display='none'; Codehighlighter1_848_932_Closed_Image.style.display='inline'; Codehighlighter1_848_932_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_848_932_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_848_932_Closed_Text.style.display='none'; Codehighlighter1_848_932_Open_Image.style.display='inline'; Codehighlighter1_848_932_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>CSceneApplication::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">CSceneApplication(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_848_932_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>SAFE_DELETE(&nbsp;m_worldGeo&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>SAFE_DELETE(&nbsp;g_fps&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>SAFE_DELETE(&nbsp;skyDomeModel&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>BOOL&nbsp;CSceneApplication::createScene(&nbsp;TiXmlNode</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;section&nbsp;)&nbsp;<br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img id=Codehighlighter1_995_1605_Open_Image onclick="this.style.display='none'; Codehighlighter1_995_1605_Open_Text.style.display='none'; Codehighlighter1_995_1605_Closed_Image.style.display='inline'; Codehighlighter1_995_1605_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_995_1605_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_995_1605_Closed_Text.style.display='none'; Codehighlighter1_995_1605_Open_Image.style.display='inline'; Codehighlighter1_995_1605_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_995_1605_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">自定义创建&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">50</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">g_fps&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CKBFps();&nbsp;<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>g_pWorld&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CSceneWorld();&nbsp;<br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>m_worldGeo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CKBWorldGeometry();&nbsp;<br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>skyDomeModel&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;CKBSkyDomeModel();&nbsp;<br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>g_pTextHelper</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">CreateFont(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Arial</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">create(&nbsp;section&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建天空&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">57</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">((CKBSkyDomeModel</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)skyDomeModel)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">create(&nbsp;section&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>((CKBWorldGeometry</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)m_worldGeo)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">create(&nbsp;&nbsp;CKBD3DDevice::getSingleton().getDevice()&nbsp;,&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBFrustum()&nbsp;,&nbsp;section&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setPosY(((CKBWorldGeometry</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)m_worldGeo)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">collision(&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetEye()));&nbsp;<br></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>addToRender(&nbsp;g_fps&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>addToRender(&nbsp;skyDomeModel&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>addToRender(&nbsp;m_worldGeo&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;&nbsp;<br></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CSceneApplication::ProcessMouse(&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;)&nbsp;<br></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img id=Codehighlighter1_1655_2023_Open_Image style="WIDTH: 11px; HEIGHT: 16px" onclick="this.style.display='none'; Codehighlighter1_1655_2023_Open_Text.style.display='none'; Codehighlighter1_1655_2023_Closed_Image.style.display='inline'; Codehighlighter1_1655_2023_Closed_Text.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><img id=Codehighlighter1_1655_2023_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1655_2023_Closed_Text.style.display='none'; Codehighlighter1_1655_2023_Open_Image.style.display='inline'; Codehighlighter1_1655_2023_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1655_2023_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">70</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输入输出部分这是暂时的，将来会使用&nbsp;Dxinput接口&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">71</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">CKBRoot::ProcessMouse();&nbsp;<br></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;GetAsyncKeyState(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;)&nbsp;)&nbsp;<br></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MoveZ(&nbsp;</span><span style="COLOR: #000000">3.0f</span><span style="COLOR: #000000">&nbsp;,((CKBWorldGeometry</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)m_worldGeo)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">collision(&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetEye())&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">74</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;GetAsyncKeyState(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;)&nbsp;)&nbsp;<br></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MoveZ(&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">3.0f</span><span style="COLOR: #000000">&nbsp;,((CKBWorldGeometry</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)m_worldGeo)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">collision(&nbsp;g_pWorld</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getKBCamera()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetEye()));&nbsp;<br></span><span style="COLOR: #008080">76</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">77</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">78</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">79</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">贴图　下面的效果都是　　４层细节贴图的样子&nbsp;</span></div>
<img src="http://www.cppblog.com/images/cppblog_com/liquidx/10839/o_1.jpg" border=0><br><br><img src="http://www.cppblog.com/images/cppblog_com/liquidx/10839/o_2.jpg" border=0><br><br><img src="http://www.cppblog.com/images/cppblog_com/liquidx/10839/o_3.jpg" border=0> 
<img src ="http://www.cppblog.com/liquidx/aggbug/87221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liquidx/" target="_blank">liquidx</a> 2009-06-09 17:46 <a href="http://www.cppblog.com/liquidx/archive/2009/06/09/87221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新版3D斗地主</title><link>http://www.cppblog.com/liquidx/archive/2009/06/09/87219.html</link><dc:creator>liquidx</dc:creator><author>liquidx</author><pubDate>Tue, 09 Jun 2009 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/liquidx/archive/2009/06/09/87219.html</guid><wfw:comment>http://www.cppblog.com/liquidx/comments/87219.html</wfw:comment><comments>http://www.cppblog.com/liquidx/archive/2009/06/09/87219.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/liquidx/comments/commentRss/87219.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liquidx/services/trackbacks/87219.html</trackback:ping><description><![CDATA[<p>这个是大学快毕业的时候做的， 为的是翻新以前写的2D迷上斗地主，当时想了很多好的创意，打破传统的玩法。<br><br>在斗地主休闲游戏中加入rpg元素， 提供角色血条， 升级经验， 以及各种技能，道具。 当时的想法是玩家可以使用技能进行攻击其他玩家， 例如：在桌面上放一只虫子， 跑到对方身上咬一下， 就掉了一点血， 或者是放一个雷电电的对方满脸黑炭冒烟，或者增加作弊功能（赌王模式），当然这些技能不是随便都能获得的， 能够连续赢XX把牌系统随机赠送一个，或者打出了漂亮的飞机等等。<br><br>不过后来因为找工作就没有继续完成了， 可惜&nbsp;呵呵！<br><br><span style="TEXT-DECORATION: underline">开发环境Direct9.0cSDK_D3D,c/c++,vs2005,windowsXP <br><br><img src="http://www.cppblog.com/images/cppblog_com/liquidx/1.jpg" border=0><br><img height=475 src="http://www.cppblog.com/images/cppblog_com/liquidx/2.jpg" width=640 border=0></span></p>
<img height=476 src="http://www.cppblog.com/images/cppblog_com/liquidx/3.jpg" width=635 border=0><br><img height=348 src="http://www.cppblog.com/images/cppblog_com/liquidx/4.jpeg" width=593 border=0><br><img height=200 src="http://www.cppblog.com/images/cppblog_com/liquidx/5.jpeg" width=235 border=0><br><img height=194 src="http://www.cppblog.com/images/cppblog_com/liquidx/6.jpeg" width=321 border=0> 
<img src ="http://www.cppblog.com/liquidx/aggbug/87219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liquidx/" target="_blank">liquidx</a> 2009-06-09 17:44 <a href="http://www.cppblog.com/liquidx/archive/2009/06/09/87219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手把手教你做传奇外挂</title><link>http://www.cppblog.com/liquidx/archive/2009/06/09/87217.html</link><dc:creator>liquidx</dc:creator><author>liquidx</author><pubDate>Tue, 09 Jun 2009 09:40:00 GMT</pubDate><guid>http://www.cppblog.com/liquidx/archive/2009/06/09/87217.html</guid><wfw:comment>http://www.cppblog.com/liquidx/comments/87217.html</wfw:comment><comments>http://www.cppblog.com/liquidx/archive/2009/06/09/87217.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/liquidx/comments/commentRss/87217.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liquidx/services/trackbacks/87217.html</trackback:ping><description><![CDATA[这是我痴迷于破解与接近于游戏开发的阶段. 大概是2005年7月<br><br>
<p>作者:LiquidX</p>
<p>示例图:</p>
<p><img src="http://www.cppblog.com/images/cppblog_com/liquidx/111.jpg" border=0></p>
<p>&nbsp;&nbsp;&nbsp; 其实网上有很多的外挂内挂文章我也看了不少，从中得到了很多的帮助。前些时候看到shaker写出的一些传奇外挂的文章之后,再根据自己的研究对外挂知识也算是有了个初步的了解。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 外挂分为2种，一种是脱机程序，也就是模拟客户端的程序称为外挂.另一种是利用游戏程序本身的函数对游戏进行一些相关动作的称之为内挂，因为是在游戏进程内部完成任务的。今天要说的是传奇2(虽然这游戏过时了但作为研究来说还是值得的:)内挂的一点点知识，其实我也不太懂，复杂的东西也弄不出来,所以我就把我所学到的一点点知识写了出来，希望更多的人能够了解这方面的知识。</p>
<p>本文没有什么技术可言,但相信对一些未入门的人很有用.</p>
<p>第一步:&nbsp; 首先我们得将传奇的mir.dat脱壳有些私服没有mir.dat那就看看mir.exe,我们查得他是用aspack加的壳,你可以去网上下载相关工具也可以手动脱掉. 这样传奇2现在就是赤裸裸的站在我们面前了:) 现在要做的就是给他开开刀，看他的心肝肠肺都在做些什么，在哪里长着.....</p>
<p>第二步:我们用OLLYDBG加载刚才已经脱壳的mir.dat,然后我们利用插件菜单里的中文字符插件来获得相关信息,如果你没有此插件可以去<a href="http://www.pediy.com/"><font color=#002c99><u>www.pediy.com</u></font></a>找找.不一会儿od给我们呈现出了很多的字符串信息，我们现在就搜索他的&#8220;肺&#8221;-（"攻城区域"）我们找到如下图:<img src="http://www.cppblog.com/images/cppblog_com/liquidx/222.jpg" border=0></p>
<p>在此行双击鼠标左键我们来到:</p>
<p><img src="http://www.cppblog.com/images/cppblog_com/liquidx/333.jpg" border=0></p>
<p>经过调试确定这里就是个屏幕输出就是在我们攻城的时候屏幕左上角显示的那几个字.</p>
<p>0047A4B3&nbsp;&nbsp;&nbsp; .&nbsp; 68 FFFFFF00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push 0FFFFFF&nbsp;&nbsp; //字体颜色<br>0047A4B8&nbsp;&nbsp;&nbsp; .&nbsp; 6A 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //背景色<br>0047A4BA&nbsp;&nbsp;&nbsp; .&nbsp; 68 94A54700&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push unpacked.0047A594 <br>0047A4BF&nbsp;&nbsp;&nbsp; .&nbsp; 33C9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xor ecx,ecx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //x坐标<br>0047A4C1&nbsp;&nbsp;&nbsp; .&nbsp; 33D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xor edx,edx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //y坐标<br>0047A4C3&nbsp;&nbsp;&nbsp; .&nbsp; 8B45 F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov eax,dword ptr ss:[ebp-8] //设备场景句柄<br>0047A4C6&nbsp;&nbsp;&nbsp; .&nbsp; E8 D5640200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call unpacked.004A09A0 //内部屏幕输出函数</p>
<p>&nbsp;那么我们就写出这个函数</p>
<p>typedef struct<br>{<br>&nbsp;int len;<br>&nbsp;char text[100];<br>}DT;</p>
<p>void&nbsp; SText(DWORD eax1)<br>{<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; DT dstring;<br>&nbsp;&nbsp;&nbsp; strcpy(dstring.text,(char*)string);<br>&nbsp;&nbsp;&nbsp; dstring.len=strlen(string);<br>&nbsp;&nbsp;&nbsp; txtaddress=(DWORD)&amp;dstring.text[0];<br>&nbsp;_asm<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax, eax1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call setshowmode1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call setshowmode2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push TRANSPARENT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call setshowmode3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push txtcolor<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push bkcol<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push txtaddress<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov ecx, y<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edx, x<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax, eax1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call ShowTxtcall<br>&nbsp;}<br>}</p>
<p>&nbsp;然后定义一些全局变量和一个可以动态修改输出的字符串和颜色与位置的函数：</p>
<p>const DWORD conaddress=0x47A6CC;<br>const DWORD ShowTxtcall=0x4a09a0;<br>const DWORD setshowmode1=0x44D8B4,setshowmode2=0x41834C,setshowmode3=0x406434;<br>DWORD x=0x0, y=0x0,txtcolor=0x0,bkcol=0x1e00ff;<br>DWORD&nbsp; txtaddress=0x0;</p>
<p>char* string="传奇小外挂--By LiquidX Diy 2005.6.15";</p>
<p>void settxt(char* strings,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD X,DWORD Y,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD TXTCOLOR,DWORD&nbsp;&nbsp;&nbsp;&nbsp; BKCOL)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string=strings;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x=X;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y=Y;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtcolor=TXTCOLOR;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bkcol=BKCOL;<br>}</p>
<p>&nbsp;现在我们的屏幕输出函数已经模拟出来了,下面要做的就是改掉游戏调用这个函数的入口，使这个函数跳转到我们的函数中来这样就可以由我们来输出想输出的字符串了..</p>
<p>定义一个naked函数 关于naked可以去网上查查..</p>
<p>__declspec(naked) initST()<br>{<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;_asm<br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;push eax<br>&nbsp;&nbsp;&nbsp;push edx<br>&nbsp;&nbsp;&nbsp;push ecx<br>&nbsp;&nbsp;&nbsp;push ebp//保存参数<br>&nbsp;&nbsp;&nbsp;mov eax,dword ptr[ebp-0x8] //获得我们当时eax中的值<br>&nbsp;&nbsp;&nbsp;push eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //传入eax参数<br>&nbsp;&nbsp;&nbsp;call disfunc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //调用我们的函数<br>&nbsp;&nbsp;&nbsp;pop ebp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//恢复堆栈<br>&nbsp;&nbsp;&nbsp;pop ecx<br>&nbsp;&nbsp;&nbsp;pop edx<br>&nbsp;&nbsp;&nbsp;pop eax<br>&nbsp;&nbsp;&nbsp;mov ecx,9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;jmp conaddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//返回游戏函数继续执行<br>&nbsp;}<br>&nbsp;<br>}</p>
<p>void __stdcall disfunc(DWORD eax1)<br>{<br>&nbsp;&nbsp;&nbsp; SText(eax1);//调用我们的函数<br>}</p>
<p>好了，现在基本上都完成得差不多了，现在只需要修改机器码了</p>
<p>上面代码中我们看到函数中一直都需要获得当时的eax中的值，经过跟踪分析我选择0x47a6cc处地址...</p>
<p>&nbsp;</p>
<p>代码如下：</p>
<p>LRESULT CALLBACK hookproc(int ncode ,WPARAM wparam,LPARAM lparam)<br>{<br>&nbsp;if(KEYUP(lparam)&amp;&amp;ncode==HC_ACTION&amp;&amp;wparam==VK_HOME)<br>&nbsp;{<br>&nbsp;&nbsp;settxt("ShowText Testing....终于成功啦!!!",0x120,0x80,0x0,0x00ffff);<br>&nbsp;}<br>&nbsp;if(KEYUP(lparam)&amp;&amp;ncode==HC_ACTION&amp;&amp;wparam==VK_F12)<br>&nbsp;{<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;char buf[MAX_PATH];<br>&nbsp;&nbsp;::GetClassName(GetActiveWindow(),buf,MAX_PATH);<br>&nbsp;&nbsp;if (lstrcmpi(buf,"TFrmMain")==0)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;_asm&nbsp; //改写 地址 跳转到我们的函数<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,initST<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov ebx,0x47a6cc //写入这个地址<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub eax,ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov esi,0x47a6c7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr[esi],0xe9 //JMP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr[esi+0x1],eax //合成跳转指令<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;return ::CallNextHookEx(hook,ncode,wparam,lparam);<br>}</p>
<p>现在我们的一个屏幕输出的简单内挂就完成了,根据网上提供的一些内存地址你可以给它加上更多的功能。</p>
<p>最后一件事情就是外挂退出时恢复机器码,以免游戏跳转到一个不可用的地址造成崩溃..</p>
<p>代码如下:</p>
<p>void revert()<br>{</p>
<p>&nbsp;_asm<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; mov esi,0x47A6C7<br>&nbsp;&nbsp;&nbsp;&nbsp; mov eax,0xb9<br>&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr[esi],eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov eax,0x09<br>&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr[esi+0x1],eax<br>&nbsp;}<br>}</p>
<p>全文完! 本人能力有限,有任何错误之处希望告之.以免造成误导...</p>
<p>本文配套代码下载:</p>
<p><a href="http://www.cppblog.com/Files/liquidx/mir20057122103.rar">http://www.cppblog.com/Files/liquidx/mir20057122103.rar</a><a href="http://www.oioj.net/blog/user2/16215/upload/20057122103.rar"><font color=#002c99><u></u></font></a><a href="http://www.oioj.net/blog/user2/16215/upload/20057122103.rar"></a></p>
<p>作者QQ:380000937 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#105;&#113;&#117;&#105;&#100;&#120;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;"><font color=#002c99><u>mailto:liquidx@163.com</u></font></a></p>
<p>等过些天把我收集的一些外挂源码整理一下提供给大家下载研究 :)</p>
<p>相关交流论坛:www.gameres.com,www.cnesort.com</p>
<p>相关资料</p>
<p>全屏看血<br>内存地址:47A0D3<br>75&nbsp;EB<br>原版:00000075108B45EC<br>新版:000000EB108B45EC<br>}&nbsp; </p>
<p>&nbsp;</p>
<p><br>&lt;P&gt;{强行退出<br>内存地址:004620E6(7)<br>74&nbsp;90<br>0D&nbsp;90<br>原版:2000740D8B45<br>新版:200090908B45<br>内存地址:00462162(3)<br>74&nbsp;90<br>0A&nbsp;90<br>原版:2000740A8B45<br>新版:200090908B45<br>内存地址:4914CA(B)<br>内存地址:491576(7)<br>74&nbsp;90<br>0E&nbsp;90<br>原版:0080782000740EA1<br>新版:00807820009090A1<br>}&lt;/P&gt;<br>&lt;P&gt;{免助跑<br>内存地址:00461BEB(C-F0)<br>0F&nbsp;90<br>8E&nbsp;90<br>79&nbsp;90<br>FD&nbsp;90<br>FF&nbsp;90<br>FF&nbsp;90<br>原版:E8000F8E79FDFFFF<br>新版:E800909090909090<br>内存地址:461BB9(A-E)<br>0F&nbsp;90<br>8C&nbsp;90<br>DA&nbsp;90<br>00&nbsp;90<br>00&nbsp;90<br>00&nbsp;90<br>原版:00010F8CDA000000A1<br>新版:0001909090909090A1<br>}&lt;/P&gt;<br>&lt;P&gt;{跑步砍<br>内存地址:004634E2<br>00&nbsp;01<br>原版:4F00008D45F0<br>新版:4F00018D45F0<br>}&lt;/P&gt;<br>&lt;P&gt;{攻击速度<br>内存地址:467016(7)<br>78&nbsp;E2<br>05&nbsp;04<br>原版:EB0BB87805<br>新版:EB0BB84805<br>说明:速度由二位数指定，二位数前后互换为真实数据，数字大为慢小为快<br>}&lt;/P&gt;<br>&lt;P&gt;{穿人<br>内存地址:472D17<br>34&nbsp;0C<br>原版:00000034018845<br>新版:0000000C018845<br>}&lt;/P&gt;<br>&lt;P&gt;{免蜡<br>内存地址:471BDE<br>74&nbsp;EB<br>原版:008038007454<br>新版:00803800EB54<br>}&lt;/P&gt;<br>&lt;P&gt;{物品闪光<br>内存地址:471AA6<br>04<br>原版:1300007625<br>新版:0200007625<br>}&lt;/P&gt;<br>&lt;P&gt;{自动放药<br>0048C21F&nbsp;F9&nbsp;68&nbsp;FD&nbsp;FF<br>004623A2&nbsp;76&nbsp;07&nbsp;00&nbsp;00<br>0048C21F&nbsp;DD&nbsp;50&nbsp;B0&nbsp;01<br>004623A2&nbsp;7A&nbsp;ED&nbsp;B2&nbsp;01<br>}&lt;/P&gt;<br>&lt;P&gt;{超负重??<br>Poke&nbsp;00499A40&nbsp;EB<br>004975A8&nbsp;EB&nbsp;5C<br>00499A40&nbsp;EB&nbsp;93&lt;/P&gt;<br>&lt;P&gt;{攻击方法修改一<br>原版<br>00463425&nbsp;74&nbsp;1C<br>0046344A&nbsp;74&nbsp;10<br>00463463&nbsp;74&nbsp;15&lt;/P&gt;<br>&lt;P&gt;半月<br>00463425&nbsp;74&nbsp;1C<br>0046344A&nbsp;74&nbsp;10<br>00463463&nbsp;90&nbsp;90<br>攻杀<br>00463425&nbsp;74&nbsp;1C<br>0046344A&nbsp;90&nbsp;90<br>00463463&nbsp;74&nbsp;15<br>烈火<br>00463425&nbsp;90&nbsp;90<br>0046344A&nbsp;74&nbsp;10<br>00463463&nbsp;74&nbsp;15&lt;/P&gt;<br>&lt;P&gt;方法二&lt;/P&gt;<br>&lt;P&gt;半月<br>Poke&nbsp;00463363&nbsp;D0<br>烈火<br>Poke&nbsp;00463363&nbsp;D1<br>普通<br>Poke&nbsp;00463363&nbsp;C6&lt;/P&gt;<br>&lt;P&gt;C745E8&nbsp;C60B&nbsp;单手砍<br>C745E8&nbsp;C70B&nbsp;双手砍<br>C745E8&nbsp;C80B&nbsp;跳跃砍<br>C745E8&nbsp;CA0B&nbsp;攻杀<br>C745E8&nbsp;CB0B&nbsp;刺杀<br>C745E8&nbsp;D00B&nbsp;半月<br>C745E8&nbsp;D10B&nbsp;烈火<br>}&lt;/P&gt;<br>&lt;P&gt;{无限刺杀<br>内存地址:463363<br>C6&nbsp;CB<br>原版:C745E8C60B<br>新版:C745E8CB0B<br>内存地址:463373<br>C7&nbsp;CB<br>原版:C745E8C70B<br>新版:C745E8CB0B<br>}&lt;/P&gt;<br>&lt;P&gt;{无限攻杀<br>内存地址:463363<br>C6&nbsp;CA<br>原版:C745E8C60B<br>新版:C745E8CA0B<br>内存地址:463373<br>C7&nbsp;CA<br>原版:C745E8C70B<br>新版:C745E8CA0B<br>&lt;/P&gt;</p>
<img src ="http://www.cppblog.com/liquidx/aggbug/87217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liquidx/" target="_blank">liquidx</a> 2009-06-09 17:40 <a href="http://www.cppblog.com/liquidx/archive/2009/06/09/87217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>