Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Fix de Wings en GameServer 1.02c + Información sobre el GS.  (Visto 545 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Raytheon Posteado: June 19, 2021, 07:04:56 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 23
  • Gracias recibida: 108
  • ar
Hola que tal, Soy nuevo en el foro.  Me encuentro modificando y arreglando unas files que encontré en este foro llamadas FireTeam 1.02c que traían los sources, pude solucionar bastantes problemas y agregar ciertas funcionalidades útiles pero no puedo reparar la cantidad de alas que soporta.
La idea es agregar las alas S3, pero de manera estética, es decir un item independiente pero con las mismas propiedades de unas Wings s2. Al agregarlas al item(kor) del servidor, al mu maker y al item.bmd del cliente las alas son manejables y visibles, el problema radica en que las opciones de las mismas no aparecen o si aparece alguna, nada que ver con la de las Wings S2 que se uso de base, probe varios items.bmd, varios mains todos con los correspondientes fixes y varios clientes, todos con el mismo resultado.
Otro particular bug que existe con las Wings S3 es que al equiparselas y reloguear, las alas S3 se ven como unas S1 durante la selección de personaje.
esto se soluciona quitándoselas y volviéndoselas a poner.

Leí en foros en ingles que se trata de una limitación en el Gameserver.
Los sources, trajeron un custom.cpp llamado Wings, la cual sus funciones o métodos están comentados en otras secciones del código (sus referencias, llamadas). Al intentar activarlas no hay ningún cambio ni tampoco revienta el Gs, supongo que esta incompleta. 
Se programar en C++ pero estoy incursionando en todo lo que es programación de Mu, y quisiera entender el funcionamiento el gameserver a nivel interno, o que puntos claves debo tener en cuenta para poder realizar cuestiones mas complejas, me siento perdido ya que casi no hay información o comentarios en el código, se siente como desorganizado. me interesa saber sobre que tendría que buscar tutoriales.

Con respecto a las Wings.

Adjunto el Wings.cpp a ver si me pueden dar una mano.

Code: [Select]
#include "StdAfx.h"

__declspec(naked) void Wings1() // - Add Bless
{
    _asm
{
PUSH ECX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX, 0x4FE36C
        JMP EBX
        Continue:
        MOV EBX, 0x4FE32F
        JMP EBX
}
}

__declspec(naked) void Wings2() // - Add Soul
{
    _asm
{
PUSH EDX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX, 0x4FE8B2
        JMP EBX
        Continue:
        MOV EBX, 0x4FE875
        JMP EBX
}
}

__declspec(naked) void Wings3() // - Add Life
{
    _asm
{
PUSH EDX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX, 0x4FF072
        JMP EBX
        Continue:
        MOV EBX, 0x4FF035
        JMP EBX
}
}

__declspec(naked) void Wings4() // - Move Icarus 1
{
    _asm
{
PUSH ECX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX, 0x4FB54F
        JMP EBX
        Continue:
    MOV EBX, 0x4FB59B
    JMP EBX
}
}

__declspec(naked) void Wings5() // - Move Icarus 2
{
    _asm
{
PUSH ECX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX, 0x51E4DE
        JMP EBX
        Continue:
    MOV EBX, 0x51E523
    JMP EBX
}
}

__declspec(naked) void Wings6() // - CItem::Convert 1
{
    _asm
{
        MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50E4A1
JMP EBX
        Continue:
MOV EBX,0x50E49D
JMP EBX
}
}

__declspec(naked) void Wings7() // - CItem::Convert 2
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50F276
JMP EBX
        Continue:
MOV EBX,0x50F26D
JMP EBX
}
}

__declspec(naked) void Wings8() // - CItem::Convert 3
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50F33A
JMP EBX
        Continue:
MOV EBX,0x50F2EF
JMP EBX
}
}

__declspec(naked) void Wings9() // - CItem::Convert 4
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50F54F
JMP EBX
        Continue:
MOV EBX,0x50F538
JMP EBX
}
}

__declspec(naked) void Wings10() // - CItem::Convert 5
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50F74A
JMP EBX
        Continue:
MOV EBX,0x50F715
JMP EBX
}
}

__declspec(naked) void Wings11() // - CItem::Convert 6
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50FA78
JMP EBX
        Continue:
MOV EBX,0x50FA43
JMP EBX
}
}

__declspec(naked) void Wings12() // - CItem::Convert 7
{
    _asm
{
    MOV EAX,DWORD PTR SS:[EBP-8]
PUSH EAX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
MOV EBX,0x50FEB5
JMP EBX
        Continue:
MOV EBX,0x50FDFE
JMP EBX
}
}

__declspec(naked) void Wings13() // - Move Kanturu 1
{
    _asm
{
PUSH ECX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
        MOV EBX,0x4FB8D0
        JMP EBX
        Continue:
    MOV EBX,0x4FB918
    JMP EBX
}
}

__declspec(naked) void Wings14() // - Move Kanturu 2
{
    _asm
{
PUSH EDX
CALL [CheckWings]
TEST EAX,EAX
JNZ Continue
        MOV EBX,0x583855
        JMP EBX
        Continue:
    MOV EBX,0x5838E0
    JMP EBX
}
}

bool CheckWings(int Index)
{
    if (Index >= ITEMGET(12,44) && Index <= ITEMGET(12,66) || Index == ITEMGET(13,30))
{
    return false;
}

return true;
}

BOOL gObjWingSprite(LPOBJ lpObj)
{
    if (lpObj->Type != PLAYER || lpObj->pInventory[7].IsItem() == FALSE)
{
    return FALSE;
}

CItem * Item = &lpObj->pInventory[7];

if ((Item->m_Type >= 0x1800 && Item->m_Type <= 0x1806) || (Item->m_Type >= 0x1824 && Item->m_Type <= 0x182B) || Item->m_Type == 0x1A1E)
{
    if (Item->m_Durability > 0.0f)
{
    return TRUE;
}
}
return FALSE;
}

void gObjMakePreviewCharSetEx(int aIndex)
{
gObjMakePreviewCharSet(aIndex);

if ((gObj[aIndex].pInventory[7].m_Type >= ITEMGET(12,34) && gObj[aIndex].pInventory[7].m_Type <= ITEMGET(12,66)))
{
gObj[aIndex].CharSet[5] |= CS_SET_WING(3);
gObj[aIndex].CharSet[17] |= (gObj[aIndex].pInventory[7].m_Type - ITEMGET(12,36) + 1) << 2;
}
}

bool Wings()
{
Func.HookJump(0x4FE327, Wings1);
Func.HookJump(0x4FE86D, Wings2);
Func.HookJump(0x4FF02D, Wings3);
Func.HookJump(0x4FB547, Wings4);
Func.HookJump(0x51E4D7, Wings5);
Func.HookJump(0x50E494, Wings6);
Func.HookJump(0x50F264, Wings7);
Func.HookJump(0x50F2E6, Wings8);
Func.HookJump(0x50F52F, Wings9);
Func.HookJump(0x50F70C, Wings10);
Func.HookJump(0x50FA3A, Wings11);
Func.HookJump(0x50FDF1, Wings12);
Func.HookJump(0x4FB8C8, Wings13);
Func.HookJump(0x583849, Wings14);

return true;
}

Deduzco que el problema se encuentra por el metodo MakePreviewCharSetEx pero no estoy seguro.
En el caso que sea necesario puedo adjuntar fotos.
Muchas gracias.

Bernal, Buenos Aires.

Offline Raytheon #1 Posteado: June 21, 2021, 02:37:00 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 23
  • Gracias recibida: 108
  • ar
Bernal, Buenos Aires.

Offline davidrcj #2 Posteado: June 21, 2021, 02:48:17 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 390
  • Gracias recibida: 3211
  • ve
El problema que tienes es MakePreviewCharSet, es que no tienes los offset correcto, para ello por eso te da el bug de las wings (s1) cuando vas a otro mapa o a la select de personajes bro, me pasaba lo mismo estoy trabajando en el main 1.04j kor, y por fin pude terminar las custom wings, me faltaba el offset, para que funcionara bien, estoy trabajando base muemu.


Offline Raytheon #3 Posteado: June 21, 2021, 03:42:33 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 23
  • Gracias recibida: 108
  • ar
El problema que tienes es MakePreviewCharSet, es que no tienes los offset correcto, para ello por eso te da el bug de las wings (s1) cuando vas a otro mapa o a la select de personajes bro, me pasaba lo mismo estoy trabajando en el main 1.04j kor, y por fin pude terminar las custom wings, me faltaba el offset, para que funcionara bien, estoy trabajando base muemu.
Es decir, el problema esta en el main? o en el GS?

Bernal, Buenos Aires.

Offline davidrcj #4 Posteado: June 21, 2021, 03:47:08 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 390
  • Gracias recibida: 3211
  • ve
El problema que tienes es MakePreviewCharSet, es que no tienes los offset correcto, para ello por eso te da el bug de las wings (s1) cuando vas a otro mapa o a la select de personajes bro, me pasaba lo mismo estoy trabajando en el main 1.04j kor, y por fin pude terminar las custom wings, me faltaba el offset, para que funcionara bien, estoy trabajando base muemu.
Es decir, el problema esta en el main? o en el GS?
En los offset del main

Gracias:


Offline davidrcj #5 Posteado: June 21, 2021, 03:51:24 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 390
  • Gracias recibida: 3211
  • ve
https://tuservermu.com.ve/index.php?topic=38163.0
Guiate por este source ya que el main es parecido al 1.02c , me refiero al código lado gs y al main. Solo es para que te guíes.

Gracias:


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
0 Replies
955 Views
Last post July 11, 2016, 10:39:27 PM
by ZabiinoOo
0 Replies
1234 Views
Last post July 26, 2017, 12:33:21 PM
by Lude
0 Replies
637 Views
Last post December 23, 2018, 11:33:06 AM
by adrian15
7 Replies
1303 Views
Last post March 22, 2019, 12:30:12 AM
by -Rastaa.TSM☢
0 Replies
450 Views
Last post August 09, 2020, 10:56:54 AM
by adrian15