99Max综合娱乐网站(旧版)

 找回密码
 立即注册
查看: 2238|回复: 14

[求助] 致命涂毒和刺客之魂不能共存的写法问题

[复制链接]

升级   0%

发表于 2012-4-28 18:05:51 | 显示全部楼层 |阅读模式
本帖最后由 一生一叹一痕沙 于 2012-4-28 18:07 编辑

因为擅自改了KVM套,刺客有点太变态了,已经把致命加的攻击减了一半了,但刺客魂和致命涂毒共存时依然十分变态,所以最后还是想把这2个技能卡擦掉

在skill.c里找到
        case ASC_EDP:
                clif_skill_nodamage(src,bl,skillid,skilllv,
                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv) + ( sd ? 1000 * pc_checkskill(sd,GC_RESEARCHNEWPOISON) : 0 )));
        break;

修改成
        case ASC_EDP:
                if( sc->data[SC_SPIRIT]->val2 == SL_ASSASIN )
                {

                        clif_skill_nodamage(src,bl,skillid,skilllv,
                                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv) + ( sd ? 1000 * pc_checkskill(sd,GC_RESEARCHNEWPOISON) : 0 )));
                }
                else
                {

                        取消技能这部分怎么写?return 0;吗
                        还是clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);

                }       
        break;

IF这部分也不确定对不对,只是找了下关于灵魂的写法,照抄了一下。。。

帮忙指点一下吧
温馨提示:
1. 本站模拟器源于网络,经 99Max.mE 二次开发,仅供个人学习娱乐使用,切勿用于商业用途,否则后果自负!
2. 如需更好体验游戏内容,请前往官方游戏!不具备合法的运营模式,都是强盗,请勿擅自搭建私服!
3. 如本站内容有侵犯您的权益,请发送信息至QQ:372607220 或 EMAIL:372607220@qq.com ,我们会及时删除。

升级   0%

 楼主| 发表于 2012-4-28 18:15:05 | 显示全部楼层

if就错了
1>..\src\map\skill.c(5055): error C2065: “sc”: 未声明的标识符
1>..\src\map\skill.c(5055): error C2223: “->data”的左侧必须指向结构/联合

升级   100%

发表于 2012-4-28 18:40:45 | 显示全部楼层
太复杂了,真是爱莫能助,希望大哥早日解决!

升级   100%

发表于 2012-4-28 22:12:54 | 显示全部楼层
本帖最后由 灵巧儿 于 2012-4-28 22:14 编辑

这里不是写取消技能,而是取消状态

status_change_clear

用这个函数来结束其状态
而不是结束其技能

致命其实是一个状态

SC_EDP

先判断是否是有这个状态,status_get_sc 来获得
如果有就直接结束
SC_EDP
同理,也是

升级   100%

发表于 2012-4-28 22:17:07 | 显示全部楼层
你可以参考官方某些状态不会背其他状态替换的写法!

升级   0%

 楼主| 发表于 2012-4-29 10:21:31 | 显示全部楼层


谢谢指点,这么一说,突然想到霸协和圣祈之间的关系

升级   100%

发表于 2012-4-29 10:30:32 | 显示全部楼层
呵呵,能明白就好,GF许多状态不能重叠,说道低,非攻击性技能都是状态,而其有status.c来控制,而非skill.c

升级   0%

 楼主| 发表于 2012-4-29 11:00:51 | 显示全部楼层
灵巧儿 发表于 2012-4-29 10:30
呵呵,能明白就好,GF许多状态不能重叠,说道低,非攻击性技能都是状态,而其有status.c来控制,而非skill. ...

恩,之前为了学习技能源码,把每个技能源码都整理过,看到了在status.c里set_sc和add_sc,知道技能效果是有SC_给的,但实际运用起来,没有找到真正的修改点,还是钻在胡同里,修改技能还是从sikll.c那里出发了

升级   100%

发表于 2012-4-29 11:19:13 | 显示全部楼层
sikll.c控制东西不多。
一般伤害技能写在 battle.c
状态技能写在 status.c
很少一部分技能写在 sikll.c
部分系统级技能还要写在 clif.c 中

升级   100%

发表于 2012-4-29 13:55:58 | 显示全部楼层
status_change_start

找到

       case SC_MERC_HITUP:
                if( bl->type != BL_MER )
                        return 0; // Stats only for Mercenaries
        break;

加入
        case SC_EDP:
                if(sc->data[SC_SPIRIT])
                        return 0;
                break;
        case SC_SPIRIT:
                if(sc->data[SC_EDP])
                        return 0;
                break;

即可

点评

這個寫法的話, 是一旦有 edp 或者有 al_assassin 相對的 效果就加不上. 我感覺不是太科學. 如果真要禁止兩者共存. 最好的方式還是 啟動edp 則 sc_end掉 sc_spirit 啟動 sc_spirit 則 end掉 edp  发表于 2013-1-23 01:51
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|99Max综合娱乐网站(旧版) ( 沪ICP备11024206号-1 )

GMT+8, 2024-5-17 13:24 , Processed in 0.069142 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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