Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define DMG_BULLET (1<<1)
new bool:ma_klase[33];
new klasa_gracza[33];
new const nazwa[] = "Snajper";
new const opis[] = "Zwiekszone obrazenia z karabinow snajperskich";
new const bronie = 1<<CSW_DEAGLE | 1<<CSW_SCOUT;
new const zdrowie = 5;
new const kondycja = 10;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bron[33];
new daj[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
RegisterHam(Ham_Spawn, "player", "g_Spawn", 1);
}
public cod_class_enabled(id) {
ma_klase[id] = true;
if(klasa_gracza[id]) {
bron[id] == 1;
}
else {
menu(id);
}
}
public cod_class_disabled(id)
ma_klase[id] = false;
public menu(id) {
new menu = menu_create("Wybierz swoj karabin snajperski", "g_Choose");
new MyMenuAwp = menu_makecallback("MenuAwp");
new MyMenuKampa = menu_makecallback("MenuKampa");
menu_additem(menu, "SCOUT","",0);
menu_additem(menu, "AWP (Od 10 poziomu)","",0, MyMenuAwp);
menu_additem(menu, "SG550 (Od 25 poziomu)","",0, MyMenuKampa);
menu_additem(menu, "G3SG1 (Od 25 poziomu)","",0, MyMenuKampa);
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_display(id, menu);
}
public g_Spawn(id)
{
if(ma_klase[id] && is_user_alive(id))
{
if(bron[id] == 1) {
cod_take_weapon(id, CSW_SCOUT)
cod_take_weapon(id, CSW_AWP)
cod_take_weapon(id, CSW_SG550)
cod_take_weapon(id, CSW_G3SG1)
cod_take_weapon(id, CSW_USP)
menu(id);
bron[id] = 0;
if(daj[id] == 1) {
cod_give_weapon(id, CSW_SCOUT);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_SCOUT, 90);
}
else if(daj[id] == 2) {
cod_give_weapon(id, CSW_AWP);
cs_set_weapon_ammo (id, 10);
cs_set_user_bpammo(id, CSW_AWP, 30);
}
else if(daj[id] == 3) {
cod_give_weapon(id, CSW_SG550);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_SG550, 90);
}
else if(daj[id] == 4) {
cod_give_weapon(id, CSW_G3SG1);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_G3SG1, 90);
}
}
else {
return PLUGIN_CONTINUE
}
}
}
public g_Choose(id, menu, item){
if(item == MENU_EXIT){
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:{
daj[id] == 1;
cod_give_weapon(id, CSW_SCOUT);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_SCOUT, 90);
bron[id] == 0;
}
case 1:{
daj[id] == 2;
cod_give_weapon(id, CSW_AWP);
cs_set_weapon_ammo (id, 10);
cs_set_user_bpammo(id, CSW_SCOUT, 30);
bron[id] == 0;
}
case 2:{
daj[id] == 3;
cod_give_weapon(id, CSW_SG550);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_SG550, 90);
bron[id] == 0;
}
case 3:{
daj[id] == 4;
cod_give_weapon(id, CSW_G3SG1);
cs_set_weapon_ammo (id, 30);
cs_set_user_bpammo(id, CSW_G3SG1, 90);
bron[id] == 0;
}
}
return PLUGIN_CONTINUE;
}
public MenuAwp(id, menu, item) {
if(cod_get_user_level(id) < 10) {
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public MenuKampa(id, menu, item) {
if(cod_get_user_level(id) < 25) {
return ITEM_DISABLED;
print(id,print_chat,
}
return ITEM_ENABLED;
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);
if(weapon == CSW_AWP || weapon == CSW_SCOUT || weapon == CSW_SG550 || weapon == CSW_G3SG1) {
cod_inflict_damage(idattacker, this, 0, 0.5, idinflictor, damagebits);
}
}
return HAM_IGNORED;
}
Mógłby ktoś poprawić klasę, chodzi mi o takie poprawki:
-Jeżeli teraz mamy wybraną klasę, to po wybraniu menu z wyborem broni pokazuje się w następnej rundzie.
-Odblokowywanie broni (aktualnie po wbiciu 11 awp nadal jest zablokowane, a od 10 powinno być odblokowane).
-Po wbiciu 10 lub 25 lvla pokazuje się menu z wyborem broni (tylko raz i w następnej rundzie).
-Komenda /bronie - w następnej rundzie wyświetla się menu z broniami.
Plugin ma dużo warningów, sam się zamotałem w kodzie. Jakby ktoś mógł go zoptymalizować, to też proszę.


Dodatki SourceMod










