The New Future :: FOnline Roleplay 2019 :: Действующий ролевой сервер  

Вернуться   The New Future :: FOnline Roleplay 2019 :: Действующий ролевой сервер > Fallout Roleplay 2019 > FOmod > Учебка

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

Учебка Обучающие материалы.

Ответ
 
Опции темы Опции просмотра
Старый 13.05.2013, 13:36   #1
jgizmo
Senior Member
 
Регистрация: 28.06.2012
Сообщений: 115
Вес репутации: 148
jgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to all
По умолчанию Сбор ресурсов и хранение данных.

Столкнулся с задачей хранить некоторые данные о карте для скрипта сбора ресурсов из сценери и все варианты решения выглядят достаточно убого *(
Требуется хранить данные о сценери из которого уже были добыты ресурсы и удалять эти данные при удаление карты.
Казалось бы всё уже готово в сдк в resources.fos но там используется anydata и удаляется она по таймеру, то есть через какое-то время ресурсы опять можно собирать.

Варианты решения:
Хранить в AnyData и эвентом проверять каждые N часов существует ли карта и удалять AnyData если карта удалена, проблема в том что для каждого сценери будет AnyData и эвент и они могут накапливаться до больших количеств перед удалением.

Хранить в map.SetData - при удалении карты автоматически удалится и эти данные что очень удобно, проблема в ограничении массива в 64 ячейки.

Хранить в скрипте в двумерном массиве [ид карты][ид сценери], нужно написать скрипт удаления ячеек массива при удалении карты и добавить его на эвент MAP_EVENT_FINISH, данные пропадут при рестарте сервера, что конечно не очень критично, опять же массив будет сильно разрастаться.
Может есть какой-то более изящный способ?
jgizmo вне форума   Ответить с цитированием
Старый 13.05.2013, 14:01   #2
binyan
Senior Member
 
Специализация: Вне команды
Регистрация: 09.02.2010
Сообщений: 339
Вес репутации: 233
binyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant future
По умолчанию

Как часто нужно будет считывать эти данные?
__________________
011000100110100101101110011110010110000101101110
binyan вне форума   Ответить с цитированием
Старый 13.05.2013, 14:48   #3
jgizmo
Senior Member
 
Регистрация: 28.06.2012
Сообщений: 115
Вес репутации: 148
jgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to all
По умолчанию

Цитата:
Сообщение от binyan Посмотреть сообщение
Как часто нужно будет считывать эти данные?
Модель ситуации такая:
Плеер заходит на энкаунтер, в момент генерации энкаунтера никаких данных не генерим дабы не замедлять вход плеера. Далее игрок юзает сценери - скрипт проверяет если запись об этом пиде сценери, если нет игрок получает ресурс а данные об этом пиде сценери записываются, если есть запись уже то игроку сообщается об отсутствии ресурса. Более эти данные не для чего не нужны, и при удалении энкаунтера должны тоже удалятся.
jgizmo вне форума   Ответить с цитированием
Старый 13.05.2013, 15:07   #4
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 644
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию

Цитата:
если запись об этом пиде сценери, если нет игрок получает ресурс а данные об этом пиде сценери записываются, если есть запись уже то игроку сообщается об отсутствии ресурса. Более эти данные не для чего не нужны
массив динамической длинны с ид сценери - 5 000 000 (или сколько там). это если только на энкаунтерах будет. по удалению карты удалять ячейку
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
Старый 13.05.2013, 16:06   #5
jgizmo
Senior Member
 
Регистрация: 28.06.2012
Сообщений: 115
Вес репутации: 148
jgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to all
По умолчанию

Цитата:
Сообщение от PowerMagic Посмотреть сообщение
массив динамической длинны с ид сценери - 5 000 000 (или сколько там). это если только на энкаунтерах будет. по удалению карты удалять ячейку
Тогда уж проще создавать AnyData "Resources+map.Id" туда складывать пиды сценери и в MAP_EVENT_FINISH проверять есть ли "Resources+map.Id" и если есть удалять его целиком.
И всё это одним словом можно назвать.... КОСТЫЛЬ
P.S.
Всё ещё корявей, я забыл что сценери не имеет .Id только Х,У и ProtoId. Так что вместо ид, нужно хранить Х,У.

Последний раз редактировалось jgizmo; 13.05.2013 в 18:00.
jgizmo вне форума   Ответить с цитированием
Старый 14.05.2013, 01:01   #6
binyan
Senior Member
 
Специализация: Вне команды
Регистрация: 09.02.2010
Сообщений: 339
Вес репутации: 233
binyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant future
По умолчанию

А какой тип данных можно сохранять в map.SetData?
__________________
011000100110100101101110011110010110000101101110
binyan вне форума   Ответить с цитированием
Старый 14.05.2013, 09:10   #7
qthree
A Nice King
 
Аватар для qthree
 
Специализация: Скриптер
Регистрация: 07.10.2009
Адрес: мск+3
Сообщений: 525
Вес репутации: 366
qthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond reputeqthree has a reputation beyond repute
По умолчанию

Я раньше делал менеджер глобальных ивентов, благодаря которому можно в произвольном модуле подписаться на вызов определенной функции при срабатывании глобального колбэка, вроде инита или сэйв-ворлда. При этом не меняя main.
Я бы в твоем случае запилил или конкретную реализацию (массив с id сценери с нужным функционалом), или свой родительский класс для будущих реализаций, который бы хранил определенную информацию в оперативке, сохранял бы её при сейв-ворлде в БД, а при ручном или автоматическом удалении подчищал за собой. Но ввиду кривой ООП модели в AS без костылей это сделать проблематично.
__________________
 qthree has been possessed!
qthree вне форума   Ответить с цитированием
Старый 14.05.2013, 17:25   #8
jgizmo
Senior Member
 
Регистрация: 28.06.2012
Сообщений: 115
Вес репутации: 148
jgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to alljgizmo is a name known to all
По умолчанию

Цитата:
Сообщение от binyan Посмотреть сообщение
А какой тип данных можно сохранять в map.SetData?
Int, в итоге я остановился на map.SetData, в чётные сохраняю HexX, в нечетные HexY, в конечном итоге 40 слотов оказалось достаточно, 20 для х 20 для у. Просто и с автогарбаджем не пришлось возится.
jgizmo вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:15.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Для внутреннего пользования