Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: SOURCE CUSTOM BOW + GETMAININFO  (Visto 13768 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Denis Alves #60 Posteado: April 30, 2020, 01:39:48 PM

  • C++ Coder
  • +2 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 269
  • Gracias recibida: 6358
  • br

Alguien tuvo un problema al agregar Skin Crossbow? Puedo agregar cualquier Skin Bows, pero cuando trato de agregar un CrossBow Skin no lo hará.


Offline TzCr4ck #61 Posteado: May 01, 2020, 08:26:05 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 55
  • ve
Hola, tengo un pequeño problema... Tuve que hacer un cambio en "customitem.cpp"

Code: [Select]
Cambie:
CUSTOM_BOW_INFO* lpInfo2 = gCustomBow.GetInfoByItem(ItemIndex);
Por:
CUSTOM_BOW_INFO* lpInfo3 = gCustomBow.GetInfoByItem(ItemIndex);

Ya que lpInfo2 lo uso para los customgloves...

También cree su if correspondiente a lpInfo3:
Code: [Select]
else if(lpInfo3 != 0){
ItemColor[0] = (float)(lpInfo3->ColorR/255.0f);
ItemColor[1] = (float)(lpInfo3->ColorG/255.0f);
ItemColor[2] = (float)(lpInfo3->ColorB/255.0f);
}

El código me compila perfecto tanto para "Main.dll" como para "GetMainInfo", pero al momento de crear la licencia y ejecutar el main.exe me dice "Archivo no encontrado o invalido"



Offline JavixFer #62 Posteado: May 01, 2020, 08:47:05 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 476
  • Gracias recibida: 3975
  • bo
Hola, tengo un pequeño problema... Tuve que hacer un cambio en "customitem.cpp"

Code: [Select]
Cambie:
CUSTOM_BOW_INFO* lpInfo2 = gCustomBow.GetInfoByItem(ItemIndex);
Por:
CUSTOM_BOW_INFO* lpInfo3 = gCustomBow.GetInfoByItem(ItemIndex);

Ya que lpInfo2 lo uso para los customgloves...

También cree su if correspondiente a lpInfo3:
Code: [Select]
else if(lpInfo3 != 0){
ItemColor[0] = (float)(lpInfo3->ColorR/255.0f);
ItemColor[1] = (float)(lpInfo3->ColorG/255.0f);
ItemColor[2] = (float)(lpInfo3->ColorB/255.0f);
}

El código me compila perfecto tanto para "Main.dll" como para "GetMainInfo", pero al momento de crear la licencia y ejecutar el main.exe me dice "Archivo no encontrado o invalido"


el codigo que pusiste esta okey tienes que asegurarte que tanto como en el main y en getmain esten iguales por ejemplo

CustomBow.h
int Index;
   int ItemIndex;
   char ModelName[32];
   int ItemType;
   int SkillShot;
   int ColorR;
   int ColorG;
   int ColorB;

esas lineas deben coicidir en ambos
tambien en Protect.h tienes que estar asi:

CUSTOM_BOW_INFO CustomBowInfo[MAX_CUSTOM_BOW];

main.cpp

gCustomBow.Load(gProtect.m_MainInfo.CustomBowinfo);

lado GetMainInfo

GetMainInfo.cpp

CUSTOM_BOW_INFO CustomBowInfo[MAX_CUSTOM_BOW];

memcpy(info.CustomBowInfo, gCustomCrossBow.m_CustomBowInfo, sizeof(info.CustomBowInfo));

gCustomCrossBow.Load("CustomCrossbow.txt");



Offline TzCr4ck #63 Posteado: May 01, 2020, 11:12:40 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 55
  • ve
Hola @javierf2 , si el código estaba bien, fue mi error que en lado "Main" tenía "MAX_CUSTOM_BOW 300" y en GetMainInfo tenía "MAX_CUSTOM_BOW 200" xD

Ahora el error que tengo es que los Bow salen con mala posición (Los CrossBow si funcionan perfecto).



Offline JavixFer #64 Posteado: May 01, 2020, 11:21:55 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 476
  • Gracias recibida: 3975
  • bo
Hola @javierf2 , si el código estaba bien, fue mi error que en lado "Main" tenía "MAX_CUSTOM_BOW 300" y en GetMainInfo tenía "MAX_CUSTOM_BOW 200" xD

Ahora el error que tengo es que los Bow salen con mala posición (Los CrossBow si funcionan perfecto).



nunca tuve ese error a la primera me salio sin nada de esos errores xD
aver prueba esto estas configuraciones de nuestro amigo @SaintZeus

ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,34) || IsBowItem >= ITEM2(4,65) && IsBowItem <=ITEM2(4,85))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 35) && IsCrossItem <= ITEM2(4, 44)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}


Offline TzCr4ck #65 Posteado: May 01, 2020, 11:32:28 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 55
  • ve
Hola @javierf2 , si el código estaba bien, fue mi error que en lado "Main" tenía "MAX_CUSTOM_BOW 300" y en GetMainInfo tenía "MAX_CUSTOM_BOW 200" xD

Ahora el error que tengo es que los Bow salen con mala posición (Los CrossBow si funcionan perfecto).



nunca tuve ese error a la primera me salio sin nada de esos errores xD
aver prueba esto estas configuraciones de nuestro amigo @SaintZeus

ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,34) || IsBowItem >= ITEM2(4,65) && IsBowItem <=ITEM2(4,85))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 35) && IsCrossItem <= ITEM2(4, 44)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}

Ahora si me funciona la posición de los Bow pero se daño la posición de los CrossBow jajajaja



Offline JavixFer #66 Posteado: May 01, 2020, 11:34:52 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 476
  • Gracias recibida: 3975
  • bo
Hola @javierf2 , si el código estaba bien, fue mi error que en lado "Main" tenía "MAX_CUSTOM_BOW 300" y en GetMainInfo tenía "MAX_CUSTOM_BOW 200" xD

Ahora el error que tengo es que los Bow salen con mala posición (Los CrossBow si funcionan perfecto).



que inde es tu item que se daño?

nunca tuve ese error a la primera me salio sin nada de esos errores xD
aver prueba esto estas configuraciones de nuestro amigo @SaintZeus

ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,34) || IsBowItem >= ITEM2(4,65) && IsBowItem <=ITEM2(4,85))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 35) && IsCrossItem <= ITEM2(4, 44)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}

Ahora si me funciona la posición de los Bow pero se daño la posición de los CrossBow jajajaja




Offline TzCr4ck #67 Posteado: May 01, 2020, 11:41:17 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 55
  • ve
@javierf2 no me colocaste nada jaja

Me puedes enviar foto de tu "CustomCrossbow.txt" por favor?


Offline JavixFer #68 Posteado: May 01, 2020, 11:53:38 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 476
  • Gracias recibida: 3975
  • bo
@javierf2 no me colocaste nada jaja

Me puedes enviar foto de tu "CustomCrossbow.txt" por favor?

pueba nuevamente te lo agregue para que soporte del index 25 al 50 bow y del 61 al 100 crossbow
ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,60) || IsBowItem >= ITEM2(4,61) && IsBowItem <=ITEM2(4,100))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 35)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 36)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 37)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 38)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 39)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 40)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 41)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 42)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 43)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 44)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 45)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 46)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 47)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 48)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 49)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 50)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 61) && IsCrossItem <= ITEM2(4, 100)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}


Offline TzCr4ck #69 Posteado: May 02, 2020, 01:04:09 AM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 55
  • ve
@javierf2 no me colocaste nada jaja

Me puedes enviar foto de tu "CustomCrossbow.txt" por favor?

pueba nuevamente te lo agregue para que soporte del index 25 al 50 bow y del 61 al 100 crossbow
ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,60) || IsBowItem >= ITEM2(4,61) && IsBowItem <=ITEM2(4,100))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 35)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 36)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 37)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 38)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 39)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 40)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 41)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 42)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 43)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 44)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 45)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 46)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 47)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 48)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 49)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 50)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 61) && IsCrossItem <= ITEM2(4, 100)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}

Ahora no muestra las texturas bro, me puedes enviar una imagen de tu CustomCrossbow.txt ?


Offline JavixFer #70 Posteado: May 02, 2020, 03:17:22 AM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 476
  • Gracias recibida: 3975
  • bo
@javierf2 no me colocaste nada jaja

Me puedes enviar foto de tu "CustomCrossbow.txt" por favor?

pueba nuevamente te lo agregue para que soporte del index 25 al 50 bow y del 61 al 100 crossbow
ItemAsm.cpp
Code: [Select]
#include "stdafx.h"
#include "Offset.h"
#include "Util.h"
#include "TMemory.h"
#include "ItemAsm.h"
#include "Import.h"
#include "Defines.h"
#include "CustomBow.h"
#include "Object.h"

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;

DWORD oCreateEffect = 0x006D9070; // 1.04D ENG
DWORD ReturnBowCode = 0x0074A12E; // 1.04D ENG
DWORD BowPosition = 0x005CC8ED; // 1.04D ENG
DWORD NextBowPosition = 0x005CC92E; // 1.04D ENG
DWORD BowAddPlayerDimension_Offset = 0x0056617F; // 1.04D ENG
DWORD ReturnCrossCode = 0x00749DD2;

void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov ecx, dword ptr ss : [ebp - 0x04]
mov dword ptr ss : [ebp - 0x14], ecx
mov IsBowItem, ecx
}
// ---

    if(gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* bow = gCustomBow.GetInfoByItem(IsBowItem - ITEM_INTER);
int SkillShot;
if(bow != 0){
SkillShot = bow->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
}
_asm
{
jmp ReturnBowCode
}
}

void __declspec(naked) cCrossAddSkillEffect()
{
    _asm
    {
mov ecx, dword ptr ss : [ebp - 0x0C]
mov dword ptr ss : [ebp - 0x10], ecx
mov IsCrossItem, ecx
    }
    // ---
    if(gCustomBow.CheckCustomCross(IsCrossItem - ITEM_INTER))
{
CUSTOM_BOW_INFO* cross = gCustomBow.GetInfoByItem(IsCrossItem - ITEM_INTER);

int SkillShot;

if(cross != 0){

SkillShot = cross->SkillShot;
_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 - 0x8]
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 SkillShot
call oCreateEffect
}
}
    }
    _asm
    {
        jmp ReturnCrossCode
    }
}

void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov ecx, dword ptr ss : [ebp + 0x8]
mov dword ptr ss : [ebp + 0x8], ecx
mov IsBowItem, ecx
}
// ---
if (IsBowItem == 0x0CAB)
{
_asm{jmp BowPosition}
}
else if (gCustomBow.CheckCustomBow(IsBowItem - ITEM_INTER) || IsBowItem >= ITEM2(4,25) && IsBowItem <=ITEM2(4,60) || IsBowItem >= ITEM2(4,61) && IsBowItem <=ITEM2(4,100))
{
_asm{jmp BowPosition}
}
//CUSTOMPETS

else if (IsBowItem >= ITEM2(13, 174) && IsBowItem <= ITEM2(13, 512))
{
_asm
{
Mov Ecx, 0x005CC597
Jmp Ecx
}
}

//------------------
else
{
_asm{jmp NextBowPosition}
}
}

void __declspec(naked) cBowCheckPositionOnMap()
{
static DWORD ret_continue = 0x005659EE;
static DWORD ret_succes = 0x00565994;

static DWORD ItemId;

__asm
{
mov EAX, DWORD PTR SS:[EBP+0x1C]
mov ItemId, EAX
}

if (gCustomBow.CheckCustomCross(ItemId - ITEM_INTER))
{
__asm
{
jmp ret_succes
}
}
else
{
__asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x22C
jmp ret_continue;
}
}
}


#define sub_599F10_Addr ((signed int(*)()) 0x599F10)

signed int __cdecl FixBowArrow(WORD *a1)
{
signed int result;
if ((int)(*a1/512) != 4 || *a1 == 2055 || *a1 == 2063)
{
return 0;
}
ItemBmdStruct* ItemInfo = pGetItemBmdStruct(*a1);
if (ItemInfo == 0 || (*a1/512) != 4)
{
return 0;
}
if (ItemInfo->Slot == 0)
{
return 2;
}
if (ItemInfo->Slot == 1)
{
return 1;
}
return 0;
}

void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
cmp dword ptr ss : [ebp + 0x1c], 0x0CA7
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 25)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 26)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 27)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 28)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 29)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 30)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 31)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 32)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 33)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 34)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 35)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 36)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 37)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 38)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 39)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 40)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 41)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 42)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 43)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 44)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 45)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 46)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 47)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 48)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 49)
je ReturnLoad
cmp dword ptr ss : [ebp + 0x1c], ITEM2(4, 50)
je ReturnLoad
// ---
ReturnLoad :
// ---
jmp BowAddPlayerDimension_Offset
}
}

void __declspec(naked) cCrossBowAddPlayerDimension()
{
    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, 61) && IsCrossItem <= ITEM2(4, 100)) // Devil Crossbow


{
_asm{jmp Address1}
}
else
{
_asm{jmp Address2}
}
}

void InitBows()
{
//recarga de flechas
SetCompleteHook(0xE8,0x5913D0+0xDB ,&FixBowArrow);
SetCompleteHook(0xE8,0x5913D0+0xF7 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x92 ,&FixBowArrow);
SetCompleteHook(0xE8,0x5A05C0+0x1B5,&FixBowArrow);
SetCompleteHook(0xE8,0x5B5FC0+0xD34,&FixBowArrow);
SetCompleteHook(0xE8,0x7E04B0+0xF8 ,&FixBowArrow);
//Skill de ballesta
    SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
    SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
//Skill de arco
SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
//Posición en el inventario
SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
//Posición en el personaje
MemorySet(0x005659E7,0x90,7);
SetCompleteHook(0xE9,0x005659E7,&cBowCheckPositionOnMap);
//Dimensiones
SetRange((LPVOID)iCrossBowAddPlayerDimension, 6, ASM::NOP);
SetJmp((LPVOID)iCrossBowAddPlayerDimension, cCrossBowAddPlayerDimension);
SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);

}

Ahora no muestra las texturas bro, me puedes enviar una imagen de tu CustomCrossbow.txt ?

las sources dejalo como la primera que te pase
esto es el txt
 //Bow 25 al 34
//Crossbow 34 al 44
Code: [Select]
//ItemID        Model		Type	EffecID	ColorR	ColorG	ColorB
2073 HolyAngelBowv1 0 270 255 189 107
2074 HolyAngelBowv2 0 271 201 105 254
2075 BowAngelic 0 272 204 204 0
2076 BowAssasin 0 273 128 128 12
2077 bloodangel_bow 0 274 205 192 176
2078 Darkangel_Bow 0 269 255 226 115
2079 HolyAngelBow 0 268 255 197 57
2080 BowAngelic 0 267 204 204 0
2081 hs_soularcherbow_s 0 266 255 51 51
2082 BowArtic 0 294 0 144 255

2083 absolute_gunbow 1 295 102 178 255
2084 absolute_gunbowv1 1 296 255 153 51
2085 absolute_gunbowv2 1 297 201 105 254
2086 devilcrossbow 1 298 127 127 127
2087 CrossBowAngelic 1 321 204 204 0
2088 CrossBowAssasin 1 324 128 128 128
2089 CrossBowArtic 1 335 0 144 255
end



Offline takumi12 #71 Posteado: May 07, 2020, 01:39:17 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39650
  • mx
ACTUALIZACIÓN 12:38
jueves, 7 de mayo de 2020 (GMT-5)
Hora en Ocozocoautla de Espinosa, Chis.

SE FIXEA SKILL
SE FIXEA POSICIONAMIENTO DE INVENTARIO
SE FIXEA POSICIONAMIENTO EN EL PERSONAJE
SE FIXEA LA DOBLE ESPADAS CRUZADAS EN LOS PERSONAJES COMO BK Y MG
ES 100% UTILIZABLE CON ITEMPOSITION QUE APORTÉ


Las offset no se crea, ni se destruye, solo se transforma

Gracias:


Offline c4nhsatcodong #72 Posteado: May 10, 2020, 12:32:50 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 361
  • Gracias recibida: 1844
  • vn
lo que está sucediendo, así que no puedo usar ITEMPOSITION alguien para ayudarme

Publicar un anuncio Mu Online gratis - Mu Online Community GRATIS.
Post free Mu Online ads - FREE Mu Online Community
https://www.facebook.com/groups/274190243227367/


Offline AZURE #73 Posteado: May 10, 2020, 01:14:45 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 267
  • Gracias recibida: 3029
  • cl
lo que está sucediendo, así que no puedo usar ITEMPOSITION alguien para ayudarme


como lo tienes puesto en el main.cpp?


Offline c4nhsatcodong #74 Posteado: May 10, 2020, 01:18:21 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 361
  • Gracias recibida: 1844
  • vn
lo que está sucediendo, así que no puedo usar ITEMPOSITION alguien para ayudarme


como lo tienes puesto en el main.cpp?
No entiendo

Publicar un anuncio Mu Online gratis - Mu Online Community GRATIS.
Post free Mu Online ads - FREE Mu Online Community
https://www.facebook.com/groups/274190243227367/


Offline AZURE #75 Posteado: May 10, 2020, 01:20:32 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 267
  • Gracias recibida: 3029
  • cl
lo que está sucediendo, así que no puedo usar ITEMPOSITION alguien para ayudarme


como lo tienes puesto en el main.cpp?
No entiendo

como tienes puesto el item position y custom position?


Offline c4nhsatcodong #76 Posteado: May 10, 2020, 01:23:23 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 361
  • Gracias recibida: 1844
  • vn
lo que está sucediendo, así que no puedo usar ITEMPOSITION alguien para ayudarme


como lo tienes puesto en el main.cpp?
No entiendo

como tienes puesto el item position y custom position?

Uso 1.04d no 1.04e, no uso estamos teniendo dificultades con la ballesta

Publicar un anuncio Mu Online gratis - Mu Online Community GRATIS.
Post free Mu Online ads - FREE Mu Online Community
https://www.facebook.com/groups/274190243227367/


Offline erickmalfoy #77 Posteado: June 17, 2020, 03:12:51 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 557
  • Gracias recibida: 314
  • ar
en que carpeta del cliente va pegado los bmd ? y textura .. ! :/  boxing


Offline erickmalfoy #78 Posteado: June 17, 2020, 05:00:28 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 557
  • Gracias recibida: 314
  • ar
ACTUALIZACIÓN 12:38
jueves, 7 de mayo de 2020 (GMT-5)
Hora en Ocozocoautla de Espinosa, Chis.

SE FIXEA SKILL
SE FIXEA POSICIONAMIENTO DE INVENTARIO
SE FIXEA POSICIONAMIENTO EN EL PERSONAJE
SE FIXEA LA DOBLE ESPADAS CRUZADAS EN LOS PERSONAJES COMO BK Y MG
ES 100% UTILIZABLE CON ITEMPOSITION QUE APORTÉ

Hola que tal Tengo un problema Agregue a las sources de main y getinfo
pero cuando creo el item sale normal pero las texturas donde debo pegar por que me sale asi aca una foto
https://prnt.sc/t1om3m


Offline erickmalfoy #79 Posteado: June 25, 2020, 02:45:46 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 557
  • Gracias recibida: 314
  • ar
tengo un problema todo me va bien con las soruces pero cuando El arco lo ago +7 se bota del juego y no me deja verlo en el inventario acada vez que ingreso al inventario me bota alguien me puede ayudar  please


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
3 Replies
1329 Views
Last post May 20, 2018, 08:21:03 PM
by Pyke
3 Replies
1068 Views
Last post May 17, 2019, 11:57:59 PM
by TioMostaza
14 Replies
4085 Views
Last post September 13, 2020, 02:03:43 AM
by ailsoncost
62 Replies
8539 Views
Last post September 21, 2020, 03:57:49 AM
by tiendoanit
8 Replies
3484 Views
Last post November 22, 2022, 12:42:21 AM
by MonicaCisneros