Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <dini>
- #pragma unused ret_memcpy
- #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(" ----------------------------------\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 Gamemode runned first time. Configuration file created.\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~You're watching %s~n~~r~T~w~o ~r~r~w~espawn ~r~l~w~eft ~b~: ~n~~w~%d ~g~sec",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~This team has too much of players.~n~~g~Choose other.",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 joined the game.", 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, "Type /help for more information.");
- 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 left game. (Timeout)", pName);
- SendClientMessageToAll(COLOR_GREY, string);
- }
- case 1:
- {
- new pName[30], string[256];
- GetPlayerName(playerid, pName, 30);
- format(string, 256, "*** %s left game. (Quit)", pName);
- SendClientMessageToAll(COLOR_GREY, string);
- }
- case 2:
- {
- new pName[30], string[256];
- GetPlayerName(playerid, pName, 30);
- format(string, 256, "*** %s left game. (Kicked)", pName);
- SendClientMessageToAll(COLOR_GREY, string);
- }
- }
- for(new x=0; x<MAX_PLAYERS; x++)
- {
- if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
- {
- AdvanceSpectate(x);
- }
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(!Spawned[playerid])
- {
- new pName[30], string[256];
- GetPlayerName(playerid, pName, 30);
- switch(GetPlayerTeam(playerid))
- {
- case 1:format(string, 256, "*** %s joined team RoadTrain.", pName);
- case 0:format(string, 256, "*** %s joined team Hydra.", pName);
- }
- SendClientMessageToAll(COLOR_GREY,string);
- }
- Spawned[playerid] = true;
- if(IsPlayerSpec2[playerid])
- {
- IsPlayerSpec[playerid] = true;
- SetTimerEx("procespec", 1, 0, "d", playerid);
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && IsValidObject(PlayerObjects[playerid][GetPlayerVehicleID(playerid)]))
- {
- DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
- }
- IsPlayerSpec2[playerid] = true;
- for(new x=0; x<MAX_PLAYERS; x++)
- {
- if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
- {
- AdvanceSpectate(x);
- }
- }
- SetPlayerScore(playerid, GetPlayerScore(playerid)-1);
- switch(GetPlayerTeam(playerid))
- {
- case 1:
- {
- HydraScore++;
- }
- case 0 :
- {
- RoadScore++;
- }
- }
- return 1;
- }
- forward procespec(playerid);
- public procespec(playerid)
- {
- IsPlayerSpec2[playerid] = false;
- new id=0;
- new ids[200]= {-1,...};
- for(new g=0;g<200;g++)
- {
- if(IsPlayerConnected(g) && g!=playerid)
- {
- ids[id]=g;
- id++;
- }
- }
- new rand;
- if(id == 1)
- {
- rand = ids[0];
- } else if(id > 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, "/h", true, 6) == 0 || strcmp(cmdtext, "/info", true, 2) == 0)
- {
- SendClientMessage(playerid, 0xFF7777FF, "*** Hi. You are playing on RTvH (Road Train vs Hydra).");
- SendClientMessage(playerid, 0xFF7777FF, "*** Team with 30 points wins.");
- SendClientMessage(playerid, 0xFF7777FF, "*** If you are in Road Train press FIRE button to shoot the closest enemy.");
- SendClientMessage(playerid, 0xFF7777FF, "*** If you want to shoot in Hydra you need to be passeneger.");
- SendClientMessage(playerid, 0xFF7777FF, "*** If you want to get in to Hydra on the passeneger press ENTER if there is another player.");
- SendClientMessage(playerid, 0xFF7777FF, "*** In right down corner you see 3 enemies.");
- SendClientMessage(playerid, 0xFF7777FF, "*** You can shoot to blue players.");
- SendClientMessage(playerid, 0xFF7777FF, "*** Good Luck ! Information about author - /about");
- return 1;
- }
- if(strcmp(cmdtext, "/about", true, 6) == 0)
- {
- SendClientMessage(playerid, 0xFF7777FF, "*** This gamemode is coded by Luby and translated by Frank.");
- SendClientMessage(playerid, 0xFF7777FF, "*** Betatesters : Paffcio, SubZero, Kitan, Homie.PL, Mysz, Mruk_POL, Mateoma.");
- SendClientMessage(playerid, 0xFF7777FF, "*** You can find this gamemode on www.forum.sa-mp.com.");
- return 1;
- }
- return SendClientMessage(playerid, 0xFF7777FF, "*** Unknown Command.");
- }
- 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<MAX_PLAYERS; x++)
- {
- if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
- {
- TogglePlayerSpectating(x, 1);
- PlayerSpectateVehicle(x, vehicleid);
- SpectateType[x] = ADMIN_SPEC_TYPE_VEHICLE;
- }
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- new Float:X, Float:Y, Float:Z, Float:A;
- GetVehiclePos(vehicleid, X, Y, Z);
- GetVehicleZAngle(vehicleid, A);
- SetVehiclePos(vehicleid, X, Y, Z);
- SetVehicleZAngle(vehicleid, A);
- if(GetVehicleModel(vehicleid) == 515)
- {
- DestroyPlayerObject(playerid, PlayerObjects[playerid][vehicleid]);
- for(new g=0;g<200;g++)if(IsPlayerConnected(g) && g != playerid)DestroyPlayerObject(g, PlayerObjects[playerid][vehicleid]);
- }
- for(new x=0; x<MAX_PLAYERS; x++)
- {
- if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid && SpectateType[x] == ADMIN_SPEC_TYPE_VEHICLE) {
- TogglePlayerSpectating(x, 1);
- PlayerSpectatePlayer(x, playerid);
- SpectateType[x] = ADMIN_SPEC_TYPE_PLAYER;
- }
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
- {
- new v = GetPlayerVehicleID(playerid);
- new Float:X, Float:Z, Float:Y, Float:A;
- GetVehiclePos(v, X, Y, Z);
- GetVehicleZAngle(v, A);
- X -= (floatmul(-2.0 , floatsin(-A, degrees)));
- PlayerObjects[playerid][v] = CreatePlayerObject(playerid, 3267, X, Y, floatadd(Z, -1.3), 0.0, 0.0, A);
- AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][v], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
- for(new g=0;g<200;g++)if(g != playerid && IsPlayerConnected(g))
- {
- PlayerObjects[g][v] = CreatePlayerObject(g, 3267, X, Y, floatadd(Z, -1.3), 0.0, 0.0, A);
- AttachPlayerObjectToPlayer(g, PlayerObjects[g][v], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
- }
- }
- if(newstate == PLAYER_STATE_ONFOOT)
- {
- IsSpec[playerid] = -2;
- }
- if(!IsPlayerSpec[playerid])
- {
- if(newstate == PLAYER_STATE_DRIVER)
- {
- switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
- {
- case 515:
- GameTextForPlayer(playerid,"~r~RoadTrain",2000,1);
- case 520:
- GameTextForPlayer(playerid,"~g~Hydra",2000,1);
- }
- Entering[playerid]=true;
- SetTimerEx("EnterClear", 2000, false, "d", playerid);
- }
- }
- return 1;
- }
- forward EnterClear(pl);
- public EnterClear(pl)Entering[pl] = false;
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- new x = 0;
- while(x!=MAX_PLAYERS)
- {
- if( IsPlayerConnected(x) && GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid && SpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
- {
- SetPlayerInterior(x,newinteriorid);
- }
- x++;
- }
- return true;
- }
- public OnPlayerExitedMenu(playerid)
- {
- ShowMenuForPlayer(PlayerMenu[playerid], playerid);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_FIRE && !IsPlayerInSpawn(playerid) &&!PlayerLoading[playerid] && IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
- {
- new ShotObj1;
- new ShotObj2;
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- PlayerPlaySound(playerid, 1159, X, Y, Z);
- GetObjectPos(PlayerObjects[playerid][GetPlayerVehicleID(playerid)], X, Y, Z);
- ShotObj1 = CreateObject(354 , X, Y, Z+4.0, 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(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, "Reloading~n~Please Wait...");
- 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, "Reloading~n~Please Wait...");
- 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~Closest Enemies~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<MAX_PLAYERS; x++)
- {
- if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
- {
- AdvanceSpectate(x);
- }
- }
- if(IsPlayerInAnyVehicle(specid))
- {
- SetPlayerInterior(playerid,GetPlayerInterior(specid));
- TogglePlayerSpectating(playerid, 1);
- PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
- SpectateID[playerid] = specid;
- SpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
- }
- else
- {
- SetPlayerInterior(playerid,GetPlayerInterior(specid));
- TogglePlayerSpectating(playerid, 1);
- PlayerSpectatePlayer(playerid, specid);
- SpectateID[playerid] = specid;
- SpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
- }
- return 1;
- }
- StopSpectate(playerid)
- {
- TogglePlayerSpectating(playerid, 0);
- SpectateID[playerid] = INVALID_PLAYER_ID;
- SpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
- return 1;
- }
- stock AdvanceSpectate(playerid)
- {
- if(ConnectedPlayers() == 1 || ConnectedPlayers() == 2)
- {
- return 1;
- }
- if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID)
- {
- for(new x=SpectateID[playerid]+1; x<=MAX_PLAYERS; x++)
- {
- if(x == MAX_PLAYERS) {
- x = 0;
- }
- 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 ReverseSpectate(playerid)
- {
- if(ConnectedPlayers() == 1 || ConnectedPlayers() == 2)
- {
- return 1;
- }
- if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID)
- {
- for(new x=SpectateID[playerid]-1; 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<MAX_PLAYERS; x++)
- {
- if(IsPlayerConnected(x))
- {
- count++;
- }
- }
- return count;
- }
- forward ScoreUpdate();
- public ScoreUpdate()
- {
- new s[256];
- format(s,256,"Hydra : %d vs %d : RoadTrain", HydraScore, RoadScore);
- if(idin[0])
- {
- TextDrawHideForAll(idin[0]);
- TextDrawDestroy(idin[0]);
- }
- idin[0] = TextDrawCreate(235.0, 115.0, s);
- TextDrawLetterSize(idin[0], 0.3, 0.5);
- TextDrawColor(idin[0], 0x00000088);
- TextDrawSetShadow(idin[0], 0);
- TextDrawSetOutline(idin[0], 1);
- TextDrawBackgroundColor(idin[0], 0xFFFFFF88);
- TextDrawFont(idin[0], 3);
- TextDrawShowForAll(idin[0]);
- SetGameModeText("R.T.v.H.1.4 by Luby");
- }
Advertisement
Add Comment
Please, Sign In to add comment