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

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

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

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

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

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

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

BorizzK

57 минут назад, BorizzK сказал:

либо игроку переменную придумать - типпа player.msgesended = true; - но это надо playerbase корячить

а ты я смотрю реально не ищешь легких путей?

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


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

NoNameUltima Я забавляюсь
Сделал массив
В каждом экземпляре свой

Чем не путь

 

Легкие пути это к индусам

 

Если есть идеи, c интересом выслушаю ))

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

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


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

NoNameUltima , он забавляется, а у меня бошка лопается...:geek: Из простецкого скрипта, мы уже тут цельную "комплексную систему обнаружения и уничтожения" слепили... BorizzK , слепил, я я вдуплить пытаюсь, чевой-то и как оно фунциклирувает ваще?! "Зачем?" - уже не имеет значения в принципе, ибо "Шоб було!":joy:

NoNameUltima , будьте так добры, милостивый государь, закиньте ему задачку, шоб он "завис" недельки на три, а?.. 

:joy::biggrin::upsidedown:

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


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

Сделал массив

Да ты и в массиве лекгих путей не ищешь...

вместо ref TStringArray m_uids = {}; добавил хрен знает что.

дистанцию промерял от игрока до зоны, - в зоне - проверил - есть ли в массиве - m_uids.Find - нету - сообщение+добавление в массив.

Вышел из зоны - а в массиве есть - сообщение о выходе и m_uids.Remove...

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


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

NoNameUltima Ток вот для каждого экземпляра "зоны" не создается уникальный экземпляр m_uids

 

в классе обьявил

в конструкторе проинициализировал

во всех экземплярах одни и те же данные

 

а вот с map все норм

 

как так?

 

ну и про map

1 значение индекса в массиве map я планирую использовать для хранения времени (приблизительного) нахождения игрока в зоне

2 индексом UID использовать не хочу по причине (я проверял и это логично) - текстовое поле с UID жрет в неск раз больше памяти нежели указатель на экземпляр перса

UID это 17 байт - указатель на перса 2 байта

3 использование UID в индексе понижает производительность

4 использование UID в индексе в случае перезахода игрока после смерти в зоне, соответствует новому живому и в случае входа в зону проверив массив мы найдем там UID и сообщение не отправим, в случае же указателя на перса элемент обнуляется - он хоть и есть - но он не занимает места в памяти (хотя вроде бы должен самовыпилиться - это надо дополнительно проверить)

 

я спецом эмулировал заполнение массива и его проверку и мерял-мерял-мерял

 

ЗЫ можно конечно накатать "сборщик мусора" - но это еще нагрузка на сервер

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

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


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

BorizzK Я не знаю что у тебя там за скрипт такой уникальный, если НЕ статический массив внутри класса у тебя одинаковым получается..

По остальному - делается это не массивом map(можно конечно и им, но...), а создается класс, для хранения данных

class MyData

{

variables...

void MyData(...)

{...}

}

А в классе объявляется массив классов MyData

ref array<ref MyData> m_MyData = new array<ref MyData>;

И заполняется так как надо

m_MyData.Insert(new MyData(...));

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


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

2 индексом UID использовать не хочу по причине (я проверял и это логично) - текстовое поле с UID жрет в неск раз больше памяти нежели указатель на экземпляр перса

Забавно.

UID использовать не хочу, но в PlayerBase упорно добавлять ничего не буду. Зато буду хранить указатели в массиве, с процедурным подходом, и лопатить его каждый раз...

1 час назад, BorizzK сказал:

текстовое поле с UID жрет в неск раз больше памяти

На 1 килобайт? Ну давай посчитаем... UID пусть там 15 знаков. 1 знак = 1 бит. Храним 100 игроков на сервере 15*100=1500бит = 187кб?  Да.. реально много...

Даже если там метр отожрет это такая мелочь.....

 

1 час назад, BorizzK сказал:

3 использование UID в индексе понижает производительность

В каком индексе? Как именно она понижается?

 

1 час назад, BorizzK сказал:

4 использование UID в индексе в случае перезахода игрока после смерти в зоне, соответствует новому живому и в случае входа в зону проверив массив мы найдем там UID и сообщение не отправим

1. Для этого тебе в класс игрока добавили событие ОнКилл\ОнДисконнект и т.д. и т.п.

2. Я не знаю с какой частотой у тебя крутится цикл определяющий игроков в зонах, но при вменяемой паузе, пусть даже в 3с - надо быть шпротой, чтобы успеть релогнуться за итерацию цикла. - А если правильно написан скрипт, то он будет удалять UIDы игроков из массива, которых нет на сервере. => твое утверждение ложно.

 

P.S. И вообще забавно как при наличии ООП, объекта, классов, инструментов, расписанных событий, ты пытаешься задвинуть процедуркой указатели на объекты в какой то массив, и через туже процедурку с ними работать...

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


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

NoNameUltima 1 знак = 1 бит. те знаков у нас всего 2? 0 и 1? :surprised: 1 знак 1 байт ващета - уид текстовый - каждый символ занимает один байт (8 бит)


массив мап 1 элемент: индекс - значение

 

про класс и хрение в нем

в том то и смысл что уже есть класс - для каждой зоны создается свой экземпляр

разные зоны разные экземпляры

 

судя по логам (массив.ToString() - выводит нам id экземпляра - сам проверь (проверяю в конструкторе))  для map создаются свои экземпляры вместе с экземпляром класса

для TString нет

 

Впрочем это еще проверки потребует

 

Про еекилл и ондисконнект

 

Блин - я 100раз писал - я стараюсь не лезть в scripts без крайней необходимости

 

Про удаление из массива

Если игрок выскочил погиб и player = NULL, со временем (после пропадания трупа) элемент в массиве мап сам нулится и не надо напрягаться

 

Кароче - чем меньше лишних движений - переменных массивов классов и тп - тем лучше

Это называется  - оптимизация

Код должен быть максимально компактный

 

Привычка понимаешь...

 

 

 

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


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

лан, я в этом бреде более не участвую)

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


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

NoNameUltima ну конечно

Нет что бы на пальцах показать...

Но про 1 бит один символ это сильно конечно...

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


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

BorizzK

А что тут еще пояснять?

1. Ну да ок. ASCII 8бит-1байт на символ. многое поменялось?

2. Ты так и не ответил, - что там понижается в производительности, и что есть - индексация UID

3. Ты так и не ответил, - какая религия у тебя не позволяет моддить классы?

4. При чем тут NULL указателя, и элемент массива? - т.е. если к тебе на сервер за сессию, в текучке зайдет 1 000 000 игроков, то и массив у тебя станет 1 000 000 элементов? Похеру что там NULL у большинства, т.к. в реал-тайм играют к примеру 100. Ты так и будешь лопатить лям элементов? т.е. NULL элементы не будешь выкидывать я правильно понимаю да?

5. Какая оптимизация, если ты игнорируя созданный объект и его OnEach добавляешь дикий цикл?

6. Компактный код зачастую не несет оптимизации, а реализует решение "в лоб". Открою тебе тайну - зачастую оптимизированный код содержит доп. условия, и вовсе не выделяется компактностью.

7. Про TString вообще не понял... абсолютно.

 

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


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

NoNameUltima 

Давай поподробней

1. 1 байт это 8 бит

Те больше в 8 раз. Да, ничего не поменялось

2. Насчет уид в мапе... Я пожалуй соглашусь, походу индекс 4 байта для playerbase и значение 4 байта... Но

Доп движения для получения уида меня напрягают

3.Есть принципиальный интерес

4.дикий цикл... Это какой? Где я лопачу массив игроков в зоне в цикле? только insert, contains, romove

6 Тебе наверное видней, у меня подход со времен писательства на других языках...

 

Про tstring... А что там непонятного...

 

 

 

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


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

Те больше в 8 раз. Да, ничего не поменялось

Купи уже калькулятор. Опять ты мыло разводишь в 8 раз больше в 10, да хоть в 100. Тебе сразу написали про пару 1Мб - это дааа показатель.

1 час назад, BorizzK сказал:

.Есть принципиальный интерес

Интереса нет никакого. Есть непонимание, и профанация. Там даже теоретически ничего интересного нет. Задачка для первоклассника.

Брать игроков и бегать в цикле по ним, меряя дистанцию, а затем определять через if-switch, где он и как оно там. - Ну да. Интересно бесспорно.

1 час назад, BorizzK сказал:

Это какой? Где я лопачу массив игроков в зоне в цикле?

GetGame().GetPlayers( players );
for ( int i = 0; i < players.Count(); i++ )

не?

1 час назад, BorizzK сказал:

Про tstring... А что там непонятного...

Да в принципе - все. Какие то ID, экземпляры экземпляров....... Непонятно, на кой они, что за ИД у массива, и т.д. и т.п.

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


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

NoNameUltima 

Вообще-то я ПРО СВОЙ интерес написал..., а не чей-то еще...

Для меня это все развлекалово в основном

 

Хочешь сказать есть другой вариант проверки игроков в зоне?

Покажи )))

Не

Ну можно на каждого игрока навесить свою проверку конечно

Видел я такие реализации и сам делал - те же яйца только вид в профиль

Ага

Только вот с тз производительности при большом онлайне это не оч полезно

 

Та же RadiationZone (ты в курсе что это)

Разница в фпс с ней и без - заметна глазом сразу да же на мощных серверах

А там как раз все проверочки на игроках

 

С тз утилизации вычислительных ресурсов сервера, намного лучше - раз в 5-10 сек проверять в цикле последовательно всех (чаще зачем?)

 

1 ресурсы утилизируются равномерно и нет одновременно вращающихся одинаковых кусков в памяти сервера

2 меньше жорева памяти и нагрузка на цпу - серверу легче "дышать"

 

Я сравнивал работу ванилки с неск разными реализациями на хостах с 6й сферой в виртуалках с 8vcpu и 16 гигами нешаренной памяти + все на быстрых полках sas 12g

 

разница иногда до 10-15%

 

а если учесть что у двигла дейза случаются внезапные потуги на предмет спавна/деспавна и проче фигни бывают всплечки жорева пямяти, нагрузки на цпу и тп

 

Про TString - все массивы у движка дейза - по сути обьекты - и можно всегда получить его ID как ID любого обьекта

Через ToString

 

Вот например map'ы (вывод из конструктора класса)

вот такие вот maparray.ToString() 

map<PlayerBase,int><64aef290>

map<PlayerBase,int><64aef2e0>

итп

как видим для каждого экземпляра класса свой

 

аналогично из конструктора

TString

tstringarray.ToString()

0x00000000d5f4f2b0

0x00000000d5f4f2b0

а тут все одно

 

А знаешь что это?

Это указатель на конкретный кусок памяти выделенный под массив (проверяли специально через сферу)

 

PS Полезно для отладки

 

 

PS2 не мешало бы быть дружелюбней

 

 

 

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

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


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

NoNameUltima 

Насчет TStringArray был не прав

По резалтам теста

Если создать эксземпляр - но не инсертить данные - выгялит все как одно

Если проинсертить все встет на свои места

След экземпляр создается с другим "ид" и усе работает

 

0x000000004ed7c8e0

0x000000004ed7c820

итд итп

 

 

 

 

 

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


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

След экземпляр создается с другим "ид" и усе работает

Во первых - Зачем тебе это?

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

В третьих -

7 часов назад, BorizzK сказал:

maparray.ToString() 

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

 

7 часов назад, BorizzK сказал:

Только вот с тз производительности при большом онлайне это не оч полезно

Я не знаю какой скрипт ты брал, что ты и как там замерял...

Банальщина -

	//	В классе PlayerBase
	override void EOnFrame(IEntity other, float timeSlice)
	{
		super.EOnFrame(other, timeSlice);
		
		if( (GetGame().GetTime() - cv_TimeStamp) > 1000 )
		{
			cv_TimeStamp	=	GetGame().GetTime();
			
			Zones.CheckPlayerInZone( this.GetPosition(), this.GetIdentity().GetPlainID() );
		}
	}

.......
В классе зоны, достаточно создать массив зон, где у каждой зоны будет массив TSringList с UID'ами, и функцию проверки.
Внутри функции проверки сверять позицию игрока и зоны.
Если игрок в зоне и его нет в массиве - добавляем его ЮИД, и отправляем сообщение.
Если игрок в зоне и есть в массиве - return
Если игрок ВНЕ зоны и есть в массиве - удаляем с массива ЮИД и выводим сообщение, что покинул зону.
Если игрок ВНЕ зоны и нет в массиве - return

 

Это 1 if else, и find в StringList

А как там было реализовано в зонах каких то, и как ты проверял нагрузку - я хз.

 

И в довесок -

Тут половину, если не все можно реализовать на клиенте. Если уж ты не хочешь сервак нагружать.

Но ты же не хочешь модингом заниматься...

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

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


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

NoNameUltima BorizzK , извиняюсь, господа... 

Я тут Вашу переписку почитал - врать не буду 90% сказанного я тупо не понял, но вот что я понял, это то, чтоNoNameUltima , так же как и я, не понимает, чего мы, ну, то есть BorizzK , пытаемся сделать. Уж извините, я только-только букварь осваиваю, но тем не менее, я так понимаю, что реализация должна соответствовать поставленной задаче, нет? А какая у нас задача?

-- Создать зоны заражения различных типов (реализовано)

-- Организовать проверку на нахождение игрока в одной из зон (реализовано)

-- Организовать проверку на соответствие экипировки игрока типу зоны (частично реализовано - временное решение)

-- Организовать проверку на состояние экипировки игрока (частично реализовано - временное решение)

-- Организовать вывод сообщения игроку о нахождении в зоне заражения (реализовано)

-- Организовать систему нанесения урона игроку, находящемуся в зоне (частично реализовано - нет градации урона по степени повреждений экипировки)

-- Организовать ввод необходимых для работы скрипта параметров (характеристики зоны, сеты экипировки) из внешнего файла (.txtшки) - не реализовано.

 

Как видим, у нас ещё не выполнены или выполнены в черновом варианте основные задачи. И тут начинается нечто, смысла чего, я, извините, понять не могу.

"Мы создадим динамические массивы в каждом экземпляре класса, чтобы туда заносить указатели на указатели игроков, находящихся в данный момент в зоне." Хорошо, давайте создадим, почему нет? Теперь мы точно знаем, что в течение 12 секунд игрок находится (или не находится в зоне). Зачем? А чтоб ему сообщение не посылать каждые 12 секунд (кстати, чем это плохо?!), ну... Допустим! У меня не хватает знаний, чтобы понять техническую сторону Вашего спора, но позвольте спросить, если у нас стоит задача "пометить" игрока, находящегося в зоне, то зачем нам использовать для этого массив?! Что мешает нам просто "примотать" к текущему проверяемому игроку переменную прямо в теле проверки, и если она >1, (то есть игрок обнаружен в зоне n-ное количество раз) просто тупо не выводить сообщение, а если =1 (игрок обнаружен впервые), то выводить?! Или смысл этой затеи в самом использовании динамических массивов? Ну вот просто, чтобы было и всё?..

BorizzK , извини, но мне кажется, что ты начинаешь "растекаться мыслями по древу". Я предлагаю вернуться к реализации конкретной задачи. А уж выполнив её на 100%, можно будет и поизощряться с различными методами реализации элементов и оптимизацией. Я понимаю, что изначальная задача, возможно, кажется тебе примитивной, но, извини, я просто не поспеваю за твоими "задумками на будущее".:sad:

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


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

NoNameUltima 

Пойми еще раз

Разговор про серверную часть

Речь о изучении и возможностях языка

И о конкретной задаче

Ну а моддинг на клиентах

Мое мнение тут все знают... 

Про массив уид в экземпляре

В чем приемущество?

А нет его

 

ЗЫ всегда надо максимально разгружать клиентов!

 

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

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


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

VIRrusR Что мешает нам просто "примотать" к текущему проверяемому игроку переменную прямо в теле проверки

 

Ну как бы для этого есть 2 подхода

Идеальный player.переменная, но для этого надо обявить ее в классе PlayerBase, что нам не подходит

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

Лучший вариант в нашем случае - ИМХО - массив, ибо быстро, удобно, и все такое прочее.

 

NoNameUltima 

EOnFrame

Я делал так, когда создавал сейфзону через scripted entity, высчитывал разницу через GetTime каждый раз, когда разица с предыдущим показанием достигала timewait вызывал функцию обработки

Что скажу

Теж ойца ток вид сбоку + надо лезть в scripts со всееми вытекающими или делать мод, тк по другому до класса Scripted Entity не добраться

Не, ну можно еще через OnUpdate или OnTick....

 

Но это не в рамках текущего обсуждения

Мы сейчас учимся, изучаем НЕ ЗАБЕГАЯ ВПЕРЕД, стараясь реализовать все просто, красиво и в одном файле, который просто подключаешь и все работает

 

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


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

Идеальный player.переменная, но для этого надо обявить ее в классе PlayerBase, что нам не подходит

Почему это нам не подходит?

 

Только что, BorizzK сказал:

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

Не важно, будет ли это использоваться, но надо рассмотреть! Особенно "сохраняются в файл" - я так понимаю, это позволяет зафиксировать информацию на игроке и сбросить её релогом игрок не сможет?

 

Только что, BorizzK сказал:

Лучший вариант в нашем случае - ИМХО - массив

BorizzK ,я не вступаю с тобой в спор - тебе виднее, какой вариант "лучше", но всё же, прошу пояснить почему это лучше, чем перечисленное выше?

И ещё раз о том, какую задачу мы решаем: мы просто хотим каким-то образом "пометить" игрока, "засветившегося" в зоне, верно? Пока отставим в сторону вопрос о том, будем ли мы сохранять эту информацию и использовать в дальнейшем! На данном этапе, мы хотим получить чёткую информацию "Вася входил в зону!", так? Причём, если я правильно понял, нам нужно однозначно привязать эту "метку" к Васе, не к безликому указателю, а именно к конкретному игроку, так?

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

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


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

Почему это нам не подходит...

Мы пытаемся все сделать одним файлом, без модов и прочей ереси

 

Профайл

Чем нам это может быть полезно?

Ничем

Это полезно для сохранения состояний

Нам это зачем?

Игрок релогнулся? И что, он снова в зоне

Умер? 

Он заспавнится в другом месте, зачем ему сохранять состояние о том, что он в какой та там зоне

 

Сделаем конкретную реализацию, а дальше развить и трансформироватт ее будет

 

1 интересней

2 полезней

 

Мы тут не релиз ваяем (хотя почему нет?),  мы язык изучаем

 

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

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


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

Это полезно для сохранения состояний

Нам это зачем?

Например, для создания "последствий".

 

Вообще, если я правильно тебя понял, то ты хочешь создать просто некий сложносочинённый флаг? "Обнаружили игрока в зоне - внесли в массив, вывели сообщение. Если игрок в массиве - сообщение не выводим." И это всё? Если да, то это как-то... Чесать левое ухо правой ногой.

for ( int j = 0; j < ga_zones.Count(); j++ )
				{
					if (InZone(player, ga_zones.Get(j))) 
					PlayerInZone = true; 
					break;
				}

Ну вот как то вот так? И перед выводом сообщения проверить нашу переменную PlayerInZone?

BorizzK ,постоянно забываю упоминание вставить, сори...

 

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

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


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

Может кто-нибудь помочь со скриптом , чтобы нельзя было разбирать чужие постройки изнутри маленьким топориком. (Нужно чтобы такая возможность была только у владельца забора)

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


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

Yogaa , в раздел "Помощь" - создавайте тему. Если хотите готовую реализацию - в раздел купли-продажи. Здесь изучением EnScript занимаются. :smile:

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


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

VIRrusR PlayerInZone = true;

Оно не для конкретного игрока будет!!!

оно будет локально в функции или глобально в классе, но никак не связанно и с конкретным игроком

для конкретного нужна своя связанная переменная

либо массив, что проще простого

ну и использовать указатель на перса в этом массиве правильней чем uid (в конкретной реализации)

Кроме того uid еще получить надо - а значит выполнить последовательно еще 2 функции GetIdentity().GetPlainId()

Смысл?

 

Про запоминание состояний и тп

Когда нам это потребуется, мы это введем без каких-либо проблем

 

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: Troy1
      Всем привет. Суть в чём, пишу мод на событие и когда происходит событие, параллельно должна меняться скорость ветра, не могу понять как заставить скрипт управлять силой ветра. Понижать силу ветра получилось сделать, а вот повышать не как. Только после перезагрузки сервера сила ветра задаётся в нужном значение.
      Как сделать, что бы по вызову функции менялась сила ветра в большую или в меньшую сторону?
      protected void SetWind(float wind, float time) { if (!g_Game) return; Weather m_Weather = g_Game.GetWeather(); if (!m_Weather) return; m_Weather.SetWindMaximumSpeed(wind); m_Weather.SetWind(Vector(1/Math.Sqrt(3), 1/Math.Sqrt(3), 1/Math.Sqrt(3)) * wind); m_Weather.SetWindSpeed(wind); m_Weather.SetWindFunctionParams(1.0, 1.0, -1); } Это скрипт на понижение силы ветра.
      Работает понижение силы ветра в том случае, если до этого сила ветра была выше.
      Пример:
      Изначально на сервере сила ветра = 20 m/s А нужно понизить до 10 m/s
      Только в этом случае сработает скрипт который я приложил выше.
      Помогите пожалуйста решить этот вопрос.
      За ранние благодарю.
    • Автор: Troy1
      Всем привет. Помогите пожалуйста со скриптом.
      Суть. Я пытаюсь сделать синхранизацию сервера с клиентом передавая c конфига время разделки животного.
      В родных скриптах есть class UATimeSpent с константами и там есть константа SKIN.
      Мне нужно её перезаписать на своё значение и мне выдаёт ошибку: Trying to modify write protected variable 'SKIN' в переводе на Русский Попытка изменить защищенную от записи переменную «SKIN».
      Функция скрипта: Когда игрок запускает клиент, идёт запрос на серверную часть и получает в ответ время разделки.
      Задача: Нужно перезаписать константу SKIN на новое значение и всё.
      Сам скрипт.
      class timeToComplete extends UATimeSpent { protected ref UATimeSpent m_UATimeSpent; void timeToComplete() { GetDayZGame().Event_OnRPC.Insert(OnRPC); CheckUATimeSpent(); } void ~timeToComplete() { GetDayZGame().Event_OnRPC.Remove(OnRPC); } void CheckUATimeSpent() { GetGame().RPCSingleParam(NULL, SOC_TIME_RPCs.SOC_GT, NULL, true); } void OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx) { if (rpc_type == SOC_TIME_RPCs.SOC_RT) { Param1<float> soc_srt; if (ctx.Read(soc_srt)) { if (soc_srt.param1!= 0) { m_UATimeSpent.SKIN = soc_srt.param1; Print("Пришёл ответ от сервера в m_UATimeSpent.SKIN - " + m_UATimeSpent.SKIN) } } } } };  
    • Автор: RedWoodGamer
      Ищу мододела который напишет мод на поиск предметов в ванильной фурнитуре с возможностью конфигурации лутабельных объектов и лута внутри них, а так-же КД на лутаемый объект (Простыми словами чтобы нельзя было лутать один и тот же объект двум игрокам одновременно, если один залутал, включается определённый таймер и второй игрок может залутать его через прошедшее время, либо же завязать это время на рестарт сервера.)
      Бюджет есть, оценивайте свою работу и предлагайте цену, кто не хочет в комментариях вот Discord : RedWood#6323
    • Автор: CubeIn
      Приветствую друзья, возникла неприятная ошибка.
      Подписал все ключи через DS Utils, вставил ключ в северную часть, но все равно при заходе на сервер пишет данную ошибку.
      Client contains PBO which is not part of server data
       
    • Автор: CubeIn
      Есть ли у кого ни будь шаблон или инструкция как создать свой шеврон?
      Нашел видео от Фидова, но ссылка на шаблон не действительна

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

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

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

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

Поддержка