![]() |
Показать все 19 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- как сделать взрывной арбалет ? (https://hlfx.ru/forum/showthread.php?threadid=5474)
как сделать взрывной арбалет ?
решил я немного изменить арбалет сделать его взрывным в одиночной игре
получилось но появилась проблема.В мультиплеере после попадания в тело они взрываются а в одиночной они взрываются только в сене после попадания в тело монстра стрелы не взрываются как сделать наоборот чтобы они взрывались ?
__________________
илья
Re: как сделать взрывной арбалет ?
__________________
илья
илья2 выкинь из BoltTouch весь код, кроме вызова ExplodeThink. Там есть условие if (pOther->pev->takedamage), а внутри него ещё условие if ( !g_pGameRules->IsMultiplayer() ). Так вот. Если объект, которого касается болт, может получать урон (первое условие), то болт "убивается" без вызова взрыва, если режим игры одиночный (второе условие). В мультиплеере болт "убивается" через взрыв, а в сингле вот тем вторым условием, чтоб в воздухе не висел.
спасибо помогло ты крут.И ещё кое что как изменить скорость выстрела стрелы при прицеливании чтобы как в мультиплеере было ?
__________________
илья
илья2 чтобы стрела мгновенно долетала? Ищи второе условие g_pGameRules->IsMultiplayer(). Там есть выбор, как стрелять. Только взрываться болты не будут.
блин а мне надо чтобы они взрывались
Добавлено 03-04-2020 в 12:22:
проверил ну как ты и говорил не взрываются
__________________
илья
илья2 при мгновенном долёте вообще болт не выстреливается. Делается обычная TraceAttack, типа как при выстреле. А в точке попадания создаётся на стороне клиента темпэнтитя с моделью болта + искры. Создай в точке попадания взрыв, а клиентскую часть с имитацией воткнутого в стену болта убери.
поподробнее можно
Добавлено 03-04-2020 в 12:36:
А в точке попадания а где эта точка попадания
__________________
илья
илья2 весь код за тебя писать не буду, накидаю примерно серверную часть со взрывом. Клиентскую сам отредактируешь.
void CCrossbow::FireSniperBolt(), там есть условие #ifndef CLIENT_DLL. Замени содержимое условия на это:
1 | if (tr.flFraction < 1.0) |
2 | { |
3 | Vector vecEnd = tr.vecEndPos + tr.vecPlaneNormal * 8; |
4 |
5 | int iContents = UTIL_PointContents(vecEnd); |
6 | int iScale = 10; |
7 |
8 | MESSAGE_BEGIN(MSG_PVS, SVC_TEMPENTITY, vecEnd); |
9 | WRITE_BYTE(TE_EXPLOSION); |
10 | WRITE_COORD(vecEnd.x); |
11 | WRITE_COORD(vecEnd.y); |
12 | WRITE_COORD(vecEnd.z); |
13 | if (iContents != CONTENTS_WATER) |
14 | { |
15 | WRITE_SHORT(g_sModelIndexFireball); |
16 | } |
17 | else |
18 | { |
19 | WRITE_SHORT(g_sModelIndexWExplosion); |
20 | } |
21 | WRITE_BYTE(iScale); // scale * 10 |
22 | WRITE_BYTE(15); // framerate |
23 | WRITE_BYTE(TE_EXPLFLAG_NONE); |
24 | MESSAGE_END(); |
25 |
26 | ::RadiusDamage(vecEnd, pev, m_pPlayer->pev, pev->dmg, 128, CLASS_NONE, DMG_BLAST | DMG_ALWAYSGIB); |
27 | } |
круто помогло
Добавлено 03-04-2020 в 12:57:
было бы прикольно добавить взрывной лук как из фильма рембо и крутую модель вставить
Добавлено 03-04-2020 в 12:58:
ну это я так фантазия разыгралась
Добавлено 03-04-2020 в 13:03:
если ещё чтонибуть нужно я приду еще раз.
__________________
илья
да спасибо почитаю
Добавлено 03-04-2020 в 17:45:
можно я тебе ёще один вопрос спрошу а что это за функция ?
if ( !g_pGameRules->IsMultiplayer() )
{
Killed( pev, GIB_NEVER );
}
__________________
илья
g_pGameRules->IsMultiplayer(), говоря простым языком это переменная. Когда она равна 1, то в игре мультиплеер. Когда равна 0, тогда в игре сингл. Восклицательный знак означает логическое отрицание. g_pGameRules->IsMultiplayer() - это мультиплеер. !g_pGameRules->IsMultiplayer() - это ЕСЛИ НЕ мультиплеер. Давай-ка подучи азы языка Си. Выглядеть все эти условия, сравнения и приведения переменных могут по-разному, но базовый набор знаков, которые участвуют в логических операциях везде один. Ну и документацию и туторы по халфе тоже стоит подучить, если хочешь сам писать взрывные луки, не прося ни у кого подсказки.
Добавлено 03-04-2020 в 22:38:
а если мультиплеер арбалетный болт появляется да
Добавлено 03-04-2020 в 19:03:
да ты прав но ты не думаешь что эта функция какета не нужная в этой пушке
Добавлено 03-04-2020 в 20:58:
pev->dmg,-что ж ты здесь дамаг та не поставил забыл
надо было так pev->dmg = 40,
а то сижу мучаюсь блин.
__________________
илья
слушай помоги у меня проблемы с прекешем оружия пишет ошибку
Host_Error: PF_precache_model_I: 'models/crossbowboom_bolt.mdl' Precache can only be done in spawn functions.
как эту ошибку исправить
если что этот арбалет я сделал как отдельное оружие
стрелы я новые хочу добавить а вот они не вылетают
__________________
илья
ну что не знаешь как исправить эту ошибку все варианты испробовал не получается исправить.
__________________
илья
илья2 кэшируй новые стрелы заблаговременно.
1 | void CCrossbow::Precache( void ) |
2 | { |
3 | PRECACHE_MODEL("models/w_crossbow.mdl"); |
4 | PRECACHE_MODEL("models/v_crossbow.mdl"); |
5 | PRECACHE_MODEL("models/p_crossbow.mdl"); |
6 |
7 | PRECACHE_SOUND("weapons/xbow_fire1.wav"); |
8 | PRECACHE_SOUND("weapons/xbow_reload1.wav"); |
9 |
10 | UTIL_PrecacheOther( "crossbow_bolt" ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
void CCrossbowboom::Precache( void )
{
PRECACHE_MODEL("models/w_crossbowboom.mdl");
PRECACHE_MODEL("models/v_crossbowboom.mdl");
PRECACHE_MODEL("models/p_crossbowboom.mdl");
PRECACHE_SOUND("weapons/xbowboom_fire1.wav");
PRECACHE_SOUND("weapons/xbowboom_reload1.wav");
UTIL_PrecacheOther( "crossbowboom_bolt" );
m_usCrossbowboom = PRECACHE_EVENT( 1, "events/crossbowboom1.sc" );
m_usCrossbowboom2 = PRECACHE_EVENT( 1, "events/crossbowboom2.sc" );
}
прекэш новых стрел уже есть и все равно эта ошибка
кажется это будет моя самая не любимая ошибка в кодинге
она повторяется практически везде в моих проектах.
Добавлено 07-04-2020 в 16:17:
я даже название модели и прекеша стрелы поменял все равно не работает
Добавлено 07-04-2020 в 16:18:
все перепробовал ниче не работает
Добавлено 07-04-2020 в 16:35:
мда что само смешное что обычные болты он хочет прекешить я проверил
а новые которые у меня есть почему то нет получается в модели какаета херня что ли или как ?
Добавлено 07-04-2020 в 17:42:
void CCrossbowBoltboom::Precache( )
{
PRECACHE_MODEL ("models/crossbowboom_bolt");<-----я думаю объяснять не стоит этаже кодинг любая малюсенькая ошибка в коде приводит к летальному исходу и к глюкам я просто не поставил этот долбанный .mdl в конце ух как я бомбил после этого жуть наконец я исправил эту ошибку и арбалет наконец таки заработал ох уж эта халфа с кодингом своим и тупостью ухххххх.
PRECACHE_SOUND("weapons/xbow_hitbod1.wav");
PRECACHE_SOUND("weapons/xbow_hitbod2.wav");
PRECACHE_SOUND("weapons/xbow_fly1.wav");
PRECACHE_SOUND("weapons/xbow_hit1.wav");
PRECACHE_SOUND("fvox/beep.wav");
m_iTrail = PRECACHE_MODEL("sprites/streak.spr");
}
__________________
илья
Временная зона GMT. Текущее время 21:13. | Показать все 19 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024