[Aporte] Parchea el cheat de crash de tu servidor.

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
RedOculta
Aprendiz
Aprendiz
Mensajes: 5
Registrado: 08 Nov 2016 18:45
Reputación: 0

06 Mar 2019 16:44

Buenas tardes.
Vamos a ir directo al grano, este aporte lo que hará es que se detengan los crasheos de tu servidor, se hace por medio de un bug en el cliente de SA-MP, afecta en OnPlayerUnOccupiedVehicle.
Tardé mas o meno 2 semanas en buscar la solución a esto en mi servidor, siempre busqué en OnPlayerEnterVehicle pero el problema era en el callback mencionado anteriormente.
Foto del cheat:

Imagen

Imagen

Imagen

Descarga (plugin Pawn.Raknet):


Este complemento es compatible con cualquier versión de SA:MP (incluyendo 0.3.7 y 0.3DL). También hay adaptación 0.3e.

Principales características:
Interceptar y modificar paquetes entrantes / salientes.
Enviar paquetes al jugador.
Emular paquetes del jugador.

Instalación:

Instalacion
Coloque pawnraknet.dll / pawnraknet.so y pawnraknet.cfg en la carpeta plugins
Localice Pawn.RakNet.inc en la carpeta pawno / include (Windows)
Añadir a server.cfg
plugins pawnraknet.dll (Windows)
plugins pawnraknet.so (Linux)

Añade en la cabecera de tu gamemode o FilterScript
 Codigo Pawno:
1

#include <Pawn.RakNet> 
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Si desea utilizar Pawn.RakNet en filterscript, defina esta definición antes de conectarse
 Codigo Pawno:
1

#define FILTERSCRIPT
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Parcheo del crash:


Añadir al final de tu gamemode o filterscript el siguiente código:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

const UNOCCUPIED_SYNC = 209;

IPacket:UNOCCUPIED_SYNC(playerid, BitStream:bs)
{
    new unoccupiedData[PR_UnoccupiedSync];
 
    BS_IgnoreBits(bs, 8);
    BS_ReadUnoccupiedSync(bs, unoccupiedData);
 
    if(floatcmp(floatabs(unoccupiedData[PR_roll][0]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_roll][1]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_roll][2]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_direction][0]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_direction][1]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_direction][2]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_position][0]), 20000.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_position][1]), 20000.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_position][2]), 20000.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_angularVelocity][0]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_angularVelocity][1]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_angularVelocity][2]), 1.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_velocity][0]), 100.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_velocity][1]), 100.00000) == 1
        || floatcmp(floatabs(unoccupiedData[PR_velocity][2]), 100.00000) == 1
    ) {
        return false;
    }

    return true;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 30
Añadirlo ya dependera de ti.
Luego de añadido, el cheat simplemente NO HARÁ efecto.

Creditos:

Shadow por Pawn.Raknet y su Fix para el crash.







Última edición por RedOculta el 07 Mar 2019 05:57, editado 1 vez en total.
Proyecto Albión, servidor medieval y mágico.

IP de AfterGamers: samp.aftergamers.com:7777

sphere
Aprendiz
Aprendiz
Mensajes: 7
Registrado: 05 Sep 2018 13:09
Reputación: 0

07 Mar 2019 04:15

por que dices que buscaste en onplayerentervehicle etc si lo unico que has hehco ha sido copiar el fix que posteó shadow? no des créditos a una "guía", dale los créditos a el, el hizo el fix, tu no has hecho NADA
RedOculta
Aprendiz
Aprendiz
Mensajes: 5
Registrado: 08 Nov 2016 18:45
Reputación: 0

07 Mar 2019 05:54

En vez de comentar por que si, lea el final del post que ahí están los creditos.
Respecto a lo de onplayerentervehicle, intente arreglarlo junto con varios colegas y no lo logramos, recurrimos al pawn raknet que te repito nuevamente, al final del post están los creditos.

Saludos.
Proyecto Albión, servidor medieval y mágico.

IP de AfterGamers: samp.aftergamers.com:7777

LuisR11
Aprendiz
Aprendiz
Mensajes: 7
Registrado: 12 May 2019 23:18
Reputación: 0

19 May 2019 17:53

 Codigo Pawno:
1
2

D:\Program Files\Liberacion Game mode VenexZone\pawno\include\Pawn.RakNet.inc(894) : warning 235: public function lacks forward declaration (symbol "OnGameModeInit")
D:\Program Files\Liberacion Game mode VenexZone\filterscripts\Puertas6.pwn(13) : error 017: undefined symbol "floatcmp"
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2
Responder