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
BorizzK

DAYZ enScript (вопросы, ответы)

Recommended Posts

Предлагаю все возможные гайды по enscript/моддингу публиковать в этой теме

Ссылка на предыдущею версию темы по enscript версии 0.62 - там можно прочитать в общих чертах про этот язык

 

Edited by BorizzK
добавлена пометка в названии темы (see edit history)

Share this post


Link to post
Share on other sites







зОдачко 1
 

Телепортнуть игрока рядом с определенным предметом/игроком и тп

 

void ChangePos(vector pos)
{
ref array<Man> players = new array<Man>;
GetGame().GetPlayers( players );
vector teleport_pos;
PlayerBase iplayer;
for ( int i = 0; i < players.Count(); i++ )
{
teleport_pos[0] = pos[0] + 5;
teleport_pos[1] = 0;
teleport_pos[2] = pos[2] + 5;
Class.CastTo(iplayer, players.Get(i));
iplayer.SetPosition(teleport_pos);
}
}

 

ChangePos(предмет.GetPosition());


Игрок должен телепортнуться на расстоянии от самого предмета (+5м по оси X  + 5м по оси Y) и на поверхности, а он телепортится под землю если предмет лежит на горке.... Раньше если Z = 0 то это всегда означала поверхность...
Как сделать так что бы он на поверхности остался?
Мизев сказал, что была какая-то функция позволявшая по координатам X и Y найти координату Z соответствующую поверхности, но что это за функция сейчас не помнит... Может кто знает о чем речь

Share this post


Link to post
Share on other sites
16 минут назад, BorizzK сказал:

 была какая-то функция позволявшая по координатам X и Y найти координату Z соответствующую поверхности, но что это за функция сейчас не помнит... Может кто знает о чем речь

Брехня.(но если найдешь че - маякни. Я не нашел... пока что).

 

Из того что есть, но бесполезно

/*!
Get water ocean height at given point
\param worldX        world x position
\param worldZ        world z position
*/
proto native float GetOceanHeight(float worldX, float worldZ);


/*!
Get water ocean height and displacement at given point, returns vector(displaceX, height, displaceZ)
\param worldX        world x position
\param worldZ        world z position
*/
proto native vector GetOceanHeightAndDisplace(float worldX, float worldZ);

Share this post


Link to post
Share on other sites

Ну те телепортнуть однозначно на поверхность не получится пока...
Чтож пошел рыть

 

Кстати
вот include в init.c в корне миссии работает оказывается

 

#include "mpmissions\dayzOffline.chernarusplus\init_mod.c"

 

)))

 

 

Share this post


Link to post
Share on other sites

BorizzK инклюд как бэ везде работает. А почему не должен?

по поводу поверхности, хз... по идее - должно быть. Ну как то же спавнится техника\зомбы рандомно. Сомневаюсь, что там высота задана)

Share this post


Link to post
Share on other sites

NoNameUltima Спавнится, да. Но если SetPosition (5000,0,5000) то оказываешься на уровне моря
Хотя
Сейчас еще раз проверю

 

Share this post


Link to post
Share on other sites

BorizzK я про то, что возможность должна быть или спавнить с каким то аргументом - чтоб ось З была "на поверхности", ну или функция.

Share this post


Link to post
Share on other sites

BorizzK возвращаясь к тому, что писал в соседней теме, что я предлагаю:
1. Пишем функцию, чтения файла и записи данных в массив

2. Проверяем массив строк построчно, и ищем какие-либо значения в строках (например, tpto=). Если нашли, убираем контрольное слово, и оставляем в строке данные, которые передаем в следующую функцию

3. Третьей функцием обрабатываем аргументы. например, аргумент был "tpto=Dima,Gabriel", значит в функцию попало "Dima,Gabriel"

4. В соответствии с оставшимися данными в функции выполняем действие, например находим в списке игроков object персонажа в ником Dima и телепортируем его к Gabriel

5. Готово, операция выполнен, пишем в лог действие.
Муторно? Не спорю. Не удобно? Возможно. Но это хоть какой-то вариант посыла комманд серверу и операций над игроками.

Соответственно, список функций можно расширять.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites

123new Как вариант для некоторых действий подойдет

Но только для некоторых

 

Share this post


Link to post
Share on other sites

123new псдц. и зачем это?

Или ты про админку прогрммную не ИнГейм?

Ну так то можно, но... убого. Делал еще на А2 такое в DZEU был телепорт и т.п.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites

Кстати

Надо присмотреться

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

Share this post


Link to post
Share on other sites

BorizzK 

vector SnapToGround(vector pos)
    {
        float pos_x = pos[0];
        float pos_z = pos[2];
        float pos_y = GetGame().SurfaceY(pos_x, pos_z);
        vector tmp_pos = Vector(pos_x, pos_y, pos_z);
        tmp_pos[1] = tmp_pos[1] + pos[1];
    
        return tmp_pos;
    }

 

или просто

item.PlaceOnSurface();

 

Это к твоему вопросу, - как на поверхность положить.(в 1 примере есть получение позиции)

Share this post


Link to post
Share on other sites

Спасибо.

Очень полезно.

 

А говорил БРЕХНЯ )))

 

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites

NoNameUltima BorizzK понятно что убого и ограниченно по действиям, но в любом случае это хоть что-то, хоть как-то управлять сервером.

Share this post


Link to post
Share on other sites

 

void TeleportToPos(vector pos, float distance) // Teleport all players to airdrop position on land + distance
 {
  ref array<Man> players = new array<Man>;
  GetGame().GetPlayers( players );
  vector teleport_pos;
  
  for ( int i = 0; i < players.Count(); i++ )
  {
   teleport_pos[0] = pos[0] + distance;
   teleport_pos[2] = pos[2] + distance;
   teleport_pos[1] = GetGame().SurfaceY(teleport_pos[0], teleport_pos[2]);
 
   PlayerBase iplayer;
   Class.CastTo(iplayer, players.Get(i));
   
   SendMessage("You are teleport to: " + teleport_pos.ToString());
   Print("Player " + iplayer.ToString () + " teleport to: " + teleport_pos.ToString());
   iplayer.SetPosition(teleport_pos);
   iplayer.PlaceOnSurface();
  }
 }


 

Ну и как бы начинаются дичайшие глюки

игроки бегают не по рельефу, а на высоте куда их поместило

оказались на горке и бежим к старому

так и бегаем над старым ))))

уверен, что это глюк движка...

 

 

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

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

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

Share this post


Link to post
Share on other sites

iplayer.PlaceOnSurface(); тут лишнее (добавлял для теста)

 

убрал

Все ОК!

 

Одна задачка решена )))


 

 

Share this post


Link to post
Share on other sites

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

Можно вобщемто начинать делать гуи, и искать - как серв и клиент инфой обмениваются(собственные пакеты с данными).

Share this post


Link to post
Share on other sites

Есть паоа идей

Для реализации хочу понять

Где на стороне сервера в контексте и6рокао брабатывается 

Смерть игрока, аналог event_playerkilled

Нанесение урона, аналог event_assetdamage

Стрельба, аналог event_weaponfired

 

Кто подскажет?

 

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites

BorizzK смерть на серверной стороне обрабатывается:
scripts\4_World\Entities\ManBase\PlayerBase.c
функция override void EEKilled( Object killer )
спасибо за наводку от Мизева. Думаю, именно ее надо крутить.

Share this post


Link to post
Share on other sites

123new Мизев говорил, что на входе object killer пустой прилетает...

 

Share this post


Link to post
Share on other sites

BorizzK он там же и писал как можно определить принадлежность оружия к тому или иному объекту

Share this post


Link to post
Share on other sites

123new Ну да, получив обьект оружия, из которого убили, перебирам вокруг игроков с этим обьектом и получив нужного игрока назначаем его убийцей

костыль, да

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

  • Similar Content

    • By CubeIn
      Приветствую друзья, возникла неприятная ошибка.
      Подписал все ключи через DS Utils, вставил ключ в северную часть, но все равно при заходе на сервер пишет данную ошибку.
      Client contains PBO which is not part of server data
       
    • By CubeIn
      Есть ли у кого ни будь шаблон или инструкция как создать свой шеврон?
      Нашел видео от Фидова, но ссылка на шаблон не действительна

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By BorizzK
      Дружбан ваяет тягач/грузовик и тп
      Он довольно большой и фургон/кузов загораживает обзор + ему надо было разглядеть подвеску в работе поподробней
      Те камеру надо было отодвинуть
      Поскольку бегемоты, то ли по глупости, то ли по скудоумию (скорее оба варианта ), в конфиге модели не предусмотрели таких параметров как
      дистанция камеры, углы ее наклона итд итп, а сделали это тупо в скрипте, пришлось моддидь.
       
      Вариант моддинга внешней (от 3го лица) камеры автомобильчика, как обычно через класс, но моддим конструктор (без override). Я не стал изобретать велосипед и поступил по "серверному"... Вроде получилось и все работает как надо. Зил кажет нормально, остальные то же.
       
      modded class DayZPlayerCamera3rdPersonVehicle extends DayZPlayerCameraBase { void DayZPlayerCamera3rdPersonVehicle (DayZPlayer pPlayer, HumanInputController pInput) { Print("CLIENT: КАМЕРА ДЛЯ ТОЧИЛЫ: ИГРОК: " + pPlayer.ToString() + ", ТОЧИЛА: " + pPlayer.GetCommand_Vehicle().GetTransport().GetType()); if (pPlayer.GetCommand_Vehicle().GetTransport().GetType() == "ZIL130") { m_fDistance = 8.0; //дистанция m_CameraOffsetMS = "0.0 1.3 0.0"; //стартовый наклон камеры Print("CLIENT: КАМЕРА ДЛЯ ТОЧИЛЫ: МОЯ КРУТАЯ ТОЧИЛА: ДИСТАНЦИЯ КАМЕРЫ: " + m_fDistance); return; } m_fDistance = 4.0; //стандартная дистанция m_CameraOffsetMS = "0.0 1.3 0.0"; //стартовый наклон камеры Print("CLIENT: КАМЕРА ДЛЯ ТОЧИЛЫ: СТАНДАРТНАЯ ТОЧИЛА: ДИСТАНЦИЯ КАМЕРЫ: " + m_fDistance); } }  
      Понятно что это для клиента (ну те для обычного мода) и на сервере бесполезно.
       
      Фото с тестового грузовика из АРМА 3 мод. свои он пока просил не показывать

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

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

×
×
  • 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.