new test = create_entity("info_target")
new Float:origin[3]
entity_get_vector(id, EV_VEC_origin, origin)
entity_set_origin(npc, origin)
entity_set_float(npc, EV_FL_takedamage, 1.0)
entity_set_float(npc, EV_FL_health, 100.0)
entity_set_string(npc, EV_SZ_classname, "testowy")
entity_set_model(npc, "models/player/terror/terror.mdl")
entity_set_int(npc, EV_INT_solid, 2)
new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
entity_set_size(npc, mins, maxs)
entity_set_float(npc, EV_FL_animtime, 2.0)
entity_set_float(npc, EV_FL_framerate, 1.0)
entity_set_int(npc, EV_INT_sequence, 1)
entity_set_float(npc,EV_FL_nextthink,halflife_time() + 0.01)
drop_to_floor(npc)
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.
|

Ent i hitboxy
#1
Napisano 04.07.2011 17:58
#2
Napisano 04.07.2011 21:57
#3
Napisano 04.07.2011 23:21
#4
Napisano 05.07.2011 14:09
#5
Napisano 05.07.2011 14:52
new ent, body;
get_user_aiming(id, ent, body);
new Float:HeadOrigin[3], Float:HeadAngles[3];
engfunc(EngFunc_GetBonePosition, ent, 8, HeadOrigin, HeadAngles);
HeadOrigin = miejsce głowy
Oczywiście numer kości zależy od modelu ale w standardowych jest to 8
#6
Napisano 07.07.2011 12:22
#8
Napisano 07.07.2011 15:04
#9
Napisano 07.07.2011 15:10
TR_pHit, // int (edict_t*) TR_iHitgroup, // intpierwsze to indeks bytu a drugie to numer trafionego hitboxa
ent może być równe -1 jak strzelasz w powietrze
#10
Napisano 08.07.2011 20:31

P.S. proszę na razie o nie zamykanie tematu
Dodano 10 lipiec 2011 - 13:49:
Hmm, napisalem cos w tym stylu ale nie dziala
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#define PLUGIN "PluginName"
#define VERSION "1.0"
#define AUTHOR "MarWit"
new hitbox[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TraceAttack, "player", "TraceAttack")
RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
}
public TraceAttack(this, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
hitbox[this] = get_tr2(tracehandle, TR_iHitgroup)
return HAM_IGNORED
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
new className[32]
entity_get_string(this, EV_SZ_classname, className, charsmax(className))
if(!equali(className, "przykladowy_ent"))
return;
new weapon = get_user_weapon(idattacker)
if(hitbox[this] == HIT_HEAD){
client_print(idattacker, print_center, "trafiles w glowe!")
damage+=100.0
}
if(hitbox[this] == HIT_LEFTARM || hitbox[this] == HIT_LEFTLEG || hitbox[this] == HIT_RIGHTARM || hitbox[this] == HIT_RIGHTLEG)
damage-=5.0
}
Użytkownik MarWit edytował ten post 10.07.2011 11:59
#11
Napisano 10.07.2011 14:55
RegisterHam(Ham_TraceAttack, "player", "TraceAttack")tutaj łapiej obrażenia zadawane graczom, a potem sprawdzasz klasę
new className[32] entity_get_string(this, EV_SZ_classname, className, charsmax(className)) if(!equali(className, "przykladowy_ent")) return;czyli return jest zawsze
poza tym obrażenia możesz zmieniać już w TraceAttack, a jak już zmieniasz to SetHamParamFloat() + HAM_HANDLED, samo przemnożenie zmiennej damage nic nie daje
#12
Napisano 10.07.2011 19:27
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Test"
#define VERSION "1.0"
#define AUTHOR "MarWit"
new hitbox[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
RegisterHam(Ham_TraceAttack, "player", "TraceAttack");
register_forward(FM_Spawn,"Spawn");
}
public Spawn(id)
{
hitbox[id] = 0;
}
public TraceAttack(this, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
hitbox[this] = get_tr2(tracehandle, TR_iHitgroup);
new className[32];
pev(this, pev_classname, className, charsmax(className));
if(!equali(className, "przykladowy_ent"))
return HAM_IGNORED;
if(hitbox[this] == HIT_HEAD){
client_print(idattacker, print_center, "trafiles heada!");
SetHamParamFloat(3, damage+100.0);
return HAM_HANDLED;
}
if(hitbox[this] == HIT_LEFTARM || hitbox[this] == HIT_LEFTLEG || hitbox[this] == HIT_RIGHTARM || hitbox[this] == HIT_RIGHTLEG){
SetHamParamFloat(3, damage-5.0);
return HAM_HANDLED;
}
return HAM_IGNORED;
}
#13
Napisano 10.07.2011 19:30
RegisterHam(Ham_TraceAttack, "player", "TraceAttack");
tu jest klasa bytu, u Ciebie prawdopodobnie jest to info_target albo func_breakable, raczej nie "player"; poszukaj create_entity albo EngFunc_AllocString
#14
Napisano 10.07.2011 19:34

[Edit]
R3X, jestes wielki!

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Test"
#define VERSION "1.0"
#define AUTHOR "MarWit"
new hitbox[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
RegisterHam(Ham_TraceAttack, "info_target", "TraceAttack");
register_forward(FM_Spawn,"Spawn");
}
public Spawn(id)
{
hitbox[id] = 0;
}
public TraceAttack(iEnt, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
hitbox[idattacker] = get_tr2(tracehandle, TR_iHitgroup);
new className[32];
pev(iEnt, pev_classname, className, charsmax(className));
if(!equali(className, "przykladowy_ent"))
return HAM_IGNORED;
if(hitbox[idattacker] == HIT_HEAD){
//client_print(idattacker, print_center, "trafiles heada!");
SetHamParamFloat(3, damage+20.0);
return HAM_HANDLED;
}
if(hitbox[idattacker] == HIT_LEFTARM || hitbox[iEnt] == HIT_LEFTLEG || hitbox[iEnt] == HIT_RIGHTARM || hitbox[iEnt] == HIT_RIGHTLEG){
SetHamParamFloat(3, damage-5.0);
return HAM_HANDLED;
}
return HAM_IGNORED;
}
Temat do zamkniecia.
Użytkownik MarWit edytował ten post 10.07.2011 20:01
#15
Napisano 10.07.2011 20:27
public TraceAttack(iEnt, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits) { new hitbox = get_tr2(tracehandle, TR_iHitgroup);
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych