Клан очки

Respectplus21

Heir
Customer
Как сделать чтоб очки клана отображались в .topclan и возможно ли вывести 5 ток кланов в автоанонс ?
 

Attachments

  • Shot00000.webp
    Shot00000.webp
    329 KB · Views: 56
Статистика топ клана выводится не по очкам клан репутации. А по выводу анонса наверное писать Дизеру чтоб реализовал.
 
а по каким она очкам выводиться. Что за очки там . Где и как их заработать
 
В конфиге services ищи настройку кастомных клан очков, там разберешься я думаю. В кратце их можно добавить мобам,боссам, за захват замка, получение геройства.
 
Вывод топ 5 по кастомным очкам. выдернул у себя из класса. может что то упустил. надо проверить. но вроде на месте все.
Java:
package services;


import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import l2.gameserver.Announcements;
import l2.gameserver.model.pledge.Clan;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.tables.ClanTable;


public class topClanScript implements ScriptFile {

    public topClanScript() {

    }
    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
    public void clanTopStart(){
        scheduler.scheduleAtFixedRate(() -> {
            Clan[] clans = ClanTable.getInstance().getClans();
            List<Clan> sortedClans = Arrays.stream(clans)
                    .sorted(Comparator.comparingInt(Clan::getCustomPoints).reversed())
                    .limit(5)
                    .collect(Collectors.toList());

            Announcements.getInstance().announceToAll("Топ 5 клана сервера по версии Сервера: ");
            Announcements.getInstance().announceToAll("Top 5 server clans according to Сервера: ");
            for (int i = 0; i < sortedClans.size(); i++) {
                Clan clan = sortedClans.get(i);
                String clanName = clan.getName();
                int customPoints = clan.getCustomPoints();
                Announcements.getInstance().announceToAll("Место №" + (i + 1) + " - Клан - " + clanName + " (" + customPoints + " Клан очков)");
            }
        }, 1, 60, TimeUnit.MINUTES);

    }
    @Override
    public void onLoad() {
        clanTopStart();

    }

    @Override
    public void onReload() {
    }

    @Override
    public void onShutdown() {
        scheduler.shutdown();
    }
}
 
Last edited:
В целом выглядит норм, мог сделать через кастом меседж для универсальности и выдергивать так же по clanRep и левелу клана
 
В целом выглядит норм, мог сделать через кастом меседж для универсальности и выдергивать так же по clanRep и левелу клана
Ну я основу дал, кому нужно, допишут для себя. Думаю не проблема. у меня пвп сервер, по этому не имеет смысла лвл клана.
 
Вывод топ 5 по кастомным очкам. выдернул у себя из класса. может что то упустил. надо проверить. но вроде на месте все.
Держи, можете тебе понадобится - но я добавил уже в ClanCustomPointsStatistic

Java:
  public void scheduleTopClanAnnouncement()
  {
    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
    ClanTable clanTable = ClanTable.getInstance();

    Runnable task = () -> {
      Clan[] clans = clanTable.getClans();
      List<Clan> topClans = Arrays.stream(clans)
                                  .sorted(Comparator.comparingInt(Clan::getCustomPoints).reversed())
                                  .limit(Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_AMOUNT)
                                  .collect(Collectors.toList());

      Announcements.getInstance().announceByCustomMessage("TopClanService.Announce", new String[] {String.valueOf(Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_AMOUNT)});

      int i = 0;
      for (Clan clan : topClans) {
        String clanName = clan.getName();
        int clanPoints = clan.getCustomPoints();
        String[] messageParams = {String.valueOf(++i), clanName, String.valueOf(clanPoints)};
        Announcements.getInstance().announceByCustomMessage("TopClanService.AnnounceClanList", messageParams);
      }
    };
    executor.scheduleAtFixedRate(task, Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_DELAY, Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_DELAY, TimeUnit.MINUTES);
  }
 
Держи, можете тебе понадобится - но я добавил уже в ClanCustomPointsStatistic

Java:
  public void scheduleTopClanAnnouncement()
  {
    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
    ClanTable clanTable = ClanTable.getInstance();

    Runnable task = () -> {
      Clan[] clans = clanTable.getClans();
      List<Clan> topClans = Arrays.stream(clans)
                                  .sorted(Comparator.comparingInt(Clan::getCustomPoints).reversed())
                                  .limit(Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_AMOUNT)
                                  .collect(Collectors.toList());

      Announcements.getInstance().announceByCustomMessage("TopClanService.Announce", new String[] {String.valueOf(Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_AMOUNT)});

      int i = 0;
      for (Clan clan : topClans) {
        String clanName = clan.getName();
        int clanPoints = clan.getCustomPoints();
        String[] messageParams = {String.valueOf(++i), clanName, String.valueOf(clanPoints)};
        Announcements.getInstance().announceByCustomMessage("TopClanService.AnnounceClanList", messageParams);
      }
    };
    executor.scheduleAtFixedRate(task, Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_DELAY, Config.SERVICES_TOP_CLANS_LIST_ANNOUNCE_DELAY, TimeUnit.MINUTES);
  }
Спасибо!)
 
Back
Top