[Ajuda] estou a procura de um sistema de safe zone
#1

alguem consegue me passar um sistema de safe zone que eu queria proibir as armas em determinados locais.
Reply
#2

Pode usar:
Код:
IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)
E um temporizador para desarmar usando:
Код:
SetPlayerArmedWeapon(playerid, 0);
Reply
#3

PHP код:
new 
    
safe_zone,
    
sabe_zone_timer;
new 
    
Float:minx 1248.011,
    
Float:miny 2072.804,
    
Float:maxx 1439.348,
    
Float:maxy 2204.319;
public 
OnGameModeInit()
{
    
/*
            minY
             v
      minX > *-------------
             |            |
             |  gangzone  |
             |   center   |
             |            |
             -------------* < maxX
                          ^
                          maxY     
    */
    
safe_zone GangZoneCreate(minxminymaxxmaxy);
    return 
true;
}
public 
OnPlayerConnect(playerid)
{
    
sabe_zone_timer SetTimerEx("OnPlayerEnterGangZone"1000true"i"playerid);
    return 
true;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
#pragma unused reason
    
KillTimer(sabe_zone_timer);
    return 
true;
}
forward OnPlayerEnterGangZone(playerid);
public 
OnPlayerEnterGangZone(playerid)
{
    new 
Float:xFloat:yFloat:z;
    
GetPlayerPos(playeridxyz);
    if(
<= maxx && >= minx && <= maxy && >= minx)
    {
        
SetPlayerArmedWeapon(playerid0);
        
SendClientMessage(playerid, -1"Vocк nгo pode usar armas nesta area.");
    }
    return;

Reply
#4

aki esta dando um erro com esta linha
safe_zone = GangZoneCreate(minx, miny, maxx, maxy);
.pwn(450 : warning 204: symbol is assigned a value that is never used: "safe_zone"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Header size: 13440 bytes
Code size: 2538676 bytes
Data size: 10192044 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:12760544 bytes

1 Warning.
Reply
#5

Antes de mais nada, entenda:
Warning = aviso
Error = erro

OnGameModeExit:
Код:
GangZoneDestroy(safe_zone );
Reply
#6

Quote:
Originally Posted by Naine
Посмотреть сообщение
PHP код:
new 
    
safe_zone,
    
sabe_zone_timer;
new 
    
Float:minx 1248.011,
    
Float:miny 2072.804,
    
Float:maxx 1439.348,
    
Float:maxy 2204.319;
public 
OnGameModeInit()
{
    
/*
            minY
             v
      minX > *-------------
             |            |
             |  gangzone  |
             |   center   |
             |            |
             -------------* < maxX
                          ^
                          maxY     
    */
    
safe_zone GangZoneCreate(minxminymaxxmaxy);
    return 
true;
}
public 
OnPlayerConnect(playerid)
{
    
sabe_zone_timer SetTimerEx("OnPlayerEnterGangZone"1000true"i"playerid);
    return 
true;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
#pragma unused reason
    
KillTimer(sabe_zone_timer);
    return 
true;
}
forward OnPlayerEnterGangZone(playerid);
public 
OnPlayerEnterGangZone(playerid)
{
    new 
Float:xFloat:yFloat:z;
    
GetPlayerPos(playeridxyz);
    if(
<= maxx && >= minx && <= maxy && >= minx)
    {
        
SetPlayerArmedWeapon(playerid0);
        
SendClientMessage(playerid, -1"Vocк nгo pode usar armas nesta area.");
    }
    return;

Em vez de bloquear usando contagem que й super desnecessбrio e ineficiente em relaзгo aos atrasos, use dessa forma: Crie uma verificaзгo na OnPlayerKeyStateChange se o jogador pressionou o botгo de disparo dentro da бrea (MaxX, MinX, MaxY, MinY). Ou seja, toda vez que o jogador TENTAR disparar dentro da бrea proibida a arma sairб da mгo.

PHP код:
    public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
        switch ( 
newkeys ){
            case 
128:{
                if(
GetPlayerWeapon(playerid) != 0)
                    if(
Variavel_AreaProibida) {
                        
SetPlayerArmedWeapon(playerid0);
                        
ClearAnimations(playerid);
                        return 
GameTextForPlayer(playerid,"~r~Voce nao pode usar esta arma em arena proibida!"50001);
                    }
                    
            }
        }
        return 
1;
    } 
Reply
#7

tenta assim:

PHP код:
new AreaProibida;
public 
OnGameModeInit(){
    
AreaProbida CreateDynamicSphere(X,Y,Z10, -1, -1, -1);
    return 
1;
}
public 
OnPlayerEnterDynamicArea(playeridareaid){
    if(
areaid == AreaProibida){
        
//Aqui a funзгo para tirar as armas
        
SetPlayerArmedWeapon(playerid0);
        
SendClientMessage(playerid0xFF00FFFF"Esse local й Proibido o uso de armas!");
    }
    return 
1;

Reply
#8

Nгo entendi como posso botar akelas coordenadas
Reply
#9

Alguem me ensina a pegar as coordenadas assim?
Reply
#10

Vб no Local aonde vocк quer, que o player nгo tenha arma na mгo
e digita /save
Em Seguida vб em Documentos > GTA San Andreas User Files > SAMP > savedpositions.txt
Quando abrir o Arquivo .txt
Pegue as Coordenadas apуs
Quote:

AddPlayerClass(23,X,Y,Z

Use o Cуdigo do Coringa_Vilao
Em
Quote:

AreaProbida = CreateDynamicSphere(X,Y,Z,10, -1, -1, -1

Cole apenas as Coordenadas X,Y,Z
Obs: nгo apague apartir do Nъmero 10 !
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)