Page 1 of 1

Knockback

Posted: 2013 Jan 22 18:54
by nuodas159
Kaip padaryti gerą knockback, kad numuštų tiek kiek nustatytą cvare, o ne priklausomai nuo smūgio, ar žaidėjo greičio?

Re: Knockback

Posted: 2013 Jan 24 14:26
by aaarnas
Pamėgink ir pažiūrėk ar ką pakeis:
sv_airmove 0

Re: Knockback

Posted: 2013 Jan 25 20:29
by nuodas159
Nepadeda.

Code:

Code: Select all

     RegisterHam(Ham_TraceAttack, "player", "hPlayerAttack")  public hPlayerAttack(victim, attacker, Float:damage, Float: direction[3], traceresult, damagebits){    if(!is_user_connected(attacker) || get_user_team(attacker) != 2 || !GetPlayerBit(bitBaseBall, attacker) || damagebits & DMG_HEGRENADE || get_user_team(attacker) == get_user_team(victim))        return HAM_IGNORED             if(get_user_weapon(attacker) == CSW_KNIFE)    {           new Float: fKnock                if(iAttackType[attacker] == TYPE_STAB)                fKnock = get_pcvar_float(cKnockBack2)            else              fKnock = get_pcvar_float(cKnockBack)                    new Float: fVelocity[3], Float: fOldVelocity[3]        entity_get_vector(victim, EV_VEC_velocity, fOldVelocity)        create_velocity_vector(victim, attacker, fVelocity, fKnock)        fVelocity[0] += fOldVelocity[0]        fVelocity[1] += fOldVelocity[1]        entity_set_vector(victim, EV_VEC_velocity, fVelocity)                if(iAttackType[attacker] == TYPE_STAB)         {            if(get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD)                SetHamParamFloat(3, damage * get_pcvar_float(cDamageMultiHs))            else                SetHamParamFloat(3, damage * get_pcvar_float(cDamageMulti))                            return HAM_OVERRIDE        }        else             return HAM_SUPERCEDE    }    return HAM_IGNORED}   

Re: Knockback

Posted: 2013 Jan 27 16:04
by hleV
Pabandyk pašalint šitą eilutę:

Code: Select all

entity_get_vector(victim, EV_VEC_velocity, fOldVelocity)

Re: Knockback

Posted: 2013 Jan 27 17:41
by nuodas159
Nepadeda.
Gal tas stock blogas?

Code: Select all

 stock create_velocity_vector(victim, attacker, Float: velocity[3], Float: knockbackas){ if(!is_user_alive(attacker))  return 0  new Float: vicorigin[3] new Float: attorigin[3] entity_get_vector(victim, EV_VEC_origin, vicorigin) entity_get_vector(attacker, EV_VEC_origin, attorigin)  new Float: origin2[3] origin2[0] = vicorigin[0] - attorigin[0] origin2[1] = vicorigin[1] - attorigin[1]  new Float:largestnum = 0.0  if(floatabs(origin2[0]) > largestnum) largestnum = floatabs(origin2[0]) if(floatabs(origin2[1]) > largestnum) largestnum = floatabs(origin2[1])  origin2[0] /= largestnum origin2[1] /= largestnum  velocity[0] = ( origin2[0] * knockbackas * 3000 ) / get_entity_distance(victim , attacker) velocity[1] = ( origin2[1] * knockbackas * 3000 ) / get_entity_distance(victim , attacker)  if(velocity[0] <= 20.0 || velocity[1] <= 20.0)  velocity[2] = random_float(200.0 , 275.0)  return 1}