导航:首页 > 程序命令 > rct命令

rct命令

发布时间:2022-11-16 19:25:01

⑴ 怎么使用stata做非RCT资料的系统比较并做森林图

你可以看看《实用循证医学方法学》,讲的很详细,简单说来,一般命令是metan,
率的资料就是:metan rate ser_all, (random)
四格表资料就是:metan a b c d, (or) (random)
OR或RR资料就是:metan lnor lnlci lnuci
其中ser_all=sqrt(rate*(1-rate)/n)
lnor=ln(or)

⑵ 红警中怎样制造母牛

那是改得

自己看哈
NO.1:
我先教大家修改RULES.INI文件,这个文件可以到网上下载

1.查找TeamDelays,这是RULES中最重要的AI命令.如TeamDelays=1200,1350,1600,它分别对应冷酷的,中等的,简单的敌人的部队建造间隔.一般设为250,250,250,与下面的代码连用的话你将体会到敌人连续攻击的厉害!
MinimumAIDefensiveTeams 电脑最小的防御部队数量
MaximumAIDefensiveTeams 电脑最大的防御部队数量
AISafeDistance 电脑聚集部队离敌方(我方)基地的距离
电脑识别幻影坦克的几率
AttackInterval 电脑每次进攻的时间间隔(建议设为0)
AttackDelay电脑首次进攻的时间间隔(建议设为0)
PowerSurplus 电脑保留电量的大小(建议设为250)
repair and refit RefundPercent=50% 这是规定拍卖建筑物时价格与实际造价的比例为50%,要是改为120%就是说卖 价比造价高(有点变态!)

2.空投规则
GEF
;************ American Paradrop Special Rules ***********
;These two lists _must_ have the same number of elements
;AmerParaDropInf=E1,GHOST,ENGINEER
;AmerParaDropNum=6,6,6 ;How many of each of those infantry

AmerParaDropInf=E1 ;(美国空投步兵类型)
AmerParaDropNum=8 ;(美国空投步兵数量)

AllyParaDropInf=E1 ;(盟军占有科技机场空投步兵类型)
AllyParaDropNum=6 ;(盟军占有科技机场空投步兵数量)

SovParaDropInf=E2 ;(苏军占有科技机场空投步兵类型)
SovParaDropNum=9 ;(苏军占有科技机场空投步兵数量)
可以把E1和E2改成COW(母牛)如:AmerParaDropInf=COW 你就会看到美国空投母牛了(搞笑!)E1是美国大兵,E2是动员

3. 这是遭遇战模式下的玩家设置,加*的最好不要修改
[MultiplayerDialogSettings]
MinMoney=5000(可调最小资金)
Money=10000(默认资金)
MaxMoney=10000(可调最大资金,不要超过50000,否则数据有可能溢出)
MoneyIncrement=100
MinUnitCount=1(开始时最小单位数)*
UnitCount=10(开始时默认单位数)
MaxUnitCount=10(开始时最大单位数)
TechLevel=10*
GameSpeed=0*
AIDifficulty=0*
AIPlayers=0*
BridgeDestruction=yes(桥是否可摧毁)
ShadowGrow=no
Shroud=yes
Bases=yes*
TiberiumGrows=yes(矿石是否自然增长)
Crates=yes(升级工具箱)
CaptureTheFlag=no*
HarvesterTruce=no*
MultiEngineer=no*
AlliesAllowed=no(是否允许结盟)
ShortGame=yes(快速游戏)*
FogOfWar=no*
MCVRedeploys=yes(基地重新部署)*

4.自然规则
在RULES.INI中查找下列语句
RepairPercent=15% (修理建筑物所耗资金与原价比例)
BuildSpeed=.7 (建造时花费1000元所用时间,默认42秒,若改为".1"则只用6秒,暴快!
SoloCrateMoney=2000 (获得金钱升级工具箱所得资金)
ReloadRate=.3 (战机或反潜直升机重新装弹速度)
GrowthRate=5 (矿石自然增长速度,该值越大越慢)

5.单位注册名字
步兵类:
[E1]美国大兵 [SNIPE]狙击手 [E2]动员兵 [FLAKT]防空步兵 [SHK]磁暴步兵
[ENGINEER] 盟军工程师 [SENGINEER]苏军工程师 [JUMPJET]火箭飞行兵
[GHOST]海豹部队 [TANY]谭雅 [YURI]尤里 [IVAN]疯狂伊万 [DESO]辐射工兵
[CLEG]超时空军团兵 [DOG]苏军警犬 [ADOG]盟军警犬 [SPY]间谍 [TERROR]恐怖分子
战车类
[APOC]天启坦克 [DTRUCK]自爆卡车 [V3]V3火箭车 [DRON]恐怖机器人 [HARV]武装采矿车
[CMIN]超时空采矿车 [AMCV]盟军基地车 [SMCV]苏军基地车 [HTK]防空履带车
[HTNK]犀牛坦克 [MTNK]灰熊坦克 [MGTK]幻影坦克 [FV]多功能战斗车 [TNKD]坦克杀手
[TTNK]磁能坦克 [SREF]光棱坦克
舰船类
[SUB]攻击潜艇 [DLPH]海豚 [AEGIS]神盾巡洋舰 [CARRIER]航空母舰 [DRED]无畏级战舰
[HYD]海蝎 [DEST]驱逐舰 [SQD]乌贼 [LCRF]盟军气垫船 [SAPC]苏军气垫船

帖子相关图片:

作者: 61.161.70.* 2005-8-22 15:39 回复此发言

--------------------------------------------------------------------------------

2 红警及尤里的复仇规则修改教程!!行少制作篇(独家)!!!!!
战机类
[ORCA]入侵者战机 [SHAD]夜鹰直升机 [ZEP]基洛夫飞艇 [BEAG]黑鹰战机
建筑类
[GATECH]盟军作战实验室 [NATECH]苏军作战实验室 [GAWEAP]盟军战车工厂
[NAWEAP]苏军战车工厂 [GAREFN]盟军矿厂 [NAREFN]苏军矿厂 [GAOREP]矿石精炼器 [GAYARD]盟军船坞[NAYARD]苏军船坞 [GAAIRC]空指部 [AMRADR]美国空指部
[GASPYSAT]间谍卫星[GAGAP]裂缝产生器 [GAPOWR]盟军发电厂 [NAPOWR]苏军发电厂
[NAHAND]苏军兵营 [NARADR]雷达 [NADEPT]苏军修理厂[NACLON]复制中心
[GAPILE]盟军兵营 [GADEPT]盟军修理厂[GAWALL]盟军围墙 [NAWALL]苏军围墙
[NAIRON]铁幕装置 [GAWEAT]天气控制器 [GACSPH]时空转移器 [NAPSIS]心灵感应器
[TESLA]磁暴线圈 [ATESLA]光棱塔 [NAMISL]核弹井 [NALASR]哨戒炮
[GAPILL]碉堡 [NASAM]爱国者导弹 [NAFLAK]防空炮 [NANRCT]核电站 [GTGCAN]巨炮

如何提取红警游戏里面的文件:
红警游戏目录下有很多以mix为扩展名的文件,它们实际上是多个文件的集合,经过打包形成了一个文件(你可以把它想象成压缩文件)。红警游戏里面的许多游戏属性,都写在ini为扩展名的文件内,而ini文件就被藏在mix文件里。我们要修改游戏,就是把ini文件从mix文件中提取出来,经过对ini文件进行修改,以达到我们修改游戏的目的。
要想把从mix文件中提取文件,目前最常用的工具就是“Xcc Mixer”。涤尘同志的主页“红警风暴”网站一直提供最新版本的“Xcc Mixer”系列工具,如果你手头还没有,赶快去下载吧。
下载后,解压缩,直接执行里面的“XCC Mixer.exe”文件即可运行该程序。
它的程序界面是这样的(本篇以XCC Mixer 1.24版为例):

可以看到,这个窗口分为两个部分,左侧是一个目录窗口,它显示当前文件夹的内容及电脑内所有驱动器的分布情况:第一行“a:\”指的是电脑中的A盘驱动器,第二行至第五行指的是硬盘上从C盘到F盘四个分区,第六行“g:\”是光盘驱动器。当然了,每台电脑的分区各不相同,也许你的硬盘分区较多,“g:\”就不是光盘驱动器了。第七行“..”指的是当前文件夹的上一级目录。你只要用鼠标双击上面的任一行,就可进入相应的目录。
我们利用上面的窗口就可以打开mix文件了。
下面以《阴云密布》为例详细介绍从mix文件中提取文件的方法:
在上面的窗口中用鼠标左键单击“文件”->“打开”,弹出一个标题为“打开”的窗口,在该窗口内找到并进入游戏目录,找到一个“expandmd01.mix”文件,在该窗口内双击这个文件,我们就打开了这个mix文件。如下图:

在左侧的窗口中可以看到这个mix文件中所包含的全部文件信息,它显示了每个文件的文件名、文件类型、文件大小等信息。用鼠标左键单击其中的某个文件(以“rulesmd.ini”为例),在右侧窗口立即可以显示这个文件的部分内容预览。
如果你要编辑这个文件(这个文件很重要),必须把它提取出来。方法是:用鼠标右键在左侧窗口单击这个文件,弹出的右键菜单中有一个选项是“释放(E)...”,用鼠标左键单击一下这个选项,出现一个以“另存为”为标题的窗口,你可以把这个“rulesmd.ini”文件释放到硬盘的任意一个地方,以方便你以后对它进行编辑。

作者: 61.161.70.* 2005-8-22 15:39 回复此发言

--------------------------------------------------------------------------------

3 回复:红警及尤里的复仇规则修改教程!!行少制作篇(独家)!!!
Rules编辑
士兵系列代码

士兵属性
Category=Soldier 只有士兵才能用,代表由训练类建筑(Factory=InfantryType)来“建造”他们

占领建筑
Occupier=yes 能否占领平民建筑=能
OccupyWeapon=UCMP5 占领平民建筑后使用的武器
EliteOccupyWeapon=UCMP5E 3级时占领平民建筑后使用的武器
OccupyPip= 建筑下面的人口标志小格的颜色,一共有5种颜色:PersonBlue为蓝色,盟军专用;PersonRed为红色,苏军专用;PersonPurple为紫色,尤里专用;PersonGreen为绿色,中国专用;没有此语句默认为白色

IFV装载时显示的名称
UseOwnName=true 一直使用自己的名称,比如将伯里斯装入步兵战车后,显示为“伯里斯 多功能步兵战斗车”

不可升级
Trainable=no 用了这个以后该单位无论杀多少人都不会升级,所以只用于遥控性单位或自爆性的单位,还有狗狗。但是强行拖进部队训练场后仍然可以升3级。没有此语句则默认可以升级。

盔甲类型 注意,盔甲类型和防御能力无关,只和弹头有关,即是说,有时候无盔甲比重型盔甲更经打
Armor=none 无盔甲
Armor=flak 英雄盔甲
Armor=Plate 重型盔甲

探测隐形
Sensors=yes 能探测隐形单位=能
SensorsSight=8 探测范围=8格,即当靠近敌放隐形单位8格以内时,敌放隐形单位将现身

维修建筑
Engineer=yes 凡是有了这个语句的单位都成了工程兵,可以进入己方受损建筑进行维修或进入敌放建筑强占

行动范围
MovementZone=Infantry 专用于步兵,位置判定在地面上高度1层以下的范围,只能在陆地上行走
MovementZone= 专用于飞行兵,位置判定在地面上高度1层以上的范围,可以到达任何地方

动作类型
Locomotor={4A582744-9839-11d1-B709-00A024DDAFD1} 步兵专用“行走”,单位图像为SHP,必须在Art里设置Sequence。默认SpeedType=Foot
SpeedType=Amphibious 两栖步兵单位专用,必须有水中的SHP动画以及对应的Sequence,同时需要加上语句“MovementZone=AmphibiousDestroyer”,这样就可以水陆两栖了。详细代码请见海豹。
Locomotor={4A582746-9839-11d1-B709-00A024DDAFD1} 飞行兵专用“飞行”,速度方式默认为SpeedType=Winged
SpeedType=Hover 使用了这个语句的飞行兵不会在空中不动,而是不停的上下浮动,同时需要加上语句“MovementZone=”,否则就是在地表悬浮了

IFV装载时的武器
IFVMode=0 只能用于步兵,对飞行兵毫无意义。数字代表IFV的武器和炮塔图形,共18种武器

免役
ImmuneToVeins=yes 机动部队不会误伤他
ImmuneToPsionics=yes 精神控制对他无效,通常用于智力底下的单位、遥控单位、飞行式空军单位、英雄单位或召唤者单位
ImmuneToRadiation= yes 辐射对他无效

非人类单位
NotHuman=yes 动物专用,不知道究竟有什么实际的用处,通常人类单位都有语句“Category=Soldier或Civilian”,而动物没有
Natural=yes 野外生物专用,不知道有什么实际用处,通常和“NotHuman=yes”同时存在。狂兽人居然还有“Unnatural=yes”,难道是指半人+半兽?

平民单位
Category=Civilian 使用了这个语句后单位将随机地到处乱走,被攻击后有逃跑的动作,但这个动作必须由Sequence指定

对战初始兵力
AllowedToStartInMultiplayer=yes 使用yes的话就会在对战开场时随基地车出现,no则不出现。一个派别至少必须有一种士兵单位作为初始兵力,否则就会弹出出错对话框

自动进入范围防御状态
DefaultToGuardArea=yes 有了这个语句的单位,不需要人工指挥,只要达到GuardRange就会自动迎敌,通常用于射程较短的单位

永不畏惧
Fearless=yes 只用于控制单位的语音,永不畏惧即不管怎样挨打都不会叫苦,“VoiceFeedback和DieSound”就失去作用了

人口数量限制
BuildLimit=1 一次最多只能出这么多个这种单位,对机动部队和建筑同样有效(加载物除外),这个限制的数值不能超过255,通常限制英雄和特殊建筑只能有1个,对其他单位和建筑只要限制得合理平衡就好

帖子相关图片:

作者: 61.161.70.* 2005-8-22 15:45 回复此发言

--------------------------------------------------------------------------------

4 回复:红警及尤里的复仇规则修改教程!!行少制作篇(独家)!!!

机动部队系列代码
战车属性
Category=AFV 只有战车和战舰才能用,代表由陆军工厂类建筑(Factory=UnitType和WeaponsFactory=yes)来生产他们
Category=Support 用处同上,没有什么实际意义,“Support”难道是指“后勤部队”?
Category=Transport 运输工具专用,有了这个语句的战车可以装人或坦克

战舰属性
Naval=yes 除了必须使用战车属性的其中一种以外,还需要这个语句,代表由海军工厂类建筑(Factory=UnitType、WeaponsFactory=yes、Naval=yes和WaterBound=yes)来生产他们

空军属性
Category=AirPower 可以飞的机动部队专用,代表由陆军工厂类建筑或机场类建筑(Factory=AircraftType和Helipad=yes)来生产他们
ConsideredAircraft=yes 有此语句的飞机将从工厂的天窗出来
AirportBound=yes 有此语句的飞机将由机场类建筑生产

装甲类型 注意,装甲类型和防御能力无关,只和弹头有关,即是说,有时候轻型装甲比重型装甲更经打
Armor=light 轻型装甲
Armor=medium 中型装甲
Armor=heavy 重型装甲
Armor=special_1 轻型特殊装甲,我用他来做攻击机专用装甲
Armor=special_2 重型特殊装甲,我用他来做战斗机专用装甲

旋转炮塔
Turret=yes 可以不动车身,只需转动炮塔就可以打八方,海陆空通用。炮塔必须有对应的VXL和HVA

固定炮塔
Turret=no 没有炮塔的单位专用,如果给灰熊用上,则灰熊没了脑袋。通常用于战斗机,只要其武器里有语句“OmniFire=yes”
那么它不动机身就可以从固定的地方(如机翼两端)发射出武器对付八方的敌人,这招叫全向开火。详细请见飞龙

雷达隐形
RadarInvisible=yes 敌方在小地图里看不到它的存在,只在大地图里能看到。

可以探路
MoveToShroud=yes 默认的空军是不能把黑幕探亮的,有了这个语句,飞机就可以当作“飞在空中的坦克”用,可飞进黑幕探路

陆军动作方式
Locomotor={4A582741-9839-11d1-B709-00A024DDAFD1} 用于车辆单位,图像为VXL的单位能够正常的旋转、移动、摇晃、上下山,若是SHP则没有以上动作。它的速度方式默认为SpeedType=Wheel,只能在地面上行动

Locomotor={4A582742-9839-11d1-B709-00A024DDAFD1} 用于两栖单位的“悬浮”,在半空上下浮动,位置判定在地表,可以下水,如果又有语句“SpeedType=Amphibious和MovementZone=AmphibiousCrusher”,那么在水中的速度将大大快于岸上,但单位将与地面接触,失去了悬浮效果。详细请见风暴

不能停留于桥下
TooBigToFitUnderBridge=true 即使你让他们运动到桥下时按“S”强行停止,他们也会自动出来,除非是任务脚本的设置

碾压物体
Crusher=yes 陆军单位专用,可以碾压士兵
OmniCrusher=yes 战斗要塞的特点,可以碾压任何有生命的单位,包括围墙,需要和语句“MovementZone=CrusherAll”连用
OmniCrushResistant=yes 禁止被战斗要塞或其他战车碾压,效果和“Crusheable=no”相仿

隐藏于箱箱中
CrateGoodie=yes 在随机部队宝箱中能拾得它,千万不要用于战舰和飞机,否则小心出错,最好不要用于人,否则BT

运输单位
PipScale=Passengers 下方用小格表示容量空间
Passengers=10 容量空间大小,需要以被载者的体积来定可运载数量
OpenTopped=yes 被载者可以在里面向外开火,战斗要塞的特点
SizeLimit=6 装载口径,体积大于6的东西都无法进入
EnterTransportSound=EnterTransport 装载声音
LeaveTransportSound=ExitTransport 释放声音,这两个声音最好不要去更改

不可放入坦克堡垒
Bunkerable=no 没有此语句时默认可以放入

不接受攻击命令
StupidHunt=yes 常用于片面武器的单位,即使你强行叫它去打它不能攻击的东西,它也不会动

移动攻击
OpportunityFire=yes 可以一边移动一边开火,但命中率~~,所以通常用于武器为导弹、光束、机枪等的单位,如果武器为炮弹,则大有可能打偏。这个语句对没有炮塔而且又不能全向开火的单位无效

作者: 61.161.70.* 2005-8-22 15:45 回复此发言

--------------------------------------------------------------------------------

5 回复:红警及尤里的复仇规则修改教程!!行少制作篇(独家)!!!

喷气式飞行
JumpjetSpeed=32 平飞速度
JumpjetClimb=7 爬升速度,遇到山脉、楼房时抬升飞行高度时的上升速度
JumpjetCrash=15 被击落后的下落速度,不可大于15,否则就会在地面上打转,一直不死,且无法被攻击,也无法接受指令,因为判定认为它为已经死亡
JumpJetAccel=10 启动加速度,太大的话看不出加速的感觉
JumpJetTurnRate=2 掉转方向的速度,数值越小转弯半径就越小,转弯越快
JumpjetHeight=1000 平飞时离地面的高度,1000最为合适,大致在第6层到第8层之间
JumpjetNoWobbles=yes 禁止浮动,飞机在空中停留不动,不会上下浮动

永不落地
BalloonHover=yes 飞机从工厂出来以后就再不落地,除非遇到变形部署或被击落

可以落地
Landable=yes 常用于运输机,在地面上,只要没有指令时就会自动着陆,除非有人占据了它的着陆点

空中攻击
HoverAttack=yes 如果飞机在地面,那么必须升空以后方可攻击敌军

上方攻击
Fighter=yes 如果飞机处于它攻击对象的头顶上时仍然可以开火而且能够命中,否则不行,多用于攻击机和轰炸机

毫无主见
CanPassiveAquire=no 永远只在得到指令后才按计划行动,自己不会变通,更不会私自行动
CanRetaliate=no 打不还手,如果在执行指令(哪怕只是移动)的过程中遭到攻击也不会自动还手,此二语句最好不要滥用,通常只用于不易控制的单位、积极性太高的单位、极度危险的单位(如血咒)或是飞行式攻击机(如黑鹰)

展开部署
DeploysInto=DROD 按“D”展开后变成一个建筑,比如基地车变成基地

变形部署 注意,部署后将只能使用副武攻击
IsSimpleDeployer=yes 表示按“D”部署后仍然还是它自己,看似变成了另外一个单位,其实这只是障眼法
UnloadingClass=MMBTNK 部署后更换为MMBTNK的皮肤,这个MMBTNK必须是另一个有效的单位。其实完全可以继续使用它自己的皮肤
DeployingAnim=MMBDEPL 部署过程的动画,不要动画则是立刻变,看起来不连贯
DeployFire=yes 部署后可以开火,当然要能开火,否则还部署它干什么
Turret=yes 部署后使用旋转炮塔,当然要使用,因为部署后单位不能转动和移动,没有旋转炮塔还打什么打

释放部署
Deployer=yes 表示按“D”后使用副武攻击,这种副武由于是以它为中心向四周发散,所以成为释放型副武,通常有震荡波、混乱气流等。可以连续释放多次
DeployFire=yes 表示部署后立刻以副武开火
UndeployDelay=150 这个语句对战车无效,只对士兵有效,代表他在释放的时候将硬直这么多时间不能做其他任何动作,其硬直动作需要SHP支持并需要设置Sequence

建筑系列代码
建筑属性
BuildCat=Tech 科技类,没有生产作用的建筑,只提供建造前提,如作战实验室
BuildCat=Power 能源类,专门用于提供电力,只有这类建筑当Power值为正时不会损失动画效果
Factory=BuildingType 基地类,专门建造建筑。
BuildCat=Resource 资源类,专门负责采集矿石,只有这类建筑可以支持矿车进入并卸矿,需要和语句“DockUnload=yes及Refinery=yes”连用。前4类出现在建筑栏
BuildCat=Combat 防御类,出现在防御栏

材料类型 注意,材料类型和防御能力无关,只和弹头有关,即是说,有时候木质材料比钢精混凝土更经打
Armor=wood 木质材料
Armor=steel 钢铁材料
Armor=concrete 钢精混凝土材料

生产类型
Factory=InfantryType 兵营类,训练步兵,可以选择集合点
Factory=UnitType 工厂类,生产战车或喷气式战斗机,可以选择集合点,需要与“WeaponsFactory=yes”连用。如果有“WaterBound=yes”则是海军工厂,生产战舰
Factory=AircraftType 机场类,生产飞行式攻击机

维修作用
UnitRepair=yes 维修厂,维修破损的战车,可以选择出厂点

训练作用
Armory=yes 步兵训练场,非3级的步兵可以进入,出来后直接升成3级,不能选择集合点,但如果把训练场加上“Factory=InfantryType”,那么就可以选择集合点,但是训练场就成了2号兵营了

作者: 61.161.70.* 2005-8-22 15:45 回复此发言

--------------------------------------------------------------------------------

6 回复:红警及尤里的复仇规则修改教程!!行少制作篇(独家)!!!
Ammo=9999 训练数量,只能训练9999个人,通常把这个数字设多些(不能用-1),以保证几乎用不完的

加载作用
Upgrades=2 用于主体建筑,以它为基础,往它上面还可以加载2个部分
PowersUpBuilding=UAPOWR 用于附属部分,加载于主体建筑UAPOWR(地热发电厂),即只能放在主体建筑上面,不能放在空地或其他地方
PowersUpToLevel=-1 用于附属部分,表示总共可以加载的次数,通常需要无限加载,直到用满主体建筑的加载量2个为止,详细请见地热发电厂和能量涡轮之间的关系

回收建筑
UndeploysInto=FLMCV 建筑可以被命令移动而被拖开成为战车单位,通常用于基地的建立和回收

免费单位
FreeUnit=FLMIN 通常用于矿厂,建立以后出现一个免费赠送的单位。要是这个建筑可以反复收起来再展开,那么就可以生成一大堆免费单位,这么BT的招数专用于布雷战车,如果免费单位不是地雷而是光棱,那么就真的太BT了

用围墙包围
ProtectWithWall=yes 给电脑用的,电脑会给这个建筑以围墙保护

可被渗透
Spyable=yes 间谍可以进入,对于不同类的建筑可以产生一些不同的效果,进入机场以外的生产类建筑可以给单位加1级,进入雷达可以使对方地图全黑,进入电力类建筑可以断电1分钟,进入资源类建筑(收起来的农民矿厂不算)可以偷钱,进入超级武器可以重置其充能时间,进入实验室可以偷出一些科技单位。

可被吸取
Drainable=yes 飞碟可以吸取它的能量,或停止工作,或资金被吸收

可被占领
Capturable=true 工程兵可以进入占领,否则的话不能进入

特殊平台
Bib=yes 一些有特殊功能的建筑需要这个平台,比如机场用来停飞机,地面单位可以从这个平台上经过,这个Bib需要图形和ART的支持

无人控制
BaseNormal=no 这种建筑不能作为连接基础,通常用于防御建筑和船厂以及一些可以相隔很远建造的建筑
Crewed=no 这种建筑被击毁或卖掉后不会出来残兵,这个语句对地面战车也有效,但最好不要用于飞机和战舰,否则小心出错

过载建筑
Overpowerable=true 这种建筑可以被有“充能功能”的单位充能从而造成供能过多,实现攻击力加强,过载前用主武攻击,过载后的使用副武攻击,比如磁暴线圈和光明圣碑。

弹体系列代码
常规弹体
Damage=100 武器的攻击力,对于一些特殊的武器它还表示其他一些量,比如混乱气流的混乱时间、侦察机的探路面积、心灵控制可变敌人的总数等。1代表有特殊作用,可以攻击,但不造成伤害,0和2代表不能攻击,负数代表可以攻击,但不是伤害而是加血,比如维修车
AmbientDamage=200 武器的穿偷攻击力,只有当武器类型为声波和粒子系统类时才可以有穿偷效应
ROF=80 武器的发射频率,60表示1秒一次,数字越大就停顿得越久才发第二炮
Range=15 武器射程上限
MinimumRange=8 武器射程下限
Projectile=Cannon 武器的射弹形状及飞行轨迹,最常用的是Invisible一类无实体的射弹类型
Speed=40 弹体飞行速度,数字越大就飞得越快,但这个速度只对炮弹和导弹两类有实体的弹体有效
Warhead=ApocAP 弹体对应的弹头
Report=ApocalypseAttackGround 开炮时的炮口声音
Anim=GUNFIRE 开炮时的炮口动画,比如坦克炮开火时炮口有火花
DecloakToFire=no 当使用这个武器的单位处于隐形状态或被隐形屏蔽状态时,他开火是不会显形的
Burst=2 一炮发射2个炮弹,每一个炮弹都有攻击力,所以2个炮弹将造成双倍攻击力,建议这个数字不要大于4
Bright=yes 弹头击中目标或地面时将爆出一团闪光,Damage的值越大那么闪光面积就越大

隐蔽的弹体
RevealOnFire=no 这种单位在开火的时候不会显示给对方看,通常用于隐形单位、幻影单位和狙击单位

游戏平台定死了的弹体
IsLaser=true 激光类武器,其Projectile=Invisible类最好
IsMagBeam=yes 磁电波类武器,其Projectile=Invisible类最好

⑶ 网易我的世界手机版effrct指令提升生物血量无效,是生物种类限制吗如果不是要怎么加血量

因为它是亡灵生物,你给他医疗没用,第一个health——boost是提高血量上限,
给个采纳呗!

⑷ 电脑打印蓝屏了怎么办什么原因啊

出现蓝屏,版主就该立即记录下蓝屏代码,这样就可以依据代码对号入座,这样问题就很容易解决了。回答版主的问题,首先我先说下蓝屏的原因有哪些,这样让版主对蓝屏有个大致的了解。其次,我在最后附上了一些蓝屏代码,供版主依代码来解决问题,当然代码很多我不可能全部列出来完。剩余的,版主可以在最后的链接去查看更多代码。电视机会出现蓝屏,电脑也会出现"蓝屏"。电脑出现"蓝屏"时还会出现一连串警告,轻者只要按ESC就能返回,重者就会出现死机,使人十分烦恼。出现"蓝屏"无外有二种情况,一种是软件引起的,另一种是硬件引起的,软件引起的"蓝屏"故障,一般重装系统都能解决。但也可以不重装系统来解决。而硬件引起的"蓝屏"故障,要根据具体的情况分别解决。 一、软件引起的"蓝屏"故障 1、重要文件损坏或丢失会引起"蓝屏"故障(包括病毒所致)。 WIN中VxD(虚拟设备驱动程序)或.DLL(动态连接库)之类的重要文件丢失会出现"蓝屏警告"。解决的办法是利用Win的启动盘中的"Ext"来恢复被损坏或丢失的文件,步骤如下: (1)、先用WIN的启动盘起动电脑,在提示符下敲入"Ext"命令; (2)、在提示"Please enter the path to the Windows CAB files (a) :" 后输入WIN安装压缩包所在的完整路径,回车,如"E:\Pwin2003\Win2003; (3)、在提示"Please enter the name (s) of the file (s) you want to extract:"后输入你丢失的文件名,如"BIOS.Vxd",回车; (4)、在解压路径提示"Please enter path to extrct to (' Enter' for current directory): " 后输入文件将被解压到的完整路径,如"C:\Windows\System" 并回车,后面出现的提示,只要按YES回车即可,得新启动后就能恢复系统。注:因事先记下丢失的文件名,以便恢复) 如是病毒引起,可用杀毒软件来杀毒,并及时恢复中毒前的备份; 如果能启动图形界面,可采取重装主板以及显示卡的驱动程序,和进行"系统文件扫描"来恢复被破坏或丢失的文件,可从开始菜单内附件中的系统工具中找到; 2、注册表损坏导致文件指向错误所引起的"蓝屏" 在注册表被改动后或受到破坏,在开机或在调用程序时出现"蓝屏",并且屏幕有出错信息(包括出错的文件名)。 --解决方法是恢复注册表备份,重新启动计算机,切换到MS-DOS方式,进入Windows子目录,键入Scanreg\regstore 后回车,就可恢复最近一次注册表 3、在卸载程序后出现"蓝屏",多数是由于程序卸载不完善造成。解决办法:首先记下出错文件名,然后到注册表中找到以下分支"HKEY_LOCAL_MACHINE\Sysytem\CurrentControlSet\Services\VxD",在"查找"中输入出错的文件名,把查到键值删除即可。 4、在System.ini文件错误引起的"蓝屏",由于软件卸载或安装时没有即时更新System.ini造成"蓝屏"的,解决办法:禁用注册表中该项或重装相应软件或驱动程序; 由于Win98的spl和Microsoft的Vxd_fix.exe补丁程序对Win98的稳定起着重要的作用,可到华军网站下载补丁Vxd_fix.exe. 5、系统资源耗尽引起的蓝屏。这一类故障主要是三个堆资源(系统资源、用户资源、GDI资源)占用有情况有关。 --打开资源监视器,看一下剩余资源的情况,如这三种资源都 在50%甚至更低,就很容易出现"非法操作"、"蓝屏"、"死机"。因此,必须减少资源浪费,减少不必要的程序加载,避免同时运行大程序(如图形、声音和视频软件),如加载计划任务程序、输入法和声音指示、声卡的DOS驱动程序,系统监视程序等; 6、DirexctX问题引起的"蓝屏"故障。如DirectX版本过高、过低;游戏与它不兼容或是不支持;辅助文件丢失;显卡对它不支持,都可能造成此故障。升级或重装DirectX,尝试更新显卡的BIOS和驱动程序,或升级显卡。 7.软件不兼容导致的。二、硬件引起的"蓝屏"故障

⑸ 打开文件时出现加载资源文件失败如何处理

1、首先打开昨天工作的VS2012项目显示加载失败,如果多试几次还是不行,提示该项目需要用户输入,或是去C盘看一下的文件夹。

⑹ 法兰克数控铣床PLC功能指令解释数控高手请进。。

⑺ tar命令是怎么使用

tar
格式: tar [选项] [文件目录列表]
功能: 对文件目录进行打包备份
选项:
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩

1.用tar打包一个目录下的文件:#tar -cvf /mnt/lgx/a1.doc
生成一个以.tar为扩展名的打包文件

2.用tar解开打包文件:#tar -xvf /mnt/lgx/a1.doc.tar
通常情况下,tar打包与gzip(压缩)经常联合使用。方法:
首先用tar打包,如:#tar -cvf /mnt/lgx/a1.doc (产生a1.doc.tar文件)
然后用gzip压缩a1.doc.tar文件,如:#gzip /mnt/lgx/a1.doc.tar (产生a1.doc.tar.gz文件)
3.解压a1.doc.tar.gz文件
方法1:
#gzip -dc /mnt/lgx/a1.doc.tar.gz (产生a1.doc.tar文件)
#tar -xvf /mnt/lgx/a1.doc.tar (产生a1.doc文件)
这两次命令也可使用管道功能,把两个命令合二为一:
#gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf
方法2:使用tar提供的自动调用gzip解压缩功能
#tar -xzvf /mnt/lgx/a1.doc.tar.gz
经过tar打包后,也可用compress命令压缩(注:gzip比compress压缩更加有效),产生一个以.tar.Z的文件,在解包时,可先用 “uncompress 文件名”格式解压,然后用“tar -xvf 文件名”解包。也可直接调用“tar -Zxvf 文件名”解包。

tar命令详解(很好的中文说明)
怎样使用tar命令打包(备份)文件?
A:The syntax of tar is:
tar [options][files]
The options used most often with tar are as follows:
c Creates a new backup,overwriting any files already on the backup destination.
x Extracts files from backup media.
t Lists the contents of backup media.
v Displays the name of each file being processed.
f Creates backups on a specified device.
u Adds files to the backup if they are not already there,or if they have been modified since they were last written on the backup.
步骤:
1)估算打包文件的大小,确定使用档案媒体(archive media)的空间,用命令 -s
例如:
$ lf
a.out* fork.c mbox time.c
atoi.c int.c memcpy.c vi
$ -s
296 .
$
该例显示的296代表the total number of 512-byte blocks,计算:512*296/1024=148kilobytes.
2)制作备份,用命令tar cvf /dev/fd0135ds18 .(将该目录下的所有内容备份到1.44英寸软盘中 where c causes a new backup to be created,v causes each file to be displayed as the backing up takes place,and f causes the subsequent argument–/dev/fd0135ds18 to be the destination of the backup.)
注:平时硬盘上的备份,我们一般用命令tar cvf filename.tar .
例如:
$ tar cvf wuyd.tar .
a ./.profile 2 tape blocks
a ./.lastlogin 0 tape blocks
a ./mbox 10 tape blocks
a ./fork.c 2 tape blocks
a ./memcpy.c 1 tape blocks
a ./.sh_history 3 tape blocks
a ./a.out 91 tape blocks
a ./time.c 1 tape blocks
a ./vi 169 tape blocks
a ./int.c 1 tape blocks
a ./atoi.c 1 tape blocks
tar: same as archive file: ./wuyd.tar
a ./.scoadmin.pref 1 tape blocks
$ lf
a.out* fork.c mbox time.c wuyd.tar
atoi.c int.c memcpy.c vi
我们还可以用命令tar cvf /dev/fd0135ds18 ./filename将该目录下的名为filename的文件备份到archive media中
怎样列出tar文档的内容?
A:tar tvf /dev/fd0135ds18
tar tvf filename.tar
例如:
$ tar tvf wuyd.tar
tar: blocksize = 20
rw——-203/50 896 Sep 17 15:07 2003 ./.profile
r——–203/21 0 Sep 24 19:49 2003 ./.lastlogin
rw——-203/50 4720 Sep 21 11:17 2003 ./mbox
rw-r–r–203/50 583 Sep 17 15:27 2003 ./fork.c
rw-r–r–203/50 218 Sep 17 20:22 2003 ./memcpy.c
rw——-203/50 1474 Sep 24 20:26 2003 ./.sh_history
rwxr-xr-x203/50 46224 Sep 22 21:00 2003 ./a.out
rw-r–r–203/50 341 Sep 19 09:02 2003 ./time.c
rw-r–r–203/50 86283 Sep 21 09:14 2003 ./vi
rw-r–r–203/50 93 Sep 21 10:53 2003 ./int.c
rw-r–r–203/50 144 Sep 22 21:00 2003 ./atoi.c
rw-r–r– 0/3 41 Sep 23 20:34 2003 ./.scoadmin.pref
$
怎样从tar文档中导出文件?
A:tar xvf /dev/fd0135ds18
tar xvf filename.tar
例如:
$ mkdir uu;cp wuyd.tar ./uu
$ lf
a.out* fork.c mbox time.c vi
atoi.c int.c memcpy.c uu/ wuyd.tar
$ cd uu
$ tar xvf wuyd.tar
tar: blocksize = 20
x ./.profile, 896 bytes, 2 tape blocks
x ./.lastlogin, 0 bytes, 0 tape blocks
x ./mbox, 4720 bytes, 10 tape blocks
x ./fork.c, 583 bytes, 2 tape blocks
x ./memcpy.c, 218 bytes, 1 tape blocks
x ./.sh_history, 1474 bytes, 3 tape blocks
x ./a.out, 46224 bytes, 91 tape blocks
x ./time.c, 341 bytes, 1 tape blocks
x ./vi, 86283 bytes, 169 tape blocks
x ./int.c, 93 bytes, 1 tape blocks
x ./atoi.c, 144 bytes, 1 tape blocks
x ./.scoadmin.pref, 41 bytes, 1 tape blocks
$
我们可用命令tar xvf /dev/fd0135ds18 ./filename导出archive media中的单个文件
例如:
$ lf
wuyd.tar
$ tar xvf wuyd.tar ./time.c
tar: blocksize = 20
x ./time.c, 341 bytes, 1 tape blocks
$ lf
time.c wuyd.tar
$
怎样使用tar命令提供的简写形式?
A:
$ more /etc/default/tar
# @(#) def135.src 25.2 94/07/25
#
# Copyright © 1987-1994 The Santa Cruz Operation, Inc.
# All Rights Reserved.
# The information in this file is provided for the exclusive use of
# the licensees of The Santa Cruz Operation, Inc. Such users have the
# right to use, modify, and incorporate this code into other procts
# for purposes authorized by the license agreement provided they include
# this notice and the associated right notice with any such proct.
# The information in this file is provided “AS IS” without warranty.
#
# default/tar - archive devices: tar©
#
# device block size tape
#
archive0=/dev/rfd048ds9 18 360 n
archive1=/dev/rfd148ds9 18 360 n
archive2=/dev/rfd096ds15 10 1200 n
archive3=/dev/rfd196ds15 10 1200 n
# archive4=/dev/rfd096ds9 18 720 n
archive4=/dev/rfd0135ds9 18 720 n
archive5=/dev/rfd1135ds9 18 720 n
# archive5=/dev/rfd196ds9 18 720 n
archive6=/dev/rfd0135ds18 18 1440 n
archive7=/dev/rfd1135ds18 18 1440 n
archive8=/dev/rct0 20 0 y
archive9=/dev/rctmini 20 0 y
archive10=/dev/rdsk/fp03d 18 720 n
archive11=/dev/rdsk/fp03h 18 1440 n
archive12=/dev/rdsk/fp03v21 10 20330 n
#
# The default device in the absence of a numeric or “-f device” argument
archive=/dev/rfd0135ds18 18 1440 n
$
从上面可以看出4代表/dev/rfd0135ds9设备,而默认的设备是/dev/rfd0135ds18,所以tar xvf /dev/rfd0135ds9 ./filename可以简写为tar xv4 ./filename,而 tar cvf /dev/fd0135ds18 .可以简写为tar cv。

⑻ React Native在虚拟运行app时,报错RCTRootView not found,怎么解决

几个常见的linux下的ORACLE错误解决方法

必要的硬件信息检查:

检查内容 最小值 检查命令参考

物理内存 512M # grep MemTotal /proc/meminfo

交换空间 max{1.0 GB,2倍内存} # grep SwapTotal /proc/meminfo

/tmp 空间 400 MB # df -k /tmp

软件所需空间 2.5 GB # df -k

数据库文件 1.2 GB # df -k

前提:tds7.1(kernel: 2.4.21-16)操作系统选择[完全安装]

一、建用户组、用户脚本creuser.sh

# For create the oracle user

#!/bin/sh

groupadd -g 600 dba

groupadd -g 601 oinstall

useradd -u 600 -g dba -G oinstall oracle -d /opt/oracle -p oracle

二、设置环境变量.bash_profile脚本如下(该脚本cp到$ORACLE_BASE目录下,并更改文件里的SID。执行以下命令:

# chown –R oracle.dba /opt/oracle/ ):

# .bash_profile

# Use to set orale profile

# /opt/oracle/.bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

SOURCE ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

export ORACLE_BASE=/opt/oracle

export ORACLE_SID=ORA10G #此参数应根据节点修改

export ORACLE_HOME=$ORACLE_BASE/proct/ora10g

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export PATH=$PATH:$ORACLE_HOME/bin:/sbin

export LANG=en_US

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

umask 022

三、编辑/etc/sysctl.conf,在该文件末尾加入如下内容:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

编辑完之后,保存,执行 # /sbin/sysctl -p 命令操作来使我们所做的变更生效。

注意:核心参数配置可能需要根据实际环境进行适当的变动.

四、Trouble-Shooting

1、运行runInstaller,错误提示如下:

Checking requirements...

Checking operating system version: must be redhat-2.1,redhat-3,SuSE-9,SuSE-8,UnitedLinux-1.0

Failed<<<<

解决方法:

方法一:

在/etc下创建UnitedLinux-release文件

#cat > /etc/UnitedLinux-release << EOF

>UnitedLinux 1.0 (i586)

>VERSION=1.0

>EOF

然后就可以正常启动安装程序。注意不要使用vi编辑该文件,否则可能会引起ORA-12547: TNS: lost contact的错误。

方法二:

运行runInstaller -ignoreSysPrereqs,这样会跳过检查

方法三:

修改Oracle 的/.../disk1/install/linux/oraparam.ini这个参数文件

2、安装界面或者netca界面、dbca界面显示很多"口口"样子的乱码

解决办法:查看locale输出

# locale

LANG=zh_CN.GB18030

LC_CTYPE=zh_CN.GB18030

LC_NUMERIC="zh_CN.GB18030"

LC_TIME="zh_CN.GB18030"

LC_COLLATE="zh_CN.GB18030"

LC_MONETARY="zh_CN.GB18030"

LC_MESSAGES="zh_CN.GB18030"

LC_PAPER="zh_CN.GB18030"

LC_NAME="zh_CN.GB18030"

LC_ADDRESS="zh_CN.GB18030"

LC_TELEPHONE="zh_CN.GB18030"

LC_MEASUREMENT="zh_CN.GB18030"

LC_IDENTIFICATION="zh_CN.GB18030"

LC_ALL=

执行#export LANG=en_US 然后重新调用安装程序.

3、Oracle10g自动检查操作系统是否符合安装的条件。当按照上面的脚本对系统进行配置后,会有警告提示。[Retry]会看到如下提示:

Checking for openmotif-2.1.30-11; found Not found. Failed <<<<

Check complete. The overall result of this check is: Failed <<<<

Problem: Some recommended packages are missing (see above)

下载并安装openmotif-2.1.30-11软件包后,通过验证。

备注:有oracle文档说明:对于在RHELAS3上安装oracle10g,需要openmotif-2.2.2-16或更高版本;

但下载openmotif-2.2.2-16.src.rpm,在机器上编译安装,oracle自动检查仍然有警告提示。

4、安装程序在进行到74%的时,按照提示用root身份运行$ORACLE_HOME/root.sh,出现以下错误:

./root.sh: line 227: /var/opt/oracle/srvConfig.loc: 没有那个文件或目录

./root.sh: line 228: /var/opt/oracle/srvConfig.loc: 没有那个文件或目录

/bin/chown: 无法取得 ‘/var/opt/oracle/srvConfig.loc’的属性:没有那个文件或目录

/bin/chgrp: 无法取得 ‘/var/opt/oracle/srvConfig.loc’的属性:没有那个文件或目录

/bin/chmod: 无法取得 ‘/var/opt/oracle/srvConfig.loc’的属性:没有那个文件或目录

Successfully accumulated necessary OCR keys.

Creating OCR keys for user 'root', privgrp 'root'..

OCR create keys failed, OCR error 26

Failed to initialize Oracle Cluster Registry for cluster

解决方法:

# mkdir /var/opt/oracle

# chown -R oracle.dba /var/opt/oracle

# ./root.sh

5、 数据库启动:

$sqlplus /nolog

SQL>connect / as sysdba

SQL>startup

ORA-00371: not enougsh shared pool memory, should be atleast 52132659 bytes.

解决方法:

这个错误并非是内核参数设置的问题,也和系统的物理内存大小无关。编辑$ORACLE_HOME/dbs/init$GID.ora文件:

shared_pool_size = 52132659

6、 数据库启动:

$sqlplus /nolog

SQL>connect / as sysdba

SQL>startup

ora-01102: cannot mount database in EXCLUSIVE mode

解决方法:

完全关闭数据库,更改$ORACLE_HOME/dbs/init.ora文件里的db_name为建库时定义的“全局数据库名”,然后再重新启动数据库

7、 数据库启动:

$sqlplus /nolog

SQL>connect / as sysdba

SQL>startup

ora-00205:error in identifying conrolfile, check alert log for more info

解决方法:

SQL>show parameter control_files

SQL>CREATE CONTROLFILE

将$ORACLE_BASE/admin/$GID/pfile/init$SID.ora***************拷贝到$ORACLE_HOME/dbs下,命名为init$SID.ora,即可解决。

8、数据库启动:

$sqlplus /nolog

SQL>connect / as sysdba

SQL>startup

ORA-01990:error opening password file '$ORACLE_NAME/dbs/orapw'

ORA-27037:unable to obtain file status

Linux Error:2: No such file or directory

Additional information: 3

解决方法:

将$ORACLE_HOME/dbs下的orapw$db_name文件拷贝生成一个orapw文件。

8、建库的过程中或者连接数据库的时候提示:

ORA-12547: TNS: lost contact

引起该错误的环境比较复杂,原因可能是:

1、用vi编辑的/etc/UnitedLinux-release文件

2、内核参数设置不正确

3、察看一下listener是否正常启动: lsnrct1 status

4、机器负载过大

⑼ 关于access中的汇总统计问题

1。首先使用命令 SELECT......
UNION.......
把10个表格合并为一张表格。
2。再在生成的表格中使用命令SELRCT......进行分类汇总,分类关键字段是“工号”,生成的新表格就是你要的结果。

⑽ VB里如何改变命令按钮中文字的颜色

不能直接通过属性框修改按钮中文本的颜色
根本没有foreColor属性
下边是一个参考方法
首先请把要改的按钮的Style设置为1

在工程中添加以下模块(Mole):
Mole modExtButton.bas

Option Explicit

'==================================================================
' modExtButton.bas
'
' 本模块可让你改变命令按钮的文本颜色。
' 使用方法:
'
' - 在设计时将文本的Style设为Graphical.
'
' - 随意设定背景色和图象属性.
'
' - 在Form_Load中调用 SetButton :
' SetButton Command1.hWnd, vbBlue
' (你可以任意次的调用该过程甚至不必先调用 RemoveButton.)
'
' - 在Form_Unload中调用 RemoveButton :
' RemoveButton Command1.hWnd
'
'==================================================================

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function GetParent Lib "user32" _
(ByVal hWnd As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = (-4)

Private Declare Function GetProp Lib "user32" Alias "GetPropA" _
(ByVal hWnd As Long, ByVal lpString As String) As Long
Private Declare Function SetProp Lib "user32" Alias "SetPropA" _
(ByVal hWnd As Long, ByVal lpString As String, _
ByVal hData As Long) As Long
Private Declare Function RemoveProp Lib "user32" Alias _
"RemovePropA" (ByVal hWnd As Long, _
ByVal lpString As String) As Long

Private Declare Function CallWindowProc Lib "user32" Alias _
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

'Owner draw constants
Private Const ODT_BUTTON = 4
Private Const ODS_SELECTED = &H1
'Window messages we're using
Private Const WM_DESTROY = &H2
Private Const WM_DRAWITEM = &H2B

Private Type DRAWITEMSTRUCT
CtlType As Long
CtlID As Long
itemID As Long
itemAction As Long
itemState As Long
hwndItem As Long
hDC As Long
rcItem As RECT
itemData As Long
End Type

Private Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
'Various GDI painting-related functions
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" _
(ByVal hDC As Long, ByVal lpStr As String, ByVal nCount As Long, _
lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetTextColor Lib "gdi32" (ByVal hDC As Long, _
ByVal crColor As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hDC As Long, _
ByVal nBkMode As Long) As Long
Private Const TRANSPARENT = 1

Private Const DT_CENTER = &H1
Public Enum TextVAligns
DT_VCENTER = &H4
DT_BOTTOM = &H8
End Enum
Private Const DT_SINGLELINE = &H20

Private Sub DrawButton(ByVal hWnd As Long, ByVal hDC As Long, _
rct As RECT, ByVal nState As Long)

Dim s As String
Dim va As TextVAligns

va = GetProp(hWnd, "VBTVAlign")

'Prepare DC for drawing
SetBkMode hDC, TRANSPARENT
SetTextColor hDC, GetProp(hWnd, "VBTForeColor")

'Prepare a text buffer
s = String$(255, 0)
'What should we print on the button?
GetWindowText hWnd, s, 255
'Trim off nulls
s = Left$(s, InStr(s, Chr$(0)) - 1)

If va = DT_BOTTOM Then
'Adjust specially for VB's CommandButton control
rct.Bottom = rct.Bottom - 4
End If

If (nState And ODS_SELECTED) = ODS_SELECTED Then
'Button is in down state - offset
'the text
rct.Left = rct.Left + 1
rct.Right = rct.Right + 1
rct.Bottom = rct.Bottom + 1
rct.Top = rct.Top + 1
End If

DrawText hDC, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE _
Or va

End Sub

Public Function ExtButtonProc(ByVal hWnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim lOldProc As Long
Dim di As DRAWITEMSTRUCT

lOldProc = GetProp(hWnd, "ExtBtnProc")

ExtButtonProc = CallWindowProc(lOldProc, hWnd, wMsg, wParam, lParam)

If wMsg = WM_DRAWITEM Then
CopyMemory di, ByVal lParam, Len(di)
If di.CtlType = ODT_BUTTON Then
If GetProp(di.hwndItem, "VBTCustom") = 1 Then
DrawButton di.hwndItem, di.hDC, di.rcItem, _
di.itemState

End If

End If

ElseIf wMsg = WM_DESTROY Then
ExtButtonUnSubclass hWnd

End If

End Function

Public Sub ExtButtonSubclass(hWndForm As Long)

Dim l As Long

l = GetProp(hWndForm, "ExtBtnProc")
If l <> 0 Then
'Already subclassed
Exit Sub
End If

SetProp hWndForm, "ExtBtnProc", _
GetWindowLong(hWndForm, GWL_WNDPROC)
SetWindowLong hWndForm, GWL_WNDPROC, AddressOf ExtButtonProc

End Sub

Public Sub ExtButtonUnSubclass(hWndForm As Long)

Dim l As Long

l = GetProp(hWndForm, "ExtBtnProc")
If l = 0 Then
'Isn't subclassed
Exit Sub
End If

SetWindowLong hWndForm, GWL_WNDPROC, l
RemoveProp hWndForm, "ExtBtnProc"

End Sub

Public Sub SetButton(ByVal hWnd As Long, _
ByVal lForeColor As Long, _
Optional ByVal VAlign As TextVAligns = DT_VCENTER)

Dim hWndParent As Long

hWndParent = GetParent(hWnd)
If GetProp(hWndParent, "ExtBtnProc") = 0 Then
ExtButtonSubclass hWndParent
End If

SetProp hWnd, "VBTCustom", 1
SetProp hWnd, "VBTForeColor", lForeColor
SetProp hWnd, "VBTVAlign", VAlign

End Sub

Public Sub RemoveButton(ByVal hWnd As Long)

RemoveProp hWnd, "VBTCustom"
RemoveProp hWnd, "VBTForeColor"
RemoveProp hWnd, "VBTVAlign"

End Sub

然后回到FORM中:
添加CommandButton,不必更改它们的名称,将它们的Style设为Graphical,给第3个按钮设置一幅图片。
CommandButton也可以放置在一个容器如PictureBox或Frame中,模块会判断,如果需要的话将CommandButton的容器也子类化。

在Form中的代码:
Private Sub Form_Load()

'Initialize each button color.
SetButton Command1.hWnd, vbRed
SetButton Command2.hWnd, &H8000& '深绿色
'Assign this one a DT_BOTTOM alignment because
SetButton Command3.hWnd, vbBlue, DT_BOTTOM '含有图片,将文本放置在按钮底部
SetButton Command4.hWnd, &H8080& '暗棕黄色

End Sub

Private Sub Form_Unload(Cancel As Integer)

'手动解除按钮的子类化
'这并不是必须的
RemoveButton Command1.hWnd
RemoveButton Command2.hWnd
RemoveButton Command3.hWnd
RemoveButton Command4.hWnd

End Sub

For m = 0 To 9
SetButton CmdNum(m).hWnd, vbBlue
Next
For n = 1 To 4
SetButton CmdCal(n).hWnd, vbRed
Next
For l = 2 To 4
SetButton CmdOth(l).hWnd, vbRed
Next

阅读全文

与rct命令相关的资料

热点内容
启动修复无法修复电脑命令提示符 浏览:355
手机编程是什么 浏览:93
山东移动程序员 浏览:161
苏州java程序员培训学校 浏览:475
单片机液晶驱动 浏览:852
魔拆app里能拆到什么 浏览:128
新预算法的立法理念 浏览:142
wdcpphp的路径 浏览:132
单片机p0口电阻 浏览:924
浏览器中调短信文件夹 浏览:594
五菱宏光空调压缩机 浏览:66
为什么app占用几百兆 浏览:678
自动解压失败叫我联系客服 浏览:482
易语言新手源码 浏览:456
oa服务器必须有固定ip地址 浏览:42
传奇源码分析是什么 浏览:267
解放压缩机支架 浏览:255
程序员秃顶搞笑相遇 浏览:8
IBM手机app商店叫什么名字 浏览:834
jpeg压缩质量 浏览:775