Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
123new

[Enscript] Функции в коде игры (описание, нахождение, примеры)

Рекомендованные сообщения

Темы, связанные с данным материалом:

 

О чем данная тема:

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

Поиск по форуму и поисковики интернета помогут остальным найти интересующую нас информацию в данной теме и по интересующему вас вопросу 😉

Обязательная форма для всех сообщений при публикации в этой теме:

Цитата

Местонахождение функции: {пишем местонахождение функции в оригинальном коде игры от папки scripts}
Базовый класс:  {пишем название Class-а в оригинальном коде игры}
Функция, массив, переменная: {пишем название функции, либо полезного массива\переменной в оригинальном коде игры}
Входные данные: {указываем какие переменные и их тип, если имеются}
Возвращаемые данные: {указываем их тип и количество, если имеются}
Что делает данная функция: {описываем, что именно делает известная вам функция}
Где работает данная функция: {описываем, работает ли функция на стороне только сервера, только клиента игры или и там и там}
Пример использования(по желанию):{показываем по желанию пример работы с данной функцией куском кода, заключенным в специальный тег вставки кода code сообщения форума}

Остальные сообщения, написанные не по форме, будут расцениваться именно как флуд в теме, и наказываться соответствующе по правилам форума (о чем прошу администрацию форума приглядывать)

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



Буду первым (пример)

Местонахождение функции: 4_World\Entities\ManBase\PlayerBase.c
Базовый класс:  PlayerBase
Функцияvoid OnConnect()
Входные данные: отсутствуют
Возвращаемые данные: отсутствуют
Что делает данная функция: Выполняется в случае, если игрок присоединился к серверу игры
Где работает данная функция: только на стороне сервера

Местонахождение функции: 4_World\Entities\ManBase\PlayerBase.c
Базовый класс:  PlayerBase
Функцияvoid OnDisconnect()
Входные данные: отсутствуют
Возвращаемые данные: отсутствуют
Что делает данная функция: Выполняется в случае, если игрок отключился от сервера игры
Где работает данная функция: только на стороне сервера

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Местонахождение функции: 3_Game\Client\SyncPlayerList.c
Базовый класс:  SyncPlayerList
Массив: ref array<ref SyncPlayer> m_PlayerList;
Входные данные: не требуются
Возвращаемые данные: Массив игроков класса SyncPlayer, содержащий данные о их никах и Steam64ID
Что делает данная функцияХранит массив актуальный список игроков, содержащий такие сведения, как ник игрока и Steam64ID игрока
Где работает данная функция: клиент и сервер игры, не ниже радела 3_Game

Пример вызова-использования из класса 5_Game MissionGamePlay:

ref array<ref SyncPlayer> PlayersInfoListServer = ClientData.m_PlayerList.m_PlayerList;
foreach( ref SyncPlayer player : PlayersInfoListServer )
{
	string m_UID = player.m_UID;
	string m_PlayerName = player.m_PlayerName;
	Print("Is detected: Steam64ID player: " + m_UID + " Name: " + m_PlayerName);
}

Местонахождение функции: scripts\3_Game\Client\SyncData.c
Базовый класс:  ClientDataSyncPlayerList
Массив: static ref array<Man>            m_PlayerBaseList = new array<Man>;
Входные данные: не требуются
Возвращаемые данные: Массив игроков класса Man, содержащий игроков в классе Man на сервере игры
Что делает данная функция: Массив обновляется при синхронизации данных между сервером и клиентом и сохраняет на клиенте игры актуальный список игроков сервера в классе Man.
Где работает данная функция: клиент игры, не ниже радела 3_Game

Пример вызова-использования из класса 5_Game MissionGamePlay:

array<Man> PlayerBasesListServer = ClientData.m_PlayerBaseList;
foreach(Man player : PlayerBasesListServer )
{
	Print("Is detected: player Object in class Man: " + player.ToString());
}

Местонахождение функции: scripts\3_Game\Client\SyncData.c
Базовый класс:  ClientDataSyncPlayerList
Массив: static ref SyncPlayerList        m_PlayerList;
Входные данные: не требуются
Возвращаемые данные: Массив игроков класса SyncPlayerList, содержащий информацию об игроках в классе SyncPlayer на сервере игры
Что делает данная функция: Массив обновляется при синхронизации данных между сервером и клиентом и сохраняет на клиенте игры актуальный список игроков сервера в классе SyncPlayerList.
Где работает данная функция: клиент игры, не ниже радела 3_Game

Пример вызова-использования из класса 5_Game MissionGamePlay:

ref array<ref SyncPlayer> PlayersInfoListServer = ClientData.m_PlayerList.m_PlayerList; foreach( ref SyncPlayer player : PlayersInfoListServer ) { string m_UID = player.m_UID; string m_PlayerName = player.m_PlayerName; Print("Is detected: Steam64ID player: " + m_UID + " Name: " + m_PlayerName); }

ref array<ref SyncPlayer> PlayersInfoListServer = ClientData.m_PlayerList.m_PlayerList;
foreach( ref SyncPlayer player : PlayersInfoListServer )
{
	string m_UID = player.m_UID;
	string m_PlayerName = player.m_PlayerName;
	Print("Is detected: Steam64ID player: " + m_UID + " Name: " + m_PlayerName);
}
Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Местонахождение функции: scripts\3_Game\Enities\Object.c
Входные данные: string zoneName, string healthType
Возвращаемые данные: Максимально возможное значение Health элемента класса типа float
Что делает данная функция: Возвращает значение Health, установленное в конфигурации класса, при необходимости можно указать, где именно искать значение
Где работает данная функция: не ниже радела 3_Game

Пример вызова-использования: из класса 4_World

EntityAI pants = player.FindAttachmentBySlotName("Legs");
ItemBase item_pants = Class.Cast(pants);
item_pants.SetHealth("","",item_pants.GetMaxHealth("","Health"));

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Местонахождение функции: scripts\3_Game\ce\centraleconomy.c
Возвращаемые данные: Максимально возможное значение varQuantityMax элемента класса типа float
Что делает данная функция: Возвращает значение varQuantityMax, установленное в конфигурации класса
Где работает данная функция: не ниже радела 3_Game

Пример вызова-использования: из класса 4_World

ItemBase item = Class.Cast(ingredients[0]);
int quantity_max = item.GetQuantityMax();

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Функция: RaycastRVProxy
Местонахождение функции: 3_Game\Global\DayZPhysics.c

 

Входные параметры: RaycastRVParams in - Необходимо создание экземпляра класса RaycastRVParams  и указание параметров в нем перед передачей в функцию

 vector vBeg - координаты начала луча
 vector vEnd - координаты конца луча
 Object pIgnore - обьект который будет проигнорирован если на него натолкнется луч
 float fRadius - диаметр луча

RaycastRVParams	m_RayCastInput = new RaycastRVParams(vBeg, vEnd, pIgnore, fRadius);

 

Дополнительные параметры: так же относятся к экземпляру RaycastRVParams - задаются дополнительно напрямую в переменную класса перед передачей в функцию
Object with; // если указан - то этот обьект будет так же проигнорирован

m_RayCastInput.with = player;

 

Возвращаемые данные: Данные помещаются в заранее созданный массив экземпляров класса RaycastRVResult и извлекаются  обычным способом

array<ref RaycastRVResult> m_RayCastResults = new array<ref RaycastRVResult>;


Что делает данная функция: Возвращает ссылку объект на который натолкнулся луч (игнорируя обьекты ссылки на которые помещены в переменные pIgnore и with экземпляра класса RaycastRVParams
Где работает данная функция: не ниже радела 3_Game
 

Пример вызова-использования: из класса 4_World

	
	vector m_RayStart = "2000 52 2000"
	vector m_RayEnd = "2000 42 2000"
	Object ignoredObject; //В эту переменную помещаем ссылку на обьект который должен быть проигнорирован

	RaycastRVParams	m_RayCastInput = new RaycastRVParams(m_RayStart, m_RayEnd, ignoredObject, rayradius);
	m_RayCastInput.with = player; //переменная player в данном случае содержит ссылку на обьект игрока который так же должен быть проигнорирован
	array<ref RaycastRVResult> m_RayCastResults = new array<ref RaycastRVResult>;

	m_RayCastResult = DayZPhysics.RaycastRVProxy(m_RayCastInput, m_RayCastResults);

Извлечение результатов:

Object resultObject = m_RayCastResults[0].obj; //Получение обьекта с которым столкнулся луч
Object resultObjectParent = m_RayCastResults[0].parent; //Получение родительского обьекта для обьекта с которым столкнулся луч

Обьяснение:
Например луч столкнулся с дверью авто - m_RayCastResults[0].obj содержи ссылку класса Object на обьект двери
Если дверь держит в руках игрок, то _RayCastResults[0].parent будет содержать ссылку класса Object на обьект игрока, а если дверь прикреплена к машине, то на обьект машины.

P.S. Некоторые параметры RaycastRVParams и m_RayCastResults я опустил за ненадобностью, тк при необходимости Вы найдете описания параметров в файле 3_Game\Global\DayZPhysics.c
 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.