HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Страницы (260): « Первая ... « 63 64 65 66 [67] 68 69 70 71 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

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

Рейтинг



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

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

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

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

Рейтинг



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

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

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


При спавне или ресторе переменная m_iMp3NeedsUpdate = 2;
А потом такой код в функции UpdateClientData
C++ Source Code:
1
if (m_iMp3NeedsUpdate)
2
{
3
  if (FStringNull(m_strCurrentMp3))
4
  {
5
    MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
6
    WRITE_BYTE(0); // turn off
7
    if (m_iMp3NeedsUpdate == 2)
8
      WRITE_COORD(0); // level 2 update: stops immediatly
9
    else
10
      WRITE_COORD(5.0); // update during game - slowly turn off
11
    MESSAGE_END();
12
    //ALERT(at_aiconsole, "MP3 player: turning off\n");
13
  }
14
  else
15
  {
16
    MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
17
    WRITE_BYTE(m_iMp3NeedsUpdate == 3 ? 2 : 1); // play
18
    WRITE_STRING(STRING(m_strCurrentMp3));
19
    MESSAGE_END();
20
    //ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3));
21
    // Sigurth
22
    if( m_iMp3NeedsUpdate == 3 )
23
      m_strCurrentMp3 = iStringNull;
24
 
25
  }
26
 
27
  m_iMp3NeedsUpdate = 0;
28
}


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

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

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

Старое сообщение 24-06-2017 19:24
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

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

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

Рейтинг



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

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 05:46
- За что?
a1batross
Житель форума

Дата регистрации: May 2016
Проживает: Москва
Сообщений: 516
Возраст: 26

Рейтинг



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

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

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

Старое сообщение 25-06-2017 09:33
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

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

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

Рейтинг



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

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

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

Старое сообщение 25-06-2017 14:37
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

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

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

Рейтинг



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

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

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

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

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

Рейтинг



Кстати а как зарядить оружие меньше чем 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 15:24
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Chyvachok

C++ Source Code:
1
void CBasePlayerWeapon::ItemPostFrame( void )
2
{
3
  if ((m_fInReload) && ( m_pPlayer->m_flNextAttack <= UTIL_WeaponTimeBase() ) )
4
  {
5
    // complete the reload.
6
    [b]int j = min( iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);[/b]
7
 
8
    // Add them to the clip
9
    m_iClip += j;
10
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
11
 
12
    m_pPlayer->TabulateAmmo();
13
 
14
    m_fInReload = FALSE;
15
  }

Поэтому и не работает то, что ты указываешь при вызове 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 18:03
- За что?
KiQ
Житель форума

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

Рейтинг



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

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

__________________
-Brain is dead-

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

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

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

Рейтинг



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 21:30
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



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

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

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

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

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

Рейтинг



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

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

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

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



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


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

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

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

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

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

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