rendered paste body//------------------------------------------------------------------------------
//
// CasCade AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
//
//------------------------------------------------------------------------------
#include <a_samp>
#include <core>
#include <float>
#include <string>
//Global stuff and defines
static gTeam[MAX_PLAYERS];
new gPlayerClass[MAX_PLAYERS];
new gPlayerName[MAX_PLAYERS];
//how many random respawns?
//Color Defines
#define COLOR_RED 0xAA3333AA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_CYAN 0x00BFF3AA
#define COLOR_BLACK 0x000000AA
#define COLOR_WHITE 0xFFFFFFAA
//team colors
#define COLOR_TEAM_0 0x008000AA
#define SLOTS 64
//other colors
#define COLOR_ERROR 0xed1c24AA
#define COLOR_COMMAND 0x8c6239AA
//Team Defines
#define TEAM_GROVE 0
// Round duration
new gRoundTime = 3600000; // 60 mins
//new gRoundTime = 1800000; // 30 mins
//new gRoundTime = 600000; //10 mins
//new gRoundTime = 300000; // 5 mins
//new gRoundTime = 120000; // 2 mins
//new gRoundTime = 60000; // 1 min
//for stat
static points[MAX_PLAYERS];
static frags[MAX_PLAYERS];
static frags2[MAX_PLAYERS];
static frags3[MAX_PLAYERS];
static deaths[MAX_PLAYERS];
static suicides[MAX_PLAYERS];
static teamkills[MAX_PLAYERS];
static lastkill[MAX_PLAYERS];
static tknow[MAX_PLAYERS];
// others variables
new firstblood = 0;
//------------------------------------------------------------------------------
enum SavePlayerPosEnum {
Float:LastX,
Float:LastY,
Float:LastZ
}
new SavePlayerPos[SLOTS][SavePlayerPosEnum];
new SpeedMode = 0; // 0 for KPH, 1 for MPH
new UpdateSeconds = 1; // How frequent do you want it to be updated
// Aight, create the main function
public UpdateSpeed(){
new Float:x,Float:y,Float:z;
new Float:distance,value,string[256];
for(new i=0; i<SLOTS; i++){
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)){
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
// Distance: meters in the last second
value = floatround(distance * 3600);
if(UpdateSeconds > 1){
value = floatround(value / UpdateSeconds);
}
// meters an hour
if(SpeedMode){
format(string,sizeof(string),"~w~~n~~n~~n~~n~~n ~ %d~b~ MPH",floatround(value/1600));
GameTextForPlayer(i, string, 1100, 5);
}
else{
format(string,sizeof(string)," ~w~~n~~n~~n~~n~~n~ %d~b~ KPH",floatround(value/1000));
GameTextForPlayer(i, string, 1100, 5);
}
SavePlayerPos[i][LastX] = x;
SavePlayerPos[i][LastY] = y;
SavePlayerPos[i][LastZ] = z;
} // End is-player-connected
} // End for-loop
} // eind UpdateSpeed function
//------------------------------------------------------------------------------
public OnGameModeInit()
{
SetGameModeText("CasCadev2");
SetTeamCount(5);
ShowNameTags(1);
ShowPlayerMarkers(1);
SetWorldTime(0);
SetTimer("UpdateSpeed", UpdateSeconds*1000, 1);
//plaerys
AddPlayerClass(0,2132.4121,-2536.4038,13.5469,111.1774,0,0,0,0,0,0); // CJ
AddStaticVehicle(522,2123.2026,-2527.3862,13.0882,62.4994,39,106); //
AddStaticVehicle(522,2123.6189,-2528.4333,13.1088,79.2440,3,8); //
AddStaticVehicle(522,2125.9673,-2533.0466,13.0931,82.3011,3,3); //
AddStaticVehicle(522,2127.6990,-2535.6804,13.1039,90.2036,6,25); //
AddStaticVehicle(522,2126.9175,-2534.0007,13.1120,98.7090,36,105); //
AddStaticVehicle(522,2125.1218,-2531.6829,13.0973,71.4905,51,118); //
AddStaticVehicle(522,2124.2190,-2529.6416,13.0927,63.8774,8,82); //
AddStaticVehicle(522,2124.8855,-2530.7578,13.1047,87.9929,7,79); //
AddStaticVehicle(492,1860.1366,-2533.9419,13.3287,182.7711,77,26); //
AddStaticVehicle(492,1856.6786,-2534.0286,13.3287,183.7594,81,27); //
AddStaticVehicle(492,1853.3475,-2534.0879,13.3286,181.3177,49,59); //
AddStaticVehicle(492,1850.0713,-2533.9578,13.3287,179.0984,28,56); //
AddStaticVehicle(492,1846.7659,-2533.5789,13.3287,177.9715,24,55); //
AddStaticVehicle(492,1843.5038,-2533.3787,13.3287,180.1439,52,69); //
AddStaticVehicle(492,1840.3088,-2532.9866,13.3287,178.8853,71,107); //
AddStaticVehicle(492,1836.6188,-2532.6848,13.3286,176.6951,28,56); //
AddStaticVehicle(492,1833.5382,-2532.5706,13.3287,180.1681,77,26); //
AddStaticVehicle(492,1830.2914,-2532.5203,13.3287,175.4893,30,26); //
AddStaticVehicle(492,1827.0634,-2532.3333,13.3286,175.7366,81,27); //
AddStaticVehicle(492,1823.7020,-2532.0574,13.3287,178.1983,24,55); //
AddStaticVehicle(492,1820.5004,-2531.8794,13.3287,178.2981,77,26); //
AddStaticVehicle(492,1817.0135,-2531.6465,13.3286,176.7285,49,59); //
AddStaticVehicle(492,1813.9845,-2531.2793,13.3287,174.5810,52,69); //
AddStaticVehicle(492,1810.9539,-2530.8455,13.3287,174.8950,71,107); //
AddStaticVehicle(492,1808.0800,-2530.7285,13.3287,174.9229,30,26); //
AddStaticVehicle(492,1804.8567,-2530.4041,13.3285,173.4897,52,69); //
AddStaticVehicle(556,1861.9713,-2553.7000,13.9219,268.1597,1,1); //
AddStaticVehicle(556,1855.8337,-2553.6846,13.9219,270.8506,1,1); //
AddStaticVehicle(556,1849.7653,-2553.8696,13.9244,270.3508,1,1); //
AddStaticVehicle(556,1843.6615,-2554.0000,13.9260,270.8062,1,1); //
AddStaticVehicle(556,1837.6217,-2554.1387,13.9221,272.9526,1,1); //
AddStaticVehicle(556,1831.4670,-2554.3594,13.9245,273.5332,1,1); //
AddStaticVehicle(556,1825.0380,-2554.6265,13.9219,272.2701,1,1); //
SetTimer("GameModeShowWinTeam", gRoundTime-7000, 0);
SetTimer("GameModeExitFunc", gRoundTime, 0);
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
// print("onconnect");
GameTextForPlayer(playerid,"CAsCaDE",2500,5);
SendClientMessage(playerid,COLOR_GREEN, "Jump As Far As You CAn");
GameTextForPlayer(playerid, "CasCadeV2", 10000, 1);
GivePlayerMoney(playerid, 1111);
// print("onconnect1");
points[playerid]=0;
frags[playerid]=0;
frags2[playerid]=0;
frags3[playerid]=0;
deaths[playerid]=0;
suicides[playerid]=0;
lastkill[playerid]=0;
tknow[playerid]=0;
SetPlayerColor(playerid, COLOR_GREY); // Set the player's color to inactive
GetPlayerName(playerid, gPlayerName[playerid], MAX_PLAYER_NAME);
// print("onconnectend");
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
// print("ondisconnect");
gPlayerName[playerid] = 0;
return 1;
}
//========================================================================
//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
// print("onspawn");
// SetPlayerInterior(playerid,0);
print("GameModeInit()");
SetGameModeText("~r~Stay In Da Airport");
SetPlayerWorldBounds(playerid,2151.0100,1533.3934,-2426.9827,-2621.2578); //world bounds
switch (gTeam[playerid]) {
case 0: {SetPlayerColor(playerid,COLOR_TEAM_0);}
}
return 1;
}
//------------------------------------------------------------------------------
//======
public OnPlayerDeath(playerid, killerid, reason)
{
new name[MAX_PLAYER_NAME];
new warning[256];
new tempstring[256];
new string[256];
new deathreason[20];
new Float: phealth;
new killyes=0,bon1yes=0;
new killer[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetWeaponName(reason, deathreason, 20);
SendDeathMessage(killerid,playerid,reason);
if (killerid == INVALID_PLAYER_ID) {
/* switch (reason) {
case WEAPON_DROWN:
format(string, sizeof(string), "*** %s drowned.", name);
default:
{
if (strlen(deathreason) > 0) {
format(string, sizeof(string), "*** %s died. (%s)", name, deathreason);
} else {
format(string, sizeof(string), "*** %s died.", name);
}
}
}
*/
suicides[playerid]++;
frags2[playerid]=0;
frags3[playerid]=0;
}
else {
if (GetPlayerState(killerid) == 2 && reason != '1') {
SetPlayerHealth(killerid,0);
SendClientMessage(killerid,0xAA3333AA, "THAT IS NOT ALLOWED!!!");
// SendDeathMessage(killerid,playerid,reason);
return 1;
}
GetPlayerName(killerid, killer, sizeof(killer));
if (gTeam[playerid] == gTeam[killerid]) {
/* if (strlen(deathreason) > 0) {
format(string, sizeof(string), "*** %s killed team-mate %s. (%s)", killer, name, deathreason);
} else {
format(string, sizeof(string), "*** %s killed team-mate %s.", killer, name);
}
SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
*/ GivePlayerMoney(killerid, -1000);
if (teamkills[killerid] == 0) {
format(warning, sizeof(warning), "Be careful! You have been punished for teamkilling %s.", name);
SendClientMessage(killerid, 0xFFFF00AA, warning);
} else if (teamkills[killerid] == 1) {
SetPlayerInterior(killerid,6);
SetPlayerPos(killerid,264.6296,77.1372,1001.0390);
ResetPlayerWeapons(killerid);
SendClientMessage(killerid, 0xFFFF00AA, "You will be rescued after 2 minutes.");
SendClientMessage(killerid, 0xFFFF00AA, "You can type /rescue to rescue at this moment (price: $5.000) or type /kill to die.");
SetTimer("RescueTK", 120000, 1);
//SetTimer("RescueTK", 15000, 1);
tknow[killerid]=1;
} else {
SendClientMessage(killerid, 0xFFFF00AA, "Kick for you. Teamkill - bad.");
Kick(killerid);
}
teamkills[killerid]++;
points[killerid]--;
frags2[playerid]=0;
frags3[playerid]=0;
} else {
killyes=1;
/* if (strlen(deathreason) > 0) {
format(string, sizeof(string), "*** %s killed %s. (%s)", killer, name, deathreason);
} else {
format(string, sizeof(string), "*** %s killed %s.", killer, name);
}
SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
*/GivePlayerMoney(killerid, 2000);
frags[killerid]++;
frags2[killerid]++;
frags3[killerid]++;
points[killerid]++;
frags2[playerid]=0;
frags3[playerid]=0;
if (GetTickCount() - lastkill[killerid] < 15000) {
bon1yes=1;
} else {
frags3[killerid]=1;
}
}
}
points[playerid]--;
deaths[playerid]++;
// SendClientMessageToAll(COLOR_RED, string);
//format(string, sizeof(string), "(debug)LAST kill %d, raznica=%d, bonus-%d",lastkill[killerid],(tickcount()-lastkill[killerid])/1000,bon1yes);
// SendClientMessageToAll(COLOR_GREY, string);
SetPlayerColor(playerid,COLOR_GREY);
if (killyes) {
if (!firstblood) {
firstblood++;
format(string, sizeof(string), "First Blood! (+5000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 5000);
}
if (bon1yes==1) {
switch (frags3[killerid]) {
case 2: {
format(string, sizeof(string), "DOUBLE KILL! (+2000) (%s)",killer);
SendClientMessageToAll(COLOR_PINK, string);
GivePlayerMoney(killerid, 2000);
}
case 3: {
format(string, sizeof(string), "TRIPLE KILL! (+3000) (%s)",killer);
SendClientMessageToAll(COLOR_PINK, string);
GivePlayerMoney(killerid, 3000);
}
case 4: {
format(string, sizeof(string), "Tquadruple KILL! (+4000) (%s)",killer);
SendClientMessageToAll(COLOR_PINK, string);
GivePlayerMoney(killerid, 4000);
}
case 5: {
format(string, sizeof(string), "Quintuple KILL! (+5000) (%s)",killer);
SendClientMessageToAll(COLOR_PINK, string);
GivePlayerMoney(killerid, 5000);
}
case 6..100: {
format(string, sizeof(string), "Inconceivable KILL! (+10000) (%s)",killer);
SendClientMessageToAll(COLOR_PINK, string);
GivePlayerMoney(killerid, 10000);
}
}
}
GetPlayerHealth(killerid, phealth);
format(tempstring, sizeof(tempstring), "*** %s have %2.f hp.", killer, phealth);
SendClientMessage(playerid,COLOR_GREY, tempstring);
switch (frags2[killerid]) {
case 3: {
format(string, sizeof(string), "KILLING SPREE! (+1000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 1000);
}
case 4: {
format(string, sizeof(string), "DOMINATING! (+2000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 2000);
}
case 5: {
format(string, sizeof(string), "MEGA KILL! (+3000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 2000);
}
case 6: {
format(string, sizeof(string), "UNSTOPPABLE! (+4000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 2000);
}
case 7: {
format(string, sizeof(string), "WICKED SICK! (+5000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 2000);
}
case 8: {
format(string, sizeof(string), "MOSNTER KILL! (+6000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 2000);
}
case 9..100: {
format(string, sizeof(string), "GODLIKE! (+10000) (%s)",killer);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GivePlayerMoney(killerid, 10000);
}
}
lastkill[killerid]=GetTickCount();
}
SetPlayerScore(playerid,points[playerid]);
// points[playerid]=100;
SetPlayerScore(killerid,points[killerid]);
return 1;
}
//------------------------------------------------------------------------------
public SetupPlayerForClassSelection(playerid)
{
// SetPlayerInterior(playerid,10);
SetPlayerPos(playerid,2489.2221,-1656.2525,13.3606);
SetPlayerFacingAngle(playerid, 180.0);
SetPlayerCameraPos(playerid,2489.3806,-1661.4866,13.3359);
SetPlayerCameraLookAt(playerid,2489.2221,-1656.2525,13.3606);
}
//------------------------------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerClass(playerid, classid);
SetupPlayerForClassSelection(playerid);
gPlayerClass[playerid] = classid;
switch (classid) {
case 0..2: {
SetPlayerFacingAngle(playerid, 180.0);
SetPlayerPos(playerid,2489.2221,-1656.2525,13.3606);
SetPlayerCameraPos(playerid,2489.3806,-1661.4866,13.3359);
SetPlayerCameraLookAt(playerid,2489.2221,-1656.2525,13.3606);
GameTextForPlayer(playerid, "~g~CJ", 1000, 3);
}
}
return 1;
}
//------------------------------------------------------------------------------
public GameModeExitFunc()
{
GameModeExit();
return 1;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
SetPlayerClass(playerid, classid) {
switch (classid) {
case 0..1: {gTeam[playerid] = TEAM_GROVE;}
}
}
//------------------------------------------------------------------------------
//-----------------------------------------------------------------------------
public GetPlayerId(playername[])
{
for (new i = 0; i < MAX_PLAYERS; i++) {
// printf("zaproc-%s,tekyshee-%s",playername,gPlayerName[i]);
if ((IsPlayerConnected(i)) && (strcmp(playername, gPlayerName[i], false) == 0)) return i;
}
return -1;
}
//-----------------------------------------------------------------------------
public IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++) {
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
//-----------------------------------------------------------------------------
public RescueTK()
{
for (new i = 0; i < MAX_PLAYERS; i++) {
if (IsPlayerConnected(i) && tknow[i]== 1) {
SetPlayerInterior(i,0);
SetPlayerPos(i,1553.0318,-1675.4394,16.1953);
tknow[i]=0;
}
}
}