#include #include #define function #define COLOR_GREEN 0x00FF00FF #define COLOR_WHITE 0xFFFFFFFF #define COLOR_GREY 0xC6BEBDFF #define HYDRA_TEAM 0 #define TRAIN_TEAM 1 #define KOLOR_RAMKA 0x00770000 #define KOLOR_SRODEK 0x00000088 #define ADMIN_SPEC_TYPE_NONE 0 #define ADMIN_SPEC_TYPE_PLAYER 1 #define ADMIN_SPEC_TYPE_VEHICLE 2 #define STR 100 #define FileName "R.T.v.H.1.4.-Config.cfg" new HydraScore, RoadScore; new Text:idin[200]; new SpectateID[20]; new SpectateType[200]; new cofa[200]; new PlColor[200]; new Entering[200]; new Spawned[200]; new IsPlayerSpec[200]; new IsPlayerSpec2[200]; enum OldPosEnum { Float:oX, Float:oY, Float:oZ }; new OldPos[200][OldPosEnum]; new PlayerObjects[200][6]; new Timer[150]; new PlayerLoading[200]; new AddLife[200]; new ObjIco[150][200]; new Menu:ChatID; new Menu:PlayerMenu[200]; new IsSpec[200]; new Gangzones[2]; new ForceSpawn2; main() { print("\n ----------------------------------"); print(" \"RoadTrain vs. Hydra TDM\" "); print(" >>By Luby<< "); print("Wersja 1.4 Beta #1 z dnia 10 Listopada 2oo7"); print(" ----------------------------------\n"); } public OnGameModeInit() { SetGameModeText("R.T.v.H.1.4 by Luby"); AddPlayerClassEx(HYDRA_TEAM, 2,1342.079102 ,1698.567627 ,10.480688, 270.0, 34, 100, 43, 1, 44, 1); AddPlayerClassEx(TRAIN_TEAM, 1,1604.073730 ,307.328888 ,20.453587, 270.0, 34, 100, 43, 1, 44, 1); Gangzones[0] = GangZoneCreate(floatsub(1302.079102, 50.0), floatsub(1658.567627, 50.0), floatadd(1382.079102, 50.0), floatadd(1738.567627, 50.0)); Gangzones[1] = GangZoneCreate(floatsub(1564.073730, 50.0), floatsub(267.328888, 50.0) , floatadd(1644.073730, 50.0), floatadd(347.328888, 50.0) ); AddStaticVehicle(515,1601.111938 ,301.369354 ,20.327288, 0.0 , 2, 4); AddStaticVehicle(515,1611.111938 ,301.369354 ,20.327288, 0.0 , 2, 4); AddStaticVehicle(515,1621.111938 ,301.369354 ,20.327288, 0.0 , 2, 4); AddStaticVehicle(515,1631.111938 ,301.369354 ,20.327288, 0.0 , 2, 4); AddStaticVehicle(515,1641.111938 ,301.369354 ,20.327288, 0.0 , 2, 4); AddStaticVehicle(520,1369.3843 ,1621.0599 ,11.1914 , 269.3976 , 2, 4); AddStaticVehicle(520,1369.3843 ,1631.0599 ,11.1914 , 269.3976 , 2, 4); AddStaticVehicle(520,1369.3843 ,1641.0599 ,11.1914 , 269.3976 , 2, 4); AddStaticVehicle(520,1369.3843 ,1651.0599 ,11.1914 , 269.3976 , 2, 4); AddStaticVehicle(520,1369.3843 ,1661.0599 ,11.1914 , 269.3976 , 2, 4); SetWorldTime(0); SetWeather(9); CreateObject(18449, 1684.991455, 565.249817, 12.891274, 2.5783, 355.7028, 268.0403); CreateObject(18449, 1681.982666, 486.726501, 14.258919, 357.4217, 357.4217, 87.6625); CreateObject(18449, 1682.188354, 460.868652, 11.355900, 356.5623, 7.7349, 81.6465); SetTimer("ForceSpawn", 1000, true); SetTimer("ScoreUpdate", 1000, true); SetTimer("AddLifeTimer", 100, true); SetTimer("SpeedUpdate", 100, true); SetDisabledWeapons(43,44,45); SetTeamCount(2); UsePlayerPedAnims(); if(dini_Exists(FileName)) { } else { print("\n Najprawdopodobniej uruchamiasz mape pierwszy raz. Plik konfiguracyjny zostal utworzony.\n"); dini_Create(FileName); } ChatID = CreateMenu(" ", 1, 5.0, 3.0, 350.0, 0.0); AddMenuItem(ChatID, 0, " "); AddMenuItem(ChatID, 0, " "); AddMenuItem(ChatID, 0, " "); AddMenuItem(ChatID, 0, " "); DisableMenu(ChatID); return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { Spawned[playerid] = false; switch(classid) { case 0:GameTextForPlayer(playerid,"~g~Hydra ~b~Team",1000,4); case 1:GameTextForPlayer(playerid,"~r~RoadTrain ~b~Team",1000,4); } new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); PlayerPlaySound(playerid, 9200, X, Y, Z); SetPlayerPos(playerid,1679.210205 ,1447.770752 ,47.438412); SetPlayerFacingAngle(playerid, 0.0); SetPlayerCameraPos(playerid,1679.210205 ,1457.770752 ,49.438412); SetPlayerCameraLookAt(playerid,1679.210205 ,1447.770752 ,47.438412); return 1; } forward ForceSpawn(); public ForceSpawn() { ForceSpawn2++; if(ForceSpawn2 == 15) { ForceSpawn2=0; for(new g=0;g<200;g++)if(IsPlayerConnected(g)) { if(IsPlayerSpec[g]) { GameTextForPlayer(g,"~n~~n~~n~~n~~r~R~w~espawn",1005,5); IsPlayerSpec[g] = false; StopSpectate(g); SpawnPlayer(g); } } } else for(new g=0;g<200;g++)if(IsPlayerConnected(g)) { new str[256]; format(str, 256, "~n~Ogladasz %s~n~~r~D~w~o ~r~r~w~espawnu ~r~p~w~ozostalo ~b~: ~n~~w~%d ~g~sekund",PlayerName(SpectateID[g]) , 14-ForceSpawn2); if(IsPlayerSpec[g]) { GameTextForPlayer(g,str,1005,5); } } } public OnPlayerRequestSpawn(playerid) { new count[2]; count[0] = GetTeamMembers(0); count[1] = GetTeamMembers(1); new sup; if(count[1] > count[0])sup = 1; else if(count[1] < count[0])sup = 0; else return 1; sup++; if(GetPlayerSkin(playerid) != sup) { GameTextForPlayer(playerid,"~w~Ta druzyna ma za duzo graczy.~n~~g~Wybierz inna.",1000,5); return 0; } return 1; } GetTeamMembers(teamid) { new count; for(new g=0;g<200;g++)if(IsPlayerConnected(g) && GetPlayerTeam(g) == teamid && Spawned[g])count++; return count; } public OnPlayerConnect(playerid) { new pName[30], string[256]; GetPlayerName(playerid, pName, 30); format(string, 256, "*** %s dołączył do gry.", pName); SendClientMessageToAll(COLOR_GREY,string); GangZoneShowForPlayer(playerid, Gangzones[1], 0xFF000077); GangZoneShowForPlayer(playerid, Gangzones[0], 0x00FF0077); IsPlayerSpec[playerid] = false; cofa[playerid] = false; Entering[playerid] = false; SendClientMessage(playerid, 0x0088FFAA, "R.T.v.H.1.4 by Luby."); SendClientMessage(playerid, 0x0088FFAA, "Wpisz /pomoc aby uzyskać więcej informacji."); IsSpec[playerid] = -2; for(new v=0;v<4;v++) { if(IsVehicleInUse(v) && GetVehicleModel(v) == 515) { new Float:X, Float:Z, Float:Y, Float:A; GetVehiclePos(v, X, Y, Z); GetVehicleZAngle(v, A); X -= (floatmul(1.0 , floatsin(-A, degrees))); Y -= (floatmul(1.0 , floatcos(-A, degrees))); PlayerObjects[playerid][v] = CreatePlayerObject(playerid, 3267, X, Y, floatadd(Z, 1.2), 0.0, 0.0, A); AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][v], GetVehicleDriver(v), 0.5, -3.9, -0.5, 0.0, 0.0, 0.0); } } return 1; } public OnPlayerDisconnect(playerid, reason) { GangZoneHideForPlayer(playerid, Gangzones[1]); GangZoneHideForPlayer(playerid, Gangzones[0]); switch(reason) { case 0: { new pName[30], string[256]; GetPlayerName(playerid, pName, 30); format(string, 256, "*** %s opuścił gre. (Timeout)", pName); SendClientMessageToAll(COLOR_GREY, string); } case 1: { new pName[30], string[256]; GetPlayerName(playerid, pName, 30); format(string, 256, "*** %s opuścił gre. (Wyszedł)", pName); SendClientMessageToAll(COLOR_GREY, string); } case 2: { new pName[30], string[256]; GetPlayerName(playerid, pName, 30); format(string, 256, "*** %s opuścił gre. (Wyrzucony)", pName); SendClientMessageToAll(COLOR_GREY, string); } } for(new x=0; x 1)rand = ids[random(id)]; else { rand = playerid; } if(rand != playerid) { StartSpectate(playerid, rand); } else { switch(GetPlayerTeam(playerid)) { case 1 : { SetPlayerCameraPos(playerid,1544.073730 ,337.328888 ,30.453587); SetPlayerCameraLookAt(playerid,1604.073730 ,307.328888 ,20.453587); SetPlayerPos(playerid, 0.0, 0.0, 0.0); } case 0 : { SetPlayerCameraPos(playerid,1372.079102 ,1648.567627 ,28.480688); SetPlayerCameraLookAt(playerid,1342.079102 ,1698.567627 ,10.480688); SetPlayerPos(playerid, 0.0, 0.0, 0.0); } } } return true; } public OnVehicleDeath(vehicleid, killerid) { for(new g=0;g<200;g++)if(IsSpec[g] == vehicleid) { OnPlayerDeath(g, 255, 0); } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if(strcmp(cmdtext, "/help", true, 5) == 0 || strcmp(cmdtext, "/pomoc", true, 6) == 0 || strcmp(cmdtext, "/p", true, 2) == 0) { SendClientMessage(playerid, 0xFF7777FF, "*** Witaj. Grasz właśnie na mapie RTvH co znaczy Road Train vs Hydra."); SendClientMessage(playerid, 0xFF7777FF, "*** Wygrywa drużyna która pierwsza zdobędzie 30 punktów."); SendClientMessage(playerid, 0xFF7777FF, "*** Gdy jesteś w RoadTrainie kliknij FIRE aby wystrzelić rakiete w najblizszego przeciwnika."); SendClientMessage(playerid, 0xFF7777FF, "*** Aby strzelać z hydry musisz siedzieć w niej jako pasażer."); SendClientMessage(playerid, 0xFF7777FF, "*** Aby wejść na miejsce pasażera kliknij ENTER gdy już ktoś w niej siedzi."); SendClientMessage(playerid, 0xFF7777FF, "*** W prawym dolnim miejscu ekranu widzisz 3 najblizszych graczy z przeciwnej drużyny."); SendClientMessage(playerid, 0xFF7777FF, "*** W tych którzy są niebieskawi można strzelać."); SendClientMessage(playerid, 0xFF7777FF, "*** Powodzenia! Kontakt z autorem znajdziesz pod /about"); return 1; } if(strcmp(cmdtext, "/about", true, 6) == 0) { SendClientMessage(playerid, 0xFF7777FF, "*** Ta mapa została w całości napisana przez Luby."); SendClientMessage(playerid, 0xFF7777FF, "*** Kontakt ze mną : GG : 6002300 : Email : AeroFly@o2.PL."); SendClientMessage(playerid, 0xFF7777FF, "*** Betatestrzy : Paffcio, SubZero, Kitan, Homie.PL, Mysz, Mruk_POL, Mateoma."); SendClientMessage(playerid, 0xFF7777FF, "*** Mape znajdziesz na GTAMScripting.lua.PL(amx) a o pwn pytaj osobiście."); return 1; } return SendClientMessage(playerid, 0xFF7777FF, "*** Niepoprawna komenda."); } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(GetVehicleModel(vehicleid) == 520 && IsVehicleInUse(vehicleid)) { TogglePlayerSpectating(playerid, 1); PlayerSpectateVehicle(playerid, vehicleid, SPECTATE_MODE_NORMAL); IsSpec[playerid] = vehicleid; } for(new x=0; x 0){ Target = Targets[random(Targets2)]; } else Target = playerid; if(Target != GetVehicleDriver(GetPlayerVehicleID(playerid)) && Target != playerid && Target != GetVehiclePass(GetPlayerVehicleID(playerid)) && Target != 255){ Timer[ShotObj1] = SetTimerEx("UpdateShot", 100, 10, "dddd",ShotObj1, Target, playerid); SetTimerEx("DestroyRObject", 5000, 0, "d",ShotObj1); } else { GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); new Float:A; GetVehicleZAngle(GetPlayerVehicleID(playerid), A); x += (floatmul(500.0 , floatsin(-A, degrees))); y += (floatmul(500.0 , floatcos(-A, degrees))); MoveObject(ShotObj1, x, y, z+200.0, 405.55515); SetTimerEx("DestroyRObject", 2200, 0, "d",ShotObj1); SetTimerEx("DestroyRObject", 2200, 0, "d",ShotObj2); } new Text:textid; textid = TextDrawCreate(200.0, 400.0, "Trwa ladowanie rakiety~n~Prosze czekac..."); TextDrawColor(textid, 0xFF0000FF); TextDrawShowForPlayer(playerid, textid); SetTimerEx("ClearShot", 2000, 0 ,"di", playerid, _:textid); PlayerLoading[playerid] = true; } if(newkeys & KEY_FIRE && !IsPlayerInSpawn(playerid) && !PlayerLoading[playerid] && IsSpec[playerid] != -1 && IsSpec[playerid] != -2) { new ShotObj1; new Float:X, Float:Y, Float:Z; GetVehiclePos(IsSpec[playerid], X, Y, Z); PlayerPlaySound(playerid, 1159, X, Y, Z); ShotObj1 = CreateObject(354 , X, Y, Z, 0.0, 0.0, 0.0); new Target; new Targets2=0; new Float:x, Float:y, Float:z; new Targets[3]; switch(GetPlayerTeam(playerid)) { case 1:Targets = G3PCTPIT(playerid, 0); case 0:Targets = G3PCTPIT(playerid, 1); } if(Targets[2] != 255)Targets2++; if(Targets[1] != 255)Targets2++; if(Targets[0] != 255)Targets2++; if(Targets2 > 0){ Target = Targets[random(Targets2)]; } else Target = playerid; if(Target != GetVehicleDriver(IsSpec[playerid]) && Target != playerid && Target != GetVehiclePass(IsSpec[playerid]) && Target != 255){ Timer[ShotObj1] = SetTimerEx("UpdateShot", 100, 10, "ddd",ShotObj1, Target, playerid); SetTimerEx("DestroyRObject", 2000, 0, "d",ShotObj1); } else { GetVehiclePos(IsSpec[playerid], x, y, z); new Float:A; GetVehicleZAngle(IsSpec[playerid], A); x += (floatmul(500.0 , floatsin(-A, degrees))); y += (floatmul(500.0 , floatcos(-A, degrees))); MoveObject(ShotObj1, x, y, z, 305.55515); SetTimerEx("DestroyRObject", 200, 0, "d",ShotObj1); } new Text:textid; textid = TextDrawCreate(200.0, 400.0, "Trwa ladowanie rakiety~n~Prosze czekac..."); TextDrawColor(textid, 0x00FF00FF); TextDrawShowForPlayer(playerid, textid); SetTimerEx("ClearShot", 2000, 0 ,"di", playerid, _:textid); PlayerLoading[playerid] = true; } if(newkeys & 16 && !IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) { new Float:X, Float:Y, Float:Z, Float:Health, Float:Armour, Float:Angle; GetVehiclePos(IsSpec[playerid], X, Y, Z); GetVehicleZAngle(IsSpec[playerid], Angle); GetPlayerArmour(playerid, Armour); GetPlayerHealth(playerid, Health); TogglePlayerSpectating(playerid, false); SpawnPlayer(playerid); X += (floatmul(4.0 , floatsin(floatadd(-Angle, 90.0), degrees))); Y += (floatmul(4.0 , floatcos(floatadd(-Angle, 90.0), degrees))); SetPlayerPos(playerid, X, Y, Z); IsSpec[playerid] = -2; } if(newkeys & 32 && IsPlayerInAnyVehicle(playerid)) { cofa[playerid] = true; DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]); PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0); AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -4.9, -0.5, 0.0, 0.0, 0.0); } if(oldkeys & 32 && IsPlayerInAnyVehicle(playerid)) { cofa[playerid] = false; DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]); PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0); AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0); } if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID) { if(newkeys == KEY_JUMP) { AdvanceSpectate(playerid); } else if(newkeys == KEY_SPRINT) { ReverseSpectate(playerid); } } return 1; } forward ClearShot(pid, Text:text); public ClearShot(pid, Text:text) { TextDrawHideForAll(text); TextDrawDestroy(text); PlayerLoading[pid] = false; } forward UpdateShot(obj, tar, shooter); public UpdateShot(obj, tar, shooter) { new Float:X, Float:Y, Float:Z; GetPlayerPos(tar, X, Y, Z); PlayerPlaySound(tar, 9200, X, Y, Z); MoveObject(obj, X, Y, Z, 405.55515); GetObjectPos(obj, X, Y, Z); for(new g=0;g<200;g++) { RemovePlayerMapIcon(g, ObjIco[obj][g]); ObjIco[obj][g] = SetPlayerMapIcon(g, 0xFF, X, Y, Z, 48, 0); } new Float:x, Float:y, Float:z; new Float:x2, Float:y2, Float:z2; GetObjectPos(obj, x2, y2, z2); GetPlayerPos(tar, x, y, z); new Float:Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2))); if(Distance < 5) { if(IsValidObject(obj))DestroyObject(obj); KillTimer(Timer[obj]); for(new g=0;g<200;g++) { RemovePlayerMapIcon(g, ObjIco[obj][g]); } new Float:H; new IsVeh; if(IsPlayerInAnyVehicle(tar)){IsVeh = 1;GetVehicleHealth(GetPlayerVehicleID(tar), H);} else GetPlayerHealth(tar, H); if(IsVeh)H = floatdiv(H, 10.000000); SetTimerEx("CheckBoom", 1000, false, "fdd", H, shooter, tar); CreateExplosion(x, y, z, 0, 7.0); } } forward CheckBoom(Float:H, s, tar); public CheckBoom(Float:H, s, tar) { new Float:H2; new IsVeh; if(IsPlayerInAnyVehicle(tar)){IsVeh = 1;GetVehicleHealth(GetPlayerVehicleID(tar), H2);} else GetPlayerHealth(tar, H2); if(IsVeh)H = floatdiv(H2, 10.000000); new Float:SUB; SUB = floatsub(H2, H); printf("SUB %f", SUB); if(floatround(SUB) > 10)SendDeathMessage(s,tar,51); } forward HideZone(z); public HideZone(z) { GangZoneHideForAll(z); GangZoneDestroy(z); } forward DestroyRObject(z); public DestroyRObject(z) { if(IsValidObject(z))DestroyObject(z); KillTimer(Timer[z]); new Float:x2, Float:y2, Float:z2; GetObjectPos(z, x2, y2, z2); CreateExplosion(x2, y2, z2, 0, 7.0); } function IsPlayerInArea(pid, Float:uX, Float:uY, Float:dX, Float:dY) { new Float:X, Float:Y, Float:Z; GetPlayerPos(pid, X, Y, Z); if((X >= uX && X <= dX && Y >= uY && Y <= dY))return true; return false; } function IsVehicleInUse(vid) { for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_DRIVER)return true; return false; } #define TeleportPlayerToPlayer(%1,%2,%3) Tpplaytoplay(%1,%2,%3) stock Tpplaytoplay(id1, id2, Float:dis) { new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(id1, x, y, z); if(IsPlayerInAnyVehicle(id1))GetVehicleZAngle(GetPlayerVehicleID(id1),a); else GetPlayerFacingAngle(id1,a); x += (floatmul(dis , floatsin(-a, degrees))); y += (floatmul(dis , floatcos(-a, degrees))); if(IsPlayerInAnyVehicle(id2)) { SetVehiclePos(GetPlayerVehicleID(id2), x, y, z); SetVehicleZAngle(GetPlayerVehicleID(id2), floatadd(a, 180.0)); } else { SetPlayerPos(id2, x, y, z); SetPlayerFacingAngle(id2, floatadd(a, 180.0)); } return true; } function GetVehicleDriver(vid) { for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_DRIVER)return g; return 255; } function GetVehiclePass(vid) { for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_PASSENGER)return g; return 255; } forward AddLifeTimer(); public AddLifeTimer()for(new k=0;k<200;k++) { if(IsPlayerConnected(k)) { new Float:h; if(AddLife[k]) { GetPlayerHealth(k, h); if(h<100.0) { SetPlayerHealth(k, floatadd(h, 1.0)); } else AddLife[k]=false; } new Targets[3]; new playerid = k; switch(GetPlayerTeam(playerid)) { case 1:Targets = G3PCTPIT(playerid, 0); case 0:Targets = G3PCTPIT(playerid, 1); } if(IsValidMenu(PlayerMenu[playerid])) { HideMenuForPlayer(PlayerMenu[playerid], playerid); DestroyMenu(PlayerMenu[playerid]); } PlayerMenu[playerid] = CreateMenu(" " , 1, 340.0, 320.0, 200.0, 0.0); SetMenuColumnHeader(PlayerMenu[playerid], 0, "~z~Gracze w zasiegu~w~:"); if(Targets[0]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[0])); if(Targets[1]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[1])); if(Targets[2]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[2])); DisableMenu(PlayerMenu[playerid]); ShowMenuForPlayer(PlayerMenu[playerid], playerid); } } function PlayerName(p) { new n[64]; GetPlayerName(p, n, 256); return n; } forward SpeedUpdate(); public SpeedUpdate()for(new playerid=0;playerid<200;playerid++)if(IsPlayerConnected(playerid)) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); new Float:Distance; Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,OldPos[playerid][oX])),2),floatpower(floatabs(floatsub(Y,OldPos[playerid][oY])),2)),floatpower(floatabs(floatsub(Z,OldPos[playerid][oZ])),2))); new Float:Speed; Speed = floatmul(Distance, 3.6); new s[256]; if(GetPlayerInterior(playerid) == 0 && IsPlayerInAnyVehicle(playerid)) format(s,256,"~n~~n~~n~~n~~n~~n~~n~~n~Predkosc : %.1f", Speed); if(!Entering[playerid] && !IsPlayerSpec[playerid] && IsPlayerInAnyVehicle(playerid)) GameTextForPlayer(playerid,s,1011,5); if(Z < OldPos[playerid][oZ] && IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && !cofa[playerid]) { DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]); PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0); AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -floatmul(floatsub(Z , OldPos[playerid][oZ]),0.2), 0.0, 0.0, 0.0); } else if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && !cofa[playerid]) { DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]); PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0); AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0); } if(!IsPlayerInAnyVehicle(playerid)) { if(IsValidPlayerObject(playerid, PlayerObjects[playerid][0]))DestroyPlayerObject(playerid, PlayerObjects[playerid][0]); if(IsValidPlayerObject(playerid, PlayerObjects[playerid][1]))DestroyPlayerObject(playerid, PlayerObjects[playerid][1]); if(IsValidPlayerObject(playerid, PlayerObjects[playerid][2]))DestroyPlayerObject(playerid, PlayerObjects[playerid][2]); if(IsValidPlayerObject(playerid, PlayerObjects[playerid][3]))DestroyPlayerObject(playerid, PlayerObjects[playerid][3]); if(IsValidPlayerObject(playerid, PlayerObjects[playerid][4]))DestroyPlayerObject(playerid, PlayerObjects[playerid][4]); if(IsValidPlayerObject(playerid, PlayerObjects[playerid][5]))DestroyPlayerObject(playerid, PlayerObjects[playerid][5]); } OldPos[playerid][oX]=X; OldPos[playerid][oY]=Y; OldPos[playerid][oZ]=Z; if(IsPlayerInAnyVehicle(playerid)) { new Float:Health; GetVehicleHealth(GetPlayerVehicleID(playerid), Health); SetPlayerArmour(playerid, floatdiv(Health, 10.0)); } else SetPlayerArmour(playerid, 0.0); new Float:H, iveh; if(IsPlayerInAnyVehicle(playerid)) { GetVehicleHealth(GetPlayerVehicleID(playerid), H); iveh=true; } else GetPlayerHealth(playerid, H); if(iveh) { H = floatdiv(H, 10.0); } if(H > 0.0) { SetPlayerColor(playerid,0xFF000077); PlColor[playerid] = 1; } if(H > 10.0) { SetPlayerColor(playerid,0xFF150077); PlColor[playerid] = 2; } if(H > 20.0) { SetPlayerColor(playerid,0xFF330077); PlColor[playerid] = 3; } if(H > 30.0) { SetPlayerColor(playerid,0xFF440077); PlColor[playerid] = 4; } if(H > 40.0) { SetPlayerColor(playerid,0xFF770077); PlColor[playerid] = 5; } if(H > 50.0) { SetPlayerColor(playerid,0xFFFF0077); PlColor[playerid] = 6; } if(H > 60.0) { SetPlayerColor(playerid,0x77FF0077); PlColor[playerid] = 7; } if(H > 70.0) { SetPlayerColor(playerid,0x44FF0077); PlColor[playerid] = 8; } if(H > 80.0) { SetPlayerColor(playerid,0x22FF0077); PlColor[playerid] = 9; } if(H > 90.0) { SetPlayerColor(playerid,0x00FF0077); PlColor[playerid] = 10; } } G3PCTPIT(playerid, teamid) { new Closest[3], Float:Distance, Float:TmpHighDist = 100.0, Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2; Closest[0] = 255; Closest[1] = 255; Closest[2] = 255; for(new g = 0;g < 200; g++) { if(IsPlayerConnected(g)) { if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g)) { if(g != playerid) { GetPlayerPos(g, x2, y2, z2); GetPlayerPos(playerid, x, y, z); Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2))); if(Distance < TmpHighDist){ Closest[0] = g; TmpHighDist = Distance; } } } } } TmpHighDist = 100.0; for(new g = 0;g < 200; g++) { if(IsPlayerConnected(g)) { if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g)) { if(g != playerid) { if(g != Closest[0]) { GetPlayerPos(g, x2, y2, z2); GetPlayerPos(playerid, x, y, z); Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2))); if(Distance < TmpHighDist){ Closest[1] = g; TmpHighDist = Distance; } } } } } } TmpHighDist = 100.0; for(new g = 0;g < 200; g++) { if(IsPlayerConnected(g)) { if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g)) { if(g != playerid) { if(g != Closest[0] && g != Closest[1]) { GetPlayerPos(g, x2, y2, z2); GetPlayerPos(playerid, x, y, z); Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2))); if(Distance < TmpHighDist){ Closest[2] = g; TmpHighDist = Distance; } } } } } } return Closest; } IsPlayerInSpawn(playerid) { switch(GetPlayerTeam(playerid)) { case 0: { if(IsPlayerInArea(playerid,floatsub(1302.079102, 50.0), floatsub(1658.567627, 50.0), floatadd(1382.079102, 50.0), floatadd(1738.567627, 50.0)))return true; } case 1: { if(IsPlayerInArea(playerid,floatsub(1564.073730, 50.0), floatsub(267.328888, 50.0) , floatadd(1644.073730, 50.0), floatadd(347.328888, 50.0) ))return true; } } return false; } stock StartSpectate(playerid, specid) { for(new x=0; x=0; x--) { if(x == 0) { x = MAX_PLAYERS; } if(IsPlayerConnected(x) && x != playerid) { if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] != INVALID_PLAYER_ID || (GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3)) { continue; } else { StartSpectate(playerid, x); break; } } } } return 1; } stock ConnectedPlayers() { new count; for(new x=0; x