Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSShealth nade


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello! Someone can take a look to this plugin if the code is good?

I'm not a scripter and I don't wana do it wrong, all I want is to do these things for the plugin:
To be for the smokegrenade, as I see there are 3 models w_ v_ _p for he, idk why.
To delete everything that change the smoke nade model because I have another plugin who do this.
Some improvements to work perfectly without any bug if there are problems in the script

thx!

Code:

#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <engine>

#define GIVE_HEALTH 20 //Сколько ХП восстанавливать
#define EXPLODE_TIME 1.5 //Через сколько секунд взорвется граната
#define HEAL_RADIUS 250.0 //Радиус
#define GENERAL_EXPLODE //Включить основной спрайт взрыва
#define TWO_EXPLODE //включить дополнительные осколки от взрыва
#define SHOKWAVE //Включить Shokwave вокруг гранаты при взрыве
//#define SCREENFADE //Включить скринфейд
#define STATUSICON //показывать иконку
#define TOUCH_EXPLODE //Взрываться ли сразу при соприкосновении с обьектами

//-------------------------------------
#define V_MODEL        "models/v_he_mk_nade.mdl"
#define P_MODEL        "models/p_he_mk_nade.mdl"
#define W_MODEL        "models/w_he_mk_nade.mdl"

#if defined GENERAL_EXPLODE
#define EXPLODE_SPRITE        "sprites/heal_explode.spr"
#endif

#if defined TWO_EXPLODE
#define EXPLODE_SPRITE2        "sprites/heal_shape.spr"
#endif

#define HEAL_SOUND        "woomen_expr.wav"
//--------------------------------------

#if defined GENERAL_EXPLODE
new ExplSpr;
#endif

#if defined TWO_EXPLODE
new ExplSpr2;
#endif

#if defined SHOKWAVE
new g_iSpriteCircle;
#endif

#if defined STATUSICON
new g_IconStatus;
#endif

new const g_sound_explosion[] = "weapons/sg_explode.wav";
new const g_classname_grenade[] = "grenade";
new g_eventid_createsmoke;

public plugin_init()
{
        register_plugin("Nade Health", "1.2", "medusa");

        #if defined STATUSICON
        g_IconStatus = get_user_msgid("StatusIcon");
        #endif

        register_forward(FM_EmitSound, "FMForward_EmitSound");
        register_forward(FM_PlaybackEvent, "FMForward_PlaybackEvent");
        register_event("CurWeapon", "EVCurWeapon", "be", "1=1");
        register_forward(FM_SetModel, "FMForward_SetModel", 1);

        register_think("grenade", "FMForward_Think" )

        #if defined TOUCH_EXPLODE
        register_touch("grenade", "*", "FMForward_Touch")
        #endif
        g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc");
}

public plugin_precache()
{
        #if defined GENERAL_EXPLODE
        ExplSpr = precache_model(EXPLODE_SPRITE);
        #endif

        #if defined TWO_EXPLODE
        ExplSpr2 = precache_model(EXPLODE_SPRITE2);
        #endif

        precache_model(V_MODEL);
        precache_model(W_MODEL);
        precache_model(P_MODEL);

        precache_sound(HEAL_SOUND);

        #if defined SHOKWAVE
        g_iSpriteCircle = precache_model("sprites/shockwave.spr");
        #endif
}

public EVCurWeapon(id)
{
        if(is_user_connected(id) && is_user_alive(id))
        {
                if(get_user_weapon(id) == CSW_SMOKEGRENADE)
                {
                        set_pev(id, pev_viewmodel2, V_MODEL);
                        set_pev(id, pev_weaponmodel2, P_MODEL);

                        #if defined STATUSICON
                        message_begin(MSG_ONE_UNRELIABLE, g_IconStatus, {0,0,0}, id);
                        write_byte(2)
                        write_string("cross");
                        write_byte(0);
                        write_byte(255);
                        write_byte(0);
                        message_end();
                        #endif
                }
                #if defined STATUSICON
                else
                {
                        message_begin(MSG_ONE_UNRELIABLE, g_IconStatus, {0,0,0}, id);
                        write_byte(0)
                        write_string("cross");
                        message_end();
                }
                #endif
        }
}

public FMForward_SetModel(entity, const model[])
{
        if(!pev_valid(entity)) return FMRES_IGNORED;
       
        if(equal(model, "models/w_smokegrenade.mdl"))
        {
                engfunc(EngFunc_SetModel, entity, W_MODEL);
                set_pev(entity, pev_dmgtime, get_gametime() + EXPLODE_TIME);
        }
        return FMRES_IGNORED;
}

#if defined TOUCH_EXPLODE
public FMForward_Touch(entity)
{
        if(~get_pdata_int(entity, 114) & (1<<1))
                return;

        set_pev(entity, pev_dmgtime, get_gametime());
}
#endif


public FMForward_Think(entity)
{
        if(get_pdata_int(entity, 114) & (1<<1))
                set_pev( entity, pev_flags, FL_ONGROUND )
}


public FMForward_EmitSound(entity, channel, const sound[])
{
        if (!equal(sound, g_sound_explosion) || !is_grenade(entity))
                return FMRES_IGNORED;

        static Float:origin[3];
        static id; id = pev(entity, pev_owner);
        pev(entity, pev_origin, origin);
        engfunc(EngFunc_EmitSound, entity, CHAN_WEAPON, HEAL_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

        #if defined GENERAL_EXPLODE
        message_begin(MSG_PVS,SVC_TEMPENTITY,{0,0,0});
        write_byte(TE_EXPLOSION);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2])+65);
        write_short(ExplSpr);
        write_byte(30);
        write_byte(20);
        write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES);
        message_end();
        #endif
       
        #if defined TWO_EXPLODE
        message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0});
        write_byte(TE_SPRITETRAIL);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2])+20);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2])+80);
        write_short(ExplSpr2);
        write_byte(20);
        write_byte(20);
        write_byte(4);
        write_byte(20);
        write_byte(10);
        message_end();
        #endif

        #if defined SHOKWAVE
        message_begin(MSG_ALL, SVC_TEMPENTITY, {0,0,0});
        write_byte(TE_BEAMCYLINDER);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2]));
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2] + HEAL_RADIUS));
        write_short(g_iSpriteCircle);
        write_byte(0);
        write_byte(1);
        write_byte(5);
        write_byte(30);
        write_byte(1);
        write_byte(10);
        write_byte(255);
        write_byte(40);
        write_byte(255);       
        write_byte(5);
        message_end();
        #endif
       
        new user
        while((user = find_ent_in_sphere(user,origin,HEAL_RADIUS)) != 0)
        {
                if(is_user_alive(user) && get_user_team(user) == get_user_team(id))
                {
                        #if defined SCREENFADE
                        message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, user);
                        write_short(1<<10);
                        write_short(1<<10);
                        write_short(0x0000);
                        write_byte(170);
                        write_byte(255);
                        write_byte(0);
                        write_byte(75);
                        message_end();
                        #endif
               
                        new health[32];
                          health[user] = get_user_health(user);

                          if (health[user] <= 100 - GIVE_HEALTH)
                                set_user_health(user,health[user] + GIVE_HEALTH);
                        else if(health[user] > 100 - GIVE_HEALTH)
                                set_user_health(user,100);
                }
        }

        return FMRES_SUPERCEDE;
}

public FMForward_PlaybackEvent(flags, invoker, eventindex) {
        if (eventindex == g_eventid_createsmoke)
                return FMRES_SUPERCEDE;

        return FMRES_IGNORED;
}

bool:is_grenade(entity)
{
        if (!pev_valid(entity))
                return false;

        static classname[sizeof g_classname_grenade + 1]
        pev(entity, pev_classname, classname, sizeof g_classname_grenade);

        if (equal(classname, g_classname_grenade))
                return true;

        return false;
}

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...