Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
RazDvaa

INI и Настройка стартового лута

Вдруг кому то скучно и он подскажет .
    Настраиваю стартовый лут в InI 
 

	itemClothing = player.FindAttachmentBySlotName( "Body" );
		if ( itemClothing )
		{
			SetRandomHealth( itemClothing );
			itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" ); // Верхняя одежду
			itemEnt = player.GetInventory().CreateInInventory( "BrisketSpread" ); // Паштет
			itemEnt = player.GetInventory().CreateInInventory( "Zagorky" ); // Вафля
			itemEnt = player.GetInventory().CreateInInventory( "SodaCan_Cola" ); // Вода
			itemEnt = player.GetInventory().CreateInInventory( "SodaCan_Cola" ); // Вода
			itemEnt = player.GetInventory().CreateInInventory( "BaseballCap_Black" ); // Кепка
			itemEnt = player.GetInventory().CreateInInventory( "FurCourierBag" ); // Рюкзак
		}

почему командой ---itemEnt = player.GetInventory().CreateInInventory( "BaseballCap_Black" ); // Кепка---
Кепка оденется и рюкзак оденется (по такой же системе )
 

А куртка не одевается , а ложится в инвентарь?
--**itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" ); // Верхняя одежда**--

(

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

А если более подробно, то учимся думать:

Вот этим кодом:

itemClothing = player.FindAttachmentBySlotName( "Body" );

Мы ищем в слоте Body одето ли что у игрока. Далее строкой:

if ( itemClothing )

проверяем, одето ли. Если не одето - в переменной будет NULL, а проверка выдаст false (ложь) и блок далее между { }  НЕ отработает.

Если же одето, то в переменной будет НЕ NULL, а какое-то значение, а проверка выдаст true (истина) и блок далее между { }  отработает.

Соответственно если у вас такой код стоит, то код проверяет, есть ли в слоте Body у игрока одетый предмет.  Ну и если есть, то выдает то что написано у вас. А слот Body это у нас куртка и есть.

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

Так что учитесь думать что вы делаете сами и пишете в коде.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites



  • 0

потому как слот куртки на тот момент занят или блокирован для одевания, видимо

Share this post


Link to post
Share on other sites
  • 0
14 минут назад, 123new сказал:

А если более подробно, то учимся думать:

Вот этим кодом:

itemClothing = player.FindAttachmentBySlotName( "Body" );


itemClothing = player.FindAttachmentBySlotName( "Body" );

Мы ищем в слоте Body одето ли что у игрока. Далее строкой:

if ( itemClothing )


if ( itemClothing )

проверяем, одето ли. Если не одето - в переменной будет NULL, а проверка выдаст false (ложь) и блок далее между { }  НЕ отработает.

Если же одето, то в переменной будет НЕ NULL, а какое-то значение, а проверка выдаст true (истина) и блок далее между { }  отработает.

Соответственно если у вас такой код стоит, то код проверяет, есть ли в слоте Body у игрока одетый предмет.  Ну и если есть, то выдает то что написано у вас. А слот Body это у нас куртка и есть.

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

Так что учитесь думать что вы делаете сами и пишете в коде.

Спасибо огромное , я начал только в этом плавать.. 
Интересно , но сложно сразу всё понять 🙂


Просто попробую сейчас 
**player.RemoveAllItems(); - очистить все предметы (желательно должно быть выше всех строк настройки стартового лута)**
 

Share this post


Link to post
Share on other sites
  • 0
27 минут назад, 123new сказал:

потому как слот куртки на тот момент занят или блокирован для одевания, видимо

Ещё раз спасибо 🙂
Я сначала удалил весь инвентарь
затем дать персонажу куртку и штаны
 и только потом стал проверять слот Body
Далее уже доспавнивать вещи 🙂 

player.RemoveAllItems();
	itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" ); // Верхняя одежду
	itemClothing = player.FindAttachmentBySlotName( "Body" );
			if ( itemClothing )

 

Share this post


Link to post
Share on other sites
  • 0
32 минуты назад, RazDvaa сказал:

Ещё раз спасибо 🙂
Я сначала удалил весь инвентарь
затем дать персонажу куртку и штаны
 и только потом стал проверять слот Body
Далее уже доспавнивать вещи 🙂 

player.RemoveAllItems(); itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" ); // Верхняя одежду itemClothing = player.FindAttachmentBySlotName( "Body" ); if ( itemClothing )


player.RemoveAllItems();
	itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" ); // Верхняя одежду
	itemClothing = player.FindAttachmentBySlotName( "Body" );
			if ( itemClothing )

 

еще немного логики для осознания того, что пишешь.

itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" );

и

player.GetInventory().CreateInInventory( "LeatherJacket_Brown" );

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

 

Теперь о примере того, как соспавнить нужный тебе предмет, например, именно в куртке:

itemEnt = player.GetInventory().CreateInInventory( "LeatherJacket_Brown" );

Спавним куртку и записываем в переменную  itemEnt.

Далее проверяем ее. Если соспавнилась - будет true:

if ( itemEnt )
{
	itemEnt.GetInventory().CreateInInventory( "SodaCan_Cola" );
}

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

Ну и в следующей же строке мы спавним уже колу, но обращаясь не к игроку player, а непосредственно к куртке, т.е. переменная itemEnt.

Таким образом можно спавнить вещи в объект.

Сама переменная itemEnt может в процессе вычисления кода перезаписываться на другие значения, если вам это необходимо, как например тут у вас

itemEnt = player.GetInventory().CreateInInventory( "BaseballCap_Black" ); // Кепка
itemEnt = player.GetInventory().CreateInInventory( "FurCourierBag" ); // Рюкзак

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.