Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#761 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 17:30

 

 

 

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

 

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

Я так же вызову инвентарь именно этого объекта и положу туда.


Edited by Erepb, 17 September 2017 - 17:34.

  • 0

#762 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 September 2017 - 17:36

Erepb, вам нужно сделать полную надстройку над стандартным инвентарем - переписать весь интерфейс связанный с этим, создать логику "синхронизации" инвентаря (Виртуального), а потом сделать "проекцию" этого виртуального инвентаря на реальный, что бы юнит был одет и с оружием в руках. Это не сложно но оооочень долго и муторно будет
Erepb, для хранения инвентаря (Виртуального) достаточно некого подобия БД, без всяких там "реальных" объектов и контейнеров
  • 0

#763 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 17:40

Erepb, вам нужно сделать полную надстройку над стандартным инвентарем - переписать весь интерфейс связанный с этим, создать логику "синхронизации" инвентаря (Виртуального), а потом сделать "проекцию" этого виртуального инвентаря на реальный, что бы юнит был одет и с оружием в руках. Это не сложно но оооочень долго и муторно будет
Erepb, для хранения инвентаря (Виртуального) достаточно некого подобия БД, без всяких там "реальных" объектов и контейнеров

Вы видимо не поняли для чего все эти пляски с бубном. Я хочу нанести на каждое имеющееся на острове оружие номер. Говорят - не возможно так как это предмет итд (много мне непонятных слов ))). А номером может обладать только объект. Вот я и пытаюсь скрафтить костыли, что бы был нумерованый объект в котором был только конкретный и только один предмет и тогда его можно будет посчитать и отследить, а все остальное (дюпаное) оружие чистить скриптом каждые ХХ секунд/минут.

 

ПС: тут вопрос не в инвентаре, его желательно тоже чистить от оружия у каждого игрока у которого нет с собой Объекта от такого оружия. Я хочу сделать оружие Объектом. Понимаю - сумбурно, но вроде мысль ясна. Или не?

 

ППС: Для примера, лежит в магазине на полочке "Дом" (по факту это объект содержащий в себе контейнер с единственным и конкретного класса доступным содержимым), выглядит он как Пистолет (это же возможно ведь?). При покупке он не попадает ко мне в инвентарь, а как-либо ко мне цепляется (тут вопрос возможно ли это), а в меню по колесу появляется отдельный доступ в инвентарь "Дома", откуда я уже возьму пистолет (предмет) в руки и буду пользоваться. Убирать его, правда придется тоже в свой "домашний" инвентарь. И выкладывать на землю именно объект.


Edited by Erepb, 17 September 2017 - 18:03.

  • 0

#764 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 September 2017 - 17:46

Erepb, что бы сделать это, вам придется сделать все что я написал выше, по другому просто никак. Нужно написать то, где хранить эти "предметы", нужно написать, интерфейс для взаимодействия с этим, нужно написать алгоритм для работы с сетевой частью (Иначе на кой хрен вам иметь предметы с уникальным идентификатором в одиночной то игре) - полную замену стандартного инвентаря т. к. игра в априоре не поддерживает уникальные идентификаторы дял предметов

Edited by vlad333000, 17 September 2017 - 17:48.

  • 0

#765 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 18:00

vlad333000, в основном понятно, кроме необходимости замены стандартного инвентаря, его просто чистить от оружия если к юниту не привязан Объект содержащий тот же класс оружия.


  • 0

#766 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 September 2017 - 18:14

vlad333000, в основном понятно, кроме необходимости замены стандартного инвентаря, его просто чистить от оружия если к юниту не привязан Объект содержащий тот же класс оружия.

это также можно сделать со стандартной системой, но при выкладывании и взятии предметов нужно будет находить от куда и куда они берутся|кладутся (способов получить эту информацию без анализирования окружающих инвентарей нет а это потребует крайней отточенности, как сказал vlad относительно не сложно, но не уложиться в пару команд, и этот вариант будет использовать больше расурсов)


Edited by Ilias, 17 September 2017 - 18:21.

  • 0

#767 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 18:19

 

vlad333000, в основном понятно, кроме необходимости замены стандартного инвентаря, его просто чистить от оружия если к юниту не привязан Объект содержащий тот же класс оружия.

это также можно сделать со стандартной системой, но при выкладывании и взятии предметов нужно будет находить от куда и куда они берутся|кладутся (способов получить эту информацию без анализирования окружающих инвентарей нет а это потребует крайней отточенности, как сказал vlad относительно не сложно, но не уложиться в пару команд)

 

То есть очистить вообще всё оружие с острова, кроме того которое в инвентарях заранее известных объектов не возможно?


  • 0

#768 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 September 2017 - 18:23

 

если *-заранее то: да, но можно достать список всех объектов


Edited by Ilias, 17 September 2017 - 18:24.

  • 0

#769 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 18:26

"но при выкладывании и взятии предметов нужно будет находить от куда и куда они берутся|кладутся" - зачем? Они могут быть положены только в конкретный объект, а вот объект уже можно положить куда либо, ни один другой их не примет (по фильтру), при выкладывании на землю (хотя как я понял это тот же инвентарь) - просто исчезнет и все


Edited by Erepb, 17 September 2017 - 18:30.

  • 0

#770 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 September 2017 - 18:32

"но при выкладывании и взятии предметов нужно будет находить от куда и куда они берутся|кладутся" - зачем? Они могут быть положены только в конкретный объект, а вот объект уже можно положить куда либо, ни один другой их не примет (по фильтру), при выкладывании на землю (хотя как я понял это тот же инвентарь) - просто исчезнет и все

как вы хотите: придётся сделать дополнительный инвентарь для "объект в объекте",

и вся система будет более ресурсотребовательна и запутанна


Edited by Ilias, 17 September 2017 - 18:39.

  • 0

#771 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 18:36

 

"но при выкладывании и взятии предметов нужно будет находить от куда и куда они берутся|кладутся" - зачем? Они могут быть положены только в конкретный объект, а вот объект уже можно положить куда либо, ни один другой их не примет (по фильтру), при выкладывании на землю (хотя как я понял это тот же инвентарь) - просто исчезнет и все

как вы хотите: придётся сделать дополнительный инвентарь для "объект в объекте"

 

Пусть так, на Лайф серверах реализованы подобные инвентари в объектах, наверно не сложно. при введении на остров очередной "пушки" создается новый Объект с заранее известным номером, может же "взлететь"?

 

ПС: на деле я не хочу сделать "именно так или иначе" я хочу извести дюп на корню, а по возможности добавить для Лайф проектов отслеживание стволов.


Edited by Erepb, 17 September 2017 - 18:39.

  • 0

#772 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 September 2017 - 18:44

 

насколько я знаю багов дублирования предметов в arma3 нет


  • 0

#773 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 17 September 2017 - 18:53

 

 

насколько я знаю багов дублирования предметов в arma3 нет

 

 

Дублирование, чудо ящики, баги - все есть, ну, во всяком случае когда я в последний раз был на Лайф проектах - все было, много и бестолково.


  • 0

#774 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 September 2017 - 19:10

 

ваш вариант, если я верно понял: при выкладывании предмета из инвентаря удалять такие предметы вокруг (или всё время удалять все подходящие предметы в объектах(инвентарях) без соответствующих id на карте)|1 и создавать объект с id выложенного предмета,

для этого понадобиться контроль выкладываемых предметов (представьте ситуацию: два одинаковых SMG в рюкзаке (нужно при выкладывании выбрать который(id) выложить)) и система "предмет с ID в объекте",

это наиболее "загружаемый" (из за дополнительных объектов и если |1| то постоянного круга отчистки), наименее функциональный, но да, для вашей цели самый простой вариант

 

(только для решения проблемы дублирования достаточно одинаковые id, просто чтобы id ставились скриптом на сервере)


Edited by Ilias, 17 September 2017 - 19:40.

  • 0

#775 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 September 2017 - 19:44

Дублирование, чудо ящики, баги - все есть, ну, во всяком случае когда я в последний раз был на Лайф проектах - все было, много и бестолково.

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

на Лайф серверах реализованы подобные инвентари в объектах, наверно не сложно

Реализовать виртуальный инвентарь - не сложно... Сложно - создание ID для предметов, которые на уровне движка не имеют ни каких идентификаторов или различий
PS Можно пойти по экстенсивному пути... К которому кстати пришли создатели TFAR

Edited by vlad333000, 17 September 2017 - 19:40.

  • 0

#776 OFFLINE   Erepb

Erepb

    Рядовой

  • Пользователи
  • 18 posts
  • Откуда:Отсуда

Posted 19 September 2017 - 15:54

 

 

ваш вариант, если я верно понял: при выкладывании предмета из инвентаря удалять такие предметы вокруг (или всё время удалять все подходящие предметы в объектах(инвентарях) без соответствующих id на карте)|1 и создавать объект с id выложенного предмета,

для этого понадобиться контроль выкладываемых предметов (представьте ситуацию: два одинаковых SMG в рюкзаке (нужно при выкладывании выбрать который(id) выложить)) и система "предмет с ID в объекте",

это наиболее "загружаемый" (из за дополнительных объектов и если |1| то постоянного круга отчистки), наименее функциональный, но да, для вашей цели самый простой вариант

 

(только для решения проблемы дублирования достаточно одинаковые id, просто чтобы id ставились скриптом на сервере)

 

Не совсем, мой вариант - создавать объекты с айди сразу при вводе единицы оружия на сервер, так, чтобы они могли содержать в своем инвентаре только одну и только определенную единицу оружия. Эти объекты привязывать к юниту/месту/инвентарю ящика, дома и тп. При взаимодействии юнита с объектом (юнит берет оружие из инвентаря объекта), объект оставаясь пустым все равно привязан к юниту (если юнит берет ствол с земли - он автоматически привязывает к себе объект этот ствол содержащий). Попользовавшись стволом, юнит убирает его не в свой инвентарь, а в инвентарь объекта, даже выкладывая на землю, он выкладывает ствол в объект, а объект уже на землю.

В случае когда два одинаковых ствола, то и объектов "хранилищ" тоже два и какой ствол в какой объект попадет (они же одинаковые) - не важно. А вот если юнит каким либо образом дублирует ствол, то объекта для него не будет и, соответственно выкладывая его куда либо - он пропадет (очистится скриптом), да и сам инвентарь юнита можно чистить (нет привязанного объекта на два ствола - чистка - останется только один).

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

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

Если это не сильно сложно можете тыкнуть в скрип чистящий что либо с сервака? Например зайцев же удаляют и всякий хлам тоже слышал можно удалить.

 

 

 

Дублирование, чудо ящики, баги - все есть, ну, во всяком случае когда я в последний раз был на Лайф проектах - все было, много и бестолково.

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

на Лайф серверах реализованы подобные инвентари в объектах, наверно не сложно

Реализовать виртуальный инвентарь - не сложно... Сложно - создание ID для предметов, которые на уровне движка не имеют ни каких идентификаторов или различий
PS Можно пойти по экстенсивному пути... К которому кстати пришли создатели TFAR

 

 

В ванильной игре и необходимости в учете оружия нет. Речь именно о модах где дюп серьезно поганит игровой процесс и баланс, да и вообще возможность учета оружия может добавить много контента.

То что выдать айди именно пушкам невозможно я уже понял и смирился. Вот ищу обходные пути.

Можно поподробнее об экстенсивном пути и ТФАР?


Edited by Erepb, 19 September 2017 - 16:08.

  • 0

#777 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 19 September 2017 - 16:14

Erepb, ну берете классы предметов, которые будете выдавать. Далее, через "Ctrl+C"+"Ctrl+V" превращаете 1 класс предмета в N классов одного предмета:
class MyItem;
class MyItem_1: MyItem {};
class MyItem_2: MyItem {};
...
class MyItem_N: MyItem {};
На это настраиваем виртуальный инвентарь, нужных вам ящиком, нычек и т. д. При взятии предмета из виртуального инвентаря отправляете запрос на сервер о получении уникального класса предмета, после чего выдаете (Или нет) этот предмет с нужным индексом класса в реальный инвентарь игрока. При обратном процессе, отправляете запрос на сервер об освобождении данного класса с индексом предмета
На выходе получаем, что в одной сессии можем однозначно определить N уникальных предметов одного класса, находящиеся уже в реальном инвентаре игроков (И сколь угодно еще в виртуальном инвнтаре (Тут через структуры данных))
PS Скачайте Task-Force Arrowhead Radio и взгляните насколько там "МАЛО" раций, имея всего лишь по 3-4 рации на сторону (По крайней мере так было когда-то когда я залазил в просмоторщик конфигов, как сейчас - не смотрел еще)

Edited by vlad333000, 19 September 2017 - 16:22.

  • 0

#778 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 19 September 2017 - 17:07

Не совсем, мой вариант - создавать объекты с айди сразу при вводе единицы оружия на сервер, так, чтобы они могли содержать в своем инвентаре только одну и только определенную единицу оружия. Эти объекты привязывать к юниту/месту/инвентарю ящика, дома и тп. При взаимодействии юнита с объектом (юнит берет оружие из инвентаря объекта), объект оставаясь пустым все равно привязан к юниту (если юнит берет ствол с земли - он автоматически привязывает к себе объект этот ствол содержащий). Попользовавшись стволом, юнит убирает его не в свой инвентарь, а в инвентарь объекта, даже выкладывая на землю, он выкладывает ствол в объект, а объект уже на землю.

 

В случае когда два одинаковых ствола, то и объектов "хранилищ" тоже два и какой ствол в какой объект попадет (они же одинаковые) - не важно. А вот если юнит каким либо образом дублирует ствол, то объекта для него не будет и, соответственно выкладывая его куда либо - он пропадет (очистится скриптом), да и сам инвентарь юнита можно чистить (нет привязанного объекта на два ствола - чистка - останется только один).

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

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

Если это не сильно сложно можете тыкнуть в скрип чистящий что либо с сервака? Например зайцев же удаляют и всякий хлам тоже слышал можно удалить.

тогда нужно: не давать игрокам выкладывать оружие (стандартно), добавлять действия для выкладывания, чистить дополнительные юниты, и система привязки объектов с лишними действиями; это просто бессмысленно

(и отдельные объекты обычно всегда "загружаемее" чем списки на носителях)


Edited by Ilias, 19 September 2017 - 17:15.

  • 0

#779 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 21 September 2017 - 14:59

Кто нибудь знает как сделать динамическую линию границы

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

[rimg]http://www.wargamer.com/assets/BlogPosts/Phase-A2.jpg[/rimg]

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


Edited by Ilias, 21 September 2017 - 15:01.

  • 0

#780 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 posts

Posted 21 September 2017 - 15:08

Ilias, если только примитивно по секторам разбить карту. Маркеры в форме квадратов в роле секторов. То что в Steel Division не думаю что можно воссоздать в Арме.


  • 0




Яндекс.Метрика