Programación en Pawn - SAMP

[APORTE] Robo de banco de L.S.P.D PARA °•.[PZ].•°

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].
  • 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).
  • El título del tema debe contener el nombre del GameMode al cual está destinado el código (puedes utilizar abreviaturas o tags). Por ejemplo: "[ZC] Menú para 24/7".

Moderador: Ayudantes

Este "sistema", tiene varios ERRORES, nombrare 2 nomas.
1: A la hora de /saquear, el usuario puede /saquear tantas veces quiera, a lo cual esto es muy malo ya que en 1 hora segun el dinero que le pusiste que queres que le diera se puee hacer multimillonario...
2: Y los cargos son como fantasia, cuando relogean con "4 cargos" esos cargos cuando entran se los saca y aparece normal el usuario...
AntwaneDawkins escribió:
06 Jun 2018 19:25
Este "sistema", tiene varios ERRORES, nombrare 2 nomas.
1: A la hora de /saquear, el usuario puede /saquear tantas veces quiera, a lo cual esto es muy malo ya que en 1 hora segun el dinero que le pusiste que queres que le diera se puee hacer multimillonario...
2: Y los cargos son como fantasia, cuando relogean con "4 cargos" esos cargos cuando entran se los saca y aparece normal el usuario...
Debes añadir un new general, por ejemplo

new RoboTIEMPO;

luego en el cmd:saquear colocas if(Robo tiempo == 1) return SCM(playerid,-1,"Han robado recientemente, espera 1 hora para volver a robar.");

y en el forward payday coloca RoboTiempo = 0;

y en el forward que pone cargos coloca RoboTiempo = 1;

en cuanto a los cargos

PlayerInfo[playerid][pCargos] = 5;
SetPlayerWantedLevel(id, PlayerInfo[playerid][pCargos]);
Alejandro44 escribió:
02 Jun 2018 09:16
Bro hay ves tus como lo editas entiendes y como lo acomodas porque yo solo cumplo con aportar cosas -dots -happy
Uff, te pelaste feísimo.
Cuando "aportas" algo, no es sólo "aportarlo" -nosweat debes dar soporte del mismo!
Aparte "tu sistema" tiene muchos errores, nombrando varios que los usuarios ya comentaron:

Error #1: Usas más parámetros de los que deberías (3), el jugador puede usar el comando a 250 metros de distancia del lugar
 Codigo Pawno:
1

if(IsPlayerInRangeOfPoint(playerid,250,824.8563,10.1694,1004.1797,87.9025))
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Solución: Dejar sólo las tres variables flotantes y cambiar el "250" por algo más bajo.
 Codigo Pawno:
1

 if(IsPlayerInRangeOfPoint(playerid, 5.0, 824.8563, 10.1694, 1004.1797))
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Error #2: Al momento de robar, puedo robar diez veces en un segundo si quiero.
Solución: Agregar una variable global y detectar si ha sido robado y permitirla en el tiempo que quieras
Ejemplo:
 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
31
32
33
34

new bool:BancoRobado; //Variable booleana GLOBAL (General dice, ggg)
CMD:saquear(playerid, params[])
{
    if(!IsPlayerInRangeOfPoint(playerid,250,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "No estás en el banco.");
    if(BancoRobado == true) return SendClientMessage(playerid, 0xFF3300FF, "El banco ya ha sido robado.");
   	if(Muriendo[playerid] == 1 || Consumible[playerid] == 1 || VariableCaido[playerid] == 1 || Esposando[playerid] == 2 || recogiendo[playerid] > 0) return SendClientMessage(playerid, 0xFF3300FF, "No puedes usar este comando ahora.");
           	
	SendClientMessage(playerid, -1, "{0066FF}Saqueando banco espera un momento o se cancelara el robo...");
	SetTimerEx("RobarBanco",10*1000,false,"i",playerid); //Donde 10 son los segundos, cambiar por el tiempo que quieras
	BancoRobado = true;
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 1, 1, 0, 0);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 1, 1, 1, 0, 0);
    return 1;
}

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
    new texto[64];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Le enviamos un mensaje al que esta robando diciéndole que gano X cantidad de dinero
    SendClientMessage(playerid, -1, "{33CCFF}Te dieron {FF3300}5 {33CCFF}estrella de busqueda por {FF3300}robar el banco");
    SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid) + 5); //Le sumamos 5 estrellas al jugador por robar la tienda
    return 1;
}

forward PermitirRobo();
public PermitirRobo()
{
	BancoRobado = false;
	SendClientMessageToAll(-1, "* El banco ya puede ser robado"); //Remover si quieres
}
  Cantidad de llaves: Abiertas(9)-Cerradas(9) | Lineas Totales: 34
Error #3: Pierde los cargos al momento de robar el banco y salir del servidor.
Solución: Agregar la variable de pCargos.
Ejemplo:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
    new texto[64];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Le enviamos un mensaje al que esta robando diciéndole que gano X cantidad de dinero
    SendClientMessage(playerid, -1, "{33CCFF}Te dieron {FF3300}5 {33CCFF}estrella de busqueda por {FF3300}robar el banco");
    SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(6)-Cerradas(6) | Lineas Totales: 14
Error #4 Mal uso del "texto" y "format", no le estás dando los parametros externos.
Solución: Removerlo o agregarle parametros:
Ejemplo #1:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
    DarDinero(playerid,50000);
	SendClientMessage(playerid, -1,"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12
Ejemplo #2:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
    new texto[100];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000 (Ahora tienes %d estrellas)", PlayerInfo[playerid][pCargos]+5);
	SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 14
Error #5: Cada vez que robe el banco, lo podrá robar y siempre obtendrá la misma cantidad de dinero.
Solución: Agregar posibilidades.
Ejemplo:
 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
31

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
	    SendClientMessage(playerid, 0x33CCFFFF, "** No has saqueado el banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
	    PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
        PlayerInfo[playerid][pCargos] += 5;
		new dinero;
        switch(rrb)
        {
            case 26,30,36,40,46,50: dinero = 24121;
            case 27,31,37,41,44,49: dinero = 12142;
			default: dinero = random(99999);
		}
	    DarDinero(playerid,dinero);
	    new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron 5 estrellas (total estrellas: %d)", dinero, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
	}//
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 31
Error #6: Si el jugador usa el comando en el banco, se va mientras está robando de igual forma le da el dinero.
Solución: Verificar que el jugar está en el banco.
Ejemplo:
 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
31
32

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "* Has fallado el robo por no estar en el lugar donde usaste el comando.");
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
	    SendClientMessage(playerid, 0x33CCFFFF, "** Has fallado el robo al banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
	    PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
		new dinero, cargos;
        switch(rrb)
        {
            case 26,30,36,40,46,50: dinero = 24121, cargos = 7;
            case 27,31,37,41,44,49: dinero = 12142, cargos = 3;
			default: dinero = random(99999), cargos = 10;
		}
	    new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron %d estrellas (total estrellas: %d)", dinero, cargos, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
		PlayerInfo[playerid][pCargos] += cargos;
	    DarDinero(playerid,dinero);
	}//
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 32
Mejor código (en mi punto de vista)

Junto a las demás variables/defines:
 Codigo Pawno:
1

new bool:BancoRobado;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
En OnGameModeInit junto a los demás labeles:
 Codigo Pawno:
1

CreateDynamic3DTextLabel("¿Quieres saquear el banco?\n{FFFFFF}Utiliza{0066FF} /saquear",0x0066FFFF, 824.8563, 10.1694, 1004.1797, 87.9025); //SAQUEAR
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 1
Junto a los demás comandos:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13

CMD:saquear(playerid)
{
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "No estás en el banco.");
	if(BancoRobado == true) return SendClientMessage(playerid, 0xFF3300FF, "El banco ya ha sido robado.");
	if(Muriendo[playerid] == 1 || Consumible[playerid] == 1 || VariableCaido[playerid] == 1 || Esposando[playerid] == 2 || recogiendo[playerid] > 0) return SendClientMessage(playerid, 0xFF3300FF, "No puedes usar este comando ahora.");

	SendClientMessage(playerid, -1, "{0066FF}Saqueando banco espera un momento o se cancelara el robo...");
	SetTimerEx("RobarBanco",10*1000,false,"i",playerid); //Donde 10 son los segundos, cambiar por el tiempo que quieras
	BancoRobado = true;
	ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 1, 1, 0, 0);
	ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 1, 1, 1, 0, 0);
	return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 13
Junto a los demás callbacks:
 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
31
32
33
34
35
36
37
38
39

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "* Has fallado el robo por no estar en el lugar donde usaste el comando.");
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
		SendClientMessage(playerid, 0x33CCFFFF, "** Has fallado el robo al banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
		PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
		new dinero, cargos;
		switch(rrb)
		{
			case 26,30,36,40,46,50: dinero = 24121, cargos = 7;
			case 27,31,37,41,44,49: dinero = 12142, cargos = 3;
			default: dinero = random(99999), cargos = 10;
		}
		new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron %d estrellas (total estrellas: %d)", dinero, cargos, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
		PlayerInfo[playerid][pCargos] += cargos;
		DarDinero(playerid,dinero);
	}//
	SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
	return 1;
}

forward PermitirRobo();
public PermitirRobo()
{
	BancoRobado = false;
	SendClientMessageToAll(-1, "* El banco ya puede ser robado"); //Remover si quieres
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 39
Eduardo_1 escribió:
13 Jun 2018 14:10
Alejandro44 escribió:
02 Jun 2018 09:16
Bro hay ves tus como lo editas entiendes y como lo acomodas porque yo solo cumplo con aportar cosas -dots -happy
Uff, te pelaste feísimo.
Cuando "aportas" algo, no es sólo "aportarlo" -nosweat debes dar soporte del mismo!
Aparte "tu sistema" tiene muchos errores, nombrando varios que los usuarios ya comentaron:

Error #1: Usas más parámetros de los que deberías (3), el jugador puede usar el comando a 250 metros de distancia del lugar
 Codigo Pawno:
1

if(IsPlayerInRangeOfPoint(playerid,250,824.8563,10.1694,1004.1797,87.9025))
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Solución: Dejar sólo las tres variables flotantes y cambiar el "250" por algo más bajo.
 Codigo Pawno:
1

 if(IsPlayerInRangeOfPoint(playerid, 5.0, 824.8563, 10.1694, 1004.1797))
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Error #2: Al momento de robar, puedo robar diez veces en un segundo si quiero.
Solución: Agregar una variable global y detectar si ha sido robado y permitirla en el tiempo que quieras
Ejemplo:
 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
31
32
33
34

new bool:BancoRobado; //Variable booleana GLOBAL (General dice, ggg)
CMD:saquear(playerid, params[])
{
    if(!IsPlayerInRangeOfPoint(playerid,250,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "No estás en el banco.");
    if(BancoRobado == true) return SendClientMessage(playerid, 0xFF3300FF, "El banco ya ha sido robado.");
   	if(Muriendo[playerid] == 1 || Consumible[playerid] == 1 || VariableCaido[playerid] == 1 || Esposando[playerid] == 2 || recogiendo[playerid] > 0) return SendClientMessage(playerid, 0xFF3300FF, "No puedes usar este comando ahora.");
           	
	SendClientMessage(playerid, -1, "{0066FF}Saqueando banco espera un momento o se cancelara el robo...");
	SetTimerEx("RobarBanco",10*1000,false,"i",playerid); //Donde 10 son los segundos, cambiar por el tiempo que quieras
	BancoRobado = true;
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 1, 1, 0, 0);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 1, 1, 1, 0, 0);
    return 1;
}

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
    new texto[64];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Le enviamos un mensaje al que esta robando diciéndole que gano X cantidad de dinero
    SendClientMessage(playerid, -1, "{33CCFF}Te dieron {FF3300}5 {33CCFF}estrella de busqueda por {FF3300}robar el banco");
    SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid) + 5); //Le sumamos 5 estrellas al jugador por robar la tienda
    return 1;
}

forward PermitirRobo();
public PermitirRobo()
{
	BancoRobado = false;
	SendClientMessageToAll(-1, "* El banco ya puede ser robado"); //Remover si quieres
}
  Cantidad de llaves: Abiertas(9)-Cerradas(9) | Lineas Totales: 34
Error #3: Pierde los cargos al momento de robar el banco y salir del servidor.
Solución: Agregar la variable de pCargos.
Ejemplo:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
    new texto[64];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Le enviamos un mensaje al que esta robando diciéndole que gano X cantidad de dinero
    SendClientMessage(playerid, -1, "{33CCFF}Te dieron {FF3300}5 {33CCFF}estrella de busqueda por {FF3300}robar el banco");
    SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(6)-Cerradas(6) | Lineas Totales: 14
Error #4 Mal uso del "texto" y "format", no le estás dando los parametros externos.
Solución: Removerlo o agregarle parametros:
Ejemplo #1:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
    DarDinero(playerid,50000);
	SendClientMessage(playerid, -1,"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000"); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12
Ejemplo #2:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
    new texto[100];
    DarDinero(playerid,50000);
    format(texto,sizeof(texto),"{33CCFF}Saqueo finalizado exitosamente, lograste robar $50000 (Ahora tienes %d estrellas)", PlayerInfo[playerid][pCargos]+5);
	SendClientMessage(playerid, -1,texto); //Envía el mensaje de arriba
    //
    PlayerInfo[playerid][pCargos] += 5;
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 14
Error #5: Cada vez que robe el banco, lo podrá robar y siempre obtendrá la misma cantidad de dinero.
Solución: Agregar posibilidades.
Ejemplo:
 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
31

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
	    SendClientMessage(playerid, 0x33CCFFFF, "** No has saqueado el banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
	    PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
        PlayerInfo[playerid][pCargos] += 5;
		new dinero;
        switch(rrb)
        {
            case 26,30,36,40,46,50: dinero = 24121;
            case 27,31,37,41,44,49: dinero = 12142;
			default: dinero = random(99999);
		}
	    DarDinero(playerid,dinero);
	    new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron 5 estrellas (total estrellas: %d)", dinero, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
	}//
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 31
Error #6: Si el jugador usa el comando en el banco, se va mientras está robando de igual forma le da el dinero.
Solución: Verificar que el jugar está en el banco.
Ejemplo:
 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
31
32

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "* Has fallado el robo por no estar en el lugar donde usaste el comando.");
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
	    SendClientMessage(playerid, 0x33CCFFFF, "** Has fallado el robo al banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
	    PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
		new dinero, cargos;
        switch(rrb)
        {
            case 26,30,36,40,46,50: dinero = 24121, cargos = 7;
            case 27,31,37,41,44,49: dinero = 12142, cargos = 3;
			default: dinero = random(99999), cargos = 10;
		}
	    new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron %d estrellas (total estrellas: %d)", dinero, cargos, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
		PlayerInfo[playerid][pCargos] += cargos;
	    DarDinero(playerid,dinero);
	}//
    SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 32
Mejor código (en mi punto de vista)

Junto a las demás variables/defines:
 Codigo Pawno:
1

new bool:BancoRobado;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
En OnGameModeInit junto a los demás labeles:
 Codigo Pawno:
1

CreateDynamic3DTextLabel("¿Quieres saquear el banco?\n{FFFFFF}Utiliza{0066FF} /saquear",0x0066FFFF, 824.8563, 10.1694, 1004.1797, 87.9025); //SAQUEAR
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 1
Junto a los demás comandos:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13

CMD:saquear(playerid)
{
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "No estás en el banco.");
	if(BancoRobado == true) return SendClientMessage(playerid, 0xFF3300FF, "El banco ya ha sido robado.");
	if(Muriendo[playerid] == 1 || Consumible[playerid] == 1 || VariableCaido[playerid] == 1 || Esposando[playerid] == 2 || recogiendo[playerid] > 0) return SendClientMessage(playerid, 0xFF3300FF, "No puedes usar este comando ahora.");

	SendClientMessage(playerid, -1, "{0066FF}Saqueando banco espera un momento o se cancelara el robo...");
	SetTimerEx("RobarBanco",10*1000,false,"i",playerid); //Donde 10 son los segundos, cambiar por el tiempo que quieras
	BancoRobado = true;
	ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 1, 1, 0, 0);
	ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 1, 1, 1, 0, 0);
	return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 13
Junto a los demás callbacks:
 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
31
32
33
34
35
36
37
38
39

forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797)) return SendClientMessage(playerid, 0xFF3300FF, "* Has fallado el robo por no estar en el lugar donde usaste el comando.");
	//
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
		SendClientMessage(playerid, 0x33CCFFFF, "** Has fallado el robo al banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
		PlayerInfo[playerid][pCargos] += 3;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
		new dinero, cargos;
		switch(rrb)
		{
			case 26,30,36,40,46,50: dinero = 24121, cargos = 7;
			case 27,31,37,41,44,49: dinero = 12142, cargos = 3;
			default: dinero = random(99999), cargos = 10;
		}
		new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron %d estrellas (total estrellas: %d)", dinero, cargos, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
		PlayerInfo[playerid][pCargos] += cargos;
		DarDinero(playerid,dinero);
	}//
	SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
	return 1;
}

forward PermitirRobo();
public PermitirRobo()
{
	BancoRobado = false;
	SendClientMessageToAll(-1, "* El banco ya puede ser robado"); //Remover si quieres
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 39
Buenas me ayudas en algo? quiero que al momento de que roben el abanco se envie un mensaje a los policias en la radio por ejemplo: El banco de los santos esta siendo asaltado
Theskiles escribió:
17 Jun 2018 18:41
Buenas me ayudas en algo? quiero que al momento de que roben el abanco se envie un mensaje a los policias en la radio por ejemplo: El banco de los santos esta siendo asaltado
Okok.
 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

[pawn=]forward RobarBanco(playerid);
public RobarBanco(playerid)
{
	if(!IsPlayerConnected(playerid)) return 1;
	//
	SetTimer("PermitirRobo", 30*1000, false); //Donde 30 son los segundos, cambiar por el tiempo que quieras
	if(!IsPlayerInRangeOfPoint(playerid,5.0,824.8563,10.1694,1004.1797))
	{
		SendClientMessage(playerid, 0xFF3300FF, "* Has fallado el robo por no estar en el lugar donde usaste el comando.");
		new fmat[128];
		format(fmat, sizeof(fmat), "** %s ha intentado robar el banco pero falló", GetPlayerNameEx(playerid));
		for(new p = 0, pj = MAX_PLAYERS; p < pj; p++) if(IsPlayerConnected(p) && TuVariableDePolicia(p))
		{
			SendClientMessage(p, -1, fmat);
		}
		return 1;
	}
	new rrb = random(50); //50 posibilidades de robar el banco.
	if(rrb < 25) //Si las posibilidades son menores a 25, no roba
	{
		SendClientMessage(playerid, 0x33CCFFFF, "** Has fallado el robo al banco, te han pillado las cámaras de seguridad y te han dado 3 estrellas");
		PlayerInfo[playerid][pCargos] += 3;
		new fmat[128];
		format(fmat, sizeof(fmat), "** %s ha intentado robar el banco pero falló", GetPlayerNameEx(playerid));
		for(new p = 0, pj = MAX_PLAYERS; p < pj; p++) if(IsPlayerConnected(p) && TuVariableDePolicia(p))
		{
			SendClientMessage(p, -1, fmat);
		}
		return 1;
	}
	else //Si las posibilidades son mayores a 25, completó el robo
	{
		new dinero, cargos;
		switch(rrb)
		{
			case 26,30,36,40,46,50: dinero = 24121, cargos = 7;
			case 27,31,37,41,44,49: dinero = 12142, cargos = 3;
			default: dinero = random(99999), cargos = 10;
		}
		new fmat[100];
		format(fmat, sizeof(fmat), "** Has saqueado el banco, robaste $%d, te aumentaron %d estrellas (total estrellas: %d)", dinero, cargos, PlayerInfo[playerid][pCargos]);
		SendClientMessage(playerid, 0x33CCFFFF, fmat);
		PlayerInfo[playerid][pCargos] += cargos;
		DarDinero(playerid,dinero);
		new fmat[128];
		format(fmat, sizeof(fmat), "** %s ha robado $%d del banco", GetPlayerNameEx(playerid), dinero);
		for(new p = 0, pj = MAX_PLAYERS; p < pj; p++) if(IsPlayerConnected(p) && TuVariableDePolicia(p))
		{
			SendClientMessage(p, -1, fmat);
		}
		return 1;
	}//
	SetPlayerWantedLevel(playerid,PlayerInfo[playerid][pCargos]);
	return 1;
}
  Cantidad de llaves: Abiertas(8)-Cerradas(8) | Lineas Totales: 55

¿Quién está conectado?

En total hay 0 usuarios conectados :: 0 registrados, 0 ocultos y 0 invitados (basados en usuarios activos en los últimos 5 minutos)
La mayor cantidad de usuarios identificados fue 855 el 27 May 2018 00:03

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados