Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] Custom Bows & Crossbows Client Source (1.03K)

Initiate Mage
Joined
Mar 9, 2017
Messages
35
Reaction score
27
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

Bow skill -> 0x0074A128
cross skill -> 0x00749DCC
Bow inventory -> 0x005CC8E4
Cross world pos -> 0x0056595E

Thank you very much brother :8:
 
Initiate Mage
Joined
Feb 22, 2017
Messages
55
Reaction score
14
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

Bow skill -> 0x0074A128
cross skill -> 0x00749DCC
Bow inventory -> 0x005CC8E4
Cross world pos -> 0x0056595E

Still bugged in safezone :/
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
557
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

Still bugged in safezone :/
Code:
__declspec(naked) void cCrossPos()
{
    static DWORD Address1 = 0x00565994;
    static DWORD Address2 = 0x005659E7;    
  _asm
  {
   Mov Ecx, Dword ptr ss : [ebp + 0x1C]
   Mov Dword ptr ss : [ebp + 0x1C],Ecx
   Mov IsCrossItem, Ecx
  }
  if (IsCrossItem >= ITEM2(4,8) && IsCrossItem <= ITEM2(4,14)||IsCrossItem == ITEM2(4,16)||IsCrossItem == ITEM2(4,18)||IsCrossItem == ITEM2(4,19)
   ||IsCrossItem == ITEM2(4,26))//new
  {_asm{jmp Address1}}
  else
  {_asm{jmp Address2}}
    
}

SetRange((LPVOID)0x0056595E,6,ASM::NOP);
SetOp((LPVOID)0x0056595E,(LPVOID)cCrossPos,ASM::JMP);
 
Initiate Mage
Joined
Mar 9, 2017
Messages
35
Reaction score
27
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

Hi for all, I leave here Custom Shooting Effect, Inventory Position, Player Back Dimmension, etc Sources to added Bows to Client Side (Only).. is necessary fix server side too. Offsets to: 1.03.11 (JPN)

Screens:

Kiosani - [Development] Custom Bows & Crossbows Client Source (1.03K) - RaGEZONE Forums


Kiosani - [Development] Custom Bows & Crossbows Client Source (1.03K) - RaGEZONE Forums


Kiosani - [Development] Custom Bows & Crossbows Client Source (1.03K) - RaGEZONE Forums


Sources:

Code:
[B][COLOR=#ff0000]// Bows Offsets
[/COLOR][/B][B][COLOR=#ff0000]#define iBowAddSkillEffect            0x00699410[/COLOR][/B]
[B][COLOR=#ff0000]#define iBowAddInventoryPos            0x0059F774[/COLOR][/B]
[B][COLOR=#ff0000]#define iBowAddPlayerDimension        0x004E9A0B[/COLOR][/B]
[B][COLOR=#ff0000]#define iCrossAddSkillEffect        0x006990DD[/COLOR][/B]


Code:
DWORD IsBowItem        = 0;
DWORD IsCrossItem    = 0;
DWORD BowValue        = 0x09C;
DWORD MaxBoneCount    = 0x108;
DWORD WorldPosition = 0x0FC;
DWORD oCreateEffect    = 0x00650FF0;
DWORD ReturnBowCode = 0x00699416;
DWORD BowPosition    = 0x0059F77C;
DWORD NextBowPosition = 0x0059F7BB;
DWORD ReturnCrossCode = 0x006990E3;


void __declspec(naked) cBowAddSkillEffect()
{
    _asm
    {
        mov edx,dword ptr ss:[ebp-0x8]
        mov dword ptr ss:[ebp-0x14],edx
        mov IsBowItem,edx
    }
    // ---
    if( IsBowItem == ObjectId(4, 25) )    // Lightning Bow
    {
        _asm
        {
            push -1
            push 0
            push 0
            mov dx,word ptr ss:[ebp+0x18]
            push edx
            mov ax,word ptr ss:[ebp+0x14]
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            mov dx,word ptr ds:[ecx+0x2C]
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            push eax
            mov ecx,dword ptr ss:[ebp-0x0C]
            push ecx
            mov edx,dword ptr ss:[ebp+0x0C]
            add edx, BowValue
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            add eax, MaxBoneCount
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            add ecx, WorldPosition
            push ecx
            push 324
            call oCreateEffect
        }
    }
    else if( IsBowItem == ObjectId(4, 26) )    // Divinity Bow
    {
        _asm
        {
            push -1
            push 0
            push 0
            mov dx,word ptr ss:[ebp+0x18]
            push edx
            mov ax,word ptr ss:[ebp+0x14]
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            mov dx,word ptr ds:[ecx+0x2C]
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            push eax
            mov ecx,dword ptr ss:[ebp-0x0C]
            push ecx
            mov edx,dword ptr ss:[ebp+0x0C]
            add edx, BowValue
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            add eax, MaxBoneCount
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            add ecx, WorldPosition
            push ecx
            push 321
            call oCreateEffect
        }
    }
    else if( IsBowItem == ObjectId(4, 27) )    // Angelic Bow
    {
        _asm
        {
            push -1
            push 0
            push 0
            mov dx,word ptr ss:[ebp+0x18]
            push edx
            mov ax,word ptr ss:[ebp+0x14]
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            mov dx,word ptr ds:[ecx+0x2C]
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            push eax
            mov ecx,dword ptr ss:[ebp-0x0C]
            push ecx
            mov edx,dword ptr ss:[ebp+0x0C]
            add edx, BowValue
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            add eax, MaxBoneCount
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            add ecx, WorldPosition
            push ecx
            push 297
            call oCreateEffect
        }
    }
    else if( IsBowItem == ObjectId(4, 28) )    // Thunder Bow
    {
        _asm
        {
            push -1
            push 0
            push 0
            mov dx,word ptr ss:[ebp+0x18]
            push edx
            mov ax,word ptr ss:[ebp+0x14]
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            mov dx,word ptr ds:[ecx+0x2C]
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            push eax
            mov ecx,dword ptr ss:[ebp-0x0C]
            push ecx
            mov edx,dword ptr ss:[ebp+0x0C]
            add edx, BowValue
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            add eax, MaxBoneCount
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            add ecx, WorldPosition
            push ecx
            push 266
            call oCreateEffect
        }
    }
    _asm
    {
        jmp ReturnBowCode
    }
}


void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
        mov edx,dword ptr ss:[ebp-0x4]
        mov dword ptr ss:[ebp-0x10],edx
        mov IsCrossItem,edx
    }
    // ---
    if(IsCrossItem == ObjectId(4,129)) // Devil Crossbow
    {
        _asm
        {
            push -1
            push 0
            push 0
            mov ax,word ptr ss:[ebp+0x18]
            push eax
            mov cx,word ptr ss:[ebp+0x14]
            push ecx
            mov edx,dword ptr ss:[ebp+0x0C]
            mov ax,word ptr ds:[edx+0x2C]
            push eax
            mov ecx,dword ptr ss:[ebp+0x10]
            push ecx
            push 0
            mov edx,dword ptr ss:[ebp+0x0C]
            add edx,BowValue
            push edx
            mov eax,dword ptr ss:[ebp+0x0C]
            add eax,MaxBoneCount
            push eax
            mov ecx,dword ptr ss:[ebp+0x0C]
            add ecx,WorldPosition
            push ecx
            push 321
            call oCreateEffect
        }
    }
    // ---
    _asm
    {
        jmp ReturnCrossCode
    }
}


void __declspec(naked) cBowAddInventoryPos()
{
    _asm
    {
        mov IsBowItem, esi
    }
    // ---
    if(IsBowItem == 0x0B5A)
    {
        _asm{jmp BowPosition}
    }
    else if(IsBowItem == ObjectId(4,25))
    {
        _asm{jmp BowPosition}
    }
    else if(IsBowItem == ObjectId(4,26))
    {
        _asm{jmp BowPosition}
    }
    else if(IsBowItem == ObjectId(4,27))
    {
        _asm{jmp BowPosition}
    }
    else if(IsBowItem == ObjectId(4,28))
    {
        _asm{jmp BowPosition}
    }
    else
    {
        _asm{jmp NextBowPosition}
    }
}


DWORD BowAddPlayerDimension_Offset = 0x004E9A12;


void __declspec(naked) cBowAddPlayerDimension()
{
    _asm
    {
        CMP DWORD PTR SS:[EBP+0x1C],0x0B56
        JE ReturnLoad
        CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,24)
        JE ReturnLoad
        CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,25)
        JE ReturnLoad
        CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,26)
        JE ReturnLoad
        CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,27)
        JE ReturnLoad
        CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,28)
        JE ReturnLoad
        // ---
        ReturnLoad:
        // ---
        JMP BowAddPlayerDimension_Offset
    }
}


void InitBows()
{
    Utils.SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
    Utils.SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
    // ----
    Utils.SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
    Utils.SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
    // ----
    Utils.SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
    Utils.SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);
    // ----
    Utils.SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    Utils.SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
}


Credits:

Webzen
Nemesis




Hello, what is the code "DWORD ReturnCrossCode = 0x006990E3;" for MUEMU SEASON 6?
 
Initiate Mage
Joined
Apr 7, 2016
Messages
8
Reaction score
1
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

someone have offsets for season 2.x ?

version 1.02.19
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
557
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

decompiled version main 1.04.05

Code:
SetRange((LPVOID)0x00749C90,0x94A,ASM::NOP);
SetOp((LPVOID)0x00749C90,(LPVOID)CreateBowSkillEffect,ASM::JMP);


void CreateBowSkillEffect(DWORD lpObj, DWORD lpModel, DWORD Owner, BYTE a4, BYTE a5, WORD Skill)
{
    short Bow;
    short CrossBow;
    int EffectType;

    lpViewObj gObj = &*(ObjectPreview*)lpObj;
    lpModelObj gModel = &*(ViewPortObject*)lpModel;

    vec3_t Color;
    vec3_t VecPos;
    vec3_t WorldPos;
    Vector(gModel->ColorR, gModel->ColorG, gModel->ColorB, Color);
    Vector(gModel->VecPos.X, gModel->VecPos.Y, gModel->VecPos.Z, VecPos);
    Vector(gModel->WorldPos.X, gModel->WorldPos.Y, gModel->WorldPos.Z, WorldPos);

    EffectType = 0;
    CrossBow = gObj->WeaponFirstSlot;
    Bow = gObj->WeaponSecondSlot;
    if (lpObj == oUserPreviewStruct)
    {
  CrossBow = *((short *)oUserObjectStruct_ + 2336);
  Bow = *(short *)(oUserObjectStruct_ + 4779);
  if (CrossBow != -1)
   CrossBow += ITEM_BASE_MODEL;
  if (Bow != -1)
   Bow += ITEM_BASE_MODEL;
    }
    if (Skill == Penetration || Skill == PenetrationImproved)
    {
  EffectType = 2;
  sub_6D6C20(85, lpModel, 0);
    }
    *(int*)0x8793730 = Skill;
  if (Skill == IceArrow || Skill == IceArrowImproved)
  sub_6D6C20(130, lpModel, 0);
    if (a5 == 2)
  EffectType = 99;
    if (Skill == Starfall)
    {
  gEffect.CreateEffect(365, VecPos, WorldPos, Color, 0, Owner, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
    }
    else
    {
  switch (CrossBow)
  {
  case 3227:
  {
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
  }
  break;
  case 3228:
   gEffect.CreateEffect(267, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3229:
   gEffect.CreateEffect(271, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3230:
   gEffect.CreateEffect(269, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3231:
   gEffect.CreateEffect(268, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3232:
   gEffect.CreateEffect(274, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3233:
   gEffect.CreateEffect(273, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3235:
   gEffect.CreateEffect(294, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3237:
   gEffect.CreateEffect(321, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3238:
   gEffect.CreateEffect(324, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 26): //Devil CrossBow
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  default:
   break;
  }
  switch (Bow)
  {
  case 3219:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3220:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3221:
   gEffect.CreateEffect(270, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3222:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3223:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3224:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3225:
   gEffect.CreateEffect(272, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3236:
   gEffect.CreateEffect(295, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3239:
   gEffect.CreateEffect(335, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3240:
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3241:
   gEffect.CreateEffect(297, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3242:
   gEffect.CreateEffect(298, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3243:
   gEffect.CreateEffect(509, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3246:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 25): //Angelic Bow
   gEffect.CreateEffect(509, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 28): //Bloodangel Bow
   gEffect.CreateEffect(321, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 36): //Holyangel Bow
  {
   int EID[10] = { 266, 270, 272, 295, 335, 296, 297, 298, 509, 266 };
   gEffect.CreateEffect(EID[rand() % 10], VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   //gEffect.CreateEffect(294, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
  }
  break;
  default:
   break;
  }
    }
}
 
Last edited:
Initiate Mage
Joined
Jun 4, 2012
Messages
87
Reaction score
12
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

Plss have offsets Muemu s4 1.05D
 
Junior Spellweaver
Joined
Jul 18, 2005
Messages
124
Reaction score
74
re: [Development] Custom Bows & Crossbows Client Source (1.03K)

I'm having trouble with penetration arrow and custom bows, effect is drawn but it does not send packet to server and arrow doesn't go through enemies. also, arrows are not being reloaded like in a normal bow. am I missing something somewhere?
 
(づ。◕‿‿◕。)
Member
Joined
Jun 23, 2014
Messages
1,853
Reaction score
422
decompiled version main 1.04.05

Code:
SetRange((LPVOID)0x00749C90,0x94A,ASM::NOP);
SetOp((LPVOID)0x00749C90,(LPVOID)CreateBowSkillEffect,ASM::JMP);


void CreateBowSkillEffect(DWORD lpObj, DWORD lpModel, DWORD Owner, BYTE a4, BYTE a5, WORD Skill)
{
    short Bow;
    short CrossBow;
    int EffectType;

    lpViewObj gObj = &*(ObjectPreview*)lpObj;
    lpModelObj gModel = &*(ViewPortObject*)lpModel;

    vec3_t Color;
    vec3_t VecPos;
    vec3_t WorldPos;
    Vector(gModel->ColorR, gModel->ColorG, gModel->ColorB, Color);
    Vector(gModel->VecPos.X, gModel->VecPos.Y, gModel->VecPos.Z, VecPos);
    Vector(gModel->WorldPos.X, gModel->WorldPos.Y, gModel->WorldPos.Z, WorldPos);

    EffectType = 0;
    CrossBow = gObj->WeaponFirstSlot;
    Bow = gObj->WeaponSecondSlot;
    if (lpObj == oUserPreviewStruct)
    {
  CrossBow = *((short *)oUserObjectStruct_ + 2336);
  Bow = *(short *)(oUserObjectStruct_ + 4779);
  if (CrossBow != -1)
   CrossBow += ITEM_BASE_MODEL;
  if (Bow != -1)
   Bow += ITEM_BASE_MODEL;
    }
    if (Skill == Penetration || Skill == PenetrationImproved)
    {
  EffectType = 2;
  sub_6D6C20(85, lpModel, 0);
    }
    *(int*)0x8793730 = Skill;
  if (Skill == IceArrow || Skill == IceArrowImproved)
  sub_6D6C20(130, lpModel, 0);
    if (a5 == 2)
  EffectType = 99;
    if (Skill == Starfall)
    {
  gEffect.CreateEffect(365, VecPos, WorldPos, Color, 0, Owner, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
    }
    else
    {
  switch (CrossBow)
  {
  case 3227:
  {
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
  }
  break;
  case 3228:
   gEffect.CreateEffect(267, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3229:
   gEffect.CreateEffect(271, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3230:
   gEffect.CreateEffect(269, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3231:
   gEffect.CreateEffect(268, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3232:
   gEffect.CreateEffect(274, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3233:
   gEffect.CreateEffect(273, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3235:
   gEffect.CreateEffect(294, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3237:
   gEffect.CreateEffect(321, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3238:
   gEffect.CreateEffect(324, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 26): //Devil CrossBow
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  default:
   break;
  }
  switch (Bow)
  {
  case 3219:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3220:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3221:
   gEffect.CreateEffect(270, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3222:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3223:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3224:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3225:
   gEffect.CreateEffect(272, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3236:
   gEffect.CreateEffect(295, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3239:
   gEffect.CreateEffect(335, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3240:
   gEffect.CreateEffect(296, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3241:
   gEffect.CreateEffect(297, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3242:
   gEffect.CreateEffect(298, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3243:
   gEffect.CreateEffect(509, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case 3246:
   gEffect.CreateEffect(266, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 25): //Angelic Bow
   gEffect.CreateEffect(509, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 28): //Bloodangel Bow
   gEffect.CreateEffect(321, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   break;
  case ITEM2(4, 36): //Holyangel Bow
  {
   int EID[10] = { 266, 270, 272, 295, 335, 296, 297, 298, 509, 266 };
   gEffect.CreateEffect(EID[rand() % 10], VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
   //gEffect.CreateEffect(294, VecPos, WorldPos, Color, EffectType, lpModel, *(short *)(lpModel + 44), a4, a5, 0, 0.0, -1);
  }
  break;
  default:
   break;
  }
    }
}

can you share gEffect.CreateEffect ?

Edit: nevermind, got it working, thanks a lot.
 
Last edited:
Back
Top