Sorunsuz Genie Sistemi

Krauss

Asteğmen
Katılım
15 May 2026
Mesajlar
14
Tepkime puanı
3
C++:
struct _GENIE_DATA
{
    uint16 SkillCount;
    uint32 SkillData[23];

    uint8 AttackMode;
    uint8 RecoveryMode;

    uint8 SkillRecoveryPercent;
    uint8 AttackRange;
    uint8 ActivitiesRange;

    uint8 HpRecovery;
    uint8 HpPotionPercent;

    uint8 MpRecovery;
    uint8 MpPotionPercent;

    uint8 PetPotionRecovery;
    uint8 PetPotionPercent;

    uint8 AutomaticSkillParty;

    uint8 PartyNumber[12];

    uint8 Options[9];

    uint8 ReturnHPTownPercent;
    uint8 ReturnMPTownPercent;

    _GENIE_DATA()
    {
        for (int i = 0; i < 23; i++)
            SkillData[i] = 0;

        SkillCount = 0;

        AttackMode = 0;
        RecoveryMode = 0;

        SkillRecoveryPercent = 0;
        AttackRange = 0;
        ActivitiesRange = 0;

        HpRecovery = 0;
        HpPotionPercent = 0;

        MpRecovery = 0;
        MpPotionPercent = 0;

        PetPotionRecovery = 0;
        PetPotionPercent = 0;

        AutomaticSkillParty = 0;

        for (int i = 0; i < 12; i++)
            PartyNumber[i] = 0;

        for (int i = 0; i < 9; i++)
            Options[i] = 0;

        ReturnHPTownPercent = 0;
        ReturnMPTownPercent = 0;
    }
};

void CUser::LoadGenieData()
{
    Packet result(WIZ_GENIE, uint8(1));

    result << uint8(2);

    result << GenieData.SkillCount;

    for (int i = 0; i < GenieData.SkillCount; i++)
        result << GenieData.SkillData[i];

    result << uint16(35);

    result << GenieData.AttackMode
        << GenieData.RecoveryMode
        << GenieData.SkillRecoveryPercent
        << GenieData.AttackRange
        << GenieData.ActivitiesRange
        << GenieData.HpRecovery
        << GenieData.HpPotionPercent
        << GenieData.MpRecovery
        << GenieData.MpPotionPercent
        << GenieData.PetPotionRecovery
        << GenieData.PetPotionPercent
        << GenieData.AutomaticSkillParty;

    for (int i = 0; i < 12; i++)
        result << GenieData.PartyNumber[i];

    for (int i = 0; i < 9; i++)
    {
        result << GenieData.Options[i];

        if (i == 0)
            result << GenieData.ReturnHPTownPercent;

        if (i == 1)
            result << GenieData.ReturnMPTownPercent;
    }

    Send(&result);
}

void CUser::SaveGenieData(Packet & pkt)
{
    pkt >> GenieData.SkillCount;

    if (GenieData.SkillCount > 23)
        GenieData.SkillCount = 23;

    for (int i = 0; i < GenieData.SkillCount; i++)
        pkt >> GenieData.SkillData[i];

    uint16 TotalCount = 0;
    pkt >> TotalCount;

    pkt >> GenieData.AttackMode
        >> GenieData.RecoveryMode
        >> GenieData.SkillRecoveryPercent
        >> GenieData.AttackRange
        >> GenieData.ActivitiesRange
        >> GenieData.HpRecovery
        >> GenieData.HpPotionPercent
        >> GenieData.MpRecovery
        >> GenieData.MpPotionPercent
        >> GenieData.PetPotionRecovery
        >> GenieData.PetPotionPercent
        >> GenieData.AutomaticSkillParty;

    for (int i = 0; i < 12; i++)
        pkt >> GenieData.PartyNumber[i];

    for (int i = 0; i < 9; i++)
    {
        pkt >> GenieData.Options[i];

        if (i == 0)
            pkt >> GenieData.ReturnHPTownPercent;

        if (i == 1)
            pkt >> GenieData.ReturnMPTownPercent;
    }
}
 
Son düzenleme:

Konuyu Görüntüleyen Kullanıcılar (Toplam:1)