Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 0
Gizda

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

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

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

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

Share this post


Link to post
Share on other sites



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

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

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

Edited by Gizda (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
  • 0
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");
}

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

Share this post


Link to post
Share on other sites
  • 0
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?

 

Edited by Gizda (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

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

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

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

Share this post


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

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


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

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

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

Спасибо!

Share this post


Link to post
Share on other sites
  • 0

Народ подскажите пожалуйста, возможно ли заспавнить через 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.с не нахожу.

Share this post


Link to post
Share on other sites
  • 0

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! ");}


}

 

Share this post


Link to post
Share on other sites
  • 0

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

 

Share this post


Link to post
Share on other sites
  • 0

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

Edited by ElBorodos (see edit history)

Share this post


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

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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

Share this post


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

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

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

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

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.