Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdkhooks>
- #include <sdktools>
- #include <cstrike>
- #define PLUGIN_NAME "Call of Duty: MW Mod"
- #define PLUGIN_VERSION "1.1"
- #define PLUGIN_AUTHOR "Linux`"
- #define PLUGIN_DESCRIPTION "Plugin oparty na kodzie QTM_CodMod by QTM_Peyote"
- #define PLUGIN_URL "http://steamcommunity.com/id/linux2006"
- #define MAKSYMALNA_WARTOSC_ZMIENNEJ 99999
- #define MAKSYMALNA_ILOSC_KLAS 100
- #define MAKSYMALNA_ILOSC_ITEMOW 120
- #define MINIMALNA_ILOSC_GRACZY 4
- #define MNOZNIK_KONDYCJI 0.004
- #define MNOZNIK_GRAWITACJI 0.00208
- new Handle:sql,
- Handle:hud_task[65],
- Handle:zapis_task[65],
- Handle:cvar_doswiadczenie_za_zabojstwo,
- Handle:cvar_doswiadczenie_za_zabojstwo_hs,
- Handle:cvar_doswiadczenie_za_wygrana_runde,
- Handle:cvar_doswiadczenie_za_cele_mapy,
- Handle:cvar_limit_poziomu,
- Handle:cvar_proporcja_poziomu,
- Handle:cvar_proporcja_punktow,
- Handle:cvar_limit_kondycji,
- Handle:cvar_limit_grawitacji,
- Handle:cvar_limit_niewidzialnosci,
- Handle:cvar_wytrzymalosc_itemow,
- Handle:cvar_max_wytrzymalosc_itemow,
- bool:freezetime;
- new bool:wczytane_dane[65],
- nowa_klasa_gracza[65],
- klasa_gracza[65],
- zdobyty_poziom_gracza[65],
- poziom_gracza[65],
- zdobyte_doswiadczenie_gracza[65],
- doswiadczenie_gracza[65],
- item_gracza[65],
- wartosc_itemu_gracza[65],
- wytrzymalosc_itemu_gracza[65];
- new rozdane_punkty_gracza[65],
- punkty_gracza[65],
- zdobyta_kondycja_gracza[65],
- kondycja_gracza[65];
- zdobyta_grawitacja_gracza[65],
- grawitacja_gracza[65];
- zdobyta_niewidzialnosc_gracza[65],
- niewidzialnosc_gracza[65];
- new String:bonusowe_bronie_gracza[65][256],
- bonusowa_kondycja_gracza[65];
- bonusowa_grawitacja_gracza[65];
- bonusowa_niewidzialnosc_gracza[65];
- new Float:maksymalna_kondycja_gracza[65];
- Float:maksymalna_grawitacja_gracza[65];
- maksymalna_niewidzialnosc_gracza[65];
- new lvl_klasy_gracza[65][MAKSYMALNA_ILOSC_KLAS+1],
- xp_klasy_gracza[65][MAKSYMALNA_ILOSC_KLAS+1],
- kon_klasy_gracza[65][MAKSYMALNA_ILOSC_KLAS+1];
- graw_klasy_gracza[65][MAKSYMALNA_ILOSC_KLAS+1];
- niew_klasy_gracza[65][MAKSYMALNA_ILOSC_KLAS+1];
- new String:nazwy_klas[MAKSYMALNA_ILOSC_KLAS+1][64],
- String:opisy_klas[MAKSYMALNA_ILOSC_KLAS+1][128],
- String:bronie_klas[MAKSYMALNA_ILOSC_KLAS+1][512],
- kondycja_klas[MAKSYMALNA_ILOSC_KLAS+1],
- grawitacja_klas[MAKSYMALNA_ILOSC_KLAS+1],
- niewidzialnosc_klas[MAKSYMALNA_ILOSC_KLAS+1],
- Handle:pluginy_klas[MAKSYMALNA_ILOSC_KLAS+1],
- ilosc_klas;
- new String:nazwy_itemow[MAKSYMALNA_ILOSC_ITEMOW+1][64],
- String:opisy_itemow[MAKSYMALNA_ILOSC_ITEMOW+1][128],
- max_wartosci_itemow[MAKSYMALNA_ILOSC_ITEMOW+1],
- min_wartosci_itemow[MAKSYMALNA_ILOSC_ITEMOW+1],
- Handle:pluginy_itemow[MAKSYMALNA_ILOSC_ITEMOW+1],
- ilosc_itemow;
- new String:bronie_dozwolone[][] = {"weapon_knife", "weapon_c4"},
- punkty_statystyk[] = {1, 10, -1};
- public Plugin:myinfo =
- {
- name = PLUGIN_NAME,
- author = PLUGIN_AUTHOR,
- description = PLUGIN_DESCRIPTION,
- version = PLUGIN_VERSION,
- url = PLUGIN_URL
- };
- public OnPluginStart()
- {
- CreateConVar(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
- cvar_doswiadczenie_za_zabojstwo = CreateConVar("cod_xp_kill", "10");
- cvar_doswiadczenie_za_zabojstwo_hs = CreateConVar("cod_xp_killhs", "15");
- cvar_doswiadczenie_za_wygrana_runde = CreateConVar("cod_xp_winround", "25");
- cvar_doswiadczenie_za_cele_mapy = CreateConVar("cod_xp_objectives", "50");
- cvar_limit_poziomu = CreateConVar("cod_max_level", "200");
- cvar_proporcja_poziomu = CreateConVar("cod_level_ratio", "35");
- cvar_proporcja_punktow = CreateConVar("cod_points_level", "2");
- cvar_limit_kondycji = CreateConVar("cod_max_trim", "80");
- cvar_limit_grawitacji = CreateConVar("cod_max_graw", "50");
- cvar_limit_niewidzialnosci = CreateConVar("cod_max_niew", "50");
- cvar_wytrzymalosc_itemow = CreateConVar("cod_item_stamina", "20");
- cvar_max_wytrzymalosc_itemow = CreateConVar("cod_item_max_stamina", "100");
- ServerCommand("sv_disable_immunity_alpha 1");
- RegConsoleCmd("klasa", WybierzKlase);
- RegConsoleCmd("class", WybierzKlase);
- RegConsoleCmd("klasy", OpisKlas);
- RegConsoleCmd("classinfo", OpisKlas);
- RegConsoleCmd("items", OpisItemow);
- RegConsoleCmd("perks", OpisItemow);
- RegConsoleCmd("perki", OpisItemow);
- RegConsoleCmd("item", OpisItemu);
- RegConsoleCmd("perk", OpisItemu);
- RegConsoleCmd("wyrzuc", WyrzucItem);
- RegConsoleCmd("useclass", UzyjKlasy);
- RegConsoleCmd("useitem", UzyjItemu);
- RegConsoleCmd("useperk", UzyjItemu);
- RegConsoleCmd("statystyki", PrzydzielPunkty);
- RegConsoleCmd("staty", PrzydzielPunkty);
- RegConsoleCmd("reset", ResetujPunkty);
- RegConsoleCmd("buy", BlokujKomende);
- RegConsoleCmd("buyequip", BlokujKomende);
- RegConsoleCmd("buyammo1", BlokujKomende);
- RegConsoleCmd("buyammo2", BlokujKomende);
- RegConsoleCmd("rebuy", BlokujKomende);
- RegConsoleCmd("autobuy", BlokujKomende);
- HookEvent("round_freeze_end", PoczatekRundy);
- HookEvent("round_start", NowaRunda);
- HookEvent("round_end", KoniecRundy);
- HookEvent("hostage_rescued", ZakladnikUratowany);
- HookEvent("bomb_defused", BombaRozbrojona);
- HookEvent("bomb_planted", BombaPodlozona);
- HookEvent("player_spawn", OdrodzenieGracza);
- HookEvent("player_death", SmiercGracza);
- HookEvent("player_jump", SkokiGracza);
- HookUserMessage(GetUserMessageId("TextMsg"), TextMessage, true);
- LoadTranslations("common.phrases");
- nazwy_klas[0] = "Brak";
- opisy_klas[0] = "Brak dodatkowych uzdolnien";
- bronie_klas[0] = "";
- kondycja_klas[0] = 100;
- grawitacja_klas[0] = 0;
- niewidzialnosc_klas[0] = 0;
- nazwy_itemow[0] = "Brak";
- opisy_itemow[0] = "Zabij kogos, aby otrzymac item";
- }
- public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
- {
- CreateNative("cod_set_user_bonus_weapons", UstawBonusoweBronie);
- CreateNative("cod_get_user_bonus_weapons", PobierzBonusoweBronie);
- CreateNative("cod_set_user_bonus_trim", UstawBonusowaKondycje);
- CreateNative("cod_set_user_bonus_graw", UstawBonusowaGrawitacje);
- CreateNative("cod_set_user_bonus_niew", UstawBonusowaNiewidzialnosc);
- CreateNative("cod_get_user_trim", PobierzKondycje);
- CreateNative("cod_get_user_graw", PobierzGrawitacje);
- CreateNative("cod_get_user_niew", PobierzNiewidzialnosc);
- CreateNative("cod_get_user_points", PobierzPunkty);
- CreateNative("cod_get_user_maks_trim", PobierzMaksymalnaKondycje);
- CreateNative("cod_get_user_maks_graw", PobierzMaksymalnaGrawitacje);
- CreateNative("cod_get_user_maks_niew", PobierzMaksymalnaNiewidzialnosc);
- CreateNative("cod_set_user_xp", UstawDoswiadczenie);
- CreateNative("cod_set_user_class", UstawKlase);
- CreateNative("cod_set_user_item", UstawItem);
- CreateNative("cod_get_user_xp", PobierzDoswiadczenie);
- CreateNative("cod_get_level_xp", PobierzDoswiadczeniePoziomu);
- CreateNative("cod_get_user_level", PobierzPoziom);
- CreateNative("cod_get_user_level_all", PobierzCalkowityPoziom);
- CreateNative("cod_get_user_class", PobierzKlase);
- CreateNative("cod_get_user_item", PobierzItem);
- CreateNative("cod_get_user_item_skill", PobierzWartoscItemu);
- CreateNative("cod_get_user_item_stamina", PobierzWytrzymaloscItemu);
- CreateNative("cod_get_classes_num", PobierzIloscKlas);
- CreateNative("cod_get_classid", PobierzKlasePrzezNazwe);
- CreateNative("cod_get_class_name", PobierzNazweKlasy);
- CreateNative("cod_get_class_desc", PobierzOpisKlasy);
- CreateNative("cod_get_class_weapon", PobierzBronieKlasy);
- CreateNative("cod_get_class_trim", PobierzKondycjeKlasy);
- CreateNative("cod_get_class_graw", PobierzGrawitacjeKlasy);
- CreateNative("cod_get_class_niew", PobierzNiewidzialnoscKlasy);
- CreateNative("cod_get_items_num", PobierzIloscItemow);
- CreateNative("cod_get_itemid", PobierzItemPrzezNazwe);
- CreateNative("cod_get_item_name", PobierzNazweItemu);
- CreateNative("cod_get_item_desc", PobierzOpisItemu);
- CreateNative("cod_register_class", ZarejestrujKlase);
- CreateNative("cod_register_item", ZarejestrujItem);
- }
- public OnMapStart()
- {
- AddFileToDownloadsTable("sound/cod/levelup.mp3");
- AutoExecConfig(true, "codmod");
- DataBaseConnect();
- }
- public OnClientAuthorized(client)
- {
- UsunUmiejetnosci(client);
- UsunZadania(client);
- }
- public OnClientPutInServer(client)
- {
- SDKHook(client, SDKHook_WeaponCanUse, WeaponCanUse);
- WczytajDane(client);
- }
- public OnClientDisconnect(client)
- {
- SDKUnhook(client, SDKHook_WeaponCanUse, WeaponCanUse);
- ZapiszDane_Handler(client);
- UsunUmiejetnosci(client);
- UsunZadania(client);
- }
- public Action:UsunUmiejetnosci(client)
- {
- for(new i = 0; i <= ilosc_klas; i ++)
- {
- lvl_klasy_gracza[client][i] = 1;
- xp_klasy_gracza[client][i] = 0;
- kon_klasy_gracza[client][i] = 0;
- graw_klasy_gracza[client][i] = 0;
- niew_klasy_gracza[client][i] = 0;
- }
- wczytane_dane[client] = false;
- rozdane_punkty_gracza[client] = 0;
- bonusowe_bronie_gracza[client] = "";
- bonusowa_kondycja_gracza[client] = 0;
- bonusowa_grawitacja_gracza[client] = 0;
- bonusowa_niewidzialnosc_gracza[client] = 0;
- nowa_klasa_gracza[client] = 0;
- UstawNowaKlase(client);
- UstawNowyItem(client, 0, 0, 0);
- }
- public Action:UsunZadania(client)
- {
- if(hud_task[client] != null)
- {
- KillTimer(hud_task[client]);
- hud_task[client] = null;
- }
- if(zapis_task[client] != null)
- {
- KillTimer(zapis_task[client]);
- zapis_task[client] = null;
- }
- }
- public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapons)
- {
- if(!IsValidClient(client) || !IsPlayerAlive(client))
- return Plugin_Continue;
- static bool:oldbuttons[65];
- if(!oldbuttons[client] && buttons & IN_USE)
- {
- UzyjKlasy(client, 0); // wymusza public odpowiadający za funkcje wywołującą forward użycia klasy
- UzyjItemu(client, 0); // wymusza public odpowiadający za funkcje wywołującą forward użycia itemu
- oldbuttons[client] = true;
- }
- else if(oldbuttons[client] && !(buttons & IN_USE))
- oldbuttons[client] = false;
- return Plugin_Continue;
- }
- public Action:WeaponCanUse(client, weapon)
- {
- if(!IsValidClient(client) || !IsPlayerAlive(client))
- return Plugin_Continue;
- new String:weapons[32];
- GetEdictClassname(weapon, weapons, sizeof(weapons));
- new weaponindex = GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex");
- switch(weaponindex)
- {
- case 60: strcopy(weapons, sizeof(weapons), "weapon_m4a1_silencer");
- case 61: strcopy(weapons, sizeof(weapons), "weapon_usp_silencer");
- case 63: strcopy(weapons, sizeof(weapons), "weapon_cz75a");
- case 64: strcopy(weapons, sizeof(weapons), "weapon_revolver");
- case 500: strcopy(weapons, sizeof(weapons), "weapon_bayonet");
- case 505: strcopy(weapons, sizeof(weapons), "weapon_knife_flip");
- case 506: strcopy(weapons, sizeof(weapons), "weapon_knife_gut");
- case 507: strcopy(weapons, sizeof(weapons), "weapon_knife_karambit");
- case 508: strcopy(weapons, sizeof(weapons), "weapon_knife_m9_bayonet");
- case 509: strcopy(weapons, sizeof(weapons), "weapon_knife_tactical");
- case 512: strcopy(weapons, sizeof(weapons), "weapon_knife_falchion");
- case 514: strcopy(weapons, sizeof(weapons), "weapon_knife_survival_bowie");
- case 515: strcopy(weapons, sizeof(weapons), "weapon_knife_butterfly");
- case 516: strcopy(weapons, sizeof(weapons), "weapon_knife_push");
- }
- new String:weaponsclass[10][32];
- ExplodeString(bronie_klas[klasa_gracza[client]], "#", weaponsclass, sizeof(weaponsclass), sizeof(weaponsclass[]));
- for(new i = 0; i < sizeof(weaponsclass); i ++)
- {
- if(StrEqual(weaponsclass[i], weapons))
- return Plugin_Continue;
- }
- new String:weaponsbonus[5][32];
- ExplodeString(bonusowe_bronie_gracza[client], "#", weaponsbonus, sizeof(weaponsbonus), sizeof(weaponsbonus[]));
- for(new i = 0; i < sizeof(weaponsbonus); i ++)
- {
- if(StrEqual(weaponsbonus[i], weapons))
- return Plugin_Continue;
- }
- for(new i = 0; i < sizeof(bronie_dozwolone); i ++)
- {
- if(StrEqual(bronie_dozwolone[i], weapons))
- return Plugin_Continue;
- }
- return Plugin_Handled;
- }
- public Action:PoczatekRundy(Handle:event, const String:name[], bool:dontbroadcast)
- {
- freezetime = false;
- }
- public Action:NowaRunda(Handle:event, const String:name[], bool:dontbroadcast)
- {
- freezetime = true;
- }
- public Action:KoniecRundy(Handle:event, const String:name[], bool:dontbroadcast)
- {
- if(IsValidPlayers() < MINIMALNA_ILOSC_GRACZY)
- return Plugin_Continue;
- new doswiadczenie_za_wygrana_runde = GetConVarInt(cvar_doswiadczenie_za_wygrana_runde);
- if(doswiadczenie_za_wygrana_runde)
- {
- new wygrana_druzyna = GetEventInt(event, "winner");
- for(new i = 1; i <= MaxClients; i ++)
- {
- if(!IsClientInGame(i) || !klasa_gracza[i])
- continue;
- if(GetClientTeam(i) != ((wygrana_druzyna == 2)? CS_TEAM_T: CS_TEAM_CT))
- continue;
- if(IsPlayerAlive(i))
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_wygrana_runde);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za wygranie rundy.", doswiadczenie_za_wygrana_runde);
- }
- else
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_wygrana_runde/2);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za wygranie rundy przez twoja druzyne.", doswiadczenie_za_wygrana_runde/2);
- }
- }
- }
- return Plugin_Continue;
- }
- public Action:ZakladnikUratowany(Handle:event, const String:name[], bool:dontbroadcast)
- {
- if(IsValidPlayers() < MINIMALNA_ILOSC_GRACZY)
- return Plugin_Continue;
- new doswiadczenie_za_cele_mapy = GetConVarInt(cvar_doswiadczenie_za_cele_mapy);
- if(doswiadczenie_za_cele_mapy)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- for(new i = 1; i <= MaxClients; i ++)
- {
- if(!IsClientInGame(i) || !klasa_gracza[i])
- continue;
- if(GetClientTeam(i) != CS_TEAM_CT)
- continue;
- if(i == client)
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za uratowanie zakladnika.", doswiadczenie_za_cele_mapy);
- }
- else
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy/2);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za uratowanie zakladnika przez twoja druzyne.", doswiadczenie_za_cele_mapy/2);
- }
- }
- }
- return Plugin_Continue;
- }
- public Action:BombaRozbrojona(Handle:event, const String:name[], bool:dontbroadcast)
- {
- if(IsValidPlayers() < MINIMALNA_ILOSC_GRACZY)
- return Plugin_Continue;
- new doswiadczenie_za_cele_mapy = GetConVarInt(cvar_doswiadczenie_za_cele_mapy);
- if(doswiadczenie_za_cele_mapy)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- for(new i = 1; i <= MaxClients; i ++)
- {
- if(!IsClientInGame(i) || !klasa_gracza[i])
- continue;
- if(GetClientTeam(i) != CS_TEAM_CT)
- continue;
- if(i == client)
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za rozbrojenie bomby.", doswiadczenie_za_cele_mapy);
- }
- else
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy/2);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za rozbrojenie bomby przez twoja druzyne.", doswiadczenie_za_cele_mapy/2);
- }
- }
- }
- return Plugin_Continue;
- }
- public Action:BombaPodlozona(Handle:event, const String:name[], bool:dontbroadcast)
- {
- if(IsValidPlayers() < MINIMALNA_ILOSC_GRACZY)
- return Plugin_Continue;
- new doswiadczenie_za_cele_mapy = GetConVarInt(cvar_doswiadczenie_za_cele_mapy);
- if(doswiadczenie_za_cele_mapy)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- for(new i = 1; i <= MaxClients; i ++)
- {
- if(!IsClientInGame(i) || !klasa_gracza[i])
- continue;
- if(GetClientTeam(i) != CS_TEAM_T)
- continue;
- if(i == client)
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za podlozenie bomby.", doswiadczenie_za_cele_mapy);
- }
- else
- {
- UstawNoweDoswiadczenie(i, doswiadczenie_gracza[i]+doswiadczenie_za_cele_mapy/2);
- PrintToChat(i, "[COD:MW] Dostales %i doswiadczenia za podlozenie bomby przez twoja druzyne.", doswiadczenie_za_cele_mapy/2);
- }
- }
- }
- return Plugin_Continue;
- }
- public Action:OdrodzenieGracza(Handle:event, String:name[], bool:dontbroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- if(!IsValidClient(client))
- return Plugin_Continue;
- if(hud_task[client] == null)
- hud_task[client] = CreateTimer(0.5, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
- if(zapis_task[client] == null)
- zapis_task[client] = CreateTimer(30.0, ZapiszDane, client, TIMER_FLAG_NO_MAPCHANGE);
- if(nowa_klasa_gracza[client])
- UstawNowaKlase(client);
- if(!klasa_gracza[client])
- WybierzKlase(client, 0);
- else if(punkty_gracza[client])
- PrzydzielPunkty(client, 0);
- ZastosujAtrybuty(client);
- DajBronie(client);
- return Plugin_Continue;
- }
- public Action:SmiercGracza(Handle:event, String:name[], bool:dontbroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- new killer = GetClientOfUserId(GetEventInt(event, "attacker"));
- new bool:headshot = GetEventBool(event, "headshot");
- if(!IsValidClient(client) || !IsValidClient(killer))
- return Plugin_Continue;
- if(klasa_gracza[killer] && GetClientTeam(client) != GetClientTeam(killer))
- {
- if(headshot)
- {
- new doswiadczenie_za_zabojstwo_hs = GetConVarInt(cvar_doswiadczenie_za_zabojstwo_hs);
- if(doswiadczenie_za_zabojstwo_hs)
- {
- UstawNoweDoswiadczenie(killer, doswiadczenie_gracza[killer]+doswiadczenie_za_zabojstwo_hs);
- PrintToChat(killer, "[COD:MW] Dostales %i doswiadczenia za zabicie przeciwnika w glowe.", doswiadczenie_za_zabojstwo_hs);
- }
- }
- else
- {
- new doswiadczenie_za_zabojstwo = GetConVarInt(cvar_doswiadczenie_za_zabojstwo);
- if(doswiadczenie_za_zabojstwo)
- {
- UstawNoweDoswiadczenie(killer, doswiadczenie_gracza[killer]+doswiadczenie_za_zabojstwo);
- PrintToChat(killer, "[COD:MW] Dostales %i doswiadczenia za zabicie przeciwnika.", doswiadczenie_za_zabojstwo);
- }
- }
- if(!item_gracza[killer])
- {
- UstawNowyItem(killer, -1, -1, -1);
- PrintToChat(killer, "[COD:MW] Zdobyles %s.", nazwy_itemow[item_gracza[killer]]);
- }
- }
- new wytrzymalosc_itemow = GetConVarInt(cvar_wytrzymalosc_itemow);
- if(wytrzymalosc_itemow && wytrzymalosc_itemu_gracza[client])
- {
- if(wytrzymalosc_itemu_gracza[client] > wytrzymalosc_itemow)
- wytrzymalosc_itemu_gracza[client] -= wytrzymalosc_itemow;
- else
- {
- UstawNowyItem(client, 0, 0, 0);
- PrintToChat(client, "[COD:MW] Twoj item ulegl zniszczeniu.");
- }
- }
- return Plugin_Continue;
- }
- public Action:TextMessage(UserMsg:msg_text, Handle:pb, const players[], playersNum, bool:reliable, bool:init)
- {
- if(!reliable || PbReadInt(pb, "msg_dst") != 3)
- return Plugin_Continue;
- new String:buffer[256];
- PbReadString(pb, "params", buffer, sizeof(buffer), 0);
- if(StrContains(buffer, "#Player_Cash_Award_") == 0 || StrContains(buffer, "#Team_Cash_Award_") == 0)
- return Plugin_Handled;
- return Plugin_Continue;
- }
- public Action:WybierzKlase(client, args)
- {
- if(wczytane_dane[client])
- {
- lvl_klasy_gracza[client][klasa_gracza[client]] = poziom_gracza[client];
- xp_klasy_gracza[client][klasa_gracza[client]] = doswiadczenie_gracza[client];
- kon_klasy_gracza[client][klasa_gracza[client]] = kondycja_gracza[client];
- graw_klasy_gracza[client][klasa_gracza[client]] = grawitacja_gracza[client];
- niew_klasy_gracza[client][klasa_gracza[client]] = niewidzialnosc_gracza[client];
- new String:menu_item[128];
- new Handle:menu = CreateMenu(WybierzKlase_Handler);
- SetMenuTitle(menu, "Wybierz Klase:");
- for(new i = 1; i <= ilosc_klas; i ++)
- {
- Format(menu_item, sizeof(menu_item), "%s (Lv: %i)", nazwy_klas[i], lvl_klasy_gracza[client][i]);
- AddMenuItem(menu, "", menu_item);
- }
- DisplayMenu(menu, client, 250);
- }
- else
- PrintToChat(client, "[COD:MW] Trwa wczytywanie twoich danych!");
- return Plugin_Handled;
- }
- public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- {
- new String:item[32];
- GetMenuItem(classhandle, position, item, sizeof(item));
- position ++;
- if(position == klasa_gracza[client] && !nowa_klasa_gracza[client])
- return;
- nowa_klasa_gracza[client] = position;
- if(klasa_gracza[client])
- PrintToChat(client, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
- else
- {
- UstawNowaKlase(client);
- ZastosujAtrybuty(client);
- DajBronie(client);
- }
- }
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public Action:OpisKlas(client, args)
- {
- new Handle:menu = CreateMenu(OpisKlas_Handler);
- SetMenuTitle(menu, "Wybierz Klase:");
- for(new i = 1; i <= ilosc_klas; i ++)
- AddMenuItem(menu, "", nazwy_klas[i]);
- DisplayMenu(menu, client, 250);
- return Plugin_Handled;
- }
- public OpisKlas_Handler(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- {
- new String:item[32];
- GetMenuItem(classhandle, position, item, sizeof(item));
- position ++;
- new String:bronie[512];
- Format(bronie, sizeof(bronie), "%s", bronie_klas[position]);
- ReplaceString(bronie, sizeof(bronie), "#weapon_", "|");
- new String:opis[1024];
- new Function:forward_klasy = GetFunctionByName(pluginy_klas[position], "cod_class_skill_used");
- if(forward_klasy != INVALID_FUNCTION)
- Format(opis, sizeof(opis), "Klasa: %i\nKondycja: %i\nGrawitacja: %i\nNiewidzialnosc: %i\nBronie: %s\nOpis: %s\nUzycie Umiejetnosci: Useclass", nazwy_klas[position], kondycja_klas[position], grawitacja_klas[position], niewidzialnosc_klas[position], bronie, opisy_klas[position]);
- else
- Format(opis, sizeof(opis), "Klasa: %i\nKondycja: %i\nGrawitacja: %i\nNiewidzialnosc: %i\nBronie: %s\nOpis: %s", nazwy_klas[position], kondycja_klas[position], grawitacja_klas[position], niewidzialnosc_klas[position], bronie, opisy_klas[position]);
- new Handle:menu = CreateMenu(OpisKlas2_Handler);
- SetMenuTitle(menu, opis);
- AddMenuItem(menu, "", "Lista Klas");
- DisplayMenu(menu, client, 250);
- }
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public OpisKlas2_Handler(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- OpisKlas(client, 0);
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public Action:OpisItemow(client, args)
- {
- new Handle:menu = CreateMenu(OpisItemow_Handler);
- SetMenuTitle(menu, "Wybierz Item:");
- for(new i = 1; i <= ilosc_itemow; i ++)
- AddMenuItem(menu, "", nazwy_itemow[i]);
- DisplayMenu(menu, client, 250);
- return Plugin_Handled;
- }
- public OpisItemow_Handler(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- {
- new String:item[32];
- GetMenuItem(classhandle, position, item, sizeof(item));
- position ++;
- new String:opis_itemu[128];
- new String:losowa_wartosc[21];
- Format(losowa_wartosc, sizeof(losowa_wartosc), "%i-%i", min_wartosci_itemow[position], max_wartosci_itemow[position]);
- Format(opis_itemu, sizeof(opis_itemu), opisy_itemow[position]);
- ReplaceString(opis_itemu, sizeof(opis_itemu), "LW", losowa_wartosc);
- new String:opis[512];
- new Function:forward_itemu = GetFunctionByName(pluginy_itemow[position], "cod_item_used");
- if(forward_itemu != INVALID_FUNCTION)
- Format(opis, sizeof(opis), "Item: %s\nOpis: %s\nUzycie Umiejetnosci: Useitem", nazwy_itemow[position], opis_itemu);
- else
- Format(opis, sizeof(opis), "Item: %s\nOpis: %s", nazwy_itemow[position], opis_itemu);
- new Handle:menu = CreateMenu(OpisItemow_Handler2);
- SetMenuTitle(menu, opis);
- AddMenuItem(menu, "", "Lista Itemow");
- DisplayMenu(menu, client, 250);
- }
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public OpisItemow_Handler2(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- OpisItemow(client, 0);
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public Action:OpisItemu(client, args)
- {
- new String:opis_itemu[128];
- new String:losowa_wartosc[10];
- IntToString(wartosc_itemu_gracza[client], losowa_wartosc, sizeof(losowa_wartosc));
- Format(opis_itemu, sizeof(opis_itemu), opisy_itemow[item_gracza[client]]);
- ReplaceString(opis_itemu, sizeof(opis_itemu), "LW", losowa_wartosc);
- PrintToChat(client, "[COD:MW] Item: %s (%i%%).", nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
- PrintToChat(client, "[COD:MW] Opis: %s.", opis_itemu);
- new Function:forward_itemu = GetFunctionByName(pluginy_itemow[item_gracza[client]], "cod_item_used");
- if(forward_itemu != INVALID_FUNCTION)
- PrintToChat(client, "[COD:MW] Uzycie Umiejetnosci: Useitem.");
- return Plugin_Handled;
- }
- public Action:WyrzucItem(client, args)
- {
- if(item_gracza[client])
- {
- UstawNowyItem(client, 0, 0, 0);
- PrintToChat(client, "[COD:MW] Wyrzuciles swoj item.");
- }
- else
- PrintToChat(client, "[COD:MW] Nie posiadasz zadnego itemu.");
- return Plugin_Handled;
- }
- public Action:UzyjKlasy(client, args)
- {
- if(!(!IsPlayerAlive(client) || freezetime))
- {
- new Function:forward_klasy = GetFunctionByName(pluginy_klas[klasa_gracza[client]], "cod_class_skill_used");
- if(forward_klasy != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_klas[klasa_gracza[client]], forward_klasy);
- Call_PushCell(client);
- Call_PushCell(klasa_gracza[client]);
- Call_Finish();
- }
- }
- return Plugin_Handled;
- }
- public Action:UzyjItemu(client, args)
- {
- if(!(!IsPlayerAlive(client) || freezetime))
- {
- new Function:forward_itemu = GetFunctionByName(pluginy_itemow[item_gracza[client]], "cod_item_used");
- if(forward_itemu != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_itemow[item_gracza[client]], forward_itemu);
- Call_PushCell(client);
- Call_PushCell(item_gracza[client]);
- Call_Finish();
- }
- }
- return Plugin_Handled;
- }
- public Action:PrzydzielPunkty(client, args)
- {
- new proporcja_punktow = GetConVarInt(cvar_proporcja_punktow);
- if(!proporcja_punktow)
- return Plugin_Continue;
- new limit_kondycji = GetConVarInt(cvar_limit_kondycji);
- if(!limit_kondycji)
- limit_kondycji = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- new limit_grawitacji = GetConVarInt(cvar_limit_grawitacji);
- if(!limit_grawitacji)
- limit_grawitacji = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- new limit_niewidzialnosci = GetConVarInt(cvar_limit_niewidzialnosci);
- if(!limit_niewidzialnosci)
- limit_niewidzialnosci = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- if(kondycja_gracza[client] > limit_kondycji || grawitacja_gracza[client] > limit_grawitacji || niewidzialnosc_gracza[client] > limit_niewidzialnosci)
- ResetujPunkty(client, 0);
- else
- {
- new String:opis[128];
- new Handle:menu = CreateMenu(PrzydzielPunkty_Handler);
- Format(opis, sizeof(opis), "Przydziel Punkty (%i):", punkty_gracza[client]);
- SetMenuTitle(menu, opis);
- if(punkty_statystyk[rozdane_punkty_gracza[client]] == -1)
- Format(opis, sizeof(opis), "Ile dodawac: ALL (Po ile punktow dodawac do statystyk)");
- else
- Format(opis, sizeof(opis), "Ile dodawac: %i (Po ile punktow dodawac do statystyk)", punkty_statystyk[rozdane_punkty_gracza[client]]);
- AddMenuItem(menu, "1", opis);
- Format(opis, sizeof(opis), "Kondycja: %i/%i (Zwieksza tempo chodu)", kondycja_gracza[client], limit_kondycji);
- AddMenuItem(menu, "2", opis);
- Format(opis, sizeof(opis), "Grawitacja: %i/%i (Zmniejsza grawitacje)", grawitacja_gracza[client], limit_grawitacji);
- AddMenuItem(menu, "3", opis);
- Format(opis, sizeof(opis), "Niewidzialnosc: %i/%i (Zmniejsza widocznosc)", niewidzialnosc_gracza[client], limit_niewidzialnosci);
- AddMenuItem(menu, "4", opis);
- DisplayMenu(menu, client, 250);
- }
- return Plugin_Handled;
- }
- public PrzydzielPunkty_Handler(Handle:classhandle, MenuAction:action, client, position)
- {
- if(action == MenuAction_Select)
- {
- if(!punkty_gracza[client])
- return;
- new String:item[32];
- GetMenuItem(classhandle, position, item, sizeof(item));
- new wartosc;
- if(punkty_statystyk[rozdane_punkty_gracza[client]] == -1)
- wartosc = punkty_gracza[client];
- else
- wartosc = (punkty_statystyk[rozdane_punkty_gracza[client]] > punkty_gracza[client])? punkty_gracza[client]: punkty_statystyk[rozdane_punkty_gracza[client]];
- if(StrEqual(item, "1"))
- {
- if(rozdane_punkty_gracza[client] < sizeof(punkty_statystyk)-1)
- rozdane_punkty_gracza[client] ++;
- else
- rozdane_punkty_gracza[client] = 0;
- }
- else if(StrEqual(item, "2"))
- {
- new limit_kondycji = GetConVarInt(cvar_limit_kondycji);
- if(!limit_kondycji)
- limit_kondycji = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- if(kondycja_gracza[client] < limit_kondycji)
- {
- if(kondycja_gracza[client]+wartosc <= limit_kondycji)
- {
- zdobyta_kondycja_gracza[client] += wartosc;
- kondycja_gracza[client] += wartosc;
- punkty_gracza[client] -= wartosc;
- }
- else
- {
- new punktydodania;
- punktydodania = limit_kondycji-kondycja_gracza[client];
- zdobyta_kondycja_gracza[client] += punktydodania;
- kondycja_gracza[client] += punktydodania;
- punkty_gracza[client] -= punktydodania;
- }
- }
- else
- PrintToChat(client, "[COD:MW] Osiagnales juz maksymalny poziom kondycji!");
- }
- else if(StrEqual(item, "3"))
- {
- new limit_grawitacji = GetConVarInt(cvar_limit_grawitacji);
- if(!limit_grawitacji)
- limit_grawitacji = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- if(grawitacja_gracza[client] < limit_grawitacji)
- {
- if(grawitacja_gracza[client]+wartosc <= limit_grawitacji)
- {
- zdobyta_grawitacja_gracza[client] += wartosc;
- grawitacja_gracza[client] += wartosc;
- punkty_gracza[client] -= wartosc;
- }
- else
- {
- new punktydodania;
- punktydodania = limit_grawitacji-grawitacja_gracza[client];
- zdobyta_grawitacja_gracza[client] += punktydodania;
- grawitacja_gracza[client] += punktydodania;
- punkty_gracza[client] -= punktydodania;
- }
- }
- else
- PrintToChat(client, "[COD:MW] Osiagnales juz maksymalny poziom grawitacji!");
- }
- else if(StrEqual(item, "4"))
- {
- new limit_niewidzialnosci = GetConVarInt(cvar_limit_niewidzialnosci);
- if(!limit_niewidzialnosci)
- limit_niewidzialnosci = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- if(niewidzialnosc_gracza[client] < limit_niewidzialnosci)
- {
- if(niewidzialnosc_gracza[client]+wartosc <= limit_niewidzialnosci)
- {
- zdobyta_niewidzialnosc_gracza[client] += wartosc;
- niewidzialnosc_gracza[client] += wartosc;
- punkty_gracza[client] -= wartosc;
- }
- else
- {
- new punktydodania;
- punktydodania = limit_niewidzialnosci-niewidzialnosc_gracza[client];
- zdobyta_niewidzialnosc_gracza[client] += punktydodania;
- niewidzialnosc_gracza[client] += punktydodania;
- punkty_gracza[client] -= punktydodania;
- }
- }
- else
- PrintToChat(client, "[COD:MW] Osiagnales juz maksymalny poziom niewidzialnosci!");
- }
- if(punkty_gracza[client])
- PrzydzielPunkty(client, 0);
- }
- else if(action == MenuAction_End)
- CloseHandle(classhandle);
- }
- public Action:ResetujPunkty(client, args)
- {
- zdobyta_kondycja_gracza[client] -= kondycja_gracza[client];
- kondycja_gracza[client] = 0;
- zdobyta_grawitacja_gracza[client] -= grawitacja_gracza[client];
- grawitacja_gracza[client] = 0;
- zdobyta_niewidzialnosc_gracza[client] -= niewidzialnosc_gracza[client];
- niewidzialnosc_gracza[client] = 0;
- punkty_gracza[client] = (GetConVarInt(cvar_proporcja_punktow) < 1)? 0: (poziom_gracza[client]/GetConVarInt(cvar_proporcja_punktow))-kondycja_gracza[client]-grawitacja_gracza[client]-niewidzialnosc_gracza[client];
- if(punkty_gracza[client])
- PrzydzielPunkty(client, 0);
- PrintToChat(client, "[COD:MW] Umiejetnosci zostaly zresetowane.");
- return Plugin_Handled;
- }
- public Action:BlokujKomende(client, args)
- {
- return Plugin_Handled;
- }
- public Action:ZastosujAtrybuty(client)
- {
- if(!IsPlayerAlive(client))
- return Plugin_Continue;
- maksymalna_kondycja_gracza[client] = 1.0+(kondycja_gracza[client]+bonusowa_kondycja_gracza[client]+kondycja_klas[klasa_gracza[client]])*MNOZNIK_KONDYCJI;
- maksymalna_grawitacja_gracza[client] = 1.0-(grawitacja_gracza[client]+bonusowa_grawitacja_gracza[client]+grawitacja_klas[klasa_gracza[client]])*MNOZNIK_GRAWITACJI;
- maksymalna_niewidzialnosc_gracza[client] = 255-(niewidzialnosc_gracza[client]+bonusowa_niewidzialnosc_gracza[client]+niewidzialnosc_klas[klasa_gracza[client]]);
- SetEntityRenderMode (client, RENDER_TRANSCOLOR);
- SetEntityRenderColor(client, 255, 255, 255, maksymalna_niewidzialnosc_gracza[client]);
- SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", maksymalna_kondycja_gracza[client]);
- SetEntProp(client, Prop_Send, "m_ArmorValue", 0);
- return Plugin_Continue;
- }
- public Action:SkokiGracza(Event event, char[] name, bool dontbroadcast)
- {
- int client = GetClientOfUserId(GetEventInt(event, "userid"));
- if(!IsValidClient(client))
- return Plugin_Continue;
- if(!klasa_gracza[client])
- return Plugin_Continue;
- float grawitacja = (maksymalna_grawitacja_gracza[client]*MNOZNIK_GRAWITACJI);
- if(grawitacja < 0.0)
- grawitacja = 0.01;
- SetEntityGravity(client, maksymalna_grawitacja_gracza[client]);
- return Plugin_Continue;
- }
- public Action:DajBronie(client)
- {
- if(!IsPlayerAlive(client))
- return Plugin_Continue;
- new ent = -1;
- for(new slot = 0; slot < 4; slot ++)
- {
- if(slot == 2)
- continue;
- ent = GetPlayerWeaponSlot(client, slot);
- if(ent != -1)
- RemovePlayerItem(client, ent);
- }
- new String:weapons[10][32];
- ExplodeString(bronie_klas[klasa_gracza[client]], "#", weapons, sizeof(weapons), sizeof(weapons[]));
- for(new i = 0; i < sizeof(weapons); i ++)
- {
- if(!StrEqual(weapons[i], ""))
- GivePlayerItem(client, weapons[i]);
- }
- new String:weapons2[5][32];
- ExplodeString(bonusowe_bronie_gracza[client], "#", weapons2, sizeof(weapons2), sizeof(weapons2[]));
- for(new i = 0; i < sizeof(weapons2); i ++)
- {
- if(!StrEqual(weapons2[i], ""))
- GivePlayerItem(client, weapons2[i]);
- }
- return Plugin_Continue;
- }
- public Action:SprawdzPoziom(client)
- {
- if(!klasa_gracza[client])
- return Plugin_Continue;
- new bool:zdobyty_poziom = false;
- new bool:stracony_poziom = false;
- new limit_poziomu = GetConVarInt(cvar_limit_poziomu);
- if(!limit_poziomu)
- limit_poziomu = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- while(doswiadczenie_gracza[client] >= SprawdzDoswiadczenie(poziom_gracza[client]) && poziom_gracza[client] < limit_poziomu)
- {
- zdobyty_poziom_gracza[client] ++;
- poziom_gracza[client] ++;
- zdobyty_poziom = true;
- }
- while(doswiadczenie_gracza[client] < SprawdzDoswiadczenie(poziom_gracza[client]-1))
- {
- zdobyty_poziom_gracza[client] --;
- poziom_gracza[client] --;
- stracony_poziom = true;
- }
- if(poziom_gracza[client] > limit_poziomu)
- {
- zdobyty_poziom_gracza[client] -= (poziom_gracza[client]-limit_poziomu);
- poziom_gracza[client] = limit_poziomu;
- stracony_poziom = true;
- }
- if(stracony_poziom)
- ResetujPunkty(client, 0);
- else if(zdobyty_poziom)
- {
- punkty_gracza[client] = (GetConVarInt(cvar_proporcja_punktow) < 1)? 0: (poziom_gracza[client]/GetConVarInt(cvar_proporcja_punktow))-kondycja_gracza[client]-grawitacja_gracza[client]-niewidzialnosc_gracza[client];
- ClientCommand(client, "play *cod/levelup.mp3");
- }
- return Plugin_Continue;
- }
- public Action:PokazInformacje(Handle:timer, any:client)
- {
- if(!IsValidClient(client))
- return;
- if(IsPlayerAlive(client))
- PrintHintText(client, "<font color='#008000'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[client]], doswiadczenie_gracza[client], poziom_gracza[client], nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
- else
- {
- new spect = GetEntProp(client, Prop_Send, "m_iObserverMode");
- if(spect == 4 || spect == 5)
- {
- new target = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
- if(target != -1 && IsValidClient(target))
- PrintHintText(client, "<font color='#FFFFFF'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], poziom_gracza[target], nazwy_itemow[item_gracza[target]], wytrzymalosc_itemu_gracza[target]);
- }
- }
- hud_task[client] = CreateTimer(0.5, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
- }
- public Action:DataBaseConnect()
- {
- new String:error[128];
- sql = SQL_Connect("codmod_lvl_sql", true, error, sizeof(error));
- if(sql == INVALID_HANDLE)
- {
- LogError("Could not connect: %s", error);
- return Plugin_Continue;
- }
- new String:zapytanie[1024];
- Format(zapytanie, sizeof(zapytanie), "CREATE TABLE IF NOT EXISTS `codmod` (`authid` VARCHAR(48) NOT NULL, `klasa` VARCHAR(64) NOT NULL, `poziom` INT UNSIGNED NOT NULL DEFAULT 1, `doswiadczenie` INT UNSIGNED NOT NULL DEFAULT 1, PRIMARY KEY(`authid`, `klasa`), ");
- StrCat(zapytanie, sizeof(zapytanie), "`kondycja` INT UNSIGNED NOT NULL DEFAULT 0, `grawitacja` INT UNSIGNED NOT NULL DEFAULT 0, `niewidzialnosc` INT UNSIGNED NOT NULL DEFAULT 0)");
- SQL_LockDatabase(sql);
- SQL_FastQuery(sql, zapytanie);
- SQL_UnlockDatabase(sql);
- return Plugin_Continue;
- }
- public Action:ZapiszDane(Handle:timer, any:client)
- {
- if(!IsValidClient(client))
- return Plugin_Continue;
- ZapiszDane_Handler(client);
- zapis_task[client] = CreateTimer(30.0, ZapiszDane, client, TIMER_FLAG_NO_MAPCHANGE);
- return Plugin_Continue;
- }
- public Action:ZapiszDane_Handler(client)
- {
- if(IsFakeClient(client) || !klasa_gracza[client] || !wczytane_dane[client])
- return Plugin_Continue;
- new String:authid[64];
- GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
- new String:zapytanie[1024];
- Format(zapytanie, sizeof(zapytanie), "UPDATE `codmod` SET `poziom` = (`poziom` + '%i'), `doswiadczenie` = (`doswiadczenie` + '%i'), `kondycja` = (`kondycja` + '%i'), `grawitacja` = (`grawitacja` + '%i'), `niewidzialnosc` = (`niewidzialnosc` + '%i') WHERE `authid` = '%s' AND `klasa` = '%s'",
- zdobyty_poziom_gracza[client], zdobyte_doswiadczenie_gracza[client], zdobyta_kondycja_gracza[client], zdobyta_grawitacja_gracza[client], zdobyta_niewidzialnosc_gracza[client], authid, nazwy_klas[klasa_gracza[client]]);
- SQL_TQuery(sql, HandleIgnore, zapytanie, client);
- zdobyty_poziom_gracza[client] = 0;
- lvl_klasy_gracza[client][klasa_gracza[client]] = poziom_gracza[client];
- zdobyte_doswiadczenie_gracza[client] = 0;
- xp_klasy_gracza[client][klasa_gracza[client]] = doswiadczenie_gracza[client];
- zdobyta_kondycja_gracza[client] = 0;
- kon_klasy_gracza[client][klasa_gracza[client]] = kondycja_gracza[client];
- zdobyta_grawitacja_gracza[client] = 0;
- graw_klasy_gracza[client][klasa_gracza[client]] = grawitacja_gracza[client];
- zdobyta_niewidzialnosc_gracza[client] = 0;
- niew_klasy_gracza[client][klasa_gracza[client]] = niewidzialnosc_gracza[client];
- return Plugin_Continue;
- }
- public Action:WczytajDane(client)
- {
- if(IsClientSourceTV(client))
- return Plugin_Continue;
- if(IsFakeClient(client))
- {
- wczytane_dane[client] = true;
- return Plugin_Continue;
- }
- new String:authid[64];
- GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
- new String:zapytanie[512];
- Format(zapytanie, sizeof(zapytanie), "SELECT `klasa`, `poziom`, `doswiadczenie`, `kondycja`, `grawitacja`, `niewidzialnosc` FROM `codmod` WHERE `authid` = '%s'", authid);
- SQL_TQuery(sql, WczytajDane_Handler, zapytanie, client);
- return Plugin_Continue;
- }
- public WczytajDane_Handler(Handle:owner, Handle:query, const String:error[], any:client)
- {
- if(query == INVALID_HANDLE)
- {
- LogError("Load error: %s", error);
- return;
- }
- if(SQL_GetRowCount(query))
- {
- new String:klasa[64];
- while(SQL_MoreRows(query))
- {
- while(SQL_FetchRow(query))
- {
- SQL_FetchString(query, 0, klasa, sizeof(klasa));
- for(new i = 1; i <= ilosc_klas; i ++)
- {
- if(!StrEqual(nazwy_klas[i], klasa))
- continue;
- lvl_klasy_gracza[client][i] = SQL_FetchInt(query, 1);
- xp_klasy_gracza[client][i] = SQL_FetchInt(query, 2);
- kon_klasy_gracza[client][i] = SQL_FetchInt(query, 3);
- graw_klasy_gracza[client][i] = SQL_FetchInt(query, 4);
- niew_klasy_gracza[client][i] = SQL_FetchInt(query, 5);
- break;
- }
- }
- }
- }
- wczytane_dane[client] = true;
- }
- public Action:ZmienDane(client)
- {
- zdobyty_poziom_gracza[client] = 0;
- poziom_gracza[client] = lvl_klasy_gracza[client][klasa_gracza[client]];
- zdobyte_doswiadczenie_gracza[client] = 0;
- doswiadczenie_gracza[client] = xp_klasy_gracza[client][klasa_gracza[client]];
- zdobyta_kondycja_gracza[client] = 0;
- kondycja_gracza[client] = kon_klasy_gracza[client][klasa_gracza[client]];
- zdobyta_grawitacja_gracza[client] = 0;
- grawitacja_gracza[client] = graw_klasy_gracza[client][klasa_gracza[client]];
- zdobyta_niewidzialnosc_gracza[client] = 0;
- niewidzialnosc_gracza[client] = niew_klasy_gracza[client][klasa_gracza[client]];
- punkty_gracza[client] = (GetConVarInt(cvar_proporcja_punktow) < 1)? 0: (poziom_gracza[client]/GetConVarInt(cvar_proporcja_punktow))-kondycja_gracza[client]-grawitacja_gracza[client]-niewidzialnosc_gracza[client];
- if(!IsFakeClient(client) && wczytane_dane[client] && klasa_gracza[client] && !doswiadczenie_gracza[client])
- {
- new String:authid[64];
- GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
- new String:zapytanie[512];
- Format(zapytanie, sizeof(zapytanie), "INSERT INTO `codmod` (`authid`, `klasa`) VALUES ('%s', '%s')", authid, nazwy_klas[klasa_gracza[client]]);
- SQL_TQuery(sql, HandleIgnore, zapytanie, client);
- UstawNoweDoswiadczenie(client, doswiadczenie_gracza[client]+1);
- }
- return Plugin_Continue;
- }
- public HandleIgnore(Handle:owner, Handle:query, const String:error[], any:client)
- {
- if(query == INVALID_HANDLE)
- {
- LogError("Save error: %s", error);
- return;
- }
- }
- public UstawBonusoweBronie(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new String:nazwa[256];
- GetNativeString(2, nazwa, sizeof(nazwa));
- bonusowe_bronie_gracza[client] = nazwa;
- }
- return -1;
- }
- public PobierzBonusoweBronie(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- SetNativeString(2, bonusowe_bronie_gracza[client], GetNativeCell(3));
- return 1;
- }
- return 0;
- }
- public UstawBonusowaKondycje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new wartosc = GetNativeCell(2);
- maksymalna_kondycja_gracza[client] += float((wartosc-bonusowa_kondycja_gracza[client]))*MNOZNIK_KONDYCJI;
- if(IsPlayerAlive(client))
- SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", maksymalna_kondycja_gracza[client]);
- bonusowa_kondycja_gracza[client] = wartosc;
- }
- return -1;
- }
- public PobierzKondycje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new kondycja;
- if(GetNativeCell(2))
- kondycja += kondycja_gracza[client];
- if(GetNativeCell(3))
- kondycja += bonusowa_kondycja_gracza[client];
- if(GetNativeCell(4))
- kondycja += kondycja_klas[klasa_gracza[client]];
- return kondycja;
- }
- return -1;
- }
- public UstawBonusowaGrawitacje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new wartosc = GetNativeCell(2);
- maksymalna_grawitacja_gracza[client] += float((wartosc-bonusowa_grawitacja_gracza[client]))*MNOZNIK_GRAWITACJI;
- if(IsPlayerAlive(client))
- SetEntityGravity(client, maksymalna_grawitacja_gracza[client]);
- bonusowa_grawitacja_gracza[client] = wartosc;
- }
- return -1;
- }
- public PobierzGrawitacje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new grawitacja;
- if(GetNativeCell(2))
- grawitacja += grawitacja_gracza[client];
- if(GetNativeCell(3))
- grawitacja += bonusowa_grawitacja_gracza[client];
- if(GetNativeCell(4))
- grawitacja += grawitacja_klas[klasa_gracza[client]];
- return grawitacja;
- }
- return -1;
- }
- public UstawBonusowaNiewidzialnosc(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new wartosc = GetNativeCell(2);
- maksymalna_niewidzialnosc_gracza[client] += (wartosc-bonusowa_niewidzialnosc_gracza[client]);
- bonusowa_niewidzialnosc_gracza[client] = wartosc;
- }
- return -1;
- }
- public PobierzNiewidzialnosc(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new niewidzialnosc;
- if(GetNativeCell(2))
- niewidzialnosc += niewidzialnosc_gracza[client];
- if(GetNativeCell(3))
- niewidzialnosc += bonusowa_niewidzialnosc_gracza[client];
- if(GetNativeCell(4))
- niewidzialnosc += niewidzialnosc_klas[klasa_gracza[client]];
- return niewidzialnosc;
- }
- return -1;
- }
- public PobierzPunkty(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return punkty_gracza[client];
- return -1;
- }
- public PobierzMaksymalnaKondycje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new String:kondycja[10];
- FloatToString(maksymalna_kondycja_gracza[client], kondycja, sizeof(kondycja));
- SetNativeString(2, kondycja, GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public PobierzMaksymalnaGrawitacje(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new String:grawitacja[10];
- FloatToString(maksymalna_grawitacja_gracza[client], grawitacja, sizeof(grawitacja));
- SetNativeString(2, grawitacja, GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public PobierzMaksymalnaNiewidzialnosc(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return maksymalna_niewidzialnosc_gracza[client];
- return -1;
- }
- public Action:UstawNoweDoswiadczenie(client, doswiadczenie)
- {
- new nowe_doswiadczenie = doswiadczenie-doswiadczenie_gracza[client];
- zdobyte_doswiadczenie_gracza[client] += nowe_doswiadczenie;
- doswiadczenie_gracza[client] = nowe_doswiadczenie+doswiadczenie_gracza[client];
- SprawdzPoziom(client);
- return Plugin_Continue;
- }
- public UstawDoswiadczenie(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- UstawNoweDoswiadczenie(client, GetNativeCell(2));
- return -1;
- }
- public Action:UstawNowaKlase(client)
- {
- if(!ilosc_klas)
- return Plugin_Continue;
- new Function:forward_klasy;
- forward_klasy = GetFunctionByName(pluginy_klas[klasa_gracza[client]], "cod_class_disabled");
- if(forward_klasy != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_klas[klasa_gracza[client]], forward_klasy);
- Call_PushCell(client);
- Call_PushCell(klasa_gracza[client]);
- Call_Finish();
- }
- new ret;
- forward_klasy = GetFunctionByName(pluginy_klas[nowa_klasa_gracza[client]], "cod_class_enabled");
- if(forward_klasy != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_klas[nowa_klasa_gracza[client]], forward_klasy);
- Call_PushCell(client);
- Call_PushCell(nowa_klasa_gracza[client]);
- Call_Finish(ret);
- }
- if(ret == 4)
- {
- nowa_klasa_gracza[client] = klasa_gracza[client];
- UstawNowaKlase(client);
- return Plugin_Continue;
- }
- ZapiszDane_Handler(client);
- klasa_gracza[client] = nowa_klasa_gracza[client];
- nowa_klasa_gracza[client] = 0;
- ZmienDane(client);
- UstawNowyItem(client, item_gracza[client], wartosc_itemu_gracza[client], wytrzymalosc_itemu_gracza[client]);
- return Plugin_Continue;
- }
- public UstawKlase(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- nowa_klasa_gracza[client] = GetNativeCell(2);
- if(GetNativeCell(3))
- {
- UstawNowaKlase(client);
- DajBronie(client);
- ZastosujAtrybuty(client);
- }
- }
- return -1;
- }
- public Action:UstawNowyItem(client, item, wartosc, wytrzymalosc)
- {
- if(!ilosc_itemow)
- return Plugin_Continue;
- new limit_wytrzymalosci_itemu = GetConVarInt(cvar_max_wytrzymalosc_itemow);
- if(!limit_wytrzymalosci_itemu)
- limit_wytrzymalosci_itemu = MAKSYMALNA_WARTOSC_ZMIENNEJ;
- item = (item < 0 || item > ilosc_itemow)? GetRandomInt(1, ilosc_itemow): item;
- wartosc = (wartosc < min_wartosci_itemow[item] || wartosc > max_wartosci_itemow[item])? GetRandomInt(min_wartosci_itemow[item], max_wartosci_itemow[item]): wartosc;
- wytrzymalosc = (wytrzymalosc < 0 || wytrzymalosc > limit_wytrzymalosci_itemu)? limit_wytrzymalosci_itemu: wytrzymalosc;
- new Function:forward_itemu;
- forward_itemu = GetFunctionByName(pluginy_itemow[item_gracza[client]], "cod_item_disabled");
- if(forward_itemu != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_itemow[item_gracza[client]], forward_itemu);
- Call_PushCell(client);
- Call_PushCell(item_gracza[client]);
- Call_Finish();
- }
- new ret;
- forward_itemu = GetFunctionByName(pluginy_itemow[item], "cod_item_enabled");
- if(forward_itemu != INVALID_FUNCTION)
- {
- Call_StartFunction(pluginy_itemow[item], forward_itemu);
- Call_PushCell(client);
- Call_PushCell(wartosc);
- Call_PushCell(item);
- Call_Finish(ret);
- }
- item_gracza[client] = item;
- wartosc_itemu_gracza[client] = wartosc;
- wytrzymalosc_itemu_gracza[client] = wytrzymalosc;
- if(ret == 4)
- UstawNowyItem(client, -1, -1, -1);
- return Plugin_Continue;
- }
- public UstawItem(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- UstawNowyItem(client, GetNativeCell(2), GetNativeCell(3), GetNativeCell(4));
- return -1;
- }
- public PobierzDoswiadczenie(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return doswiadczenie_gracza[client];
- return -1;
- }
- public SprawdzDoswiadczenie(poziom)
- {
- new proporcja_poziomu = GetConVarInt(cvar_proporcja_poziomu);
- if(!proporcja_poziomu)
- proporcja_poziomu = 1;
- return RoundFloat(Pow(float(poziom), 2.0))*proporcja_poziomu;
- }
- public PobierzDoswiadczeniePoziomu(Handle:plugin, numParams)
- {
- return SprawdzDoswiadczenie(GetNativeCell(1));
- }
- public PobierzPoziom(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return poziom_gracza[client];
- return -1;
- }
- public PobierzCalkowityPoziom(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- {
- new poziom;
- for(new i = 1; i <= ilosc_klas; i ++)
- {
- if(lvl_klasy_gracza[client][i] > poziom)
- poziom = lvl_klasy_gracza[client][i];
- }
- return poziom;
- }
- return -1;
- }
- public PobierzKlase(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return klasa_gracza[client];
- return -1;
- }
- public PobierzItem(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return item_gracza[client];
- return -1;
- }
- public PobierzWartoscItemu(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return wartosc_itemu_gracza[client];
- return -1;
- }
- public PobierzWytrzymaloscItemu(Handle:plugin, numParams)
- {
- new client = GetNativeCell(1);
- if(IsValidClient(client))
- return wytrzymalosc_itemu_gracza[client];
- return -1;
- }
- public PobierzIloscKlas(Handle:plugin, numParams)
- {
- if(ilosc_klas)
- return ilosc_klas;
- return -1;
- }
- public PobierzKlasePrzezNazwe(Handle:plugin, numParams)
- {
- new String:nazwa[64];
- GetNativeString(1, nazwa, sizeof(nazwa));
- for(new i = 1; i <= ilosc_klas; i ++)
- {
- if(StrEqual(nazwa, nazwy_klas[i]))
- return i;
- }
- return -1;
- }
- public PobierzNazweKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- {
- SetNativeString(2, nazwy_klas[klasa], GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public PobierzOpisKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- {
- SetNativeString(2, opisy_klas[klasa], GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public PobierzBronieKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- {
- SetNativeString(2, bronie_klas[klasa], GetNativeCell(3));
- return 1;
- }
- return 0;
- }
- public PobierzKondycjeKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- return kondycja_klas[klasa];
- return -1;
- }
- public PobierzGrawitacjeKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- return grawitacja_klas[klasa];
- return -1;
- }
- public PobierzNiewidzialnoscKlasy(Handle:plugin, numParams)
- {
- new klasa = GetNativeCell(1);
- if(klasa <= ilosc_klas)
- return niewidzialnosc_klas[klasa];
- return -1;
- }
- public PobierzIloscItemow(Handle:plugin, numParams)
- {
- if(ilosc_itemow)
- return ilosc_itemow;
- return -1;
- }
- public PobierzItemPrzezNazwe(Handle:plugin, numParams)
- {
- new String:nazwa[64];
- GetNativeString(1, nazwa, sizeof(nazwa));
- for(new i = 1; i <= ilosc_itemow; i ++)
- {
- if(StrEqual(nazwa, nazwy_itemow[i]))
- return i;
- }
- return -1;
- }
- public PobierzNazweItemu(Handle:plugin, numParams)
- {
- new item = GetNativeCell(1);
- if(item <= ilosc_itemow)
- {
- SetNativeString(2, nazwy_itemow[item], GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public PobierzOpisItemu(Handle:plugin, numParams)
- {
- new item = GetNativeCell(1);
- if(item <= ilosc_itemow)
- {
- SetNativeString(2, opisy_itemow[item], GetNativeCell(3));
- return 1;
- }
- return -1;
- }
- public ZarejestrujKlase(Handle:plugin, numParams)
- {
- if(numParams != 6)
- return -1;
- if(++ilosc_klas > MAKSYMALNA_ILOSC_KLAS)
- return -2;
- pluginy_klas[ilosc_klas] = plugin;
- GetNativeString(1, nazwy_klas[ilosc_klas], sizeof(nazwy_klas[]));
- GetNativeString(2, opisy_klas[ilosc_klas], sizeof(opisy_klas[]));
- GetNativeString(3, bronie_klas[ilosc_klas], sizeof(bronie_klas[]));
- kondycja_klas[ilosc_klas] = GetNativeCell(4);
- grawitacja_klas[ilosc_klas] = GetNativeCell(5);
- niewidzialnosc_klas[ilosc_klas] = GetNativeCell(6);
- return ilosc_klas;
- }
- public ZarejestrujItem(Handle:plugin, numParams)
- {
- if(numParams != 4)
- return -1;
- if(++ilosc_itemow > MAKSYMALNA_ILOSC_ITEMOW)
- return -2;
- pluginy_itemow[ilosc_itemow] = plugin;
- GetNativeString(1, nazwy_itemow[ilosc_itemow], sizeof(nazwy_itemow[]));
- GetNativeString(2, opisy_itemow[ilosc_itemow], sizeof(opisy_itemow[]));
- min_wartosci_itemow[ilosc_itemow] = GetNativeCell(3);
- max_wartosci_itemow[ilosc_itemow] = GetNativeCell(4);
- return ilosc_itemow;
- }
- public IsValidPlayers()
- {
- new gracze;
- for(new i = 1; i <= MaxClients; i ++)
- {
- if(!IsClientInGame(i) || IsFakeClient(i))
- continue;
- gracze ++;
- }
- return gracze;
- }
- public bool:IsValidClient(client)
- {
- if(client >= 1 && client <= MaxClients && IsClientInGame(client))
- return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement