Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
getAllPlayersForIterate
#1
Собственно как на подобии этого метода сделать свой с перечеслением например: getAllGoodPlayersForIterate? т.е. соответственно хотелось брать число игроков с getFactionId == 1 и добавлять в этот список, и также с getFactionId == 2, сделать метод getAllEvilPlayersForIterate, и чтобы потом можно сравнивать if(getAllEvilPlayerForIterate.size > getAllGoodPlayersForIterate.size)
return false;

[SRC="java"]public static Iterable<Player> getAllPlayersForIterate()
{
return getStoragePlayers();
}[/SRC]

Может быть это стоит делать не в GameObjectsStorage?

Исходы овер.
Ответ
#2
Enjoooy Написал:Собственно как на подобии этого метода сделать свой с перечеслением например: getAllGoodPlayersForIterate? т.е. соответственно хотелось брать число игроков с getFactionId == 1 и добавлять в этот список, и также с getFactionId == 2, сделать метод getAllEvilPlayersForIterate, и чтобы потом можно сравнивать if(getAllEvilPlayerForIterate.size > getAllGoodPlayersForIterate.size)
return false;

[SRC="java"]public static Iterable<Player> getAllPlayersForIterate()
{
return getStoragePlayers();
}[/SRC]

Может быть это стоит делать не в GameObjectsStorage?

Исходы овер.
Ну вопервых getAllEvil/GoodPlayerForIterate,представляет собой массив, а не метод.
А во вторых чтобы перечислить элементы любого массива - достаточно forloopa .
А в третьих getAllPlayersForIterate возвращает "хранилище"/массив игроков .

И если уж так нужно возвращать массив игроков с разными factID, достаточно сделать подобное.
Код:
public static Iterable<Player> getAllEvilPlayersForIterate()
    {
                if(getFactionId == 1)
        return getStoragePlayers();
    }

Код:
public static Iterable<Player> getAllGoodPlayersForIterate()
    {
                if(getFactionId == 2)
        return getStoragePlayers();
    }

Я не слишком силен в яве, особенно если так мало представлено кода, возможно что getFactionId не глобальная переменная, и тогда брать ее стоит прямо из GetStoragePlayers, и т.к. не понятно как именно проходит цикл, то решать вам.
Ответ
#3
PHP код:
<?php 
public static GArray<Player> getAllPlayersByFactionId(int faction_id)
{
GArray<Player> players = new GArray<>();
for(
Player player : getStoragePlayers().getAll()) {
if(
player.getFactionId() == faction_id) {
players.add(player);
}
}
return
players;
}
самое простое что можно сделать
Ответ
#4
"Но всё прошло не так гладко. Требовались сотни патчей, потом сами патчи становились причинами проблем, и приходилось добавлять ещё патчей, чтобы изменить поведение патчей в очень специфических случаях. Появлялись новые ошибки, и я снова побеждал их патчами."

(с) https://habrahabr.ru/post/328552/
Ответ
#5
А как высчитывать разницу? т.е. если просто делать getAllPlayersByFactionId(1) > getAllPlayersByFactionId(2), то будет если хотя бы на одного человека, то не будет пускать

А как сделать если на 50 человек больше, то выполнять условие? Не совсем еще разобрался с логикой, подскажите пожалуйста

[SRC="java"] int goodcount = GameObjectsStorage.getAllPlayersByFactionId(1).size();
int evilcount = GameObjectsStorage.getAllPlayersByFactionId(2).size();[/SRC]

то есть сделать так if(goodcount > evilcount)
sendMessage("Мол на одного человека больше и поэтому false");
return;

А как сделать типа того if(goodcount+50 > evilcount)
sendMessage("Мол онлайн гуд слишком высок")
return;
Ответ
#6
Enjoooy Написал:А как сделать если на 50 человек больше, то выполнять условие? Не совсем еще разобрался с логикой, подскажите пожалуйста

if (getAllPlayersByFactionId(1) > getAllPlayersByFactionId(2) + 50) {

}

[Изображение: 5748fc94a8d2674b3f7bea609cc7.png]

По сабжу: лучше начать с перепила хранилища и посадить все на предикаты, например:

public List<Player> getPlayers(Predicate<Player> cond) {
return storage.stream().filter(cond).collect(Collectors.toList());
}

и далее юзать не заморачивая голову:
YourStorage.getPlayers(p -> p.getFaction() == 1).foreach(p -> p.getInventory().addItem(57, 1000)); // даст всем игрокам в первой фракции 1000 аден
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  getAllPlayersForIterate Enjoooy 4 2,533 04-22-2017, 04:37 PM
Последний пост: Gawric

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)