Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

[Решено] Много переменных с данными

Тема в разделе "Разработка плагинов для новичков", создана пользователем baksovic111, 4 май 2015.

Статус темы:
Закрыта.
  1. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Привет всем)
    Я очень ценю производительность сервера и по этому у меня возник следующий вопрос.
    Собственно работаю над одним плагином в котором мне нужно будет при каждом ударе игрока получать переменные.
    Собственно проблема в том что я не могу решить откуда их брать.
    Как я знаю есть 3 варианта.
    Config - который загружается в память при включении сервера
    Yml File - к которому сервер обращается каждый раз
    Mysql - с ним к сожалению работать не умею.

    Так вот.
    Каждый раз в эвенте DamageByEntityDamage мне нужно будет получать ключ со значением int.
    И обрабатывать его.
    Рассчитываю я на очень частое получение этих данных.
    Подскажите пожалуйста..Что же мне использовать с чем работать и почему..
     
  2. Хостинг MineCraft
    <
  3. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Если я правильно понимаю, то вам нужно смотреть в сторону конфиг файла обычного. Config и Yml file это одно и тоже. При загрузке плагина вы загружаете файл который хранит значение указанное. Потом в нужном месте его берете. MySQL совершенно для этого не подходит.
     
  4. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Config и Yml File не много разные вещи.
    Конфиг при первой загрузке сервера загружает все свои значения в память сервера.
    А к File сервер обращается каждый раз когда ему нужно получить значение.
    Проверял я это таким образом.
    Создавай File и создал там переменную String.
    И вызывал ее плагином. Я мог легко изменить значение в файле и не требовалось не какой перезагрузки сервера или плагина чтобы получить новое значение. Это доказывает то что сервер каждый раз обращается за значением к Файлу.
     
  5. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Чтение из файла затратная операция
     
  6. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Да поэтому я и решил создать пост чтобы решить где лучше хранить такие данные.
    Config не очень подходит для этих действий
    Так как 1 игрок будет иметь примерно 10 переменных и при 1-3 тысячах игроков будет очень большое количество строк в конфиге..
     
  7. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Вы все же путаете что для чего нужно. Исходя из того что вы написали сейчас, нужна база данных. Только учтите, обращаться к базе данных каждый раз, тоже затратная операция. Время отклика на ваш запрос достигает приличных значений, что приведет к зависанию сервера на это время. Для этого нужно научиться кешировать данные.
     
  8. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Я так понимаю вы не плохо разбираетесь.
    Опыта у меня еще не так много но я тут подумал.
    Может есть вариант как то загружать все существующие файлы с диска в память сервера?
    То есть переменные в память. И дальше уже работать с ними и в нужное время выгружать переменные из памяти в файл. Что то вроде сохранения.
     
  9. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Можно сделать так: в плагине объявить хэшмап (как я понял будет string -> int) и просто в этот хэшмап подгружать все ключи и все значения из конфига при загрузке плагина.
     
  10. kirill2011s

    kirill2011s Старожил Пользователь

    Баллы:
    103
    Только зачем? Yml делает это за вас
     
  11. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну мне удобней работать с готовыми данными, а не получать их так config.getInt(key + ".player." + еще что-то)
     
  12. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Не много по другому.
    String, string , int[DOUBLEPOST=1430749519,1430749437][/DOUBLEPOST]Товарищи как я понял лучший вариант загружать переменные из Файла в память.
    Я с этим не работал и не знаю как это сделать(
    Может есть у кого скайп?
    Кто бы уделил минут 15?
    Даже друг не хочет помогать(
    Все против меня..
     
  13. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Тебе нужно по двум строкам получить число? Почему бы не сложить эти две строки и сделать как я сказал?
     
  14. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Каким образом сложить строки? Не подскажешь?
     
  15. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    обычной операцией +
     
  16. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Тема закрыта)
    Мне наконец все же помог мой друг.
    Вообщем тут HashMap или другая хрень не пойдет. Тут нужно создавать новые классы где будут хранится переменные и все ост что нужно)
     
Статус темы:
Закрыта.

Поделиться этой страницей