Page 1 of 2

Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 19:27
by xFrostas

Code: Select all

public Entity_Touched(ent, victim){    if (!pev_valid(ent))        return;        new classname[32]    pev( ent, pev_classname, classname,31)        new attacker = pev( ent, pev_owner)    new user_team = get_user_team(attacker)            if(equal(classname,"RPG"))     {        new Float:fOrigin[3], iOrigin[3];        pev(ent , pev_origin, fOrigin)                iOrigin[0] = floatround(fOrigin[0])        iOrigin[1] = floatround(fOrigin[1])        iOrigin[2] = floatround(fOrigin[2])                message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin)        write_byte(TE_EXPLOSION)        engfunc( EngFunc_WriteCoord,fOrigin[0])        engfunc( EngFunc_WriteCoord,fOrigin[1])        engfunc( EngFunc_WriteCoord,fOrigin[2])        write_short(explodespr)        write_byte(30)        write_byte(15)        write_byte(0)        message_end()                                    new a, b, Float: origin[3], Float:origin2[3], Float:distance, Float:damage, Float:velocity[3];        pev(ent, pev_origin, origin);         while (a++ < g_iMaxPlayers)            if (is_user_alive(a))                if (user_team != get_user_team(a))                {                    pev(a, pev_origin, origin2);                    distance = get_distance_f(origin, origin2);                    if (distance < get_pcvar_num(rpg_damage))                    {                        damage = (get_distance_f(origin, origin2) / get_pcvar_float(rpg_damage))                        if (damage > 0.0)                        {                            if (origin2[2] < origin[2])                            origin2[2] = origin[2];                            pev(a, pev_velocity, velocity);                            for (b = 0; b < 3; b++)                                velocity[b] += (((origin2[b] - origin[b]) * get_pcvar_float(rpg_knockback) / distance + origin[b]) - origin2[b]) * 1.6;                            set_pev(a, pev_velocity, velocity);                             ExecuteHam(Ham_TakeDamage, a, g_iM4A1, attacker, damage);                        }                    }                }        set_pev(ent, pev_flags, FL_KILLME)        remove_task(ent+TASK_SEEK_CATCH)    }}
Šio kodo paskirtis yra daryti žalą priešui kai į jį šauni ir pataikai su rpg ginku tačiau jsi neatlieka savo paskirites..

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 20:00
by aaarnas
Kas iškviečia Entity_Touched?

Ir šiaip reikia čia sėsti ir testuoti, žiūrėti nuo kuriuos vietos nebeveikia. Juo labiau, kad net nežinau, kaip tas ginklas turi veikti.

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 20:16
by xFrostas

Code: Select all

register_forward(FM_Touch, "Entity_Touched")

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 21:12
by aaarnas
Reiktų pažiūrėti, ar damage apskaičiuoja. Kai iššausi ir pataikysi į kokį žaidėją tai chate turės parašyti veikia:

Code: Select all

 public Entity_Touched(ent, victim){    if (!pev_valid(ent))        return;        new classname[32]    pev( ent, pev_classname, classname,31)        new attacker = pev( ent, pev_owner)    new user_team = get_user_team(attacker)            if(equal(classname,"RPG"))     {        new Float:fOrigin[3], iOrigin[3];        pev(ent , pev_origin, fOrigin)                iOrigin[0] = floatround(fOrigin[0])        iOrigin[1] = floatround(fOrigin[1])        iOrigin[2] = floatround(fOrigin[2])                message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin)        write_byte(TE_EXPLOSION)        engfunc( EngFunc_WriteCoord,fOrigin[0])        engfunc( EngFunc_WriteCoord,fOrigin[1])        engfunc( EngFunc_WriteCoord,fOrigin[2])        write_short(explodespr)        write_byte(30)        write_byte(15)        write_byte(0)        message_end()                                    new a, b, Float: origin[3], Float:origin2[3], Float:distance, Float:damage, Float:velocity[3];        pev(ent, pev_origin, origin);         while (a++ < g_iMaxPlayers)            if (is_user_alive(a))                if (user_team != get_user_team(a))                {                    pev(a, pev_origin, origin2);                    distance = get_distance_f(origin, origin2);                    if (distance < get_pcvar_num(rpg_damage))                    {                        damage = (get_distance_f(origin, origin2) / get_pcvar_float(rpg_damage))                        if (damage > 0.0)                        {                            client_print(0, print_chat, "Veikia")                            if (origin2[2] < origin[2])                            origin2[2] = origin[2];                            pev(a, pev_velocity, velocity);                            for (b = 0; b < 3; b++)                                velocity[b] += (((origin2[b] - origin[b]) * get_pcvar_float(rpg_knockback) / distance + origin[b]) - origin2[b]) * 1.6;                            set_pev(a, pev_velocity, velocity);                             ExecuteHam(Ham_TakeDamage, a, g_iM4A1, attacker, damage);                        }                    }                }        set_pev(ent, pev_flags, FL_KILLME)        remove_task(ent+TASK_SEEK_CATCH)    }}

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 21:52
by xFrostas
rašo, ir štai dovanų:
L 09/04/2010 - 22:52:01: [HAMSANDWICH] Bad arg count. Expected 6, got 5.
L 09/04/2010 - 22:52:01: [AMXX] Displaying debug trace (plugin "55.amxx")
L 09/04/2010 - 22:52:01: [AMXX] Run time error 10: native error (native "ExecuteHam")
L 09/04/2010 - 22:52:01: [AMXX] [0] 55.sma::Entity_Touched (line 1122)

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 21:59
by aaarnas
Hmm. pamėgink:
ExecuteHam(Ham_TakeDamage, a, g_iM4A1, attacker, damage, DMG_BLAST);

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 22:33
by xFrostas
nieko :/ bet erroro to nebemeta.

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 04 22:48
by aaarnas
Keista. O bent numuša žaidėją tolyn ?

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 05 08:02
by xFrostas
Taip, ir jaigu pvz idėtas zm, tai girdisi skausmo garsas.., atsiprašau kad anksčiau nepasakiau.

Re: Entyti_Touched RPG Damage Kodas

Posted: 2010 Sep 05 22:22
by aaarnas
Negaliu pasakyti. Reikia nuodugniai testuoti. Šiaip turi veikti.