парни здарова, у меня апять тупик ()сразу прошу прощения за великоватое сообщение() вот два отрывка кода:
C++(M4A1.cpp):
******************************************/
int Cm4a1::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "ammo_m4a1"; // The type of ammo it uses
p->iMaxAmmo1 = 90; // Max ammo the player can carry
p->pszAmmo2 = NULL; // No secondary ammo
p->iMaxAmmo2 = -1;
p->iMaxClip = 30; // The clip size
p->iSlot = 0; // The number in the HUD
p->iPosition = 3; // The position in a HUD slot
p->iFlags = 0;
p->iId = m_iId = 19; // The weapon id
p->iWeight = 15; // for autoswitching
как вы уже наерно догадались дело идёт о накручивании и скручивании глушака на Мке
и всё что с ним связано, а вот и вопрос всё работает но вот есть пара недачётов буду примного благодарен
за помощь в их решении:
1-как исправить стрельбу (немогу понять но походу надо на ev_hldm чёто написать но я незнаю что"ибо не кодер))"), чтобы после
снятия силенцера(впрочем если он и одет тож самое) при стрельбе он не появлялся и не ищезал(чтоб при одетом играли анимации-=-m4a1_FIRE1,m4a1_FIRE2
а при снятом м4а1_FIRE3.)
2-звук при одетом силенцере скажем (m4a1-1, m4a1-2) а при снятом (m4a1-3),
3-(ах да и музелфлаш чтоб не отображался спритес выстрела при одетом глушак)-не обязательно но всёже).
4-и вот ещё что, иногда происходят накладки анимации, начиная проигрывать анимацию снятия глушака(или одевания) тутже воспроизв-ся анимация IDLE.
но это не так страшно как первые два гала.
Пасиба за внимание))).
ну там же савсем немного написать то надо, мне пазарез надо исправит первые 2а бага , я это и сам почти сделал но както каряво а хочеццо то по людски))).плиззз хэлп!
Я делал, и в своё время с этим 3 дня мучился. Насколько я понял глушак на стволе делается анимацией (как в контре), а не сменой бодей. Очень советую хотя бы милкшейпом превратить глушак в отдельную боди, а то запаришься каждый раз вести проверку переменной для выбора нужной анимации. Боди на пошке сменяется командой pev->body номер боди. Можешь посмотреть как это в питоне сделано. Однако есть тонкости:
1 указывать боди при каждом проигравании анимации пушки в качестве 2 параметра.
2 указывать боди из процудуры Deploy
3 Отсылать боди в эвенте который ты посылаешь при выстреле.
4 боди хоть и сохраняется в сейв, но восстанавливается на модели пушки после сохранения\загрузки не сразу, поэтому надо вызвать из прекиша ресурсов функцию idle или воспользоваться тутором Xash weapon system там это дело хорошо пролечили.
5 (сам шишку набил ) если ты решил не юзать Xash weapon system то на клиенте неизбежно возникнет глюк с разногласием значений переменных которыя хранят текущее состояние глушителя после сохранения\загрузки. Выход: установи условную компиляцию на код проверок состояния глушителя.
P.S. слишком мудрёно описал - устал просто
Добавлено 22-12-2007 в 22:57:
Не как руки не дойдут написать тутор про глушители -наверное пора от лени лечится
__________________
Хотелось бы, чтобы не только хотелось...
мдю блин тут вся загвоздка на клиенте в ев_хлдм.срр, косяк токо при стрельбе, примерно так делал-
аним левель= 0
то играет анимация m4a1_Fire1
если аним левель= 1
то играет анимация m4a1_Fire2;
но просит задеклорировать переменную-m_iAnimLevel декларирую на ев_хлдм.н, в игре косяк с глушаком прапал,но вместо анимаций выстрела играет анимайия idle
Можно ибез клиента анимацию проиграть в праймару атак вставь SendWeaponAnim( m4a1_FIRE); перед m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
А на клиенте убери соответственный:
Пасиб пацаны, прям низнаю чтоб без вас бы делал), и вот чтоб не создавать новую тему помогите плизз ещё с 1й идейкой-Zoom, с состряпал модельку оптическоо прицела(позаимствовал систему из firearms) вот и вопрос как сделать чтоб при секондарнай атаке эта модель сменяла пушку , но чтобы и FOV с срайтом прицела никуда не пропал?
rocksTaa меняй у игрока pev->viewmodel на модель прицела, а когда прицел отключается, возвращай нормальную, вот и всё. Как это делается - смотри weapons.cpp CBasePlayerWeapon::DefaultDeploy всё просто (-;
Ku2zoff- а чё писать то? я нашол>>m_pPlayer->pev->weaponmodel = MAKE_STRING(szWeaponModel); меня интересует что писать после"=" пишу скажем - void Csig::SecondaryAttack()
{
if ( m_pPlayer->pev->fov != 0 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 0; // 0 means reset to default fov
m_fInZoom = 0;
m_pPlayer->pev->weaponmodel = MAKE_STRING(v_sig);
}
else if ( m_pPlayer->pev->fov != 20 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 20;
m_fInZoom = 1;
m_pPlayer->pev->weaponmodel = MAKE_STRING(scope_sig);
}
pev->nextthink = UTIL_WeaponTimeBase() + 0.1;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
}
он просит меня задеклорировать "scope_sig" и "v_sig" но это не поможет, мот чёт другое надо писать?