Programación en Pawn - SAMP

(Pregunta) - ¿Como colocar Zonas seguras? GM OZ

¿Tienes dudas sobre un código? Consúltalas aquí y aprende cómo se solucionan diferentes tipos de errores.
Reglas del Foro

  • A la hora de realizar su pregunta, especifique bien los detalles y tenga buena ortografía, de esa manera el resto de los usuarios podrán entender su pregunta.
  • Recuerde proporcionar el código que le trae problemas y sus respectivos errores utilizando el BBCode [Pawn]Código aquí[/Pawn] en su mensaje.
  • En esta sección, sólo podrás publicar preguntas asociadas a programación en PAWN ("¿Cuál es la diferencia entre new y static?"), más no temas relacionados a pedir códigos ("¿Me pueden pasar el sistema de 'X' servidor?"). (Ir a Pedidos para publicar estos temas).
  • Si tu pregunta es relacionada con un GM publicado en PawnScript, no crees tu pregunta en esta sección, créala en el mismo tema desde donde obtuviste el GameMode.
  • Evita colocar títulos como: "[Pregunta]", "[Duda]", "[Ayuda]", etc. Los títulos deben ser descriptivos.
  • Si la pregunta es respondida, no modifiques el título ni el contenido de los mensajes del tema. Quizás le pueda servir a alguien más en otro momento.
  • Si la pregunta es respondida, el tema será movido a "Preguntas Solucionadas".
  • Si la pregunta no cumple con alguna de las reglas antes mencionadas o con las Normas del foro, el tema será movido a "Preguntas Cerradas" o a la Papelera.

Moderador: Ayudantes

TITULO

MarkingMZ escribió:
12 Jun 2018 23:56
TITULO

Algo así?
 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

new TuZona;

public OnGameModeInit()
{
        TuZona = CreateDynamicRectangle(minx, miny, maxx, maxy, -1, -1, -1);
  
    return 1;
}

public OnPlayerEnterDynamicArea(playerid, areaid)
{
    if(areaid == TuZona)
    {
      GameTextForPlayer(playerid, "~w~Has entrado a una zona pacifica, ~r~todas tus armas fueron removidas!", 4000, 3);//texto que aparecerá en la pantalla del jugador
      ResetPlayerWeapons(playerid);//Le quitará las armas
    }
    return 1;
}

public OnPlayerLeaveDynamicArea(playerid, areaid)
{
       if(areaid == TuZona)
       {
      	GameTextForPlayer(playerid, "~w~Has salido de la zona pacifica, ~b~armas permitidas!", 4000, 3);//Texto que aparecerá
        //puedes agregar más funciones como GivePlayerWeapon etc. 
        }
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 28
Post: http://forum.sa-mp.com/showthread.php?t=235097
Alexz escribió:
13 Jun 2018 00:04
MarkingMZ escribió:
12 Jun 2018 23:56
TITULO

Algo así?
 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

new TuZona;

public OnGameModeInit()
{
        TuZona = CreateDynamicRectangle(minx, miny, maxx, maxy, -1, -1, -1);
  
    return 1;
}

public OnPlayerEnterDynamicArea(playerid, areaid)
{
    if(areaid == TuZona)
    {
      GameTextForPlayer(playerid, "~w~Has entrado a una zona pacifica, ~r~todas tus armas fueron removidas!", 4000, 3);//texto que aparecerá en la pantalla del jugador
      ResetPlayerWeapons(playerid);//Le quitará las armas
    }
    return 1;
}

public OnPlayerLeaveDynamicArea(playerid, areaid)
{
       if(areaid == TuZona)
       {
      	GameTextForPlayer(playerid, "~w~Has salido de la zona pacifica, ~b~armas permitidas!", 4000, 3);//Texto que aparecerá
        //puedes agregar más funciones como GivePlayerWeapon etc. 
        }
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 28
Post: http://forum.sa-mp.com/showthread.php?t=235097
quiero que sea como FZ, si pegas en una Zona segura, te da cargos etc..
MarkingMZ escribió:
13 Jun 2018 12:54
Alexz escribió:
13 Jun 2018 00:04
MarkingMZ escribió:
12 Jun 2018 23:56
TITULO

Algo así?
 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

new TuZona;

public OnGameModeInit()
{
        TuZona = CreateDynamicRectangle(minx, miny, maxx, maxy, -1, -1, -1);
  
    return 1;
}

public OnPlayerEnterDynamicArea(playerid, areaid)
{
    if(areaid == TuZona)
    {
      GameTextForPlayer(playerid, "~w~Has entrado a una zona pacifica, ~r~todas tus armas fueron removidas!", 4000, 3);//texto que aparecerá en la pantalla del jugador
      ResetPlayerWeapons(playerid);//Le quitará las armas
    }
    return 1;
}

public OnPlayerLeaveDynamicArea(playerid, areaid)
{
       if(areaid == TuZona)
       {
      	GameTextForPlayer(playerid, "~w~Has salido de la zona pacifica, ~b~armas permitidas!", 4000, 3);//Texto que aparecerá
        //puedes agregar más funciones como GivePlayerWeapon etc. 
        }
	return 1;
}
  Cantidad de llaves: Abiertas(5)-Cerradas(5) | Lineas Totales: 28
Post: http://forum.sa-mp.com/showthread.php?t=235097
quiero que sea como FZ, si pegas en una Zona segura, te da cargos etc..
Él te ha dado una buena base de como empezar, ya tu debes agregar tu variable de cargos y esas cosas que quieres.
Podrías hacer algo así para lo de los cargos.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//Cuando ingresa a un area segura.
SetPVarInt(playerid, "EnAreaSegura", 1);

//Cuando sale
SetPVarInt(playerid, "EnAreaSegura", 0);

//En OnPlayerTakeDamage, luego de verificar que issuerid sea valido
if(GetPVarInt(issuerid, "EnAreaSegura") == 1){
	SetPlayerWantedLevel(issuerid, 6);
	new name[MAX_PLAYER_NAME]; GetPlayerName(issuerid, name, MAX_PLAYER_NAME);
	new s[128]; format(s, 128, "[RADIO]: %s agredio a una persona en un area segura", name);
	foreach(new i : Player){
		if(Info[i][EsPD] == 1) { SendClientMessage(playerid, -1, s);
		}
	}
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 16
FedeNet escribió:
13 Jun 2018 18:28
Podrías hacer algo así para lo de los cargos.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//Cuando ingresa a un area segura.
SetPVarInt(playerid, "EnAreaSegura", 1);

//Cuando sale
SetPVarInt(playerid, "EnAreaSegura", 0);

//En OnPlayerTakeDamage, luego de verificar que issuerid sea valido
if(GetPVarInt(issuerid, "EnAreaSegura") == 1){
	SetPlayerWantedLevel(issuerid, 6);
	new name[MAX_PLAYER_NAME]; GetPlayerName(issuerid, name, MAX_PLAYER_NAME);
	new s[128]; format(s, 128, "[RADIO]: %s agredio a una persona en un area segura", name);
	foreach(new i : Player){
		if(Info[i][EsPD] == 1) { SendClientMessage(playerid, -1, s);
		}
	}
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 16
Emmm, utilizar PVar no es recomendable por la velocidad.

https://wiki.sa-mp.com/wiki/Per-player_variable_system

Saludos.
Alfon escribió:
13 Jun 2018 18:42
FedeNet escribió:
13 Jun 2018 18:28
Podrías hacer algo así para lo de los cargos.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//Cuando ingresa a un area segura.
SetPVarInt(playerid, "EnAreaSegura", 1);

//Cuando sale
SetPVarInt(playerid, "EnAreaSegura", 0);

//En OnPlayerTakeDamage, luego de verificar que issuerid sea valido
if(GetPVarInt(issuerid, "EnAreaSegura") == 1){
	SetPlayerWantedLevel(issuerid, 6);
	new name[MAX_PLAYER_NAME]; GetPlayerName(issuerid, name, MAX_PLAYER_NAME);
	new s[128]; format(s, 128, "[RADIO]: %s agredio a una persona en un area segura", name);
	foreach(new i : Player){
		if(Info[i][EsPD] == 1) { SendClientMessage(playerid, -1, s);
		}
	}
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 16
Emmm, utilizar PVar no es recomendable.

https://wiki.sa-mp.com/wiki/Per-player_variable_system

Saludos.
En realidad, depende del uso.

La diferencia de velocidad es bastante pequeña en realidad, y comparemos.

Si usas "new Variable[MAX_PLAYERS]" siendo MAX_PLAYERS 100, creaste 100 variables integers, que se resume en 100 celdas de memoria que usuaras.
Si hubieran conectado 100 usuarios, seria mas rapido que las pVars, en cambio, si hay 20-30, son mejores las pVars, puesto estas ahorrando memoria.

¿Quién está conectado?

En total hay 2 usuarios conectados :: 1 registrado, 0 ocultos y 1 invitado (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: Google [Bot] y 1 invitado