Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Obrażenia z laserów się zacinają


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Andrzejek

    Ucze się :]

  • Power User

Reputacja: 136
Zaawansowany

  • Postów:1 300
  • Imię:Andrzej
Offline

Napisano 24.03.2014 00:09

Witam mam takie pytanko, bo mam plugin od laserów i chodzi dokładnie o to

switch(get_pcvar_num(g_LDMGMODE))
    {
        case 1:
        {
            if(pev(iCurrent,LASERMINE_HITING) == isHit)
                return PLUGIN_CONTINUE
        }
        case 2:
        {
            if(pev(iCurrent,LASERMINE_HITING) == isHit)
            {
                static Float:cnt
                static now,htime;now = floatround(get_gametime())

                pev(iCurrent,LASERMINE_COUNT,cnt)
                htime = floatround(cnt)
                if(now - htime < get_pcvar_num(g_LDSEC))
                {
                    return PLUGIN_CONTINUE;
                }else{
                    set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
                }
            }else
            {
                set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
            }
        }
    }

I mam pytanko do was, dlaczego się zacina, cvar g_LDMGMODE mam ustawiony na 2 czyli własny czas, a cvar g_LDSEC na 1 czyli obrażenia co 1 sek, i nie wiem dlaczego się to zacina :(


  • +
  • -
  • 0

Mam do sprzedania pluginy AMXX pod serwery typu, JB, ONLY DD2, ZOMBIE, COD MOD, DR i inne...

 

Jeżeli jesteś zainteresowany(a), napisz na PW lub GG 42384104


#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 24.03.2014 09:43

Bo "zacina się" wszystko wyjaśnia... Co to znaczy, że się zacina? Gracz dostaje obrażenia po chwili? Nie dostaje wcale? Dostaje nawet jak już nie kieruje laser na niego? Opisz może to trochę, bo możliwości interpretacji tego jest trochę.
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Andrzejek

    Ucze się :]

  • Autor tematu
  • Power User

Reputacja: 136
Zaawansowany

  • Postów:1 300
  • Imię:Andrzej
Offline

Napisano 24.03.2014 09:55

Sory, za brak opisu, dokładnie chodziło mi o to że nie kiedy się laser zacina w ten sposób że gdy gracz wejdzie w laser zadaje mu tylko 1 raz się wykona funkcja obrażeń, czyli tak jak bym ustawił cvar g_LDMGMODE na 1, o to mi dokładnie chodziło.

 

Cała funkcja:

 

CreateLaserDamage(iCurrent,isHit)
{
    if(isHit < 0) return PLUGIN_CONTINUE
    switch(get_pcvar_num(g_LDMGMODE))
    {
        case 1:
        {
            if(pev(iCurrent,LASERMINE_HITING) == isHit)
                return PLUGIN_CONTINUE
        }
        case 2:
        {
            if(pev(iCurrent,LASERMINE_HITING) == isHit)
            {
                static Float:cnt
                static now,htime;now = floatround(get_gametime())

                pev(iCurrent,LASERMINE_COUNT,cnt)
                htime = floatround(cnt)
                if(now - htime < get_pcvar_num(g_LDSEC))
                {
                    return PLUGIN_CONTINUE;
                }else{
                    set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
                }
            }else
            {
                set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
            }
        }
    }

    new Float:vOrigin[3],Float:vEnd[3]
    pev(iCurrent,pev_origin,vOrigin)
    pev(iCurrent,pev_vuser1,vEnd)

    new teamid = pev(iCurrent, LASERMINE_TEAM)

    new szClassName[32]
    new Alive,God
    new iHitTeam,iHitHP,id
    new hitscore

    szClassName[0] = '^0'
    pev(isHit,pev_classname,szClassName,32)
    if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
    {
        Alive = pev_user_alive(isHit)
        God = get_user_godmode(isHit)
        if(!Alive || God) return PLUGIN_CONTINUE
        iHitTeam = int:cs_get_user_team(isHit)
        iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
        id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
        if(iHitHP <= 0)
        {
            if(iHitTeam != teamid)
            {
                emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
                hitscore = 1
                zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY))
                set_score(id,isHit,hitscore,iHitHP)
            }else
            {
                if(get_pcvar_num(g_LFF))
                {
                    emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
                    hitscore = -1
                    zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY))
                    set_score(id,isHit,hitscore,iHitHP)
                }
            }
        }else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
        {
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
            set_user_health(isHit,iHitHP)
            set_pev(iCurrent,LASERMINE_HITING,isHit);
            engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);
            write_byte(get_pcvar_num(g_LDMG))
            write_byte(get_pcvar_num(g_LDMG))
            write_long(DMG_BULLET)
            engfunc(EngFunc_WriteCoord,vOrigin[0])
            engfunc(EngFunc_WriteCoord,vOrigin[1])
            engfunc(EngFunc_WriteCoord,vOrigin[2])
            message_end()
        }
    }else if(equal(szClassName, ENT_CLASS_NAME3))
    {
        new hl;
        hl = pev_user_health(isHit);
        set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
    }
    return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

Mam do sprzedania pluginy AMXX pod serwery typu, JB, ONLY DD2, ZOMBIE, COD MOD, DR i inne...

 

Jeżeli jesteś zainteresowany(a), napisz na PW lub GG 42384104


#4 Andrzejek

    Ucze się :]

  • Autor tematu
  • Power User

Reputacja: 136
Zaawansowany

  • Postów:1 300
  • Imię:Andrzej
Offline

Napisano 25.03.2014 15:30

Już wiem jaki jest powód, gdy np. CT postawia laser a wejdzie w niego TT a za nim ustawi się kolejny TT to zada tylko obrażenia temu pierwszemu TT, czyli tak jak by po kolei zadawał obrażenia. Bardzo dziwne, bo jeżeli CT na modzie ZM wejdzie w laser, to TT spokojnie i bez zadanego oporu wejdzie do kampy(chodzi tu o opór lasera).

 

Tutaj daje pełny kod

 

Załączony plik  lasermine_023.sma   38,39 KB  3 Ilość pobrań
  lasermine_023.amxx

 

Sprawdzałem, szukałem po kodzie i nie wiem dlaczego zadają obrażenia po kolei, jeżeli ktoś wie proszę o odpowiedź.


  • +
  • -
  • 0

Mam do sprzedania pluginy AMXX pod serwery typu, JB, ONLY DD2, ZOMBIE, COD MOD, DR i inne...

 

Jeżeli jesteś zainteresowany(a), napisz na PW lub GG 42384104


#5 Andrzejek

    Ucze się :]

  • Autor tematu
  • Power User

Reputacja: 136
Zaawansowany

  • Postów:1 300
  • Imię:Andrzej
Offline

Napisano 27.03.2014 19:27

public ltm_Think( i_Ent ) {
    if(!pev_valid(i_Ent))
        return FMRES_IGNORED;
        
    new EntityName[32];
    pev(i_Ent, pev_classname, EntityName, 31);

    if(!equal( EntityName, ENT_CLASS_NAME))
        return FMRES_IGNORED;

    static Float:fCurrTime;
    fCurrTime = get_gametime();

    new typid = pev(i_Ent, LASERMINE_STEP);
    switch(typid) {
        case POWERUP_THINK: {
            new Float:fPowerupTime;
            pev(i_Ent, LASERMINE_POWERUP, fPowerupTime);

            if(fCurrTime > fPowerupTime) {
                set_pev(i_Ent, pev_solid, SOLID_BBOX);
                set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK);

                PlaySound(i_Ent, ACTIVATE_SOUND);
            }
            
            new teamid = pev(i_Ent, LASERMINE_TEAM);
            switch(teamid)
            {
                case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,0,255,0,kRenderNormal,10);
                case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,0,255,kRenderNormal,10);
            }
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1);
        }
        case BEAMBREAK_THINK: {
            static Float:vEnd[3],Float:vOrigin[3];
            pev(i_Ent, pev_origin, vOrigin);
            pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd);

            static iHit, Float:fFraction;
            engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0);

            get_tr2(0, TR_flFraction, fFraction);
            iHit = get_tr2(0, TR_pHit);

            if(fFraction < 1.0) {
                if(pev_valid(iHit)) {
                    pev(iHit, pev_classname, EntityName, 31);
                    
                    if(!equal(EntityName, ENT_CLASS_NAME)) {
                        set_pev(i_Ent, pev_enemy, iHit);

                        if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)
                            CreateLaserDamage(i_Ent, iHit);
                        else
                            if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
                                set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

                        if (!pev_valid(i_Ent))
                            return FMRES_IGNORED;

                        set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));
                    }
                }
            }
            if(get_pcvar_num(g_LDMGMODE)!=0)
                if(pev(i_Ent,LASERMINE_HITING) != iHit)
                    set_pev(i_Ent,LASERMINE_HITING,iHit);
 
            // -- Tripmine is still there.
            if(pev_valid(i_Ent)) {
                static Float:fHealth;
                pev(i_Ent, pev_health, fHealth);

                if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) {
                    set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );
                    set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
                }
                    
                static Float:fBeamthink;
                pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink);
                    
                if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) {
                    DrawLaser(i_Ent, vOrigin, vEnd);
                    set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1);
                }
                set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01);
            }
        }
        case EXPLOSE_THINK: {
            // -- Stopping entity to think
            set_pev(i_Ent, pev_nextthink, 0.0);
            PlaySound(i_Ent, STOP_SOUND);
            g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;
            CreateExplosion(i_Ent);
            CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))
            RemoveEntity(i_Ent);
        }
    }

    return FMRES_IGNORED;
}

 

BEAMBREAK_THINK jest odpowiedzialny właśnie gdy ktoś w niego wejdzie zadaje obrażenia, i zauważyłem że iHit = get_tr2(0, TR_pHit); jest odpowiedzialne za ID któremu ma zadać obrażenia, czy ktoś ma jakieś pomysły?


  • +
  • -
  • 0

Mam do sprzedania pluginy AMXX pod serwery typu, JB, ONLY DD2, ZOMBIE, COD MOD, DR i inne...

 

Jeżeli jesteś zainteresowany(a), napisz na PW lub GG 42384104





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych