//------------------------------------------------------------------------------ // // CasCade AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // //------------------------------------------------------------------------------ #include #include #include #include //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 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; } } }