Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * gTeam include created by Lorenc
- *
- * Thanks to those INC creators
- *
- *
- */
- #include <a_samp>
- #include <opsp>
- #include <YSI/y_hooks>
- /* ** Penaltys ** */
- #define MAX_PENALTYS 6 // There are currently 6!
- #define PENALTY_NOTHING 0 // Do nothing...
- #define PENALTY_KILL 1 // Kill the killerid
- #define PENALTY_EXPLODE 2 // Explode the killerid
- #define PENALTY_FLY 3 // Make the killerid fly
- #define PENALTY_KICK 4 // Kick the player
- #define PENALTY_WARN 5 // Warn the player
- /* ** Configuration ** */
- #define INVALID_TEAM (255)
- #define gT: gTeam_ // Style :O
- #define gPlayerTeam(%1) g_PlayerTeam{%1} // So its pwetty for me :)
- #define LoopTeams(%1) for(new %1, t = GetTeamCount(); %1 < t ; %1++)
- static
- g_PlayerTeam[MAX_PLAYERS char];
- new
- Float: g_LastPosition[MAX_PLAYERS][4], bool: g_ToggledPos[MAX_PLAYERS char],
- bool: g_Penalty[MAX_PENALTYS], bool: g_ToggledATeamKill, g_Teamscore_rate,
- g_Teamscore_adder, gTeam_OPSP;
- /* ** Colours ** */
- #if !defined COL_GREEN
- #define COL_GREEN "{6EF83C}"
- #endif
- #if !defined COL_RED
- #define COL_RED "{F81414}"
- #endif
- #if !defined COL_LIGHTBLUE
- #define COL_LIGHTBLUE "{00C0FF}"
- #endif
- #if !defined COL_LGREEN
- #define COL_LGREEN "{C9FFAB}"
- #endif
- #if !defined COL_LRED
- #define COL_LRED "{FFA1A1}"
- #endif
- #if !defined COLOR_GREEN
- #define COLOR_GREEN 0x00CC00FF
- #endif
- #if !defined COLOR_RED
- #define COLOR_RED 0xFF0000FF
- #endif
- #if !defined COLOR_YELLOW
- #define COLOR_YELLOW 0xFFFF00FF
- #endif
- #if !defined COLOR_ORANGE
- #define COLOR_ORANGE 0xEE9911FF
- #endif
- #if !defined COLOR_BLUE
- #define COLOR_BLUE 0x60CED4FF
- #endif
- enum Team_Data
- {
- T_COLOR,
- T_ID,
- T_NAME[24],
- T_MEMS,
- T_SCORE,
- bool: T_SCORE_ENABLED,
- bool: T_CREATED,
- }
- new gTeamData[254 char][Team_Data],
- gTeamCount = -1;
- /*
- native gTeam_CreateTeam(teamname[], teamid, color, bool: teamscore)
- native gTeam_ToggleAntiTeamKill(bool: toggle)
- native gTeam_SetPlayerTeam(playerid, teamid)
- native gTeam_SetTeamDeathPenalty(penaltyid)
- native GetTeamName(teamid)
- native GetTeamCount()
- native gGetPlayerTeam(playerid)
- native SetTeamScoreRate(adder = 1, multiplier = 0)
- native GetTeamScore(teamid)
- native SetTeamScore(teamid, score)
- native GiveTeamScore(teamid, score)
- native ReturnPlayerName(pid)
- native bool:IsPlayerSpawned(pid)
- */
- stock SetTeamScore(teamid, score) return gTeamData[teamid][T_SCORE] = score;
- stock GiveTeamScore(teamid, score) return gTeamData[teamid][T_SCORE] += score;
- stock gGetPlayerTeam(playerid) return g_PlayerTeam{playerid};
- stock gTeam_CreateTeam(teamname[], teamid, color, bool: v)
- {
- gTeamCount++;
- if(gTeamData[teamid][T_CREATED] == false)
- {
- format(gTeamData[teamid][T_NAME], 24, "%s", teamname);
- gTeamData[teamid][T_ID] = teamid;
- gTeamData[teamid][T_COLOR] = color;
- gTeamData[teamid][T_MEMS] = 0;
- gTeamData[teamid][T_CREATED] = true;
- gTeamData[teamid][T_SCORE] = 0;
- gTeamData[teamid][T_SCORE_ENABLED] = v;
- }
- else print("Couldn't create a team due to this TEAMID being created already.");
- }
- stock SetTeamScoreRate(adder = 0, mu = 1) {
- if(mu == 0) mu = 1;
- g_Teamscore_adder = adder;
- g_Teamscore_rate = mu;
- }
- stock GetTeamScore(teamid) return gTeamData[teamid][T_SCORE];
- stock GetTeamCount() return gTeamCount;
- stock IsTeamCreated(teamid)
- {
- if(gTeamData[teamid][T_CREATED] == true) return true;
- else return false;
- return false;
- }
- stock GetTeamName(teamid)
- {
- new g_Name[25];
- if(gTeamData[teamid][T_CREATED] == true) format(g_Name, sizeof(g_Name), "%s", gTeamData[teamid][T_NAME]);
- else format(g_Name, sizeof(g_Name), "Non-created team");
- return g_Name;
- }
- stock gTeam_SetPlayerTeam(playerid, teamid)
- {
- if(teamid >= INVALID_TEAM || teamid < 0 || teamid > gTeamCount) teamid = INVALID_TEAM; // RESET
- gPlayerTeam(playerid) = teamid;
- gTeamData[teamid][T_MEMS]++;
- SetPlayerColor(playerid, gTeamData[teamid][T_COLOR]);
- }
- Hook:gTeams_OnFilterScriptInit()
- {
- print("\nThis server uses Lorenc's gTeam include!\n");
- gTeam_SetTeamDeathPenalty(PENALTY_NOTHING); // Premade for default.
- g_ToggledATeamKill = true; // Automatically true..
- SetTeamScoreRate(0, 1);
- gTeam_OPSP = (funcidx("gTeam_OnPlayerShootPlayer") != -1);
- }
- Hook:gTeams_OnGameModeInit()
- {
- print("\nThis server uses Lorenc's gTeam include!\n");
- gTeam_SetTeamDeathPenalty(PENALTY_NOTHING); // Premade for default.
- g_ToggledATeamKill = true; // Automatically true..
- SetTeamScoreRate(0, 1);
- gTeam_OPSP = (funcidx("gTeam_OnPlayerShootPlayer") != -1);
- }
- stock gTeam_ToggleAntiTeamKill(bool:ans) return g_ToggledATeamKill = ans;
- stock bool:IsPlayerSpawned(playerid)
- {
- new pstate = GetPlayerState(playerid);
- if((pstate >= PLAYER_STATE_ONFOOT && pstate <= PLAYER_STATE_ENTER_VEHICLE_PASSENGER) || pstate == PLAYER_STATE_SPAWNED) return true;
- return false;
- }
- public OnPlayerShootPlayer(Shooter, Target, Float:HealthLost, Float:ArmourLost)
- {
- gTeam_OnPlayerShootPlayerFunc(Shooter, Target, HealthLost, ArmourLost);
- return (gTeam_OPSP) ? CallLocalFunction("gTeam_OnPlayerShootPlayer", "iiff",Shooter, Target, HealthLost, ArmourLost):1;
- }
- gTeam_OnPlayerShootPlayerFunc(Shooter, Target, Float:HealthLost, Float:ArmourLost)
- {
- new Float: Armour, Float: Health;
- if(g_ToggledATeamKill == true)
- {
- if(gPlayerTeam(Shooter) == gPlayerTeam(Target) && IsPlayerConnected(Shooter) && gPlayerTeam(Shooter) != INVALID_TEAM)
- {
- GetPlayerArmour(Target, Armour), GetPlayerHealth(Target, Health);
- SetPlayerHealth(Target, Health + HealthLost);
- SetPlayerArmour(Target, Armour + ArmourLost);
- }
- }
- return 1;
- }
- #if defined _ALS_OnPlayerShootPlayer
- #undef OnPlayerShootPlayer
- #else
- #define _ALS_OnPlayerShootPlayer
- #endif
- #define OnPlayerShootPlayer gTeam_OnPlayerShootPlayer
- forward gTeam_OnPlayerShootPlayer(Shooter, Target, Float:HealthLost, Float:ArmourLost);
- Hook:gTeams_OnPlayerDeath(playerid, killerid, reason)
- {
- new Float: X[2], Float: Y[2], Float: Z[2], Float: CAM, string[128];
- if(gPlayerTeam(killerid) == gPlayerTeam(playerid))
- {
- GetPlayerPos(playerid, X[0], Y[0], Z[0]);
- GetPlayerPos(killerid, X[1], Y[1], Z[1]);
- GetPlayerFacingAngle(playerid, CAM);
- g_LastPosition[playerid][0] = X[0];
- g_LastPosition[playerid][1] = Y[0];
- g_LastPosition[playerid][2] = Z[0];
- g_LastPosition[playerid][3] = CAM;
- g_ToggledPos{playerid} = true;
- SendClientMessage(playerid, -1, "Ohh no! Team killed, back to your last position you're going!");
- if(IsPlayerSpawned(killerid) && IsPlayerConnected(killerid))
- {
- if(g_Penalty[PENALTY_KILL] == true) SetPlayerHealth(killerid, -1);
- else if(g_Penalty[PENALTY_EXPLODE] == true) CreateExplosion(X[1], Y[1], Z[1], 12, 1.0);
- else if(g_Penalty[PENALTY_KICK] == true) Kick(killerid);
- else if(g_Penalty[PENALTY_FLY] == true) SetPlayerPos(killerid, X[1], Y[1], Z[1]+1000);
- else if(g_Penalty[PENALTY_WARN] == true) SetPVarInt(killerid, "gTeam_Warned", GetPVarInt(killerid, "gTeam_Warned") + 1);
- else if(GetPVarInt(killerid, "gTeam_Warned") >= 3)
- {
- format(string, sizeof(string), "%s(%d) was kicked from the server! (Exceeded teamkill warnings)", ReturnPlayerName(killerid), killerid);
- SendClientMessageToAll(COLOR_YELLOW, string);
- Kick(killerid);
- }
- }
- }
- else
- {
- if(gTeamData[gGetPlayerTeam(killerid)][T_SCORE_ENABLED] == true)
- {
- gTeamData[gGetPlayerTeam(killerid)][T_SCORE] += (g_Teamscore_adder * g_Teamscore_rate);
- }
- }
- }
- stock ReturnPlayerName(playerid)
- {
- new pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof(pname));
- return pname;
- }
- stock gTeam_SetTeamDeathPenalty(penid)
- {
- for(new i; i < MAX_PENALTYS; i++) g_Penalty[i] = false; // So all the current ones are deactivated and renewed.
- switch(penid)
- {
- case PENALTY_NOTHING: g_Penalty[PENALTY_NOTHING] = true;
- case PENALTY_KILL: g_Penalty[PENALTY_KILL] = true;
- case PENALTY_EXPLODE: g_Penalty[PENALTY_EXPLODE] = true;
- case PENALTY_FLY: g_Penalty[PENALTY_FLY] = true;
- case PENALTY_KICK: g_Penalty[PENALTY_KICK] = true;
- case PENALTY_WARN: g_Penalty[PENALTY_WARN] = true;
- }
- return 1;
- }
- Hook:gTeams_OnPlayerConnect(playerid)
- {
- gPlayerTeam(playerid) = INVALID_TEAM;
- }
- Hook:gTeams_OnPlayerDisconnect(playerid, reason)
- {
- gPlayerTeam(playerid) = INVALID_TEAM;
- g_ToggledPos{playerid} = false;
- gTeamData[gPlayerTeam(playerid)][T_MEMS]--;
- }
- Hook:gTeams_OnPlayerSpawn(playerid)
- {
- if(g_ToggledPos{playerid}) {
- SetTimerEx("g_SetBackToLast", 1500, false, "d", playerid);
- }
- }
- forward g_SetBackToLast(playerid);
- public g_SetBackToLast(playerid)
- {
- SetPlayerPos(playerid, g_LastPosition[playerid][0], g_LastPosition[playerid][1], g_LastPosition[playerid][2]);
- SetPlayerFacingAngle(playerid, g_LastPosition[playerid][3]);
- g_ToggledPos{playerid} = false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement