扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 135|回复: 0

[转载发布] 双手武器和双持武器的冲突已解决,附代码,另提问其他...

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 2024-3-7 02:50:26 | 显示全部楼层 |阅读模式
    最近做游戏的时候遇到个问题,就是双手武器和双持武器的一些冲突,查找论坛里以前的老帖子,也没解决。然后自己花了点时间终于解决了,把代码发上来,大家帮我看看还可以怎么改进。
    以下代码适用条件为人物已开启双刀流特性,但是可装备的武器里有单手武器和双手武器的情况。
    JAVASCRIPT 代码
    1. Game_Actor.prototype.changeEquip = function(slotId, item){
    2.         if(this.tradeItemWithParty(item, this.equips()[slotId])){//为了增加代码可读性,我把原始的判定条件分拆了
    3.                 if(item==null){//不装备的情况如下【不单独列出该条件则会发生null的错误】
    4.                         this._equips[slotId].setObject(null);
    5.                 }else{
    6.                         if(this.equipSlots()[slotId] === item.etypeId){
    7.                                 if(item.etypeId==1&&item.wtypeId==[b]6[/b]){//我的双手武器的wtypeId是6,你可以把加粗数字改成你的双手武器编号
    8.                                         if(slotId==0){//如果要装备的武器栏是第一条
    9.                                                 this._equips[0].setObject(item);//则对武器栏1的武器进行调换
    10.                                                 this.tradeItemWithParty(null,this.equips()[1]);//将武器栏2的物品放回背包
    11.                                                 this._equips[1].setObject(null);//将武器栏2的武器强制卸除
    12.                                         }elseif(slotId==1){//如果要装备的武器栏是第二条
    13.                                                 this._equips[1].setObject(item);//则对武器栏2的武器进行调换
    14.                                                 this.tradeItemWithParty(null,this.equips()[0]);//将武器栏1的物品放回背包
    15.                                                 this._equips[0].setObject(null);//将武器栏1的武器强制卸除
    16.                                         }
    17.                                 }else{
    18.                                         this._equips[slotId].setObject(item);//如果你要装备的栏位不是武器栏或者要装备的武器不是双手武器的情况,则进行正常装备操作
    19.                                         if(this.equips()[0]!=null&&this.equips()[1]!=null){//对两个武器栏进行判定,是否全都装备着武器【不单独列出该条件则会发生null的错误】
    20.                                                 if(slotId==0&&this.equips()[1].wtypeId==[b]6[/b]){//如果要装备的栏位是1,并且武器栏2已装备的武器是双手武器,此处6为双手武器的编号
    21.                                                         this.tradeItemWithParty(null,this.equips()[1]);//将武器栏2的双手武器放回背包
    22.                                                         this._equips[1].setObject(null);//将武器栏2的双手武器强制卸除
    23.                                                 }elseif(slotId==1&&this.equips()[0].wtypeId==[b]6[/b]){//如果要装备的栏位是2,并且武器栏1已装备的武器是双手武器,此处6为双手武器的编号
    24.                                                         this.tradeItemWithParty(null,this.equips()[0]);//将武器栏1的双手武器放回背包
    25.                                                         this._equips[0].setObject(null);//将武器栏1的双手武器强制卸除
    26.                                                 }
    27.                                         }
    28.                                 }
    29.                         }
    30.                 }
    31.                 this.refresh;
    32.         }
    33. };
    复制代码


    另外,我想让角色装备双手武器的时候,默认的攻击选项变成全体攻击,我直接修改Game_BattlerBase.prototype.attackSkillId的话能起效,但是我不知道怎么把武器判定跟这个attackSkillId放在一起,望大神赐教。
                 本帖来自P1论坛作者seedj13,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=390976  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-10 16:51 , Processed in 0.128742 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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