功能:
切割
切割属性:
即人物属性,可以设置临时属性或者永久属性,龙岭使用的是临时属性,所谓临时就是存在有效期,龙岭设置的有效期是123456789秒,即1428.89802天。
龙岭写法(倒叙):
- 第一步:调用:QF中写一个配置表,表中配置即自定义属性值,表中我对切割和切割倍数属性进行了打印,这两个属性值分别是1000和0,因此我对1000感到好奇,在代码中并没有使用setbaseinfo函数对切割值进行设置,那是哪里进行设置的?原来调整人物的210对应属性值即可修改,即除了setbaseinfo函数还有其他办法,为修改人物临时属性函数hangehumnewvalue和修改人物永久属性函数gethumnewvalue.
----lua 属性表
local play_attr = {}
local attr_tab
function addatt(actor)
attr_tab = nil
if getbaseinfo(actor, ConstCfg.gbase.isplayer) then
attr_tab = {
[4] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 4),
[8] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 8),
[75] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 75),
[200] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 200),---技能格挡
[201] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 201),---无视技能格挡
[210] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 210),--人物属性(临时):210是切割1000,225是暴率100
[211] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 211),
[220] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 220), ---伤害吸收
[221] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 221), ---致命一击几率
[222] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 222), ---致命一击伤害
[223] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 223), ---致命一击抵抗
[224] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 224), ---致命一击伤害减免
[233] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 233), ---最终伤害减免
[236] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 236), ---最终伤害增加
[237] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 237), ---无视伤害吸收
[241] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 241), ---无视伤害吸收
[246] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 246), ---烈火伤害减免
[247] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 247), ---刺杀伤害减免
[248] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 248), ---开天伤害减免
[249] = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 249), ---逐日伤害减免
}
-- release_print("addatt",attr_tab[210])
-- release_print("addatt2",attr_tab[211])
play_attr[actor] = attr_tab
end
return attr_tab
end
- 第二步:添加自定义属性表cfg_att_score.xls及数据
- 第三步:使用修改人物属性函数修改切割值属性:龙岭写法:新人奖励中有个1000切割的奖励,这个1000切割值和”新人降生“称号是绑定的,但是不是新人降生的属性值,而是在称号赋予函数中,除了添加称号外,另外判断了称号是否是称号表的称号,这个称号表是个table,自定义的一个配置文件,如果存在表中,就调用附加属性函数和刷新属性事件。之后打出的伤害就叠加切割值了。
- 代码流转:新手礼包.txt:myaddtitle 新人降生——>LuaFuncList.txt:myaddtitle——>LuaFunc-0.lua:callfunbynpc(actor, 999999999, 0, ‘AddTitle’, name)这个代码会直接在全部已加载文件总搜索AddTitle函数——>称号系统.lua:AddTitle函数:Player.updateSomeAddr(actor,{},_attr)——>Player.lua:changehumnewvalue(actor, attridx, attrvalue, ConstCfg.attrtime)
切割飘血:
当人物属性(临时和永久属性一样)切割值被修改后,打出的伤害包含切割值但是不动画展示(飘血)配置完以下三步即可!
- 配置cfg_damage_number.xls表
- 图片配置到客户端:\dev\res\private
- Ctrl+F6进行可视化iua配置,配置时选择第一个选项,并且需要要与代码对应,如果选择了第二个选项数值不会变,是显示的固定数字
- 而且如果选第一个选项,同时也要写文字长度,一般写4即可,如果不写,则只显示数字,不显示切割字样
悬浮状态框
龙岭同样是在后端写的,但是他没有和“主界面按钮写在一起”,有可能是因为这段悬浮窗代码他是用lua写的,但是主界面按钮代码是txt写的。文件名叫“状态图标.lua”,写完之后下面把这个函数当做事件给注册了,然后他在启动钩子函数startup()
中进行了调用,但是他是直接调用的该函数,没有使用事件
bug:
任务:
设置任务后,任务奖励没有显示?
这个是在后端写的。
- QF文件:
--- PickTask 领取任务触发
function picktask(actor)
callscript(actor, "../QuestDiary/任务系统/触发_接受", "@接受任务处理")
end
- 触发_接受.txt文件:
#if
equal u200 2
#act
set [23] 1
SET [24] 0
mov u201 20
mov s$任务奖励 <Img|x=39.0|y=72.0|img=public/newbutton/rwjl.png>
inc s$任务奖励 <Img|x=70.0|y=110.0|img=public/newbutton/bjg.png|esc=0>
inc s$任务奖励 <ItemShow|x=66.0|y=103.0|width=70|height=70|itemid=10435|itemcount=5|showtips=1>
ADDBUTTON 110 1 <$str(s$任务奖励)>
Navigation 110 <$STR(U200)> 点击任务继续
遗留问题:
飘血
设置飘血时cfg_damage_number表后面的属性值什么意思,如何配置???
任务
txt中ADDBUTTON 110 1 <$str(s$任务奖励)>
中的第二个参数——1是什么意思?
斗笠碎片的背包显示代码是1188,这个代码在item文件夹中找不到对应的png文件
找到了,直接在文件夹右上角搜索栏搜索001188即可,原来位置在D:\chuanqi\newLongLing\客户端\cache\mod_fgcq\stab\res\item\item_0,而不是在D:\chuanqi\newLongLing\客户端\dev\res\item中