plshelloworld 发表于 2025-10-29 20:35:33

发布一个有趣技改--霸气Haki

本帖最后由 plshelloworld 于 2025-10-29 20:35 编辑

海盗职业群直接是拉完了,路边一条,那么在不破坏游戏生态情况下该怎么办呢?{:3_49:}
既然都已经这样了,那就当个最强单兵吧{:3_52:}

在广袤的冒险岛世界中,海盗们一直以无拘无束的冒险精神与独特技艺而闻名。然而,黑魔法师的对冒险岛世界的影响逐渐加深,一种名为「霸气」的神秘力量逐渐觉醒——那是海洋本身赋予真正自由之人的力量。


[*]霸气,海盗职业群在攻击中有概率触发武装色和见闻色霸气,这使得他们在接下来的战斗中更加得心应手,在攻击中概率获得buff增益:魔法盾,金钱盾,圣甲术,极限防御,神圣之火,轻功,增益持续时间最大不会超过30s
[*]霸王色霸气,海盗职业群在攻击中有概率触霸王色霸气,使得他们在接下来的战斗中战斗技艺极限提高,在攻击中概率获得buff增益:火眼晶晶,泰山压顶,急速领域,斗气集中,致命毒雾,终极无限,圣灵之盾,伺机待发,烟幕弹,增益持续时间最大不会超过20s


服务端改点东西:
public class ToggleBufferHandler1 extends AbstractMaplePacketHandler {
    @Override
    public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
      final MapleCharacter player = c.getPlayer();         
      if (player.getJob().getId() == 512 || player.getJob().getId() == 522) {         
            ArrayList<Integer> arr = new ArrayList<Integer>() {{
                add(2001002);//魔法盾
                add(4211005);//金钱盾
                add(1001003);//圣甲
                add(1301006);//极限防御
                add(1301007);//神圣之火
                add(4201003);//轻功
            }};
            int skid = arr.get((int) (Math.random() * arr.size()));
            int retry = 5;
            while (player.hasBuffById(skid) && retry > 0) {
                retry--;
                skid = arr.get((int) (Math.random() * arr.size()));
            }
            MapleStatEffect effect = SkillFactory.getSkill(skid).varEffect;         
            effect.setDuration(20000 + (int) (Math.random() * 10000));
            switch (skid) {
                default:
                  effect.applyOne(player);
            }

      }
    }
}

public class ToggleBufferHandler2 extends AbstractMaplePacketHandler {
    @Override
    public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
      final MapleCharacter player = c.getPlayer();      
      if (player.getJob().getId() == 512 || player.getJob().getId() == 522) {         
            ArrayList<Integer> arr = new ArrayList<Integer>() {{
                add(3221002);//火眼
                add(1221002);//泰山
                add(15111005);//急速
                add(1111002);//斗气
                add(2111003);//毒雾
                add(2221004);//终极无限
                add(2321005);//圣灵
                add(5121010);//伺机
                add(4221006);//烟幕
            }};
            int skid = arr.get((int) (Math.random() * arr.size()));
            int retry = 5;
            while (player.hasBuffById(skid) && retry > 0) {
                retry--;
                skid = arr.get((int) (Math.random() * arr.size()));
            }
            MapleStatEffect effect = SkillFactory.getSkill(skid).varEffect;         
            effect.setDuration(10000 + (int) (Math.random() * 10000));
            switch (skid) {
                default:
                  effect.applyOne(player);
            }

      }
    }
}值得注意的是。也许你应该先想办法学习一下毒雾和烟雾弹,否则你的客户端会爆炸当然你也需要客户端的一些支持,把他加在我上次发布的有趣dota2技改就行了:    static void TimerHaki() {
      int currentValue = ReadPointerSignedInt(UserLocalBaseex, OFS_AttackCount);
      if (currentValue != lastValue) {
            // 80%
            if (std::rand() % 100 < 80) {
                Haki::Triggle_Hiki_1();
            }
            if (std::rand() % 100 < 50) {
                Haki::Triggle_Hiki_2();
            }         
            // 打印当前值         
            lastValue = currentValue;
      }   
    }关于Haki类,是一个发包,具体怎么发包,请去看其他大佬的帖子:void Haki::Triggle_Hiki_1()
{
    ClientSocket* client = ClientSocket::getInstance();
    if (!client) return;

    client->SendPacket("11 02");

}

void Haki::Triggle_Hiki_2()
{
    ClientSocket* client = ClientSocket::getInstance();
    if (!client) return;

    client->SendPacket("12 02");

}






plshelloworld 发表于 2025-10-29 20:43:11

值得注意的是,毒雾和烟雾弹要提前通过某种方式学会,不管是那种方式teachSkill了就行,否则你的客户端会爆炸

wj1yb1 发表于 2025-10-29 20:58:39

沙发,我要了
页: [1]
查看完整版本: 发布一个有趣技改--霸气Haki