C++ Skills Damage

Results 1 to 3 of 3
  1. #1
    Banned kLaw is offline
    BannedRank
    Jun 2011 Join Date
    31Posts

    C++ Skills Damage

    hey guys ..

    This is a part of sirix old OTP la code .

    I want to make it a modification for skill ShieldOffensive from commander because its really sux and comma's need some action .

    static void (__thiscall* Real_LifeAsorbtion) (void* pSkill, void* pPlayer, char* pPacket, char* pPos) = (void (__thiscall*) (void*, void*, char*, char*))0x00488330;
    -> 0x00488330 -> this is the life absorption addr
    --> Tried to find the shieldoffensive one but no chance . anyone can give me a hand in this?

    static unsigned (__thiscall* AverageDamage) (void* pPlayer) = (unsigned (__thiscall*) (void*))0x0043D970;
    -> this addr is for calculating your average damage

    static bool (__thiscall* CheckHit) (void* pPlayer, void* pTarget, int arg) = (bool (__thiscall*) (void*, void*, int))0x43DA00;
    -> this is for checking if you miss target or you hit it .

    static char* (__cdecl* ReadPacket)(char *pPacket, char *pPos, const char *sFormat, ...) = (char* (__cdecl*)(char*, char*, const char*, ...))0x4975F0;
    -> this is for reading packets like "db","dbbd" etc . i dont know what they are really means but maybe someone can explain this to us

    static void* (__cdecl* FindMonster) (int nID) = (void* (__cdecl*) (int))0x0043A240;

    static void* (__cdecl* FindPlayer) (int nID) = (void* (__cdecl*) (int))0x00450810;

    static void (__cdecl* WriteInSight) (void* pPlayer, BYTE bType, const char *Format, ...) = ( void (__cdecl*) (void*, BYTE, const char*, ...))0x0040B9E0;

    static LONG (__thiscall* ObjectRelease)(void* pOject, LONG lpAddend) = (LONG (__thiscall*)(void*, LONG))0x4239C0;

    Guys . Who is experienced in this.. maybe you can help us . im not the only one who's asking for this but. all i really want is to make some changes for old kals . wanna start and old school soon :P so would be nice from you if you help me .

    Give me tips ! thank you . Greetz

    Last edited by kLaw; 22-07-13 at 10:52 PM.


  2. #2
    Quitted MadKnight is offline
    MemberRank
    Feb 2012 Join Date
    Planet VegetaLocation
    443Posts

    Re: C++ Skills Damage

    This should be ShieldOffense if i am not totally wrong ( 0x00481750 ) ^^

    Code:
    void *__thiscall CPlayerSkill__ShieldOffense(void *SkillPointer, void *PlayerPointer, char *PacketPointer, char *PositionPointer)
    {
      void *result; // eax@1
      int Playerid; // eax@8
      DWORD TickCount; // esi@11
      int Hit; // ST28_4@14
      int ExplosiveBlowDamage; // ST24_4@14
      int Damage; // ST20_4@14
      int SkillGrade; // ST1C_4@14
      int targeId; // ST14_4@14
      int playerId; // eax@14
      int PlayerID; // eax@16
      void *SkillP; // [sp+8h] [bp-28h]@1
      int hit; // [sp+Ch] [bp-24h]@11
      int ExplosiveBlowdamage; // [sp+10h] [bp-20h]@11
      int DamagaPointer; // [sp+14h] [bp-1Ch]@11
      int v18; // [sp+18h] [bp-18h]@11
      int v19; // [sp+1Ch] [bp-14h]@11
      int TickCountValue; // [sp+20h] [bp-10h]@11
      int TargetPointer; // [sp+24h] [bp-Ch]@1
      char Type; // [sp+2Bh] [bp-5h]@1
      void *targetpointer; // [sp+2Ch] [bp-4h]@1
    
    
      SkillP = SkillPointer;
      result = ScanPacket(PacketPointer, (unsigned int)PositionPointer, (unsigned int)"bd", &Type, &TargetPointer);
      targetpointer = 0;
      if ( Type )
      {
        if ( Type == 1 )
        {
          result = (void *)CMonster__FindMonster(TargetPointer);
          targetpointer = result;
        }
      }
      else
      {
        result = (void *)FindPlayer(TargetPointer);
        targetpointer = result;
      }
      if ( targetpointer )
      {
        if ( (**(int (__thiscall ***)(void *, void *, void *))SkillP)(SkillP, PlayerPointer, targetpointer) )
        {
          // its used for explosive blow as random percentage chance
          TickCountValue = CalculateTickCount(SkillP, (int)PlayerPointer);
          TickCount = GetTickCount();
          *((_DWORD *)PlayerPointer + 362) = CChar__GetASpeed(PlayerPointer) + TickCount;
          CChar__SetDirection(
            *((_DWORD *)targetpointer + 83) - *((_DWORD *)PlayerPointer + 83),
            *((_DWORD *)targetpointer + 84) - *((_DWORD *)PlayerPointer + 84));
          DamagaPointer = 0;
          ExplosiveBlowdamage = 0;
          hit = 0;
          v19 = 0;
          v18 = 0;
          // cmonster maguni damage
          v18 = (*(int (__thiscall **)(void *, void *))(*(_DWORD *)targetpointer + 0x94))(targetpointer, PlayerPointer);
          if ( !v18 )
          {
            // CPlayerSkill__CalcDamage
            v19 = (*(int (__thiscall **)(void *, void *, void *, int, int *, int *, int *))(*(_DWORD *)SkillP + 0x50))(
                    SkillP,
                    PlayerPointer,
                    targetpointer,
                    TickCountValue,
                    &DamagaPointer,
                    &hit,
                    &ExplosiveBlowdamage);
            if ( !v19 )
              // CMonsterReal__Defense
              (*(void (__thiscall **)(void *, void *))(*(_DWORD *)targetpointer + 0x50))(targetpointer, PlayerPointer);
          }
          // CChar__Index
          (*(void (__thiscall **)(void *, void *))(*(_DWORD *)SkillP + 0x38))(SkillP, PlayerPointer);
          Hit = v19 | 2 * hit | 4 * v18;
          ExplosiveBlowDamage = ExplosiveBlowdamage;
          Damage = DamagaPointer;
          SkillGrade = *((_DWORD *)SkillP + 2);
          targeId = CBase__Id(targetpointer);
          playerId = CBase__Id(PlayerPointer);
          // Send Damage Update to Client
          CChar__WriteInSight(
            (int)PlayerPointer,
            63,
            (unsigned int)"bddbbwwb",
            *((_DWORD *)SkillP + 1),                // skillid
            playerId,
            targeId,
            1,
            SkillGrade,
            Damage,
            ExplosiveBlowDamage,
            Hit);
        }
        else
        {
          if ( *((_DWORD *)SkillP + 10) )
          {
            PlayerID = CBase__Id(PlayerPointer);
            CChar__WriteInSight((int)PlayerPointer, 61, (unsigned int)"db", PlayerID, 0);
          }
        }
        result = (void *)CIOObject__ReleaseX(targetpointer, (LONG)((char *)targetpointer + 352));
      }
      else
      {
        if ( *((_DWORD *)SkillP + 10) )
        {
          Playerid = CBase__Id(PlayerPointer);
          result = (void *)CChar__WriteInSight((int)PlayerPointer, 61, (unsigned int)"db", Playerid, 0);
        }
      }
      return result;
    }

  3. #3
    Banned kLaw is offline
    BannedRank
    Jun 2011 Join Date
    31Posts

    Re: C++ Skills Damage

    thank you for your reply . i'll check now :P

    now ill have to figure out how i'll use it :P anyway thanks for your fast reply



Advertisement