Скрипт на выдачу награды за статистику PvP Interlude

Я себе даже статуи - копии игроков топ 3 пвп сделал.
View attachment 3081
в свое время на сборках pw подобная фишка была ) на 1 из проектов когда внедряли нпц в стиле игроков)

Ну это реально крутая фишка да и то что ниже отписали очень знакомые допы) с 1 из серверов которые тут продавались) Вы с лучаем не с Михаилом с всязке кодите)?
 
в свое время на сборках pw подобная фишка была ) на 1 из проектов когда внедряли нпц в стиле игроков)

Ну это реально крутая фишка да и то что ниже отписали очень знакомые допы) с 1 из серверов которые тут продавались) Вы с лучаем не с Михаилом с всязке кодите)?
Ну типо таво.
по поводу цен. 2-3к за скрипт это копейки. Если знать реальные трудозатраты. Я же не пишут все за 15 минут. Сами подумайте, продумать логику, написать +-500 строк кода, дальше все самому протестить, что то исправить и за это всего лишь 30 евро. это вообще смешно.
 
Code:
package services;

import l2.gameserver.listener.actor.OnKillListener;
import l2.gameserver.listener.actor.player.OnPlayerEnterListener;
import l2.gameserver.model.Creature;
import l2.gameserver.model.Player;
import l2.gameserver.model.Skill;
import l2.gameserver.model.actor.listener.PlayerListenerList;
import l2.gameserver.network.l2.s2c.SkillList;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.tables.SkillTable;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class PVPBonus extends Functions implements ScriptFile, OnKillListener, OnPlayerEnterListener
{

  private static final String     MESSAGE_ON_REWARD = "PVP бонус: %RANK%";
  private static final List<Rank> ranks             = new ArrayList<Rank>();

  @Override
  public void onLoad()
  {
    // ранги добавлять по воз врастающей мин. кол-ва пвп
    // шаблон: Имя ранга, мин.пвп, скилл, уровень скилла
    ranks.add(new Rank("1%", 100, 5650, 1));
    ranks.add(new Rank("2%", 200, 5650, 2));
    ranks.add(new Rank("3%", 300, 5650, 3));
    ranks.add(new Rank("4%", 400, 5650, 4));
    ranks.add(new Rank("5%", 500, 5650, 5));

    Collections.reverse(ranks);
    PlayerListenerList.addGlobal(this);
  }

  @Override
  public void onKill(Creature actor, Creature victim)
  {
    if(actor.isPlayer() && victim.isPlayer())
    {
      Player player = actor.getPlayer();
      Rank rank = getRank(player.getPvpKills());
      if(rank == null)
      {
        return;
      }
      if(player.getSkillLevel(rank.skill.getId()) == rank.skill.getLevel())
      {
        return;
      }

      player.addSkill(rank.skill, false);
      player.sendPacket(new SkillList(player));
      player.broadcastUserInfo(false);
      player.sendMessage(MESSAGE_ON_REWARD.replaceFirst("%RANK%", rank.name));
    }
  }

  @Override
  public boolean ignorePetOrSummon()
  {
    return false;
  }

  /**
   * Возвращает ранг, исходя из кол-ва pvp.
   *
   * @param pvp - кол-во пвп
   * @return Rank - ранг
   */
  public Rank getRank(int pvp)
  {
    for(Rank rank : ranks)
    {
      if(pvp >= rank.minPvp)
      {
        return rank;
      }
    }
    return null;
  }

  @Override
  public void onReload()
  {
    PlayerListenerList.removeGlobal(this);
  }

  @Override
  public void onShutdown()
  {
    PlayerListenerList.removeGlobal(this);
  }

  @Override
  public void onPlayerEnter(Player player)
  {
    Rank rank = getRank(player.getPvpKills());
    if(rank == null)
    {
      return;
    }
    if(player.getSkillLevel(rank.skill.getId()) == rank.skill.getLevel())
    {
      return;
    }
    player.addSkill(rank.skill, false);
    player.sendPacket(new SkillList(player));
    player.broadcastUserInfo(false);
  }

  public static class Rank
  {
    String name;
    int    minPvp;
    Skill  skill;

    public Rank(String name, int minPvp, int skillID, int skillLvl)
    {
      this.name = name;
      this.minPvp = minPvp;
      this.skill = SkillTable.getInstance().getInfo(skillID, skillLvl);
    }
  }
}

Код не мой, попросили адаптировать. Как будет время сделаю нормальный код. Это можно использовать, но чистый хардкод и бред.
 
Back
Top