﻿<?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++博客-Mycode.h-随笔分类-乱劈柴</title><link>http://www.cppblog.com/mtysblog/category/15736.html</link><description>just for coding</description><language>zh-cn</language><lastBuildDate>Sat, 25 Dec 2010 16:43:34 GMT</lastBuildDate><pubDate>Sat, 25 Dec 2010 16:43:34 GMT</pubDate><ttl>60</ttl><item><title>[z] 制作WINRAR自解压windows环境说明</title><link>http://www.cppblog.com/mtysblog/archive/2010/12/25/137414.html</link><dc:creator>_飞寒</dc:creator><author>_飞寒</author><pubDate>Sat, 25 Dec 2010 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/mtysblog/archive/2010/12/25/137414.html</guid><wfw:comment>http://www.cppblog.com/mtysblog/comments/137414.html</wfw:comment><comments>http://www.cppblog.com/mtysblog/archive/2010/12/25/137414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mtysblog/comments/commentRss/137414.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mtysblog/services/trackbacks/137414.html</trackback:ping><description><![CDATA[<p>WINRAR 的帮助文件中没有对自解压路径和系统的环境变量之间作说明，所以，很多人只知道，其自解压路径可以智能定位到系统的 PROGRAM FILES 目录，而不知道它其实还可以智能定位到系统的任何地方：</p>
<p>%SystemDrive% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作系统所在的分区号。如&nbsp;&nbsp; C: <br>%SystemRoot% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作系统根目录。如 C:\WINDOWS <br>%windir% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作系统根目录。如 C:\WINDOWS <br>%ALLUSERSPROFILE% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; C:\Documents and Settings\All Users <br>%APPDATA% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; C:\Documents and Settings\用户目录\Application Data <br>%ProgramFiles% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; C:\Program Files <br>%CommonProgramFiles% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; C:\Program Files\Common Files <br>%HOMEDRIVE% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作系统所在的分区号。如：C: <br>%HOMEPATH% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp;&nbsp;&nbsp; \Documents and Settings\用户目录 <br>%USERPROFILE% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp;&nbsp;&nbsp; C:\Documents and Settings\用户目录 <br>有了上面这些变量值，我们就好办了，几乎可以向系统的任何地方拷贝文件了。 <br>比如： <br>字体目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %WINDIR%\FONTS <br>帮助目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %WINDIR%\Help <br>输入法目录&nbsp;&nbsp;&nbsp;&nbsp; %WINDIR%\IME <br>桌面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %USERPROFILE%\桌面 <br>右键菜单&#8220;发送到&#8221;&nbsp;&nbsp;&nbsp;&nbsp; %USERPROFILE%\SendTo <br>收藏夹&nbsp;&nbsp;&nbsp;&nbsp; %USERPROFILE%\Favorites <br>快速启动&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %APPDATA%\Microsoft\Internet Explorer\Quick Launch <br>「开始」菜单&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %USERPROFILE%\「开始」菜单 <br>...... <br>　当前系统盘符%systemdrive%或%HOMEDRIVE%C:\ <br>　　当前系统目录%systemroot%或%Windir%C:\WINDOWS <br>　　当前用户文件夹%UserProfile%或%HOMEPATH%C:\Documents and Settings\Administrator <br>　　所有用户文件夹%AllUsersProfile%C:\Documents and Settings\All Users <br>　　临时文件夹1%temp%C:\Documents and Settings\Administrator\Local Settings\Temp <br>　　临时文件夹2%SystemRoot%\TEMPC:\WINDOWS\Temp <br>　　程序文件夹%ProgramFiles%C:\Program Files</p>
<p>还有： <br>%WINDIR%\SYSTEM32\config&nbsp;&nbsp; <br>%ProgramFiles%\Adobe <br>%CommonProgramFiles%\Macromedia <br>......等等。所以，用好系统的环境变量， WINRAR 的自解压功能就如虎添翼了。</p>
<p><br>==========================================================================</p>
<p>Title</p>
<p>设置自解压的窗口标题。</p>
<p>Title=标题</p>
<p>Delete</p>
<p>在解压到目标文件夹之前删除指定的文件，允许数个 Delete 命令。</p>
<p>Delete=文件名</p>
<p>License</p>
<p>当运行自解压文件时显示指定的作为软件许可协议文本。用户既可以接受它并继续解压或者拒绝它并退出。（可以使用 HTML ）</p>
<p>License=许可协议对话框标题</p>
<p>{</p>
<p>许可协议文本 1</p>
<p>许可协议文本 2</p>
<p>...</p>
<p>}</p>
<p>Overwrite</p>
<p>如果[n]为 0，在覆盖文件之前用户将会被先询问。这是 覆盖 命令的默认动作，可以不需要指定。如果[n]不存在或是等于[1]，文件将在没有确认的状况下全部覆盖。如果[n]等于[2]，所有已存在的文件将不会被覆盖。</p>
<p>Overwrite=n</p>
<p>Silent</p>
<p>开始解压时不显示开始对话框。</p>
<p>参数 可以是 1 或 2。如果 参数 是 1，开始解压对话框会完全隐藏，包含进程指示和文件名。如果 参数 是 2，则跳过开始解压的确认，但用户仍然可以看到压缩文件的解压进程。</p>
<p>Silent=参数</p>
<p>Path</p>
<p>设置默认的目标路径。路径的绝对使用起始点在不更改的情况下为&lt;驱动器号&gt;:，如果 &lt;路径&gt; 只包含了名称，它将会被附加到&#8220;Program Files&#8221;文件夹下，如果你希望关闭如此的作用，请从&#8220;.\&#8221;字符开始定义起始 &lt;路径&gt;。</p>
<p>Path=路径</p>
<p>Presetup</p>
<p>自解压在解压之前将试着运行 &lt;程序&gt;，在运行 &lt;程序&gt; 之前必须先指定目标文件夹。你可以使用此命令，比如说，当安装新版本于旧版本上面时，用以删除先前的程序版本。如果程序名包含空格，它必须包含在引号之内。</p>
<p>Presetup=程序</p>
<p>SavePath</p>
<p>这个命令允许自解压程序在注册表中存储用户输入的目标路径，并在自解压文件下一次运行时恢复相同的 Path。原来的 Path</p>
<p>命令内容被放在输入目标路径区域的列表下拉菜单中，所以用户可以在以前输入的和原始路径中选择。</p>
<p>当安装新版本或更新一些软件到同样的目录时，这个功能可能很便利。它允许只改变一次目标路径，而不需要每次都输入。</p>
<p>SavePath 命令只能和 Path 命令一起使用一次。</p>
<p>Setup</p>
<p>在成功解压之后自解压将会试着运行 &lt;程序&gt;。在运行 &lt;程序&gt; 之前，包含已解压文件的文件夹将会设为当前文件夹</p>
<p>Setup=程序</p>
<p>注意</p>
<p>1) 如果你在使用自解压运行 InstallShield setup.exe 有问题的话，请试着运行 &#8220;setup.exe /SMS&#8221; 来代替简洁的 &#8220;setup.exe&#8221;。此开关允许自解压检测安装程序的退出。</p>
<p>2) 全部在自解压命令行所指定的参数都会从 Setup=&lt;程序&gt; 命令提交给程序，自解压它自己则只认得 -s 开关，也就是强制缄默安装模式而不显示开始对话框。</p>
<p>TempMode</p>
<p>此命令强制自解压创建一个临时目录，将全部文件解压至此，然后开始运行 Setup 命令所指定的程序，并在完成 Setup 程序之后将临时目录中的内容全部清除。当运行这些操作时，自解压会自动设置为 缄默模式。如果 TempMode 命令存在的话，叙述中将有 Setup 命令且不得使用 path 命令。</p>
<p>TempMode 命令可以有字符串参数的选项，在解压之前可用以定义问题和问题的标题。这样的例子，仅在当用户选择了&#8220;是&#8221; 按钮时才会开始解压。</p>
<p>a)TempMode</p>
<p>b)TempMode=问题叙述,窗口标题文本</p>
<p>Text</p>
<p>它在自解压模块的输出窗口添加指定纯文本或HTML字符串。当自解压模块第一次遇到 Text 命令，在添加&lt;字符串&gt;前，它重设这个窗口默认内容。其后的命令追加&lt;字符串&gt;到已经存在的文本后。</p>
<p>依赖于使用的语法，这个命令可以一次添加一个或者数个字符串。</p>
<p>对于纯文本的过程中，为了使字符串和对话框匹配，自解压模块将合并和重新格式化指定的字符串。所以如果你希望重新产生一个新的段落，你需要在它前面放一个空的字符串。（可以使用 HTML ）</p>
<p>a)</p>
<p>Text=字符串</p>
<p>b)</p>
<p>Text</p>
<p>{</p>
<p>字符串 1</p>
<p>字符串 2</p>
<p>...</p>
<p>}</p>
<p>shortcut</p>
<p>解压时创建快捷方式</p>
<p>shortcut=目标类型,文件路径,目标文件夹,描述,快捷方式名</p>
<p>目标类型 是一个一个字符宽的区域，可以有下列值：</p>
<p>D 在桌面创建快捷方式</p>
<p>S 在开始菜单创建快捷方式</p>
<p>P 在开始菜单/程序中创建快捷方式</p>
<p>T 在启动菜单中创建快捷方</p>
<br>/*----------------------------------------------------------------*/<br><a href="http://www.xiaojian.org/html/29.html">http://www.xiaojian.org/html/29.html</a>&nbsp; 小健博客 
<img src ="http://www.cppblog.com/mtysblog/aggbug/137414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mtysblog/" target="_blank">_飞寒</a> 2010-12-25 11:30 <a href="http://www.cppblog.com/mtysblog/archive/2010/12/25/137414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于开源魔兽世界模拟器</title><link>http://www.cppblog.com/mtysblog/archive/2010/12/20/137023.html</link><dc:creator>_飞寒</dc:creator><author>_飞寒</author><pubDate>Mon, 20 Dec 2010 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/mtysblog/archive/2010/12/20/137023.html</guid><wfw:comment>http://www.cppblog.com/mtysblog/comments/137023.html</wfw:comment><comments>http://www.cppblog.com/mtysblog/archive/2010/12/20/137023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mtysblog/comments/commentRss/137023.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mtysblog/services/trackbacks/137023.html</trackback:ping><description><![CDATA[<h3><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在sourceforge上开发的mangos(Massive Network Game Object Server）项目是基于GPL协议的。据说是和魔兽世界独立无关的网络游戏服务器引擎程序。游戏的内容部分（数据库内容）又是由独立的小组开发的，这样也许避免了很多法律上的问题。但是大多数魔兽世界的盈利的私服都是基于这个开源的项目的，为此开发小组表示这样盈利性质的服务器和对他们项目的使用是违背协议和非法的。<br><br>　　本文对mangos作一个粗略的介绍，并且使用了魔兽世界的客户端对mangos作了一些测试。<br><br>　　开源社区常常有很多出人意表的项目，让人往往击节叹赏。例如当年在普通PC电脑上虚拟运行苹果机系统的pearpc。把微软游戏机xbox改装成家庭影音中心的xbox-media-center，以及在ipod上安装linux的ipodlinux等项目。在电脑游戏方面当然也有很多出色的开源项目。<br><br>　　暴雪公司的游戏历来都是精品。网络游戏大热以后，它推出的基于10年游戏历史的网游：《魔兽世界》也更是名声在外（当然有好有坏，坏名声在于它太吸引人以致于很多人沉湎其中）。网络游戏的盈利模式和传统电脑游戏不同，月费和其他的周边产品使得其赢利空间远远大于传统电脑游戏。对于网游运营商来说很大的一个问题是私服的问题。很多私服的软件是从网游开发公司或者运营公司内部非法的流出来的，比如说网游《仙境传说》的私服。<br><br>　　而现在大多数魔兽世界的&#8220;私服&#8221;实际上是服务端软件的模拟器。是在对客户端游戏软件和与服务端的进行通信的数据进行分析解密以后，开发出来的模拟原游戏服务器功能的软件，这样的模拟器软件大都也是开源软件。比如像现在大部分魔兽私服使用的Mangos服务端软件，mangos项目是一个开源的自由软件（如同linux或者 firefox），并且遵守其中最为严格的GPL协议。<br><br>　　MaNGOS 是(Massive Network Game Object Server）的缩写。由于暴雪公司对类似的开发小组采取过一些法律行动。为了避免麻烦，如同它的名字，mangos强调自己并非一个魔兽服务器模拟器，而是一个开源的多人在线游戏服务器的软件。说到底是个网游的游戏引擎。Mangos开发小组强调其软件是用c++和C#编程语言，实现的一个支持大型多人在线角色扮演游戏服务器的程序框架，在这个框架下，它理论上应该支持任何客户端的网络游戏，由于现在很多人使用魔兽世界来对它进行测试，所以针对魔兽世界的脚本和数据库文件比较完善，很多人就利用这个开源项目来实现魔兽私服。而游戏的内容，例如故事情节，任务场景的脚本等都是由别的小组独立开发的。<br><br>　　开发小组一再强调，这是个研究，教育性质的对怎样开发大型网游的服务器端有好处的项目，是一个技术细节毫无保留向公众开放的软件，是一件很有意义的事情，如果你使用它作为盈利目的，那你本身就违反了软件的协议。所以任何利用mangos项目进行私服活动的组织和个人都违反了mangos的宗旨，mangos项目也不会对它们负责。<br><br>　　mangos的技术细节上是这样的，核心部分是个和特定游戏没有关系的核心框架程序，主要是进行进程调度，创造世界，建立心跳机制，处理网络接入等。数据库可以使用的开源数据库软件MySQL。至于游戏内容数据库，游戏人物，时间，世界脚本，都是由这个核心程序所支持的扩展脚本来实现，所以有一些独立出来的项目专门模拟魔兽世界来开发支持mangos的核心程序。现在mangos的核心程序已经放到著名的协同开发网站 sourceforge上开发了，使用的开发工具是subversion。大家都可以从sourceforge的subversion数据库中下载最新的源代码程序。</font></h3>
<h3><font size=2>ps:</font></h3>
<h3><font size=2>&nbsp;&nbsp;&nbsp; MaNGOS是WoW的模拟服务器端工程,架设在sourceforge上,使用C++,开放源码,代码写的很清楚,架构清晰,质量很高.个人看重的,是其对3D游戏服务端编程的通用流程和问题的处理手法和经验.研究消息包结构,一般就能推断WoW采取哪种逻辑方案来解决一些棘手的通用问题,而服务端编程质量在很大程度上取决于程序员的经验.由于采用大量优雅的模板技法,MaNGOS的编译速度很成问题,调试变得有点困难.</font></h3>
<h3><font size=2>&nbsp;</font></h3>
<img src ="http://www.cppblog.com/mtysblog/aggbug/137023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mtysblog/" target="_blank">_飞寒</a> 2010-12-20 20:51 <a href="http://www.cppblog.com/mtysblog/archive/2010/12/20/137023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>