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.