#define MAX_CPS 500 //Change it if you need more or less
enum Info //CP ENUM
{
Float:CPX, //Xpos
Float:CPY, //Ypos
Float:CPZ, //Zpos
Float:Size, //Size of the CP
Float:Viewdist //Viewdistance
};
new CPID = -1; //CPID
new PlayerCP[MAX_PLAYERS] = -1; //PlayerCheckpoints (Only one can be active at once).
new CPinfo[MAX_CPS][Info]; //CPINFO
new CPActive[MAX_PLAYERS][MAX_CPS]; //CPActive for player
new CPDisabled[MAX_CPS]; //For disabling checkpoints
stock CreateCheckpoint(playerid = -1, Float:cpX, Float:cpY, Float:cpZ, Float:cpSize, Float:viewdist)
stock CreateCheckpoint(playerid, Float:cpX, Float:cpY, Float:cpZ, Float:cpSize, Float:viewdist = 35.0)
{
CPID ++; //CPID
CPinfo[CPID][CPX] = cpX; //CPX Pos
CPinfo[CPID][CPY] = cpY; //CPY Pos
CPinfo[CPID][CPZ] = cpZ; //CPZ Pos
CPinfo[CPID][Size] = cpSize; //Checkpoint Size
CPinfo[CPID][Viewdist] = viewdist; //View distance
if(playerid != -1)
{
CPActive[playerid][CPID] ++; //Makes the player able to view that checkpoint
}
if(playerid == -1)
{
for(new i; i<MAX_PLAYERS; i++)
{
CPActive[i][CPID] ++;
}
}
return CPID;
}
SetTimer("Stream", 300, true);
forward Stream();
public Stream()
{
for(new i; i < MAX_PLAYERS; i ++) //Loops through 500 players
{
if(IsPlayerConnected(i)) //Brings the 500 players down to the online ones
{
PlayerCP[i] = -1;
for(new j; j < CPID + 1; j ++) //Loops through all CP's
{
if(CPDisabled[j] == 0) //Checks if the CP is disabled.
{
if(IsPlayerInRangeOfPoint(i, CPinfo[j][Viewdist], CPinfo[j][CPX], CPinfo[j][CPY], CPinfo[j][CPZ]) && CPActive[i][j] == 1) //Is the player in range of a CP
{
SetPlayerCheckpoint(i, CPinfo[j][CPX], CPinfo[j][CPY], CPinfo[j][CPZ], CPinfo[j][Size]);//Sets the player checkpoint
PlayerCP[i] = j; //Sets the player checkpoint to that in the variable.
printf("PCP:%d", j);
}
}
}
if(PlayerCP[i] == -1) //If there is no CP close enough
{
print("NAHBRO");
PlayerCP[i] = -1; //PlayerCP isn't anything
DisablePlayerCheckpoint(i); //Disable any checkpoint visible.
continue;
}
}
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(PlayerCP[playerid] != -1) return OnPlayerEnterStreamedCheckpoint(playerid, PlayerCP[playerid]);
return 1;
}
stock OnPlayerEnterStreamedCheckpoint(playerid, CPID)
{
}
new CPS1, CPS2, CPS3;
CPS1 = CreateCheckpoint(-1, 1000, 1000, 25, 3, 50);
CPS2 = CreateCheckpoint(-1, 1000, 1100, 25, 3, 50);
CPS3 = CreateCheckpoint(-1, 1000, 1200, 25, 3, 50);
//Etc...
stock OnPlayerEnterStreamedCheckpoint(playerid, CPiD)
{
if(CPiD == CPS1)
{
GameTextForPlayer(playerid, "You have entered checkpoint 1!", 3000, 3);
}
if(CPiD == CPS2)
{
GameTextForPlayer(playerid, "You have entered checkpoint 2!", 3000, 3);
}
if(CPiD == CPS3)
{
GameTextForPlayer(playerid, "You have entered checkpoint 3!", 3000, 3);
}
//ETC...
}
stock DestroyCheckpoint(CPiD) //Destory's a checkpoint
{
CPDisabled[CPiD] = 1;
for(new i; i< MAX_PLAYERS; i++)
{
if(PlayerCP[i] == CPiD)
{
DisablePlayerCheckpoint(i);
}
}
}
stock TogglePlayerCheckpoint(playerid, CPiD, toggled) //Toggles a checkpoint for a player 0 = Not active, 1 = active :)
{
CPActive[playerid][CPiD] = toggled;
}
#include <a_samp>
#define MAX_CPS 500 //Change it if you need more or less
enum Info //CP ENUM
{
Float:CPX, //Xpos
Float:CPY, //Ypos
Float:CPZ, //Zpos
Float:Size, //Size of the CP
Float:Viewdist //Viewdistance
};
new CPID = -1; //CPID
new PlayerCP[MAX_PLAYERS] = -1; //PlayerCheckpoints (Only one can be active at once).
new CPinfo[MAX_CPS][Info]; //CPINFO
new CPActive[MAX_PLAYERS][MAX_CPS]; //CPActive for player
new CPDisabled[MAX_CPS]; //For disabling checkpoints
stock CreateCheckpoint(playerid, Float:cpX, Float:cpY, Float:cpZ, Float:cpSize, Float:viewdist = 35.0)
{
CPID ++; //CPID
CPinfo[CPID][CPX] = cpX; //CPX Pos
CPinfo[CPID][CPY] = cpY; //CPY Pos
CPinfo[CPID][CPZ] = cpZ; //CPZ Pos
CPinfo[CPID][Size] = cpSize; //Checkpoint Size
CPinfo[CPID][Viewdist] = viewdist; //View distance
if(playerid != -1)
{
CPActive[playerid][CPID] ++; //Makes the player able to view that checkpoint
}
if(playerid == -1)
{
for(new i; i<MAX_PLAYERS; i++)
{
CPActive[i][CPID] ++;
}
}
return CPID;
}
new CPS1, CPS2, CPS3;
public OnFilterScriptInit()
{
SetTimer("Stream", 1000, true);
CPS1 = CreateCheckpoint(-1, 2317.130615, 692.398498, 11.460937, 3.0, 30.0);
CPS2 = CreateCheckpoint(-1, 2396.482666, 691.487060, 11.453125, 3.0, 30.0);
CPS3 = CreateCheckpoint(-1, 2396.482666, 697.487060, 11.453125, 3.0, 30.0);
return 1;
}
forward Stream();
public Stream()
{
for(new i; i < MAX_PLAYERS; i ++) //Loops through 500 players
{
if(IsPlayerConnected(i)) //Brings the 500 players down to the online ones
{
PlayerCP[i] = -1;
for(new j; j < CPID + 1; j ++) //Loops through all CP's
{
if(CPDisabled[j] == 0) //Checks if the CP is disabled.
{
if(IsPlayerInRangeOfPoint(i, CPinfo[j][Viewdist], CPinfo[j][CPX], CPinfo[j][CPY], CPinfo[j][CPZ]) && CPActive[i][j] == 1) //Is the player in range of a CP
{
SetPlayerCheckpoint(i, CPinfo[j][CPX], CPinfo[j][CPY], CPinfo[j][CPZ], CPinfo[j][Size]);//Sets the player checkpoint
PlayerCP[i] = j; //Sets the player checkpoint to that in the variable.
printf("PCP:%d", j);
}
}
}
if(PlayerCP[i] == -1) //If there is no CP close enough
{
print("NAHBRO");
PlayerCP[i] = -1; //PlayerCP isn't anything
DisablePlayerCheckpoint(i); //Disable any checkpoint visible.
continue;
}
}
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(PlayerCP[playerid] != -1) return OnPlayerEnterStreamedCheckpoint(playerid, PlayerCP[playerid]);
return 1;
}
stock OnPlayerEnterStreamedCheckpoint(playerid, CPiD)
{
printf("CPID: %d", CPiD);
if(CPiD == CPS1)
{
GameTextForPlayer(playerid, "CP1", 2000, 3);
}
if(CPiD == CPS2)
{
GameTextForPlayer(playerid, "CP2", 2000, 3);
}
if(CPiD == CPS3)
{
GameTextForPlayer(playerid, "CP3", 2000, 3);
}
return 1;
}
stock DestroyCheckpoint(CPiD) //Destory's a checkpoint
{
CPDisabled[CPiD] = 1;
}
stock TogglePlayerCheckpoint(playerid, CPiD, toggled) //Toggles a checkpoint for a player 0 = Not active, 1 = active :)
{
CPActive[playerid][CPiD] = toggled;
}
stock GetPlayerCheckpointID(playerid)
{
return PlayerCP[playerid];
}
stock IsAnyoneStreamingCP(CPiD)
{
for(new i; i<MAX_PLAYERS; i++)
{
if(PlayerCP[i] == CPiD) return i;
}
return 0;
}
Originally Posted by V1ceC1ty
Very nice again
|
Originally Posted by _Saif_
nice tutorial
|
Originally Posted by [03
Garsino ]
Very nice again |
Originally Posted by HydraX
Once again this is nice
|
Originally Posted by [EFS
]
How to make to checkpoint will be just for ONE player not for evryone.... what i need to put instead of -1 ?? |
Originally Posted by [HiC
TheKiller ]
Quote:
|
if(strcmp("/quit", cmdtext, true, 10) == 0)
{
CPDisabled[CPiD] = 44;
CPDisabled[CPiD] = 45;
CPDisabled[CPiD] = 46;
CPDisabled[CPiD] = 47;
CPDisabled[CPiD] = 48;
CPDisabled[CPiD] = 49;
CPDisabled[CPiD] = 50;
CPDisabled[CPiD] = 51;
CPDisabled[CPiD] = 52;
Originally Posted by [EFS
]
Quote:
pawn Код:
C:\Users\NASTIE\Desktop\ExtremeFun\filterscripts\C heckpoint.pwn(602) : error 017: undefined symbol "CPiD" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Error. But when i type that command, checkpoints are still visible on map... Can you help me... |
Originally Posted by [EFS
]
Quote:
|
CPDisabled[THE_CHECKPOINT_ID] = true;
DestroyCheckpoint(THE_CHECKPOINT_ID); //DestroyCheckpoint function is posted in the first post
if(strcmp("/otkaz1", cmdtext, true, 10) == 0)
{
if(kam1[playerid] == 0 ) return SendClientMessage(playerid ,0xFF0000FF, "Nisi zaposlen!");
else
{
SendClientMessage(playerid, 0xFF5A00FF, "------------------------------------------------");
SendClientMessage(playerid, 0xFFFFFFFF, "Dao si otkaz.");
SendClientMessage(playerid, 0xFFFFFFFF, "Vise ne radis kao vozac kamiona!");
SendClientMessage(playerid, 0xFFFFFFFF, ".:: EFS ::.");
SendClientMessage(playerid, 0xFF5A00FF, "------------------------------------------------");
new
string[128],
name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(string,sizeof string,"%s je dao otkaz",name);
SendClientMessageToAll(0x6400FFFF,string);
// Unisti!
DestroyCheckpoint(44);
DestroyCheckpoint(45);
DestroyCheckpoint(46);
DestroyCheckpoint(47);
DestroyCheckpoint(48);
DestroyCheckpoint(49);
DestroyCheckpoint(50);
DestroyCheckpoint(51);
DestroyCheckpoint(52);
DestroyCheckpoint(53);
// DISABLE!
CPDisabled[44] = true;
CPDisabled[45] = true;
CPDisabled[46] = true;
CPDisabled[47] = true;
CPDisabled[48] = true;
CPDisabled[49] = true;
CPDisabled[50] = true;
CPDisabled[51] = true;
CPDisabled[52] = true;
CPDisabled[53] = true;
}
return 1;
}
Originally Posted by ♣ Joker ♠
Quote:
And what should the code do ? If you want to disable the checkpoints you need to do pawn Код:
pawn Код:
The first OnPlayerEnterStreamedCheckpoint uses CPID (which should be CPiD) |
Originally Posted by [EFS
]
Not BAD but i make this command pawn Код:
|
new CP1 = CreateCheckpoint(....);
DestroyCheckpoint(CP1);