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

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

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

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

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

Удаление лута в определенном радиусе в нескольких точках.

Добрый день, ув. форумчане. 

Наваял скрипт, который по определенному рандому и определенным координатам наваливает сундук так же с определенным лутом по заранее прописанному рандому.

Вписал все в Инит, запустил и о чудо! Он пашет! Мой первый серьезный скрипт

Собственно вопрос в чем, так как скрипт прописан в Инит,  то сундук записывается в БД и не удаляется после рестарта, а мне жизненно необходимы несколько строчек кода, которые перед исполнением скрипта будут очищать те самые заранее определенные точки.   

 

Спасибо!  

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


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

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

  • 0
2 часа назад, Plut сказал:

Спасибо, но мне не логика действий нужна то, до нее я допер. Мне как раз таки строчки кода и нужны, как удалить все в 2 метрах от точки или как удалить все вещи определенного класса, например сундук. 

учитесь искать напрямую в коде игры, родной scripts.pbo как раз для таких целей у вас имеется под рукой всегда.

void DeleteOldObjects()
{
	private array<string> Massive_objects_for_search = {"","",""};
	private vector position = "";
	private float radius = 10.0;
	private array<Object> ScannedObjects = ScanInMapObjectsAtPositionInRadius(position, radius, Massive_objects_for_search);
	if(ScannedObjects)
	{
		if(ScannedObjects.Count() > 0)
		{
			foreach(private Object obj:ScannedObjects)
			{
				WriteDebugLog("[Clean] Remove the old object '" + obj.GetType() + "' in position '" + obj.GetPosition().ToString() +  "'!");
				GetGame().ObjectDelete(obj);
			}
		}
	}
}	
private array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, float radius, array<string> Massive_objects_for_search)
{
	private array<Object> nearest_objects = new array<Object>;
	private array<Object> Massive_searched_objects = new array<Object>;		
	GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, NULL); 
	Massive_searched_objects.Clear();
	for ( private int i = 0; i < nearest_objects.Count(); i++ )
	{
		private Object object = nearest_objects.Get(i);
		if ( Massive_objects_for_search.Find(object.GetType()) >= 0 )
		{
			Massive_searched_objects.Insert(object);
		}
	}
	nearest_objects.Clear();
	return Massive_searched_objects;
}

вот вам готовое. Надеюсь какую функцию вызвать и как применять догадаетесь?

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


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





  • 0

@Plut
В types.xml пропиши свой сундук и измени соответствующие строчки на эти значения, он будет после рестарта пропадать, а если нужно удалять ещё и лут рядом, то тут уже надо позапариваться))
<nominal>0</nominal>
 <lifetime>1</lifetime>
 <restock>0</restock>
 <min>0</min>

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

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


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

@Plut
В types.xml пропиши свой сундук и измени соответствующие строчки на эти значения, он будет после рестарта пропадать, а если нужно удалять ещё и лут рядом, то тут уже надо позапариваться))
<nominal>0</nominal>
 <lifetime>1</lifetime>
 <restock>0</restock>
 <min>0</min>

Думал над этим, но это обычный итем SeaChest у меня, так что не совсем подходит, т к у игроков то же покошу. 

Ну если ничего путного не придумаю(т), то да. Придётся создавать свой модовский сундук и прописывать его в тайпс. 

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
32 минуты назад, 123new сказал:

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

Спасибо, но мне не логика действий нужна то, до нее я допер. Мне как раз таки строчки кода и нужны, как удалить все в 2 метрах от точки или как удалить все вещи определенного класса, например сундук. 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
6 минут назад, 123new сказал:

учитесь искать напрямую в коде игры, родной scripts.pbo как раз для таких целей у вас имеется под рукой всегда.

void DeleteOldObjects() { private array<string> Massive_objects_for_search = {"","",""}; private vector position = ""; private float radius = 10.0; private array<Object> ScannedObjects = ScanInMapObjectsAtPositionInRadius(position, radius, Massive_objects_for_search); if(ScannedObjects) { if(ScannedObjects.Count() > 0) { foreach(private Object obj:ScannedObjects) { WriteDebugLog("[Clean] Remove the old object '" + obj.GetType() + "' in position '" + obj.GetPosition().ToString() + "'!"); GetGame().ObjectDelete(obj); } } } } private array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, float radius, array<string> Massive_objects_for_search) { private array<Object> nearest_objects = new array<Object>; private array<Object> Massive_searched_objects = new array<Object>; GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, NULL); Massive_searched_objects.Clear(); for ( private int i = 0; i < nearest_objects.Count(); i++ ) { private Object object = nearest_objects.Get(i); if ( Massive_objects_for_search.Find(object.GetType()) >= 0 ) { Massive_searched_objects.Insert(object); } } nearest_objects.Clear(); return Massive_searched_objects; }


void DeleteOldObjects()
{
	private array<string> Massive_objects_for_search = {"","",""};
	private vector position = "";
	private float radius = 10.0;
	private array<Object> ScannedObjects = ScanInMapObjectsAtPositionInRadius(position, radius, Massive_objects_for_search);
	if(ScannedObjects)
	{
		if(ScannedObjects.Count() > 0)
		{
			foreach(private Object obj:ScannedObjects)
			{
				WriteDebugLog("[Clean] Remove the old object '" + obj.GetType() + "' in position '" + obj.GetPosition().ToString() +  "'!");
				GetGame().ObjectDelete(obj);
			}
		}
	}
}	
private array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, float radius, array<string> Massive_objects_for_search)
{
	private array<Object> nearest_objects = new array<Object>;
	private array<Object> Massive_searched_objects = new array<Object>;		
	GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, NULL); 
	Massive_searched_objects.Clear();
	for ( private int i = 0; i < nearest_objects.Count(); i++ )
	{
		private Object object = nearest_objects.Get(i);
		if ( Massive_objects_for_search.Find(object.GetType()) >= 0 )
		{
			Massive_searched_objects.Insert(object);
		}
	}
	nearest_objects.Clear();
	return Massive_searched_objects;
}

вот вам готовое. Надеюсь какую функцию вызвать и как применять догадаетесь?

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

Как функцию  и применить - плавали, знаем... 

А вот как массив position обработать из определенного списка, это тугодум пока что, если не сложно,  то буду рад подсказке, если сложно, то спасибо и на этом. 

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


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

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

Как функцию  и применить - плавали, знаем... 

А вот как массив position обработать из определенного списка, это тугодум пока что, если не сложно,  то буду рад подсказке, если сложно, то спасибо и на этом. 

private array<vector> positions = {"","",""};
foreach(private vector position:positions)
{
	/// тут то что надо с переменной position типа vector
}

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
08.06.2021 в 23:23, 123new сказал:

private array<vector> positions = {"","",""}; foreach(private vector position:positions) { /// тут то что надо с переменной position типа vector }


private array<vector> positions = {"","",""};
foreach(private vector position:positions)
{
	/// тут то что надо с переменной position типа vector
}

 

Не смог все же я грамотно использовать private array<vector> positions, не победил ошибку "Cannot convert 'array<vector>' to 'float' for argument '0' to method 'ScanInMapObjectsAtPositionInRadius'".  Но все равно спасибо за ответ.  Решил проблему отдельным скриптом за донат.  

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


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

Не смог все же я грамотно использовать private array<vector> positions, не победил ошибку "Cannot convert 'array<vector>' to 'float' for argument '0' to method 'ScanInMapObjectsAtPositionInRadius'".  Но все равно спасибо за ответ.  Решил проблему отдельным скриптом за донат.  

Спасибо за ответ, конечно.

Ну а для остальных читающих тему, можно сказать нравоучение, или урок на будущее: в теме явный пример того, что стоит задуматься над изучением языка игры когда оно вам лично нужно...  Хороший повод можно сказать.Учите 'матчасть', учите язык и читайте код. Как только начнете понимать что есть функция, что есть параметры функции, что есть тип переменной, что есть условие, и что как выглядит, будете уже на 50% понимать код, данный в данной теме написан, и уже сможете объединить правильно эти 2 написанных блока кода. И делать это за вас бесплатно никто не будет, так как это вам в первую очередь надо, не нам. Ну а коль не понимаете, готовьтесь платить. Причем явно много, потому как каждую хотелку будет делать кто-то за вас по той цене, которую он сочтет приемлемой для себя (время же личное тратится на это). Примеры даны в теме, информации на обучение выше крыши, начиная от гайдов по с++ или c# например и заканчивая родными scripts для понимания структуры игры. А вот что вам ближе выберете сами.

Многие, кто прочитал, уверен на 100% скажут 'чел, ты че токсичишь, помоги товарищу, он че, много просит? зачем эти нравоучения'. Объясняю, это щас вам так кажется, от незнания. Поверхностно сомтрите. А вот если совету последуете, потом еще и сами спасибо скажете за него. Знаю, есть люди на форуме, которые этому совету уже следовали, и уверен, точно не ругают меня за него 😉

 

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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