﻿<?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++博客-jack-wang-随笔分类-开源项目</title><link>http://cppblog.com/jack-wang/category/10928.html</link><description>小王</description><language>zh-cn</language><lastBuildDate>Sat, 23 Nov 2013 17:09:12 GMT</lastBuildDate><pubDate>Sat, 23 Nov 2013 17:09:12 GMT</pubDate><ttl>60</ttl><item><title>protobuf使用方法</title><link>http://www.cppblog.com/jack-wang/archive/2013/11/22/204378.html</link><dc:creator>小王</dc:creator><author>小王</author><pubDate>Fri, 22 Nov 2013 03:07:00 GMT</pubDate><guid>http://www.cppblog.com/jack-wang/archive/2013/11/22/204378.html</guid><wfw:comment>http://www.cppblog.com/jack-wang/comments/204378.html</wfw:comment><comments>http://www.cppblog.com/jack-wang/archive/2013/11/22/204378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jack-wang/comments/commentRss/204378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jack-wang/services/trackbacks/204378.html</trackback:ping><description><![CDATA[下载protobuf-2.5.0（解压到D:\下）<br />编译，在目录D:\protobuf-2.5.0\vsprojects\Debug之下，生成若干.lib,.exe程序（好乱，中间文件和生成文件都放到一个目录下了，眼都看花了）<br /><br />另外单独建立新项目test<br />将protobuf-2.5.0中生成的libprotobuf.lib、libprotoc.lib、protoc.exe复制到新项目Test的工作目录下<br /><br />在新项目test工作目录下新建文本文件test.proto<br />编辑文件test.proto内容如下:<br /><br /><span style="color: #000000">package Test;<br />message Person <br /></span><span id="Codehighlighter1_30_114_Open_Text"><span style="color: #000000">{<br />&nbsp;&nbsp;&nbsp;required </span><span style="color: #0000ff">string</span><span style="color: #000000"> name </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;required int32 id </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;optional </span><span style="color: #0000ff">string</span><span style="color: #000000"> email </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">3</span><span style="color: #000000">;<br />}<br /><br /></span></span>在控制台中输入命令<br />protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/test.proto<br />（翻译一下：protoc -I=D:\test\test --cpp_out=D:\test\test D:\test\test\person.proto）<br />生成文件：<br />person.pb.cc<br />person.pb.h<br />将这两个文件加入到新项目test中，编译新项目<br />o了！<br /><br /><br /><br /><br />附：新项目中使用protobuf自动生成的c++文件的相关代码<br /><br />
<p>#include "stdafx.h"<br />#include "person.pb.h"<br />#include &lt;iostream&gt;<br />#include &lt;fstream&gt;</p>
<p><br />int _tmain(int argc, _TCHAR* argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;// Verify that the version of the library that we linked against is<br />&nbsp;&nbsp;&nbsp; // compatible with the version of the headers we compiled against.<br />&nbsp;&nbsp;&nbsp; GOOGLE_PROTOBUF_VERIFY_VERSION;</p>
<p>&nbsp;&nbsp;&nbsp; // 设置数据， 并序列化到文件<br />&nbsp;&nbsp;&nbsp; Test::Person person;<br />&nbsp;&nbsp;&nbsp; person.set_id( 123 );<br />&nbsp;&nbsp;&nbsp; person.set_name( "abc" );<br />&nbsp;&nbsp;&nbsp; person.set_email( "abc<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#105;&#113;&#117;&#105;&#100;&#120;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;">@163.com</a>" );</p>
<p>&nbsp;&nbsp;&nbsp; std::fstream out( "person.pb", std::ios::out | std::ios::binary | std::ios::trunc );<br />&nbsp;&nbsp;&nbsp; person.SerializeToOstream( &amp;out );<br />&nbsp;&nbsp;&nbsp; out.close();</p>
<p>&nbsp;&nbsp;&nbsp; // 从文件中读取数据， 并且反序列化<br />&nbsp;&nbsp;&nbsp; Test::Person person1;<br />&nbsp;&nbsp;&nbsp; std::fstream in( "person.pb", std::ios::in | std::ios::binary );<br />&nbsp;&nbsp;&nbsp; if ( !person1.ParseFromIstream( &amp;in ) ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Failed to parse person.pb." &lt;&lt; std::endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br />&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "ID: " &lt;&lt; person1.id() &lt;&lt; std::endl;<br />&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "name: " &lt;&lt; person1.name() &lt;&lt; std::endl;<br />&nbsp;&nbsp;&nbsp; if ( person1.has_email() ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "e-mail: " &lt;&lt; person1.email() &lt;&lt; std::endl;<br />&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; // Optional:&nbsp; Delete all global objects allocated by libprotobuf.<br />&nbsp;&nbsp;&nbsp; google::protobuf::ShutdownProtobufLibrary();</p>
<p>&nbsp;&nbsp;&nbsp; getchar();</p>
<p>&nbsp;return 0;<br />}</p><br /><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/jack-wang/aggbug/204378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jack-wang/" target="_blank">小王</a> 2013-11-22 11:07 <a href="http://www.cppblog.com/jack-wang/archive/2013/11/22/204378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>魔兽世界私服trinitycore2的架构——世界对象</title><link>http://www.cppblog.com/jack-wang/archive/2010/07/11/120057.html</link><dc:creator>小王</dc:creator><author>小王</author><pubDate>Sat, 10 Jul 2010 17:53:00 GMT</pubDate><guid>http://www.cppblog.com/jack-wang/archive/2010/07/11/120057.html</guid><wfw:comment>http://www.cppblog.com/jack-wang/comments/120057.html</wfw:comment><comments>http://www.cppblog.com/jack-wang/archive/2010/07/11/120057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jack-wang/comments/commentRss/120057.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jack-wang/services/trackbacks/120057.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">转自：<a href="http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx">http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx</a><br><br>假设世界突然静止，你能够从中单独去掉的物体就是构成这个世界的对象，包括玩家、怪物、武器、矿石等。魔兽世界是个大型的网游，里面的种类十分丰富，更不用说对象了。当我看着trinity-core2的源码中，game目录的时候，有种傻眼的感觉，实在太多了。为了理解方便，我们抽丝剥茧，分析出类的继承关系。</p>
<p style="FONT-SIZE: 10pt">在tc2中，所有的对象都被认为是object，以object作为基类，以1.2.3格式表示继承关系，如：1 --&gt; object&nbsp; ；1.2 --&gt; worldobject。1.2表示worldobject继承自1（object）。下面列出完整的对象继承族谱。</p>
<p style="FONT-SIZE: 10pt">1、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object</p>
<p style="FONT-SIZE: 10pt">1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【物品，比如武器】</p>
<p style="FONT-SIZE: 10pt">1.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【包裹，特殊的物品，可以容纳其他物品】</p>
<p style="FONT-SIZE: 10pt">1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorldObject&nbsp;&nbsp;&nbsp;&nbsp; 【显示在地图上的物体】</p>
<p style="FONT-SIZE: 10pt">1.2.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Corpse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【尸体】</p>
<p style="FONT-SIZE: 10pt">1.2.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DynamicObject 【动态生成的对象，比如魔法，生命周期比较短】</p>
<p style="FONT-SIZE: 10pt">1.2.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GameObject&nbsp;&nbsp;&nbsp;&nbsp; 【游戏物品，这个分类很难从字面上理解，后面会比较详细的介绍】</p>
<p style="FONT-SIZE: 10pt">1.2.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transport&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【传送点】</p>
<p style="FONT-SIZE: 10pt">1.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【游戏中有生命的单位】</p>
<p style="FONT-SIZE: 10pt">1.2.4.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Creature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【生物，非玩家】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TempSummon&nbsp;&nbsp; 【临时召唤物】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Minion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【宠物】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Guardian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【守卫】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2.1.1.1&nbsp;&nbsp; Pet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【玩家的宠物，比如猎人的宠物，或者术士的恶魔，除非主人解散，否则一直存在】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2.1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Puppet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【傀儡，有一定的存在时间。比如德鲁依的树人】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2.1.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Totem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【图腾，萨满的图腾】</p>
<p style="FONT-SIZE: 10pt">1.2.4.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Player&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【玩家，就不用多解释了】</p>
<p style="FONT-SIZE: 10pt">将整个魔兽世界分解静态物体和静态物体的行为，就比较好理解了。事实上，现实世界也是如此。将世界划分为时间和空间2个维度，现实物体就是空间的概念，行为就是空间物体在时间维度上的变化。象光或者其他不可见或者没有空间占位的物品也可以看作特殊的空间物体。我在这里先将空间维度将分离出来分析。</p>
<p style="FONT-SIZE: 10pt">差点忘了介绍GameObject这个另类。在GameObject.h中，有个struct GameObjectInfo定义，里面有个union能大概看出GameObject究竟指的是哪些东西。</p>
<p style="FONT-SIZE: 10pt">0、GAMEOBJECT_TYPE_DOOR，指的是门</p>
<p style="FONT-SIZE: 10pt">1、GAMEOBJECT_TYPE_BUTTON，应该是按钮，锁之类的。</p>
<p style="FONT-SIZE: 10pt">2、GAMEOBJECT_TYPE_QUESTGIVER任务物品</p>
<p style="FONT-SIZE: 10pt">3、GAMEOBJECT_TYPE_CHEST箱子</p>
<p style="FONT-SIZE: 10pt">4、GAMEOBJECT_TYPE_BINDER没定义，估计没有用上。</p>
<p style="FONT-SIZE: 10pt">5、GAMEOBJECT_TYPE_GENERIC通用的，跟任务相关的东西</p>
<p style="FONT-SIZE: 10pt">6、GAMEOBJECT_TYPE_TRAP陷阱</p>
<p style="FONT-SIZE: 10pt">7、GAMEOBJECT_TYPE_CHAIR椅子</p>
<p style="FONT-SIZE: 10pt">8、GAMEOBJECT_TYPE_SPELL_FOCUS没搞懂啥玩意儿。</p>
<p style="FONT-SIZE: 10pt">9、GAMEOBJECT_TYPE_TEXT文本</p>
<p style="FONT-SIZE: 10pt">10、GAMEOBJECT_TYPE_GOOBER应该是果实一类的吧。</p>
<p style="FONT-SIZE: 10pt">11、GAMEOBJECT_TYPE_TRANSPORT传送点</p>
<p style="FONT-SIZE: 10pt">12、GAMEOBJECT_TYPE_AREADAMAGE区域性伤害，没搞懂啥玩意儿。</p>
<p style="FONT-SIZE: 10pt">13、GAMEOBJECT_TYPE_CAMERA照相机，再研究下</p>
<p style="FONT-SIZE: 10pt">14、GAMEOBJECT_TYPE_MAPOBJECT地图对象，空着</p>
<p style="FONT-SIZE: 10pt">15、GAMEOBJECT_TYPE_MO_TRANSPORT地图对象的传送，不知道啥玩意儿。</p>
<p style="FONT-SIZE: 10pt">16、GAMEOBJECT_TYPE_DUELFLAG决斗标志，估计就是PK，插旗吧。空着没用</p>
<p style="FONT-SIZE: 10pt">17、GAMEOBJECT_TYPE_FISHINGNODE钓鱼点</p>
<p style="FONT-SIZE: 10pt">18、GAMEOBJECT_TYPE_SUMMONING_RITUAL仪式，不知道干啥。估计跟术士拉人那东西有关。</p>
<p style="FONT-SIZE: 10pt">19、GAMEOBJECT_TYPE_MAILBOX邮箱</p>
<p style="FONT-SIZE: 10pt">20、GAMEOBJECT_TYPE_DONOTUSE顾名思义，没用</p>
<p style="FONT-SIZE: 10pt">21、GAMEOBJECT_TYPE_GUARDPOST岗哨，是某种生物</p>
<p style="FONT-SIZE: 10pt">22、GAMEOBJECT_TYPE_SPELLCASTER魔法施放。</p>
<p style="FONT-SIZE: 10pt">23、GAMEOBJECT_TYPE_MEETINGSTONE集合石</p>
<p style="FONT-SIZE: 10pt">24、GAMEOBJECT_TYPE_FLAGSTAND不知道啥玩意儿。</p>
<p style="FONT-SIZE: 10pt">25、GAMEOBJECT_TYPE_FISHINGHOLE估计也是钓鱼点</p>
<p style="FONT-SIZE: 10pt">26、GAMEOBJECT_TYPE_FLAGDROP掉落标记</p>
<p style="FONT-SIZE: 10pt">27、GAMEOBJECT_TYPE_MINI_GAME也没懂是啥玩意儿。</p>
<p style="FONT-SIZE: 10pt">28、GAMEOBJECT_TYPE_CAPTURE_POINT应该是部落和联盟争夺地区</p>
<p style="FONT-SIZE: 10pt">29、GAMEOBJECT_TYPE_AURA_GENERATOR灵气</p>
<p style="FONT-SIZE: 10pt">30、GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY地下城难度</p>
<p style="FONT-SIZE: 10pt">31、GAMEOBJECT_TYPE_BARBER_CHAIR理发师的椅子，唉，都啥玩意儿啊。</p>
<p style="FONT-SIZE: 10pt">32、GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING可摧毁的建筑</p>
<p style="FONT-SIZE: 10pt">33、GAMEOBJECT_TYPE_GUILDBANK工会银行，空，不可见。</p>
<p style="FONT-SIZE: 10pt">34、GAMEOBJECT_TYPE_TRAPDOOR陷阱的门。</p>
<p style="FONT-SIZE: 10pt">应该说，GameObject是描述游戏中，除装备、生物、魔法外，无法准确归类的东西，比较杂，因此只能笼统归结为游戏对象</p>
<p style="FONT-SIZE: 10pt"><br>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx">http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx</a></p>
<img src ="http://www.cppblog.com/jack-wang/aggbug/120057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jack-wang/" target="_blank">小王</a> 2010-07-11 01:53 <a href="http://www.cppblog.com/jack-wang/archive/2010/07/11/120057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置mangos</title><link>http://www.cppblog.com/jack-wang/archive/2009/11/18/101269.html</link><dc:creator>小王</dc:creator><author>小王</author><pubDate>Tue, 17 Nov 2009 23:21:00 GMT</pubDate><guid>http://www.cppblog.com/jack-wang/archive/2009/11/18/101269.html</guid><wfw:comment>http://www.cppblog.com/jack-wang/comments/101269.html</wfw:comment><comments>http://www.cppblog.com/jack-wang/archive/2009/11/18/101269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jack-wang/comments/commentRss/101269.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jack-wang/services/trackbacks/101269.html</trackback:ping><description><![CDATA[编译器：VC7.1 <br />Mangos版本：未使用ACE的版本 <br />DB相关设置： <br />1. 将mangosd.conf.in和realmd.conf.in复制到MangOS\win\VC71下面(如果使用VC7.1编译)，将.in后缀去掉。 <br />否则 if(!sConfig.GetString("WorldDatabaseInfo", &amp;dbstring)) 此行代码中if()中sConfig.GetString()返回false。 <br />2. 在Navicat8中创建两个用户: <br />用户名mangos，密码mangos，主机localhost <br />用户名realmd，密码realmd，主机localhost <br />记得将全局许可权全选，否则<br />mMysql = mysql_real_connect(mysqlInit, host.c_str(), user.c_str(), password.c_str(), database.c_str(), atoi(port.c_str()), 0, 0); <br />这行代码将返回NULL。 <img src ="http://www.cppblog.com/jack-wang/aggbug/101269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jack-wang/" target="_blank">小王</a> 2009-11-18 07:21 <a href="http://www.cppblog.com/jack-wang/archive/2009/11/18/101269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>