Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fun>
- #include <nvault_util>
- #include <cstrike>
- #include <engine>
- #include <fakemeta>
- #include <hamsandwich>
- #include <dhudmessage>
- #pragma semicolon 1
- #define PLUGIN_VERSION "0.2.2"
- #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
- #define MAXPLAYERS 32
- native pm_get_user_maxhealth(id);
- native give_vipaccess(id);
- native take_vipaccess(id);
- enum (+= 1631)
- {
- TASK_RESPAWN = 5616,
- TASK_GIVEITEMS
- };
- enum _:UPGRADES
- {
- Health,
- Armor,
- Respawn,
- FallDamage,
- Damage,
- NoPainShock
- };
- enum _:ITEMINFO
- {
- Name[20],
- Levels,
- MaxValue,
- Prefix[5]
- };
- new const ItemInfo[UPGRADES][ITEMINFO] =
- {
- { "Extra Health", 5, 100, " HP" },
- { "Armor", 5, 100, " AP" },
- { "Respawn Chance", 5, 10, "%" },
- { "Fall Damage Reducer", 5, 15, "%" },
- { "Extra Damage", 5, 10, "%" },
- { "No Pain Shock", 1, 1, "" }
- };
- new const g_iItemPrice[UPGRADES][] =
- {
- { 60, 70, 80, 90, 100 },
- { 60, 70, 80, 90, 100 },
- { 150, 160, 170, 180, 200 },
- { 70, 80, 90, 100, 110 },
- { 125, 125, 125, 125, 125 },
- { 750 }
- };
- new g_iItemLevel[MAXPLAYERS + 1][UPGRADES][CsTeams];
- new g_iPoints[MAXPLAYERS + 1];
- new g_iPointsTotal[MAXPLAYERS + 1];
- new g_iTarget[MAXPLAYERS + 1];
- new g_iMaxPlayers;
- new g_iVault;
- new g_iVault_Name;
- new bool:g_bAlive[MAXPLAYERS + 1];
- new bool:g_bRespawned[MAXPLAYERS + 1];
- new bool:g_bUsedRank[MAXPLAYERS + 1];
- const TOPRANKS = 10;
- new g_szTopNames[TOPRANKS + 1][32];
- new g_iTopPoints[TOPRANKS + 1];
- new g_iTopAuth[TOPRANKS + 1][35];
- new g_iTopThree[3][35];
- enum _:PCVARS
- {
- KILLXP,
- SURVIVE,
- SUICIDE,
- PLAYERREQ,
- KILLED
- };
- new g_pCvar[PCVARS];
- new c_Survive;
- new FirstClient;
- new MaxClients;
- new const g_szMenuCommands[][] =
- {
- "/pm",
- "/point"
- };
- public plugin_init()
- {
- register_plugin("HNS PointMod", PLUGIN_VERSION, "Biffmeizter");
- register_event("DeathMsg", "eventDeath", "a");
- register_event("HLTV", "eventNewRound", "a", "1=0", "2=0");
- register_logevent("eventRoundEnd", 2, "1=Round_End");
- new szFunction[] = "TeamMenu", szCommand[24];
- for( new i = 0; i < sizeof(g_szMenuCommands); i++ )
- {
- formatex(szCommand, charsmax(szCommand), "say %s", g_szMenuCommands[i]);
- register_clcmd(szCommand, szFunction);
- formatex(szCommand, charsmax(szCommand), "say_team %s", g_szMenuCommands[i]);
- register_clcmd(szCommand, szFunction);
- }
- register_clcmd("say /rank", "CmdHideRank");
- register_clcmd("say_team /rank", "CmdHideRank");
- register_clcmd("say /top", "CmdMOTDTop");
- register_clcmd("say_team /top", "CmdMOTDTop");
- register_clcmd("say /top10", "CmdMOTDTop");
- register_clcmd("say_team /top10", "CmdMOTDTop");
- register_clcmd("say /top15", "CmdMOTDTop");
- register_clcmd("say_team /top15", "CmdMOTDTop");
- register_clcmd("_________DonatePointValue", "CmdDonatePoints");
- register_concmd("pm_give", "CmdGive", ADMIN_IMMUNITY, "<Nick, #Userid, Auth> <Points>");
- register_concmd("pm_remove", "CmdTake", ADMIN_IMMUNITY, "<Nick, #Userid, Auth> <Points>");
- register_concmd("pm_resetperson", "CmdResetPerson", ADMIN_IMMUNITY, "<Nick, #Userid, Auth>");
- register_concmd("pm_reset", "CmdReset");
- g_pCvar[KILLXP] = register_cvar("hnspm_killpoints", "2");
- g_pCvar[SURVIVE] = register_cvar("hnspm_survivepoints", "5");
- g_pCvar[SUICIDE] = register_cvar("hnspm_suicidepoints", "2");
- g_pCvar[KILLED] = register_cvar("hnspm_killedpoints", "1");
- g_pCvar[PLAYERREQ] = register_cvar("hnspm_minplayers", "4");
- c_Survive = register_cvar ( "pm_points_survive", "5" );
- g_iMaxPlayers = get_maxplayers();
- FirstClient = 1;
- MaxClients = get_maxplayers();
- g_iVault = nvault_open("HNSPointModNew");
- g_iVault_Name = nvault_open("HNSPointMod_NamesNew");
- register_forward(FM_Think, "FwdThink", false);
- register_think("entTask", "CmdUpdatePoints");
- RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDamage");
- RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDamage_Post", true);
- RegisterHam(Ham_Killed, "player", "FwdPlayerKilled");
- RegisterHam(Ham_Spawn, "player", "FwdPlayerSpawn_Post", true);
- CreateTopTen(); // Load Top
- }
- public plugin_natives()
- {
- register_native("pm_set_user_points", "_set_user_points");
- register_native("pm_get_user_points", "_get_user_points");
- register_native("pm_get_user_maxhealth", "_get_user_maxhealth");
- register_native("pm_add_user_points", "_add_user_points");
- register_native("pm_get_user_totalpoints", "_get_user_totalpoints");
- }
- public _get_user_points(id)
- {
- id = get_param(1);
- return g_iPoints[id];
- }
- public _get_user_totalpoints(id)
- {
- id = get_param(1);
- return g_iPointsTotal[id];
- }
- public _set_user_points(id, iPoints)
- {
- id = get_param(1);
- iPoints = get_param(2);
- g_iPoints[id] = iPoints;
- g_iPointsTotal[id] = iPoints;
- SaveData(id);
- }
- public _add_user_points(id, iPoints)
- {
- id = get_param(1);
- iPoints = get_param(2);
- g_iPoints[id] += iPoints;
- g_iPointsTotal[id] += iPoints;
- SaveData(id);
- }
- public _get_user_maxhealth(id)
- {
- new id = get_param(1);
- new iHealth;
- if( IsPlayer(id) )
- {
- new CsTeams:iTeam;
- iTeam = cs_get_user_team(id);
- iHealth = (100 + (ItemInfo[Health][MaxValue] / ItemInfo[Health][Levels] * g_iItemLevel[id][Health][iTeam]));
- }
- return iHealth;
- }
- public eventRoundEnd()
- {
- if( get_playersnum() < get_pcvar_num(g_pCvar[PLAYERREQ]) )
- {
- return PLUGIN_HANDLED;
- }
- new survive = get_pcvar_num( c_Survive );
- for( new iPlayer = FirstClient; iPlayer <= MaxClients; iPlayer++ )
- {
- if( is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T )
- {
- g_iPoints[iPlayer] += survive;
- g_iPointsTotal[iPlayer] += survive;
- Print(iPlayer, "^3You gained^4 %i Points^3 for^4 surviving the round!", survive);
- set_hudmessage(0, 126, 255, 0.70, 0.84, 0, 6.0, 5.0, 0.25, 0.25, 2);
- show_hudmessage(iPlayer, "You got %i points for surviving the round!", survive);
- }
- }
- return PLUGIN_HANDLED;
- }
- public client_connect(id)
- {
- if( IsPlayer(id) )
- {
- LoadData(id);
- new szAuth[35];
- get_user_authid(id, szAuth, charsmax(szAuth));
- if( equal(szAuth, g_iTopThree[0]) || equal(szAuth, g_iTopThree[1]) || equal(szAuth, g_iTopThree[2]) )
- {
- give_vipaccess(id);
- }
- else
- {
- take_vipaccess(id);
- }
- }
- }
- public client_disconnect(id)
- {
- if( IsPlayer(id) )
- {
- SaveData(id);
- }
- }
- public eventNewRound()
- {
- new iEnt = -1;
- while( (iEnt = find_ent_by_class(iEnt, "entTask")) )
- {
- remove_entity(iEnt);
- }
- iEnt = create_entity("info_target");
- if( iEnt )
- {
- entity_set_string(iEnt, EV_SZ_classname, "entTask");
- entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.5);
- }
- }
- public eventDeath()
- {
- if( get_playersnum() < get_pcvar_num(g_pCvar[PLAYERREQ]) )
- {
- return PLUGIN_HANDLED;
- }
- new iKiller = read_data(1);
- new iVictim = read_data(2);
- new iHS = read_data(3);
- new CsTeams:iTeam;
- if( IsPlayer(iKiller) )
- {
- iTeam = cs_get_user_team(iKiller);
- }
- if( IsPlayer(iKiller) && IsPlayer(iVictim) )
- {
- if( iTeam != cs_get_user_team(iVictim) )
- {
- new iKillPoints;
- if( !iHS )
- {
- iKillPoints = get_pcvar_num(g_pCvar[KILLXP]);
- }
- else
- {
- iKillPoints = (get_pcvar_num(g_pCvar[KILLXP]) + 2);
- }
- g_iPoints[iKiller] += iKillPoints;
- g_iPointsTotal[iKiller] += iKillPoints;
- new szName[32];
- get_user_name(iVictim, szName, charsmax(szName));
- Print(iKiller, "You gained^x04 %i Point%s^x03 for killing^x01 %s^x03%s !", iKillPoints, iKillPoints > 1 ? "s" : "", szName, iHS ? " with a^x01 Headshot^x03" : "");
- set_hudmessage(0, 126, 255, 0.70, 0.84, 0, 6.0, 5.0, 0.25, 0.25, 2);
- show_hudmessage(iKiller, "You got %i points for making a kill!", iKillPoints);
- new iKilled = get_pcvar_num(g_pCvar[KILLED]);
- g_iPoints[iVictim] -= iKilled;
- g_iPointsTotal[iKiller] -= iKilled;
- Print(iVictim, "You lost^x04 %i Point%s^x03 for getting killed !", iKilled, iKilled > 1 ? "s" : "");
- set_hudmessage(228, 0, 0, 0.70, 0.84, 0, 6.0, 5.0, 0.25, 0.25, 2);
- show_hudmessage(iVictim, "You lost %i points for getting killed!", iKilled);
- }
- }
- if( iKiller == iVictim )
- {
- if( iTeam == CS_TEAM_T )
- {
- new iPoints = get_pcvar_num(g_pCvar[SUICIDE]);
- g_iPoints[iKiller] -= iPoints;
- g_iPointsTotal[iKiller] -= iPoints;
- Print(iKiller, "You lost^x04 %i Point%s^x03 for suiciding !", iPoints, iPoints > 1 ? "s" : "");
- set_hudmessage(228, 0, 0, 0.70, 0.84, 0, 6.0, 5.0, 0.25, 0.25, 2);
- show_hudmessage(iVictim, "You lost %i points for making a suicide!", iPoints);
- }
- }
- if( g_iPoints[iVictim] < 0 )
- {
- g_iPoints[iVictim] = 0;
- }
- if( g_iPointsTotal[iVictim] < 0 )
- {
- g_iPointsTotal[iVictim] = 0;
- }
- g_bAlive[iVictim] = false;
- SaveData(iKiller);
- SaveData(iVictim);
- return PLUGIN_HANDLED;
- }
- public TeamMenu(id)
- {
- new szTitle[128];
- formatex(szTitle, charsmax(szTitle), "\r[PM] \wPointMod by \ybiffmeizter^n\y- Main Menu");
- new iMenu = menu_create(szTitle, "handleTeamMenu", 0);
- new szPoints[20];
- formatex(szPoints, charsmax(szPoints), "Points: \r%i", g_iPoints[id]);
- menu_additem(iMenu, "\yTotal Top", "1");
- menu_additem(iMenu, "Player Info", "2");
- menu_addblank(iMenu, 0);
- menu_additem(iMenu, "Terrorist Shop", "3");
- menu_additem(iMenu, "Counter-Terrorist Shop", "4");
- menu_addblank(iMenu, 0);
- menu_additem(iMenu, "Donate Points", "5");
- menu_addblank(iMenu);
- menu_addtext(iMenu, szPoints, 0);
- menu_addblank(iMenu);
- menu_setprop(iMenu, MPROP_EXITNAME, "Close");
- menu_display(id, iMenu);
- return PLUGIN_HANDLED;
- }
- public handleTeamMenu(id, iMenu, iItem)
- {
- if( iItem == MENU_EXIT )
- {
- menu_destroy(iMenu);
- return PLUGIN_HANDLED;
- }
- new iAccess, iCallback;
- new szData[3];
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new iKey = str_to_num(szData);
- switch( iKey )
- {
- case 1:
- {
- CmdMOTDTop(id);
- TeamMenu(id);
- }
- case 2: CmdPlayerInfo(id);
- case 3: MainMenu(id, CS_TEAM_T);
- case 4: MainMenu(id, CS_TEAM_CT);
- case 5: DonateMenu(id);
- }
- return PLUGIN_HANDLED;
- }
- public MainMenu(id, CsTeams:TYPE)
- {
- new szTitle[128];
- formatex(szTitle, charsmax(szTitle), "\r[PM] \wPointMod by \ybiffmeizter^n\y- %sTerrorist Shop\r", TYPE == CS_TEAM_T ? "" : "Counter-");
- new iMenu;
- new iCallback;
- if( TYPE == CS_TEAM_T )
- {
- iCallback = menu_makecallback("callbackMainMenu_T");
- iMenu = menu_create(szTitle, "handleMainMenu_T", 0);
- }
- else
- {
- iCallback = menu_makecallback("callbackMainMenu_CT");
- iMenu = menu_create(szTitle, "handleMainMenu_CT", 0);
- }
- static szItem[128], iValue, iPrice;
- new iKey[3];
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- num_to_str(iItem, iKey, charsmax(iKey));
- iValue = (ItemInfo[iItem][MaxValue] / ItemInfo[iItem][Levels] * (g_iItemLevel[id][iItem][TYPE] + 1));
- iPrice = g_iItemPrice[iItem][g_iItemLevel[id][iItem][TYPE]];
- if( g_iItemLevel[id][iItem][TYPE] >= ItemInfo[iItem][Levels] )
- {
- switch( iItem )
- {
- case NoPainShock: formatex(szItem, charsmax(szItem), "\d%s: \yYes!", ItemInfo[iItem][Name]);
- default: formatex(szItem, charsmax(szItem), "\d%s: \wMax Level! \r(\w%s%i%s\r)", ItemInfo[iItem][Name], iItem == Damage ? "+" : "", ItemInfo[iItem][MaxValue], ItemInfo[iItem][Prefix]);
- }
- }
- else if( g_iPoints[id] < iPrice )
- {
- switch( iItem )
- {
- case NoPainShock: formatex(szItem, charsmax(szItem), "\d%s: \y%i Points", ItemInfo[iItem][Name], iPrice);
- default: formatex(szItem, charsmax(szItem), "\d%s: \wLevel %i \r(\w%s%i%s\r) \y%i Points", ItemInfo[iItem][Name], g_iItemLevel[id][iItem][TYPE] + 1, iItem == Damage ? "+" : "", iValue, ItemInfo[iItem][Prefix], iPrice);
- }
- }
- else
- {
- switch( iItem )
- {
- case NoPainShock: formatex(szItem, charsmax(szItem), "\w%s: \y%i Points", ItemInfo[iItem][Name], iPrice);
- default: formatex(szItem, charsmax(szItem), "\w%s: Level %i \r(\w%s%i%s\r) \y%i Points", ItemInfo[iItem][Name], g_iItemLevel[id][iItem][TYPE] + 1, iItem == Damage ? "+" : "", iValue, ItemInfo[iItem][Prefix], iPrice);
- }
- }
- menu_additem(iMenu, szItem, iKey, _, iCallback);
- }
- menu_setprop(iMenu, MPROP_EXITNAME, "Back");
- menu_display(id, iMenu);
- }
- public callbackMainMenu_T(id, iMenu, iItem)
- {
- new iAccess, iCallback;
- new szData[3];
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new iItem = str_to_num(szData);
- if( g_iItemLevel[id][iItem][CS_TEAM_T] >= ItemInfo[iItem][Levels] )
- {
- return ITEM_DISABLED;
- }
- else if( g_iPoints[id] < g_iItemPrice[iItem][g_iItemLevel[id][iItem][CS_TEAM_T]] )
- {
- return ITEM_DISABLED;
- }
- return ITEM_ENABLED;
- }
- public callbackMainMenu_CT(id, iMenu, iItem)
- {
- new iAccess, iCallback;
- new szData[3];
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new iItem = str_to_num(szData);
- if( g_iItemLevel[id][iItem][CS_TEAM_CT] >= ItemInfo[iItem][Levels] )
- {
- return ITEM_DISABLED;
- }
- else if( g_iPoints[id] < g_iItemPrice[iItem][g_iItemLevel[id][iItem][CS_TEAM_CT]] )
- {
- return ITEM_DISABLED;
- }
- return ITEM_ENABLED;
- }
- public handleMainMenu_T(id, iMenu, iItem)
- {
- if( iItem == MENU_EXIT )
- {
- menu_destroy(iMenu);
- TeamMenu(id);
- return PLUGIN_HANDLED;
- }
- new iAccess, iCallback;
- new szData[3];
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new iItem = str_to_num(szData);
- new iPrice = g_iItemPrice[iItem][g_iItemLevel[id][iItem][CS_TEAM_T]];
- g_iPoints[id] -= iPrice;
- g_iItemLevel[id][iItem][CS_TEAM_T]++;
- Print(id, "You bought^x01 %s Level: %i^x03 !", ItemInfo[iItem][Name], g_iItemLevel[id][iItem][CS_TEAM_T]);
- MainMenu(id, CS_TEAM_T);
- SaveData(id);
- return PLUGIN_HANDLED;
- }
- public handleMainMenu_CT(id, iMenu, iItem)
- {
- if( iItem == MENU_EXIT )
- {
- menu_destroy(iMenu);
- TeamMenu(id);
- return PLUGIN_HANDLED;
- }
- new iAccess, iCallback;
- new szData[3];
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new iItem = str_to_num(szData);
- new iPrice = g_iItemPrice[iItem][g_iItemLevel[id][iItem][CS_TEAM_CT]];
- g_iPoints[id] -= iPrice;
- g_iItemLevel[id][iItem][CS_TEAM_CT]++;
- Print(id, "You bought^x01 %s Level: %i^x03 !", ItemInfo[iItem][Name], g_iItemLevel[id][iItem][CS_TEAM_CT]);
- MainMenu(id, CS_TEAM_CT);
- SaveData(id);
- return PLUGIN_HANDLED;
- }
- public DonateMenu(id)
- {
- new iMenu = menu_create("\r[PM] \wPointMod by \ybiffmeizter^n\y- Donate Menu\r", "handleDonateMenu");
- new iPlayers[32], szName[32], szKey[3], iNum, iPlayer;
- get_players(iPlayers, iNum);
- for( new i; i < iNum; i++ )
- {
- iPlayer = iPlayers[i];
- num_to_str(iPlayer, szKey, charsmax(szKey));
- get_user_name(iPlayer, szName, charsmax(szName));
- menu_additem(iMenu, szName, szKey);
- }
- menu_setprop(iMenu, MPROP_EXITNAME, "Back");
- menu_display(id, iMenu, 0);
- }
- public handleDonateMenu(id, iMenu, iItem)
- {
- if( iItem == MENU_EXIT )
- {
- menu_destroy(iMenu);
- TeamMenu(id);
- return PLUGIN_HANDLED;
- }
- new szData[6], iAccess, iCallback;
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- g_iTarget[id] = str_to_num(szData);
- new szName[32];
- get_user_name(g_iTarget[id], szName, charsmax(szName));
- Print(id, "You choosed:^x01 %s^x03 !", szName);
- Print(id, "Type the amount of Points:");
- client_cmd(id, "messagemode _________DonatePointValue");
- client_cmd(id, "spk fvox/blip");
- return PLUGIN_HANDLED;
- }
- public CmdDonatePoints(id)
- {
- new szArg[5];
- read_argv(1, szArg, charsmax(szArg));
- if( !strlen(szArg) )
- {
- Print(id, "You need to type a value !");
- client_cmd(id, "messagemode _________DonatePointValue");
- client_cmd(id, "spk fvox/blip");
- return PLUGIN_HANDLED;
- }
- new iValue = str_to_num(szArg);
- if( iValue <= 0 )
- {
- Print(id, "You need to type a value over 0 !");
- client_cmd(id, "messagemode _________DonatePointValue");
- client_cmd(id, "spk fvox/blip");
- return PLUGIN_HANDLED;
- }
- else if( iValue > g_iPoints[id] )
- {
- Print(id, "You only have^x01 %i Points^x03 !", g_iPoints[id]);
- client_cmd(id, "messagemode _________DonatePointValue");
- client_cmd(id, "spk fvox/blip");
- return PLUGIN_HANDLED;
- }
- new iTarget = g_iTarget[id];
- if( !iTarget )
- {
- Print(id, "Invalid Target !");
- return PLUGIN_HANDLED;
- }
- if( iTarget == id )
- {
- Print(id, "You can't give points to yourself!");
- return PLUGIN_HANDLED;
- }
- g_iPoints[id] -= iValue;
- g_iPointsTotal[id] -= iValue;
- g_iPoints[iTarget] += iValue;
- g_iPointsTotal[iTarget] += iValue;
- new szName[2][32];
- get_user_name(iTarget, szName[0], charsmax(szName[]));
- get_user_name(id, szName[1], charsmax(szName[]));
- Print(id, "You donated^x01 %i Points^x03 to^x01 %s !", iValue, szName[0]);
- Print(iTarget, "^x01%s^x03 donated^x01 %i Points^x03 to you !", szName[1], iValue);
- log_amx("Pointmod Donate Info: %s donated %i points to %s", szName[1], iValue, szName[0]);
- return PLUGIN_HANDLED;
- }
- public GivePlayerItems(id)
- {
- id -= TASK_GIVEITEMS;
- if( !g_bAlive[id] || !IsPlayer(id) )
- {
- return PLUGIN_CONTINUE;
- }
- new iValue = pm_get_user_maxhealth(id);
- if( iValue > 100 )
- {
- set_user_health(id, iValue);
- }
- iValue = ItemInfo[Armor][MaxValue] / ItemInfo[Armor][Levels] * g_iItemLevel[id][Armor][cs_get_user_team(id)];
- if( iValue == 0 )
- {
- cs_set_user_armor(id, iValue, CS_ARMOR_NONE);
- }
- else if( iValue < 100 )
- {
- cs_set_user_armor(id, iValue, CS_ARMOR_KEVLAR);
- }
- else
- {
- cs_set_user_armor(id, iValue, CS_ARMOR_VESTHELM);
- }
- return PLUGIN_HANDLED;
- }
- public FwdPlayerKilled(id)
- {
- new CsTeams:iTeam = cs_get_user_team(id);
- new iRespawnChance = (ItemInfo[Respawn][MaxValue] / ItemInfo[Respawn][Levels] * g_iItemLevel[id][Respawn][iTeam]);
- if( IsPlayer(id) )
- {
- if( g_bRespawned[id] == false )
- {
- if( random_num(1, 100) <= iRespawnChance )
- {
- g_bRespawned[id] = true;
- set_task(1.0, "taskRespawnPlayer", (id + TASK_RESPAWN));
- new szName[32];
- get_user_name(id, szName, charsmax(szName));
- new iPlayers[32], iNum, iPlayer;
- get_players(iPlayers, iNum);
- for( new i = 0; i < iNum; i++ )
- {
- iPlayer = iPlayers[i];
- if( iPlayer != id )
- {
- Print(iPlayer, "^x01%s^x03 got respawned !^x04 (%i%%)", szName, iRespawnChance);
- }
- else
- {
- Print(id, "You got respawned !^x04 (%i%%)", iRespawnChance);
- }
- }
- }
- }
- }
- }
- public FwdPlayerSpawn_Post(id)
- {
- if( is_user_alive(id) )
- {
- g_bAlive[id] = true;
- set_task(1.0, "GivePlayerItems", id + TASK_GIVEITEMS);
- }
- }
- public taskRespawnPlayer(id)
- {
- ExecuteHamB(Ham_CS_RoundRespawn, (id - TASK_RESPAWN));
- }
- public FwdPlayerTakeDamage(id, iInflictor, idAttacker, Float:fDamage, iBits)
- {
- if( iBits & DMG_FALL )
- {
- new iDamage = ItemInfo[FallDamage][MaxValue] / ItemInfo[FallDamage][Levels] * g_iItemLevel[id][FallDamage][cs_get_user_team(id)];
- SetHamParamFloat(4, fDamage * (1.0 - (float(iDamage) / 100.0)));
- }
- else
- {
- if( IsPlayer(idAttacker) )
- {
- if( fDamage > 0 )
- {
- new iDamage = ItemInfo[Damage][MaxValue] / ItemInfo[Damage][Levels] * g_iItemLevel[idAttacker][Damage][cs_get_user_team(id)];
- SetHamParamFloat(4, fDamage * (1.0 + (float(iDamage) / 100.0)));
- }
- }
- }
- return HAM_IGNORED;
- }
- public FwdPlayerTakeDamage_Post(id, iInflictor, idAttacker, Float:fDamage, iBits)
- {
- new CsTeams:iTeam;
- iTeam = cs_get_user_team(id);
- if( g_iItemLevel[id][NoPainShock][iTeam] > 0 )
- {
- set_pdata_float(id, 108, 1.0);
- }
- }
- public CmdShowPoints(id)
- {
- if( get_playersnum() < get_pcvar_num(g_pCvar[PLAYERREQ]) )
- {
- set_hudmessage(110, 110, 110, -1.0, 0.88, 0, 6.0, 5.02, 0.0, 0.0, -1);
- show_hudmessage(id, "There are less than %i players.^nYou won't get any Points !", get_pcvar_num(g_pCvar[PLAYERREQ]));
- }
- /*
- if( is_user_alive(id) )
- {
- set_dhudmessage(90, 90, 90, 0.8, 0.88, 0, 6.0, 10.02, 0.0, 0.0, -1);
- show_dhudmessage(id, "Points: %i", g_iPoints[id]);
- set_task(10.0, "CmdShowPoints", id);
- }
- */
- }
- public CmdHideRank(id)
- {
- if( g_bUsedRank[id] )
- {
- Print(id, "Do not use this command to often !");
- }
- CmdRank(id);
- g_bUsedRank[id] = true;
- return PLUGIN_HANDLED;
- }
- public CmdRank(id)
- {
- new Array:aNames, Array:aAuths, Array:aXPs;
- new iTotal = SortTopPlayers(aNames, aAuths, aXPs);
- new szAuth[35];
- get_user_authid(id, szAuth, charsmax(szAuth));
- new szAuth2[35], i;
- for( i = 0; i < iTotal; i++ )
- {
- ArrayGetString(aAuths, i, szAuth2, charsmax(szAuth2));
- if( equal(szAuth, szAuth2) )
- {
- new szData[256], szXP[11];
- nvault_get(g_iVault, szAuth2, szData, charsmax(szData));
- parse(szData, szXP, charsmax(szXP));
- Print(id, "Your rank is^x01 %i^x03 of^x01 %i^x03 with^x04 %i points", (i + 1), iTotal, str_to_num(szXP));
- break;
- }
- }
- ArrayDestroy(aNames);
- ArrayDestroy(aAuths);
- ArrayDestroy(aXPs);
- }
- public CreateTopTen()
- {
- new Array:aNames, Array:aAuths, Array:aXPs;
- new iTotal = SortTopPlayers(aNames, aAuths, aXPs);
- new szName[156], szAuth[156];
- for( new i = 0; i < TOPRANKS; i++ )
- {
- if( i < iTotal )
- {
- ArrayGetString(aNames, i, szName, charsmax(szName));
- ArrayGetString(aAuths, i, szAuth, charsmax(szAuth));
- replace_all(szName, charsmax(szName), "&", "&");
- replace_all(szName, charsmax(szName), "<", "<");
- replace_all(szName, charsmax(szName), ">", ">");
- formatex(g_szTopNames[i + 1], charsmax(g_szTopNames[]), "%s", szName);
- formatex(g_iTopAuth[i + 1], charsmax(g_iTopAuth[]), "%s", szAuth);
- g_iTopPoints[i + 1] = ArrayGetCell(aXPs, i);
- if( i < 3 )
- {
- formatex(g_iTopThree[i], charsmax(g_iTopThree[]), "%s", szAuth);
- }
- }
- }
- ArrayDestroy(aNames);
- ArrayDestroy(aAuths);
- ArrayDestroy(aXPs);
- return PLUGIN_HANDLED;
- }
- public CmdMOTDTop(id)
- {
- new szMOTD[2368], iLen;
- iLen = formatex(szMOTD[iLen], charsmax(szMOTD)-iLen,"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:11px}</STYLE><table cellpadding=1 cellspacing=1 border=0>");
- iLen += formatex(szMOTD[iLen], charsmax(szMOTD)-iLen, "<tr bgcolor=#333333><th width=5%%><align=left font color=white> Rank <th width=10%%> Nick <th width=10%%> Steamid <th width=10%%> Total points");
- for( new i = 0; i < TOPRANKS; i++ )
- {
- if( i == 0 || i == 2 || i == 4 || i == 6 || i == 8 )
- {
- iLen += formatex(szMOTD[iLen], charsmax(szMOTD)-iLen, "<tr align=left%s><td align=left><font color=white> %i. <td> %s <td> %s <td> %i", " bgcolor=#2b5b95", (i + 1), g_szTopNames[i + 1], g_iTopAuth[i + 1], g_iTopPoints[i + 1]);
- }
- else
- {
- iLen += formatex(szMOTD[iLen], charsmax(szMOTD)-iLen, "<tr align=left%s><td align=left><font color=white> %i. <td> %s <td> %s <td> %i", " bgcolor=#333333", (i + 1), g_szTopNames[i + 1], g_iTopAuth[i + 1], g_iTopPoints[i + 1]);
- }
- }
- iLen += formatex(szMOTD[iLen], charsmax(szMOTD)-iLen, "</table></body>");
- show_motd(id, szMOTD, "HNS PointMod by dinnk.");
- return PLUGIN_HANDLED;
- }
- public CmdPlayerInfo(id)
- {
- new iMenu = menu_create("\r[PM] \wPointMod by \ybiffmeizter^n\y- Player Menu\w:\r", "handlePlayerMenu");
- new iPlayers[32], iNum, iPlayer, szName[32], szKey[3];
- get_players(iPlayers, iNum);
- for( new i; i < iNum; i++ )
- {
- iPlayer = iPlayers[i];
- get_user_name(iPlayer, szName, charsmax(szName));
- num_to_str(iPlayer, szKey, charsmax(szKey));
- menu_additem(iMenu, szName, szKey);
- }
- menu_setprop(iMenu, MPROP_EXITNAME, "Back");
- menu_display(id, iMenu, 0);
- }
- public handlePlayerMenu(id, iMenu, iItem)
- {
- if( iItem == MENU_EXIT )
- {
- menu_destroy(iMenu);
- TeamMenu(id);
- return PLUGIN_HANDLED;
- }
- new szData[6], iAccess, iCallback;
- menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), _, _, iCallback);
- new i = str_to_num(szData);
- new szAuth[35], szName[32];
- get_user_authid(i, szAuth, charsmax(szAuth));
- get_user_name(i, szName, charsmax(szName));
- static szMotd[2500];
- new iLen = formatex(szMotd, charsmax(szMotd), "<html>");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<body style=^"background-color:#030303; color:#FFFFFF^">");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<p align=^"center^">");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<h2><b>Player Info</b></h2>");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<p align=^"left^">");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "Name: %s<br>", szName);
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "Auth: %s<br>", szAuth);
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "Points: %i<br>", g_iPoints[i]);
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "Total Points: %i<br><br>", g_iPointsTotal[i]);
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<br><h2><b>Terrorist Levels:</b></h2>");
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- if( ItemInfo[iItem][Levels] != 1 )
- {
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "%s - Level: %i/%i<br>", ItemInfo[iItem][Name], g_iItemLevel[i][iItem][CS_TEAM_T], ItemInfo[iItem][Levels]);
- }
- }
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- if( ItemInfo[iItem][Levels] == 1 )
- {
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "%s: %s<br>", ItemInfo[iItem][Name], g_iItemLevel[i][iItem][CS_TEAM_T] > 0 ? "Yes" : "No");
- }
- }
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "<br><h2><b>Counter-Terrorist Levels:</b></h2>");
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- if( ItemInfo[iItem][Levels] != 1 )
- {
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "%s - Level: %i/%i<br>", ItemInfo[iItem][Name], g_iItemLevel[i][iItem][CS_TEAM_CT], ItemInfo[iItem][Levels]);
- }
- }
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- if( ItemInfo[iItem][Levels] == 1 )
- {
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "%s: %s<br>", ItemInfo[iItem][Name], g_iItemLevel[i][iItem][CS_TEAM_CT] > 0 ? "Yes" : "No");
- }
- }
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "</p>");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "</body>");
- iLen += formatex(szMotd[iLen], charsmax(szMotd) - iLen, "</html>");
- show_motd(id, szMotd, "");
- CmdPlayerInfo(id);
- menu_destroy(iMenu);
- return PLUGIN_HANDLED;
- }
- public CmdGive(id)
- {
- if( !access(id, ADMIN_IMMUNITY) )
- {
- console_print(id, "You don't have access!");
- return PLUGIN_HANDLED;
- }
- new szArg[35];
- read_argv(1, szArg, charsmax(szArg));
- new iPlayer = cmd_target(id, szArg, CMDTARGET_NO_BOTS);
- if( !iPlayer )
- {
- return PLUGIN_HANDLED;
- }
- read_argv(2, szArg, charsmax(szArg));
- new iPoints = str_to_num(szArg);
- if( iPoints <= 0 )
- {
- console_print(id, "Not enough points!");
- if( iPoints < 0 )
- {
- console_print(id, "Use pm_removepoints instead !");
- }
- return PLUGIN_HANDLED;
- }
- if( iPoints > 999 )
- {
- console_print(id, "Too much points!");
- return PLUGIN_HANDLED;
- }
- g_iPoints[iPlayer] += iPoints;
- g_iPointsTotal[iPlayer] += iPoints;
- new szName[2][32], szAuth[2][35];
- get_user_name(id, szName[0], charsmax(szName[]));
- get_user_name(iPlayer, szName[1], charsmax(szName[]));
- get_user_authid(id, szAuth[0], charsmax(szAuth[]));
- get_user_authid(iPlayer, szAuth[1], charsmax(szAuth[]));
- Print(0, "^x01%s^x03 gave^x01 %i Point%s^x03 to^x01 %s^x03 !", szName[0], iPoints, iPoints > 1 ? "s" : "", szName[1]);
- log_amx("ADMIN: %s (%s) gave points to %s (%s) Amount: %i Points", szName[0], szAuth[0], szName[1], szAuth[1], iPoints);
- SaveData(iPlayer);
- return PLUGIN_HANDLED;
- }
- public CmdTake(id)
- {
- if( !access(id, ADMIN_IMMUNITY) )
- {
- console_print(id, "You don't have access!");
- return PLUGIN_HANDLED;
- }
- new szArg[35];
- read_argv(1, szArg, charsmax(szArg));
- new iPlayer = cmd_target(id, szArg, CMDTARGET_NO_BOTS);
- if( !iPlayer )
- {
- return PLUGIN_HANDLED;
- }
- read_argv(2, szArg, charsmax(szArg));
- new iPoints = str_to_num(szArg);
- if( iPoints <= 0 )
- {
- return PLUGIN_HANDLED;
- }
- if( iPoints >= g_iPoints[iPlayer] )
- {
- console_print(id, "Too much points (User has: %i) !", g_iPoints[iPlayer]);
- return PLUGIN_HANDLED;
- }
- g_iPoints[iPlayer] -= iPoints;
- g_iPointsTotal[iPlayer] -= iPoints;
- new szName[2][32], szAuth[2][35];
- get_user_authid(id, szAuth[0], charsmax(szAuth[]));
- get_user_authid(iPlayer, szAuth[1], charsmax(szAuth[]));
- get_user_name(id, szName[0], charsmax(szName[]));
- get_user_name(iPlayer, szName[1], charsmax(szName[]));
- Print(0, "^x01%s^x03 removed^x01 %i Point%s^x03 from^x01 %s^x03 !", szName[0], iPoints, iPoints > 1 ? "s" : "", szName[1]);
- log_amx("ADMIN: %s (%s) removed points from: %s (%s) Amount: %i Points", szName[0], szAuth[0], szName[1], szAuth[1], iPoints);
- SaveData(iPlayer);
- return PLUGIN_HANDLED;
- }
- public CmdReset(id)
- {
- if( !access(id, ADMIN_IMMUNITY) )
- {
- console_print(id, "You don't have access!");
- return PLUGIN_HANDLED;
- }
- nvault_prune(g_iVault, 0, get_systime());
- nvault_prune(g_iVault_Name, 0, get_systime());
- new iPlayers[32], iNum, iPlayer;
- get_players(iPlayers, iNum);
- for( new i = 0; i < iNum; i++ )
- {
- iPlayer = iPlayers[i];
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- g_iItemLevel[iPlayer][iItem][CS_TEAM_T] = 0;
- g_iItemLevel[iPlayer][iItem][CS_TEAM_CT] = 0;
- }
- g_iPoints[iPlayer] = 0;
- g_iPointsTotal[iPlayer] = 0;
- }
- server_cmd("restart");
- return PLUGIN_CONTINUE;
- }
- public CmdResetPerson(id)
- {
- if( !access(id, ADMIN_IMMUNITY) )
- {
- console_print(id, "You don't have access!");
- return PLUGIN_HANDLED;
- }
- new szArg[32];
- read_argv(1, szArg, charsmax(szArg));
- if( containi(szArg, "STEAM_") != -1 )
- {
- new szData[256], iTimestamp;
- if( nvault_lookup(g_iVault, szArg, szData, charsmax(szData), iTimestamp) )
- {
- new iLen = formatex(szData, charsmax(szData), "0 0");
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- iLen += formatex(szData[iLen], charsmax(szData) - iLen, " 0");
- iLen += formatex(szData[iLen], charsmax(szData) - iLen, " 0");
- }
- nvault_set(g_iVault, szArg, szData);
- }
- }
- else
- {
- new iPlayer = cmd_target(id, szArg, CMDTARGET_NO_BOTS);
- if( !iPlayer )
- {
- return PLUGIN_HANDLED;
- }
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- g_iItemLevel[iPlayer][iItem][CS_TEAM_T] = 0;
- g_iItemLevel[iPlayer][iItem][CS_TEAM_CT] = 0;
- }
- g_iPoints[iPlayer] = 0;
- g_iPointsTotal[iPlayer] = 0;
- SaveData(iPlayer);
- }
- return PLUGIN_HANDLED;
- }
- SortTopPlayers(&Array:aNames, &Array:aSteamIDs, &Array:aXPs)
- {
- aNames = ArrayCreate(32);
- aSteamIDs = ArrayCreate(35);
- aXPs = ArrayCreate(1);
- new hVault = nvault_util_open("HNSPointModNew");
- new iCount = nvault_util_count(hVault);
- new iPos;
- new szSteamID[35], szXP[11], iTimeStamp, szName[32];
- for( new i = 0; i < iCount; i++ )
- {
- iPos = nvault_util_read(hVault, iPos, szSteamID, charsmax(szSteamID), szXP, charsmax(szXP), iTimeStamp);
- nvault_get(g_iVault_Name, szSteamID, szName, charsmax(szName));
- ArrayPushString(aNames, szName);
- ArrayPushString(aSteamIDs, szSteamID);
- ArrayPushCell(aXPs, str_to_num(szXP));
- }
- nvault_util_close(hVault);
- new iXP;
- for( new i = 0, j; i < (iCount - 1); i++ )
- {
- iXP = ArrayGetCell(aXPs, i);
- for( j = i + 1; j < iCount; j++ )
- {
- if( iXP < ArrayGetCell(aXPs, j) )
- {
- ArraySwap(aNames, i, j);
- ArraySwap(aSteamIDs, i, j);
- ArraySwap(aXPs, i, j);
- i--;
- break;
- }
- }
- }
- return iCount;
- }
- public SaveData(id)
- {
- static szData[256];
- new szAuth[35];
- get_user_authid(id, szAuth, charsmax(szAuth));
- new iLen = formatex(szData, charsmax(szData), "%i %i", g_iPointsTotal[id], g_iPoints[id]);
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- iLen += formatex(szData[iLen], charsmax(szData) - iLen, " %i", g_iItemLevel[id][iItem][CS_TEAM_T]);
- iLen += formatex(szData[iLen], charsmax(szData) - iLen, " %i", g_iItemLevel[id][iItem][CS_TEAM_CT]);
- }
- nvault_set(g_iVault, szAuth, szData);
- new szName[32], szNameTemp[32];
- get_user_name(id, szName, charsmax(szName));
- formatex(szNameTemp, charsmax(szNameTemp), "%s", szName);
- nvault_set(g_iVault_Name, szAuth, szNameTemp);
- }
- public LoadData(id)
- {
- static szData[256];
- new szAuth[35], iTimestamp;
- get_user_authid(id, szAuth, charsmax(szAuth));
- if( nvault_lookup(g_iVault, szAuth, szData, charsmax(szData), iTimestamp) )
- {
- ParseLoadData(id, szData);
- }
- else
- {
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- g_iItemLevel[id][iItem][CS_TEAM_T] = 0;
- g_iItemLevel[id][iItem][CS_TEAM_CT] = 0;
- }
- g_iPoints[id] = 0;
- g_iPointsTotal[id] = 0;
- }
- }
- ParseLoadData(id, szData[256])
- {
- static szNum[11];
- strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
- g_iPointsTotal[id] = str_to_num(szNum);
- strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
- g_iPoints[id] = str_to_num(szNum);
- for( new iItem = 0; iItem < UPGRADES; iItem++ )
- {
- strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
- g_iItemLevel[id][iItem][CS_TEAM_T] = str_to_num(szNum);
- strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
- g_iItemLevel[id][iItem][CS_TEAM_CT] = str_to_num(szNum);
- }
- }
- Print(id, const szMsg[], any:...)
- {
- static i;
- i = id ? id : get_Player();
- if( !i )
- {
- return;
- }
- new szMessage[256];
- new iLen = formatex(szMessage, charsmax(szMessage), "^x04[Point Mod]^x03 ");
- vformat(szMessage[iLen], charsmax(szMessage) - iLen, szMsg, 3);
- szMessage[192] = '^0';
- static g_iMsgSayText;
- if( !g_iMsgSayText )
- {
- g_iMsgSayText = get_user_msgid("SayText");
- }
- new const szTeams[][] =
- {
- "",
- "TERRORIST",
- "CT",
- "SPECTATOR"
- };
- new CsTeams:iTeam = cs_get_user_team(i);
- team_Info(i, id, szTeams[0]);
- message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgSayText, _, id);
- write_byte(i);
- write_string(szMessage);
- message_end();
- team_Info(i, id, szTeams[_:iTeam]);
- }
- team_Info(iReceiver, iSender, szTeam[])
- {
- static g_iMsgTeamInfo;
- if( !g_iMsgTeamInfo )
- {
- g_iMsgTeamInfo = get_user_msgid("TeamInfo");
- }
- message_begin(iSender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgTeamInfo, _, iSender);
- write_byte(iReceiver);
- write_string(szTeam);
- message_end();
- }
- get_Player()
- {
- for( new id = 1; id <= get_maxplayers(); id++ )
- {
- return id;
- }
- return 0;
- }
- public CmdUpdatePoints(iEnt)
- {
- entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 5.0);
- new iPlayers[32], iNum, id;
- get_players(iPlayers, iNum);
- for( new i = 0; i < iNum; i++ )
- {
- id = iPlayers[i];
- if( g_bAlive[id] )
- {
- CmdShowPoints(id);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement