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

注册 登录

QQ登录

只需一步,快速开始

查看: 5179|回复: 17
打印 上一主题 下一主题

[分享] 教程 --- 修改 幸福度、体力等(体力加快恢复,慢速下降)

[复制链接]

51

主题

1355

帖子

3037

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
383
金元
14848
积分
3037
精华
2
注册时间
2012-9-25
跳转到指定楼层
主题
发表于 2018-9-16 21:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mj911o2 于 2018-9-17 23:28 编辑

之前一直有人在说改了工资导致幸福度不高而辞职
这里给出一个修改幸福度的方法
staff --- UpdateEnergy  
此方法为刷新体力,应该是游戏内,员工无论是休息,工作等,都在这里进行赋值调整体力
由此可知,该方法在游戏运行时,一直在被调用当然,也可以在Updata里添加该方法引用,因为Updata函数就是循环刷新体力等的
我这么写只是在改体力的时候图个方便

if (this.Energy != null)
在上面if 语句块里添加下面一段(最好是在if块里添加,这句就是在判断单位的体力是否为空,加到外面可能会造成不可知的BUG)
base.Happiness.SetValue(99999f, true);
这一句就是调整员工幸福度为99999  之后true是回调,不了解的话就改成true就行

另外,说说修改体力以下两句是刷新体力
float staffEnergyModifier = roomUsing.Definition.GetStaffEnergyModifier(this, roomUsing);
this.Energy.Modify(staffEnergyModifier * deltaTime, base.GetAttributeMultiplier(CharacterAttributes.Type.Energy));
这一段为共用函数段,增加和减少体力都是用的这个,所以如果直接在第一句或第二句的最后 *10 的话,那么就会造成增加快,减少也快的情况
staffEnergyModifier * deltaTime为正时增加,负时减少,所以如果不想无脑满体力的话,需要事先判断该值
所以做如下修改
if (base.RoomUsing != null)
        {
            float num = base.RoomUsing.Definition.GetStaffEnergyModifier(this, base.RoomUsing) * deltaTime;
            if (num > 0f)
            {
                num *= 100f;  //百倍回复
            }
            else
            {
                num /= 10f;  //十分之一倍减少
            }
            this.Energy.Modify(num, base.GetAttributeMultiplier(CharacterAttributes.Type.Energy));
            return;

        }

上方修改意思为,休息时百倍回复,工作时体力十分之一倍下降

评分

2

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-31 17:59 , Processed in 0.027205 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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