|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Плагин "Corpse realism"
|
|
| se7h | Дата: Понедельник, 24.03.2008, 19:15:59 | Сообщение # 1 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Есть замечательный плагин: при попадании в труп брызжеть кровь и остаётся кровавый след на полу, а также слышен звук пробиваемой плоти, но есть баг - не всегда из трупов идёт кровь, автор пытался отловить баг, но так и не смог. Из наблюдений: в CS1.6 модель убитого игрока может сначала лежать выше, а потом опуститься, почему-то мне кажется что это как-то связано с глюком VEN: видел твой "Juicy Corpse", может ты что подскажешь? Исходник: Code #include <amxmodx> #include <fakemeta> #include <xs>
#define PLUGIN "Corpse Realism" #define VERSION "1.2" #define AUTHOR "Alka"
new gSprBloodDecal[8] = { 190, 191, 192, 193, 194, 195, 196, 197 };
new Float:gNextSprite[33];
new const gCorpseSound[] = "player/hit.wav";
public plugin_precache(){
precache_sound(gCorpseSound); }
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_forward(FM_CmdStart, "Fwd_CmdStart"); }
public Fwd_CmdStart(id, uc_handle, seed) { if(!is_user_alive(id)) return FMRES_IGNORED; static iButton; iButton = get_uc(uc_handle, UC_Buttons); static iWeapon, iTemp; iWeapon = get_user_weapon(id, iTemp, iTemp); static Float:fGameTime; fGameTime = get_gametime(); if((iButton & IN_ATTACK) && (iWeapon != CSW_KNIFE && iWeapon != CSW_C4) && !is_weapon_nade(iWeapon) && (gNextSprite[id] < fGameTime)) { static Float:fOrigin[3]; fm_get_aim_origin(id, fOrigin); new iEnt; if((iEnt = engfunc(EngFunc_FindEntityInSphere, iEnt, fOrigin, 20.0)) != 0) { if((1 <= iEnt <= global_get(glb_maxClients))) { static szClassName[32]; pev(iEnt, pev_classname, szClassName, sizeof szClassName - 1); if((szClassName[0] == 'p' && szClassName[3] == 'y') && !is_user_alive(iEnt)) { client_cmd(id, "spk %s", gCorpseSound); func_fx_blood(fOrigin); func_fx_blood_decal(fOrigin, 4); } } } gNextSprite[id] = fGameTime + 0.3; } return FMRES_IGNORED; }
stock fm_get_aim_origin(index, Float:origin[3]) { new Float:start[3], Float:view_ofs[3]; pev(index, pev_origin, start); pev(index, pev_view_ofs, view_ofs); xs_vec_add(start, view_ofs, start); new Float:dest[3]; pev(index, pev_v_angle, dest); engfunc(EngFunc_MakeVectors, dest); global_get(glb_v_forward, dest); xs_vec_mul_scalar(dest, 9999.0, dest); xs_vec_add(start, dest, dest); engfunc(EngFunc_TraceLine, start, dest, 0, index, 0); get_tr2(0, TR_vecEndPos, origin); return 1; }
stock is_weapon_nade(index) { if(index == CSW_HEGRENADE || index == CSW_FLASHBANG || index == CSW_SMOKEGRENADE) return 1; return 0; }
stock func_fx_blood(Float:origin[3]) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSTREAM); write_coord(floatround(origin[0])); write_coord(floatround(origin[1])); write_coord(floatround(origin[2]) + 20); write_coord(random_num(-360, 360)); write_coord(random_num(-360, 360)); write_coord(-10); write_byte(70); write_byte(random_num(50, 100)); message_end(); }
stock func_fx_blood_decal(Float:origin[3], num) { if(!num) num = 1; for(new i = 0 ; i <= num ; i++) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_WORLDDECAL); write_coord(floatround(origin[0]) + random_num(-50, 50)); write_coord(floatround(origin[1]) + random_num(-50, 50)); write_coord(floatround(origin[2])); write_byte(gSprBloodDecal[random(sizeof gSprBloodDecal)]); message_end(); } }
Сообщение отредактировал se7h - Понедельник, 24.03.2008, 20:42:38 |
| |
|
|
| DaTa | Дата: Понедельник, 24.03.2008, 19:48:02 | Сообщение # 2 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| а что он делает хоть? когда ктото стреляет в труп - выпускает кровь? О_о
|
| |
|
|
| se7h | Дата: Понедельник, 24.03.2008, 20:34:20 | Сообщение # 3 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (DaTa) а что он делает хоть? когда ктото стреляет в труп - выпускает кровь? О_о при попадании в труп брызжеть кровь и остаётся кровавый след на полу, а также слышен звук пробиваемой плоти лучше установи себе и всё сам увидишь вот звук для плага, закинь его в папку cstrike/sound/player
Сообщение отредактировал se7h - Понедельник, 24.03.2008, 20:37:27 |
| |
|
|
| DaTa | Дата: Понедельник, 24.03.2008, 21:29:12 | Сообщение # 4 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| 1) ну он использует плохой метод вылова момента, когда игрок стреляет и куда, по идее во время перезарядки труп будет брызгать кровью, когда в него целится и зажимать +attack. 2) не всегда игрок находится на месте трупа, т.е труп вообще может не реагировать на стрельбу 3) не всегда будет накладываться декаль, как в случае с созданием клиентского лого на стене
|
| |
|
|
| se7h | Дата: Понедельник, 24.03.2008, 22:36:09 | Сообщение # 5 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (DaTa) 1) ну он использует плохой метод вылова момента, когда игрок стреляет и куда, по идее во время перезарядки труп будет брызгать кровью, когда в него целится и зажимать +attack. да, есть такое, заканчиваются патроны, нажимаешь огонь целясь в труп и брызгает кровь Quote (DaTa) 2) не всегда игрок находится на месте трупа, т.е труп вообще может не реагировать на стрельбу не совсем понял, поясни Quote (DaTa) 3) не всегда будет накладываться декаль, как в случае с созданием клиентского лого на стене понятно можешь попробовать переделать плагин?
|
| |
|
|
| DaTa | Дата: Понедельник, 24.03.2008, 22:39:18 | Сообщение # 6 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| к сожалению очень трудно для меня, и вообще это громоздкой труд, вот VEN такое способен сделать, хотя вряд ли он займется этим, время - деньги
|
| |
|
|
| se7h | Дата: Четверг, 27.03.2008, 20:10:32 | Сообщение # 7 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (DaTa) к сожалению очень трудно для меня, и вообще это громоздкой труд, очень жаль Quote вот VEN такое способен сделать, хотя вряд ли он займется этим, время - деньги всех денег не заработаешь slogic: что ты думаешь по поводу плагина? Добавлено (2008-03-27, 8:10 Pm) --------------------------------------------- brute, где ты там? давай как обычно, я пишу "спасибо за помощь", продолжай 
Сообщение отредактировал se7h - Вторник, 25.03.2008, 19:50:26 |
| |
|
|
| Brute | Дата: Четверг, 27.03.2008, 23:14:23 | Сообщение # 8 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (se7h) brute, где ты там? давай как обычно, я пишу "спасибо за помощь", продолжай B) Непонимаю о чём ты. Кстати автор этого плагина: Alka - умеет говорить на русском языке, вот к ней(нему) все вопросы.
|
| |
|
|
| VEN | Дата: Пятница, 28.03.2008, 00:11:07 | Сообщение # 9 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Автор, по таким вопросам приватно обращаться запрещено. Читай правила форума. Автор плагина проверяет, нажата ли кнопка атаки, что не всегда говорит о произведенном выстреле. Потом определяет точку падения взора игрока, что далеко не всегда является точкой попадания пули. И проверяет, есть ли вблизи точки мертвая player entity, что также не является верным методом, т.к. труп очень скоро после смерти заменяется на TempEntity, что не является физической entity. Итого: технические методы, используемые в плагине, в корне неверные. Верно - сверять, пересекает ли вектор пули заранее кэшированое пространство, в котором лежит труп.
|
| |
|
|
| se7h | Дата: Пятница, 28.03.2008, 09:32:10 | Сообщение # 10 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (Brute) Непонимаю о чём ты. вот здесь посмотри последний пост Quote (Brute) Кстати автор этого плагина: Alka - умеет говорить на русском языке, вот к ней(нему) все вопросы. спасибо за инфу, проверим, хотя вообще-то он из Румынии Quote (VEN) Автор, по таким вопросам приватно обращаться запрещено. Читай правила форума. окей, спасибо за помощь 
Сообщение отредактировал se7h - Пятница, 28.03.2008, 09:45:35 |
| |
|
|
| slogic | Дата: Пятница, 28.03.2008, 13:34:11 | Сообщение # 11 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (VEN) пересекает ли вектор пули заранее кэшированое пространство этот как - кэшированное?
|
| |
|
|
| DaTa | Дата: Пятница, 28.03.2008, 13:38:08 | Сообщение # 12 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| наверно пространство "коробку" в которой находится модель, или у нее есть хитбоксы все же?
|
| |
|
|
| se7h | Дата: Понедельник, 31.03.2008, 11:16:52 | Сообщение # 13 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (VEN) Верно - сверять, пересекает ли вектор пули заранее кэшированое пространство, в котором лежит труп. По поводу метода Alka заявил буквально следующее: "that methode is shitty because is store the origin and compare the distance" Вот что значит разный подход Добавлено (2008-03-31, 11:16 Am) ---------------------------------------------
Quote (VEN) И проверяет, есть ли вблизи точки мертвая player entity, что также не является верным методом, т.к. труп очень скоро после смерти заменяется на TempEntity, что не является физической entity. а как сделать проверку не только player entity, но и на Temp entity??? что добавить нужно?
|
| |
|
|
| slogic | Дата: Понедельник, 31.03.2008, 15:49:59 | Сообщение # 14 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| нужно словить события и опять же запомнить координату. как определить ориентацию трупа по temp entiyt я не знаю. Я думаю Alka должно быть очевидно, что другого способа нет.
|
| |
|
|
| se7h | Дата: Понедельник, 31.03.2008, 15:54:41 | Сообщение # 15 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (slogic) Я думаю Alka должно быть очевидно, что другого способа нет. Alka сказал что не будет переделывать плагин
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |