游戏狂人
O(∩_∩)O
![Rank: 6](static/image/common/star_level3.gif) ![Rank: 6](static/image/common/star_level2.gif)
- 贡献度
- 47
- 金元
- 13768
- 积分
- 1565
- 精华
- 0
- 注册时间
- 2011-7-7
|
本帖最后由 bluesky404 于 2012-12-3 21:40 编辑
都是一些超短的小脚本,即使刚学会用CS的童鞋也能弄明白的,高手就请忽视这些吧。本贴希望能鼓励多点人写脚本,并能自己开发自己想要的一些简单的功能。另外,这些代码我是先从自己的MOD里复制粘贴到这里然后再编辑给大家看的,所以编辑过程中可能令代码出错,望大家领会代码的意思。
12-08-17更新信息:应他人所求做了一个好用一点的防误伤脚本。由于这个功能难以只用一个脚本来实现,而且也不算简单了,再者考虑到论坛里不少童鞋可能没写过脚本,难以看懂,或者根本不打算在此花时间……o(>﹏<)o…所以我想了想…还是放出一些下载吧。下载地址一楼底部,二楼提供下载的介绍(若需下载请务必先看)
一个对理解脚本蛮有帮助的贴子: http://bbs.3dmgame.com/thread-1295535-1-1.html (遇到不懂的函数可以按Ctrl+F查找其作用,注意该贴子第二页也有内容)
想弄清楚函数的详细用法就上: http://cs.elderscrolls.com/index.php/List_of_Functions .
12-08-29更新信息:一楼底部给出一个怎么用CS写脚本的简单图示教程★如果不清楚这些脚本代码怎么用可以先到一楼底部看此图示教程★
————————————————————————这是线————————————————————————
先来一个:武器附魔按百分比当前生命值损血的脚本
脚本类型:Magic Effect Script
其它需求:写好后,给某个附魔加一个Script Effect效果,然后给某把武器附上这个附魔
--------------这也是线--------------
scn a1BFBSX ;脚本名,个人习惯以a1开头,易于排序,我下面写的脚本名都是a1开头;BFBSX=百分比损血- -!
long a ;定义一个long型变量。定义变量时整数用short或long,浮点数(即小数)用float
begin ScriptEffectStart ;"当魔法效果开始时生效",用在武器附魔上就是武器攻击到敌人时生效
set a to (getav health *.1) ;给变量a赋值,赋敌人当前生命值的10%
set a to (-a) ;给变量a赋值,a的值变成-a
modav2 health a ;敌人减少a的生命值,即减少10%当前生命值
end ;必要格式
--------------这也是线--------------
就这么几行就完成了,现在你可以有一把按敌人当前生命值损血的武器了
————————————————————————这是线————————————————————————
来第二个:当箭的数量少于10时,自动补充到50支箭;同时装备弓就自动装备箭(已解决只装备一支箭的问题),卸下弓就自动卸下箭。
脚本类型:Object Script
其它需求:一把ID名为a1bow的弓,一个ID名为a1arrow的箭,给弓加上这个脚本,箭不用
--------------这也是线--------------
scn a1BowArrow
short addArrow ;定义两个short型变量
short count
begin gameMode ;"在游戏进行时生效"(非菜单时)
if (player.getequipped a1bow == 1 && player.getequipped a1arrow == 1) ;玩家装备上该弓与箭时
if player.GetItemCount a1arrow < 10 ;当箭矢数少于10时
set addArrow to (50 - player.GetItemCount a1arrow) ;对addArrow变量赋值,值为(50-当前箭矢数)
player.additem a1arrow addArrow ;增加箭矢
endif
endif
end ;至此,完成自动补充箭代码,下面的代码为弓箭同时装备和卸下。
begin onEquip ;当玩家装备该物品时生效
set count to (player.GetItemCount a1arrow - 1)
player.removeitemns a1arrow count ;先将箭矢数减到1,这样做才能解决只装备一支箭的问题
player.equipitemNS a1arrow ;装备箭矢
player.additemns a1arrow 49 ;增加49支箭矢
end
begin onunEquip ;当玩家卸下该物品时生效
player.unequipitemns a1bow ;卸下弓。这句看似无用,实际是有用的,一试便知
player.unequipitem a1arrow
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第三个:一把成长型的武器,武器能根据你的当前人物等级改变自己攻击力。稍微修改一下代码就可以令“依据人物等级”变为“依据敏捷”“依据力量”“依据人物防御力”甚至依据多个属性来决定自身攻击力
脚本类型:Object Script
其它需求:一把武器,给武器加上这个脚本,每次装备上武器时,武器会根据等级改变攻击力
--------------这也是线--------------
scn a1growweapon
short lv
float gongji
ref wuqi
begin onEquip
set lv to (player.getlevel*1.5) ;这里指武器攻击为等级数的1.5倍,若你人物30级,那么武器攻击力为45
;若想改为根据0.5倍敏捷来设定攻击的话,写为 set lv to (player.getav agility * 0.5) 以此类推
set wuqi to player.getequippedobject 16
set gongji to (lv)
SetAttackDamage gongji wuqi
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第四个:召唤坐骑或宠物魔法,使用一次这个魔法坐骑召来,再用一次坐骑消失。
脚本类型:Magic Effect Script
其它需求:首先,你必须在这个MOD中有一个坐骑生物,然后你把该生物放到了世界中,比如可以放到testinghall测试大厅或者帝都市场街,然后该生物就有了个参照编辑ID,比如写为a1canzhao;然后你需要在世界中,再放一个Marker比如可以使用“门”类物品里的“MagesGuildPortal01”,可以放在测试大厅或你喜欢处,然后这个Marker就有了一个参照ID,比如写为a1marker。
--------------这也是线--------------
scn a1SummonScript
Begin ScriptEffectstart
if Player.IsRidingHorse == 1 ;骑马时施这个法术则无效,如果你像我一样用了某些可以在骑马时施法的MOD的话
elseif Player.GetDistance a1canzhao < 2000 ;若你的坐骑在你周围2000范围内,则将坐骑送到a1marker所在地
a1canzhao.moveto a1marker
else
a1canzhao.moveto player 150 0 0 ;坐骑不在你周围的话,将坐骑传送到你旁边
endif
End
--------------这也是线--------------
写好后,建一个法术,添加该Script Effect。游戏中,用一次法术,坐骑召来,再用一次,坐骑消失(实际去了测试大厅,任何召唤坐骑类MOD都是将坐骑送去某个地方的)。
————————————————————————这是线————————————————————————
第五个:物品自动入包,魔法自动学会。估计多数人都会,我姑且写一下。
脚本类型:Quest Script
其它需求:物品ID为a1wupin,魔法ID为a1mf,先在任务设置里新建个ID名为a1xixixixi的任务,写好代码后,在任务的脚本处选择a1wahahahaha并确定。
--------------这也是线--------------
scn a1wahahaha
Begin GameMode
player.additem a1wupin 1
player.addspell a1mf
stopquest a1xixixixi
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第六个:拔出武器时和收起武器时,武器外表不同。常见于光剑,但我这个是改进版的,原理不同。比如一把光剑拔出来时是剑,收起时是剑柄,传统的做法是:收剑自动增加物品剑柄再自动装备剑柄,拔剑自动装备物品剑并删除剑柄。但我发现有时会导致拔剑不能一次拔出,要抽搐两下浪费两秒,不知他人是否遇到。本方法主要靠SetModelPath函数完成。当然用此法,可以做到拔剑时是剑,收剑时是扇子、是雨伞或隐藏武器显示…等等
脚本类型:Object Script
其他需求:剑&剑柄ID(如a1sword和a1hold),要知道剑&剑柄的nif文件路径,给剑加上脚本。
--------------这也是线--------------
scn a1SwitchWeaponModel
short flag
Begin Gamemode
if ( player.GetEquipped a1sword ) && ( player.isWeaponout == 1 ) && (flag==0)
SetModelPath "weapon\这里写上剑的nif路径\a1sword.nif" a1sword ;拔剑时武器使用剑的nif文件
player.unequipitemNS a1sword ;此行看似无用实则必须
player.equipitemNS a1sword
set flag to 1
elseif( player.GetEquipped a1sword ) && ( player.isWeaponout == 0 ) &&(flag==1)
SetModelPath "weapon\这里写上剑柄的nif路径\a1hold.nif" a1sword ;拔剑时武器使用剑柄的nif文件
player.unequipitemNS a1sword ;此行必须
player.equipitemNS a1sword
set flag to 0
endif
end
--------------这也是线--------------
这种方法好处是只有一个物品,不像传统方法有两个物品,拔剑时要删除剑柄,有可能导致不能顺利拔剑(我的游戏是这样,不知他人是否遇到,我的帧数基本40左右,不会是卡的问题),但是局限是只能用于同类物品,如果想在单手武器和双手武器中换的话就不行了,比如双持,收剑背持。那样的话可以采用下面的方法。
————————————————————————这是线————————————————————————
第七个:武器双持,收持于背,拔剑同时装备副手武器
脚本类型:Object Script
其他需求:主武器ID:a1sword(单手武器),副手物品ID:a1offhand(伪武器或盾),收持于背的武器ID:a1back(双手武器),在单手的主武器加脚本
--------------这也是线--------------
scn a1SwitchWeapon
short flag
Begin Gamemode
if ( player.GetEquipped a1back ) && ( player.isWeaponout == 1) ;拔剑时自动换上两手两把武器
player.equipitemns a1sword
player.equipitemNS a1offhand
elseif( player.GetEquipped a1sword ) && ( player.isWeaponout == 0 ) &&(flag==0) ;收剑时自动换上双手武器,即收持于背
player.additemns a1back 1
player.equipitemNS a1back
set flag to 1
elseif(player.getequipped a1back==0)&&(player.isweaponout==1)&&(flag==1) ;拔剑后即删除双手武器
player.removeitemns a1back 1
set flag to 0
endif
end
--------------这也是线--------------
完成。另,此代码不会出现抽搐拔剑问题
————————————————————————这是线————————————————————————
第八个:按百分比吸收属性,技能等级,生命,法力等的武器,弓箭也有效。比如击中目标减少其90%速度,自己增加这个速度值。
脚本类型:Magic Effect Script
其他需求:这是附魔效果……给某个附魔加一个Script Effect效果,然后给某把武器附上这个附魔
--------------这也是线--------------
scn a1xxx
short a
short b
begin ScriptEffectStart
set a to (getav speed *.9)
set b to -a
modav speed b
player.modav speed a
end
begin ScriptEffectFinish ;抢来的始终是要还的……
modav speed a
player.modav speed b
end
--------------这也是线--------------
如果抢生命值,法力,体力的话,那就不用还了,不过对命体法要注意函数用player.modav2不能用player.modav;属性,技能用player.modav,并记得要还。
————————————————————————这是线————————————————————————
第九个:随机伤害的附魔
脚本类型:Magic Effect Script
其他需求:这是附魔效果……
--------------这也是线--------------
scn a1xxx
short a
begin ScriptEffectStart
set a to (GetRandomPercent + 1) ;GetRandomPercent产生0~99随机数
set a to -(a*.5) ;随机1~50伤害
modav2 health a
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十个:删除物品或法术——在物品界面删除鼠标指向物品,在法术界面删除已选定的法术。按住右shift+delete键后弹出对话框确认删除……虽然要找删除物品/法术的MOD很好找…嗯…本代码供启发用……虽然本人就是用这个来删除物品的- -!……另外留意下messagebox和fQuestDelayTime的用法,本贴暂时只有此代码会用到messagebox,而fQuestDelayTime则在Quest Script中很常见,也很重要。
脚本类型:Quest Script
其他需求:要在任务设置里新建个任务并选中该脚本,就像自动入包代码一样。
--------------这也是线--------------
scn a1deletescript
long itemconut
ref delitem
ref delspell
short button
short flag
float fQuestDelayTime ;fQuestDelayTime是一个特殊的函数,只在Quest Script中生效,作用是设定脚本运行间隔时间
Begin MenuMode 1002 ;表示在物品菜单执行代码
if ( isKeyPressed2 54 && isKeyPressed2 211 ) ;按下shift和delete键
Set delitem to GetActiveMenuSelection ;设定鼠标指向的物品
set itemconut to Player.GetItemCount delitem
if itemconut >= 1
if IsQuestItem delitem == 0
if itemconut == 1
messagebox "确定删除?", "否", "是" ;messagebox会弹出确认的对话框,从第二对引号开始是按钮
else
messagebox "确定删除?", "否", "删除1个", "删除全部"
endif
else
messagebox "任务物品,确定删除?", "否", "是"
endif
set flag to 1 ;将标志位置1,表示已经弹出过对话框了
endif
endif
end
begin Menumode 1022 表示在法术菜单
if ( isKeyPressed2 54 && isKeyPressed2 211 )
set delspell to GetPlayerSpell
messagebox "确定删除已选择的法术?", "否", "是"
set flag to 2
endif
end
begin Menumode
set fQuestDelayTime to 0.15 ;将fQuestDelayTime设为0.15,这样就能令脚本每0.15秒运行一次
if flag == 1
set button to GetButtonPressed ;GetButtonPressed在MenuMode 1002/1022中不生效所以才放到此处
if button == 1 ;==0表示"否";==1表示"是"
player.removeitem delitem 1
message "已删除"
set flag to 0
elseif button == 2 ;==2表示删除全部。0,1,2按顺序表示上面messagebox的"否", "删除1个", "删除全部"
player.removeitem delitem itemconut
message "已删除"
set flag to 0
endif
elseif flag == 2
set button to GetButtonPressed
if button == 1
player.removeSpell delspell
message "已删除法术"
set flag to 0
endif
endif
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十一个:一个加强自身攻击力的BUFF法术。攻击可改为防御、属性、技能等级等等。法术持续时间内增加,增幅可根据人物等级,可根据智力或其他属性……自行修改吧。
脚本类型:Magic Effect Script
其他需求:这是法术效果…在某个法术里加Script Effect
--------------这也是线--------------
scn a1attup
short a
begin ScriptEffectStart
set a to (player.getlevel*1.5) ;提高1.5倍等级的攻击力,假如人物20级,则BUFF时效内人物攻击力加30;根据属性用player.getav,如set a to (player.getav intelligence * 0.3)
player.modav attackbonus a
end
begin ScriptEffectFinish ;时效结束,攻击要降低
set a to (-a)
player.modav attackbonus a
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十二个:自动瞄准弓————要做成真·自动瞄准可能会很复杂,所以我们不妨做一个近似的效果:拉这把弓的时候,只要准心曾瞄准过某生物,即使射出去的箭没命中,该单位也会受到伤害,这个伤害是一个额外伤害,跟箭命中本身的伤害无关,比如可以令该伤害等于这把弓基础攻击力的1倍。只有最后一个准心划过的生物会受伤害。
脚本类型:Object Script
其它需求:弓的ID为a1bow,对弓加脚本。该脚本虽然也不长,但逻辑可能稍微有点复杂,所以注释写得详细点。
--------------这也是线--------------
scn a1autobow
ref target ;准心瞄准的目标
ref target2 ;接受伤害的目标
int PickLength ;用于暂存数值
int flag ;用于确定玩家是否进行了一次攻击的标志
int flag2 ;用于确定iActivatePickLength是否更改过的标志(下详)
int flag3 ;用于确定额外伤害是否就绪的标志
float timer1 ;用于计时(下详)
float timer2 ;同上
long damage ;额外伤害值
begin gameMode
if (player.getequipped a1bow == 1 && isControlPressed 4) ;装备a1bow并按下攻击键
if (flag2 == 0)
set PickLength to getgamesetting iActivatePickLength ;iActivatePickLength是一个游戏设置值,玩家接触距离,玩家可以开门捡物的距离
setnumericgamesetting iActivatePickLength 2300 ;装备a1bow并拉弓时,暂时将接触距离增至2300,因此才能瞄准远处目标
set flag2 to 1 ;所以如果用a1bow并正在拉弓,你可以开远处的箱子- -!
endif
set target to getcrosshairref ;将目标定为准心划过的单位
if (target.isactivatable && target.isactor && target.getdead == 0 && target != 0) ;确定目标是生物,排除箱子,花草之类的目标
set target2 to target ;设定准备接受伤害的最后一个准心划过的单位
endif
set flag to 1 ;开启玩家进行过一次攻击的标志
if timer1 < 1 ;这是个计时器,只有当按住攻击键1秒以上,才能启动额外伤害,防止连按攻击键,连续激活额外伤害
set timer1 to timer1 + GetSecondsPassed ;连按攻击不能连续激活伤害,但连按的时间也会累加,比如连按5次攻击,每次0.2秒,也激活伤害
else
set flag3 to 1 ;开启目标准备接受伤害的标志
set timer1 to 0
endif
elseif (isControlPressed 4 != 1 && flag == 1) ;这一段表示拉弓结束,箭脱弦,目标可以准备接受伤害
set flag to 0
if (flag3 == 1)
set flag3 to 2
endif
endif
if (flag3 == 2) ;若伤害就绪标志开启
if timer2 < .4 ;延时,使额外伤害晚点触发,不至于箭一脱弦就触发,这里设为0.4秒
set timer2 to timer2 + GetSecondsPassed
else
if ( target2.getdead == 0 ) ;确定目标没死
set damage to -(GetAttackDamage a1bow * 1) ;设定额外伤害的依据,这里设为弓基础伤害的1倍。另,弓箭伤害本是弓+箭的伤害
target2.modav2 health damage ;只设弓的基础伤害的话,比确实命中目标的伤害低。喜欢的话可以改为依据人物敏捷造成额外伤害等等
endif
set timer2 to 0
set flag3 to 0
endif
endif
if (flag == 0 && flag2 == 1) ;不拉弓的话iActivatePickLength要改为原值
setnumericgamesetting iActivatePickLength PickLength
set flag2 to 0
endif
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十三个:自动切换视角———使用弓时,若按攻击键,自动切换至第一人称视角;若切换视角是自动切的话,则收弓放背后或换非弓武器时,自动切至第三人称。
脚本类型:Quest Script
其它需求:像物品自动入包那样,新建个任务选定该脚本。
--------------这也是线--------------
scn a1bowfirstperson
float fQuestDelayTime ;fQuestDelayTime是一个特殊的函数,只在Quest Script中生效,作用是设定脚本运行间隔时间
short flag1
short flag2
begin gamemode
set fQuestDelayTime to 0.08 ;这样就令脚本每0.08秒运行一次,若不设定,默认是每帧运行一次脚本(gamemode)。觉得0.08秒不合适的自行修改
if Player.GetWeaponAnimType == 3 ;玩家拿的是弓
if player.IsWeaponOut == 1
if isControlPressed 4
set flag1 to 1
set flag2 to 1
ToggleFirstPerson 1 ;切至第一人称
endif
elseif flag1 == 1
ToggleFirstPerson 0 ;若之前切换视角是自动的话,则收弓时自动切至第三人称
set flag1 to 0
endif
elseif flag2 == 1
ToggleFirstPerson 0 ;若之前切换视角是自动的话,则换武器时自动切至第三人称
Set flag2 to 0
endif
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十四个:界面时钟——做任务时要等时间,老是要进入任务界面看当前游戏时间,麻烦。所以…做个界面钟…但是要做真·界面时钟只有脚本可不行啊,既然基于脚本那么我们用Message""的方式每隔游戏内10分钟(现实20秒)在画面左上角显示一次当前时间。战斗时不显示
脚本类型:Quest Script
其它需求:像物品自动入包那样,新建个任务选定该脚本。另说明,这段代码是我根据ZorPrime在T网上的MOD提取出来并根据我自己的喜好改写的。
--------------这也是线--------------
scn a1timeScript
float fQuestDelayTime
short a1Day
short a1Hour
short a1Last
short a1Minute
float a1TimeStamp
begin GameMode
set fQuestDelayTime to 1.8 ;fQuestDelayTime的作用见上一个脚本
set a1TimeStamp to GetCurrentTime
set a1Hour to a1TimeStamp
set a1Minute to (a1TimeStamp * 60) - (a1Hour * 60) ;这几行确定时间
if ((a1Minute % 10) == 0) ;当分钟为10的倍数时,即每10分钟
if (a1Minute != a1Last)
if (Player.IsInCombat == 0) ;战斗时不显示
set a1Day to GetDayOfWeek
if (a1Day == 0)
Message "天 %02.0f:%02.0f" a1Hour a1Minute ;用Message的方式显示,“%”后面的是格式
elseif (a1Day == 1)
Message "一 %02.0f:%02.0f" a1Hour a1Minute
elseif (a1Day == 2)
Message "二 %02.0f:%02.0f" a1Hour a1Minute
elseif (a1Day == 3)
Message "三 %02.0f:%02.0f" a1Hour a1Minute
elseif (a1Day == 4)
Message "四 %02.0f:%02.0f" a1Hour a1Minute
elseif (a1Day == 5)
Message "五 %02.0f:%02.0f" a1Hour a1Minute
elseif (a1Day == 6)
Message "六 %02.0f:%02.0f" a1Hour a1Minute
endif
endif
set a1Last to a1Minute
endif
endif
end
--------------这也是线--------------
完成
————————————————————————这是线————————————————————————
第十五个:一双可以提高潜行速度的鞋子
脚本类型:Object Script
其他需求:给鞋子加脚本
--------------这也是线--------------
scn a1sneak
float a
short flag
begin onequip
set a to getgamesetting fMoveSneakMult
setnumericgamesetting fMoveSneakMult 0.9 ;改游戏设置,默认0.6,现改为0.9,基本是1.5倍的速度
set flag to 1 ;用onequip的话,这句代码和下面的 if (flag == 1) 是必须的
end
begin onunequip
if (flag == 1)
setnumericgamesetting fMoveSneakMult a ;装备卸下后,速度改为原值
set flag to 0 ;这句不是必须的,删了也无所谓
endif
end
--------------这也是线--------------
由于原理是改变游戏设置,所以当你穿此鞋的时候,其他NPC的潜行速度也会改变……囧……这段代码给一个思路:可以通过改变游戏设置达到某个你可能需要的效果。另外由于用的是begin onequip,不是gamemode,所以每次开始游戏时可能要脱下鞋子再穿上才有效。如果用gamemode的话,可以用 if (player.getequipped a1shoes && player.IsSneaking && flag==0)去判断,效果也许可能更好。
————————————————————————这是线————————————————————————
第十六个:提高徒手攻击力的手套。由于attackbonus只对持有武器有效,所以就用游戏设置去做这个效果吧……- -!
脚本类型:Object Script
其它需求:手套ID:a1armband,给手套加脚本
--------------这也是线--------------
scn a1handtohandx
float a
float temp
float timer
short flag
begin gamemode
if (player.GetEquipped a1armband == 1 && Player.GetWeaponAnimType == 0) ;装备a1armband且空手
set a to (player.getav personality * 0.1) ;设定a的值,用来改写fHandHealthMax。fHandHealthMax默认值15,所以只有a>15时才有提升效果
set a to (a+15+(player.getav handtohand * 0.24)) ;设定a为15加0.1倍魅力加0.24倍徒手攻击等级。所以当魅力100徒手100时,fHandHealthMax达到49
if ( isControlPressed 4 && flag == 0 )
set temp to getgamesetting fHandHealthMax
setnumericgamesetting fHandHealthMax a ;fHandHealthMax要乘以0.75才是徒手攻击的威力,0.75是力量100徒手等级100时的默认值,具体公式自行查找
set flag to 1 ;所以当fHandHealthMax为49时,徒手威力最高为37
endif
endif
if ( isControlPressed 4 != 1 && flag == 1 )
if timer < 1 ;这是延时器。如果不加延时器的话,可能攻击键按下马上松开,敌人受伤前,fHandHealthMax值就变回原值了
set timer to timer + GetSecondsPassed
else
setnumericgamesetting fHandHealthMax temp
set flag to 0
set timer to 0
endif
endif
end
--------------这也是线--------------
完成。利用类似的方法,如果将fHandReachMult改为3.0,那么就有一个可以发气功的拳套了,攻击距离是剑的3倍- -!
如果想使攻击增幅与手套护甲挂钩,可以用GetArmorAR a1armband * 0.01去获得手套护甲值。*0.01是因为如果手套护甲值为5,GetArmorAR会得到500的值,所以要乘0.01。
————————————————————————这是线————————————————————————
120817更新第十七个:由于一楼的字数快超标了,所以第十七个放在二楼o(><)o
————————————————————————这是线————————————————————————
好吧,写了这么些,应该差不多了吧……![](static/image/smiley/grapeman/96.gif)
最后写几个不影响平衡性的游戏设置。在CS的游戏设置->游戏设置中(Game Setting)
fChase3rdPersonVanityXyMult 和 fChase3rdPersonXYMult 这两项若都设为99则使第三人称视角画面移动平滑。某些解决画面平滑移动的MOD其实仅仅就改了这两项设置
fArrowFOVZoom 射击时按格挡视野放大程度,默认30,值越小放大越大。我自己是设了15
fArrowGravityMult 箭的弧度,默认0.002,加大的话箭的路径越直,0.005就很直了。貌似0.008左右箭就不会有弧度了
iAllyHitAllowed 盟友允许击中的次数,攻击对方超过这个次数对方会攻击你。盟友:比如同为战士工会成员
iFriendHitAllowed 类似上面,对于召唤物之类等等生效。改大这两个数值能解决一点点误伤事故。
iMaxPlayerSummonedCreatures 玩家召唤物数量,默认1,虽然调了影响平衡,不过还是调多几个好玩。
游戏设置其实很多内容,比如上面自动瞄准弓的脚本就用到iActivatePickLength,提高潜行速度鞋子脚本用到fMoveSneakMult,提高徒手攻击的手套用到fHandHealthMax等。某些MOD可能仅仅就是改了几个游戏设置值,就算一个MOD了……………
———————————————————————我是一条线———————————————————————
12-08-29更新:有人问怎么写脚本……嗯啊……首先,CS必须会一点,如果一点都不会的话请先从CS的使用学起,论坛里应该有CS基础教学贴。然后这里我以一楼第一个脚本为例(百分比损血的附魔效果)给出一个非常简陋的教程,见下图。因为此例是附魔效果所以脚本添加到附魔中,若是Quest脚本请添加到任务中,Object脚本请添加到物品中……PS.我的CS是中文版的,至于英文版…其实也是一样的╮(╯▽╰)╭
![](https://att.3dmgame.com/outimg.jpg)
至此脚本写完,下面是添加脚本(到附魔效果中)
![](https://att.3dmgame.com/outimg.jpg)
———————————————————————我是一条线———————————————————————
↓↓↓下载地址↓↓↓~~下载前请务必看二楼的介绍╮(╯▽╰)╭
摇摇屋网盘杯具了……华为网盘和度娘网盘
鼓励DIY
华为网盘:
|
评分
-
8
查看全部评分
-
|