//************************************ Compile Settings ************************************// // Uncomment to use MySQL instead of the default nVault saving #define SQL // Admin flag settings for giving points/badges and server saved data reset // These can also be set in cmdaccess.ini without need to change here // (See amxconst.inc for more admin level constants) #define ADMIN_LEVEL ADMIN_IMMUNITY #define ADMIN_RESET ADMIN_IMMUNITY // Aby wlaczyc kolorowy say(colorchat) w grze odkomentuj //#define KOLOROWY_SAY // Note: Changing any of the above the above requires plugin to be recompiled //******************************************************************************************// #include #include #include #include #include #include #include #include #include new const gPluginName[] = "Battlefield 2: Rank Mod"; new const gPluginVersion[] = "1.0.4"; //Message sending variables #if defined KOLOROWY_SAY new gmsgStatusText; new gmsgScreenFade; new gmsgScreenShake; #else new gmsgStatusText; new gmsgScreenFade; new gmsgScreenShake; new gmsgSayText; #endif new gHUD; //Task #define TASK_HUD 9897 new gHudSyncAimInfo; new gMaxPlayers; new bool:gCZBotRegisterHam; #define MAX_RANKS 17 #define MAX_BADGES 10 //Motd variables new configsdir[200]; new configfile[200]; //Cvar vars new gPcvarBF2Active; new gPcvarBadgesActive; new gPcvarFreeAwp; new gPcvarXpMultiplier; new gPcvarIconTime; new gPcvarFlagKills; new gPcvarHelpUrl; new gPcvarBadgePowers; new gPcvarFlagRoundPoints; new gPcvarFlagMatchPoints; new gPcvarXpMinPlayers; new gPcvarHudOptions; new gPcvarStatusText; new gPcvarFFA; new gPcvarSaveType; new gPcvarRankBots; new gPcvarBotQuota; new gPcvarSVLan; //Cvar vars new new gPcvarHudCenter; new gPcvarGameShadows; //Current players info new gPlayerJump[33]; new g_PlayerRank[33]; new g_PlayerBadges[33][MAX_BADGES]; new knifekills[33]; new pistolkills[33]; new sniperkills[33]; new parakills[33]; new defuses[33]; new plants[33]; new explosions[33]; new accuracy[33]; new totalkills[33]; new gSaveKey[33][32]; new smgkills[33]; new shotgunkills[33]; new riflekills[33]; new grenadekills[33]; new g_count new bronze[33]; new silver[33]; new gold[33]; //Temp storage variables new numofbadges[33]; new bool:newplayer[33]; new g_lastwpn[33]; new bool:g_imobile[33]; new bool:freezetime; new highestrank; new highestrankid; new gStatsLoaded[33]; new gCurrentFOV[33]; new bool:gPlayerMedkitUsed[33]; new bool:is_on_knife[33]; new g_friend[33]; new bool:g_invis[33]; new menuselection[33]; //Server stats new highestrankserver, highestrankservername[32], mostkills, mostkillsid, mostkillsname[32], mostwins, mostwinsname[32]; new menuselected[33][3]; //0 - Badge/Kills selected 0/1 //1 - Badgenum/Kills //2 - Badgelevel //Sound Vars new gSoundRank[] = "bf2rank/bf2rank_promotion.wav"; //Rank gained sound new gSoundBadge[] = "bf2rank/bf2rank_award.wav"; //Badges earned sound //Sprite vars new gSprite[22]; #if defined SQL //SQl vars #include new Handle:g_SqlTuple; new g_Cache[512]; new bool:SQLenabled; new bool:gIntermission; #else //nVault #include new g_Vault; new gPcvarPruneDays; #endif new gPlayerName; //Bf2 includes #if defined KOLOROWY_SAY #include #endif #include "bf2/const.inl" #include "bf2/effect.inl" #include "bf2/cmds.inl" #include "bf2/events.inl" #include "bf2/save.inl" #include "bf2/forwards.inl" #include "bf2/check.inl" #include "bf2/badgepowers.inl" #include "bf2/menu.inl" #include "bf2/hud.inl" #include "bf2/othermods.inl" #include "bf2/csx.inl" #include "bf2/ham.inl" #include "bf2/apteczka.inl" #if defined SQL #include "bf2/sql.inl" #endif public plugin_init() { register_plugin(gPluginName, gPluginVersion, "pRED // MisieQ // Dawedo"); //Bazuje na Battlefield 2: Rank Mod 1.5.3 by pRED* //Register all the say commands //Public register_clcmd("say /ranks","show_rankhelp",0, "Pokazuje Informacje o Ranku"); register_clcmd("say_team /ranks","show_rankhelp",0, "Pokazuje Informacje o Ranku"); register_clcmd("say /badges1","show_badgehelp",0, "Pokazuje Informacje o Odznakach"); register_clcmd("say_team /badges1","show_badgehelp",0, "Pokazuje Informacje o Odznakach"); register_clcmd("say /odznaki1","show_badgehelp",0, "Pokazuje Informacje o Odznakach"); register_clcmd("say_team /odznaki1","show_badgehelp",0, "Pokazuje Informacje o Odznakach"); register_clcmd("say /badges2","show_badgehelp2",0, "Pokazuje Informacje o Odznakach 2"); register_clcmd("say_team /badges2","show_badgehelp2",0, "Pokazuje Informacje o Odznakach 2"); register_clcmd("say /odznaki2","show_badgehelp2",0, "Pokazuje Informacje o Odznakach 2"); register_clcmd("say_team /odznaki2","show_badgehelp2",0, "Pokazuje Informacje o Odznakach 2"); register_clcmd("say /badges3","show_badgehelp3",0, "Pokazuje Informacje o Odznakach 3"); register_clcmd("say_team /badges3","show_badgehelp3",0, "Pokazuje Informacje o Odznakach 3"); register_clcmd("say /odznaki3","show_badgehelp3",0, "Pokazuje Informacje o Odznakach 3"); register_clcmd("say_team /odznaki3","show_badgehelp3",0, "Pokazuje Informacje o Odznakach 3"); register_clcmd("say", "cmd_say", 0, " "); register_clcmd("say_team", "cmd_say", 0, " "); register_clcmd("say /who", "cmd_who", 0, "Wyswietla liste graczy i ich pozimy"); register_clcmd("say_team /who", "cmd_who", 0, "Wyswietla liste graczy i ich pozimy"); register_clcmd("say /gracze", "cmd_who", 0, "Wyswietla liste graczy i ich pozimy"); register_clcmd("say_team /gracze", "cmd_who", 0, "Wyswietla liste graczy i ich pozimy"); register_clcmd("say /help", "cmd_help", 0, "Pokaz pomoc BF2Mod"); register_clcmd("say_team /help", "cmd_help", 0, "Pokaz pomoc BF2Mod"); register_clcmd("say /bf2menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team /bf2menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say bf2menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team bf2menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say /bf2", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team /bf2", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say bf2", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team bf2", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say /menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team /menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team menu", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say /help", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team /help", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say help", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say_team help", "Bf2menu", 0, "Pokazuje Menu"); register_clcmd("say /bf2helpmenu", "helpmenu", 0, "Pokazuje Menu Pomocy"); register_clcmd("say_team /bf2helpmenu", "helpmenu", 0, "Pokazuje Menu Pomocy"); register_clcmd("say /bf2statsmenu", "helpmenu", 0, "Pokazuje Menu Statystyk"); register_clcmd("say_team /bf2statsmenu", "helpmenu", 0, "Pokazuje Menu Statystyk"); register_clcmd("say /bf2adminmenu", "adminmenu", 0, "Pokazuje Menu Admina"); register_clcmd("say_team /bf2adminmenu", "adminmenu", 0, "Pokazuje Menu Admina"); register_clcmd("say /bf2stats", "show_stats", 0, "Pokazuje twoje aktualne statystyki"); register_clcmd("say_team /bf2stats", "show_stats", 0, "Pokazuje twoje aktualne statystyki"); register_clcmd("say /serverstats", "show_server_stats", 0, "Pokazuje aktualne statystyki serwera"); register_clcmd("say_team /serverstats", "show_server_stats", 0, "Pokazuje aktualne statystyki serwera"); register_clcmd("say /bf2save", "save_badges", 0, "Zapisuje Aktualne Statystyki"); register_clcmd("say_team /bf2save", "save_badges", 0, "Zapisuje Aktualne Statystyki"); //Admin register_clcmd("bf2_addbadge", "add_badge", ADMIN_LEVEL, " "); register_clcmd("bf2_addkills", "add_kills", ADMIN_LEVEL, " "); //Cvars //FCVAR_SERVER cvar for game monitor. register_cvar("bf2_version", gPluginVersion, FCVAR_SERVER); // Set cvar to update version in case new version loaded while server still running set_cvar_string("bf2_version", gPluginVersion); gPcvarBF2Active = register_cvar("bf2_active", "1"); gPcvarBadgesActive = register_cvar("bf2_badges", "1"); gPcvarFreeAwp = register_cvar("bf2_awp", "0"); gPcvarXpMultiplier = register_cvar("bf2_xpmultiplier", "0.1"); gPcvarXpMinPlayers = register_cvar("bf2_xpminplayers", "2"); gPcvarIconTime = register_cvar("bf2_icon_time", "1.5"); gPcvarHelpUrl = register_cvar("bf2_help_url", "http://misieq.sileman.net.pl/bf2webdocs"); gPcvarBadgePowers = register_cvar("bf2_badgepowers", "0"); gPcvarHudOptions = register_cvar("bf2_hud_options", "abcde"); gPcvarStatusText = register_cvar("bf2_statustext", "1"); #if !defined SQL gPcvarPruneDays = register_cvar("bf2_reset_days", "21"); #endif gPcvarFFA = register_cvar("bf2_ffa", "0"); gPcvarHudCenter = register_cvar("bf2_hud", "0"); gPcvarGameShadows = register_cvar("bf2_shadows", "0"); gPcvarFlagKills = register_cvar("bf2_flag_kills", "2"); gPcvarFlagRoundPoints = register_cvar("bf2_flag_round_kills", "0"); gPcvarFlagMatchPoints = register_cvar("bf2_flag_match_kills", "0"); gPcvarSaveType = get_cvar_pointer("csstats_rank"); gPcvarRankBots = get_cvar_pointer("csstats_rankbots"); gPcvarBotQuota = get_cvar_pointer("bot_quota"); gPcvarSVLan = get_cvar_pointer("sv_lan"); //Message sending. #if defined KOLOROWY_SAY gmsgStatusText = get_user_msgid("StatusText"); gmsgScreenFade = get_user_msgid("ScreenFade"); gmsgScreenShake = get_user_msgid("ScreenShake"); #else gmsgStatusText = get_user_msgid("StatusText"); gmsgScreenFade = get_user_msgid("ScreenFade"); gmsgScreenShake = get_user_msgid("ScreenShake"); gmsgSayText = get_user_msgid("SayText"); #endif gHUD = CreateHudSyncObj(); //Register events, logs and forwards to be captured register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0"); //add freeztime start code register_event("CurWeapon", "Event_CurWeapon", "be", "1=1"); register_event("SetFOV", "Event_SetFOV", "be"); register_event("DeathMsg", "Event_DeathMsg", "a"); register_logevent("LogEvent_Round_Start", 2, "0=World triggered", "1=Round_Start"); //freezetime end code register_logevent("LogEvent_Round_End", 2, "1=Round_End"); register_message(SVC_INTERMISSION, "Message_Intermission"); register_message(get_user_msgid("StatusValue"), "Message_StatusValue"); register_event("StatusValue", "setTeam", "be", "1=1"); register_event("StatusValue", "on_ShowStatus", "be", "1=2", "2!0"); register_event("StatusValue", "on_HideStatus", "be", "1=1", "2=0"); // Must use post or else is_user_alive will return false when dead player respawns RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1); // cz bots won't hook here must RegisterHamFromEntity RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre"); RegisterHam(Ham_Killed, "player", "Ham_Death_Player", 1); gHudSyncAimInfo = CreateHudSyncObj(); gMaxPlayers = get_maxplayers(); gPlayerName = get_xvar_id("PlayerName"); register_forward(FM_PlayerPreThink, "FM_PlayerPreThink1"); register_forward(FM_CmdStart, "FM_CmdStart1"); register_forward(FM_EmitSound, "EmitSound1"); //register_forward(FM_Touch,"FakeMeta_Touch") //register_touch("apteczka", "player", "Apteczka_Touch") } public client_PreThink(id) { if(is_user_alive(id)) { new Float:fVector[3]; pev(id, pev_velocity, fVector) new Float: fSpeed = floatsqroot(fVector[0]*fVector[0]+fVector[1]*fVector[1]+fVector[2]*fVector[2]) if((fm_get_user_maxspeed(id) * 5) > (fSpeed*9)) set_pev(id, pev_flTimeStepSound, 300) } }