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

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

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

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 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" ); // Верхняя одежда**--

(

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


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

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

  • 0

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

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

itemClothing = player.FindAttachmentBySlotName( "Body" );

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

if ( itemClothing )

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

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

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

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

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

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

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


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

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

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


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

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

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

itemClothing = player.FindAttachmentBySlotName( "Body" );


itemClothing = player.FindAttachmentBySlotName( "Body" );

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

if ( itemClothing )


if ( itemClothing )

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

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

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

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

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

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


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

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


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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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" ); // Рюкзак

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка