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

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

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

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

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

DAYZ enScript (вопросы, ответы)

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

123new TextOut вывод на канвас - но его тут нет. Для вывода текста в 3D окно делается своя функция, аналогичная...

Касательно дайза - создать мод, с layout и выводить текст в него(при желании в аргументах, можно и позиционировать и т.д. и т.п.).

Если с сервера надо инициировать вывод текста - отображение у игроков сообщения - все точно так же, но надо будет RPC юзать,чтобы на клиенте сработал вывод.

P.S. Теоретически еще можно к объекту прикрепить(приаттачить) другой объект, содержащий в себе спрайт, где вместо текстуры будет текст

*Это к вопросу создания никнеймов к примеру над игроками, но так чтобы они отображались в физ мире вместе с объектом-игроком. т.е. - зашел игрок за стену и игрока не видно и никнейма над башкой. (Но надо еще будет учесть - удаленность объекта для масштабирования спрайта).

** Тут не MMORPG так что по спрайтам это 100% лишнее, и к тому же уязвимость в плане скрытности(когда игрок в травке спрятался). А для сейф зоны, 100% хватит и первого варианта.

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

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


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



МЕня больше интерисуют стандартные функции

Например анимационная камера при входе игрока, смерти игрока, потипу того что я на 062 делал на sqf

Ну и свободная камера админу

Уверен, что можно не ковыряя клиента это делать вызовами с сервера...

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


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

Не подскажете как вызвать функцию нажатий клавиш во время игры? По всякому пробовал, но в игре не работает.

например:

override void OnKeyPress( int key )
	{
		super.OnKeyPress(key);

		switch( key )
		{
			case KeyCode.KC_B:
			{
				if ( m_bToggle )
				{
					m_bToggle = false;
				}
				else
				{
					m_bToggle = true;
				}
			}
		}
	}

 

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

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


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

arxlex 
Класс MissionGameplay и MissionBase только для клиента

Потому с сервера никак

Во всяком случае пока не нашли вариантов

 

 

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


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

Нашел интересность в gameplay.c

 

/**
\brief Class for sending RPC over network
	@code
		// example sending
		void Send()
		{
			ScriptRPC rpc = new ScriptRPC();
	
			rpc.Write(645);
			rpc.Write("hello");
			
			array<float> farray = {1.2, 5.6, 8.1};
			rpc.Write(farray);
	
			rpc.Send(m_Player, ERPCs.RPC_TEST, true, m_Player.GetIdentity());
		}

		// example receive
		void OnRPC(ParamsReadContext ctx)
		{
			int num;
			string text;
			array<float> farray;

			ctx.Read(num);
			ctx.Read(text);
			ctx.Read(farray);
		}
	@endcode
*/

 

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

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


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

BorizzK да с этим давно все понятно, как и куда и кому и как обрабатывать. там примитивно.

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


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

123new 
По поводу получения всех обьектов и его последующего разбора

 

  \brief Returns list of all objects in circle "radius" around position "pos"
	@param pos
	@param radius
	@param objects output array
	*/
	proto native void		GetObjectsAtPosition(vector pos, float radius, out array<Object> objects, out array<CargoBase> proxyCargos);
      
	/**
  \brief Returns list of all objects in sphere "radius" around position "pos"
	@param pos
	@param radius
	@param objects output array
	*/
	proto native void		GetObjectsAtPosition3D(vector pos, float radius, out array<Object> objects, out array<CargoBase> proxyCargos);

 

Вот накропал функцию выводящую в лог кол-во объектов, имена обьектов, их класс и координаты в радиусе

 

	void LogNearestObjects(vector pos, int radius)
	{
		array<Object> nearest_objects = new array<Object>;
		array<CargoBase> proxy_cargos = new array<CargoBase>;
		Object object;
		string className;
		GetGame().GetObjectsAtPosition ( pos, radius, nearest_objects, proxy_cargos ); 
		Print("::: init_mod.c ::: CheckNearestObjects (int radius) ::: Radius: " + radius.ToString() + ", nearest_objects: " + nearest_objects.Count().ToString());
		//nearest_objects.Debug();
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
			object = nearest_objects.Get(i);
			className = object.GetType();
			if ( object )
			{
				Print( "LogNearestObjects: " + i.ToString() + " => " + object.ToString() + " => Type: " + className + " => Position: " + object.GetPosition().ToString());
			}
		}
	}

 

вывод в лог такой

SCRIPT       : LogNearestObjects: 54017 => BushHard<5329e950> => Type: BushHard => Position: <5879.405762, 335.833923, 6919.312012>
SCRIPT       : LogNearestObjects: 54018 => Object<1a79e810> => Type:  => Position: <5876.990723, 337.467316, 6988.487305>
SCRIPT       : LogNearestObjects: 54019 => TreeHard<532a5800> => Type: TreeHard => Position: <5865.421875, 333.517792, 6963.860840>
SCRIPT       : LogNearestObjects: 54020 => TreeHard<532a5c50> => Type: TreeHard => Position: <5873.719238, 332.266357, 6964.686035>
S

 

Любопытно, что за обьект такой  Object<1a79e810> по о которому GetType() не возвращает его тип?

 

Можно в цикл добавить сверку типа и в зависимости от типа делать что необходимо

 

массив еще можно вывести в script.log с помощью nearest_objects.Debug();

 

Вывод будет такой:

SCRIPT       : string s =    'Array count: 21986'
SCRIPT       : string s =    '[0] => TreeHard<45d4e4e0>'
SCRIPT       : string s =    '[1] => BushHard_b_prunusSpinosa_1s<45d4e7c0>'
SCRIPT       : string s =    '[2] => TreeHard<45d4eef0>'
SCRIPT       : string s =    '[3] => Object<d7de290>'
SCRIPT       : string s =    '[4] => Object<d7deef0>'
SCRIPT       : string s =    '[5] => Object<d7de970>'
SCRIPT       : string s =    '[6] => Object<d7de6b0>'
SCRIPT       : string s =    '[7] => TreeHard<45d4f790>'
SCRIPT       : string s =    '[8] => Object<d7df050>'
SCRIPT       : string s =    '[9] => Object<d7df1b0>'
SCRIPT       : string s =    '[10] => Object<d7ded90>'
SCRIPT       : string s =    '[11] => Object<d7dd210>'
SCRIPT       : string s =    '[12] => Object<d7dd4d0>'
SCRIPT       : string s =    '[13] => BushHard_b_prunusSpinosa_1s<471f77c0>'
итп

 

 

 

И есть еще вопросы, на которые ответов пока не нахожу

 

1. Возможно ли собрать в массив только обьекты типа игрок, или типа автомобиль - те определенного класса...

 

2. Чем отличаются

  ref array<Object> nearest_objects = new array<Object>;

и

  array<Object> nearest_objects = new array<Object>;

 

3. И как можно обьявить переменную, что бы она была доступна во всех функциях любого класса на стороне сервера - те глобальную...

 

 

 

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

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


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

Попробовал вчера собрать мод. Для сборки использовал скрипт DebugMonitor.c из 5_Mission/GUI. Конечно в самом начале класса добавил modded и потом запаковал ее в PBO. Но при запуске сервака вылазит ошибка что Не удается скомпилировать скрипт 'Mission', что 'Variable Widget is private'. Пробовал изменить на public, protected и даже убрать, не получилось. Можете в чем может быть проблема?

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


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

arxlex 

 

А что планировалось делать скриптом?

Выложи код сюда

 

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


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

BorizzK ну вообще я имел ввиду по всей карте. Хотяя.... если тока брать центр карты и по радиусу на диапазон всей карты сканить, но это как-то тупо, что ли.

Выбирать конкретные объекты (авто например) так поиском по каким-либо typename и записывать в отдельный массив или лог.
По поводу "глобальных серверных" вроде говорил, кто мешает в тойже proto.c или game.c вписать свои переменные в начале? так они глобальнее глобальных будут, я думаю, во всех скриптах твоих, если я, конечно, понимаю назначение "глобальности" твое.

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


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

123new 

Про поиск обьектов

Других вариантов нет

Ну вот нет и все

Проверил

На производительность сервера вообще не влияет, особенно если все в лог не вываливать, тк оно не по карте шарит, а в своем внутреннем массиве со всеми обьектами шарит, в памяти.

 

Глобальная переменная в моем понимании, это переменная доступная для чтения и изменения во всех классах и функциях на стороне сервера в данном случае

 

Про proto.c и тп

 

Хочу минимизировать вмешательстао в scripts

 

 

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

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


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

BorizzK ну а других способов, мне кажется, нет, кроме как вмешаться в scripts. Хотя, вариант, сделать класс свой, вписать в него переменную, и попросту к ней обращаться.
А что мешает тебе просто добавить функцию или переменную в самом начале init.c миссии и просто юзать ее везде? вроде бы проблем пока не наблюдал с этим. Единственное но с миссией, которое беспокоит - пока изучаю как перезаписать какие-то родные функции помимо missionserver из инита миссии на свои без каких-либо модов и т.п. Перезапись в виде мода в том же батлрояле реализована, вот думаю, что реально вынести нужное отдельно.

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


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

123new надо эксперементировать

Скорее всего переопределить класс в init.c

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

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


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

BorizzK ну да, что-то в этом роде, только пока не понял как))

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BorizzK сказал:

arxlex 

 

А что планировалось делать скриптом?

Выложи код сюда

 

Вообще то по совету NoNameUltima планировалось создать мод, и для теста взялся за ДебагМонитор и хотел заменить стандартные значения на свои

void Init()
	{
		m_pNamesListboxWidget.AddItem("Жизнь:", NULL, 0);
		m_pValuesListboxWidget.AddItem("", NULL, 0);

		m_pNamesListboxWidget.AddItem("Кровь:", NULL, 0);
		m_pValuesListboxWidget.AddItem("", NULL, 0);
		
		m_pNamesListboxWidget.AddItem("Игроков на сервере:", NULL, 0);
		m_pValuesListboxWidget.AddItem("", NULL, 0);
		
		m_pNamesListboxWidget.AddItem("Позиция:", NULL, 0);
		m_pValuesListboxWidget.AddItem("", NULL, 0);
  
        ... и тд
	
		m_WidgetRoot.Show(true);
	}

 

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


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

arxlex 

if GUI (что-то вроде в помощь)

Если скрипт исполняется на сервере, то нихрена не получится

pbo надо на клиента пихать

m_WidgetRoot где определяется? в каком классе?

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, BorizzK сказал:

arxlex 

if GUI (что-то вроде в помощь)

Если скрипт исполняется на сервере, то нихрена не получится

pbo надо на клиента пихать

m_WidgetRoot где определяется? в каком классе?

 

Вот скрин ошибки

asdasda222.png.3c109921dfcd97132b206510aae42d7c.png

 

Вот сам мод

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

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

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


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

Из любопытного, не изучал кто

proto native void	AdminLog(string text);
GetGame().AdminLog("myLog")

комманду? Работает?

arxlex коротко об ошибке - переменная, указанная в указанном файле и на такой то строке используется, но не объявлена. Т.е. сервер не знает что это за переменная и не может запуститься.

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

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


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

Может кто подскажет, как указать дату и время, когда убили ?

Хочется записывать дату и время когда произошло убийство, что бы потом выводить это на сайте кто, кого убил и во сколько. Но вот ни как не могу понять, как дату и время сервера взять :(

 

Случайно не GetGame().GetTime() ?

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

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, DeDmouSE сказал:

вот ни как не могу понять, как дату и время сервера взять :(

GetHourMinuteSecond

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


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

Насколько я понимаю, из самой миссии сервера нельзя пока перезаписывать функции игры из классов, отличных от missionserver. Или я не прав?

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


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

123new Нельзя

Только свою pbo городить (с дополнениями и переопределениями ) и запускать сервер с модом

 

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


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

А знает кто-нибудь разницу между, например,
 

player.GetStatStomachWater()

и

player.GetStatWater()

или

player.GetStatStomachEnergy()

и

player.GetStatEnergy()

и что есть что из параметров:

	player.GetStatEnergy().Get()
	player.GetStatWater().Get()
	player.GetStatStomachWater().Get()
	player.GetStatStomachEnergy().Get()
	player.GetStatStomachSolid().Get()
	player.GetStatDiet().Get()
	player.GetStatTremor().Get()
	player.GetStatHeatComfort().Get()
	player.GetStatTemperature().Get()
	player.GetStatWet().Get()
	player.GetStatStamina().Get()
	player.GetStatHeatIsolation().Get()
	player.GetStatBloodType().Get()

Часть из параметров назвал выше, по названию похожи, не совсем понимаю что из этого что. Часть (например, 'player.GetStatHeatIsolation().Get()' ) не понятны впринципе что есть.
Из не названных наверное только стата шока и анкурсии, которые как понимаю пока не активны.

Ну и коль уж по статусам пошел, вопрос, как получать-задавать статус кровотека персонажа?

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: RedWoodGamer
      Ищу мододела который напишет мод на поиск предметов в ванильной фурнитуре с возможностью конфигурации лутабельных объектов и лута внутри них, а так-же КД на лутаемый объект (Простыми словами чтобы нельзя было лутать один и тот же объект двум игрокам одновременно, если один залутал, включается определённый таймер и второй игрок может залутать его через прошедшее время, либо же завязать это время на рестарт сервера.)
      Бюджет есть, оценивайте свою работу и предлагайте цену, кто не хочет в комментариях вот Discord : RedWood#6323
    • Автор: CubeIn
      Приветствую друзья, возникла неприятная ошибка.
      Подписал все ключи через DS Utils, вставил ключ в северную часть, но все равно при заходе на сервер пишет данную ошибку.
      Client contains PBO which is not part of server data
       
    • Автор: CubeIn
      Есть ли у кого ни будь шаблон или инструкция как создать свой шеврон?
      Нашел видео от Фидова, но ссылка на шаблон не действительна

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • Наш выбор

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

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

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