Tessék
Kód:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>
#include <fun>
new const PLUGIN[] = "Global Offensive";
new const VERSION[] = "1.1p";
new const AUTHOR[] = "DeRoiD";
#define MAX 50
#define LADAESELY 98
#define PointsMin 3
#define PointsMax 8
#define Drop 5
#define MarkMin 25
#pragma semicolon 1
#define ADMINRANG ADMIN_KICK
new bool: skinek[33];
new message[192];
new teamInfo;
new maxPlayers;
new strName[191];
new strText[191];
new alive[11];
new WeaponNames[MAX][32], WeaponMdls[MAX][48], Weapons[MAX], WeaponDrop[MAX], AllWeapon;
new UsingWeapon[9][33], uWeapon[MAX][33], Chest[33], pKey[33], Points[33], Rang[33], Kills[33],
aThing[33], aTarget[33], aPoints[33], Prefix[32];
new Folder[48], SkinFile[48], SaveFile[48], RegisterFile[48], DefaultSkinFile[48], RangFile[48], MenuMod[33], SayText;
new WeaponinMarket[33], bool: inMarket[33], MarketPoints[33], Choosen[33];
new SavedPassword[33][32], bool:Loged[33], Password[33][32], probalkozasok[33] = 0;
new DefaultSkin[31][32], NeedKills[30], Rangs[30][32];
new Selected[33];
new const eWeapon[][] =
{
"weapon_famas", "weapon_usp", "weapon_awp", "weapon_mp5navy", "weapon_m3", "weapon_m4a1",
"weapon_deagle", "weapon_ak47", "weapon_knife", "weapon_flashbang", "weapon_hegrenade",
"weapon_smokegrenade", "weapon_c4"
};
enum _:Fegyver{ uzi[64], nev[20], csw[20], golyo };
new const fegyverek[8][Fegyver] =
{
{ "AK47", "weapon_ak47", CSW_AK47, 90 },
{ "M4A1", "weapon_m4a1", CSW_M4A1, 90 },
{ "AWP", "weapon_awp", CSW_AWP, 30 },
{ "FAMAS", "weapon_famas", CSW_FAMAS, 90 },
{ "MP5", "weapon_mp5navy", CSW_MP5NAVY, 120 },
{ "SHOTGUN", "weapon_m3", CSW_M3, 32 },
{ "DEAGLE", "weapon_deagle", CSW_DEAGLE, 35 },
{ "USP", "weapon_usp", CSW_USP, 100 }
};
public plugin_precache() {
new Line[128], Data[4][48], Len;
AllWeapon++;
get_configsdir(Folder, 47);
format(Folder, 47, "%s/csgo", Folder);
format(SkinFile, 47, "%s/skins.cfg", Folder);
format(SaveFile, 47, "%s/save.ini", Folder);
format(RangFile, 47, "%s/rangs.cfg", Folder);
format(RegisterFile, 47, "%s/reg.ini", Folder);
format(DefaultSkinFile, 47, "%s/dskins.cfg", Folder);
format(Prefix, 31, "[Global Offensive]");
if(file_exists(RangFile))
{
for(new i; i < file_size(RangFile, 1); i++)
{
read_file(RangFile, i, Line, 127, Len);
parse(Line, Data[0], 31, Data[1], 31);
copy(Rangs[i], 31, Data[0]);
NeedKills[i] = str_to_num(Data[1]);
}
}
if(file_exists(SkinFile))
{
for(new i; i < file_size(SkinFile, 1); i++)
{
if(AllWeapon >= MAX-1) break;
read_file(SkinFile, i, Line, 127, Len);
if(!strlen(Line) || Line[0] == ';')
continue;
parse(Line, Data[0], 31, Data[1], 31, Data[2], 47, Data[3], 31);
Weapons[AllWeapon] = str_to_num(Data[0]);
copy(WeaponNames[AllWeapon], 31, Data[1]);
if(ValidMdl(Data[2])) {
precache_model(Data[2]);
copy(WeaponMdls[AllWeapon], 47, Data[2]);
}
WeaponDrop[AllWeapon] = str_to_num(Data[3]);
AllWeapon++;
}
}
if(file_exists(DefaultSkinFile))
{
for(new i; i < file_size(DefaultSkinFile, 1); i++)
{
read_file(DefaultSkinFile, i, Line, 127, Len);
if(!strlen(Line) || Line[0] == ';')
continue;
parse(Line, Data[0], 31, Data[1], 47);
if(ValidMdl(Data[1])) {
precache_model(Data[1]);
copy(DefaultSkin[str_to_num(Data[0])], 47, Data[1]);
}
}
}
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
register_clcmd("say /menu", "MenuOpen");
register_clcmd("say /reg", "RegMenu");
register_clcmd("say /gun", "Guns");
register_clcmd("say /guns", "Guns");
register_concmd("Cost", "MarketCost");
register_concmd("Gift", "GiftPoint");
register_concmd("UserPassword", "PlayerPassword");
register_forward(FM_CmdStart, "CmdStart" );
SayText = get_user_msgid("SayText");
teamInfo = get_user_msgid ("TeamInfo");
maxPlayers = get_maxplayers();
register_message (SayText, "avoid_duplicated");
register_forward(FM_ClientUserInfoChanged, "ClientInfoChanged");
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
for(new i; i < sizeof(eWeapon); i++)
RegisterHam(Ham_Item_Deploy, eWeapon[i], "WeaponSwitch", 1);
register_clcmd ("say", "hook_say");
register_clcmd ("say_team", "hook_teamsay");
}
public client_connect(id)
{
skinek[id]=true;
probalkozasok[id] = 0;
Selected[id] = 0;
for(new i; i<9; i++)
UsingWeapon[i][id]=0;
for(new i = 1; i < AllWeapon; i++)
uWeapon[i][id]=0;
}
public CmdStart(id, uc_handle, seed)
{
if(get_uc(uc_handle, UC_Impulse) == 201)
MenuOpen(id);
}
public Guns(id)
{
if(Choosen[id] < 1)
{
Choosen[id] = 0;
WeaponMenu(id);
}
}
public PlayerSpawn(id)
{
if(is_user_alive(id))
{
Choosen[id] = 0;
cs_set_user_money(id, 0, 0);
if(user_has_weapon(id, CSW_C4))
{
strip_user_weapons(id);
give_item(id, "weapon_c4");
give_item(id, "weapon_knife");
WeaponMenu(id);
return PLUGIN_HANDLED;
}
strip_user_weapons(id);
give_item(id, "weapon_knife");
WeaponMenu(id);
if(cs_get_user_team(id) == CS_TEAM_CT)
cs_set_user_defuse(id, 1);
}
return PLUGIN_CONTINUE;
}
public MenuOpen(id)
{
if(!Loged[id])
{
RegMenu(id);
return PLUGIN_HANDLED;
}
MenuMod[id] = 0;
Menu(id);
return PLUGIN_CONTINUE;
}
public client_death(Killer, Victim)
{
if(Killer == Victim)
return PLUGIN_HANDLED;
Kills[Killer]++;
if(Rang[Killer] < sizeof(Rangs) && Rang[Killer] < file_size(RangFile, 1)-1)
if(Kills[Killer] >= NeedKills[Rang[Killer]])
Rang[Killer]++;
new pPont, Name[32];
pPont += random_num(PointsMin, PointsMax);
Points[Killer] += pPont;
set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
show_hudmessage(Killer, "+%d Pont", pPont);
if(Drop >= random_num(1, 100))
{
get_user_name(Killer, Name, 31);
new x = random_num(1, 4);
if(x == 1)
{
pKey[Killer]++;
print_color(0, "!g%s!t %s !y talált egy!g Kulcsot!y!", Prefix, Name);
}
if(x == 2 || x == 3)
{
Chest[Killer]++;
print_color(0, "!g%s!t %s!y talált egy!g Ládát!y!", Prefix, Name);
}
}
Save(Killer);
return PLUGIN_CONTINUE;
}
public MarketCost(id)
{
if(inMarket[id] || !Loged[id])
return PLUGIN_HANDLED;
new Data[32], Cost;
read_args(Data, 31);
remove_quotes(Data);
Cost = str_to_num(Data);
if(Cost < 0)
{
client_cmd(id, "messagemode Cost");
return PLUGIN_CONTINUE;
}
else if(MarkMin >= Cost)
{
print_color(id, "%s!t %d!y pont alatt nem tudsz eladni semmit!", Prefix, MarkMin);
client_cmd(id, "messagemode Cost");
return PLUGIN_CONTINUE;
}
else
{
MarketPoints[id] = Cost;
MenuMod[id] = 3;
Menu(id);
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public GiftPoint(id)
{
if(inMarket[id] || !Loged[id])
return PLUGIN_HANDLED;
new Data[32], Cost;
read_args(Data, 31);
remove_quotes(Data);
Cost = str_to_num(Data);
if(Cost < 0 || Points[id] < Cost)
{
client_cmd(id, "messagemode Gift");
return PLUGIN_CONTINUE;
}
else
{
aPoints[id] = Cost;
MenuMod[id] = 5;
Menu(id);
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public WeaponSwitch(Weapon) {
new id = get_pdata_cbase(Weapon, 41, 4);
new wid = cs_get_weapon_id(Weapon);
if(id > 32 || id < 1)
{
return HAM_SUPERCEDE;
}
if(skinek[id])
{
for(new j; j<9; j++)
{
if(wid == Weapons[UsingWeapon[j][id]])
{
set_pev(id, pev_viewmodel2, WeaponMdls[UsingWeapon[j][id]]);
return HAM_SUPERCEDE;
}
}
if(ValidMdl(DefaultSkin[wid]))
set_pev(id, pev_viewmodel2, DefaultSkin[wid]);
}
return HAM_IGNORED;
}
public ChestOpen(id)
{
new rWeapon, rNum = random_num(1, 100);
if(LADAESELY >= rNum)
{
do
{
rWeapon = random_num(1, (AllWeapon-1));
rNum = random_num(1, 100);
}
while(WeaponDrop[rWeapon] < rNum);
new Name[32];
get_user_name(id, Name, 31);
print_color(0, "!g%s!t %s!y talált egy!t %s!y-t.", Prefix, Name, WeaponNames[rWeapon]);
uWeapon[rWeapon][id]++;
Save(id);
}
else
print_color(id, "!g%s!y Sajnos ebben a ládában nem volt semmi!", Prefix);
}
public Menu(id)
{
if(!Loged[id])
{
RegMenu(id);
return PLUGIN_CONTINUE;
}
new sMenu, Line[128];
if(MenuMod[id] == -2)
{
formatex(Line, 127, "\r%s\y Válassz valamit! \d[Pont: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
new String[32], All;
for(new i = 1; i < AllWeapon; i++)
{
if(uWeapon[i][id] == 0)
continue;
num_to_str(i, String, 31);
formatex(Line, 127, "\r%s \d|\y %d darab", WeaponNames[i], uWeapon[i][id]);
menu_additem(sMenu, Line, String);
All++;
}
if(Chest[id] > 0)
{
formatex(Line, 127, "\rLáda \d|\y %d darab", Chest[id]);
menu_additem(sMenu, Line, "101");
All++;
}
if(pKey[id] > 0)
{
formatex(Line, 127, "\rKulcs \d|\y %d darab", pKey[id]);
menu_additem(sMenu, Line, "102");
All++;
}
if(Points[id] > 0)
{
formatex(Line, 127, "\rPont \d|\y %d", Points[id]);
menu_additem(sMenu, Line, "103");
All++;
}
if(All == 0)
{
MenuMod[id] = 0;
Menu(id);
return PLUGIN_CONTINUE;
}
}
else if(MenuMod[id] == -1)
{
formatex(Line, 127, "\r%s\y Válassz valamit! \d[Pont: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
new String[32], All;
for(new i = 1; i < AllWeapon; i++)
{
if(uWeapon[i][id] == 0)
continue;
num_to_str(i, String, 31);
formatex(Line, 127, "\r%s \d|\y %d darab", WeaponNames[i], uWeapon[i][id]);
menu_additem(sMenu, Line, String);
All++;
}
if(Chest[id] > 0)
{
formatex(Line, 127, "\rLáda \d|\y %d darab", Chest[id]);
menu_additem(sMenu, Line, "101");
All++;
}
if(pKey[id] > 0)
{
formatex(Line, 127, "\rKulcs \d|\y %d darab", pKey[id]);
menu_additem(sMenu, Line, "102");
All++;
}
if(All == 0)
{
MenuMod[id] = 0;
Menu(id);
return PLUGIN_CONTINUE;
}
}
else if(MenuMod[id] == 0)
{
formatex(Line, 127, "\r%s\y Fõ menü \d[Pont: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
formatex(Line, 127, "Felszerelés");
menu_additem(sMenu, Line, "1");
if(!inMarket[id])
{
formatex(Line, 127, "Láda nyitás");
menu_additem(sMenu, Line, "2");
}
else
{
formatex(Line, 127, "Láda nyitás \d[Piacozás közben nem engedélyezett]");
menu_additem(sMenu, Line, "0");
}
formatex(Line, 127, "Piac");
menu_additem(sMenu, Line, "3");
if(!inMarket[id])
{
formatex(Line, 127, "Ajándékozás^n");
menu_additem(sMenu, Line, "5");
if(Rang[id] == file_size(RangFile, 1) -1)
formatex(Line, 127, "\wSkinek:\d %s^n\rRangod:\d %s \y[Ölés: \r%d]", skinek[id] ? "\yBekapcsolva" : "\rKikapcsolva", Rangs[Rang[id]], Kills[id]);
else
formatex(Line, 127, "\wSkinek:\d %s^n\rKövetkezõ Rangod:\d %s \y[Ölés: \r%d\d/\r%d]", skinek[id] ? "\yBekapcsolva" : "\rKikapcsolva", Rangs[Rang[id]+1], Kills[id], NeedKills[Rang[id]]);
menu_additem(sMenu, Line, "6");
}
else
{
formatex(Line, 127, "Ajándékozás \d[Piacozás közben nem engedélyezett]^n");
menu_additem(sMenu, Line, "0");
if(Rang[id] == file_size(RangFile, 1) -1)
formatex(Line, 127, "\wSkinek:\d %s^n\rRangod:\d %s \y[Ölés: \r%d]", skinek[id] ? "\yBekapcsolva" : "\rKikapcsolva", Rangs[Rang[id]], Kills[id]);
else
formatex(Line, 127, "\wSkinek:\d %s^n\rKövetkezõ Rangod:\d %s \y[Ölés: \r%d\d/\r%d]", skinek[id] ? "\yBekapcsolva" : "\rKikapcsolva", Rangs[Rang[id]+1], Kills[id], NeedKills[Rang[id]]);
menu_additem(sMenu, Line, "6");
}
}
else if(MenuMod[id] == 1)
{
formatex(Line, 127, "\r%s\y Felszerelés \d[Pont: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
new String[32], All;
for(new i = 1; i < AllWeapon; i++)
{
if(uWeapon[i][id] == 0)
continue;
formatex(String, 31, "%d %d", i, Weapons[i]);
formatex(Line, 127, "\r%s \d|\y %d darab", WeaponNames[i], uWeapon[i][id]);
menu_additem(sMenu, Line, String);
All++;
}
if(All == 0)
{
MenuMod[id] = 0;
Menu(id);
return PLUGIN_CONTINUE;
}
}
else if(MenuMod[id] == 2)
{
formatex(Line, 127, "\r%s\y Láda nyitás ^n\rLáda:\y %d \w| \rKulcs:\y %d", Prefix, Chest[id], pKey[id]);
sMenu = menu_create(Line, "MenuHandler");
formatex(Line, 127, "Láda nyitás \d[1 láda és 1 kulcs]");
menu_additem(sMenu, Line, "1");
}
else if(MenuMod[id] == 3)
{
formatex(Line, 127, "\r%s\y Piac \d[Pont: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
new String[32], All;
if(!inMarket[id])
{
for(new i = 1; i < AllWeapon; i++)
{
if(i == WeaponinMarket[id] && uWeapon[i][id] > 0)
{
formatex(Line, 127, "\rStandod:\d %s^n\yĂra:\d %d", WeaponNames[i], MarketPoints[id]);
All++;
}
}
if(101 == WeaponinMarket[id] && Chest[id] > 0)
{
formatex(Line, 127, "\rStandod:\d Láda^n\yĂra:\d %d", MarketPoints[id]);
All++;
}
if(102 == WeaponinMarket[id] && pKey[id] > 0)
{
formatex(Line, 127, "\rStandod:\d Kulcs^n\yĂra:\d %d", MarketPoints[id]);
All++;
}
if(All == 0)
formatex(Line, 127, "\dVálasz valamit!");
menu_additem(sMenu, Line, "-1");
}
if(!inMarket[id])
formatex(Line, 127, "\rMehet^n");
else
formatex(Line, 127, "\dVissza^n");
menu_additem(sMenu, Line, "0");
new Name[32];
for(new x; x < 32; x++)
{
if(!is_user_connected(x))
continue;
if(inMarket[x] && MarketPoints[x] > 0)
{
num_to_str(x, String, 31);
get_user_name(x, Name, 31);
if(101 == WeaponinMarket[x])
{
formatex(Line, 127, "\r%s \d|\y Láda \d| \rĂra:\y %d", Name, MarketPoints[x]);
menu_additem(sMenu, Line, String);
}
else if(102 == WeaponinMarket[x])
{
formatex(Line, 127, "\r%s \d|\y Kulcs \d| \rĂra:\y %d", Name, MarketPoints[x]);
menu_additem(sMenu, Line, String);
}
else
{
formatex(Line, 127, "\r%s \d|\y %s \d| \rĂra:\y %d", Name, WeaponNames[WeaponinMarket[x]], MarketPoints[x]);
menu_additem(sMenu, Line, String);
}
}
}
}
else if(MenuMod[id] == 5)
{
formatex(Line, 127, "\r%s\y Ajándékozás \d[Arany: \y%d\d]", Prefix, Points[id]);
sMenu = menu_create(Line, "MenuHandler");
new All, Name[32], String[32];
get_user_name(aTarget[id], Name, 31);
if(aTarget[id] > 0)
{
if(aPoints[id] == 0)
aPoints[id] = 1;
formatex(Line, 127, "Játékos: \d%s", Name);
menu_additem(sMenu, Line, "-1");
for(new i = 1; i < AllWeapon; i++)
{
if(i == aThing[id] && uWeapon[i][id] > 0)
{
formatex(Line, 127, "Ajándék:\d %s^n", WeaponNames[i]);
menu_additem(sMenu, Line, "-2");
All++;
}
}
if(aThing[id] == 0 && All == 0)
{
formatex(Line, 127, "Válasz valamit!^n");
menu_additem(sMenu, Line, "-2");
}
else if(aThing[id] > 100)
{
if(101 == aThing[id])
{
formatex(Line, 127, "Ajándék:\d Láda");
}
if(102 == aThing[id])
{
formatex(Line, 127, "Ajándék:\d Kulcs");
}
if(103 == aThing[id])
{
formatex(Line, 127, "Ajándék:\d Arany");
}
menu_additem(sMenu, Line, "-2");
}
formatex(Line, 127, "Mennyiség:\d %d^n", aPoints[id]);
menu_additem(sMenu, Line, "-4");
formatex(Line, 127, "\yKüldés!");
menu_additem(sMenu, Line, "-3");
}
else
{
for(new i; i < 32; i++)
{
if(is_user_connected(i) && i != id)
{
get_user_name(i, Name, 31);
num_to_str(i, String, 31);
menu_additem(sMenu, Name, String);
}
}
}
}
menu_display(id, sMenu);
return PLUGIN_CONTINUE;
}
public MenuHandler(id, gMenu, Key)
{
if(Key == MENU_EXIT)
{
MenuMod[id] = 0;
menu_destroy(gMenu);
return PLUGIN_HANDLED;
}
new aMenu[2], Data[4][32], sKey[32], Name[32], mName[32];
menu_item_getinfo(gMenu, Key, aMenu[0], Data[0], 31, Data[1], 31, aMenu[1]);
parse(Data[0], sKey, 31);
Key = str_to_num(sKey);
if(MenuMod[id] == -2)
{
aThing[id] = Key;
MenuMod[id] = 5;
Menu(id);
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == -1)
{
WeaponinMarket[id] = Key;
client_cmd(id, "messagemode Cost");
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == 0)
{
if(Key==6)
{
if(skinek[id]) skinek[id]=false;
else skinek[id]=true;
MenuMod[id] = 0;
}
else
MenuMod[id] = Key;
Menu(id);
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == 1)
{
parse(Data[0], Data[2], 31, Data[3], 31);
if(str_to_num(Data[3]) == 28)
UsingWeapon[0][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 18)
UsingWeapon[1][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 15)
UsingWeapon[2][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 29)
UsingWeapon[3][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 21)
UsingWeapon[4][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 22)
UsingWeapon[5][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 19)
UsingWeapon[6][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 16)
UsingWeapon[7][id] = str_to_num(Data[2]);
else if(str_to_num(Data[3]) == 26)
UsingWeapon[8][id] = str_to_num(Data[2]);
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == 2)
{
if(Key == 1)
{
if(Chest[id] > 0 && pKey[id] > 0)
{
Chest[id]--;
pKey[id]--;
ChestOpen(id);
Menu(id);
return PLUGIN_CONTINUE;
}
}
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == 3)
{
if(Key == -1)
{
MenuMod[id] = -1;
Menu(id);
return PLUGIN_CONTINUE;
}
else if(Key == 0)
{
if(inMarket[id])
inMarket[id] = false;
else if(MarketPoints[id] > 0)
{
get_user_name(id, Name, 31);
if(WeaponinMarket[id] > 100)
print_color(0, "!g%s!t %s!y kirakott egy !t%s!g %d!y pontért!",Prefix, Name, (WeaponinMarket[id] == 101) ? "Ládát" : "Kulcsot", MarketPoints[id]);
else
print_color(0, "!g%s!t %s!y kirakott egy !t%s !y-t!g %d!y pontért!",Prefix, Name, WeaponNames[WeaponinMarket[id]], MarketPoints[id]);
inMarket[id] = true;
}
Menu(id);
return PLUGIN_CONTINUE;
}
else if(inMarket[Key] && Points[id] >= MarketPoints[Key])
{
get_user_name(Key, Name, 31);
get_user_name(id, mName, 31);
if(WeaponinMarket[Key] < 101)
{
print_color(0, "!g%s!t %s!y vásárolt egy!t %s!y-t!g %d!y pontért !t%s!y-tól/tõl!", Prefix, mName, WeaponNames[WeaponinMarket[Key]], MarketPoints[Key], Name);
uWeapon[WeaponinMarket[Key]][id]++;
uWeapon[WeaponinMarket[Key]][Key]--;
}
else if(WeaponinMarket[Key] == 101)
{
print_color(0, "!g%s!t %s!y vásárolt egy!t ládát!g %d!y pontért !t%s!y-tól/tõl!", Prefix, mName, MarketPoints[Key], Name);
Chest[id]++;
Chest[Key]--;
}
else if(WeaponinMarket[Key] == 102)
{
print_color(0, "!g%s!t %s!y vásárolt egy!t kulcsot!g %d!y pontért !t%s!y-tól/tõl!", Prefix, mName, MarketPoints[Key], Name);
pKey[id]++;
pKey[Key]--;
}
Points[Key] += MarketPoints[Key];
Points[id] -= MarketPoints[Key];
Save(Key);
Save(id);
inMarket[Key] = false;
MarketPoints[Key] = 0;
WeaponinMarket[Key] = 0;
MenuMod[id] = 0;
}
return PLUGIN_CONTINUE;
}
else if(MenuMod[id] == 5)
{
if(Key == -1)
{
aTarget[id] = 0;
}
if(Key == -2)
{
MenuMod[id] = -2;
}
if(Key == -3)
{
if(aThing[id] < 100)
{
if(uWeapon[aThing[id]][id] > 0)
{
if(uWeapon[aThing[id]][id]<aPoints[id])
{
client_cmd(id, "messagemode Gift");
print_color(id, "!g%s !yNincs !g%d !t%s!y fegyvered.", Prefix, aPoints[id], WeaponNames[aThing[id]]);
return PLUGIN_CONTINUE;
}
uWeapon[aThing[id]][aTarget[id]]+=aPoints[id];
uWeapon[aThing[id]][id]-=aPoints[id];
new Name[32], Name2[32];
get_user_name(id, Name, 31);
get_user_name(aTarget[id], Name2, 31);
print_color(id, "!g%s !yKüldtél !t%s!y-nak/nek !g%d !t%s!y-t", Prefix, Name2, aPoints[id], WeaponNames[aThing[id]]);
print_color(aTarget[id], "!g%s !t%s !yküldött !g%d !t%s!y-t.", Prefix, Name, aPoints[id], WeaponNames[aThing[id]]);
Save(aTarget[id]);
Save(id);
MenuMod[id] = 0;
aThing[id] = 0;
aTarget[id] = 0;
aPoints[id] = 0;
}
}
else
{
new Name[32], Name2[32];
get_user_name(id, Name, 31);
get_user_name(aTarget[id], Name2, 31);
if(101 == aThing[id])
{
if(Chest[id]<aPoints[id])
{
client_cmd(id, "messagemode Gift");
print_color(id, "!g%s !yNincs !g%d !tládád!y.", Prefix, aPoints[id]);
return PLUGIN_CONTINUE;
}
Chest[aTarget[id]]+=aPoints[id];
Chest[id]-=aPoints[id];
print_color(id, "!g%s !yKüldtél !t%s!y-nak/nek!g %d!t Ládát!y.", Prefix, Name2, aPoints[id]);
print_color(aTarget[id], "!g%s !t%s !yküldött!g %d!t Ládát!y.", Prefix, Name, aPoints[id]);
}
else if(102 == aThing[id])
{
if(pKey[id]<aPoints[id])
{
client_cmd(id, "messagemode Gift");
print_color(id, "!g%s !yNincs !g%d!t kulcsod!y.", Prefix, aPoints[id]);
return PLUGIN_CONTINUE;
}
pKey[aTarget[id]]+=aPoints[id];
pKey[id]-=aPoints[id];
print_color(id, "!g%s !yKüldtél !t%s!y-nak/nek!g %d!t Kulcsot!y.", Prefix, Name2, aPoints[id]);
print_color(aTarget[id], "!g%s !t%s !yküldött!g %d!t Kulcsot!y.", Prefix, Name, aPoints[id]);
}
else if(103 == aThing[id])
{
if(Points[id]<aPoints[id])
{
client_cmd(id, "messagemode Gift");
print_color(id, "!g%s !yNincs !g%d aranyad.", Prefix, aPoints[id]);
return PLUGIN_CONTINUE;
}
Points[aTarget[id]] += aPoints[id];
Points[id] -= aPoints[id];
print_color(id, "!g%s !yKüldtél !t%s!y-nak/nek !g%d!t Pontot!y.", Prefix, Name2, aPoints[id]);
print_color(aTarget[id], "!g%s !t%s !yküldött !g%d!t Pontot!y.", Prefix, Name, aPoints[id]);
}
Save(aTarget[id]);
Save(id);
MenuMod[id] = 0;
aThing[id] = 0;
aTarget[id] = 0;
aPoints[id] = 0;
}
}
if(Key == -4)
{
client_cmd(id, "messagemode Gift");
return PLUGIN_CONTINUE;
}
if(Key > 0)
aTarget[id] = Key;
Menu(id);
return PLUGIN_CONTINUE;
}
MenuMod[id] = 0;
return PLUGIN_CONTINUE;
}
stock print_color(const id, const input[], any:...)
{
new Count = 1, Players[32];
static Msg[191];
vformat(Msg, 190, input, 3);
replace_all(Msg, 190, "!g", "^4");
replace_all(Msg, 190, "!y", "^1");
replace_all(Msg, 190, "!t", "^3");
if(id) Players[0] = id; else get_players(Players, Count, "ch");
{
for (new i = 0; i < Count; i++)
{
if (is_user_connected(Players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, SayText, _, Players[i]);
write_byte(Players[i]);
write_string(Msg);
message_end();
}
}
}
return PLUGIN_HANDLED;
}
public client_putinserver(id)
{
Kills[id] = 0, Rang[id] = 0, Points[id] = 0, Choosen[id] = 0, pKey[id] = 0, Chest[id] = 0;
for(new i; i < AllWeapon; i++)
uWeapon[i][id] = 0;
Load(id);
Password[id] = "";
SavedPassword[id] = "";
Loged[id] = false;
}
public Load(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
new pFile, Name[32];
pFile = fopen(SaveFile, "rt");
get_user_name(id, Name, 31);
if(pFile)
{
new Line[1024];
new LineName[32];
new data[16];
while(!feof(pFile))
{
fgets(pFile, Line, 1023);
if(Line[0] == ';' || !strlen(Line))
continue;
strbreak(Line, LineName, 31, Line, 1023);
if(equal(LineName, Name))
{
strbreak(Line, data, 15, Line, 1023); Kills[id] = str_to_num(data);
strbreak(Line, data, 15, Line, 1023); Points[id] = str_to_num(data);
strbreak(Line, data, 15, Line, 1023); pKey[id] = str_to_num(data);
strbreak(Line, data, 15, Line, 1023); Chest[id] = str_to_num(data);
strbreak(Line, data, 15, Line, 1023); Rang[id] = str_to_num(data);
for(new i; i < MAX; i++)
{
strbreak(Line, data, 15, Line, 1023);
uWeapon[i][id] = str_to_num(data);
}
fclose(pFile);
return PLUGIN_HANDLED;
}
}
fclose(pFile);
}
return PLUGIN_CONTINUE;
}
public Save(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
new pFile, Name[32];
pFile = fopen(SaveFile, "rt");
get_user_name(id, Name, 31);
if(pFile)
{
new Line[192], Lines;
new LineName[32], bool:Found;
new mLine[1024], LoadWeapon[1024], String[16];
format(String, 15, "^"%i^" ", Kills[id]);
add(LoadWeapon, 1023, String);
format(String, 15, "^"%i^" ", Points[id]);
add(LoadWeapon, 1023, String);
format(String, 15, "^"%i^" ", pKey[id]);
add(LoadWeapon, 1023, String);
format(String, 15, "^"%i^" ", Chest[id]);
add(LoadWeapon, 1023, String);
format(String, 15, "^"%i^" ", Rang[id]);
add(LoadWeapon, 1023, String);
for(new i; i < MAX; i++)
{
format(String, 15, "^"%i^" ", uWeapon[i][id]);
add(LoadWeapon, 1023, String);
}
formatex(mLine, 1023, "^"%s^" %s", Name, LoadWeapon);
while(!feof(pFile))
{
fgets(pFile, Line, 191);
if(Line[0] == ';' || strlen(Line) < 2)
continue;
parse(Line, LineName, 31);
if(equal(LineName, Name) && !Found)
{
write_file(SaveFile, mLine, Lines);
fclose(pFile);
Found = true;
return PLUGIN_HANDLED;
}
Lines++;
}
if(!Found)
{
write_file(SaveFile, mLine);
fclose(pFile);
return PLUGIN_HANDLED;
}
fclose(pFile);
}
return PLUGIN_CONTINUE;
}
public WeaponMenu(id)
{
if(Choosen[id] >= 2)
return PLUGIN_HANDLED;
new String[128];
format(String, 127, "\r%s\y FegyvermenĂĽ", Prefix);
new wMenu = menu_create(String, "wMenuHandler");
new szid[10];
if(Choosen[id] == 0)
{
for(new i=0; i < 6; i++)
{
num_to_str(i, szid, charsmax(szid));
format(String, 127, "%s", fegyverek[i][uzi]);
menu_additem(wMenu, String, szid);
}
}
if(Choosen[id] == 1)
{
for(new i=6; i < 8; i++)
{
num_to_str(i, szid, charsmax(szid));
format(String, 127, "%s", fegyverek[i][uzi]);
menu_additem(wMenu, String, szid);
}
}
menu_display(id, wMenu);
return PLUGIN_CONTINUE;
}
public wMenuHandler(id, gMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(gMenu);
return;
}
new data[32], name[64];
new access, callback;
menu_item_getinfo(gMenu, item, access, data, charsmax(data), name, charsmax(name), callback);
new szam = str_to_num(data);
give_item(id, fegyverek[szam][nev]);
cs_set_user_bpammo(id, fegyverek[szam][csw], fegyverek[szam][golyo]);
Choosen[id]++;
if(Choosen[id] >= 2)
Grenades(id);
WeaponMenu(id);
}
public RegMenu(id)
{
new String[128], Name[32];
if(Registered(id))
format(String, 127, "\r%s\y Regisztrációs Menü^n\rStátusz: \dRegisztrálva^n\rPróbálkozások:\d %d/3", Prefix, probalkozasok[id]);
else
format(String, 127, "\r%s\y Regisztrációs Menü^n\rStátusz: \dNem regisztrált", Prefix);
new rMenu = menu_create(String, "rMenuHandler");
get_user_name(id, Name, 31);
format(String, 127, "\wFelhasznalĂł:\d %s", Name);
menu_additem(rMenu, String, "0");
if(!Registered(id))
{
format(String, 127, "\wJelszĂł:\d %s^n", Password[id]);
menu_additem(rMenu, String, "1");
if(strlen(Password[id]) > 4)
{
format(String, 127, "Regisztrálok");
menu_additem(rMenu, String, "2");
}
else
{
format(String, 127, "\dRegisztrálok");
menu_additem(rMenu, String, "0");
}
}
else
{
if(!Loged[id])
{
format(String, 127, "\wJelszĂł:\d %s^n", Password[id]);
menu_additem(rMenu, String, "1");
format(String, 127, "Bejelentkezés!");
menu_additem(rMenu, String, "3");
}
else
{
format(String, 127, "Kijelentkezés!");
menu_additem(rMenu, String, "-1");
}
}
menu_display(id, rMenu);
}
public rMenuHandler(id, gMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(gMenu);
return;
}
new data[9], name[64], Key;
new access, callback;
menu_item_getinfo(gMenu, item, access, data, charsmax(data), name, charsmax(name), callback);
Key = str_to_num(data);
if(Key == -1)
ToLogout(id);
if(Key == 0)
RegMenu(id);
if(Key == 1)
{
client_cmd(id, "messagemode UserPassword");
RegMenu(id);
}
if(Key == 2)
{
print_color(id, "!g%s!y Sikeres regisztráció! [Jelszavad: !t%s!y]", Prefix, Password[id]);
Register(id, Password[id]);
copy(SavedPassword[id], 31, Password[id]);
Loged[id] = true;
Menu(id);
}
if(Key == 3)
{
if(equal(SavedPassword[id], Password[id])) {
Loged[id] = true;
print_color(id, "!g%s!y Sikeresen beléptél!", Prefix);
Menu(id);
}
else
{
probalkozasok[id]++;
if(probalkozasok[id] >= 3)
{
server_cmd("kick #%i ^"3x elrotottad a jelszot. Ezert kickelve lettel.^"", get_user_userid(id));
probalkozasok[id]=0;
return;
}
client_cmd(id, "messagemode UserPassword");
print_color(id, "!g%s !yHibás jelszó. 3. sikertelen probálkozás utan kick jár. Probálkozások: %d/3", Prefix, probalkozasok[id]);
RegMenu(id);
}
}
}
public ToLogout(id)
{
if(Loged[id])
{
Loged[id] = false;
Password[id] = "";
print_color(id, "!g%s!y Sikeresen kiléptél!", Prefix);
}
}
public PlayerPassword(id)
{
new Data[32];
read_args(Data, 31);
remove_quotes(Data);
if(strlen(Data) < 5)
{
print_color(id, "!g%s!y Túl rövid a jelszó!", Prefix);
client_cmd(id, "messagemode UserPassword");
return PLUGIN_HANDLED;
}
if(Loged[id])
return PLUGIN_HANDLED;
copy(Password[id], 31, Data);
RegMenu(id);
return PLUGIN_CONTINUE;
}
public ClientInfoChanged(id)
set_task(1.0, "NameConrol",id);
public NameConrol(id){
if(!is_user_connected(id))
return PLUGIN_CONTINUE;
new name[31];
get_user_name(id, name, 30);
new userid = get_user_userid(id);
if (contain(name, "#Spec_Help_Text") != -1 || contain(name, "#Cstrike_Spetsnaz_Label") != -1 || contain(name, "#Buy") != -1 || contain(name, "#Cstrike_GIGN_Label") != -1 || contain(name, "#Spec_Duck") != -1)
{
server_cmd("kick #%d Ilyent nem szabad!",userid);
return PLUGIN_HANDLED;
}
new Bnum = strlen(name);
new i=0;
new Nnum=0;
while(i < Bnum)
{
if(name[i] == '1' || name[i] == '2' || name[i] == '3' || name[i] == '4' || name[i] == '5' || name[i] == '6' || name[i] == '7' || name[i] == '8' || name[i] == '9' || name[i] == '0')
Nnum++;
++i;
}
if( Nnum >= 7)
{
client_cmd(id, "name ^"Hirdetes Tiltott!^"");
client_cmd(id, "retry");
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public avoid_duplicated (msgId, msgDest, receiver)
{
return PLUGIN_HANDLED;
}
public hook_say(id)
{
read_args (message, 191);
remove_quotes (message);
new Bnum = strlen(message);
new Nnum = 0;
new i = 0;
while(i < Bnum)
{
if(message[i] == '1' || message[i] == '2' || message[i] == '3' || message[i] == '4' || message[i] == '5' || message[i] == '6' || message[i] == '7' || message[i] == '8' || message[i] == '9' || message[i] == '0')
Nnum++;
++i;
}
if( Nnum >= 7)
{
ColorChat(id, BLUE,"^3A szerveren tilos a hĂrdetĂ©s!");
return PLUGIN_HANDLED;
}
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
return PLUGIN_CONTINUE;
new name[192];
name = message;
if (contain(name, "#Spec_Help_Text") != -1 || contain(name, "#Cstrike_Spetsnaz_Label") != -1 || contain(name, "#Buy") != -1 || contain(name, "#Cstrike_GIGN_Label") != -1 || contain(name, "#Spec_Duck") != -1)
{
ColorChat(id, BLUE,"^3HAHAHA:)");
return PLUGIN_HANDLED;
}
get_user_name (id, name, 31);
new bool:admin = false;
if (get_user_flags(id) & ADMINRANG)
admin = true;
new isAlive;
if (is_user_alive (id))
{
isAlive = 1;
alive = "^x01";
}
else
{
isAlive = 0;
alive = "^x01*Halott*";
}
static color[10];
if (admin)
{
get_user_team (id, color, 9);
format (strName, 191, "%s^x04[ADMIN][%s]^x03%s", alive, Rangs[Rang[id]], name);
format (strText, 191, "^x04%s", message);
}
else
{
get_user_team (id, color, 9);
format (strName, 191, "%s^x04[%s]^x03%s", alive, Rangs[Rang[id]], name);
format (strText, 191, "%s", message);
}
format (message, 191, "%s^x01 : %s", strName, strText);
sendMessage (color, isAlive);
return PLUGIN_CONTINUE;
}
public hook_teamsay(id)
{
new playerTeam = get_user_team(id);
new playerTeamName[19];
switch (playerTeam)
{
case 1:
copy (playerTeamName, 11, "*Te*");
case 2:
copy (playerTeamName, 18, "*Ct*");
default:
copy (playerTeamName, 9, "*Néző*");
}
read_args (message, 191);
remove_quotes (message);
new Bnum = strlen(message);
new Nnum = 0;
new i = 0;
while(i < Bnum)
{
if(message[i] == '1' || message[i] == '2' || message[i] == '3' || message[i] == '4' || message[i] == '5' || message[i] == '6' || message[i] == '7' || message[i] == '8' || message[i] == '9' || message[i] == '0')
Nnum++;
++i;
}
if( Nnum >= 7)
{
ColorChat(id, BLUE,"^3A szerveren tilos a hirdetes!");
return PLUGIN_HANDLED;
}
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
return PLUGIN_CONTINUE;
new name[192];
name = message;
if (contain(name, "#Spec_Help_Text") != -1 || contain(name, "#Cstrike_Spetsnaz_Label") != -1 || contain(name, "#Buy") != -1 || contain(name, "#Cstrike_GIGN_Label") != -1 || contain(name, "#Spec_Duck") != -1)
{
ColorChat(id, BLUE,"^3HAHAHA:)");
return PLUGIN_HANDLED;
}
get_user_name (id, name, 31);
new bool:admin = false;
if (get_user_flags(id) & ADMINRANG)
admin = true;
new isAlive;
if (is_user_alive (id))
{
isAlive = 1;
alive = "^x01";
}
else
{
isAlive = 0;
alive = "^x01*Halott*";
}
static color[10];
if (admin)
{
get_user_team (id, color, 9) ;
format (strName, 191, "%s(%s)^x04[ADMIN][%s]^x03%s", alive, playerTeamName, Rangs[Rang[id]], name);
format (strText, 191, "^x04%s", message);
}
else
{
get_user_team (id, color, 9);
format (strName, 191, "%s(%s)^x04[%s]^x03%s", alive, playerTeamName, Rangs[Rang[id]], name);
format (strText, 191, "%s", message);
}
format (message, 191, "%s^x01 : %s", strName, strText);
sendTeamMessage (color, isAlive, playerTeam);
return PLUGIN_CONTINUE;
}
public sendMessage (color[], alive)
{
new teamName[10];
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue;
get_user_team (player, teamName, 9);
changeTeamInfo (player, color);
writeMessage (player, message);
changeTeamInfo (player, teamName);
}
}
public sendTeamMessage (color[], alive, playerTeam)
{
new teamName[10];
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue;
if (get_user_team(player) == playerTeam || get_user_flags(player) & ADMIN_BAN)
{
get_user_team (player, teamName, 9);
changeTeamInfo (player, color);
writeMessage (player, message);
changeTeamInfo (player, teamName);
}
}
}
public changeTeamInfo (player, team[])
{
message_begin (MSG_ONE, teamInfo, _, player);
write_byte (player);
write_string (team);
message_end();
}
public writeMessage (player, message[])
{
message_begin (MSG_ONE, SayText, {0, 0, 0}, player);
write_byte (player);
write_string (message);
message_end ();
}
stock bool:ValidMdl(Mdl[])
{
if(containi(Mdl, ".mdl") != -1)
{
return true;
}
return false;
}
stock bool:Registered(id)
{
new pFile, Data[2][32], Line[64], Name[32];
get_user_name(id, Name, 31);
pFile = fopen(RegisterFile, "rt");
while(!feof(pFile))
{
fgets(pFile, Line, 63);
parse(Line, Data[0], 31, Data[1], 31);
if(equal(Data[0], Name))
{
copy(SavedPassword[id], 31, Data[1]);
return true;
}
}
fclose(pFile);
return false;
}
stock Register(id, const rSavedPassword[])
{
new pFile, Line[64], Name[32];
get_user_name(id, Name, 31);
pFile = fopen(RegisterFile, "at+");
format(Line, 63, "^"%s^" ^"%s^"", Name, rSavedPassword);
write_file(RegisterFile, Line);
fclose(pFile);
}
stock Grenades(id)
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_smokegrenade");
give_item(id, "weapon_flashbang");
}