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

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

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

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

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

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

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

BorizzK Прочитай про ини файлы.... ты сейчас бред несешь. Поставь тогда xml, json пофигу же - все файлы текстовые...

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

в данном случае нет никакого ини интерфейса, есть банальный и топорный парсинг txt файла.

 

Есть стандартизированные форматы файлов.

xml,json,ini...

а свои ты как хочешь можешь называть. Назови .dat - абстрактное расширение файла в котором расположены некие данные. Ничего под собой не подразумевающее.

 

сводная справка...

https://ru.wikipedia.org/wiki/.ini

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

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


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





NoNameUltima ini подрузамевает что?

давай будем честными, обратимся к ВИКИ и закроем это вопрос раз и навсегда

https://ru.wikipedia.org/wiki/.ini

 

ну и как бы

неважно какое расширение файла

зачем городить xml для простой конфиги типа значение=параметр или для списка?

вот нахрена?

 

B вообще

как расширение файла влияет на проблему загрузки координат спавна и uid/id из файла?

точнее не проблему, а процесс

ответ - А НИКАК )))

 

про стандартизированность ini - честно, прости, взоржал

 

ЗЫ

чем меньше текста, тем лучше

чем меньше кода, тем лучше

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

3 золотых правила

 

 

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

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


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

BorizzK У тебя в файле, есть секции? Нет? Есть ключи ВНТУРИ секций? нет? Ключи и значения разделены знаком равенства? Нет? В дайзе(раз ты цепляешь данный файл к дайзу) есть интерфейс позволяющий работать с ини - узнать кол-во секций\удалить секцию\прочесть значение ключа в определенной секции? или нет?

Ничего этого нет у тебя. Тогда нафига называть самокат - вертолетом?

Я открываю твой файл, и не вижу никаких секций, ключей, не вижу как в коде идет обращение именно к ини, а не к обычному текстовику...... зачем ты вводишь в заблуждение людей?))

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


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

С++

http://netcode.ru/cpp/?artID=548

Delphi(pascal)

http://www.programm-school.ru/rabota_s_ini_v_delphi.html

и т.д. и т.п.

Вот когда это будет в дайзе, или когда ты реализуешь класс аналогичный, тогда и будут ini.

А пока это абстрактные данные, ну и храни их как хочешь, давай им расширение как душе угодно, но не путай.

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

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


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

NoNameUltima Зачем это все?

Есть файл

банальный

текстовый

разобрать на 2 позиции? split

прочитать координаты?

банально и просто

зачем усложнять? смысл?

 

еще раз

ini НЕ СТАНДАРТИЗИРОВАН

как и cfg и conf и cf

 

Или покаж RFC

 

 

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

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


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

BorizzK Ну раз он для тебя НЕ стандартизирован, ок. Пиши как хочешь. Для всех остальных он имеет вполне себе стандартизированный смысл. Когда тебе в коде предложат файл json, и ты в радостях полезешь в него, а увидишь в нем бред сивой кобылы, из которого вася тупо парсит данные, - "потому что он текстовый и нефиг усложнять", тогда осознаешь. Ну или когда кто то еще выдаст тебе "ini", и скажет - тут настройки для сервера, и ты на радостях полезешь настраивать его, а вместо конфига внятного -

[SERVER]

port=2302

 

увидишь файл с таким кодом типа -

"мамамылараму+-^папарамунемыл"

ну тогда видимо задумаешься, - а правда ли он НЕ стандартизирован.

 

P.S. И не путай понятия -

Там же по ссылке сказано, что файлы не имеют СТРОГОЙ стандартизации. А не полностью она отсутствует)

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

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


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

BorizzK расписал всё понятно спасибо, но у меня почемуто не открываются файлы из моего профиля...ни для точек спавна ни я так понимаю для админа...и почему ни один из кейсов не срабатывает а персанаж всегда получает
 

        itemEnt = player.GetInventory().CreateInInventory("Rag");
        itemBs = ItemBase.Cast(itemEnt);
        itemBs.SetQuantity(4);
        SetRandomHealth(itemEnt);

        itemEnt = player.GetInventory().CreateInInventory("RoadFlare");
        itemBs = ItemBase.Cast(itemEnt);
уже и файлы на txt пробовал переименовать(и в коде и в папке)...
и исходник Мизива нашёл в вк его полностью скопировал вставил...ничего не помогает(

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

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


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

mastaZz Профиль не твой, профиль сервера
Профиль в данном случае это путь указанный в параметре запуска сервера -profile=путь

если profile=c:\111

то клади файл 111.cfg в эту папку

и $profile:111.cfg будет указателем именно на это файл - те c:\111\111.cfg

расширение не важно

 

Ты опять же невнимателен

см стартовый пост темы

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

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


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

NoNameUltima Он не для меня не стандартизирован

Он вообще не стандартизирован

общее не интерисует

Есть в RFC - стандартизирован, нет, все свободны

Есть обще принятое - ini содержит значение = параметр

все

тема про ini закрыта

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


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

BorizzK 
 

@echo off 
-cpuCount=4
-port=2302


-profile=mastazz


cls 
set version=1.0 
set wat=Dayz SA 

title %wat% Watchdog 

cd D:\mastaZz\DayZ\DayZserverPR  // пропиши свой путь

:watchdog 
echo (%time%) %wat% started. 
start "Dayz_SA" /wait /affinity FF /high "DayZServer_x64.exe" -config=mastazz\serverDZ.cfg // - это папка в корне сервера которую говорят сделать при шаге 1 пропиши свой путь
echo (%time%) %wat% closed or crashed, restarting. 
goto watchdog

 

 


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

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

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


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

BorizzK

Я не могу получить доступ к stringValue из твоего ini файла.

Вот так пытаюсь -

file = OpenFile("$profile:playersSetUID.ini", FileMode.READ);

file.ReadString("$profile:playersSetUID.ini", "---", v_Text);

Скажи, как читать твой ini файл?

А еще я пытался отредактировать его в блокноте, но формат ini расписан тут

https://en.wikipedia.org/wiki/INI_file

 

А у тебя, почему то все по другому...

 

Пример формата playersSetUID.ini - STEAMUID|номер

76531195156927007|1
76561838156127001|2

Не пойму, что за секция в которой лежат эти значения, и почему ключи и значения разделены | а не знаком равенства.

 

Зачем ты меня обманываешь, что это ini?

:dry:

 

Обрати внимание, что по лицензиям и платформам, они все должны поддерживать секции, там прям так и написано(((

Но их нет(

Может у вас какая то собственная ОС, или язык программирования особенный?)

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

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


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

NoNameUltima Когда я увижу .json

Для начала я пойду читать rfc 7159

 

Ты не против, если я скрины с форума оставлю?)))))

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


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

NoNameUltima Если ты УМЕЕШЬ ЧИТАТЬ то прочтешь не вики, а RFC

ну и как бы

Есть RFC - есть стандарт

нет - просто блаблабла

 

при всем моем уважении, завязывай

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


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

NoNameUltima Да, и хватит бухать ))))))))))))

А знак |  можно заменить на =

И секции внедрить и читать их так же

кстати

Подумалось

А заваяю ка я на днях ini для мода

где все в одном и координаты и uid'ы и лут в разных секциях

и дам ему расширение .dayzini )))))

 

 

 

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

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


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

BorizzK 

Ну так замени, и внедри.

Напиши свой класс для ini. Тогда и будет ini. Но тут два нюанса

1. Вряд ли ты сделаешь его достаточно быстрым(но тут ремарка - если это реально конфиги небольшие, то и скорость особо не важна).

2. Для того чтобы добавить полноценную работу с ini бесам достаточно потратить 5мин. У них то в отличии от нас есть исходники, и банально добавить API к уже существующему- ну реально 5-10 мин. А делать свой класс расписывая доступы и т.п. зная это, ну как то...

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


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

NoNameUltima 
Быстрым насколько?

 

Скажем по формату

надо продумать

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

 

dayzmod.ini

 

[MOD]
Name=TISY

[MOD PARAMS] //Спавиним то или иное в зависимости от значений в этой секции
SPAWNCARS=1;
SPAWNHELI=1;
SPAWNBUILDS=1;

[ADMIN UIDs] //UID'ы админов
0001010010010

[LOOT UIDs] // Комплекты лута по UID
0001010070010=1
0001010090010=2

[LOOT TISY] //номера комплектов или массив комплектов выбираемые в зависимости от значения Name   в секции MOD

[SPAWN POINTS ZELENO] //точки спавна выбираемые в зависимости от значения Name  в секции MOD
1111, 366, 1111

[SPAWN POINTS TISY] //точки спавна выбираемые в зависимости от Name=  в секции MOD
2222, 366, 3333

 

Ну и парсить это последовательно

итд итп

в принципе не сложно

 

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


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

Ребята, не в обиду, но особенности разбора ini и json-форматов, написание для них функций и личные терки обсуждайте в личке, не к чему это все в данной теме. И так тему загрязнили донельзя.

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


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

123new Тут это к месту, поскольку мы скрипты обсуждаем. - Рядовому юзеру может быть ваще параллельно, а вот я к примеру, зашел - увидел, что у него используется ini - О думаю - неужто богемия разродилась и добавила работу с ини файлами!? начинаю мотать код, и смотреть, что и как... И вижу что это просто наебахтунг)) Никаких ини нет в помине, нет формата, нет стандартизации, нифига... Может быть есть собственный класс для работы? - неа - нема.

В итоге просранное время... С таким успехом можно и темы называть как хочется) - Стандарта то нету) И В теме про спавн лута в арме, начинать писать о спавне марсоходов из какой то другой игры))

 

Но борзик упирается) Непонятно зачем правда...

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


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

NoNameUltima обсуждайте лучше эти нюансы тут

 

так как это по большей части сам скриптинг пошел в общем понимании. А то рядовой пользователь заходит в тему, видит 3-4 страницы тексту непойми о чем для него, и охреневает.

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


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

NoNameUltima 

Я уперся по причине что нет стандарта ini

Если ini нет в  rfc

Есть общепринятые для некоторых осей и по и все

И секции в ini вовсе необязательны, это даж в вики написано

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


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

m_pointPlayerPVP.Debug(); объясните пожалуйсто что делает эта строчка???

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: paranoyk
      Делается это немного нудно,но сравнительно просто (когда есть точки спавна).
      При спавне Land_Wreck_Uaz с помощью оффлайнера получим строку следующего вида.
      SpawnObject( "Land_Wreck_Uaz", "14348.268555 4.133186 13191.887695", "0.000000 0.000000 0.000000" );
      Нам необходимо задать точку для спавна "сетки лута".
      Для этого мы в файл по mapgrouppos.xml прописываем координаты взятые из строчки для спавна объекта (выше).
      <group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695" rpy="0.000000 0.000000 0.000000" a="0.000000" />
       
      group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695 - координаты запавненого УАЗика.
      rpy="0.000000 0.000000 0.000000" - числовые значения Yaw,Pitch,Roll соответственно. Берём их из всё той же строчки, но важно помнить что они там записаны в обратном порядке.
      a="0.000000"- угол порота сетки относительно угла поворота......короче! (Yaw-90) х (-1) Уже писал,что можно играться с 360 градусами,но пишу всегда полученное значение,проблем нет.

      И главное "сетка лута". Изначально её УАЗик не имеет, пишем её сами в файл mapGroupProto.xml .
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="...класс вещей для спавна" /> <usage name="...класс вещей для спавна" /> <container name="lootfloor" lootmax="5"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" />-левое сиденье <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" />-правое переднее седение полик <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" />-место за кпп середина <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" />-правая часть капота возле стекла <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" />левая часть капота впереди </container> <container name="lootshelves" lootmax="3"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" />-правое переднее крыло <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" />- центр переднего бампера <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" />-слева на бампере </container> <container name="lootweapons" lootmax="3">-"контейнер" для спавна длинногоствольного оружия, максимальное колличество в спавне, патронов и гранат. <category name="weapons" /> <category name="explosives" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> -центр багажника <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" />-заднее левое крыло <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" />-заднее правое крыло </container> </group> Вставляем нужные категории,классы и тэги,это практически конструктор.
      К примеру у меня пока выглядит так -
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="Military" /> <usage name="Industrial" /> <usage name="Office" /> <container name="lootfloor" lootmax="5"> <category name="food" /> <category name="clothes" /> <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" /> <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" /> <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" /> <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" /> <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" /> </container> <container name="lootshelves" lootmax="3"> <category name="tools" /> <category name="vehiclesparts" /> <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" /> <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" /> <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" /> </container> <container name="lootweapons" lootmax="3"> <category name="weapons" /> <category name="explosives" /> <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" /> <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" /> </container> </group> Также можно даже исключить полностью строчку lootmax="...". Большой разницы я не заметил.
      Сразу скажу,баги стандартные -длинноствол в багажнике может пробить ствол,иногда возможна "левитация" предметов.
      Во общем как то так.
      (возможно позже вылож сетку и для обломков V3S и С130. Решение для "заброшенной колонны" на севере-тоже в процессе.Кому надо-пишите)
    • Автор: AntonivkA
      Итак, господа. В 1.05 разрабы похоже сломали механику спавна лута. У меня предметы стали спавниться там, где их не должно быть. Заметил сразу, поскольку таблица лута у меня переделана основательно. Например, Песочный барьер у меня прописан только на Военках и Полиц.участке, и все работало корректно до 1.05. Теперь, песочный барьер я нахожу в гаражах, мастерских и жилых домах вокруг полиц. участка и в самом полиц. участке. Помимо этого, ребята стали замечать и скинули инфу, что на СЗ в гаражах и мастерских стал появлятся военный лут, хотя его там не должно быть.
      Кто-что скажет по этому поводу. Заметил ли кто-то подобное у себя?
       
    • Автор: 123new
      Нам понадобится:
      1. Сервер DayZ Standalone (см. тему вот эту)
      2. Notepad++: бесплатно на оф. сайте
      3. Немного времени и настойчивости (обычно бывает в комплекте и так)
       
      И так, начинаем:
      1. Открываем блокнотом mpmissions\dayzOffline.chernarusplus\init.c
      P.S. Имя папки dayzOffline.chernarusplus у вас может отличаться, будьте внимательны
      2. В начале файла добавляем:
      static int time_repeat_info_players = 10; //in seconds static string file_name_info_players = "$profile:PlayersLogFile.txt"; static void WriteFile(string file_name, string text) { private FileHandle fhandle; if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Запись_в_файл]: Не удалось открыть файл для записи: " + file_name); Print("[#Запись_в_файл]: [Запись]: " + text); return; } FPrintln(fhandle, text); CloseFile(fhandle); } static void WritePlayersInfo() { array<Man> players = new array<Man>; Man player; Man player_test; GetGame().GetPlayers( players ); if (players.Count() > 0) { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } for ( int i = 0; i < players.Count(); ++i ) { player_test = players.Get(i); if( player_test ) { PlayerIdentity p_identity = player_test.GetIdentity(); private string coord_pl = player_test.GetPosition().ToString(); private string Name_P = p_identity.GetName(); private string UID_P = p_identity.GetPlainId(); WriteFile(file_name_info_players, "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl); } } } else { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } } } Где 'PlayersLogFile.txt' меняем на нужное вам имя файла, а в 'time_repeat_info_players' настраиваем время повтора проверки списка игроков для перезаписи файла
      3. Находим в файле блок 'void main()' и в его конце перед закрывающей '}', поумолчанию это строка
      weather.SetWindFunctionParams(0.1, 0.3, 50); добавляем ниже строку:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, (time_repeat_info_players * 1000), true); 4. Готово, если не допустили ошибок, при наличии хотя бы 1 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.
  • Наш выбор

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

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

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