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

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

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

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

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

Спавн аттачмента через скрипт

Задача : Сделать так, что бы при спавне пушки на ней появлялся прицел.
На модели оружия стоит прокси прицела, цфг слотс и прокси аттачмент прицела прописаны, все вешается и работает. 
Написал для этого скрипт, но он не работает 
 

class air_weapon_g36_base: RifleBoltFree_Base
{
	void AssembleGun()
	{
		if (!FindAttachmentBySlotName("red_dotg36"))
		{
			GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

Может кто-то подсказать, где я продолбался (в скриптах я пень). 

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


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

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

  • 1
30 минут назад, AlexCa31 сказал:

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

class air_weapon_g36_base: RifleBoltFree_Base
{
	void air_weapon_g36_base () 
    {
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(AssembleGun, (1 * 1000), false);
    }
	void AssembleGun()
	{
		if (!this.FindAttachmentBySlotName("red_dotg36"))
		{
			this.GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

 

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


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





  • 1

Не рекомендую использовать CallLater

Кстати какой сакральный смысл использования математической операции умножения на 1 ? (1 * 1000)
 

Используйте либо таймер

 

либо

GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun);

 

а еще лучше шататную инициализацию вызываемую в конце конструктора базового класса

это наименее затратный с тз ресурсов сервера способ
 

override void InitStateMachine ()
{
	super.InitStateMachine();
	GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun);
}



 

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


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

На модели оружия стоит прокси прицела, цфг слотс и прокси аттачмент прицела прописаны, все вешается и работает. 

Если сделал все правильно и на сервере все вешается, остается прописать только в cfgspawnabletypes.xml

Вот пример калашика:

<type name="AK101">
		<attachments chance="0.30">
			<item name="AK_FoldingBttstck" chance="0.30" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_WoodBttstck" chance="0.30" />
		</attachments>
		<attachments chance="1.00">
			<item name="AK_PlasticBttstck" chance="1.00" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_WoodHndgrd" chance="0.30" />
		</attachments>
		<attachments chance="1.00">
			<item name="AK_PlasticHndgrd" chance="1.00" />
		</attachments>
		<attachments chance="0.30">
			<item name="KashtanOptic" chance="0.50" />
			<item name="PSO11Optic" chance="0.30" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_Suppressor" chance="0.50" />
		</attachments>
		<attachments chance="0.30">
			<item name="Mag_AK101_30Rnd" chance="0.50" />
		</attachments>
	</type>

Пробуй.

Помог? Савь Лайк!

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


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

Если сделал все правильно и на сервере все вешается, остается прописать только в cfgspawnabletypes.xml

Вот пример калашика:

<type name="AK101"> <attachments chance="0.30"> <item name="AK_FoldingBttstck" chance="0.30" /> </attachments> <attachments chance="0.30"> <item name="AK_WoodBttstck" chance="0.30" /> </attachments> <attachments chance="1.00"> <item name="AK_PlasticBttstck" chance="1.00" /> </attachments> <attachments chance="0.30"> <item name="AK_WoodHndgrd" chance="0.30" /> </attachments> <attachments chance="1.00"> <item name="AK_PlasticHndgrd" chance="1.00" /> </attachments> <attachments chance="0.30"> <item name="KashtanOptic" chance="0.50" /> <item name="PSO11Optic" chance="0.30" /> </attachments> <attachments chance="0.30"> <item name="AK_Suppressor" chance="0.50" /> </attachments> <attachments chance="0.30"> <item name="Mag_AK101_30Rnd" chance="0.50" /> </attachments> </type>


<type name="AK101">
		<attachments chance="0.30">
			<item name="AK_FoldingBttstck" chance="0.30" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_WoodBttstck" chance="0.30" />
		</attachments>
		<attachments chance="1.00">
			<item name="AK_PlasticBttstck" chance="1.00" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_WoodHndgrd" chance="0.30" />
		</attachments>
		<attachments chance="1.00">
			<item name="AK_PlasticHndgrd" chance="1.00" />
		</attachments>
		<attachments chance="0.30">
			<item name="KashtanOptic" chance="0.50" />
			<item name="PSO11Optic" chance="0.30" />
		</attachments>
		<attachments chance="0.30">
			<item name="AK_Suppressor" chance="0.50" />
		</attachments>
		<attachments chance="0.30">
			<item name="Mag_AK101_30Rnd" chance="0.50" />
		</attachments>
	</type>

Пробуй.

Помог? Савь Лайк!

Мне нужен клиентский скрипт внутри мода. Что бы при спавне через админку на определенном слоте находился определенный прицел

 

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


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

Что бы при спавне через админку на определенном слоте находился определенный прицел

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

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


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

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

Вот нужно что бы это было в моде. Тобишь что бы это работало и при спавне через спавн меню,  и через спавн из трейдера и т.д.

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


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

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

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

В противном случае нет смысла это делать.

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


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

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

В противном случае нет смысла это делать.

Есть пушка, для нее сделан прицел, который ставится только на нее. Я хочу что-бы пушка спавнилась сразу с этим прицелом. Прицел в модели пушки сделать - не вариант 

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
class air_weapon_g36_base: RifleBoltFree_Base
{
	void AssembleGun()
	{
		if (!this.FindAttachmentBySlotName("red_dotg36"))
		{
			this.GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

 

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


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

class air_weapon_g36_base: RifleBoltFree_Base { void AssembleGun() { if (!this.FindAttachmentBySlotName("red_dotg36")) { this.GetInventory().CreateAttachment("air_module_g36_red"); } } }


class air_weapon_g36_base: RifleBoltFree_Base
{
	void AssembleGun()
	{
		if (!this.FindAttachmentBySlotName("red_dotg36"))
		{
			this.GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

 

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

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


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

class air_weapon_g36_base: RifleBoltFree_Base { void air_weapon_g36_base () { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(AssembleGun, (1 * 1000), false); } void AssembleGun() { if (!this.FindAttachmentBySlotName("red_dotg36")) { this.GetInventory().CreateAttachment("air_module_g36_red"); } } }


class air_weapon_g36_base: RifleBoltFree_Base
{
	void air_weapon_g36_base () 
    {
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(AssembleGun, (1 * 1000), false);
    }
	void AssembleGun()
	{
		if (!this.FindAttachmentBySlotName("red_dotg36"))
		{
			this.GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

 

Спасибо большое, все работает

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


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

class air_weapon_g36_base: RifleBoltFree_Base { void air_weapon_g36_base () { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(AssembleGun, (1 * 1000), false); } void AssembleGun() { if (!this.FindAttachmentBySlotName("red_dotg36")) { this.GetInventory().CreateAttachment("air_module_g36_red"); } } }


class air_weapon_g36_base: RifleBoltFree_Base
{
	void air_weapon_g36_base () 
    {
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(AssembleGun, (1 * 1000), false);
    }
	void AssembleGun()
	{
		if (!this.FindAttachmentBySlotName("red_dotg36"))
		{
			this.GetInventory().CreateAttachment("air_module_g36_red");
		}
	}
}

 

Еще вопрос, как повысить интервалы запроса? Ибо серверный фпс жрет много

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


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

Не рекомендую использовать CallLater

Кстати какой сакральный смысл использования математической операции умножения на 1 ? (1 * 1000)
 

Используйте либо таймер

 

либо

GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun);


GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun);

 

а еще лучше шататную инициализацию вызываемую в конце конструктора базового класса

это наименее затратный с тз ресурсов сервера способ
 

override void InitStateMachine () { super.InitStateMachine(); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun); }


override void InitStateMachine ()
{
	super.InitStateMachine();
	GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(AssembleGun);
}



 

Спасибо за последний скрипт, разгрузило фпс 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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