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

RSSConvert this to Human Classe


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello, I want this class to convert to a human class.

Please help me!

PHP Code:

#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PDATA_SAFE 2
#define MAX_CLIENTS 32
#define TASKID_WAIT_HUD 3600
#define TASKID_REMOVE_GRAVITY 3700

#define linux_diff_weapon 4
#define m_pPlayer 41

#define get_bit(%1,%2) ((%1 & (1 << (%2 & 31))) ? 1 : 0)
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

/* ~ [ Zombie Class Setting's ] ~ */
new const ZM_CLASS_NAME[] = "Voodoo"
new const ZM_CLASS_INFO[] = "Heal Totem > G"
new const ZM_CLASS_MODEL[] = "x_shaman"
new const ZM_CLASS_CLAW[] = "v_knife_shaman.mdl"
new const ZM_CLASS_BOMB[] = "models/x/v_zbomb_shaman.mdl"
const ZM_CLASS_HEALTH 2300;
const 
ZM_CLASS_SPEED 237;
const 
FloatZM_CLASS_GRAVITY 0.88;
const 
FloatZM_CLASS_KNOCKBACK 1.0;
const 
FloatZM_CLASS_WAIT_TOTEM 30.0;

/* ~ [ Entity ] ~ */
new const ENTITY_TOTEM_CLASSNAME[] = "ent_totem";
new const 
ENTITY_TOTEM_MODEL[] = "models/x/Totem.mdl";
const 
FloatENTITY_TOTEM_ALIVE 10.0;
const 
FloatENTITY_TOTEM_NEXTTHINK 1.0// Во сколько раз будет хилить
const FloatENTITY_TOTEM_HEAL_AMOUNT 300.0// Сколько HP восстановит за 1 раз

new gl_iszAllocString_InfoTarget,
    
gl_iszAllocString_Totem,
    
gl_iszModelIndex_ShockWave,

    
Floatgl_flTotemWait[MAX_CLIENTS 1],
    
gl_iUserBody[MAX_CLIENTS 1],
    
gl_iBitUserHasTotem,

    
gl_iMsgID_ScreenFade,
    
gl_iMaxPlayers,
    
gl_iZClassID;

public 
plugin_init()
{
    
register_plugin("[ZP] Class: x-Voodoo""2019 | 1.0""xUnicorn (t3rkecorejz)");

    
register_event("HLTV""EV_RoundStart""a""1=0""2=0");

    new const 
GRENADES_ENTITY[][] = { "weapon_hegrenade""weapon_flashbang""weapon_smokegrenade" };
    for(new 
0sizeof GRENADES_ENTITYi++)
        
RegisterHam(Ham_Item_DeployGRENADES_ENTITY[i], "CGrenade__Deploy_Post"true);

    
RegisterHam(Ham_Think"info_target""CEntity__Think_Pre"false);

    
register_clcmd("drop""Command__UseAbility");

    
gl_iMsgID_ScreenFade get_user_msgid("ScreenFade");
    
gl_iMaxPlayers get_maxplayers();
}

public 
plugin_precache()
{
    
// Models
    
engfunc(EngFunc_PrecacheModelZM_CLASS_BOMB);
    
engfunc(EngFunc_PrecacheModelENTITY_TOTEM_MODEL);

    
/// Sounds
    
UTIL_PrecacheSoundsFromModel(ZM_CLASS_BOMB);

    
// Model Index
    
gl_iszModelIndex_ShockWave engfunc(EngFunc_PrecacheModel"sprites/shockwave.spr");

    
// Alloc String
    
gl_iszAllocString_InfoTarget engfunc(EngFunc_AllocString"info_target");
    
gl_iszAllocString_Totem engfunc(EngFunc_AllocStringENTITY_TOTEM_CLASSNAME);

    
// Other
    
gl_iZClassID zp_register_zombie_class(ZM_CLASS_NAMEZM_CLASS_INFOZM_CLASS_MODELZM_CLASS_CLAWZM_CLASS_HEALTHZM_CLASS_SPEEDZM_CLASS_GRAVITYZM_CLASS_KNOCKBACK)
}

public 
client_putinserver(iPlayerReset_Value(iPlayer);
public 
client_disconnect(iPlayerReset_Value(iPlayer);
public 
zp_user_infected_post(iPlayeriInfector)
{
    
Reset_Value(iPlayer);

    
gl_iUserBody[iPlayer] = pev(iPlayerpev_body);
    
set_pev(iPlayerpev_bodygl_iUserBody[iPlayer] + 2);
}
public 
zp_user_humanized_pre(iPlayerReset_Value(iPlayer);
public 
EV_RoundStart()
{
    new 
iEntity FM_NULLENT;
    while((
iEntity engfunc(EngFunc_FindEntityByStringiEntity"classname"ENTITY_TOTEM_CLASSNAME)))
    {
        if(
pev_valid(iEntity))
            
set_pev(iEntitypev_flagsFL_KILLME);
    }

    for(new 
iPlayer 1iPlayer <= gl_iMaxPlayersiPlayer++) 
    {
        if(!
is_user_connected(iPlayer)) continue;

        
Reset_Value(iPlayer);
    }
}

Reset_Value(iPlayer)
{
    
reset_bit(gl_iBitUserHasTotemiPlayer);

    
gl_flTotemWait[iPlayer] = 0.0;
    
gl_iUserBody[iPlayer] = 0;

    if(
task_exists(iPlayer TASKID_WAIT_HUD))
        
remove_task(iPlayer TASKID_WAIT_HUD);
}

public 
Command__UseAbility(iPlayer)
{
    if(!
is_user_alive(iPlayer) || !zp_get_user_zombie(iPlayer) || zp_get_user_nemesis(iPlayer)) return PLUGIN_CONTINUE;
    if(
zp_get_user_zombie_class(iPlayer) != gl_iZClassID) return PLUGIN_CONTINUE;
    if(
get_bit(gl_iBitUserHasTotemiPlayer)) return PLUGIN_CONTINUE;

    new 
FloatflGameTime get_gametime();
    if(
gl_flTotemWait[iPlayer] <= flGameTime)
    {
        
set_bit(gl_iBitUserHasTotemiPlayer);
        
Create_Totem(iPlayer);
        
set_pev(iPlayerpev_bodygl_iUserBody[iPlayer]);

        if(
task_exists(iPlayer TASKID_WAIT_HUD))
            
remove_task(iPlayer TASKID_WAIT_HUD);

        
set_task(1.0"CTask__CreateWaitHud"iPlayer TASKID_WAIT_HUD__, .flags "b");
    }

    return 
PLUGIN_CONTINUE;
}

public 
CGrenade__Deploy_Post(iItem)
{
    new 
iPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);
    if(!
zp_get_user_zombie(iPlayer) || zp_get_user_nemesis(iPlayer)) return;

    if(
zp_get_user_zombie_class(iPlayer) == gl_iZClassID)
        
set_pev(iPlayerpev_viewmodel2ZM_CLASS_BOMB);
}

public 
CEntity__Think_Pre(iEntity)
{
    if(!
pev_valid(iEntity) || pev_valid(iEntity) != PDATA_SAFE) return HAM_IGNORED;
    if(
pev(iEntitypev_classname) == gl_iszAllocString_Totem)
    {
        new 
FloatflGameTime get_gametime();
        new 
FloatflTotemAlivepev(iEntitypev_fuser4flTotemAlive);
        new 
iOwner pev(iEntitypev_owner);

        if(
flTotemAlive <= flGameTime)
        {
            
reset_bit(gl_iBitUserHasTotemiOwner);
            
gl_flTotemWait[iOwner] = flGameTime ZM_CLASS_WAIT_TOTEM;

            
set_pev(iEntitypev_flagsFL_KILLME);
            return 
HAM_IGNORED;
        }

        new 
FloatvecOrigin[3]; pev(iEntitypev_originvecOrigin);

        
// https://github.com/baso88/SC_AngelScript/wiki/TE_BEAMCYLINDER
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvecOrigin0);
        
write_byte(TE_BEAMCYLINDER);
        
engfunc(EngFunc_WriteCoordvecOrigin[0]);
        
engfunc(EngFunc_WriteCoordvecOrigin[1]);
        
engfunc(EngFunc_WriteCoordvecOrigin[2] + 10.0);
        
engfunc(EngFunc_WriteCoordvecOrigin[0]);
        
engfunc(EngFunc_WriteCoordvecOrigin[1]);
        
engfunc(EngFunc_WriteCoordvecOrigin[2] + 200.0);
        
write_short(gl_iszModelIndex_ShockWave); // Model Index
        
write_byte(0); // Start frame
        
write_byte(0); // Framerate
        
write_byte(8); // Life
        
write_byte(10); // Width
        
write_byte(0); // Noise
        
write_byte(0); // Red
        
write_byte(200); // Green
        
write_byte(0); // Blue
        
write_byte(200); // Alpha
        
write_byte(0); // Speed
        
message_end();

        new 
iVictim FM_NULLENT;
        while((
iVictim engfunc(EngFunc_FindEntityInSphereiVictimvecOrigin150.0)) > 0)
        {
            if(!
is_user_alive(iVictim)) continue;
            if(!
zp_get_user_zombie(iVictim) || zp_get_user_nemesis(iVictim)) continue;

            
set_pev(iVictimpev_healthpev(iVictimpev_health) + ENTITY_TOTEM_HEAL_AMOUNT);
            
UTIL_ScreenFade(iVictim, (1<<10) * 2, (1<<10) * 20x00000200070);
        }

        
set_pev(iEntitypev_nextthinkflGameTime ENTITY_TOTEM_NEXTTHINK);
    }

    return 
HAM_IGNORED;
}

public 
Create_Totem(iPlayer)
{
    new 
iEntity engfunc(EngFunc_CreateNamedEntitygl_iszAllocString_InfoTarget);
    if(!
iEntity) return FM_NULLENT;

    new 
FloatflGameTime get_gametime();
    new 
FloatvecOrigin[3]; pev(iPlayerpev_originvecOrigin);
    new 
FloatvecViewOfs[3]; pev(iPlayerpev_view_ofsvecViewOfs);
    new 
FloatvecAngles[3]; pev(iPlayerpev_anglesvecAngles);
    new 
FloatvecForward[3]; angle_vector(vecAnglesANGLEVECTOR_FORWARDvecForward);
    new 
FloatvecAnglesEntity[3]; vecAnglesEntity[1] = vecAngles[1] - 180.0;

    new 
FloatvecEnd[3];
    
vecEnd[0] = vecOrigin[0] + vecViewOfs[0] + vecForward[0] * 100.0;
    
vecEnd[1] = vecOrigin[1] + vecViewOfs[1] + vecForward[1] * 100.0;
    
vecEnd[2] = vecOrigin[2] + vecViewOfs[2] + vecForward[2] * 100.0;

    {
        new 
iTrace create_tr2();

        
engfunc(EngFunc_TraceLinevecOriginvecEndDONT_IGNORE_MONSTERSiPlayeriTrace);
        
get_tr2(iTraceTR_vecEndPosvecEnd);

        
free_tr2(iTrace);
    }

    
engfunc(EngFunc_SetModeliEntityENTITY_TOTEM_MODEL);
    
engfunc(EngFunc_SetOriginiEntityvecEnd);

    
set_pev_string(iEntitypev_classnamegl_iszAllocString_Totem);
    
set_pev(iEntitypev_movetypeMOVETYPE_TOSS);
    
set_pev(iEntitypev_solidSOLID_BBOX);
    
set_pev(iEntitypev_owneriPlayer);
    
set_pev(iEntitypev_nextthinkflGameTime ENTITY_TOTEM_NEXTTHINK);
    
set_pev(iEntitypev_fuser4flGameTime + (ENTITY_TOTEM_ALIVE 0.5));
    
set_pev(iEntitypev_anglesvecAnglesEntity);

    
set_entity_anim(iEntity0);

    
engfunc(EngFunc_DropToFlooriEntity);

    return 
iEntity;
}

public 
CTask__CreateWaitHud(iTask)
{
    new 
iPlayer iTask TASKID_WAIT_HUD;

    if(
is_user_alive(iPlayer))
    {
        if(!
zp_get_user_zombie(iPlayer) || zp_get_user_nemesis(iPlayer))
        {
            
remove_task(iTask);
            return;
        }

        new 
szText[256];
        new 
FloatflGameTime get_gametime();

        if(
get_bit(gl_iBitUserHasTotemiPlayer))
        {
            new 
iEntity fm_find_ent_by_owner(-1ENTITY_TOTEM_CLASSNAMEiPlayer);
            if(
iEntity || pev_valid(iEntity))
                
formatex(szTextcharsmax(szText), "Тотем пропадёт через %d сек."floatround(pev(iEntitypev_fuser4) - flGameTime));
        }
        else
        {
            if(
gl_flTotemWait[iPlayer] > flGameTime)
                
formatex(szTextcharsmax(szText), "(G) Тотем исцеления: [%02d]"floatround(gl_flTotemWait[iPlayer] - flGameTime));
            else
            {
                
set_pev(iPlayerpev_bodygl_iUserBody[iPlayer] + 2);

                
remove_task(iTask);
                return;
            }
        }

        
set_hudmessage(250180300.750.9201.01.10.00.0, -1);
        
show_hudmessage(iPlayer"%s"szText);
    }
    else 
remove_task(iTask);
}

/* ~ [ Stocks ] ~ */
stock set_entity_anim(iEntityiSequence)
{
    
set_pev(iEntitypev_frame1.0);
    
set_pev(iEntitypev_framerate1.0);
    
set_pev(iEntitypev_animtimeget_gametime());
    
set_pev(iEntitypev_sequenceiSequence);
}

stock UTIL_PrecacheSoundsFromModel(const szModelPath[])
{
    new 
iFile;
    
    if((
iFile fopen(szModelPath"rt")))
    {
        new 
szSoundPath[64];
        
        new 
iNumSeqiSeqIndex;
        new 
iEventiNumEventsiEventIndex;
        
        
fseek(iFile164SEEK_SET);
        
fread(iFileiNumSeqBLOCK_INT);
        
fread(iFileiSeqIndexBLOCK_INT);
        
        for(new 
k0iNumSeqi++)
        {
            
fseek(iFileiSeqIndex 48 176 iSEEK_SET);
            
fread(iFileiNumEventsBLOCK_INT);
            
fread(iFileiEventIndexBLOCK_INT);
            
fseek(iFileiEventIndex 176 iSEEK_SET);
            
            for(
0iNumEventsk++)
            {
                
fseek(iFileiEventIndex 76 kSEEK_SET);
                
fread(iFileiEventBLOCK_INT);
                
fseek(iFile4SEEK_CUR);
                
                if(
iEvent != 5004)
                    continue;
                
                
fread_blocks(iFileszSoundPath64BLOCK_CHAR);
                
                if(
strlen(szSoundPath))
                {
                    
strtolower(szSoundPath);
                    
engfunc(EngFunc_PrecacheSoundszSoundPath);
                }
            }
        }
    }
    
    
fclose(iFile);
}

stock UTIL_ScreenFade(iPlayeriDurationiHoldTimeiFlagsiRediGreeniBlueiAlphaiReliable 0)
{
    if(!
iPlayer)
        
message_begin(iReliable MSG_ALL MSG_BROADCASTgl_iMsgID_ScreenFade);
    else 
message_begin(iReliable MSG_ONE MSG_ONE_UNRELIABLEgl_iMsgID_ScreenFade_iPlayer);

    
write_short(iDuration);
    
write_short(iHoldTime);
    
write_short(iFlags);
    
write_byte(iRed);
    
write_byte(iGreen);
    
write_byte(iBlue);
    
write_byte(iAlpha);
    
message_end();


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ę...