Hola a todos.
Me gustaría preguntar algunas cosas sobre esta versión y su código.
Soy un programador relativamente nuevo, comencé con la versión 1.04e de pyke pero las cosas eran un poco complicadas, así que decidí probar algo más "simple".
Básicamente me gustaría saber esto, en otros lanzamientos de la temporada 6 los he visto realizar cambios de código usando comandos como
SetCompleteHook(0xE9,0x00832862, 0x00832897);
Conjunto de memoria (0x00832CF2,0x90,0x5);
Conjunto de memoria (0x7E3E30,0x90,0x1EA2);
SetByte((PVOID)(0x007E3EDD+2),120);
SetByte((PVOID)(0x007E3F4A+3),100);
Conjunto de memoria (0x007E5D00,0x90,0xFF5);
Sé que estas son compensaciones y puedes encontrarlas en un desensamblador como olly/IDA. Resulta que tengo un archivo principal descompilado de la temporada 6 donde estaban las compensaciones y arreglé algunas cosas.
Por ejemplo, en 1.04e puedes habilitar/deshabilitar sombras con
SetByte(0x0054A270, 0xC3); //Desactivar sombras
SetByte(0x0054A270, 0x55); //Habilitar sombras
mientras que en 1.05D es otro Offset,
SetByte(0x004CB263, 0xC3); //Desactivar sombras
Otro ejemplo, en la imagen de abajo tengo la solución para la Caja de kundun, cuando fue arrojada por un mob dorado o en el evento de caída, al comienzo de la animación el objeto parecía enorme en la pantalla pero en el piso era bien. A la derecha está el principal descompilado y a la izquierda está la fuente principal 5.2.
Y así es la corrección del error visual.
Fix box of kundun drop size
PetMontura.cpp
Find this line at the end of the file
//SetOp((LPVOID)0x005F820C, DrawObjectDropOnViewport, ASM::CALL);
And replace it with this
SetCompleteHook(ASM::JMP, 0x005F61C0, &ItemAngle);
Add this code to the top of the file
int __cdecl ItemAngle(int a1)
{
int result; // eax
int v2; // [esp+0h] [ebp-8h]
unsigned __int8 v3; // [esp+7h] [ebp-1h]
v3 = 1;
*(float *)(a1 + 264) = 0.0;
*(float *)(a1 + 268) = 0.0;
*(float *)(a1 + 272) = -45.0;
if ( *(_DWORD *)(a1 + 48) < 1171 || *(_DWORD *)(a1 + 48) >= 2195 )
{
if ( *(_DWORD *)(a1 + 48) != 3239 && *(_DWORD *)(a1 + 48) != 3240 && *(_DWORD *)(a1 + 48) != 3241 )
{
if ( (*(_DWORD *)(a1 + 48) < 3227 || *(_DWORD *)(a1 + 48) >= 3236)
&& (*(_DWORD *)(a1 + 48) < 3237 || *(_DWORD *)(a1 + 48) >= 3239) )
{
if ( *(_DWORD *)(a1 + 48) < 2195 || *(_DWORD *)(a1 + 48) >= 4243 )
{
if ( *(_DWORD *)(a1 + 48) < 4243 || *(_DWORD *)(a1 + 48) >= 4755 )
{
if ( (*(_DWORD *)(a1 + 48) < 4794 || *(_DWORD *)(a1 + 48) > 4799) && *(_DWORD *)(a1 + 48) != 4837 )
{
if ( (*(_DWORD *)(a1 + 48) < 5267 || *(_DWORD *)(a1 + 48) >= 6803) && *(_DWORD *)(a1 + 48) != 8494 )
{
if ( *(_DWORD *)(a1 + 48) < 7347 || *(_DWORD *)(a1 + 48) > 7349 )
{
if ( *(_DWORD *)(a1 + 48) < 7375 || *(_DWORD *)(a1 + 48) > 7380 )
{
if ( *(_DWORD *)(a1 + 48) < 7385 || *(_DWORD *)(a1 + 48) > 7389 )
{
if ( *(_DWORD *)(a1 + 48) < 7415 || *(_DWORD *)(a1 + 48) > 7444 )
{
switch ( *(_DWORD *)(a1 + 48) )
{
case 0x1CC4:
*(float *)(a1 + 264) = 270.0;
*(float *)(a1 + 268) = 180.0;
*(float *)(a1 + 272) = 45.0;
*(float *)(a1 + 96) = 0.69999999;
break;
case 0x1CC5:
*(float *)(a1 + 264) = 250.0;
*(float *)(a1 + 268) = 180.0;
*(float *)(a1 + 272) = 45.0;
break;
case 0x20C0:
*(float *)(a1 + 96) = 0.89999998;
*(float *)(a1 + 264) = 0.0;
*(float *)(a1 + 272) = 90.0;
break;
default:
if ( *(_DWORD *)(a1 + 48) < 8385 || *(_DWORD *)(a1 + 48) > 8387 )
{
if ( *(_DWORD *)(a1 + 48) == 8388 )
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
if(gCustomPet2.CheckCustomPetByItem(*(_DWORD *)(a1 + 48) - 1171))
{
*(float *)(a1 + 264) = 270.0;
*(float *)(a1 + 268) = 180.0;
*(float *)(a1 + 272) = 45.0;
*(float *)(a1 + 96) = gCustomPet2.GetScaleDrop(*(_DWORD *)(a1 + 48) - 1171);
result = a1;
}
return result;
}
Primera pregunta, ¿hay compensaciones para este cliente?
Segunda pregunta, ¿se puede usar main 5.2 como en la temporada 6 para ver cómo están las clases y cambiarlas?Pido disculpas si la traducción es mala y si me volví tediosa.
La versión 97 es una de las mejores y me gustaría poder pasar el evento del cielo o los elementos de 99i o casarme con el sistema.
Si alguien quiere hablar me puede mandar mensaje privado a discord.