3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 22913|回复: 125
打印 上一主题 下一主题

[原创] ======发一些自己写的简单实用的脚本,兼脚本入门教程~~~~8月21更新提供一些下载======

  [复制链接]

8

主题

403

帖子

1565

积分

游戏狂人

O(∩_∩)O

Rank: 6Rank: 6

贡献度
47
金元
13773
积分
1565
精华
0
注册时间
2011-7-7
跳转到指定楼层
主题
发表于 2012-7-13 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bluesky404 于 2012-12-3 21:40 编辑

都是一些超短的小脚本,即使刚学会用CS的童鞋也能弄明白的,高手就请忽视这些吧。本贴希望能鼓励多点人写脚本,并能自己开发自己想要的一些简单的功能。另外,这些代码我是先从自己的MOD里复制粘贴到这里然后再编辑给大家看的,所以编辑过程中可能令代码出错,望大家领会代码的意思。
12-08-17更新信息:应他人所求做了一个好用一点的防误伤脚本。由于这个功能难以只用一个脚本来实现,而且也不算简单了,再者考虑到论坛里不少童鞋可能没写过脚本,难以看懂,或者根本不打算在此花时间……o(>﹏<)o…所以我想了想…还是放出一些下载吧。下载地址一楼底部,二楼提供下载的介绍(若需下载请务必先看)
一个对理解脚本蛮有帮助的贴子: http://bbs.blacksheepgame.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

————————————————————————这是线————————————————————————

好吧,写了这么些,应该差不多了吧……

最后写几个不影响平衡性的游戏设置。在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是中文版的,至于英文版…其实也是一样的╮(╯▽╰)╭



至此脚本写完,下面是添加脚本(到附魔效果中)



———————————————————————我是一条线———————————————————————

↓↓↓下载地址↓↓↓~~下载前请务必看二楼的介绍╮(╯▽╰)╭
摇摇屋网盘杯具了……华为网盘和度娘网盘
鼓励DIY
华为网盘:
游客,如果您要查看本帖隐藏内容请回复

评分

8

查看全部评分

回复

使用道具 举报

0

主题

116

帖子

202

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2020
积分
202
精华
0
注册时间
2016-6-14
舒服的沙发
发表于 2022-10-8 10:32 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

0

主题

749

帖子

834

积分

超级玩家

Rank: 5Rank: 5

贡献度
0
金元
8344
积分
834
精华
0
注册时间
2011-12-5
硬硬的板凳
发表于 2022-10-20 23:40 | 只看该作者
aaaaaaaaaaaaaaaa
回复 支持 反对

使用道具 举报

4

主题

1422

帖子

1420

积分

游戏狂人

Rank: 6Rank: 6

贡献度
12
金元
13720
积分
1420
精华
0
注册时间
2013-8-26
冰凉的地板
发表于 2023-6-21 23:45 | 只看该作者
感谢楼主分享
回复 支持 反对

使用道具 举报

260

主题

1633

帖子

2544

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
185
金元
18044
积分
2544
精华
0
注册时间
2013-12-29
QQ
5#
发表于 2025-4-4 22:51 | 只看该作者
玛卡巴卡
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-4-13 07:41 , Processed in 0.124882 second(s), 20 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表