Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PartyMembers
#1
Сделал систему, проверки все работают, но если все проходит, то телепортирует только лидера группы, без членов группы.
[SRC="java"]if(command.equalsIgnoreCase("teleport"))
{
if (player.getParty() == null) {
player.sendMessage("Вам нужна группа для охоты на титанов.");
player.sendActionFailed();
return;
}
if (player.getParty().getPartyLeader() == player) {
for (Player partyMember : player.getParty().getPartyMembers()) {
if(player.isHero() || partyMember.isHero())
{
player.sendMessage("Лидерам фракции нельзя находится на землях титанов.");
player.sendActionFailed();
return;
}
if (partyMember.isInRangeZ(player, 2000) && !partyMember.isDead())
{
if (player.getFactionId() == 1) {
partyMember.teleToLocation(Location.findPointToStay(-24776, 253208, -3024, 100, 150, 1));
partyMember.stopMove();
} else if (player.getFactionId() == 2) {
partyMember.teleToLocation(Location.findPointToStay(-4344, 256504, -3128, 100, 150, 1));
}
}
else if(!partyMember.isInRange(player, 2000) || partyMember.isDead())
{
partyMember.sendMessage("Необходимо всем членам группы стоять у путеводителя и быть живыми.");
player.sendActionFailed();
partyMember.sendActionFailed();
return;
}
}
}
else if (player.getParty().getPartyLeader() != player)
{
player.sendMessage("Только лидер группы может призвать на земли титанов.");
player.sendActionFailed();
return;
}
}[/SRC]

Где ошибка?
Ответ
#2
В данном коде, лидера нужно телепортировать в последнюю очередь, т.к. вы телертируете его, а следующий индекс листа это мембер пати... Пати лидер улетел далеко, верно ? Верно же! ^_^ Ну, и тут мы обрабатываем

PHP код:
<?php 
else if(!partyMember.isInRange(player, 2000) || partyMember.isDead())
{
partyMember.sendMessage("Необходимо всем членам группы стоять у путеводителя и быть живыми.");
player.sendActionFailed();
partyMember.sendActionFailed();
[
color=Red]return;[/color]
}
Ну, и это важно... В данном коде есть море ошибок, если есть 5 мемберов, первые 2 мембера из листа подходят по условиям радиуса от пати лидера, мы их тпшним, НО! Ну конечно есть НО, если какой то мудак, ушел далеко, и условия не прошли, делаете выход их функции.. Соответственно из-за какого то мудака в середине листа, остальные игроков не сможет тпшнуть, потому-что мы вышли из функции.

PHP код:
<?php 
if(command.equalsIgnoreCase("teleport"))
{
if (
player.getParty() == null) {
player.sendMessage("Вам нужна группа для охоты на титанов.");
player.sendActionFailed();
return;
}
if (
player.getParty().getPartyLeader() == player) {
for (
Player partyMember : player.getParty().getPartyMembers()) {
if(
partyMember == player)
continue;

if(
player.isHero() || partyMember.isHero())
{
player.sendMessage("Лидерам фракции нельзя находится на землях титанов.");
player.sendActionFailed();
continue;
}
if (
partyMember.isInRangeZ(player, 2000) && !partyMember.isDead())
{
if (
player.getFactionId() == 1) {
partyMember.teleToLocation(Location.findPointToStay(-24776, 253208, -3024, 100, 150, 1));
partyMember.stopMove();
} else if (
player.getFactionId() == 2) {
partyMember.teleToLocation(Location.findPointToStay(-4344, 256504, -3128, 100, 150, 1));
}
}
else if(!
partyMember.isInRange(player, 2000) || partyMember.isDead())
{
partyMember.sendMessage("Необходимо всем членам группы стоять у путеводителя и быть живыми.");
player.sendActionFailed();
partyMember.sendActionFailed();
continue;
}
}
if (
player.getFactionId() == 1) {
player.teleToLocation(Location.findPointToStay(-24776, 253208, -3024, 100, 150, 1));
}
else if (
player.getFactionId() == 2) {
player.teleToLocation(Location.findPointToStay(-4344, 256504, -3128, 100, 150, 1));
}
}
else if (
player.getParty().getPartyLeader() != player)
{
player.sendMessage("Только лидер группы может призвать на земли титанов.");
player.sendActionFailed();
continue;
}
}

Можно вот так заговнокодитьнаскоруюрукувнотпаде.
Smile
Ответ
#3
[SRC="java"] if(command.equalsIgnoreCase("teleport"))
{
if (player.getParty() == null) {
player.sendMessage("Вам нужна группа для охоты на титанов.");
player.sendActionFailed();
return;
}
if (player.getParty().getPartyLeader() == player) {
for (Player partyMember : player.getParty().getPartyMembers()) {
if(partyMember == player)
continue;

if(player.isHero() || partyMember.isHero())
{
player.sendMessage("Лидерам фракции нельзя находится на землях титанов.");
player.sendActionFailed();
continue;
}
if (partyMember.isInRangeZ(player, 2000) && !partyMember.isDead())
{
if (player.getFactionId() == 1) {
partyMember.teleToLocation(Location.findPointToStay(-24776, 253208, -3024, 100, 150, 1));
partyMember.stopMove();
} else if (player.getFactionId() == 2) {
partyMember.teleToLocation(Location.findPointToStay(-4344, 256504, -3128, 100, 150, 1));
}
}
else if(!partyMember.isInRange(player, 2000) || partyMember.isDead())
{
partyMember.sendMessage("Необходимо всем членам группы стоять у путеводителя и быть живыми.");
player.sendActionFailed();
partyMember.sendActionFailed();
continue;
}
}
if (player.getFactionId() == 1) {
player.teleToLocation(Location.findPointToStay(-24776, 253208, -3024, 100, 150, 1));
}
else if (player.getFactionId() == 2) {
player.teleToLocation(Location.findPointToStay(-4344, 256504, -3128, 100, 150, 1));
}
}
else if (player.getParty().getPartyLeader() != player)
{
player.sendMessage("Только лидер группы может призвать на земли титанов.");
player.sendActionFailed();
return;
}
}[/SRC]

Сделал так, работает почти верно, только если есть в группе герой или человек находится далеко, его просто не телепортирует, остальные улетают, по задумке должно быть так, что если в пати есть герой или член группы какой-либо далеко, то никого не телепортирует, если менять на return, то происходит вообще какая то неведомая фигня. Выбирает рандомного чел-ка или хз как, и телепортирует одно, я вообще не до конца понял принцип работы. Но что то явно не то Big Grin
Ответ
#4
Перед этим циклом, сделать цикл проверки всех игроков, не телепортируя их.
Если все успешно, применяем второй цикл для телепорта этих игроков.
Smile
Ответ


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


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