rendered paste body#include <a_samp>
#define TEAM_COP 1
new gCurrentCP[MAX_PLAYERS];
new gTeam [MAX_PLAYERS];
new bool:gJailed[MAX_PLAYERS];
main()
{
print("\n----------------------------------");
print(" This is a blank GameModeScript");
print("----------------------------------\n");
}
public timer() {
CheckPlayerLocations();
}
public OnGameModeInit()
{
print("GameModeInit()");
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(286, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
SetTimer("CheckPlayerLocations",200,1);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
printf("OnPlayerRequestClass(%d, %d)", playerid, classid);
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1955.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
if (classid == 1) {
gTeam[playerid] = TEAM_COP;
} else {
gTeam[playerid] = 0;
}
return 1;
}
public OnGameModeExit()
{
print("GameModeExit()");
return 1;
}
public OnPlayerConnect(playerid)
{
printf("OnPlayerConnect(%d)", playerid);
return 1;
}
public OnPlayerDisconnect(playerid)
{
printf("OnPlayerDisconnect(%d)", playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
printf("OnPlayerSpawn(%d)", playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);
return 1;
}
public OnVehicleSpawn(vehicleid)
{
printf("OnVehicleSpawn(%d)", vehicleid);
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
printf("OnVehicleDeath(%d, %d)", vehicleid, killerid);
return 1;
}
public OnPlayerText(playerid)
{
printf("OnPlayerText(%d)", playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[255],idx;
new pid;
cmd = strtok(cmdtext,idx);
if (strcmp(cmd, "/jail", true)==0)
{
if (gTeam[playerid] == TEAM_COP) {
cmd = strtok(cmdtext,idx);
if (!strlen(cmd)) {
SendClientMessage(playerid, 0xFFFF00FF, "* Syntax: /jail <playerid>");
return 1;
}
pid = strval(cmd);
if (IsPlayerConnected(pid)) {
if (gJailed[pid]) {
SendClientMessage(playerid, 0xFFFF00FF, "* This player is already jailed!");
} else {
if (IsPlayerInAnyVehicle(playerid)) {
RemovePlayerFromVehicle(playerid);
}
SetPlayerInterior(pid,10);
SetPlayerPos(pid,223.4799,111.2091,999.0156);
SetPlayerFacingAngle(playerid,0);
gJailed[pid] = true;
}
} else {
SendClientMessage(playerid, 0xFFFF00FF, "* This is not an active player!");
}
} else {
SendClientMessage(playerid, 0xFFFF00FF, "* You are not a cop!");
}
return 1;
}
if (strcmp(cmd, "/unjail", true)==0)
{
if (gTeam[playerid] == TEAM_COP) {
cmd = strtok(cmdtext,idx);
if (!strlen(cmd)) {
SendClientMessage(playerid, 0xFFFF00FF, "* Syntax: /unjail <playerid>");
return 1;
}
pid = strval(cmd);
if (IsPlayerConnected(pid)) {
if (!gJailed[pid]) {
SendClientMessage(playerid, 0xFFFF00FF, "* This player is not jailed!");
} else {
if (IsPlayerInAnyVehicle(playerid)) {
RemovePlayerFromVehicle(playerid);
}
SetPlayerInterior(pid,0);
SetPlayerPos(pid,1963.4655,1343.0079,16.5774);
SetPlayerFacingAngle(playerid,270);
gJailed[pid] = false;
}
} else {
SendClientMessage(playerid, 0xFFFF00FF, "* This is not an active player!");
}
} else {
SendClientMessage(playerid, 0xFFFF00FF, "* You are not a cop!");
}
return 1;
}
return 0;
}
public OnPlayerInfoChange(playerid)
{
printf("OnPlayerInfoChange(%d)");
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger);
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid);
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate);
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
DisablePlayerCheckpoint(playerid);
switch (gCurrentCP[playerid]) {
case 1: //cp to sf pd
{
SetPlayerInterior(playerid,10);
SetPlayerPos(playerid,246.40,110.84,1003.22);
}
case 2: //cp to hidden safehouse
{
SetPlayerInterior(playerid,12);
SetPlayerPos(playerid,2324.33,-1144.79,1050.71);
}
case 3: //cp out of sf pd
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,1961.1506,1345.8337,15.3746);
}
case 4: //cp out of hidden safehouse
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,1960.6218,1339.8765,15.3746);
}
}
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
printf("OnPlayerLeaveCheckpoint(%d)", playerid);
return 1;
}
public CheckPlayerLocations() {
new Float:X, Float:Y, Float:Z;
new currentplayer;
for (currentplayer = 0; currentplayer < MAX_PLAYERS; currentplayer++) {
GetPlayerPos(currentplayer, X, Y, Z);
if(IsPlayerInCircle(currentplayer, 1962.3502,1345.9735,4)) { //goto sf pd
if (gCurrentCP[currentplayer] != 1) {
SetPlayerCheckpoint(currentplayer,1962.5,1345.9735,16.0142,1);
gCurrentCP[currentplayer] = 1;
}
} else if (IsPlayerInCircle(currentplayer, 1962.5535,1339.8729,4)) { //goto hidden safehouse
if (gCurrentCP[currentplayer] != 2) {
SetPlayerCheckpoint(currentplayer,1962.5,1339.8729,16.0142,1);
gCurrentCP[currentplayer] = 2;
}
} else if (IsPlayerInCircle(currentplayer, 246.2313,108.8046,4)) { //go out of sf pd
if (gCurrentCP[currentplayer] != 3) {
SetPlayerCheckpoint(currentplayer,246.2313,108.8046,1003.2188,1);
gCurrentCP[currentplayer] = 3;
}
} else if (IsPlayerInCircle(currentplayer, 2324.5632,-1148.2930,4)) { //go out of hidden safehouse
if (gCurrentCP[currentplayer] != 4) {
SetPlayerCheckpoint(currentplayer,2324.5632,-1148.2930,1050.7101,1);
gCurrentCP[currentplayer] = 4;
}
} else {
DisablePlayerCheckpoint(currentplayer);
gCurrentCP[currentplayer] = 0;
}
}
return 1;
}
public IsPlayerInCircle(playerid,Float:x,Float:y,radius)
{
if(GetPlayerDistanceToPoint(playerid,x,y) < radius){
return 1;
}
return 0;
}
public GetPlayerDistanceToPoint(playerid,Float:x,Float:y)
{
new Float:x1,Float:y1,Float:z1;
new Float:tmpdis;
GetPlayerPos(playerid,x1,y1,z1);
tmpdis = floatsqroot(floatpower(floatabs(floatsub(Float:x,x1)),2)+floatpower(floatabs(floatsub(Float:y,y1)),2));
return floatround(tmpdis);
}
public strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}