Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Страницы (87): « Первая ... « 63 64 65 66 [67] 68 69 70 71 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21172
Нанёс повреждений: 356 ед.

Рейтинг



Цитата:
Ku2zoff писал:
работа со строками в этом языке довольно странная

Она не то чтобы странная. Её как таковой вообще нет. В крестах через контейнеры обычно работают, но они там не всегда были.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

Сообщить модератору | | IP: Записан
Сообщение: 167113

Старое сообщение 24-06-2017 17:19
-
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 33
Возраст: 21

Рейтинг



Цитата:
Ku2zoff писал:
ты сохраняешь в сейвдату игрока только имя трека без расширения, или полный путь с расширением?

Только имя, но с расширением, например "music01.mp3".

Цитата:
Ku2zoff писал:
Как у тебя формируется строка m_strCurrentMp3, и как ты отправляешь мессагу после загрузки карты?


При спавне или ресторе переменная m_iMp3NeedsUpdate = 2;
А потом такой код в функции UpdateClientData
C++ Source Code:
if (m_iMp3NeedsUpdate)
{
    if (FStringNull(m_strCurrentMp3))
    {
        MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
        WRITE_BYTE(0); // turn off
        if (m_iMp3NeedsUpdate == 2)
            WRITE_COORD(0); // level 2 update: stops immediatly
        else
            WRITE_COORD(5.0); // update during game - slowly turn off
        MESSAGE_END();
        //ALERT(at_aiconsole, "MP3 player: turning off\n");
    }
    else
    {
        MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
        WRITE_BYTE(m_iMp3NeedsUpdate == 3 ? 2 : 1); // play
        WRITE_STRING(STRING(m_strCurrentMp3));
        MESSAGE_END();
        //ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3));
        // Sigurth
        if( m_iMp3NeedsUpdate == 3 )
            m_strCurrentMp3 = iStringNull;
        
    }
    
    m_iMp3NeedsUpdate = 0;
}



Я думаю, может мне просто посылать номер трека, а на клиенте уже определять, какой трек будет соответствовать этому номеру? Скорее всего и проблема исчезнет. Но в Паранойе то точно такой же код, и он не вызывает багов (ну кроме вылетов). Хотя может дело в том, что Паранойя изначально строилась на спирите?

__________________
Никогда не поздно сделать мод под хл1

Сообщить модератору | | IP: Записан
Сообщение: 167117

Старое сообщение 24-06-2017 20:24
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21172
Нанёс повреждений: 356 ед.

Рейтинг



Sigurth ты эту строчку в сейв-то сохранил?

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

Сообщить модератору | | IP: Записан
Сообщение: 167118

Старое сообщение 24-06-2017 20:45
-
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 33
Возраст: 21

Рейтинг



Дядя Миша Сохранил

C++ Source Code:
DEFINE_FIELD( CBasePlayer, m_strCurrentMp3, FIELD_STRING ),


Говорю же, проблема в несанкционированном вызове мп3 плеера, и походу не с сервера мессагой, а чисто с клиента. Потому что в коде ошибок нет, плеер работает исправно. Но вот почему-то он пытается при старте уровня включить мне музычку с названием сейва, который я загружаю, например quick, autosave или half-life-000. А потом в консоль ругается, что не может загрузить такой файл. Причем ругань выдает только клиент, на сервере походу мессага вообще не отправлялась, потому что я там что в ALERTe написано, в консоль не пишется при developer 5. А если я сам активирую плеер, то все пишется.

__________________
Никогда не поздно сделать мод под хл1

Сообщить модератору | | IP: Записан
Сообщение: 167138

Старое сообщение 25-06-2017 06:46
- За что?
a1batross
Частый гость

Группа: Неопытный
Дата регистрации: May 2016
Проживает: Москва
Сообщений: 95
Возраст: 19

Рейтинг



Sigurth так поставь брейкпоинт на клиенте и смотри кто же тебе её вызывает.
Если в трейсе будет CL_DispatchUserMessage(или что-то в этом роде), значит её точно выслал сервер, если так, то ищи все вхождения gmsgPlayMP3 на сервере, ставь везде брейкпоинты и смотри что происходит.

Я так понимаю, вся проблема в том, что вместо реального названия трека в сейв записывается нечто другое?

Сообщить модератору | | IP: Записан
Сообщение: 167141

Старое сообщение 25-06-2017 10:33
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21172
Нанёс повреждений: 356 ед.

Рейтинг



Да мусор у нево на клиенте

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

Сообщить модератору | | IP: Записан
Сообщение: 167146

Старое сообщение 25-06-2017 14:09
-
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 33
Возраст: 21

Рейтинг



a1batross Дядя Миша
Короче, я понял в чем проблема. Альбатросс был прав, что вместо реального названия трека в сейв записывается нечто другое. А именно m_strCurrentMp3 каждый кадр принимает различные значения. Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва. Я решу проблему, как и хотел. Уберу эти проклятые строки и буду сохранять индекс трека, а на клиенте сопоставлять индекс и название. Всем спасибо

__________________
Никогда не поздно сделать мод под хл1

Сообщить модератору | | IP: Записан
Сообщение: 167150

Старое сообщение 25-06-2017 15:37
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21172
Нанёс повреждений: 356 ед.

Рейтинг



Цитата:
Sigurth писал:
Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва

ну мусор у тебя там, мусор. Вычисти его. Ты строчку не зануляешь видимо.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

Сообщить модератору | | IP: Записан
Сообщение: 167151

Старое сообщение 25-06-2017 15:43
-
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 33
Возраст: 21

Рейтинг



Дядя Миша Да я уже переделал под индексы. Так удобнее даже

__________________
Никогда не поздно сделать мод под хл1

Сообщить модератору | | IP: Записан
Сообщение: 167152

Старое сообщение 25-06-2017 17:01
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1323

Рейтинг



Кстати а как зарядить оружие меньше чем p->iMaxClip? Хочу сделать имитацию патронника, то есть сделать допустим МП5 обойму 31 патрон, если оружие полностью разряжено то заряжать 30 патронов, если не полностью то 31. Или вот эта базука, в ней должно заряжаться 12 патронов если полностью разряжена, 15 если нет (типа ракеты остаются в барабане): http://imgur.com/a/tmccL

Если к примеру написать так, то оно не работает, заряжает 31 патрон, а не на 1 меньше, хотя анимация проигрывается нужная:

code:
if (m_iClip <= 0) DefaultReload( MP5_MAX_CLIP-1, MP5_RELOAD_EMPTY, 2.0 ); else DefaultReload( MP5_MAX_CLIP, MP5_RELOAD, 1.5 );

Сообщить модератору | | IP: Записан
Сообщение: 167190

Старое сообщение 27-06-2017 16:24
+ За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 4343
Возраст: 26

Рейтинг



Chyvachok

C++ Source Code:
void CBasePlayerWeapon::ItemPostFrame( void )
{
    if ((m_fInReload) && ( m_pPlayer->m_flNextAttack <= UTIL_WeaponTimeBase() ) )
    {
        // complete the reload.
        int j = min( iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
        
        // Add them to the clip
        m_iClip += j;
        m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
        
        m_pPlayer->TabulateAmmo();
        
        m_fInReload = FALSE;
    }

Поэтому и не работает то, что ты указываешь при вызове DefaultReload. Заводи в базовом классе оружия новую переменную, например, m_iReloadingAmmo, задавай ей значение iClipSize в DefaultReload, а потом в ItemPostFrame подсовывай её вместо iMaxClip(). И сразу же по завершении перезарядки зануляй. Не знаю, нужно ли сохранять её в сейв, наверное нет. Можешь ещё воткнуть проверку, чтобы m_iReloadingAmmo не было больше iMaxClip().
Фишка в том, что DefaultReload только проверяет оружие на возможность перезарядиться, считая патроны. Сама перезарядка происходит в ItemPostFrame.

Добавлено 28-06-2017 в 00:51:

И да, наверное вальвовцы хотели что-то такое сделать с количеством патронов, но не дописали код, сделав проверку только в DefaultReload.

Добавлено 28-06-2017 в 01:03:

P.S. Я буду делать у себя нечто подобное, только с выбрасываемыми магазинами, как в Firearms. Если в магазине осталось меньше половины патронов - он выкидывается, если больше - сохраняется. Для отображения магазинов две цифры - одна означает полные магазины, другая неполные.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 167193

Старое сообщение 27-06-2017 19:03
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 1748

Рейтинг



Цитата:
XaeroX писал:
Ты что-то имеешь против Оксанки?

Ну можно тему отдельную запилить, в принципе

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 167197

Старое сообщение 27-06-2017 19:06
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1323

Рейтинг



Ku2zoff спасибо за подсказку, буду смотреть.

Кстати твой старый тутор по wallpuff-ам ( http://hlfx.ru/forum/showthread.php?s=&threadid=1151 ) мне очень пригодился как самая идея как вызывать эффекты на клиенте, плюс мне еще помог Gunship_Mark_II поделившись кодом своих эффектов что подобным образом вызываются через эвенты на клиенте, попробовал через них реализовать эффекты для плазмогана и кровяхи:

https://www.youtube.com/watch?v=4CcSTSE5K98
https://www.youtube.com/watch?v=HDFgYO2RYqA

Сообщить модератору | | IP: Записан
Сообщение: 167203

Старое сообщение 27-06-2017 22:30
+ За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 4343
Возраст: 26

Рейтинг



Цитата:
Chyvachok писал:
твой старый тутор по wallpuff-ам

Глянь сорцы Invasion (есть на гитхабе), там весьма годные партикли, лучше, чем в моём нубском туторе

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

Сообщить модератору | | IP: Записан
Сообщение: 167205

Старое сообщение 28-06-2017 04:03
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1323

Рейтинг



Ku2zoff а в чем вообще достоинство тех партиклей? Никогда не обращал внимание что они там вообще есть. Я вообще в эффектах не разбираюсь особо, те на видео это вообще первые эффекты что я в игру добавил.

Вообще я помню из инвазиона из новых эффектов разве что эффект попадания пуль в стены, ну или огонь из огнемета "поджарь себя", та же плазма супергана там просто спрайт.

Сообщить модератору | | IP: Записан
Сообщение: 167209

Старое сообщение 28-06-2017 09:46
+ За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 14:39. Новая тема    Ответить
Страницы (87): « Первая ... « 63 64 65 66 [67] 68 69 70 71 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2017

Рейтинг@Mail.ru