Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Files MuEmu 0.97k ORIGINAL + FULL SOURCE - kayito  (Visto 246626 veces)

0 Miembros and 2 Guests are viewing this topic.

Offline KropaPL #640 Posteado: September 19, 2023, 08:02:25 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 124
  • Gracias recibida: 12
  • pl
@kayito Hola, todavía veo que las texturas se están estropeando, ¿sabes cómo arreglarlo? (Sabes, cuando elimino el archivo axe05,06bmd de Data/Item, se arreglan, pero el límite sigue ahí :(

https://prnt.sc/PDb2-7C2gCxM

Y una pregunta más, ¿cuál es el RGB original para, por ejemplo, el estado de Kundun o cualquier otro objeto con un color dorado?


Offline kayito #641 Posteado: September 19, 2023, 08:09:56 AM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.074
  • Gracias recibida: 19165
  • ar
@kayito Hola, todavía veo que las texturas se están estropeando, ¿sabes cómo arreglarlo? (Sabes, cuando elimino el archivo axe05,06bmd de Data/Item, se arreglan, pero el límite sigue ahí :(

https://prnt.sc/PDb2-7C2gCxM

Y una pregunta más, ¿cuál es el RGB original para, por ejemplo, el estado de Kundun o cualquier otro objeto con un color dorado?

Estás utilizando el sistema de Custom Item que yo agregué? Colocando los items en la ubicación que yo le asigné a los items custom? Si no lo estás haciendo de esa manera, entonces no estás utilizando mi sistema ni mi main sino el main editado que publicaron en este post, el cual no tiene nada que ver con mis desarrollos.


Offline KropaPL #642 Posteado: September 19, 2023, 08:22:33 AM | Modificado: September 19, 2023, 08:34:07 AM by KropaPL

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 124
  • Gracias recibida: 12
  • pl
Solamente de la manera que mencionaste en Custom Item, todos los archivos se trasladan al índice tal como mencionaste en Custom Item.

https://prnt.sc/fQlpDo2EvsAg

El 21 y el 31 son solo versiones de prueba, porque quería verificar si al mover elementos de una carpeta normal a una carpeta personalizada, las texturas cambian.

Solo modifiqué 2 funciones para obtener el Glow original del cliente cuando ingreso RGB 0,0,0) porque no sé cuáles son los colores originales del Glow en RGB, pero como dije, el resto es original, todo está tomado de las últimas actualizaciones.

LoadModels.cpp

Citar
void CLoadModels::PartObjectColorHook(int Type, float Alpha, float Bright, float Light[3], bool ExtraMon)
{
    bool isInactive = gCustomItem.GetCustomItemColor((Type - ITEM_BASE_MODEL), Light);
   
    if (!isInactive)
    {
        PartObjectColor(Type, Alpha, Bright, Light, ExtraMon);
    }
 
}


CustomItem.cpp

Citar
bool CCustomItem::GetCustomItemColor(int ItemIndex, float* ItemColor)
{
    CUSTOM_ITEM_INFO* lpInfo = this->GetInfoByItem(ItemIndex);

    if (lpInfo == nullptr)
    {
        return false;
    }

    ItemColor[0] = (lpInfo->ColorR / 255.0f);
    ItemColor[1] = (lpInfo->ColorG / 255.0f);
    ItemColor[2] = (lpInfo->ColorB / 255.0f);

   
    if (lpInfo->ColorR == 0 && lpInfo->ColorG == 0 && lpInfo->ColorB == 0)
    {
        return false;
    }

    return true;
}


Offline Zeus #643 Posteado: September 19, 2023, 11:17:30 AM | Modificado: September 19, 2023, 11:21:46 PM by Zeus

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 64
  • Gracias recibida: 1920
  • ar
Solamente de la manera que mencionaste en Custom Item, todos los archivos se trasladan al índice tal como mencionaste en Custom Item.

https://prnt.sc/fQlpDo2EvsAg

El 21 y el 31 son solo versiones de prueba, porque quería verificar si al mover elementos de una carpeta normal a una carpeta personalizada, las texturas cambian.

Solo modifiqué 2 funciones para obtener el Glow original del cliente cuando ingreso RGB 0,0,0) porque no sé cuáles son los colores originales del Glow en RGB, pero como dije, el resto es original, todo está tomado de las últimas actualizaciones.

LoadModels.cpp

Citar
void CLoadModels::PartObjectColorHook(int Type, float Alpha, float Bright, float Light[3], bool ExtraMon)
{
    bool isInactive = gCustomItem.GetCustomItemColor((Type - ITEM_BASE_MODEL), Light);
   
    if (!isInactive)
    {
        PartObjectColor(Type, Alpha, Bright, Light, ExtraMon);
    }
 
}

CustomItem.cpp

Citar
bool CCustomItem::GetCustomItemColor(int ItemIndex, float* ItemColor)
{
    CUSTOM_ITEM_INFO* lpInfo = this->GetInfoByItem(ItemIndex);

    if (lpInfo == nullptr)
    {
        return false;
    }

    ItemColor[0] = (lpInfo->ColorR / 255.0f);
    ItemColor[1] = (lpInfo->ColorG / 255.0f);
    ItemColor[2] = (lpInfo->ColorB / 255.0f);

   
    if (lpInfo->ColorR == 0 && lpInfo->ColorG == 0 && lpInfo->ColorB == 0)
    {
        return false;
    }

    return true;
}

Yo creo que lo ideal es tener el Glow separado de los ítems nuevos, para así poder aplicarle color a cualquier ítem. Así que vamos a modificar algunas cosas, espero que les sirva.



Offline Genius05 #644 Posteado: September 19, 2023, 12:45:25 PM | Modificado: September 21, 2023, 06:25:10 PM by Genius05

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 153
  • Gracias recibida: 123
  • ve
UPDATE

- Se añadió el sistema de Texturas para los items custom. Créditos: @SetecSoft [Main.dll]

- Se añadió el sistema de Click Derecho para Equipar/Desequipar items. [Main.dll]

- Se añadió un sistema de empaquetamiento sincronizado con el ItemStack.txt del servidor que permite armar packs de cualquier item (ideal para jewels) [Main.dll][GameServer.exe][MuServer/Data/Item/ItemStack.txt]

- Se añadió un sistema de click derecho para desempaquetar de a uno los items empaquetados (ideal para jewels) [Main.dll]

- Se optimizó el sistema de protocolos del lado cliente para poder procesar y recibir todos los tipos de protocolos desde el servidor [Main.dll]

- Se optimizó el viewport de buffs y efectos del lado servidor, haciéndolo más rápido y eficiente [GameServer.exe]

- Se modificó la ubicación de los items custom, ahora permitiendo organizarlos y separarlos por carpetas individuales [Main.dll]
   - Ahora las partes de set se ubicarán en: Cliente/Data/Player/Custom/<Index>/[Helm.bmd | Armor.bmd | Pants.bmd | Gloves.bmd | Boots.bmd]
      - Aclaración: El Index es simplemente el numerito correspondiente dentro de cada categoría. Por ejemplo: Casco Brave es 07,045 , Pecho Brave es 08,045, etc. entonces Index será 45 y por lo tanto todas las bmd correspondientes al set custom brave se guardarán en Cliente/Data/Player/Custom/45/

   - Ahora los items se ubicarán en: Cliente/Data/Item/Custom/<ItemIndex>/[*.bmd]
      - Aclaración: El ItemIndex se calcula haciendo (Grupo * 32 + Item). Por ejemplo: Custom Spear Brova es 03,011 por lo que el cálculo sería 03 * 32 + 011 = 107, entonces ItemIndex será 107 y por lo tanto la bmd correspondiente a la custom spear brova se guardará en Cliente/Data/Item/Custom/107/


- Se corrigió un error que hacía que ciertos buffs y efectos desaparezcan al moverse de mapa o al desaparecer de la vista y reaparecer [Main.dll]

- Se corrigió un error que al intentar hacer Grand Reset, no se podía utilizar ningún otro comando y no se aplicaba el Grand Reset [DataServer.exe]

- Se corrigió un error que no se verificaba correctamente el nivel requerido para crear un MG [Main.dll][GameServer.exe]
   
- Se corrigió un error que calculaba mal el daño de la elfa cuando utilizaba Bows/Crossbows sin durabilidad [GameServer.exe]

Excelente que aún sigan con el proyecto campeón, ojala y se anime en poner el /offattack, /attack y /pick  con esto estaría completo este excelente proyecto.

pero ahi estan las sources amigo aplicarlo

Pero no sé hacerlo he descargado varios archivos que supuestamente lo tienen implementado pero no funciona bien

uy.. jaja veamos que se realiza


Bueno aca les comparto las sources con el agregado de custom attack offattack y pick mas el arrow infinity creditos a @kayito por dicho files Gracias. aca dejo el enlace


Offline Genius05 #645 Posteado: September 19, 2023, 05:09:00 PM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 153
  • Gracias recibida: 123
  • ve
Solamente de la manera que mencionaste en Custom Item, todos los archivos se trasladan al índice tal como mencionaste en Custom Item.

https://prnt.sc/fQlpDo2EvsAg

El 21 y el 31 son solo versiones de prueba, porque quería verificar si al mover elementos de una carpeta normal a una carpeta personalizada, las texturas cambian.

Solo modifiqué 2 funciones para obtener el Glow original del cliente cuando ingreso RGB 0,0,0) porque no sé cuáles son los colores originales del Glow en RGB, pero como dije, el resto es original, todo está tomado de las últimas actualizaciones.

LoadModels.cpp

Citar
void CLoadModels::PartObjectColorHook(int Type, float Alpha, float Bright, float Light[3], bool ExtraMon)
{
    bool isInactive = gCustomItem.GetCustomItemColor((Type - ITEM_BASE_MODEL), Light);
   
    if (!isInactive)
    {
        PartObjectColor(Type, Alpha, Bright, Light, ExtraMon);
    }
 
}

CustomItem.cpp

Citar
bool CCustomItem::GetCustomItemColor(int ItemIndex, float* ItemColor)
{
    CUSTOM_ITEM_INFO* lpInfo = this->GetInfoByItem(ItemIndex);

    if (lpInfo == nullptr)
    {
        return false;
    }

    ItemColor[0] = (lpInfo->ColorR / 255.0f);
    ItemColor[1] = (lpInfo->ColorG / 255.0f);
    ItemColor[2] = (lpInfo->ColorB / 255.0f);

   
    if (lpInfo->ColorR == 0 && lpInfo->ColorG == 0 && lpInfo->ColorB == 0)
    {
        return false;
    }

    return true;
}

Yo creo que lo ideal es tener el Glow separado de los ítems nuevos, para así poder aplicarle color a cualquier ítem. Así que vamos a modificar algunas cosas, espero que les sirva.

En la solución de GetMainInfo creamos los siguientes archivos:

CustomItemGlow.h
Code: [Select]
#pragma once

#define MAX_CUSTOM_ITEM_GLOW 255

#define MAX_ITEM_TYPE 32
#define GET_ITEM(x,y) (((x)*MAX_ITEM_TYPE)+(y))

struct CUSTOM_ITEM_GLOW_INFO
{
int Index;
int ItemIndex;
int ColorR;
int ColorG;
int ColorB;
};

class CCustomItemGlow
{
public:

CCustomItemGlow();

~CCustomItemGlow();

void Init();

void Load(char* path);

void SetInfo(CUSTOM_ITEM_GLOW_INFO info);

public:

CUSTOM_ITEM_GLOW_INFO m_CustomItemGlowInfo[MAX_CUSTOM_ITEM_GLOW];
};
extern CCustomItemGlow gCustomItemGlow;

CustomItemGlow.cpp

Code: [Select]
#include "stdafx.h"
#include "CustomItemGlow.h"
#include "MemScript.h"

CCustomItemGlow gCustomItemGlow;

CCustomItemGlow::CCustomItemGlow()
{
this->Init();
}

CCustomItemGlow::~CCustomItemGlow()
{

}

void CCustomItemGlow::Init()
{
for (int n = 0; n < MAX_CUSTOM_ITEM_GLOW; n++)
{
this->m_CustomItemGlowInfo[n].Index = -1;
}
}

void CCustomItemGlow::Load(char* path)
{
    CMemScript* lpMemScript = new CMemScript;

    if (lpMemScript == nullptr)
    {
        std::cerr << "Error: No se pudo asignar memoria para CMemScript" << std::endl;
        return;
    }

    if (!lpMemScript->SetBuffer(path))
    {
        std::cerr << "Error: No se pudo abrir el archivo " << path << std::endl;
        delete lpMemScript;
        return;
    }

    int Index = 0;

    try
    {
        while (true)
        {
            if (lpMemScript->GetToken() == TOKEN_END)
            {
                break;
            }

            if (strcmp("end", lpMemScript->GetString()) == 0)
            {
                break;
            }

            CUSTOM_ITEM_GLOW_INFO info;

            info.Index = Index;

            info.ItemIndex = GET_ITEM(lpMemScript->GetNumber(), lpMemScript->GetAsNumber());

            info.ColorR = lpMemScript->GetAsNumber();
            info.ColorG = lpMemScript->GetAsNumber();
            info.ColorB = lpMemScript->GetAsNumber();

            Index++;

            SetInfo(info);
        }
    }
    catch (...)
    {
        std::cerr << "Error: Excepción al leer CustomGlow.txt" << std::endl;
    }

    delete lpMemScript;
}

void CCustomItemGlow::SetInfo(CUSTOM_ITEM_GLOW_INFO info)
{
    if (info.Index < 0 || info.Index >= MAX_CUSTOM_ITEM_GLOW)
    {
        return;
    }

    this->m_CustomItemGlowInfo[info.Index] = info;
}

Ahora vamos a modificar los siguientes archivos dejándolos de esta forma:

CustomItem.h
Code: [Select]
#pragma once

#define MAX_CUSTOM_ITEM 255

#define MAX_ITEM_TYPE 32
#define GET_ITEM(x,y) (((x)*MAX_ITEM_TYPE)+(y))

struct CUSTOM_ITEM_INFO
{
int Index;
int ItemIndex;
char ModelName[32];
};

class CCustomItem
{
public:

CCustomItem();

~CCustomItem();

void Init();

void Load(char* path);

void SetInfo(CUSTOM_ITEM_INFO info);

public:

CUSTOM_ITEM_INFO m_CustomItemInfo[MAX_CUSTOM_ITEM];
};

extern CCustomItem gCustomItem;

CustomItem.cpp
Code: [Select]
#include "stdafx.h"
#include "CustomItem.h"
#include "MemScript.h"

CCustomItem gCustomItem;

CCustomItem::CCustomItem()
{
this->Init();
}

CCustomItem::~CCustomItem()
{

}

void CCustomItem::Init()
{
for (int n = 0; n < MAX_CUSTOM_ITEM; n++)
{
this->m_CustomItemInfo[n].Index = -1;
}
}

void CCustomItem::Load(char* path)
{
CMemScript* lpMemScript = new CMemScript;

if (lpMemScript == 0)
{
printf(MEM_SCRIPT_ALLOC_ERROR, path);

return;
}

if (lpMemScript->SetBuffer(path) == 0)
{
printf(lpMemScript->GetLastError());

delete lpMemScript;

return;
}

int Index = 0;

try
{
while (true)
{
if (lpMemScript->GetToken() == TOKEN_END)
{
break;
}

if (strcmp("end", lpMemScript->GetString()) == 0)
{
break;
}

CUSTOM_ITEM_INFO info;

info.Index = Index;

info.ItemIndex = GET_ITEM(lpMemScript->GetNumber(), lpMemScript->GetAsNumber());

strcpy_s(info.ModelName, lpMemScript->GetAsString());

Index++;

this->SetInfo(info);
}
}
catch (...)
{
printf(lpMemScript->GetLastError());
}

delete lpMemScript;
}

void CCustomItem::SetInfo(CUSTOM_ITEM_INFO info)
{
if (info.Index < 0 || info.Index >= MAX_CUSTOM_ITEM)
{
return;
}

this->m_CustomItemInfo[info.Index] = info;
}

GetMainInfo.cpp

Code: [Select]
#include "stdafx.h"
#include "CCRC32.H"
#include "MapManager.h"
#include "CustomItem.h"
#include "CustomItemGlow.h"

struct MAIN_FILE_INFO
{
BYTE LauncherType;
char LauncherName[32];
char CustomerName[32];
char IpAddress[32];
WORD IpAddressPort;
char ClientVersion[8];
char ClientSerial[17];
char WindowName[32];
char ScreenShotPath[50];
char ClientName[32];
char PluginName[32];
DWORD ClientCRC32;
DWORD PluginCRC32;
DWORD DWMaxAttackSpeed;
DWORD DKMaxAttackSpeed;
DWORD FEMaxAttackSpeed;
DWORD MGMaxAttackSpeed;
DWORD ReconnectTime;
BYTE HealthBarType;
BYTE EnableSky;
BYTE EnableMinimap;
BYTE EnableMoveList;
MAP_MANAGER_INFO MapManager[MAX_MAPS];
CUSTOM_ITEM_INFO CustomItemInfo[MAX_CUSTOM_ITEM];
CUSTOM_ITEM_GLOW_INFO CustomItemGlowInfo[MAX_CUSTOM_ITEM_GLOW];
};

int main()
{
MAIN_FILE_INFO info;

memset(&info, 0, sizeof(info));

info.LauncherType = GetPrivateProfileInt("MainInfo", "LauncherType", 0, ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "LauncherName", "XTLauncherExecutable", info.LauncherName, sizeof(info.LauncherName), ".\\MainInfo.ini");

info.IpAddressPort = GetPrivateProfileInt("MainInfo", "IpAddressPort", 44405, ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "CustomerName", "", info.CustomerName, sizeof(info.CustomerName), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "IpAddress", "", info.IpAddress, sizeof(info.IpAddress), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "ClientVersion", "", info.ClientVersion, sizeof(info.ClientVersion), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "ClientSerial", "", info.ClientSerial, sizeof(info.ClientSerial), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "WindowName", "", info.WindowName, sizeof(info.WindowName), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "ScreenShotPath", "", info.ScreenShotPath, sizeof(info.ScreenShotPath), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "ClientName", "", info.ClientName, sizeof(info.ClientName), ".\\MainInfo.ini");

GetPrivateProfileString("MainInfo", "PluginName", "", info.PluginName, sizeof(info.PluginName), ".\\MainInfo.ini");

info.DWMaxAttackSpeed = GetPrivateProfileInt("CharacterInfo", "DWMaxAttackSpeed", 65535, ".\\MainInfo.ini");

info.DKMaxAttackSpeed = GetPrivateProfileInt("CharacterInfo", "DKMaxAttackSpeed", 65535, ".\\MainInfo.ini");

info.FEMaxAttackSpeed = GetPrivateProfileInt("CharacterInfo", "FEMaxAttackSpeed", 65535, ".\\MainInfo.ini");

info.MGMaxAttackSpeed = GetPrivateProfileInt("CharacterInfo", "MGMaxAttackSpeed", 65535, ".\\MainInfo.ini");

info.ReconnectTime = GetPrivateProfileInt("ReconnectInfo", "ReconnectTime", 0, ".\\MainInfo.ini");

/*=================================================================
CUSTOM
==================================================================*/

info.HealthBarType = GetPrivateProfileInt("Systems", "HealthBarType", 0, ".\\MainInfo.ini");

info.EnableSky = GetPrivateProfileInt("Systems", "EnableSky", 0, ".\\MainInfo.ini");

info.EnableMinimap = GetPrivateProfileInt("Systems", "EnableMinimap", 0, ".\\MainInfo.ini");

info.EnableMoveList = GetPrivateProfileInt("Systems", "EnableMoveList", 0, ".\\MainInfo.ini");

gMapManager.Load("MapManager.txt");

gCustomItem.Load("CustomItem.txt");

gCustomItemGlow.Load("CustomItemGlow.txt");

/*================================================================*/

memcpy(info.MapManager, gMapManager.m_MapManager, sizeof(info.MapManager));

memcpy(info.CustomItemInfo, gCustomItem.m_CustomItemInfo, sizeof(info.CustomItemInfo));

memcpy(info.CustomItemGlowInfo, gCustomItemGlow.m_CustomItemGlowInfo, sizeof(info.CustomItemGlowInfo));

/*=================================================================*/

CCRC32 CRC32;

if (CRC32.FileCRC(info.ClientName, &info.ClientCRC32, 1024) == 0)
{
info.ClientCRC32 = 0;
}

if (CRC32.FileCRC(info.PluginName, &info.PluginCRC32, 1024) == 0)
{
info.PluginCRC32 = 0;
}

BYTE XorKey[20] = { 0x9E, 0x98, 0x12, 0x2B, 0xB6, 0x76, 0xF6, 0x5B, 0x76, 0x4D, 0x08, 0xF2, 0xAB, 0xDF, 0x91, 0xB6, 0x4C, 0x1C, 0x93, 0x2F };

for (int n = 0; n < sizeof(MAIN_FILE_INFO); n++)
{
((BYTE*)&info)[n] ^= (BYTE)(XorKey[n % 20] ^ LOBYTE(n));

((BYTE*)&info)[n] -= (BYTE)(XorKey[n % 20] ^ HIBYTE(n));

((BYTE*)&info)[n] += (BYTE)(XorKey[n % 20] ^ HIBYTE(n));
}

HANDLE file = CreateFile(".\\Data\\Local\\ClientInfo.bmd", GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0);

if (file == INVALID_HANDLE_VALUE)
{
std::cout << "ERROR: Couldn't create the file." << std::endl;

system("pause");

return 1;
}

DWORD OutSize = 0;

if (WriteFile(file, &info, sizeof(MAIN_FILE_INFO), &OutSize, 0) == 0)
{
CloseHandle(file);

std::cout << "ERROR: Couldn't create the file." << std::endl;

system("pause");

return 1;
}

CloseHandle(file);

std::cout << "SUCCESS: File created." << std::endl;

system("pause");

return 0;
}

Perfecto, hasta el momento terminamos con los cambios de la solución GetMainInfo, ahora vamos a crear tambien dos archivos en la solución del Main.dll

CustomItemGlow.h
Code: [Select]
#pragma once

#define MAX_CUSTOM_ITEM_GLOW 255

struct CUSTOM_ITEM_GLOW_INFO
{
int Index;
int ItemIndex;
int ColorR;
int ColorG;
int ColorB;
};

class CCustomItemGlow
{
public:

CCustomItemGlow();

virtual ~CCustomItemGlow();

void Load(CUSTOM_ITEM_GLOW_INFO* info);

void SetInfo(CUSTOM_ITEM_GLOW_INFO info);

CUSTOM_ITEM_GLOW_INFO* GetInfo(int index);

CUSTOM_ITEM_GLOW_INFO* GetInfoByItem(int ItemIndex);

bool GetCustomItemGlow(int ItemIndex, float* ItemColor);

public:

CUSTOM_ITEM_GLOW_INFO m_CustomItemGlowInfo[MAX_CUSTOM_ITEM_GLOW];
};
extern CCustomItemGlow gCustomItemGlow;

CustomItemGlow.cpp
Code: [Select]
#include "stdafx.h"
#include "CustomItemGlow.h"

CCustomItemGlow gCustomItemGlow;

CCustomItemGlow::CCustomItemGlow()
{
for (int n = 0; n < MAX_CUSTOM_ITEM_GLOW; n++)
{
this->m_CustomItemGlowInfo[n].Index = -1;
}
}

CCustomItemGlow::~CCustomItemGlow()
{

}

void CCustomItemGlow::Load(CUSTOM_ITEM_GLOW_INFO* info)
{
for (int n = 0; n < MAX_CUSTOM_ITEM_GLOW; n++)
{
this->SetInfo(info[n]);
}
}

void CCustomItemGlow::SetInfo(CUSTOM_ITEM_GLOW_INFO info)
{
if (info.Index < 0 || info.Index >= MAX_CUSTOM_ITEM_GLOW)
{
return;
}

this->m_CustomItemGlowInfo[info.Index] = info;
}

CUSTOM_ITEM_GLOW_INFO* CCustomItemGlow::GetInfo(int index)
{
if (index < 0 || index >= MAX_CUSTOM_ITEM_GLOW)
{
return 0;
}

if (this->m_CustomItemGlowInfo[index].Index != index)
{
return 0;
}

return &this->m_CustomItemGlowInfo[index];
}

CUSTOM_ITEM_GLOW_INFO* CCustomItemGlow::GetInfoByItem(int ItemIndex)
{
for (int n = 0; n < MAX_CUSTOM_ITEM_GLOW; n++)
{
CUSTOM_ITEM_GLOW_INFO* lpInfo = this->GetInfo(n);

if (lpInfo == 0)
{
continue;
}

if (lpInfo->ItemIndex == ItemIndex)
{
return lpInfo;
}
}

return 0;
}

bool CCustomItemGlow::GetCustomItemGlow(int ItemIndex, float* ItemColor)
{
CUSTOM_ITEM_GLOW_INFO* lpInfo = this->GetInfoByItem(ItemIndex);

if (lpInfo == 0)
{
return false;
}

ItemColor[0] = (lpInfo->ColorR / 255.0f);

ItemColor[1] = (lpInfo->ColorG / 255.0f);

ItemColor[2] = (lpInfo->ColorB / 255.0f);

return true;
}

También vamos a modificamos algunos archivos:

CustomItem.h
Code: [Select]
#pragma once

#define MAX_CUSTOM_ITEM 255

struct CUSTOM_ITEM_INFO
{
int Index;
int ItemIndex;
char ModelName[32];
};

class CCustomItem
{
public:

CCustomItem();

virtual ~CCustomItem();

void Load(CUSTOM_ITEM_INFO* info);

void SetInfo(CUSTOM_ITEM_INFO info);

CUSTOM_ITEM_INFO* GetInfo(int index);

CUSTOM_ITEM_INFO* GetInfoByItem(int ItemIndex);

public:

CUSTOM_ITEM_INFO m_CustomItemInfo[MAX_CUSTOM_ITEM];
};

extern CCustomItem gCustomItem;

CustomItem.cpp

Code: [Select]
#include "stdafx.h"
#include "CustomItem.h"

CCustomItem gCustomItem;

CCustomItem::CCustomItem()
{
for (int n = 0; n < MAX_CUSTOM_ITEM; n++)
{
this->m_CustomItemInfo[n].Index = -1;
}
}

CCustomItem::~CCustomItem()
{

}

void CCustomItem::Load(CUSTOM_ITEM_INFO* info)
{
for (int n = 0; n < MAX_CUSTOM_ITEM; n++)
{
this->SetInfo(info[n]);
}
}

void CCustomItem::SetInfo(CUSTOM_ITEM_INFO info)
{
if (info.Index < 0 || info.Index >= MAX_CUSTOM_ITEM)
{
return;
}

this->m_CustomItemInfo[info.Index] = info;
}

CUSTOM_ITEM_INFO* CCustomItem::GetInfo(int index)
{
if (index < 0 || index >= MAX_CUSTOM_ITEM)
{
return 0;
}

if (this->m_CustomItemInfo[index].Index != index)
{
return 0;
}

return &this->m_CustomItemInfo[index];
}

CUSTOM_ITEM_INFO* CCustomItem::GetInfoByItem(int ItemIndex)
{
for (int n = 0; n < MAX_CUSTOM_ITEM; n++)
{
CUSTOM_ITEM_INFO* lpInfo = this->GetInfo(n);

if (lpInfo == 0)
{
continue;
}

if (lpInfo->ItemIndex == ItemIndex)
{
return lpInfo;
}
}

return 0;
}

Protect.h

Code: [Select]
#pragma once

#include "MapManager.h"
#include "CustomItem.h"
#include "CustomItemGlow.h"

struct MAIN_FILE_INFO
{
BYTE LauncherType;
char LauncherName[32];
char CustomerName[32];
char IpAddress[32];
WORD IpAddressPort;
char ClientVersion[8];
char ClientSerial[17];
char WindowName[32];
char ScreenShotPath[50];
char ClientName[32];
char PluginName[32];
DWORD ClientCRC32;
DWORD PluginCRC32;
DWORD DWMaxAttackSpeed;
DWORD DKMaxAttackSpeed;
DWORD FEMaxAttackSpeed;
DWORD MGMaxAttackSpeed;
DWORD ReconnectTime;
BYTE HealthBarType;
BYTE EnableSky;
BYTE EnableMinimap;
BYTE EnableMoveList;
MAP_MANAGER_INFO MapManager[MAX_MAPS];
CUSTOM_ITEM_INFO CustomItemInfo[MAX_CUSTOM_ITEM];
CUSTOM_ITEM_GLOW_INFO CustomItemGlowInfo[MAX_CUSTOM_ITEM_GLOW];
};

class CProtect
{
public:

CProtect();

virtual ~CProtect();

bool ReadMainFile(char* name);

void CheckLauncher();

void CheckInstance();

void CheckClientFile();

void CheckPluginFile();

public:

MAIN_FILE_INFO m_MainInfo;

DWORD m_ClientFileCRC;
};

extern CProtect gProtect;

Ya casi terminamos, en el archivo LoadModels.cpp vamos a dejar la siguiente función de esta forma:

Code: [Select]
void CLoadModels::PartObjectColorHook(int Type, float Alpha, float Bright, float Light[3], bool ExtraMon)
{
if (gCustomItemGlow.GetCustomItemGlow((Type - ITEM_BASE_MODEL), Light) == false)
{
PartObjectColor(Type, Alpha, Bright, Light, ExtraMon);
}
}

Bien, ahora por ultimo en el archivo Main.cpp debajo del Load de CustomItem, agregamos la siguiente linea:

Code: [Select]
gCustomItemGlow.Load(gProtect.m_MainInfo.CustomItemGlowInfo);

Compilamos todas las soluciones y listo ahora tienen que crear o modificar sus .txt de esta forma:

CustomItem.txt

Code: [Select]
// CUSTOM ITEM
// Developer: Nico
//
// SET EQUIPMENT PARTS WILL BE STORED IN: CLIENT/DATA/PLAYER/CUSTOM/<INDEX>/
// Example: Custom Set Brave Index 45 -> Client/Data/Player/Custom/45/[Helm.bmd | Armor.bmd | Gloves.bmd | Pants.bmd | Boots.bmd]
//
// ALL CUSTOM ITEMS WILL BE STORED IN: CLIENT/DATA/ITEM/CUSTOM/<ITEM_INDEX>/
// Example: Custom Spear Brova Index 03,011 -> Client/Data/Item/Custom/107/Spear.bmd
// 107 because -> 03 * 32 + 011 = 107
//========================================================================================================
//========================================================================================================
//========================================================================================================

//========================================================================================================
//========================================================================================================
//========================================================================================================
//Index | ModelName | Comment
//========================================================================================================
00,020 "Sword21" // Knight Blade
07,021 "HelmMale22" // Flaming Phoenix Helm
08,021 "ArmorMale22" // Flaming Phoenix Armor
09,021 "PantMale22" // Flaming Phoenix Pants
10,021 "GloveMale22" // Flaming Phoenix Gloves
11,021 "BootMale22" // Flaming Phoenix Boots
end

CustomItemGlow.txt
En este archivo si por ejemplo no queres agregarle glow a ningun item, simplemente los comentas al inicio // , o los eliminas.
Code: [Select]
// CUSTOM ITEM GLOW
//========================================================================================================
//Index | R G B | Comment
//========================================================================================================
00,020 191 165 127 // Knight Blade
07,021 153 77 26 // Flaming Phoenix Helm
08,021 153 77 26 // Flaming Phoenix Armor
09,021 153 77 26 // Flaming Phoenix Pants
10,021 153 77 26 // Flaming Phoenix Gloves
11,021 153 77 26 // Flaming Phoenix Boots
end

Por ultimo quiero enviar un afectuoso abrazo desde la distancia a @kayito y a todos los contribuyentes, quienes siguen trabajando con dedicación en este proyecto increíble, manteniendo a flote a los amantes de la vieja escuela.


en donde va este codigo le incluyen

#include "CustomItemGlow.h"

void CLoadModels::PartObjectColorHook(int Type, float Alpha, float Bright, float Light[3], bool ExtraMon)
{
   if (gCustomItemGlow.GetCustomItemGlow((Type - ITEM_BASE_MODEL), Light) == false)
   {
      PartObjectColor(Type, Alpha, Bright, Light, ExtraMon);
   }
}

Gracias @Zeus

Gracias:


Offline Pescado #646 Posteado: September 19, 2023, 07:22:01 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 40
  • Gracias recibida: 14
  • eg
UPDATE

- Se añadió el sistema de Texturas para los items custom. Créditos: @SetecSoft [Main.dll]

- Se añadió el sistema de Click Derecho para Equipar/Desequipar items. [Main.dll]

- Se añadió un sistema de empaquetamiento sincronizado con el ItemStack.txt del servidor que permite armar packs de cualquier item (ideal para jewels) [Main.dll][GameServer.exe][MuServer/Data/Item/ItemStack.txt]

- Se añadió un sistema de click derecho para desempaquetar de a uno los items empaquetados (ideal para jewels) [Main.dll]

- Se optimizó el sistema de protocolos del lado cliente para poder procesar y recibir todos los tipos de protocolos desde el servidor [Main.dll]

- Se optimizó el viewport de buffs y efectos del lado servidor, haciéndolo más rápido y eficiente [GameServer.exe]

- Se modificó la ubicación de los items custom, ahora permitiendo organizarlos y separarlos por carpetas individuales [Main.dll]
   - Ahora las partes de set se ubicarán en: Cliente/Data/Player/Custom/<Index>/[Helm.bmd | Armor.bmd | Pants.bmd | Gloves.bmd | Boots.bmd]
      - Aclaración: El Index es simplemente el numerito correspondiente dentro de cada categoría. Por ejemplo: Casco Brave es 07,045 , Pecho Brave es 08,045, etc. entonces Index será 45 y por lo tanto todas las bmd correspondientes al set custom brave se guardarán en Cliente/Data/Player/Custom/45/

   - Ahora los items se ubicarán en: Cliente/Data/Item/Custom/<ItemIndex>/[*.bmd]
      - Aclaración: El ItemIndex se calcula haciendo (Grupo * 32 + Item). Por ejemplo: Custom Spear Brova es 03,011 por lo que el cálculo sería 03 * 32 + 011 = 107, entonces ItemIndex será 107 y por lo tanto la bmd correspondiente a la custom spear brova se guardará en Cliente/Data/Item/Custom/107/


- Se corrigió un error que hacía que ciertos buffs y efectos desaparezcan al moverse de mapa o al desaparecer de la vista y reaparecer [Main.dll]

- Se corrigió un error que al intentar hacer Grand Reset, no se podía utilizar ningún otro comando y no se aplicaba el Grand Reset [DataServer.exe]

- Se corrigió un error que no se verificaba correctamente el nivel requerido para crear un MG [Main.dll][GameServer.exe]
   
- Se corrigió un error que calculaba mal el daño de la elfa cuando utilizaba Bows/Crossbows sin durabilidad [GameServer.exe]

Excelente que aún sigan con el proyecto campeón, ojala y se anime en poner el /offattack, /attack y /pick  con esto estaría completo este excelente proyecto.

pero ahi estan las sources amigo aplicarlo

Pero no sé hacerlo he descargado varios archivos que supuestamente lo tienen implementado pero no funciona bien

uy.. jaja veamos que se realiza


Bueno aca les comparto las sources con el agregado de custom attack offattack y pick mas el arrow infinity creditos a @kayito por dicho files Gracias. aca dejo el enlace 

A probar se ha dicho, esperemos que funcione bien, a cruzar los dedos :D

Gracias.


Offline Pescado #647 Posteado: September 19, 2023, 08:00:16 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 40
  • Gracias recibida: 14
  • eg
@Genius05

Igual bro, todo funciona bien, pero al darle /offattack el pj queda atacando supuestamente pero no saca nada de daño a los mob que lo rodean



este es el problema que tienen todos los files que tienen ese comando.


Offline gohancs #648 Posteado: September 19, 2023, 09:44:02 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 40
  • Gracias recibida: 26
  • ve
Instalo la web Webengine y no registra cuenta.. Si Alguien tiene un fix ?

esta el web https://mu97.mywire.org/

 please


Online xXSiniestroXx #649 Posteado: September 19, 2023, 09:52:46 PM

  • +2 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 335
  • Gracias recibida: 2453
  • ve
Instalo la web Webengine y no registra cuenta.. Si Alguien tiene un fix ?

esta el web https://mu97.mywire.org/

 please

Debes modificar las tablas en la db


Offline Part1zanBelarus #650 Posteado: September 21, 2023, 01:12:01 PM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 136
  • Gracias recibida: 565
  • by
UPDATE

- Se añadió el sistema de Texturas para los items custom. Créditos: @SetecSoft [Main.dll]

- Se añadió el sistema de Click Derecho para Equipar/Desequipar items. [Main.dll]

- Se añadió un sistema de empaquetamiento sincronizado con el ItemStack.txt del servidor que permite armar packs de cualquier item (ideal para jewels) [Main.dll][GameServer.exe][MuServer/Data/Item/ItemStack.txt]

- Se añadió un sistema de click derecho para desempaquetar de a uno los items empaquetados (ideal para jewels) [Main.dll]

- Se optimizó el sistema de protocolos del lado cliente para poder procesar y recibir todos los tipos de protocolos desde el servidor [Main.dll]

- Se optimizó el viewport de buffs y efectos del lado servidor, haciéndolo más rápido y eficiente [GameServer.exe]

- Se modificó la ubicación de los items custom, ahora permitiendo organizarlos y separarlos por carpetas individuales [Main.dll]
   - Ahora las partes de set se ubicarán en: Cliente/Data/Player/Custom/<Index>/[Helm.bmd | Armor.bmd | Pants.bmd | Gloves.bmd | Boots.bmd]
      - Aclaración: El Index es simplemente el numerito correspondiente dentro de cada categoría. Por ejemplo: Casco Brave es 07,045 , Pecho Brave es 08,045, etc. entonces Index será 45 y por lo tanto todas las bmd correspondientes al set custom brave se guardarán en Cliente/Data/Player/Custom/45/

   - Ahora los items se ubicarán en: Cliente/Data/Item/Custom/<ItemIndex>/[*.bmd]
      - Aclaración: El ItemIndex se calcula haciendo (Grupo * 32 + Item). Por ejemplo: Custom Spear Brova es 03,011 por lo que el cálculo sería 03 * 32 + 011 = 107, entonces ItemIndex será 107 y por lo tanto la bmd correspondiente a la custom spear brova se guardará en Cliente/Data/Item/Custom/107/


- Se corrigió un error que hacía que ciertos buffs y efectos desaparezcan al moverse de mapa o al desaparecer de la vista y reaparecer [Main.dll]

- Se corrigió un error que al intentar hacer Grand Reset, no se podía utilizar ningún otro comando y no se aplicaba el Grand Reset [DataServer.exe]

- Se corrigió un error que no se verificaba correctamente el nivel requerido para crear un MG [Main.dll][GameServer.exe]
   
- Se corrigió un error que calculaba mal el daño de la elfa cuando utilizaba Bows/Crossbows sin durabilidad [GameServer.exe]

Excelente que aún sigan con el proyecto campeón, ojala y se anime en poner el /offattack, /attack y /pick  con esto estaría completo este excelente proyecto.

pero ahi estan las sources amigo aplicarlo

Pero no sé hacerlo he descargado varios archivos que supuestamente lo tienen implementado pero no funciona bien

uy.. jaja veamos que se realiza


Bueno aca les comparto las sources con el agregado de custom attack offattack y pick mas el arrow infinity creditos a @kayito por dicho files Gracias. aca dejo el enlace 
By any chance, do you need SQL scripts to add to the database?


Offline Part1zanBelarus #651 Posteado: September 21, 2023, 02:15:39 PM | Modificado: September 21, 2023, 02:51:10 PM by Part1zanBelarus

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 136
  • Gracias recibida: 565
  • by
@kayito Hola, todavía veo que las texturas se están estropeando, ¿sabes cómo arreglarlo? (Sabes, cuando elimino el archivo axe05,06bmd de Data/Item, se arreglan, pero el límite sigue ahí :(

https://prnt.sc/PDb2-7C2gCxM

Y una pregunta más, ¿cuál es el RGB original para, por ejemplo, el estado de Kundun o cualquier otro objeto con un color dorado?
Work Fine
@kayito Your R.G.B system works well, without third-party code. Thank you for your work !


Gracias:


Offline Genius05 #652 Posteado: September 21, 2023, 04:45:22 PM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 153
  • Gracias recibida: 123
  • ve
UPDATE

- Se añadió el sistema de Texturas para los items custom. Créditos: @SetecSoft [Main.dll]

- Se añadió el sistema de Click Derecho para Equipar/Desequipar items. [Main.dll]

- Se añadió un sistema de empaquetamiento sincronizado con el ItemStack.txt del servidor que permite armar packs de cualquier item (ideal para jewels) [Main.dll][GameServer.exe][MuServer/Data/Item/ItemStack.txt]

- Se añadió un sistema de click derecho para desempaquetar de a uno los items empaquetados (ideal para jewels) [Main.dll]

- Se optimizó el sistema de protocolos del lado cliente para poder procesar y recibir todos los tipos de protocolos desde el servidor [Main.dll]

- Se optimizó el viewport de buffs y efectos del lado servidor, haciéndolo más rápido y eficiente [GameServer.exe]

- Se modificó la ubicación de los items custom, ahora permitiendo organizarlos y separarlos por carpetas individuales [Main.dll]
   - Ahora las partes de set se ubicarán en: Cliente/Data/Player/Custom/<Index>/[Helm.bmd | Armor.bmd | Pants.bmd | Gloves.bmd | Boots.bmd]
      - Aclaración: El Index es simplemente el numerito correspondiente dentro de cada categoría. Por ejemplo: Casco Brave es 07,045 , Pecho Brave es 08,045, etc. entonces Index será 45 y por lo tanto todas las bmd correspondientes al set custom brave se guardarán en Cliente/Data/Player/Custom/45/

   - Ahora los items se ubicarán en: Cliente/Data/Item/Custom/<ItemIndex>/[*.bmd]
      - Aclaración: El ItemIndex se calcula haciendo (Grupo * 32 + Item). Por ejemplo: Custom Spear Brova es 03,011 por lo que el cálculo sería 03 * 32 + 011 = 107, entonces ItemIndex será 107 y por lo tanto la bmd correspondiente a la custom spear brova se guardará en Cliente/Data/Item/Custom/107/


- Se corrigió un error que hacía que ciertos buffs y efectos desaparezcan al moverse de mapa o al desaparecer de la vista y reaparecer [Main.dll]

- Se corrigió un error que al intentar hacer Grand Reset, no se podía utilizar ningún otro comando y no se aplicaba el Grand Reset [DataServer.exe]

- Se corrigió un error que no se verificaba correctamente el nivel requerido para crear un MG [Main.dll][GameServer.exe]
   
- Se corrigió un error que calculaba mal el daño de la elfa cuando utilizaba Bows/Crossbows sin durabilidad [GameServer.exe]

Excelente que aún sigan con el proyecto campeón, ojala y se anime en poner el /offattack, /attack y /pick  con esto estaría completo este excelente proyecto.

pero ahi estan las sources amigo aplicarlo

Pero no sé hacerlo he descargado varios archivos que supuestamente lo tienen implementado pero no funciona bien

uy.. jaja veamos que se realiza


Bueno aca les comparto las sources con el agregado de custom attack offattack y pick mas el arrow infinity creditos a @kayito por dicho files Gracias. aca dejo el enlace 
By any chance, do you need SQL scripts to add to the database?

he actualizado el enlace de descargar con el código compartido de @Zeus ya integrado a la source mas el SQL scripts del customattack

Gracias:


Offline Part1zanBelarus #653 Posteado: September 21, 2023, 05:32:53 PM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 136
  • Gracias recibida: 565
  • by
UPDATE

- Se añadió el sistema de Texturas para los items custom. Créditos: @SetecSoft [Main.dll]

- Se añadió el sistema de Click Derecho para Equipar/Desequipar items. [Main.dll]

- Se añadió un sistema de empaquetamiento sincronizado con el ItemStack.txt del servidor que permite armar packs de cualquier item (ideal para jewels) [Main.dll][GameServer.exe][MuServer/Data/Item/ItemStack.txt]

- Se añadió un sistema de click derecho para desempaquetar de a uno los items empaquetados (ideal para jewels) [Main.dll]

- Se optimizó el sistema de protocolos del lado cliente para poder procesar y recibir todos los tipos de protocolos desde el servidor [Main.dll]

- Se optimizó el viewport de buffs y efectos del lado servidor, haciéndolo más rápido y eficiente [GameServer.exe]

- Se modificó la ubicación de los items custom, ahora permitiendo organizarlos y separarlos por carpetas individuales [Main.dll]
   - Ahora las partes de set se ubicarán en: Cliente/Data/Player/Custom/<Index>/[Helm.bmd | Armor.bmd | Pants.bmd | Gloves.bmd | Boots.bmd]
      - Aclaración: El Index es simplemente el numerito correspondiente dentro de cada categoría. Por ejemplo: Casco Brave es 07,045 , Pecho Brave es 08,045, etc. entonces Index será 45 y por lo tanto todas las bmd correspondientes al set custom brave se guardarán en Cliente/Data/Player/Custom/45/

   - Ahora los items se ubicarán en: Cliente/Data/Item/Custom/<ItemIndex>/[*.bmd]
      - Aclaración: El ItemIndex se calcula haciendo (Grupo * 32 + Item). Por ejemplo: Custom Spear Brova es 03,011 por lo que el cálculo sería 03 * 32 + 011 = 107, entonces ItemIndex será 107 y por lo tanto la bmd correspondiente a la custom spear brova se guardará en Cliente/Data/Item/Custom/107/


- Se corrigió un error que hacía que ciertos buffs y efectos desaparezcan al moverse de mapa o al desaparecer de la vista y reaparecer [Main.dll]

- Se corrigió un error que al intentar hacer Grand Reset, no se podía utilizar ningún otro comando y no se aplicaba el Grand Reset [DataServer.exe]

- Se corrigió un error que no se verificaba correctamente el nivel requerido para crear un MG [Main.dll][GameServer.exe]
   
- Se corrigió un error que calculaba mal el daño de la elfa cuando utilizaba Bows/Crossbows sin durabilidad [GameServer.exe]

Excelente que aún sigan con el proyecto campeón, ojala y se anime en poner el /offattack, /attack y /pick  con esto estaría completo este excelente proyecto.

pero ahi estan las sources amigo aplicarlo

Pero no sé hacerlo he descargado varios archivos que supuestamente lo tienen implementado pero no funciona bien

uy.. jaja veamos que se realiza


Bueno aca les comparto las sources con el agregado de custom attack offattack y pick mas el arrow infinity creditos a @kayito por dicho files Gracias. aca dejo el enlace 
By any chance, do you need SQL scripts to add to the database?

he actualizado el enlace de descargar con el código compartido de @Zeus ya integrado a la source mas el SQL scripts del customattack
The link is still the same old. not updated


Offline gohancs #654 Posteado: September 23, 2023, 05:33:59 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 40
  • Gracias recibida: 26
  • ve
TENGO HOSTING + VPS (ALGUIEN QUE SE QUIERA SUMAR AL PROJECTO) ???



FALTA METERLE MANO AL A WEB PARA QUE SEA COMPATIBLE CON LOS FILES.
RECOMENDARON WEBENGINECMS PERO NO CREA LAS CUENTAS.

Gracias:


Offline gega #655 Posteado: September 23, 2023, 08:24:29 PM | Modificado: September 23, 2023, 08:37:37 PM by gega

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 18
  • Gracias recibida: 48
  • ar
Con ayuda de @kayito solucionamos el tema del registro para la WebEngine y la dejamos 100% funcional para los files.





Offline lobinhopk #656 Posteado: September 25, 2023, 03:09:34 AM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 68
  • Gracias recibida: 737
  • br
TENGO HOSTING + VPS (ALGUIEN QUE SE QUIERA SUMAR AL PROJECTO) ???



FALTA METERLE MANO AL A WEB PARA QUE SEA COMPATIBLE CON LOS FILES.
RECOMENDARON WEBENGINECMS PERO NO CREA LAS CUENTAS.

que vps é essa?


Offline magnumclinic #657 Posteado: September 26, 2023, 09:00:37 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 1
  • Gracias recibida: 0
  • ae
Home remedies for dental cavities offer natural alternatives to support oral health. These remedies often include oil pulling with coconut oil for its potential antimicrobial properties, using aloe vera gel to soothe irritated gums, and maintaining good oral hygiene practices like regular brushing and flossing. While these methods can be helpful in managing cavity symptoms, it's essential to seek professional dental care for a thorough examination and appropriate treatment, especially for advanced cavities. https://www.magnumclinic.ae/blog/home-remedies-for-dental-cavity


Offline kayito #658 Posteado: September 28, 2023, 09:07:29 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.074
  • Gracias recibida: 19165
  • ar
UPDATE

- Se separó por completo el sistema de Glow de los Custom Item. Créditos por la idea: @Zeus [Main.dll][GetMainInfo.exe][MainInfo/CustomItem.txt][MainInfo/CustomGlow.txt]

- Se añadió al Custom Item la columna Skill para poder definir qué tipo de skill tendrán las armas [Main.dll][GetMainInfo.exe][MainInfo/CustomItem.txt]

- Se añadió el sistema de volumen para los sonidos del juego en el menu de opciones. Dicho sistema es compatible con el registro de Windows que todos los mains manejan [Main.dll]

- Se agregó el sonido al subir de nivel [Main.dll][Cliente/Data/Sound/pLevelUp.wav]

- Se corrigió que el minimapa no procese los clicks en su área correspondiente si la imagen del minimapa no existe en su correspondiente World en el cliente [Main.dll]

- Se corrigió un valor en el ItemValue que calculaba mal los precios de los items con muchas opciones [Main.dll][GameServer.exe]

- Se añadieron los siguientes items custom a modo de ejemplo para que puedan continuar agregando por su cuenta sin problemas siguiendo dichas configuraciones:

Index ->Item
00,020 ->Knight Blade
02,008 ->Mace of the King
0X,021 ->Set Great Dragon

Gracias:


Offline gohancs #659 Posteado: September 29, 2023, 10:45:26 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 40
  • Gracias recibida: 26
  • ve
@kayito que posibilidad hay de que los archivos customs queden en las mismas carpetas osea Item en Data/Item y los Set en Data/Player
ya el cliente se llena de muchos archivos basuras osea archivos dupublicados. hay que compiar los mismos archivos en Data/item y tenernos tambien en la carpeta custom .. el Problema que hay es que hay que tener los archivos dos veces. nse si me entiendes ?


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
26 Replies
12259 Views
Last post February 06, 2025, 07:43:44 PM
by fenimxg
1 Replies
3048 Views
Last post January 16, 2023, 10:41:57 PM
by ntcong295810
4 Replies
4130 Views
Last post November 09, 2023, 07:05:52 PM
by kayito
11 Replies
6984 Views
Last post November 18, 2024, 10:18:55 AM
by cluz123
12 Replies
5844 Views
Last post August 30, 2023, 02:22:56 PM
by Pescado