rendered paste body#include <a_samp>
#include <dini>
#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<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 dołączył do drużyny RoadTrain.", pName);
case 0:format(string, 256, "*** %s dołączył do drużyny 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, "/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<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, "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<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");
}