Здравствуйте давненько меня не было, решил чучуть кодингом еще заняться.
у меня вопрос можно ли превысить лимит патронов не 255 а выше например 999 ? к пушке нужно больше.
илья2 в сообщении AmmoX надо поменять WRITE_BYTE и READ_BYTE на WRITE_SHORT и READ_SHORT соответственно. И где стоят лимиты на 255 поставить 999, например. Если нужно больше тысячи патронов, то ещё надо переписывать DrawHudNumber, или как эта функция называется, чтобы она могла рисовать четырёхзначные числа.
илья2 есть ещё одно сообщение CurWeapon. Там магазин передаётся как WRITE_BYTE, а читается на клиенте как WRITE_CHAR - просто опечатка, в предыдущей строке тоже WRITE_CHAR. Отсюда и проблема. Поменяй так же на WRITE/READ_SHORT.
илья2 ты полный текст ошибки приведи. По одной строке ничего не понятно. Судя по набору аргументов это вызов PLAYBACK_EVENT_FULL, а вот почему возникает ошибка - хз. Можешь весь лог компиляции приложить в аттач.
да я уже исправил её подзабыл малек как исправлять сейчас норм. вот что то с обоймой у меня не получается никак сделал как просил все равно не работает с глюками камито работает и все.
Вот для примера четырёхзначное число патронов в магазине и запасных патронов. Так что всё это решаемо, нужно лишь внимательно читать оригиналный код и вносить необходимые изменения. Тут у меня единственная проблема - не умещается сама иконка патронов, когда оба числа четырёхзначные, я сильно разбираться не стал. Или что-то упустил, или просто координаты спрайтов такие, что она не влазит в экран.
В player.cpp в переменной gmsgAmmoX надо "2" заменить на "4", чтобы читать сообщения в 4 байта. В принципе, этого достаточно с вышеуказанными правками на чтение/отправку short'ов.
привет Ku2zoff я знаю меня долго не было долго не отвечал но не поделишься секретом как у тебя так получилось как на видео ?
решил я вернутся к прошлой теме
илья2 писал: не поделишься секретом как у тебя так получилось как на видео
Цитата:
Eljeyna писал: в переменной gmsgAmmoX надо "2" заменить на "4", чтобы читать сообщения в 4 байта. В принципе, этого достаточно с вышеуказанными правками на чтение/отправку short'ов.
Все мессаги, передающие количество патронов, нужно переделать с байтов на шорты. Ответки на клиенте тоже. Поправить числа, устанавливающие лимит (с 255 или 254 на нужное максимальное количество) + увеличить количество байт, если оно указано явно, а не как -1. Ну и финальный штрих - добавить ещё один разряд чисел в функцию DrawHudNumber, чтобы могли рисоваться четырёхзначные значения, если надо.
С последним я немного запоролся, т.к. у меня не видно значка патронов, когда и в магазине и в запасе четырёхзначное число. Разбираться не стал, т.к. писал код на скорую руку только для видео.
// 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 писал: по факту увеличил размер мессаги в два раза. А клиент об этом не знает.
илья2 тебе движок об этом сообщает при вылете, там написано сколько байт ожидалось для принятия и сколько по факту пришло. Если размер мессаги заранее неизвестен (например, шлёшь текст или какой-то всегда разный объём данных), размер мессаги нужно указывать как -1, тогда движок сам будет считать каждый раз объём и слать его в заголовке мессаги. Вроде как-то так. Но по правилам хорошего тона и для экономии трафика, если размер заранее известен, его лучше точно указывать.
Собственно, больше чем шорт для передачи каких-то индексов и значений использовать нет смысла. Диапазон значений от -32768 до 32768 позволит вместить нужное число. Изначально ограничение в 255 патронов обусловлено использованием байтов для передачи, то есть диапазоном значений от 0 до 255.