|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Событие "стрельба по энтити"
|
|
pashok_91 | Дата: Воскресенье, 06.12.2009, 10:59:53 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 34
Статус: Не в сети
| Третий вопрос) Подскажите, как словить событие огня по энтити, с определением энтити по которому стрельнул игрок и собственно игрока который стрелял?
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 11:10:54 | Сообщение # 2 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Ham_TakeDamage, но сработает только если ентити можно нанести урон
http://romanov4400.mybrute.com
|
|
| |
pashok_91 | Дата: Воскресенье, 06.12.2009, 11:17:15 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 34
Статус: Не в сети
| А какому энтити можно нанести урон?) Я создаю такое: eid2 = create_entity("info_target") entity_set_string(eid2, EV_SZ_classname, "xxx") entity_set_model(eid2, "models/barney.mdl") entity_set_int(eid2, EV_INT_solid, SOLID_BBOX); entity_set_origin(eid2, origin) entity_set_int(eid2, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE) drop_to_floor(eid2)
Сообщение отредактировал pashok_91 - Воскресенье, 06.12.2009, 11:17:39 |
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 11:24:38 | Сообщение # 4 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Установи pev_health и pev_takedamage = DAMAGE_YES
http://romanov4400.mybrute.com
|
|
| |
pashok_91 | Дата: Воскресенье, 06.12.2009, 11:35:17 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 34
Статус: Не в сети
| Плииз, маленький кусочег кода, я нуп.... Потому что вот добавил я это set_pev(eid2, pev_takedamage, DAMAGE_YES) set_pev(eid2, pev_health, 10) это(заранее объявив функцию, естественно) public имя_моей_функции(victim,weapon,killer,damage) { set_hudmessage(0, 0, 255, -1.0, -1.0) show_hudmessage(1, "<Hudmessage>") } а оно неработает) надпись не появляется...
Сообщение отредактировал pashok_91 - Воскресенье, 06.12.2009, 11:36:16 |
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 11:52:00 | Сообщение # 6 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| По конкретней,что не так
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 11:52:54 | Сообщение # 7 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| покажи как регистрировал Ham_TakeDamage надо RegisterHam(Ham_TakeDamage, "func_breakable", "funcName") И ентити тоже сделай func_breakable а не info_target
http://romanov4400.mybrute.com
|
|
| |
DaTa | Дата: Воскресенье, 06.12.2009, 14:55:19 | Сообщение # 8 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Разве реально в точку попасть? Code new Float:afMins[] = {-5.0, -5.0, -5.0} new Float:afMaxs[] = {5.0, 5.0, 5.0} set_pev(ent, pev_mins, afMins) set_pev(ent, pev_maxs, afMaxs)
|
|
| |
pashok_91 | Дата: Воскресенье, 06.12.2009, 19:40:44 | Сообщение # 9 |
Сержант
Группа: Пользователи
Сообщений: 34
Статус: Не в сети
| ничего не получилось.... размер вроде применился, игрок как бы "спотыкается" при коллизии с энтити... но пули проходят мимо, вот мой код: Code public plugin_init() { RegisterHam(Ham_TakeDamage, "func_breakable", "hurt") }
public некая_функция() { new Float:origin[3],Float:velocity[3]
//ОЗДАНИЕ МОНСТРА eid2 = create_entity("func_breakable")
entity_get_vector(gi,EV_VEC_origin,origin); entity_get_vector(gi,EV_VEC_angles,velocity);
entity_set_string(eid2, EV_SZ_classname, "LOL") entity_set_model(eid2, "models/barney.mdl")
entity_set_int(eid2, EV_INT_solid, SOLID_BBOX); entity_set_origin(eid2, origin)
set_pev(eid2,pev_sequence,SQ_RUN) set_pev(eid2,pev_gaitsequence,SQ_RUN) set_pev(eid2,pev_framerate,FR_IDLE)
//код ниже дает вектор движения энтити в такую же сторону, куда смотрит игрок new Float:velocity2[3], Float:v2[3], Float:origin3[3],Float:v_angle2[3], Float:v_angle3[3]; entity_get_vector(ind,EV_VEC_v_angle, velocity2); velocity2[2]=0.00; velocity2[0]=0.00; entity_set_vector(eid2, EV_VEC_angles, velocity2)
angle_vector(velocity2, 1, v_angle2);
v_angle3[0]=v_angle2[0]*100.00; v_angle3[1]=v_angle2[1]*100.00;
entity_set_vector(eid2,EV_VEC_velocity,v_angle3);
///
entity_set_int(eid2, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE) drop_to_floor(eid2)
set_pev(eid2, pev_takedamage, 1.0) set_pev(eid2, pev_health, 10.00)
//entity_set_float(eid2,EV_FL_takedamage, 1.0) //entity_set_float(eid2,EV_FL_health, 10.0)
new Float:afMins[] = {-50.0, -50.0, 0.0} new Float:afMaxs[] = {50.0, 50.0, 50.0} set_pev(eid2, pev_mins, afMins) set_pev(eid2, pev_maxs, afMaxs)
remove_entity(gi); } //gi - другое энтити, на месте которого должен появится eid2.
// public hurt(victim,weapon,killer,damage) { //remove_entity(victim); client_print(1,print_chat,"COLLISION!!!") }
Сообщение отредактировал pashok_91 - Воскресенье, 06.12.2009, 19:42:23 |
|
| |
DaTa | Дата: Воскресенье, 06.12.2009, 22:43:52 | Сообщение # 10 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Посмотри в этом плагине порядок создания и проверку на урон в функции Code public make_fakeCF(ent)
|
|
| |
pashok_91 | Дата: Понедельник, 07.12.2009, 01:38:14 | Сообщение # 11 |
Сержант
Группа: Пользователи
Сообщений: 34
Статус: Не в сети
| Чесно говоря вобще не понял что делает плагин, кроме невидимой бомбы...
|
|
| |
PAHANCS | Дата: Понедельник, 07.12.2009, 10:25:11 | Сообщение # 12 |
Полковник
Группа: Пользователи
Сообщений: 183
Статус: Не в сети
| Quote (PomanoB) И ентити тоже сделай func_breakable а не info_target Странно, а у меня получилось с info_target, ток вот с анимацией плохо: Code
#include <amxmodx> #include <xs> #include <fakemeta> #include <hamsandwich>
new Blood; new BloodSpray;
new start_sound[3][] = { "barney/ba_another.wav", "barney/ba_attack1.wav", "barney/ba_bring.wav" }
new death_sound[3][] = { "player/die1.wav", "player/die2.wav", "player/die3.wav" }
new damage_sound[3][] = { "player/bhit_flesh-1.wav", "player/bhit_flesh-2.wav", "player/bhit_flesh-3.wav" }
new BloodsSmall[7] = {190, 191, 192, 193, 194, 196, 197}
public plugin_init() { RegisterHam(Ham_Killed, "info_target", "fw_killed"); register_concmd("delete_barney_all", "delete_barney_all") RegisterHam(Ham_TakeDamage, "info_target", "fw_takedamage"); register_concmd("create_barney_by_aim", "create_barney_by_aim"); register_concmd("delete_barney_by_aim", "delete_barney_by_aim"); register_plugin("Barney Damage", "1.0", "PahanCS"); }
public plugin_precache() { precache_model("models/barney.mdl"); Blood = precache_model("sprites/blood.spr"); BloodSpray = precache_model("sprites/bloodspray.spr"); for(new i=0; i<3; i++) { precache_sound(start_sound[i]); precache_sound(death_sound[i]); precache_sound(damage_sound[i]); } }
public create_barney_by_aim(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; static ent; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); if(!pev_valid(ent)) { client_print(id, print_chat, "[create_barney_by_aim] can't create barney"); return PLUGIN_CONTINUE; } static Float:fOrigin[3], Float:fAngles[3]; fm_get_aimorigin_dist(id, 100.0, fOrigin); pev(id, pev_angles, fAngles); set_pev(ent, pev_classname, "ent_barney"); set_pev(ent, pev_origin, fOrigin); set_pev(ent, pev_angles, fAngles); set_pev(ent, pev_solid, SOLID_SLIDEBOX); set_pev(ent, pev_movetype, MOVETYPE_PUSHSTEP); set_pev(ent, pev_health, 500.0); set_pev(ent, pev_takedamage, DAMAGE_YES); engfunc(EngFunc_SetModel, ent, "models/barney.mdl"); engfunc(EngFunc_SetSize, ent, Float:{-12.0, -12.0, 0.0 }, Float:{12.0, 12.0, 76.0}); engfunc(EngFunc_DropToFloor, ent); set_pev(ent, pev_sequence, 3); set_pev(ent, pev_gaitsequence, 3); set_pev(ent, pev_framerate, 1.0); set_live_state(ent, 1); engfunc(EngFunc_EmitSound, ent, CHAN_VOICE, start_sound[random_num(0, 2)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); client_print(id, print_chat, "[create_barney_by_aim] create barney id: %i",ent); return PLUGIN_CONTINUE; }
public delete_barney_by_aim(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; static ent; ent = fm_get_aiment_dist(id, 9999.0); if(!is_ent_barney(ent)) { client_print(id, print_chat, "[delete_barney_by_aim] can't delete barney"); return PLUGIN_CONTINUE; } engfunc(EngFunc_RemoveEntity, ent); client_print(id, print_chat, "[delete_barney_by_aim] delete barney id: %i",ent); return PLUGIN_CONTINUE; }
public delete_barney_all(id) { static ent, bool:isdel; isdel = false; ent = engfunc(EngFunc_FindEntityByString, -1, "classname", "ent_barney"); while(ent > 0) { if(pev_valid(ent)) { isdel = true; client_print(id, print_chat, "[delete_barney_all] delete barney id: %i",ent); engfunc(EngFunc_RemoveEntity, ent); } ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "ent_barney"); } if(!isdel) client_print(id, print_chat, "[delete_barney_all] can't delete barney"); return PLUGIN_CONTINUE; }
public fw_takedamage(ent, idinflictor, idattacker, Float:damage, damagebits) { if(!is_ent_barney(ent) || !get_live_state(ent)) return HAM_IGNORED; static Float:fOrigin[3], anim; anim = random_num(13, 14); pev(ent, pev_origin, fOrigin); set_pev(ent, pev_sequence, anim); set_pev(ent, pev_gaitsequence, anim); set_pev(ent, pev_framerate, 1.0); create_blood(fOrigin); create_bloodtrace_player(fOrigin); engfunc(EngFunc_EmitSound, ent, CHAN_VOICE, damage_sound[random_num(0, 2)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); client_print(idattacker, print_chat, "[fw_takedamage] damage barney: %f",damage); if(is_user_connected(idattacker)) barney_push_from_attacker(ent, idattacker, damage); return HAM_IGNORED; }
public fw_killed(ent, idattacker, shouldgib) { if(!is_ent_barney(ent) || !get_live_state(ent)) return HAM_IGNORED; set_live_state(ent, 0); static Float:fOrigin[3], anim; anim = random_num(25, 30); pev(ent, pev_origin, fOrigin); set_pev(ent, pev_sequence, anim); set_pev(ent, pev_gaitsequence, anim); set_pev(ent, pev_framerate, 1.0); set_pev(ent, pev_solid, SOLID_NOT); set_pev(ent, pev_movetype, MOVETYPE_NONE); create_blood(fOrigin); create_bloodtrace_player(fOrigin); engfunc(EngFunc_EmitSound, ent, CHAN_VOICE, death_sound[random_num(0, 2)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); client_print(idattacker, print_chat, "[fw_killed] barney attacker id: %i",idattacker); return HAM_SUPERCEDE; }
stock barney_push_from_attacker(ent, idother, Float:multiplier) { static Float:fVector[3], Float:fEntVelocity[3]; pev(idother, pev_v_angle, fVector); angle_vector(fVector, ANGLEVECTOR_FORWARD, fVector); xs_vec_mul_scalar(fVector, multiplier * 3, fVector); pev(ent, pev_velocity, fEntVelocity); xs_vec_add(fEntVelocity, fVector, fVector); set_pev(ent, pev_velocity, fVector); }
stock get_live_state(ent) { return pev(ent, pev_iuser1); }
stock set_live_state(ent, livestate) { set_pev(ent, pev_iuser1, livestate); }
stock fm_get_aimorigin_dist(index, Float:fDistance, Float:fRetOrigin[3], entignore = 0, monstersignore = 0) { static Float:fStart[3], Float:fViewOfs[3], trace; pev(index, pev_origin, fStart); pev(index, pev_view_ofs, fViewOfs); xs_vec_add(fStart, fViewOfs, fStart); static Float:fDest[3]; pev(index, pev_v_angle, fDest); engfunc(EngFunc_MakeVectors, fDest); global_get(glb_v_forward, fDest); xs_vec_mul_scalar(fDest, fDistance, fDest); xs_vec_add(fStart, fDest, fDest); if(pev_valid(entignore)) engfunc(EngFunc_TraceLine, fStart, fDest, monstersignore == 1 ? 1:0, entignore, trace); else engfunc(EngFunc_TraceLine, fStart, fDest, monstersignore == 1 ? 1:0, index, trace); get_tr2(trace, TR_vecEndPos, fRetOrigin); free_tr2(trace); }
stock fm_get_aiment_dist(index, Float:fDistance, entignore = 0, monstersignore = 0) { static Float:fStart[3], Float:fViewOfs[3], trace, hit pev(index, pev_origin, fStart) pev(index, pev_view_ofs, fViewOfs) xs_vec_add(fStart, fViewOfs, fStart) static Float:fDest[3] pev(index, pev_v_angle, fDest) engfunc(EngFunc_MakeVectors, fDest) global_get(glb_v_forward, fDest) xs_vec_mul_scalar(fDest, fDistance, fDest) xs_vec_add(fStart, fDest, fDest) if(pev_valid(entignore)) engfunc(EngFunc_TraceLine, fStart, fDest, monstersignore == 1 ? 1:0, entignore, trace) else engfunc(EngFunc_TraceLine, fStart, fDest, monstersignore == 1 ? 1:0, index, trace) hit = get_tr2(trace, TR_pHit) free_tr2(trace) return hit }
stock create_blood(Float:fOrigin[3]) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSTREAM); engfunc(EngFunc_WriteCoord, fOrigin[0]); engfunc(EngFunc_WriteCoord, fOrigin[1]); engfunc(EngFunc_WriteCoord, fOrigin[2] + 45.0); write_coord(random_num(-50, 50)); write_coord(random_num(-50, 50)); write_coord(-10); write_byte(70); write_byte(random_num(50, 100)); message_end(); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) ; write_byte(TE_BLOODSPRITE); engfunc(EngFunc_WriteCoord, fOrigin[0] + random_float(-5.0, 5.0)); engfunc(EngFunc_WriteCoord, fOrigin[1] + random_float(-5.0, 5.0)); engfunc(EngFunc_WriteCoord, fOrigin[2] + 45.0); write_short(BloodSpray); write_short(Blood); write_byte(70); write_byte(7); message_end(); }
stock create_bloodtrace_player(Float:fOrigin[3]) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_WORLDDECAL); engfunc(EngFunc_WriteCoord, fOrigin[0] + random_float(-5.0, 5.0)); engfunc(EngFunc_WriteCoord, fOrigin[1] + random_float(-5.0, 5.0)); engfunc(EngFunc_WriteCoord, fOrigin[2] + 3.0); write_byte(BloodsSmall[random_num(0, 6)]); message_end(); }
stock bool:is_ent_barney(ent) { if(pev_valid(ent)) { static classname[32]; pev(ent, pev_classname, classname, 31); if(equal(classname, "ent_barney")) return true; } return false; }
В sma файле:
PAHANCS
Сообщение отредактировал PAHANCS - Понедельник, 07.12.2009, 11:35:47 |
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |