[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: 12
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: 8
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
CrownKoky
Aprendiz
Aprendiz
Mensajes: 12
Registrado: 06 Dic 2018 13:23
Reputación: 0

08 Jun 2019 08:46

En que parte de la gm tengo que agregar esto?
 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

	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: 29
Si lo agrego al final me tira error de playerid
Angel Masci
Aprendiz
Aprendiz
Mensajes: 76
Registrado: 06 Ene 2019 22:38
Ubicación: ..::Venezuela::..
Reputación: 4

08 Jun 2019 09:16

Spoiler:
CrownKoky escribió:
08 Jun 2019 08:46
En que parte de la gm tengo que agregar esto?
 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

	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: 29
Si lo agrego al final me tira error de playerid
Simplemente agregalo como FilterScript.
CrownKoky
Aprendiz
Aprendiz
Mensajes: 12
Registrado: 06 Dic 2018 13:23
Reputación: 0

08 Jun 2019 09:41

Angel Masci escribió:
08 Jun 2019 09:16
Spoiler:
CrownKoky escribió:
08 Jun 2019 08:46
En que parte de la gm tengo que agregar esto?
 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

	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: 29
Si lo agrego al final me tira error de playerid
Simplemente agregalo como FilterScript.
me lo puedes pasar en filterscript
Angel Masci
Aprendiz
Aprendiz
Mensajes: 76
Registrado: 06 Ene 2019 22:38
Ubicación: ..::Venezuela::..
Reputación: 4

08 Jun 2019 09:46

CrownKoky escribió:
08 Jun 2019 09:41
Angel Masci escribió:
08 Jun 2019 09:16
Spoiler:
CrownKoky escribió:
08 Jun 2019 08:46
En que parte de la gm tengo que agregar esto?
 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

	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: 29
Si lo agrego al final me tira error de playerid
Simplemente agregalo como FilterScript.
me lo puedes pasar en filterscript
Hay varias guias de como crear filterscripts haslo tu solo.
CrownKoky
Aprendiz
Aprendiz
Mensajes: 12
Registrado: 06 Dic 2018 13:23
Reputación: 0

08 Jun 2019 10:16

Angel Masci escribió:
08 Jun 2019 09:46
CrownKoky escribió:
08 Jun 2019 09:41
Angel Masci escribió:
08 Jun 2019 09:16
Spoiler:
Simplemente agregalo como FilterScript.
me lo puedes pasar en filterscript
Hay varias guias de como crear filterscripts haslo tu solo.
no consigo pasame una
Angel Masci
Aprendiz
Aprendiz
Mensajes: 76
Registrado: 06 Ene 2019 22:38
Ubicación: ..::Venezuela::..
Reputación: 4

08 Jun 2019 10:53

CrownKoky escribió:
08 Jun 2019 10:16
Angel Masci escribió:
08 Jun 2019 09:46
CrownKoky escribió:
08 Jun 2019 09:41


me lo puedes pasar en filterscript
Hay varias guias de como crear filterscripts haslo tu solo.
no consigo pasame una
Busca en Ingles ese es el idioma universal la mayoria de posting aparecen en ingles.
CrownKoky
Aprendiz
Aprendiz
Mensajes: 12
Registrado: 06 Dic 2018 13:23
Reputación: 0

08 Jun 2019 12:47

Porque me tira este error
 Codigo Pawno:
1

pr_rip_UNOCCUPIED_SYNC
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Responder