Monthly Archives: May 2008

torque脚本编程简要说明

1)打开控制台(console)

运行torquedemo.exe进入主界面或游戏后,按 ~ 键(不用按shift,其实是`键)激活

控制台是一个调试程序的好地方

2)试一下最简单命令 echo()

在控制台键入echo(“hello!”);  (注意必须加; 就象c++一样)
可以看到console窗口就立即显示 hello!

另小看echo(),有时为了调试脚本程序,在适当的地方加入echo(),显示有关变量的值,
可以监测程序是否正确。

使用echo()时,如要输入多行语句,只须连续输入即可,torque会根据 ;来分行执行
如:

$a=1;echo($a);
输出:
  1


3)torque的脚本script的特点:

a)  无须预定义,即开即用。

b) 变量类型灵活性,如 “12″ 与12 是一样的

c) 变理大小写不敏感, %a 与%A 是一样的

d) 与c++类似,每个语名均须以 ; 作为结束标记


4)变量
   torque脚本中,$表示全局变量,%表示局部变量
   表示法: $a 为全局变量a (在网络中,全局变量只表示在本客户端的全局变量,并不是整个网络)
            %b 为局部变量b (一般用于function中)

  变量类型:
  
   a)数字型
      1234  (整数interger)
      1.234  (浮点数floation point)
      1234e-3 (科学记数scientific notation)
      0xc001  (十六进制 hexadecimal)

   b)字符型
      ”abcd”  (字符串string)
      ’abcd’  (标记字符串 tagged string)

     你可以在控制台试试:

      echo(“abcd”);
      echo(‘abcd’);  有什区别
    
     再试一下一个有意思的语句:
     echo(“1″+”2″);
     会输出:3  而不是把2个字符串连接,连接是用 @ 来操作,如:
     echo(“1″ @ “2″);
     输出:12    
     这就是torque的script脚本的灵活之处,

    更多的字符连接符:
     @   连接两个字符串
     TAB  两个字符串间加入tab
     SPC  两个字符串间加入一个空格
     NL   两个字符串间加入一个加车(换行)

    注意:这些操作符的英文必须是大写。

   如:echo(“abcd” NL “CDEF”);
  会输出:
   abcd
   CDEF

  格式化字符操作:

            
          (newline)  新行
            
          (carriage return) 回车
                       (tab)  
            c0…c9   (colorize subsequent text)  字体色
            cr         (reset to default color)  回到默认色
            cp         (push current color on color stack)把当前色设进颜色堆栈  未知使用方法
            co         (pop color from color stack)  从颜色堆栈中取色  未知使用方法
            xhh        (two digit hex value ASCII code)  这个我还不懂。。
            \          (backslash)   注解
                
较常用的是字符的颜色处理:
原则上是对后面的字符产生影响,直到一个新的字体色操作符出现,但只对当前行字符产生影响,并不会影响默认字体色。
echo(“c2hello!c0hello!”);
前一个hello!会显示红色,后一个hello!会显示正常的黑色。

  C)逻辑型
    与其它语言一样,torque也只有两个值
    true (1)
    false (0)

  d)数组(arrays)表示法:

   $AA[n]  一维数组
   $AA[M,N] 多维数组
   $AA[M_N] 多维数组的另一种表示法

  变量与数组的名字可以相同,但值并不会产和影响:

  $a=2;
  $a[0]=3;
  你试下
  echo($a);
  echo($a[0]);
  输出的是各自代表的值。
更有趣的是,torque脚本中,数组可以用如下方法指向:
接着上例,你试试:
echo($a0);
输出的是$a[0]的值,同理,如果要输出$a[0,0],可以用如下方法:
echo($a0_0);

再次可见,torque的脚本是具有相当的灵活性


d)矢量(vectors)

  格式如:”1.0 1.0 1.0 1.0″
   矢量是引擎中一个应用很广的变量类型,在3D坐标,动力,粒子,声效等等都有相应的应用。


5)操作符
   这方面与C++很相似,所以不花篇幅陈述。可以参见script的编程指南
  如 a++  a– 的用法都是与c++语言的用法一样的。

  字符串对比操作:
   $= 等于
   !$= 不等于

如:echo(“abc” $=”abc”);
  输出1
    echo(“abc” !$=”cde”);
  输出1

6)控制语句
  与c++的基本相同

a) if -then -else 判断语句

             if(表达式)
            {
                语句1;
            } else
            {
                语句2;
            }
                    
b)switch  

              switch(表达式)
            {
            case 值1:
                语句1;
                break;
            case 值2:
                语句2;
                break;
            …
            case 值N:
                语句N;
                break;
            default:  
                默认执行语句;
            };
  
注意 break; 必不可少


c)while 循环语句

            while(表达式)
            {
                 语句;
            }

7)功能模块 function              
   与c++也基本相同,定义方法
  
              function 功能模块名([参数0],…,[参数n])
            {
                语句;
                [return 返回值;]   可选
            }
  

8)物体定义 objects

介绍了一些基本的知识,这里开始进入torque特有的语法了。

在torque中,所有项目都是“物体”,并且所有游戏中的物体都可以访问,如人物,汽车,场景中的物体。
且都可以用脚本进行访问,而物体的属性是在引擎中定义的。

我们看一个脚本中的代码(节选自serverscriptsplayer.cs )

datablock PlayerData(PlayerBody)
{
   renderFirstPerson = false;
   emap = true;
  
   className = Armor;
   shapeFile = “~/data/shapes/player/player.dts”;
   cameraMaxDist = 3;
   computeCRC = true;
  
   canObserve = true;
   cmdCategory = “Clients”;

   cameraDefaultFov = 90.0;
   cameraMinFov = 5.0;
   cameraMaxFov = 120.0;
  
   debrisShapeName = “~/data/shapes/player/debris_player.dts”;
   debris = playerDebris;

  …
};

datablock的作用是定义物体的有关属性。

这里就是定义了游戏人的人物的有关属性,包括视角定义,3D文件(dts),等等,

再在serverscriptsgame.cs 中载入:
  …
   exec(“./crossbow.cs”);
   exec(“./player.cs”);  //载入player.cs中定义的物体
   exec(“./chimneyfire.cs”);
   exec(“./aiPlayer.cs”);  
  
   …

载入只是预载入内存,并未真正创建,现在看一下在哪里创建了人物player

在game.cs中,可找到有关功能模块:

function GameConnection::createPlayer(%this, %spawnPoint)
{
   if (%this.player > 0)  {
      // The client should not have a player currently
      // assigned.  Assigning a new one could result in
      // a player ghost.
      error( “Attempting to create an angus ghost!” );
   }

   // Create the player object  就是这里创建了player这个物体,并返回名柄给%player
   %player = new Player() {
      dataBlock = PlayerBody;
      client = %this;
   };
   MissionCleanup.add(%player);  //在场景中加入

   // Player setup…
   %player.setTransform(%spawnPoint);   //设定随机出现的地点,地点在场景编辑器中定义,并在function pickSpawnPoint()功能中产生随机点
   %player.setShapeName(%this.name);
  
   // Starting equipment
   %player.setInventory(Crossbow,1);   //初始时的武器设置
   %player.setInventory(CrossbowAmmo,10);  //初始时的弹药设置
   %player.mountImage(CrossbowImage,0);  //设置武器在人物的装配点 0表示mount0,1表示装在mount1,由此类推。

   // Update the camera to start with the player
   %this.camera.setTransform(%player.getEyeTransform());  //设置视角方式

   // Give the client control of the player   //把控制交给player这个物体
   %this.player = %player;
   %this.setControlObject(%player);
}

总结一下,创建物体objcect的方法是:

%ver=new 物体类型(名称) %ver 是返回的句柄,是一个整数,是游戏中的客户端唯一值,相当于物体ID。
{
datablock=datablock定义; \这是必须的,datablock可以是自定义的,或是torque已含有的,可参看torque的datablock附表。

内置属性1=初始化值1; \可选,不选则取默认值
内置属性2=初始化值2;



自定义属性1=初始化值1; \可选,自定义属性只能在script中应用,并不影响引擎的内置属性
自定义属性2=初始化值2;



};  \这个 ;不可少.


注:返回的句柄在客户端是唯一值,但网络下的ID又不同,所以一个物体存在2个ID,一个是本地ID,一个是网络ID,网络ID是
    整个游戏网络中唯一的ID号,进行网络游戏编程时应注意,关于网络ID的获得方法,以后再作说明。

养眼——加油,中国



博客有段时间没更新了,不要以为我消失了哦, 其实是近段时间忙着公司的游戏项目,一直没什么时间[:107]。这星期开始,我们每天都要加班到9点多,现在几乎都没了自己的时间了。
游戏开发的过程是无比辛苦的,但大家也都是非常努力地工作,相信用不了多久我们的游戏能上线了。

发张MM,养养眼,给中国加油,也给我们的项目鼓劲![:116]

修改注册表,添加右键打开方式

安装的一个绿色Fireworks,没有右键打开方式的选项。为方便使用,自己添加一个。

修改注册表的原理:

程序代码 程序代码
在HKEY_CLASSES_ROOTapplications主执行文件名.EXEshellopencommand下,例如HKEY_CLASSES_ROOTapplicationsJETCAR.EXEshellopencommand,默认项的数值为C:PROGRA~1FlashGetJetcar.exe “%1″



实现方法:
新建一个文本文件,里面添加下面内容,并保存成.reg文件,运行添加进注册表。

程序代码 程序代码
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTapplicationsFireworks.exe]

[HKEY_CLASSES_ROOTapplicationsFireworks.exeshellopencommand]
@=”"D:\PROGRA~1\Fireworks 8\Fireworks.exe” “%1″”

奥运火炬在宁波传递



今天上午7时10分,奥运火炬开始在宁波传递。火炬传递前,全体火炬手和工作人员在默哀,为四川遇难受灾同胞祈福。宁波火炬传递线路名称确定为“和谐之旅——宁波东方港城之路”。5月22日火炬将分别在北仑港四期码头、市区和杭州湾跨海大桥三个地点传递,总运行距离162公里,火炬传递距离12.8公里。

可惜今天要上班,不能到现场去助威呐喊。从群里选了几张传递时的照片,放博客里感受一下气氛。

其实宁波还是挺像个大城市的哦:)








全国哀悼日,让自己的网站变灰色的CSS

5.19-5.21为全国哀悼日,在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。5月19日14时28分起,全国人民默哀3分钟,届时汽车、火车、舰船鸣笛,防空警报鸣响。

为方便站点哀悼,特提供素装代码,以表哀悼。以下为网站灰度的CSS代码。

程序代码 程序代码
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }



使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地震中遇难的同胞哀悼。

如果网站没有使用CSS,可以在网页/模板的HTML代码<head>和</head> 之间插入:

程序代码 程序代码

<style>
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
</style>



有一些站长的网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议

程序代码 程序代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>



请将网页最头部的<html>替换为以上代码。

有一些网站FLASH动画的颜色不能被CSS滤镜控制,可以在FLASH代码的<object …>和</object>之间插入:

程序代码 程序代码

<param value=”false” name=”menu”/>
<param value=”opaque” name=”wmode”/>



最简单的把页面变成灰色的代码是在head 之间加<style type=”text/css”>

程序代码 程序代码

html {
    FILTER: gray
}
</style>

四川省阿坝藏族羌族自治州汶川县介绍【组图】

      汶川县位于四川盆地西北部边缘,居阿坝藏族羌族自治州东南部,东邻彭州市、都江堰市,南靠崇州市、大邑县,西接宝兴、小金县,西北和东北分别与理县、茂县相连,县域东西宽84公里,南北长105公里,总面积4084平方公里,森林覆盖率达48%。县城威州镇位于县境北部岷江与杂谷脑河交会处,海拔1325米,周围有茶坪山脉、邛崃山脉等众多山体围绕,距省城成都146公里、州府马尔康246公里,国道213、317线穿城而过。

      自1963年恢复建县至今,全县辖6镇8乡,总人口111788人,其中,非农业人口40057人;羌族人口29839人,占总人口的26.69%,是我国四个羌族聚居县之一。卧龙保护区位于该县境内,是大熊猫的研究和主要繁殖地。


汶川、茂县、理县地图


汶川县地图


这是5月14日航拍的地震后汶川县县城


航拍下的汶川县中断公路桥梁


5月14日航拍的地震后汶川县映秀镇


Google Earth里的汶川县

为四川地震灾区的人们祈福



  2008-05-15 16时国务院抗震救灾指挥部确认,汶川地震已造成19509人死亡,遇难人数估计在5万人以上。

  你的苦难就是我们的苦难,你的希望就是我们的希望。当灾难来临时,我们与你在一起,一起为逝者默念安息、一起为伤者祈祷平安。而更多的关怀和力量,正悄悄在汇集:天佑中华,众志成城;抗震救灾、重建家园……  

  请大家一起为四川地震灾区的人们祈福,地址:http://wish.bzbs.net

有钱的捐钱,没钱的也请为灾区的人们献上一点点爱心和祝福。感谢各位的爱心,愿天佑我中华!

中国红十字会
户名:中国红十字会总会
开户行:
中国工商银行北京分行东四南支行
人民币账号:0200001009014413252
外币开户行:中信实业银行洒仙桥支行
外币账号:7112111482600000209

5月12日四川汶川大地震



  据报道:5月12日14时28分,阿坝州所辖的汶川县漩口和卧龙之间发生7.8级大地震,震级与32年前唐山大地震相同。相当于400颗美国1945年投在广岛的原子弹。
  
  今年中国实在多灾多难,先是南方五十年不遇的特大雪灾,接下来是股灾,大盘整整跌去了一半,然后是西藏骚乱,整个西方都在谴责中国,还有人抢奥运火炬,接下来火车又出现大事故,胶济铁路两列火车相撞导致火车出轨,然后是全国数万人感染手足口病,现在则是几十年一遇的特大地震,地震达到了1976年唐山大地震的震级。
  
  如果你可以,就请给汶川的灾区人们献一份爱心吧!

  无论经历着多少的磨难,我相信只要大家共同努力,中国一定能挺过去的。

  引用群里的一句话和大家共勉“天将降大任于斯国也,必先下其大雪,涨其物价,跌其股市,抢其火炬,撞其火车,震其国土,而后奥运成功,台湾收复,日本投降,美国分裂,欧洲大战,称霸五洲!”

谷歌金山词霸、灵格斯、有道桌面词典选哪个?



 

引用内容 引用内容
谷歌金山词霸网站报道,北京时间5月8日14:00,金山软件与全球最大的搜索引擎公司Google(谷歌)在北京艾维克酒店联合召开新闻发布会,宣布双方的联合品牌《谷歌金山词霸》正式发布。

 《谷歌金山词霸合作版》是金山与谷歌面向互联网翻译市场联合开发,适用于个人用户的免费翻译软件。软件支持中、日、英三语查询,有取词、查词、查句、全文翻译、网页翻译等功能。

  词霸的容量将从原来的300余M缩小为20多M,方便用户下载,同时节省电脑空间。词霸用户也将及时获得来自互联网的丰富词汇。

    谷歌金山词霸的发布,使得词霸市场形成了与灵格斯、有道桌面词典三足鼎立的状况。谷歌、金山两家大公司的联手,让我们不得不关注该词霸的特点。

  据金山公司报道,此次发布的《谷歌金山词霸》有三大特点。

  最主要的一点是,此次发布的《谷歌金山词霸》是金山词霸十二年发展历程中首个完全免费的版本,是首次以联合品牌出现的金山词霸系列产品,是金山词霸最重要的版本之一,该版本集合了对文章、网页翻译等功能。尤为重要的是,它的发布标志着金山词霸完全转型“互联网”。

  《谷歌金山词霸》以免费、互联网化、创新的机器翻译技术为三大核心特点,并以十项全能的完善功能为卖点,涵盖了当前翻译软件的绝大部分功能,包括十二年来首度提供的全文翻译、整句翻译、网页翻译等功能。在此次版本中保持了金山原有的强大资源外,同时嵌入谷歌领先的互联网优势以及机器翻译支持实现了对最新语汇、俚语的更好支持以及全文翻译的功能,依靠对互联网海量的不同语言文献进行比对、匹配,方便快捷地提供精确的结果。

  点击下载:谷歌金山词霸正式版 (仅23M,带本地词典,永久免费)

以上内容部分引自月光博客

    下载试用了一下谷歌金山词霸,发觉里面的许多功能都模仿了灵格斯词霸。



    灵格斯是一个功能强大,绿色实用的桌面词霸,近段时间来,我也一直用着它,见我曾经的一篇文章你还在用金山词霸吗。灵格斯小巧灵活,且可自定义安装词库的特点一直受到许多网友的欢迎,尤其是2.0之后,灵格斯整合了在线搜索和支持百科全书查询的功能之后,更加让我爱不释手。现在谷歌金山强强联合,灵格斯会被打败吗?

    谷歌金山词霸的优势在于其结合了谷歌的网络化和金山词霸的庞大词库的特点。在谷歌金山词霸里,我们能见到许多如“很黄很暴力”之类的流行语,谷歌将其内容链接到了自己搜索引擎里,从搜索效果来看,这也会是谷歌抢占桌面搜索的一个重要手段。

    可以看出谷歌在抢占国内市场方面做了很多努力,从谷歌拼音输入法到谷歌人肉搜索,现在联手金山推出的桌面词霸,我们都可以发现,其实李开复正不断努力着。无论是百度、谷歌还是有道,谁强谁弱不是靠嘴巴说出来的,而是要看他们谁更多地为用户着想,谁更能抓住用户的心。

    虽然一直用着灵格斯,但如果谷歌金山词霸能有更突出的特点,那我还是会选择后者。灵格斯有想法,有技术,但毕竟后台太弱了,如果能够被一个更有实力的公司收购的,说不定竞争力也会很强,比较它有很强大的用户群。


   至于有道桌面词典,我也没用过,从介绍来看,其功能应该差不多,有兴趣比较一下的可以下载个玩玩。

T-SQL 查询分析器快捷键大全

表列出 SQL Server 查询分析器提供的所有键盘快捷方式。
  活动 快捷方式

  书签:清除所有书签。 CTRL-SHIFT-F2

  书签:插入或删除书签(切换)。 CTRL+F2

  书签:移动到下一个书签。 F2 功能键

  书签:移动到上一个书签。 SHIFT+F2

  取消查询。 ALT+BREAK

  连接:连接。 CTRL+O

  连接:断开连接。 CTRL+F4

  连接:断开连接并关闭子窗口。 CTRL+F4

  数据库对象信息。 ALT+F1

  编辑:清除活动的编辑器窗格。 CTRL+SHIFT+DEL

  编辑:注释代码。 CTRL+SHIFT+C

  编辑:复制。还可以使用 CTRL+Insert。 CTRL+C

  编辑:剪切。还可以使用 SHIFT+DEL。 CTRL+X

  编辑:减小缩进。 SHIFT+TAB

  编辑:在编辑器窗格中删除至行尾。 CTRL+DEL

  编辑:查找。 CTRL+F

  编辑:转到行号。 CTRL+G

  编辑:增大缩进。 TAB

  编辑:使选定内容为小写。 CTRL+SHIFT+L

  编辑:使选定内容为大写。 CTRL+SHIFT+U

  编辑:粘贴。还可以使用 SHIFT+Insert。 CTRL+V

  编辑:删除注释。 CTRL+SHIFT+R

  编辑:重复上次搜索或查找下一个。 F3 功能键

  编辑:替换。 CTRL+H

  编辑:全选。 CTRL+A

  编辑:撤消。 CTRL+Z

  执行查询。还可以使用 CTRL+E (针对向后兼容性)。 F5 功能键

  SQL 查询分析器帮助。 F1 功能键

  对所选 Transact-SQL 语句的帮助。 SHIFT+F1

  浏览:在查询窗格和结果窗格之间切换。 F6 功能键

  浏览:切换窗格。 Shift+F6

  浏览:窗口选择器。 CTRL+W

  ”新建查询”窗口。 CTRL+N

  对象浏览器(显示/隐藏)。 F8 功能键

  对象搜索。 F4 功能键

  分析查询并检查语法。 CTRL+F5

  打印。 CTRL+P

  结果:以表格格式显示结果。 CTRL+D

  结果:以文本格式显示结果。 CTRL+T

  结果:移动拆分器。 CTRL+B

  结果:将结果保存为文件。 CTRL+SHIFT+F

  结果:显示结果窗格(切换)。 CTRL+R

  保存。 CTRL+S

  模板:插入模板。 CTRL+SHIFT+Insert

  模板:替换模板参数。 CTRL+SHIFT+M

  优化:显示预估执行计划。 CTRL+L

  优化:显示执行计划(切换开/关)。 CTRL+K

  优化:索引优化向导。 CTRL+I

  优化:显示客户统计 CTRL+SHIFT+S

  优化:显示服务器跟踪。 CTRL+SHIFT+T

  使用数据库。 CTRL+U