HLFX.Ru Forum
Показать все 14 сообщений этой темы на одной странице

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=5540)


Отправлено илья2 29-07-2020 в 08:12:

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

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

__________________
илья


Отправлено Ku2zoff 29-07-2020 в 08:47:

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


Отправлено илья2 29-07-2020 в 10:22:

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

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

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

__________________
илья


Отправлено Ku2zoff 29-07-2020 в 10:38:

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


Отправлено илья2 29-07-2020 в 14:38:

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

Добавлено 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)'

__________________
илья


Отправлено Ku2zoff 29-07-2020 в 15:50:

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


Отправлено илья2 29-07-2020 в 15:56:

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

__________________
илья


Отправлено Ku2zoff 01-08-2020 в 21:46:


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


Отправлено Eljeyna 10-08-2020 в 06:51:

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

__________________
El. Psy. Kongroo.


Отправлено илья2 21-09-2020 в 13:05:

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

__________________
илья


Отправлено Ku2zoff 21-09-2020 в 16:43:

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

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

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


Отправлено илья2 23-09-2020 в 14:31:

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

// 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();

__________________
илья


Отправлено XaeroX 23-09-2020 в 15:51:

Цитата:
илья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 тоже надо изменить на шорты.

__________________

xaerox on Vivino


Отправлено Ku2zoff 23-09-2020 в 18:25:

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

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


Временная зона GMT. Текущее время 15:47.
Показать все 14 сообщений этой темы на одной странице

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