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

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

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

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

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

Что такое массивы и тп я в целом знаю, но поскольку на c++ и подобном никогда не писал (только в Дейзе столкнулся), то есть некоторое непонимание некоторых принципов работы с массивами в данном случае

 

Продположим

 

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

 

array<string> stringParam;

// определяем массив текстового типа который живет до завершения работы функции

 

или

 

static array<string> stringParam;

// определяем массив текстового типа который сохраняет в себе данные и после завершения работы функции и при следующем

вызове функции содержимое массива останется и может быть использовано внутри функции (повторного обьявления массива не произойдет)

 

string text = "text";

 

//записываем содержимое переменной text в элемент массива 0

stringParam.Insert(text);

//записываем содержимое переменной text  в элемент массива 1, если переменная text пуста в элемент запишется текст NULL

stringParam.Insert(text, "NULL");

 

читаем в переменную text элемент массива 1

string text = stringParam.Get(1);

 

А вот теперь вопрос

Как мне изменить эелемент 1 массива?

stringParam[1] = "блаблабла";

 

так?

в теории должно быть так

 

Это вообще возможно?

 

И еще про функцию возвращающую результат в качестве массива

 

 array<string> FileRead(string FileName)
 {
  array<string> stringParam;
  string line_content;
   

.....


  CloseFile(File);
  return stringParam;
 }
 

Все верно?

 

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


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

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

  • 0

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

но нужна сортировка массива
 

и кстати

обьясни плиз

 

array <ref Object> и array <Object> чем отличаются

не доганяю я про эти ref

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

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


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

BorizzK

Есть объект и есть указатель на объект.

Указатель указывает не некую область в памяти.

Уже пример приводил... - Выгляни в окно, и найди глазами птичку. Вытяни руку, и пальцем укажи на птичку. А теперь отвернись. - Кто даст гарантию, что птичка все еще на месте? - Птичка объект, а твой палец лишь указатель.

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

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

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


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

ref int B;

B = A;

A = 10;

Print (B);

ну и так же можешь продолжить

A = NULL;

Print(B);

.....

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

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


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

P.S. вообще есть NetID храни айдишники в обычном массиве типа стринг.

там с ними нихрена не случится.

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

А если надо выбрать объект - выбрал элемент, забрал айдишник, и по нему нашел объект(если он есть)

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


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

NoNameUltima Понятное дело, что наличие обьекта надо проверять

В таком ключе все понятно

просто немного запутался

 

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


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

NoNameUltima У меня массив не про игроков, а про различные предметы начиная от машин и заканчивая магазинами и патронами, потому id'ишники тут не катят

 

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

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


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

потому id'ишники тут не катят

Да? ну ладно...

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


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

NoNameUltima Хош сказать, что у всех обьектов есть id'шники?

И как получить id'шник например заспавленной нивы?

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

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


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

BorizzK 

    //! Returns low and high bits of networkID.
    //! This id is shared between client and server for whole server-client session.
    proto void GetNetworkID( out int lowBits, out int highBits );

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


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

NoNameUltima 

Интересная функция

object.GetNetworkID(low, high);

string objid=low + ":" + high;

 

потом отсплитить строку

и потом Object m_object = GetObjectByNetworkId( int networkIdLowBits, int networkIdHighBits ); 

 

Ну вот нельзя было без этих low, high, просто обычно число и все

 

Сатанисты

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

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


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

BorizzK Сделай многомерный массив, где в элементе будет А и Б.

Или класс под ИД...

class netId

{

int low=0;

int high=0;

}

 

ref array<ref netId> m_netId = new array<ref netId>;

netId v_netId;

 

v_netId = new netId;

v_netId.low = ...;

v_netId.high = ...;

 

m_netId.Insert(v_netId);

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

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


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

NoNameUltima Хм
Интересно

 

Ну а пока

Все переменные обьявлены выше и я это опустил

object.GetNetworkID(low, high);
NetID = low.ToString() + ":" + high.ToString();
strNetID = new array<string>;
NetID.Split(":",strNetID);
id_object = GetGame().GetObjectByNetworkId(strNetID.Get(0).ToInt(),strNetID.Get(1).ToInt());

в итоге object == id_object

 

те работает

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

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


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

Господа
Вопрос - 2х мерный массив в энскрипте реален?

 

Мне нужен такого плана

хотел извернуться на тему

 

ref map<vector, bool> m_Zones_State

 

что бы

m_Zones_State.Insert(position, true); итп

 

если надо то

m_Zones_State.Set(position, false)

 

и потом проверять по координате true у нее или false...

if ( m_Zones_State.Get(zone_pos))

 

вобщем нужно это для динамически изменяемых зараженных зон, итп

 

P.S

насколько понял

ref map<string, vector> и ref map<string, string> для этих целей вполне юзабельны

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


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

BorizzK можно что-то типа такого. например

ref map<string, array<string> > Array_Info = new map<string, array<string> >;	

где string - указатель на элемент, а 2 ячейка - список из элементов (например, массив string).
Как образец:

ref map<bool, array<vector> > Array_Info = new map<bool, array<vector> >;	
array<vector> Array_Info_temp = new array<vector>;	
Array_Info_temp.Insert("x y z");
Array_Info_temp.Insert("x y z");
Array_Info_temp.Insert("x y z");
Array_Info.Insert(false,Array_Info_temp);
Array_Info_temp.Clear();
Array_Info_temp.Insert("x y z");
Array_Info_temp.Insert("x y z");
Array_Info_temp.Insert("x y z");
Array_Info.Insert(true,Array_Info_temp);

ну или альтернативка :

ref map<vector, bool> m_Zones_State;
  ref array<vector> M_Zone_Massive;
m_Zones_State.Insert("x y z", true); M_Zone_Massive.Insert("x y z");
m_Zones_State.Insert("x y z", true); M_Zone_Massive.Insert("x y z");
m_Zones_State.Insert("x y z", false); M_Zone_Massive.Insert("x y z");
m_Zones_State.Insert("x y z", false); M_Zone_Massive.Insert("x y z");
m_Zones_State.Insert("x y z", true); M_Zone_Massive.Insert("x y z");
foreach(vector M_Zone_Massive_selected: M_Zone_Massive)
{
  if ( m_Zones_State.Get(M_Zone_Massive_selected)) 
  {
  	.... какие-то действия
  }
}

 

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


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

123new 
походу вариант не прокатит

 

ибо

 

typedef map<int, float>				TIntFloatMap;
typedef map<int, int>					TIntIntMap;
typedef map<int, string>			TIntStringMap;
typedef map<int, Class>				TIntClassMap;
typedef map<int, Managed>			TIntManagedMap;
typedef map<int, ref Managed>	TIntManagedRefMap;
typedef map<int, typename>		TIntTypenameMap;
typedef map<int, vector>			TIntVectorMap;

typedef map<string, float>		TStringFloatMap;
typedef map<string, int>			TStringIntMap;
typedef map<string, string>		TStringStringMap;
typedef map<string, Class>		TStringClassMap;
typedef map<string, Managed>	TStringManagedMap;
typedef map<string, ref Managed>	TStringManagedRefMap;
typedef map<string, typename>	TStringTypenameMap;
typedef map<string, vector>		TStringVectorMap;

typedef map<Class, float>		TClassFloatMap;
typedef map<Class, int>			TClassIntMap;
typedef map<Class, string>		TClassStringMap;
typedef map<Class, Class>		TClassClassMap;
typedef map<Class, Managed>		TClassManagedMap;
typedef map<Class, ref Managed>		TClassManagedRefMap;	
typedef map<Class, typename>	TClassTypenameMap;
typedef map<Class, vector>		TClassVectorMap;

typedef map<typename, float>		TTypeNameFloatMap;
typedef map<typename, int>			TTypeNameIntMap;
typedef map<typename, string>		TTypeNameStringMap;
typedef map<typename, Class>		TTypeNameClassMap;
typedef map<typename, Managed>		TTypeNameManagedMap;
typedef map<typename, ref Managed>	TTypeNameManagedRefMap;
typedef map<typename, typename>		TTypeNameTypenameMap;
typedef map<typename, vector>		TTypeNameVectorMap;

typedef map<Managed, float>		TManagedFloatMap;
typedef map<Managed, int>		TManagedIntMap;
typedef map<Managed, string>	TManagedStringMap;
typedef map<Managed, Class>		TManagedClassMap;
typedef map<Managed, Managed>	TManagedManagedMap;
typedef map<Managed, ref Managed>	TManagedManagedRefMap;
typedef map<Managed, typename>	TManagedTypenameMap;
typedef map<Managed, vector>	TManagedVectorMap;

typedef map<ref Managed, float>	TManagedRefFloatMap;
typedef map<ref Managed, int>		TManagedRefIntMap;
typedef map<ref Managed, string>	TManagedRefStringMap;
typedef map<ref Managed, Class>		TManagedRefClassMap;
typedef map<ref Managed, Managed>	TManagedRefManagedMap;
typedef map<ref Managed, ref Managed>	TManagedRefManagedRefMap;
typedef map<ref Managed, typename>	TManagedRefTypenameMap;
typedef map<ref Managed, vector>	TManagedRefVectorMap;

и других вариантов нет

 

или попробовать замутить...

 

typedef map<vector, bool>  TVectorBoolMap;

 

но чую движек меня пошлет )))

 

И послал

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


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

попробовал

 

в PlayerBase

ref map<string, string> m_Zones_State = new map<string, string>;

 

В функции проверки и обработки

пока статически и проверки на изменения массива zones_centres нет (он вообще в другом месте будет инициализироваться и заполняться и если надо меняться)


			TVectorArray	zones_centers	=	{"6063 0 7871", "9000 0 4999"};

			//Заполняем для игрока при первом запуске
			if (player.m_Zones_State.Count() < 1)
			{
				for (int j = 0; j < zones_centers.Count(); j++)
				{
					player.m_Zones_State.Insert(zones_centers.Get(j).ToString(), "false");
					
				}
			}

тут массив m_Zones_State примет такой вид

для наглядности

 

m_Zones_State[0] => "6063 0 7871", "false"

m_Zones_State[0] => "9000 0 4999", "false"

 

далее

получаем координаты из player.m_Zones_State[0] - он же будет указателем

player.m_Zones_State.GetKey(0) => "6063 0 7871" - потомк это  понятно .ToVector();

 

получаем значение для указателя

player.m_Zones_State.Get("6063 0 7871") => false

 

Я все верно понимаю?

 

А что-то фигня какая-то в реале выходит...

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


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

BorizzK ну скажем

ref map<bool, array<vector> >

всегда можно заменить на

ref map<string, array<string >

где вместо true или false  будет 'true' и 'false' соответственно, а вместо векторных координат их строковые представления.

Т.е. грубо говоря поиграться с интерпретацией

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


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: DarkShy
      Приветствую! 
      Купил  мод. При подписи ошибок не возникает, если его одного использовать - все ок, но если добавить еще один мод в addons, то при входе клиента на сервер вываливается ошибка, что мол подписи не совпадают.
      Ключ один использовал, ключ в "ключах" лежит. 
      "Клиентский PBO не является частью сервера. Убедитесь, что мод установлен правильно, и вы не добавили новых PBO. Попробуйте восстановить мод через средство запуска."
    • Автор: mrDante
      Всем привет,первая Тема от меня..
      вопрос заключается в следующем,как отключить постройки статичные колонок с водой чистой(условно)?
      а зачем!?
      ну такова задумка,по сценарию...что бы игроки на PVE кипятили воду сами..
      в mpmissions я все cfg*****.xml комментировал имена и позиции, с ними, как положено <!--***-->..все map********.xml пересмотрел,перепроверил..
      стоят моды : @AdvancedBanking;@Airdrop-Upgraded;@CF;@Code Lock;@CJ187-Cars;@CJ187-MoreCrashsites;@GraveCross;@KillFeed;@MedicalAttentionUpdated-DepHelper-Vanilla;@MedicalAttentionUpdated-Core;@MedicalAttentionUpdated;@LessLessAnimalMeat;@No-Vehicle-Damage;@PartyMe;@ToxicZone;@Trader;@TraderFix_v2;@VanillaPlusPlusMap;@VPPAdminTools....
      но они всё равно на карте имеются...то есть,я на сервере их вижу и могу с ними контактировать...
      куда рыть?
      спасибо...
      P.S.
      прошу не угарать,надо мной,я не профи-скриптер,самоучка,которому пригорело ставить свой Сервер для народа...
      спасибо!
    • Автор: Pinya
      Добрейшего времени суток товарищи. Намечается полноценный ПРОЕКТ с некоторым числом серверов и блаблабла, это никому не интересно. Дело в том, что в процессе реализации возникли "небольшие" трудности. Прошу помочь тех, кто реально занимался proxmox, в курсе матчасти Linux'а или тех кто уже сталкивался с этим.

      Суть проблемы:
      Имеется Proxmox для виртуализации машинок. Discord bot'a, Windows Server для запуска серверов DayZ и т.д. Дело в том, что запуская .bat на виртуалке, сервер просто не ищется в списке лаунчера, но если поменять DMZ на адрес этой машины - всё работает, но теряется удаленный доступ к Proxmox (об этом позже).

      Вот что нужно знать понимания ситуации в будущем:
      IP адреса следующие:
      Роутер (Шлюз) - 145.254
      Proxmox - 145.250
      Windows Server (Dayz) - 145.245 - VM
      DMZ настроен на - 250

      Что имеем в итоге:
      Выставив в роутере DMZ на 245 - Можно запускать сервак любой игры с любым портом и он будет виден по внешнему (белому) IP. НО доступ к вебморде proxmox'а - не будет, т.к. пакетики идут на 245.
      Костыль: Сделать RDP на 245 и через него гулять на 250 - не годится!

      Далее выставив DMZ на 250 - Сервер любой игры доступен НЕ будет! НО доступ к вебморде proxmox'a - появится. Однако если вручную прокинуть порт того же Minecraft (самое простое что нашёл, простите) через rinetd - то он работает. с DayZ такое не прокатывает.

      В интернете пишут про правила iptables и firewall, но ничего из этого не помогло. DayZ использует зачастую рандомные порты по udp и создавать здоровенный список правил в rinetd - это минус к отклику сервера а также безопасности.

      Может кто сталкивался с любым поднятием сервера на Linux и в курсе этой темы - подскажите как решали. Неделя отчаянной работы уже заставляет краем глаза посматривать на кошелёк чтобы это сделал хоть кто-то более шарящий в этом деле, но желательно всё же объяснил. Заранее спасибо всем кто откликнется - жду всех на обсуждение. В случае успеха можно будет написать статейку по настройке на форум.
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
    • Автор: zfbubusik
      Привет. 
      Я сделал несколько
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • Наш выбор

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

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

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

Поддержка