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

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

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

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

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

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

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

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

 

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

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

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

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

Цитата

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

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

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

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


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

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

Местонахождение функции: 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, в противном случае мы будем считать, что вы согласны с этим.

Поддержка