[Duda] Zonas seguras
#1

Hola a todos, estoy en un proyecto de un servidor rp con un amigo y estoy haciendo las zonas seguras y resulta que tengo un problema. El compilador no tira errores, pero InGame no pasa lo que supuse que deberнa pasar..

La intenciуn era que si le disparas a alguien en una zona segura (dependiendo con que arma) te pone 1 o 2 cargos. Aca les paso mi code para que vean. Aclaro, use el native OnPlayerEnterDynamicArea (la funciуn es CreateDynamicPolygon) del plugin Streamer para crear la zona:


Код:
#include <a_samp>
#include <streamer>

new ZonaSegura1;
La variable global y el inc.

Код:
public OnGameModeInit()
{
	new  Float:Points[18] = {
	-1771.5735, -185.3769, -1749.3557, -185.9924, -1615.5680, -52.3680, -1658.8107,-8.5426, -1503.7676, 147.1502,
	-1526.1992, 169.7166, -1606.1241, 175.9710, -1701.9905, 116.4776, -1755.5844, 74.5980};
	ZonaSegura1 = CreateDynamicPolygon(Points, 5.0, 15.0, sizeof(Points));
	return 1;
}
Las variables necesarias para crear el poligono que serб la zona segura.

Y aquн mi idea improvisada:

Код:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
  if(IsPlayerInDynamicArea(playerid, ZonaSegura1))
  {
    if(playerid != INVALID_PLAYER_ID)
    {
      if(weaponid != 16 || 26 || 27 || 29 || 30 || 31 || 34)
      {
        SetPlayerWantedLevel(issuerid, 1);
      }
    }
    else SetPlayerWantedLevel(issuerid, 2);
  }
}
El compilador no tira errores, pero ingame la testee y no funciona, no pone los cargos.. Si alguno sabe que puede haber pasado, le agradecerнa que responda. Gracias de antemano.
Reply
#2

pawn Код:
#include <a_samp>
#include <streamer>
new ZonaSeguras;

public OnGameModeInit() {
    //Crea Una Zona en Forma rectangular
    ZonaSeguras=CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
    return true;
}
public OnGameModeExit() {
    //Destruye la Zona Creada
    DestroyDynamicArea(ZonaSeguras);
    return true;
}
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {
    // -- FUNCION --
    if(playerid != INVALID_PLAYER_ID) { //Verifica que el jugador que daсa sea valido
        if(IsPlayerInDynamicArea(playerid, ZonaSeguras)) { //Verifica que el jugador que daсa este en la zona correspondioente
            if(weaponid == 16 || 26 || 27 || 29 || 30 || 31 || 34) { //Verifica que el jugador que daсa tenga las armas correspondiente
                SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1); //Le suma 1 score al jugador le daсa
                SetPlayerWantedLevel(damagedid, GetPlayerWantedLevel(damagedid)-1); //Le resta 1 score al jugador que fue daсado
            }
        } else { //Verifica que el jugador que daсa NO este en la zona correspondioente
            SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+2); //Le suma 2 score al jugador le daсa
            SetPlayerWantedLevel(damagedid, GetPlayerWantedLevel(damagedid)-2); //Le resta 2 score al jugador que fue daсado
        }
    }
    // -- FUNCION --
    return true;
}

https://sampwiki.blast.hk/wiki/OnPlayerGiveDamage_Es
Reply
#3

me pueden explicar un poco
Reply
#4

Ese CreateDynamicPolygon no va a funcionar.

CreateDynamicPolygon crea un poligono con bordes en todos los puntos que insertas. Para que sea un poligono completo de verdad el ultimo punto debe ser igual al primero, caso que no se cumple en tu codigo.

Usa CreateDynamicRectangle para rectangulos/cuadrados (minx, miny, maxx, maxy)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)