[ROZWIĄZANE] Blokowanie broni poprzez perk
Najlepsza odpowiedź (Kalifta) 07.09.2013 16:32
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
new ostatnio_prawym[33];
new ma_perk[33];
new const perk_name[] = "Predator"
new const perk_desc[] = "Masz tylko kose, 1/1 z niej, dodatkowe 600HP i widzisz niewidzialnych."
public plugin_init()
{
register_plugin(perk_name, "1.0", "Kalifta")
cod_register_perk(perk_name, perk_desc)
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenCios");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwPrimaryAttack_JedenCios");
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwSecondaryAttack_JedenCios");
RegisterHam(Ham_Spawn, "player", "Spawn",1);
register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)
}
public cod_perk_enabled(id)
{
ma_perk[id] = true
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) +600)
}
public cod_perk_disabled(id)
{
ma_perk[id] = false;
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) -600);
}
public Spawn(id)
{
if(ma_perk[id])
strip_user_weapons(id)
cod_give_weapon(id, CSW_KNIFE)
}
public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
if(!is_user_connected(host) || !is_user_connected(ent))
return;
if(!ma_perk[host])
return;
set_es(es_handle, ES_RenderAmt, 255.0);
}
public fwTakeDamage_JedenCios(id, ent, attacker)
{
if(is_user_alive(attacker) && ma_klase[attacker] && get_user_weapon(attacker) == CSW_KNIFE && !ostatnio_prawym[id])
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(id) + 1));
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public fwPrimaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 0;
}
public fwSecondaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 1;
}
QuatZo
01.09.2013
Witajcie. Od dwóch dni nie potrafię poradzić sobie z dwoma perkami. Dokładniej chodzi mi o to, iż w opisie mają teksty typu: "Posiada TYLKO kosę" lub "Posiada USP", lecz perk nie wyrzuca (ani nie blokuje) broni, które ma klasa. Próbowałem już na wszelkie (znane mi) sposoby. Nie potrafię tego zrobić, dlatego mam pytanie do Was: Jak takie coś zrobić? Dodaję pliki *.sma w załączniku, gdyby ktoś był ciekaw kodu.
Załączone pliki
QuatZo
01.09.2013
Z tego korzystałem i nadal nie działało
(Kalifta) 06.09.2013
Prosty, a za razem skuteczny sposób, może niezbyt optymalny ale działa:
Edytujesz klasę.
Do includów:
#include <hamsandwich>
#include <fun>
Do plugin_init:
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
I na koniec sma
public Spawn(id)
{
if(ma_klase[id])
{
strip_user_weapons(id);
give_item(id,"weapon_knife");
}
}
Tylko sprawdź czy nie zabiera ci paki.
Użytkownik (Kalifta) edytował ten post 06.09.2013 13:16
QuatZo
06.09.2013
@(Kalifta):
Dzięki, działa. Teraz, gdy dodałem to, nie dodaje HP, gdy ktoś ma perk Predator, a powinno dodawać
(Kalifta) 06.09.2013
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
new ostatnio_prawym[33];
new ma_perk[33];
new const perk_name[] = "Predator"
new const perk_desc[] = "Masz tylko kose, 1/1 z niej, dodatkowe 600HP i widzisz niewidzialnych."
public plugin_init()
{
register_plugin(perk_name, "1.0", "Kalifta")
cod_register_perk(perk_name, perk_desc)
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenCios");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwPrimaryAttack_JedenCios");
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwSecondaryAttack_JedenCios");
RegisterHam(Ham_Spawn, "player", "Spawn",1);
register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)
}
public cod_perk_enabled(id)
{
ma_perk[id] = true
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) +600)
}
public cod_perk_disabled(id)
{
ma_perk[id] = false;
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) -600);
}
public fwTakeDamage_JedenCios(id, ent, attacker)
{
if(is_user_alive(attacker) && ma_perk[attacker] && get_user_weapon(attacker) == CSW_KNIFE && ostatnio_prawym[id])
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(id) + 1));
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public fwPrimaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 1;
}
public fwSecondaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 0;
}
public Spawn(id)
{
if(ma_perk[id])
strip_user_weapons(id)
cod_give_weapon(id, CSW_KNIFE)
}
public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
if(!is_user_connected(host) || !is_user_connected(ent))
return;
if(!ma_perk[host])
return;
set_es(es_handle, ES_RenderAmt, 255.0);
}
Dołączam poprawioną wersję.
Mała rada, dla perków stosujemy cod_set_user_bonus_health.
QuatZo
07.09.2013
Nie działa 1/1 z PPM w tym pluginie (biję po 30 w 1-szy lvl), a klasy z 1/1 z PPM działają. Dałbyś radę to naprawić?
Najlepsza odpowiedź (Kalifta) 07.09.2013
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
new ostatnio_prawym[33];
new ma_perk[33];
new const perk_name[] = "Predator"
new const perk_desc[] = "Masz tylko kose, 1/1 z niej, dodatkowe 600HP i widzisz niewidzialnych."
public plugin_init()
{
register_plugin(perk_name, "1.0", "Kalifta")
cod_register_perk(perk_name, perk_desc)
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenCios");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwPrimaryAttack_JedenCios");
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwSecondaryAttack_JedenCios");
RegisterHam(Ham_Spawn, "player", "Spawn",1);
register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1)
}
public cod_perk_enabled(id)
{
ma_perk[id] = true
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) +600)
}
public cod_perk_disabled(id)
{
ma_perk[id] = false;
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0) -600);
}
public Spawn(id)
{
if(ma_perk[id])
strip_user_weapons(id)
cod_give_weapon(id, CSW_KNIFE)
}
public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
if(!is_user_connected(host) || !is_user_connected(ent))
return;
if(!ma_perk[host])
return;
set_es(es_handle, ES_RenderAmt, 255.0);
}
public fwTakeDamage_JedenCios(id, ent, attacker)
{
if(is_user_alive(attacker) && ma_klase[attacker] && get_user_weapon(attacker) == CSW_KNIFE && !ostatnio_prawym[id])
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(id) + 1));
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public fwPrimaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 0;
}
public fwSecondaryAttack_JedenCios(ent)
{
new id = pev(ent, pev_owner);
ostatnio_prawym[id] = 1;
}
mastah7991
07.09.2013
zuy pomysl
powody:
jesli jestes w tt i masz pake to ja tracisz
gdy jestes ostatnim tt i zlapiesz pakke to ci ja zabiera ;x