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

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

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

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

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

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

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


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

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






  • 0

123new Что делать если лут выдается только в штаны, вот как прописал. Как сделать чтобы лут выдавалcя на всё тело, а не только в штаны ?


 

override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
		player.RemoveAllItems();

		EntityAI item = player.GetInventory().CreateInInventory(topsMissionArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemTop;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;
		
		player.GetInventory().CreateInInventory("HuntingKnife");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("SantasHat");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("Battery9V");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("Flashlight");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("Compass");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(5);
		
		player.GetInventory().CreateInInventory("Rice");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("SodaCan_Cola");
		itemBs = ItemBase.Cast(itemEnt);
		
		player.GetInventory().CreateInInventory("SodaCan_Spite");
		itemBs = ItemBase.Cast(itemEnt);
    }

 

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


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

Sancezz063 лут по комманде

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

выдается на игрока при условии, что есть слоты, необходимые под этот предмет в любом из вещей на нем. Если нет места, предмет либо не создастся, либо будет в руках, если они не заняты.
Коммандой:

itemEnt = player.GetInventory().CreateInInventory("AliceBug");
	itemBs = ItemBase.Cast(itemEnt);
itemEnt = itemBs.GetInventory().CreateInInventory("HuntingKnife");
itemBs = ItemBase.Cast(itemEnt);

Именно игроку выдастся рюкзак Алиса, и уже именно в рюкзак создастся охотничий ножик. Видите разницу в синтаксисе? Не забывайте про нее.
А еще разработчики прямо таки вам намекнули, но специально оставили закомментированной, комманду:

player.RemoveAllItems();

удаляющий с игрока абсолютно все вещи, которые на нем имелись.
Это удобно на случай, если, например, мы хотим сделать свой сет из вещей. например, такой:

player.RemoveAllItems();
EntityAI itemTop;
EntityAI itemEnt;
ItemBase itemBs;
float rand;

itemEnt = player.GetInventory().CreateInInventory("Gorka_pants_summer"); itemBs = ItemBase.Cast(itemEnt);
itemBs.GetInventory().CreateInInventory("Medical_Morphine");
itemBs.GetInventory().CreateInInventory("Medical_BandageDressing");
itemEnt = player.GetInventory().CreateInInventory("Gorka_up_summer"); itemBs = ItemBase.Cast(itemEnt);
itemBs.GetInventory().CreateInInventory("Medical_TransfusionKit");
itemBs.GetInventory().CreateInInventory("CombatKnife");
itemEnt = player.GetInventory().CreateInInventory("BagTortilla"); itemBs = ItemBase.Cast(itemEnt);
itemBs.GetInventory().CreateInInventory("Mag_Glock_15Rnd");
itemBs.GetInventory().CreateInInventory("Mag_Glock_15Rnd");
itemBs.GetInventory().CreateInInventory("Mag_Glock_15Rnd");
itemBs.GetInventory().CreateInInventory("Mag_Glock_15Rnd");
itemEnt = player.GetInventory().CreateInInventory("MilitaryBoots_Black"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("GorkaHelmet_complete_Green"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("HighCapacityVest_Olive"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("WorkingGloves_Brown"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("BalaclavaMask_Green"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("FireFighterAxe"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("glock19"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("Consumable_Matchbox"); itemBs = ItemBase.Cast(itemEnt);
itemEnt = player.GetInventory().CreateInInventory("Drink_Canteen"); itemBs = ItemBase.Cast(itemEnt);

P.S. id предметов могут быть неверно написаны!

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


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

123new Воспользовался вашим примером, но получил вот такую ошибку:

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

 

Что я упускаю?

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


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

Quis 

override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
    {
            EntityAI itemEnt;
            ItemBase itemBs;
    
            private array<string> UID_DONATE_SETS = {"765....","765..."};
            private PlayerIdentity p_identity = player.GetIdentity();
            private string UID_P = p_identity.GetPlainId();
			private int massive_element_index = UID_DONATE_SETS.Find(UID_P);
			if ( massive_element_index >= 0 )
			{				
                    player.RemoveAllItems();
                    EntityAI item_Inv;
                    itemEnt = player.GetInventory().CreateInInventory("CombatBoots_Green");
                    itemBs = ItemBase.Cast(itemEnt);
                    itemEnt = player.GetInventory().CreateInInventory("TTSKOPants");
                    item_Inv = itemEnt.GetInventory().CreateInInventory("BandageDressing");
                    SetRandomHealth(item_Inv);
                    itemBs = ItemBase.Cast(itemEnt);
                    itemEnt = player.GetInventory().CreateInInventory("QuiltedJacket_Violet");
                    itemBs = ItemBase.Cast(itemEnt);
                    itemEnt = player.GetInventory().CreateInInventory("BoonieHat_Red");
                    itemBs = ItemBase.Cast(itemEnt);
                    itemEnt = player.GetInventory().CreateInInventory("BallisticVest");
                    itemBs = ItemBase.Cast(itemEnt);
                    itemEnt = player.GetInventory().CreateInInventory("SmershBag");
                    item_Inv = itemEnt.GetInventory().CreateInInventory("Flashlight");
                      SetRandomHealth(item_Inv);
                    item_Inv.GetInventory().CreateAttachment( "Battery9V" );    
                    itemBs = ItemBase.Cast(itemEnt);
            } else
            {
                    itemEnt = player.GetInventory().CreateInInventory("Rag");
                    itemBs = ItemBase.Cast(itemEnt);
                    itemBs.SetQuantity(4);
                    SetRandomHealth(itemEnt);
            }
	}

там ошибка в функции была, наскоро писал по памяти

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


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

123new Спасибо, исправил, действительно ошибка ушла. Но заданный шмот не выдаёт. Где именно брать UID? Пробовал тот, что в консоли пишет, не сработало, попробовал тот, что в rcon батлай выдаёт, тоже не прокатило

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


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

Quis steam64id и есть UID. как его получить со стим-профиля прогуглите.

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

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


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

123new Всё, разобрался) Почему-то решил, что это какой-то свой UID и смотрел его в консоли) Теперь работает) Спасибо!)

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

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


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

123new Привет, сделал старт лут, но мне теперь выкидывает ошибку crash.log
Что я не правильно сделал ? 
 

override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
		player.RemoveAllItems();

		EntityAI item = player.GetInventory().CreateInInventory(topsMissionArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemTop;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;
		
		player.GetInventory().CreateInInventory("HuntingKnife");
		player.GetInventory().CreateInInventory("SantasHat");
		player.GetInventory().CreateInInventory("Battery9V");
		player.GetInventory().CreateInInventory("PersonalRadio");
		player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(5);
		player.GetInventory().CreateInInventory("Rice");
		player.GetInventory().CreateInInventory("SodaCan_Cola");
		player.GetInventory().CreateInInventory("SodaCan_Spite");
	}

 

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


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

SetRandomHealth(itemEnt); после каждого предмета вставляй это 

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


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

Sancezz063 

		player.GetInventory().CreateInInventory("HuntingKnife");
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("SantasHat");
		itemBs = ItemBase.Cast(itemEnt);
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("Battery9V");
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("PersonalRadio");
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(5);
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("Rice");
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("SodaCan_Cola");
		SetRandomHealth(itemEnt);
		player.GetInventory().CreateInInventory("SodaCan_Spite");
		SetRandomHealth(itemEnt);

Как то так

мб что то напутал но попробуй 

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


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

123new Привет, сделал старт лут, но мне теперь выкидывает ошибку crash.log
Что я не правильно сделал ? 
 


override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
		player.RemoveAllItems();

		EntityAI item = player.GetInventory().CreateInInventory(topsMissionArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemTop;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;
		
		player.GetInventory().CreateInInventory("HuntingKnife");
		player.GetInventory().CreateInInventory("SantasHat");
		player.GetInventory().CreateInInventory("Battery9V");
		player.GetInventory().CreateInInventory("PersonalRadio");
		player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(5);
		player.GetInventory().CreateInInventory("Rice");
		player.GetInventory().CreateInInventory("SodaCan_Cola");
		player.GetInventory().CreateInInventory("SodaCan_Spite");
	}

 

Ну вы хоть немного то пытайтесь думать, что пишите! А ещё лучше было бы прочитать какую-нибудь книжку по C++, например.

EntityAI itemEnt;
ItemBase itemBs;

Вы определили переменные типов EntityAI и ItemBase, но эти переменные не инициализированы. У этих переменных нет значения, они равны NULL.

itemBs = ItemBase.Cast(itemEnt);

Теперь вы пытаетесь привести объект одного класса к другому, но itemEnt у нас всё ещё не инициализирована и равна NULL. Соответственное, операция проходит неудачно и itemBs не получает значения.

itemBs.SetQuantity(5);

Здесь вы пытаетесь вызвать метод SetQuantity() у объекта, на который должна указывать переменная itemBs, а она никуда не указывает и метод вызывать не получается.

 

Короче, делается всё так:

Если хотим просто запихнуть какую-то вещь в инвентарь игрока и не собираемся производить с этой вещью каких-либо операций, то просто пишем

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

Если собираемся что-то с этой вещью делать, например, изменить её состояние и(ли) количество, то пишем

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

Мы в переменную itemEnt сохранили «указатель» на объект, который мы создали. Дальше нам нужно привести объект к классу ItemBase, чтоб вызвать метод SetQuantity() и изменить количество:

itemEnt.SetHealth("","",50); // вызываем метод SetHealth() класса EntityAI и, тем самым, меняет уровень «здоровья» предмету (сломали на половину)

itemBs = ItemBase.Cast(itemEnt); // приводим объект класса EntityAI (в переменной itemEnt) к классу ItemBase (в переменной itemBs)
itemBs.SetQuantity(4); // вызываем метод SetQuantity() класса ItemBase и, тем самым, задаём количество (для стакающихся предметов) или наполненность объекта (для нестакающихся предметов — фляги, обоймы и т.п.)

Опять же, например, хотим дать игроку рюкзак и ботинки, положив в них определенные вещи:

itemEnt = player.GetInventory().CreateInInventory("MyCoolBagPack"); // даём игроку условный рюкзак и запоминаем «ссылку» на него
itemEnt.GetInventory().CreateInInventory("MyCoolObject"); // «даём» рюкзаку, который ранее выдали игроку некий объект, т.ч. теперь у игрока в выданном ранее рюкзаке лежит этот объект

itemEnt = player.GetInventory().CreateInInventory("MilitaryBoots_Black"); // даём игроку военные ботинки
itemEnt.GetInventory().CreateInInventory("CombatKnife"); // «даём» ботинках боевой нож (кладём в них боевой нож)

itemEnt = player.GetHumanInventory().CreateInHands("AKM"); // дали игроку в руки «калаш»
itemEnt.GetInventory().CreateAttachment("AK_Suppressor"); // установили на «калаш» глушитель

itemEnt = player.GetInventory().CreateInInventory("Flashlight"); // дали игроку фонарик
itemEnt = itemEnt.GetInventory().CreateAttachment("Battery9V"); // установили в него батарейку, запомнили указатель на батарейку
itemEnt.SetQuantity(25); // разрядили батарейку на 3/4 (здесь не уверен, но по идее заряд через ItemBase.SetQuantity() указывается)

 

Писал «от руки», т.ч. где-то мог ошибиться в названии методов, но главное, чтоб суть была ясна.

 

P.S. Для большей наглядности ещё немного говнокода добавлю:

EntityAI itemEnt; 
EntityAI itemTmp; // определили переменные itemEnt и itemTmp типа EntityAI
ItemBase itemBs; // определили переменную itemBs типа ItemBase

// Сейчас itemEnt, itemTmp и itemBs равны NULL

player.GetInventory().CreateInInventory("Armband_Red"); // создали в инвентаре игрока красную повязку, но никуда не сохранили указатель на неё

itemEnt = player.GetInventory().CreateInInventory("AliceBag"); // создали рюкзак в инвентаре игрока и сохранили указатель на него в itemEnt
if( itemEnt ) // проверяем, создался ли рюкзак (если нет, то значение itemEnt будет NULL; например, мы допустили опечатку в названии рюкзака)
{
  itemEnt.GetInventory().CreateInInventory("Apple"); // создаём яблоко в рюкзаке, но не сохраняем на него указатель
  itemTmp = itemEnt.GetInventory().CreateInInventory("Apple"); // создаём ещё яблоко в рюкзаке, но теперь СОХРАНЯЕМ на него указатель в itemTmp
  itemTmp.SetHealth("", "", 10); // меняем второму яблоку «здоровье», теперь оно, наверное, RUINED.
  itemEnt.GetInventory().CreateInInventory("Plum"); // создаём сливу в рюкзаке
}

Обращу внимание, что специально для операций над вторым яблоком я заранее определил дополнительную переменную itemTmp, ведь itemEnt мне ещё нужна (точнее её значение — ссылка в ней на рюкзак), чтоб дальше класть предметы в рюкзак.

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

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


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

123new Привет, сделал старт лут, но мне теперь выкидывает ошибку crash.log
Что я не правильно сделал ? 
 


override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
		player.RemoveAllItems();

		EntityAI item = player.GetInventory().CreateInInventory(topsMissionArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemTop;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;
		
		player.GetInventory().CreateInInventory("HuntingKnife");
		player.GetInventory().CreateInInventory("SantasHat");
		player.GetInventory().CreateInInventory("Battery9V");
		player.GetInventory().CreateInInventory("PersonalRadio");
		player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(5);
		player.GetInventory().CreateInInventory("Rice");
		player.GetInventory().CreateInInventory("SodaCan_Cola");
		player.GetInventory().CreateInInventory("SodaCan_Spite");
	}

 

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

elanc спасибо, хоть один человек нашелся, кто понимает о чем говорю.

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

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


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

123new всё, я уже допёр. Но всё ровно спасибо!

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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