HLFX.Ru Forum Страницы (254): « Первая ... « 248 249 250 251 [252] 253 254 »
Показать все 3809 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено Aynekko 06-09-2023 в 10:36:

Никак не могу понять, как можно передать строчку текста на клиент. А точнее, прописать в keyvalue энтити текст и потом, зная индекс энтити, получить его на клиенте. Я хотел попробовать ALLOC_STRING и получить id строчки на клиенте, но у меня в клиенте нет такой функции.

__________________
Мой мод на Xash


Отправлено Дядя Миша 06-09-2023 в 18:48:

ALLOC_STRING только на сервере.
Только через MESSAGE_BEGIN и WRITE_STRING.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 07-09-2023 в 03:56:

Цитата:
Дядя Миша писал:
Может это какой-нибудь CalcBob чудит?

Кстати да, я боб отключил и это пропало.


Отправлено APAMk2 28-09-2023 в 06:36:

Вопросец, а можно-ли в MP при смене карты сохранить весь инвентарь игрока как это происходит в сингле? Бегло покопал форум и гуголь, ничего не нашёл, подозреваю просто где-то кусок из сингла в мультиплеер перенести, направьте по верному пути плз.


Отправлено Дядя Миша 28-09-2023 в 07:20:

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

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено APAMk2 28-09-2023 в 11:08:

Цитата:
Дядя Миша писал:
Какая-то глобальная структурка

Вроде game.h подходящее место, только теперь не знаю где остальной код дописывать, multiplay_gamerules.cpp похоже для этого не подходит, либо я не туда дописываю код (пробовал в CHalfLifeMultiplay::ChangeLevel и CHalfLifeMultiplay::Think), т.к. он не исполняется(ни один ALERT не сработал).
Структура:
C++ Source Code:
1
//game.h
2
 
3
extern struct PlayerChangeLevelSave
4
{
5
  int health = 100;
6
  int hev_charge = 0;
7
  int ammo_count[15] = {15};
8
  int have_weapons[23];
9
};


Сохранение и загрузка данных:
C++ Source Code:
1
//multiplay_gamerules.cpp
2
 
3
#include ......
4
 
5
PlayerChangeLevelSave player1, player2;
6
std::vector<PlayerChangeLevelSave> players = {player1, player2};
7
 
8
...
9
 
10
void CHalfLifeMultiplay::Think()
11
 
12
...
13
 
14
for (int i = 0; i <= 1; i++)
15
{
16
  CBaseEntity* pPlayer = UTIL_PlayerByIndex(i);
17
  players[i].health = pPlayer->pev->health;
18
  ALERT(at_console, "1Health:%i", pPlayer->pev->health);
19
  players[i].hev_charge = pPlayer->pev->armorvalue;
20
  ALERT(at_console, "1HEV:%i", pPlayer->pev->armorvalue);
21
  players[i].ammo_count[1] = pPlayer->ammo_9mm;
22
}
23
 
24
ChangeLevel(); //intermission is over
25
 
26
...
27
 
28
void CHalfLifeMultiplay::ChangeLevel()
29
...
30
 
31
CHANGE_LEVEL(szNextMap, NULL);
32
 
33
for (int i = 0; i <= 1; i++)
34
{
35
  CBaseEntity* pPlayer = UTIL_PlayerByIndex(i);
36
  pPlayer->pev->health = players[i].health;
37
  ALERT(at_console, "Health: %i", players[i].health);
38
  pPlayer->pev->armorvalue = players[i].hev_charge;
39
  ALERT(at_console, "HEV: %i", players[i].hev_charge);
40
  pPlayer->ammo_9mm = players[i].ammo_count[1];
41
}


Отправлено Дядя Миша 28-09-2023 в 14:34:

Сохранять надо перед вызовом ChangeLevel, тут всё правильно.
А восстанавливать в PutClientInServer чёт такое вообщем.
Ну и завести ещё переменную, что игрока ожидает инвентарь с прошлого уровня, сделать проверку на мультиплеер.
Там кажется есть PlayerSpawn или подобная функция. Вот в ней попробуй.

__________________
My Projects: download page

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

Цитата:

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


Отправлено APAMk2 28-09-2023 в 16:57:

Перенёс в PlayerSpawn загрузку параметров, ох и долго-же я себе голову ломал...
По какой-то причине игре немного насрать на тот ChangeLevel что в multiplay_gamerules.cpp, перенёс сохранение в trigger.cpp и всё заработало , спасибо за помощь, пошёл допиливать код в адекватное состояние.


Отправлено SNMetamorph 28-09-2023 в 18:58:

Цитата:
APAMk2 писал:
Вопросец, а можно-ли в MP при смене карты сохранить весь инвентарь игрока как это происходит в сингле? Бегло покопал форум и гуголь, ничего не нашёл, подозреваю просто где-то кусок из сингла в мультиплеер перенести, направьте по верному пути плз.

Ищи на гитхабе исходники gravgun мода, там это было реализовано как-то.

__________________
GoldSrc Monitor (https://gamebanana.com/mods/39429)
mdl-flip (gFlip analog) (https://gamebanana.com/tools/7299)
Xash3D Modding Discord (https://discord.com/invite/Ycgd9QqB9z)
PrimeXT (https://github.com/SNMetamorph/PrimeXT)


Отправлено Дядя Миша 28-09-2023 в 19:10:

Цитата:
APAMk2 писал:
немного насрать на тот ChangeLevel что в multiplay_gamerules.cpp, перенёс сохранение в trigger.cpp и всё заработало

Это очень просто. Тот чейнджлевел по задумке авторов должен был срабатывать после вызова функции NextLevel в triggers.cpp.
Однако эта функция не вызывается вообще ниоткуда

C++ Source Code:
1
/*
2
go to the next level for deathmatch
3
only called if a time or frag limit has expired
4
*/
5
void NextLevel( void )
6
{

Возможно это наследие из первокваки, которое забыли подключить. Что-то такое я там припоминаю.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 01-10-2023 в 18:43:

Цитата:
Crystallize писал:
Интересно почему у него точность только три знака, а потом идут нули

Цитата:
Дядя Миша писал:
Потому что он восстанавливается из usercmd.msec у которого весь лимит - 250 милисекунд, путём умножения на тысячу.

Это получается у игрока свой особый фреймтайм? Я в PreThink двигаю игрока через SetAbsVelocity, и двигаю рядом спрайт, в основном для отладки, и спрайт держится рядом только если использовать этот калечный pmove->frametime, иначе постепенно уползает вперед.


Отправлено Дядя Миша 01-10-2023 в 19:11:

Цитата:
Crystallize писал:
Это получается у игрока свой особый фреймтайм?

Именно так. И время для него идёт иначе.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 05-10-2023 в 08:20:

Как временно отключить гравитацию конкретно игроку? Чтобы он не дрейфовал вниз когда его передвигает SetAbsVelocity. Просто выставить мувтип fly не срабатывает.


Отправлено Дядя Миша 05-10-2023 в 12:10:

pev->gravity = 0.0f;

__________________
My Projects: download page

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

Цитата:

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


Отправлено APAMk2 08-10-2023 в 12:51:

Решил ради тестов попробовать портануть модельку солдата из Q2 под ХЛ, столкнулся конечно-же с проблемой вертексной анимации и перегоне её в скелетную, чёт вспомнил о QR и QW, покопал их подфорум, ничё по этому поводу внятного не нашёл, ну неужели ничего внятного за все эти годы никто не придумал и нужно по классике ручками костылять модель в Т-позу и потом клеить на неё скелет из ХЛ или и того хуже - запиливать код вертексной анимации?


Временная зона GMT. Текущее время 23:21. Страницы (254): « Первая ... « 248 249 250 251 [252] 253 254 »
Показать все 3809 сообщений этой темы на одной странице

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