Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Награда по пати
#1
Написал код, все работает, но теперь делаю другое, если человек в пати, то награда выдается рендомному человеку из группы, сделал так:
[SRC="java"] public void giveHonorForPvP(Player pk)
{
if(pk.getParty() == null)
{
if(pk.getTarget().getPlayer().getFame() >= 0 && pk.getTarget().getPlayer().getFame() < 50)
{
pk.addFame(1);
}
else if(pk.getTarget().getPlayer().getFame() >= 50 && pk.getTarget().getPlayer().getFame() < 100)
{
pk.addFame(4);
}
else if(pk.getTarget().getPlayer().getFame() >= 100 && pk.getTarget().getPlayer().getFame() < 300)
{
pk.addFame(5);
}
else if(pk.getTarget().getPlayer().getFame() >= 300 && pk.getTarget().getPlayer().getFame() < 600)
{
pk.addFame(6);
}
else if(pk.getTarget().getPlayer().getFame() >= 600)
{
pk.addFame(7);
}
}
else
{
List<Player> ret = null;
ret = new ArrayList<Player>(getParty().getPartyMembers().size());
for(Player member : getParty().getPartyMembers())
if(member.isInRangeZ(pk, 1000))
ret.add(member);
}
ranksystem(pk);
factioncolor(pk);
}[/SRC]
Сделал добавление людей, теперь как выдавать награду рендомному из пати?
Ответ
#2
L2J Написал:Написал код, все работает, но теперь делаю другое, если человек в пати, то награда выдается рендомному человеку из группы, сделал так:
[SRC="java"] public void giveHonorForPvP(Player pk)
{
if(pk.getParty() == null)
{
if(pk.getTarget().getPlayer().getFame() >= 0 && pk.getTarget().getPlayer().getFame() < 50)
{
pk.addFame(1);
}
else if(pk.getTarget().getPlayer().getFame() >= 50 && pk.getTarget().getPlayer().getFame() < 100)
{
pk.addFame(4);
}
else if(pk.getTarget().getPlayer().getFame() >= 100 && pk.getTarget().getPlayer().getFame() < 300)
{
pk.addFame(5);
}
else if(pk.getTarget().getPlayer().getFame() >= 300 && pk.getTarget().getPlayer().getFame() < 600)
{
pk.addFame(6);
}
else if(pk.getTarget().getPlayer().getFame() >= 600)
{
pk.addFame(7);
}
}
else
{
List<Player> ret = null;
ret = new ArrayList<Player>(getParty().getPartyMembers().size());
for(Player member : getParty().getPartyMembers())
if(member.isInRangeZ(pk, 1000))
ret.add(member);
}
ranksystem(pk);
factioncolor(pk);
}[/SRC]
Сделал добавление людей, теперь как выдавать награду рендомному из пати?
Хз как в оверах, в лыже есть метод getCheckedRandomMember
Ответ
#3
Рендомный человек сделан, Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(getParty().getMemberCount()-1));
Теперь как ему выдавать награду?

Добавлено через 2 минуты
[SRC="java"] public void giveHonorForPvP(Player pk)
{
int fame = pk.getTarget().getPlayer().getFame();
if(pk.getParty() == null)
{
if(fame >= 0 && fame < 50)
{
pk.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
pk.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
pk.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
pk.addFame(6);
}
else if(fame >= 600)
{
pk.addFame(7);
}
}
else
{
List<Player> ret = null;
Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(getParty().getMemberCount()-1));
ret = new ArrayList<Player>(getParty().getPartyMembers().size());
for(Player member : getParty().getPartyMembers())
if(fame >= 0 && fame < 50)
{
randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
randomPlayerFromParty.addFame(7);
}
}
ranksystem(pk);
factioncolor(pk);
}[/SRC]
Сделал так, но почему то не работаетSad
Ответ
#4
L2J Написал:Рендомный человек сделан, Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(getParty().getMemberCount()-1));
Теперь как ему выдавать награду?

Добавлено через 2 минуты
[SRC="java"] public void giveHonorForPvP(Player pk)
{
int fame = pk.getTarget().getPlayer().getFame();
if(pk.getParty() == null)
{
if(fame >= 0 && fame < 50)
{
pk.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
pk.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
pk.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
pk.addFame(6);
}
else if(fame >= 600)
{
pk.addFame(7);
}
}
else
{
List<Player> ret = null;
Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(getParty().getMemberCount()-1));
ret = new ArrayList<Player>(getParty().getPartyMembers().size());
for(Player member : getParty().getPartyMembers())
if(fame >= 0 && fame < 50)
{
randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
randomPlayerFromParty.addFame(7);
}
}
ranksystem(pk);
factioncolor(pk);
}[/SRC]
Сделал так, но почему то не работаетSad

Пробуйте
Код:
Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(pk.getParty().getMemberCount()));

if(fame >= 0 && fame < 50)
{
    randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
    randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
    randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
    randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
    randomPlayerFromParty.addFame(7);
}
Ответ
#5
L2J, Сделай отдельный метод для рассчета выдачи fame
Код:
private static int rewardFame(int fame){
           if(fame >= 0 && fame < 50)
           {
               return 1;
           }
           else if(fame >= 50 && fame < 100)
           {
               return 4;
           }
           else if(fame >= 100 && fame < 300)
           {
               return 5;
           }
           else if(fame >= 300 && fame < 600)
           {
               return 6;
           }

           return 7;
}

Выдача рандомному человеку в группе тогда будет выглядеть так:
Код:
Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(getParty().getMemberCount()-1)); //Рандомный игрок из пати

int fame = randomPlayerFromParty.getFame(); //Узнаем его fameб чтобы потом знать кол-во награды , которую ему выдавать

randomPlayerFromParty.addFame(rewardFame(fame)); //Рассчитываем кол-во награды и выдаем её
Студия L2dev.su. Сборки Lindvior, Epilogue. ICQ 1817070. Skype wowan.sm
Ответ
#6
Метод для пати написать, там сделать скажем отбор игроков в онлайне и чтобы были в радиусе пати, потом из списка - если индекс - то так как вы и писали то Rnd.get(list.size())

И соответственно не городить все в кучу, потом обрабатывать только этого чара в пати
Ответ
#7
kingzor

Данный метод работает, теперь последний вопрос. Как сделать чтобы выдавалось только рендомному человеку из пати который в ренже 1200 например.
Я сделал так
[SRC="java"] Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(pk.getParty().getMemberCount()));
if(randomPlayerFromParty.isInRangeZ(pk,1200))
{

if(fame >= 0 && fame < 50)
{
randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
randomPlayerFromParty.addFame(7);
}
}[/SRC]
В принципе работает, но если нет ниодного чара рядом с убийцей, то награда не дается убийце и вообще никому.
Ответ
#8
L2J Написал:kingzor

Данный метод работает, теперь последний вопрос. Как сделать чтобы выдавалось только рендомному человеку из пати который в ренже 1200 например.
Я сделал так
[SRC="java"] Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(pk.getParty().getMemberCount()));
if(randomPlayerFromParty.isInRangeZ(pk,1200))
{

if(fame >= 0 && fame < 50)
{
randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
randomPlayerFromParty.addFame(7);
}
}[/SRC]
В принципе работает, но если нет ниодного чара рядом с убийцей, то награда не дается убийце и вообще никому.

Как-то так

Код:
Player randomPlayerFromParty = pk.getParty().getPartyMembers().get(Rnd.get(pk.getParty().getMemberCount()));
if (!randomPlayerFromParty.isInRangeZ(pk,1200))
{
    randomPlayerFromParty = pk;
}

if(fame >= 0 && fame < 50)
{
    randomPlayerFromParty.addFame(1);
}
else if(fame >= 50 && fame < 100)
{
    randomPlayerFromParty.addFame(4);
}
else if(fame >= 100 && fame < 300)
{
    randomPlayerFromParty.addFame(5);
}
else if(fame >= 300 && fame < 600)
{
    randomPlayerFromParty.addFame(6);
}
else if(fame >= 600)
{
    randomPlayerFromParty.addFame(7);
}

Вообще это говнокод от которого глаза ломит Smile

По хорошему надо запилить метод в Party.java

Код:
public Player getRandomPlayer()
{
    return getPartyMembers().get(Rnd.get(getMemberCount()));
}

Так же сделать отдельный метод выдачи как посоветовал WoWan-SM
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Награда за 3 профессию dantest 3 1,781 09-19-2015, 04:27 PM
Последний пост: Magister
  Отключение нужды в пати\клане enderec 1 1,301 10-25-2013, 11:50 AM
Последний пост: Gaikotsu
  награда за смс Tolyamba18 3 1,494 01-12-2013, 11:13 AM
Последний пост: Dementor
  Награда за PvP Time of Gods 8 2,279 01-03-2013, 08:40 AM
Последний пост: L2CCCP
  штраф на кач в пати по лвлу mego4el 8 6,400 05-08-2012, 04:03 PM
Последний пост: MrShyr
  Награда за ПВП и ПК... Garmin 4 4,450 06-02-2010, 10:10 PM
Последний пост: incognito

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


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