HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как сделать больше патронов ?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



Half-Life как сделать больше патронов ?

Здравствуйте давненько меня не было, решил чучуть кодингом еще заняться.
у меня вопрос можно ли превысить лимит патронов не 255 а выше например 999 ? к пушке нужно больше.

__________________
илья

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

Старое сообщение 29-07-2020 08:12
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



илья2 в сообщении AmmoX надо поменять WRITE_BYTE и READ_BYTE на WRITE_SHORT и READ_SHORT соответственно. И где стоят лимиты на 255 поставить 999, например. Если нужно больше тысячи патронов, то ещё надо переписывать DrawHudNumber, или как эта функция называется, чтобы она могла рисовать четырёхзначные числа.

Отредактировано Ku2zoff 29-07-2020 в 08:49

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

Старое сообщение 29-07-2020 08:47
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



а обойму ? там максимум 100 можно

Добавлено 29-07-2020 в 13:22:

ну все у меня все получилось но про обойму вопрос еще открыт ни одной инфы не нашел про это.

__________________
илья

Отредактировано илья2 29-07-2020 в 09:33

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

Старое сообщение 29-07-2020 10:22
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



илья2 есть ещё одно сообщение CurWeapon. Там магазин передаётся как WRITE_BYTE, а читается на клиенте как WRITE_CHAR - просто опечатка, в предыдущей строке тоже WRITE_CHAR. Отсюда и проблема. Поменяй так же на WRITE/READ_SHORT.

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

Старое сообщение 29-07-2020 10:38
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



да есть щас поменяю

Добавлено 29-07-2020 в 14:22:

а что делать с READ_CHAR ?

Добавлено 29-07-2020 в 17:38:

так от балды спросить как исправить эту ошибку не ответе ничего страшного все равно мне еще один баг исправлять

error C2664: 'void (int,const struct edict_s *,unsigned short,float,float *,float *,float,float,int,int,int,int)'

__________________
илья

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

Старое сообщение 29-07-2020 14:38
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



илья2 ты полный текст ошибки приведи. По одной строке ничего не понятно. Судя по набору аргументов это вызов PLAYBACK_EVENT_FULL, а вот почему возникает ошибка - хз. Можешь весь лог компиляции приложить в аттач.

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

Старое сообщение 29-07-2020 15:50
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



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

__________________
илья

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

Старое сообщение 29-07-2020 15:56
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг




Вот для примера четырёхзначное число патронов в магазине и запасных патронов. Так что всё это решаемо, нужно лишь внимательно читать оригиналный код и вносить необходимые изменения. Тут у меня единственная проблема - не умещается сама иконка патронов, когда оба числа четырёхзначные, я сильно разбираться не стал. Или что-то упустил, или просто координаты спрайтов такие, что она не влазит в экран.

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

Старое сообщение 01-08-2020 21:46
- За что?
Eljeyna
Новичок

Группа: Неопытный
Дата регистрации: Aug 2020
Проживает: Система Amadeus
Сообщений: 5
Возраст: 23

Рейтинг



В player.cpp в переменной gmsgAmmoX надо "2" заменить на "4", чтобы читать сообщения в 4 байта. В принципе, этого достаточно с вышеуказанными правками на чтение/отправку short'ов.

__________________
El. Psy. Kongroo.

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

Старое сообщение 10-08-2020 06:51
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



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

__________________
илья

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

Старое сообщение 21-09-2020 13:05
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
илья2 писал:
не поделишься секретом как у тебя так получилось как на видео

Цитата:
Eljeyna писал:
в переменной gmsgAmmoX надо "2" заменить на "4", чтобы читать сообщения в 4 байта. В принципе, этого достаточно с вышеуказанными правками на чтение/отправку short'ов.

Все мессаги, передающие количество патронов, нужно переделать с байтов на шорты. Ответки на клиенте тоже. Поправить числа, устанавливающие лимит (с 255 или 254 на нужное максимальное количество) + увеличить количество байт, если оно указано явно, а не как -1. Ну и финальный штрих - добавить ещё один разряд чисел в функцию DrawHudNumber, чтобы могли рисоваться четырёхзначные значения, если надо.
С последним я немного запоролся, т.к. у меня не видно значка патронов, когда и в магазине и в запасе четырёхзначное число. Разбираться не стал, т.к. писал код на скорую руку только для видео.

Отредактировано Ku2zoff 21-09-2020 в 16:45

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

Старое сообщение 21-09-2020 16:43
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



слушай а как от этой ошибки избавиться она появляется при изменении байтов на шорт:

// send Selected Weapon Message to our client
MESSAGE_BEGIN( MSG_ONE, gmsgCurWeapon, NULL, pev );
WRITE_SHORT<----был BYTE(0);
WRITE_SHORT(0);
WRITE_SHORT(0);
MESSAGE_END();

// Tell Ammo Hud that the player is dead
MESSAGE_BEGIN( MSG_ONE, gmsgCurWeapon, NULL, pev );
WRITE_SHORT(0);
WRITE_SHORT(0XFF);
WRITE_SHORT(0xFF);
MESSAGE_END();

[ Вложение ]
Безымный.png

__________________
илья

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

Старое сообщение 23-09-2020 14:31
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
илья2 писал:
как от этой ошибки избавиться она появляется при изменении байтов на шорт

Надо в player.cpp заменить
C++ Source Code:
gmsgCurWeapon = REG_USER_MSG("CurWeapon", 3);

на
C++ Source Code:
gmsgCurWeapon = REG_USER_MSG("CurWeapon", 6);

Ты же по факту увеличил размер мессаги в два раза. А клиент об этом не знает.

Добавлено 23-09-2020 в 22:51:

Код чтения в client.dll тоже надо изменить на шорты.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

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

Старое сообщение 23-09-2020 15:51
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
XaeroX писал:
по факту увеличил размер мессаги в два раза. А клиент об этом не знает.

илья2 тебе движок об этом сообщает при вылете, там написано сколько байт ожидалось для принятия и сколько по факту пришло. Если размер мессаги заранее неизвестен (например, шлёшь текст или какой-то всегда разный объём данных), размер мессаги нужно указывать как -1, тогда движок сам будет считать каждый раз объём и слать его в заголовке мессаги. Вроде как-то так. Но по правилам хорошего тона и для экономии трафика, если размер заранее известен, его лучше точно указывать.
Собственно, больше чем шорт для передачи каких-то индексов и значений использовать нет смысла. Диапазон значений от -32768 до 32768 позволит вместить нужное число. Изначально ограничение в 255 патронов обусловлено использованием байтов для передачи, то есть диапазоном значений от 0 до 255.

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

Старое сообщение 23-09-2020 18:25
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 11:16. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как сделать больше патронов ?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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