Gizda

спавн предмета

Вопрос

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

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


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

16 ответов на этот вопрос

Есть, только кто мешает этому рюкзаку также быстро пропасть потом по системе центральной экономики сервера?)

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


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


1 час назад, 123new сказал:

Есть, только кто мешает этому рюкзаку также быстро пропасть потом по системе центральной экономики сервера?)

никто) но это не проблема, это как раз то что нужно)

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

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


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

Gizda ну тогда через createObject создавайте нужный лут в нужном месте, и как на игрока, только на объект этого лута и спавните вещи нужные внутрь.

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


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

Gizda ну тогда через createObject создавайте нужный лут в нужном месте, и как на игрока, только на объект этого лута и спавните вещи нужные внутрь.

Наберусь наглости попросить показать на примере. Если нужно рюкзак алиса, внутри 3 пачки патронов для ак

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


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

Наберусь наглости попросить показать на примере. Если нужно рюкзак алиса, внутри 3 пачки патронов для ак

EntityAI createdItem_EntityAI = EntityAI.Cast(GetGame().CreateObject("AliceBag_Black", "3942.0 0.0 7463.23"));
EntityAI itemEnt;
if (createdItem_EntityAI != NULL)
{	
	itemEnt = createdItem_EntityAI.GetInventory().CreateInInventory("RoadFlare");
	itemEnt = createdItem_EntityAI.GetInventory().CreateInInventory("StoneKnife");
}

координаты от балды, лут тоже

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


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, 123new сказал:
EntityAI createdItem_EntityAI = EntityAI.Cast(GetGame().CreateObject("AliceBag_Black", "3942.0 0.0 7463.23"));
EntityAI itemEnt;
if (createdItem_EntityAI != NULL)
{	
	itemEnt = createdItem_EntityAI.GetInventory().CreateInInventory("RoadFlare");
	itemEnt = createdItem_EntityAI.GetInventory().CreateInInventory("StoneKnife");
}

координаты от балды, лут тоже

Огромное спасибо! А куда ставится код? можно ли его в  инит прописать как include?

 

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

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


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

Gizda код ставится в любое мето нужной вам функции. Проще говоря, хотим мы ставить объект при старте сервера - добавляем его в конец функции main либо в конец блока OnInit в init.c
Как функцию и через include тоже можно сделать, только представленный выше код надо заключить в блок вида:

void MyFNC()
{
тут код вашего скрипта, например, тот что дал выше
}

где MyFNC - название функции.

Соответственно в init.c вызывать будем так: MyFNC();

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


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

Gizda код ставится в любое мето нужной вам функции. Проще говоря, хотим мы ставить объект при старте сервера - добавляем его в конец функции main либо в конец блока OnInit в init.c
Как функцию и через include тоже можно сделать, только представленный выше код надо заключить в блок вида:

void MyFNC()
{
тут код вашего скрипта, например, тот что дал выше
}

где MyFNC - название функции.

Соответственно в init.c вызывать будем так: MyFNC();

Спасибо!

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


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

Народ подскажите пожалуйста, возможно ли заспавнить через init.c рандомный спав из, например, трех предметов на определенной координате?
Например как-то так, если в  инит прописать код через include :

void MyFNC()

{

EntityAI itemEnt;

rand = Math.RandomFloatInclusive(0.0, 1.0);

    if ( rand < 0.35 )
               EntityAI createdItem_EntityAI = EntityAI.Cast(GetGame().CreateObject("ID_Объекта", "X Y Z"));
            else if ( rand > 0.65 )
                EntityAI createdItem_EntityAI = EntityAI.Cast(GetGame().CreateObject("ID_Объекта", "X Y Z"));
            else
               EntityAI createdItem_EntityAI = EntityAI.Cast(GetGame().CreateObject("ID_Объекта", "X Y Z"));



}

Верен ли код и сработает ли?

И еще вопрос. Где именно вызывать функцию, если я хочу заспавнить объект при старте сервера? Потому что OnInit я в файле init.с не нахожу.

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


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

ElBorodos в конце main допиши перед закрывающей скобкой просто и будет работать. Код по сути верен, но можно даже пограммотнее сделать так

void MyFNC()
{
	private auto createdObject;
	private float rand = Math.RandomFloatInclusive(0.0, 1.0);
	private string type_obj = "";
	private vector coords_obj;
    if ( rand < 0.35 )
    {
       type_obj = "ID_Объекта";
       coords_obj = "X Y Z";
    } else 
    {
        if ( rand > 0.65 )
        {
            type_obj = "ID_Объекта";
            coords_obj = "X Y Z";
        }  else
        {
            type_obj = "ID_Объекта";
            coords_obj = "X Y Z";
        }
	}
    createdObject = GetGame().CreateObject(type_obj, coords_obj);
    if(createdObject) {Print("Object " + createdObject.ToString() + " is created! ");}


}

 

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


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

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

 

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


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

123new Спасибо за корректировку.
И если можно, то вот еще вопрос. Правильно ли мое понимание, что я создаю отдельный файл под названием MyFNC.c в той же папке что и init.c находится , записываю туда свой код на спавн объектов которые мне нужны, а далее вписываю команду: "MyFNC();"  в  init.c после функции  main(), которая в самом начале идет ?

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

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


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

123new Спасибо за корректировку.
И если можно, то вот еще вопрос. Правильно ли мое понимание, что я создаю отдельный файл под названием MyFNC.c в той же папке что и init.c находится , записываю туда свой код на спавн объектов которые мне нужны, а далее вписываю команду: "MyFNC();"  в  init.c сверху после первой строчки: void main() ?

в init.c не в начале файла а вот тут, я же сказал, перед ЗАКРЫВАЮЩЕЙ скобкой

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

Ну и мало просто MyFNC.c положить рядом с init.c, его еще через include надо подцепить вверху файла

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


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

123new 
Да. Помню, не правильно написал. 
#include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\MyFNC.c

Что-то подобное?

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


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

123new 
Да. Помню, не правильно написал. 
#include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\MyFNC.c

Что-то подобное?

угу. Тока кавычки не теряй ;)

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


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

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

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

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

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


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

Войти

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


Войти сейчас