Mam problem ze stworzeniem jednej klasy. Mam nadzieje, że mi przy tym pomożecie. Problem polega na tym że nie potrafię dodać klasie 1/3 zrespienia się po śmierci. Próbowałem zmienić kod z Perku Morfina ale mi nie wychodzi.
Oto klasa do której chcę to dodać.
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <engine>
#define DMG_BULLET (1<<1)
#define ZADANIE_WSKRZES 6240
new bool:ma_klase[33];
new Float:ostatni_skok[33];
new const nazwa[] = "[Master] Komandos";
new const opis[] = "Natychmiastowe zabicie z noza(PPM). Dostaje modul odrzutowy ,1/3 zrespienia sie po smierci oraz slaba widocznosc przy kucaniu.";
new const bronie = 1<<CSW_DEAGLE;
new const zdrowie = 40;
new const kondycja = 60;
new const inteligencja = 5;
new const wytrzymalosc = 0;
new const max_clip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 };
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
cod_register_advance(cod_get_classid("[Elite] Komandos"), 150, nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc,"Zwykle");
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_forward(FM_CmdStart, "CmdStart");
}
public cod_class_enabled(id)
ma_klase[id] = true;
public cod_class_disabled(id)
ma_klase[id] = false;
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET && damage > 20.0)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
return HAM_IGNORED;
}
public cod_class_skill_used(id)
{
new flags = pev(id, pev_flags);
if(flags & FL_ONGROUND && get_gametime() > ostatni_skok[id]+4.0)
{
ostatni_skok[id] = get_gametime();
new Float:velocity[3];
velocity_by_aim(id, 666+cod_get_user_intelligence(id), velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id, pev_velocity, velocity);
}
}
public CmdStart(id, uc_handle)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
new buttons = get_uc(uc_handle, UC_Buttons);
new oldbuttons = pev(id, pev_oldbuttons);
new clip, ammo, weapon = get_user_weapon(id, clip, ammo);
if(max_clip[weapon] == -1 || !ammo)
return FMRES_IGNORED;
if((buttons & IN_RELOAD && !(oldbuttons & IN_RELOAD) && !(buttons & IN_ATTACK)) || !clip)
{
cs_set_user_bpammo(id, weapon, ammo-(max_clip[weapon]-clip));
new new_ammo = (max_clip[weapon] > ammo)? clip+ammo: max_clip[weapon]
set_user_clip(id, new_ammo);
}
return FMRES_IGNORED;
}
public client_PreThink(id)
{
if(!ma_klase[id])
return;
new button = get_user_button(id);
if(button & IN_DUCK)
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 5);
else
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}A dla szybszej pomocy daje kod z perku morfina.
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <hamsandwich>
#include <codmod>
#define ZADANIE_WSKRZES 6240
new const perk_name[] = "Morfina";
new const perk_desc[] = "Masz 1/LW szans na odrodzenie sie po smierci";
new wartosc_perku[33];
new bool:ma_perk[33];
public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");
cod_register_perk(perk_name, perk_desc, 2, 4);
RegisterHam(Ham_Killed, "player", "Killed", 1);
}
public cod_perk_enabled(id, wartosc)
{
wartosc_perku[id] = wartosc;
ma_perk[id] = true;
}
public cod_perk_disabled(id)
ma_perk[id] = false;
public Killed(id)
{
if(ma_perk[id] && random_num(1, wartosc_perku[id]) == 1)
set_task(0.1, "Wskrzes", id+ZADANIE_WSKRZES);
}
public Wskrzes(id)
ExecuteHamB(Ham_CS_RoundRespawn, id-ZADANIE_WSKRZES);
Dziękuję za pomoc.


Dodatki SourceMod



Temat jest zamknięty








