Помогите Запросы другому игроку

  • Автор темы Автор темы reZero
  • Дата начала Дата начала

reZero

Активный участник
Пользователь
Баллы
76
Всем привет. Извиняюсь за то что стал частенько создавать темы с глупыми вопросами и надеюсь, что эта будет последней...
В общем, я на этом моменте затупил и не могу разобраться..
Мне нужно, чтобы при вводе команды игроком name1, игроку name2 отправлялся запрос. Ему нужно этот запрос принять или отказаться от него. Если по-русски, то можно привести в пример тот же самый /call из essentials'а.
В чем же проблема.. Проблема заключается в том, что при вводе команды на запрос игроком name1, мне нужно записать обоих игроков в мапу, а потом доставать из этой мапы чтобы совершать действия которые мне нужны, но я запутался в этих джавовских азах и не могу въехать, каким образом мне можно получить из этой мапы и игрока name1 и игрока name2...
Вопрос очень глупый, но тем не менее, надеюсь что поможете и помидорами закидывать не будете...
 
Долго писал ответ, но всё стёр, и написал код.
https://pastebin.com/3Fqe2HPY
Как юзать:
  • В главном классе
    Java:
    private final RequestContextService contextService = new 
    RequestContextService(this);
  • По необходимости расширить класс с контекстом каким-то своим:
    Java:
    public class MyOwnSuperRequest extends RequestContext {
    /* ... */
    }
  • Ловко обрабатывать команды от игроков, исходного — отправка и отмена, от целевого — принятие и отказ, для этого юзать методы contextService: addRequest(), findBySource(), findByTarget(), removeContext().
  • Ну и там наверное стоит поправить код уведомлений, сделать как-то попизже.
P. S. Немного переписал: https://pastebin.com/RjyaaYC0
 
Последнее редактирование:
Долго писал ответ, но всё стёр, и написал код.
https://pastebin.com/3Fqe2HPY
Как юзать:
  • В главном классе
    Java:
    private final RequestContextService contextService = new 
    RequestContextService(this);
  • По необходимости расширить класс с контекстом каким-то своим:
    Java:
    public class MyOwnSuperRequest extends RequestContext {
    /* ... */
    }
  • Ловко обрабатывать команды от игроков, исходного — отправка и отмена, от целевого — принятие и отказ, для этого юзать методы contextService: addRequest(), findBySource(), findByTarget(), removeContext().
  • Ну и там наверное стоит поправить код уведомлений, сделать как-то попизже.
P. S. Немного переписал: https://pastebin.com/RjyaaYC0
В коде, который ты скинул, есть несколько непонятных моментов... а именно:
  • Ты используешь методы getSource(); getTarget(); setSourceTask(); setTargetTask(); которые ты в принципе не прописал. Мб я туплю конечно, но эти методы отсутствуют.
  • Ты используешь аннотации, которых у меня по факту нет, естественно они не пашут
 
В коде, который ты скинул, есть несколько непонятных моментов... а именно:
  • Ты используешь методы getSource(); getTarget(); setSourceTask(); setTargetTask(); которые ты в принципе не прописал. Мб я туплю конечно, но эти методы отсутствуют.
  • Ты используешь аннотации, которых у меня по факту нет, естественно они не пашут
С шаблонным кодом, но без Lombok: https://pastebin.com/nUchNeGv
 
Можно сделать совсем просто.
Создаем хешмап с ключем String и с списком, который хранит так же String. Список это игроки, которые отправляли запрос тому, где находятся собственно эти списки.
Например.
Код:
Map<String, List<String>> requests = new HashMap<String, List<String>>();
Например игрок Kot хочет отправить запросу игроку Vasya.
Добавляем в хешмап новый объект, ключ которого Vasya, а значение этого ключа список String, добавляем в этот список игрока Kot. Если нужно реализовать таймаут запросов, то нужно создать класс который будет хранить ник игрока и таймер (далее использовать его вместо String у списков). Таймер будет запускаться в конструкторе. Так же, в конструкторе, надо передать ссылку на список, в котором находится этот объект, а далее, использовать это для самоуничтожения когда выйдет время.
Код:
мол this.whereIAm.remove(this);

Это крайне говнокодерский вариант (вроде), но по этому принципу по началу можно реализовать такое.
 
Назад
Верх