[Ayuda]Sistema de carcel
#1

Hola.. estabamos haciendo un sistema de carcel.. quiero saber si me pueden ayudar .. el problema es que cuando vos entras a la carcel.. entra lo mas bien.. pero despues no sale nunca mas de la carcel.. y otra cosa mas.. que cuando entre a la carcel le saquen las armas.. aver si me pueden ayudar se los agradeceria

pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#define FILTERSCRIPT
#define Fr 0x008CCEFF

enum pInfo
{
Carcel,
CarcelTiempo
}
forward Segundo();
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnGameModeInit()
{
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
}

public OnPlayerSpawn(playerid)
{
  if(PlayerInfo[playerid][Carcel] == 1)
  {
    PlayerInfo[playerid][CarcelTiempo] = 3*60;
    SetPlayerInterior(playerid, 6);
        SetPlayerPos(playerid,264.6288,77.5742,1001.0391);
    SendClientMessage(playerid, Fr,"Continuas preso");
    return true;
  }
  return 1;
}


public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerInterior(killerid) != 0)
  {
    PlayerInfo[killerid][CarcelTiempo] = 5*60;
    PlayerInfo[killerid][Carcel] = 1;

    new Nombre[MAX_PLAYER_NAME], string[256];
    GetPlayerName(killerid, Nombre, sizeof(Nombre));

        SetPlayerInterior(killerid, 6);
        SetPlayerPos(killerid, 264.6288,77.5742,1001.0391);
    SetCameraBehindPlayer(killerid);
    GameTextForPlayer(killerid,"~r~Encarcelado",3000,1);

    format(string,sizeof(string),"%s Fue automaticamente encarcelado. | Razon: Matar en interiores", Nombre);
    SendClientMessageToAll(Fr, string);
  }
  return 1;
}
public Segundo()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
          if(PlayerInfo[i][Carcel] == 1)
          {
                if(PlayerInfo[i][CarcelTiempo] <= 0)
                {
                    PlayerInfo[i][Carcel] = 0;
                    SetPlayerInterior(i, 6);
                    SetPlayerPos(i,246.8439,70.0776,1003.6406);
                    SendClientMessage(i,Fr,"Tiempo cumplido, eres libre.");
                    GameTextForPlayer(i, "~g~Libre ~n~~w~Cumple las reglas", 5000, 1);
                }
            }
        }
    }
}
Код:
* Nota del moderador: La prуxima recuerda poner el cуdigo entre las tags
Reply
#2

Intenta con esto:


Код:
 // This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#define FILTERSCRIPT
#define Fr 0x008CCEFF

enum pInfo
{
Carcel,
CarcelTiempo
}
forward Segundo();
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerSpawn(playerid)
{
  if(PlayerInfo[playerid][Carcel] == 1)
  {
    PlayerInfo[playerid][CarcelTiempo] = 3*60;
    SetPlayerInterior(playerid, 6);
		SetPlayerPos(playerid,264.6288,77.5742,1001.0391);
    SendClientMessage(playerid, Fr,"Continuas preso");
    return true;
  }
  return 1;
}


public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerInterior(killerid) != 0)
  {
    PlayerInfo[killerid][CarcelTiempo] = 5*60;
    PlayerInfo[killerid][Carcel] = 1;

    new Nombre[MAX_PLAYER_NAME], string[256];
    GetPlayerName(killerid, Nombre, sizeof(Nombre));

		SetPlayerInterior(killerid, 6);
		SetPlayerPos(killerid, 264.6288,77.5742,1001.0391);
    SetCameraBehindPlayer(killerid);
ResetPlayerWeapons(playerid);
    GameTextForPlayer(killerid,"~r~Encarcelado",3000,1);

    format(string,sizeof(string),"%s Fue automaticamente encarcelado. | Razon: Matar en interiores", Nombre);
    SendClientMessageToAll(Fr, string);
  }
  return 1;
}
public Segundo()
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
		  if(PlayerInfo[i][Carcel] == 1)
		  {
				if(PlayerInfo[i][CarcelTiempo] <= 0)
				{
					PlayerInfo[i][Carcel] = 0;
					SetPlayerInterior(i, 6);
					SetPlayerPos(i,246.8439,70.0776,1003.6406);
					SendClientMessage(i,Fr,"Tiempo cumplido, eres libre.");
					GameTextForPlayer(i, "~g~Libre ~n~~w~Cumple las reglas", 5000, 1);
				}
			}
		}
	}
}
Reply
#3

No , no me anduvo.. sigue con las armas en la carcel..
Reply
#4

a ya aver con esto:


Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#define FILTERSCRIPT
#define Fr 0x008CCEFF

enum pInfo
{
Carcel,
CarcelTiempo
}
forward Segundo();
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerSpawn(playerid)
{
  if(PlayerInfo[playerid][Carcel] == 1)
  {
    PlayerInfo[playerid][CarcelTiempo] = 3*60;
    SetPlayerInterior(playerid, 6);
    ResetPlayerWeapons(playerid);
		SetPlayerPos(playerid,264.6288,77.5742,1001.0391);
    SendClientMessage(playerid, Fr,"Continuas preso");
    return true;
  }
  return 1;
}


public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerInterior(killerid) != 0)
  {
    PlayerInfo[killerid][CarcelTiempo] = 5*60;
    PlayerInfo[killerid][Carcel] = 1;

    new Nombre[MAX_PLAYER_NAME], string[256];
    GetPlayerName(killerid, Nombre, sizeof(Nombre));

		SetPlayerInterior(killerid, 6);
		SetPlayerPos(killerid, 264.6288,77.5742,1001.0391);
    SetCameraBehindPlayer(killerid);
ResetPlayerWeapons(playerid);
    GameTextForPlayer(killerid,"~r~Encarcelado",3000,1);

    format(string,sizeof(string),"%s Fue automaticamente encarcelado. | Razon: Matar en interiores", Nombre);
    SendClientMessageToAll(Fr, string);
  }
  return 1;
}
public Segundo()
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
		  if(PlayerInfo[i][Carcel] == 1)
		  {
				if(PlayerInfo[i][CarcelTiempo] <= 0)
				{
					PlayerInfo[i][Carcel] = 0;
					SetPlayerInterior(i, 6);
                    ResetPlayerWeapons(playerid);
					SetPlayerPos(i,246.8439,70.0776,1003.6406);
					SendClientMessage(i,Fr,"Tiempo cumplido, eres libre.");
					GameTextForPlayer(i, "~g~Libre ~n~~w~Cumple las reglas", 5000, 1);
				}
			}
		}
	}
}
Reply
#5

El que quite las armas tienes que hacerlo despuйs de teletransportarlo ya que al morir y volver al lugar de spawn obtiene las armas que les des a los jugadores, lo cual haz que le quiten las armas despuйs de haberlo enviado a la cбrcel:

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerInterior(killerid) != 0)
  {
    PlayerInfo[killerid][CarcelTiempo] = 5*60;
    PlayerInfo[killerid][Carcel] = 1;

    new Nombre[MAX_PLAYER_NAME], string[256];
    GetPlayerName(killerid, Nombre, sizeof(Nombre));
    SetPlayerInterior(killerid, 6); //Teletransporte
    SetPlayerPos(killerid, 264.6288,77.5742,1001.0391);
    SetCameraBehindPlayer(killerid);
    GameTextForPlayer(killerid,"~r~Encarcelado",3000,1);
    ResetPlayerWeapons(killerid); //Le quitamos las armas

    format(string,sizeof(string),"%s Fue automaticamente encarcelado. | Razon: Matar en interiores", Nombre);
    SendClientMessageToAll(Fr, string);
    }
    return 1;
}
Reply
#6

Tiene 1 error

pawn Код:
C:\Documents and Settings\Administrador\Escritorio\CARCEL.pwn(79) : error 017: undefined symbol "playerid"
Este es de Angel-laam
Reply
#7

Ahi me anda el de CrisitanTdjЎЎЎ , pero tiene otro problema .. no sale mas de la carcel..
Reply
#8

Quote:
Originally Posted by Earth
Ahi me anda el de CrisitanTdjЎЎЎ , pero tiene otro problema .. no sale mas de la carcel..
sera porque nunca seteaste un timer para liberarlo
Reply
#9

Informaciуn del jugador:

pawn Код:
enum pInfo
{
  carcel,
  CarcelTiempo
}
Sistema:

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerInterior(killerid) != 0)
  {
    PlayerInfo[killerid][CarcelTiempo] = 5*60;
    PlayerInfo[killerid][Carcel] = 1;

    new Nombre[MAX_PLAYER_NAME], string[256];
    GetPlayerName(killerid, Nombre, sizeof(Nombre));
    SetPlayerInterior(killerid, 6); //Teletransporte
    SetPlayerPos(killerid, 264.6288,77.5742,1001.0391);
    SetCameraBehindPlayer(killerid);
    GameTextForPlayer(killerid,"~r~Encarcelado",3000,1);
    ResetPlayerWeapons(killerid); //Le quitamos las armas
    CarcelTimer[playerid] = SetTimerEx("SacarCarcel",PlayerInfo[playerid][CarcelTiempo],0,"d",playerid); //Timer

    format(string,sizeof(string),"%s Fue automaticamente encarcelado. | Razon: Matar en interiores", Nombre);
    SendClientMessageToAll(Fr, string);
    }
    return 1;
}
Formamos el timer:

pawn Код:
forward SacarCarcel(playerid);
public SacarCarcel(playerid)
{
  KillTimer( CarcelTimer[playerid] );
  PlayerInfo[playerid][CarcelTiempo] = 0; PlayerInfo[playerid][Carcel] = 0;
  SetPlayerInterior(playerid,0); SetPlayerPos(playerid, 0.0, 0.0, 0.0); SpawnPlayer(playerid);
  PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  GameTextForPlayer(playerid,"~g~Liberado",3000,3);
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)