getAllPlayersForIterate - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 18.04.2017, 22:57   #1
Пользователь

Автор темы (Топик Стартер) getAllPlayersForIterate

Как перебирать всех игроков онлайн и если они соответствую условиям, добавлять в список и выполнять с ними определенные действия?
Вот хотел сделать, если у перебранных игроков фракция = 1, телепортируем, но не работает
Делал в методе useSkills, в файле CALL
if(_factiongood)
		{
			for(Player player : GameObjectsStorage.getAllPlayersForIterate()) {
				if (player.getFactionId() == 1) {
					player.stopMove();
					player.teleToLocation(Location.findPointToStay(activeChar, 100, 150), activeChar.getGeoIndex());
					getEffects(activeChar, player, getActivateRate() > 0, false);
				}
			}
			if(isSSPossible())
				activeChar.unChargeShots(isMagic());
			return;
		}
Code: Java
Enjoooy вне форума Ответить с цитированием
Непрочитано 20.04.2017, 07:12   #2
Пользователь

Автор темы (Топик Стартер) Re: getAllPlayersForIterate

Может есть уже в ядре что то наподобие этого? Исходы овер
Enjoooy вне форума Ответить с цитированием
Непрочитано 20.04.2017, 09:41   #3
Аватар для n3k0nation
Antihero

По умолчанию Re: getAllPlayersForIterate

Овера нет, сделал под лост.


Faction
Код:
package org.mmocore.gameserver.model.actor.instances.player;

/**
 * @author PointerRage
 *
 */
public enum Faction {
	None,
	Good,
	Evil,
	Pewpew;
}
Player
Код:
	private Faction faction = Faction.None;
	public Faction getFaction() {
		return faction;
	}
EffectCallFaction
Код:
package org.mmocore.gameserver.skills.effects;

import org.mmocore.gameserver.model.Effect;
import org.mmocore.gameserver.model.GameObjectsStorage;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.model.actor.instances.player.Faction;
import org.mmocore.gameserver.stats.Env;
import org.mmocore.gameserver.utils.Location;

/**
 * @author PointerRage
 *
 */
public class EffectCallFaction extends Effect {

	protected EffectCallFaction(Env env, EffectTemplate template) {
		super(env, template);
	}
	
	@Override
	public void onStart() {
		super.onStart();
		final Player caster = _effector.getPlayer();
		if(caster == null || caster.getFaction() == Faction.None) {
			return;
		}
		
		final Faction faction = caster.getFaction();
		for(Player player : GameObjectsStorage.getPlayers()) {
			if(player == caster || !player.isOnline()) {
				continue;
			}
			
			if(player.getFaction() != faction) {
				continue;
			}
			
			player.teleToLocation(Location.findAroundPosition(caster, 16, 64), caster.getReflection());
		}
	}

	@Override
	protected boolean onActionTime() {
		return false;
	}

}
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 20.04.2017, 22:25   #4
Пользователь

Автор темы (Топик Стартер) Re: getAllPlayersForIterate

Не совсем то, но благодаря этому, могу брать всех людей онлайн, вычислять фракцию и телепортировать.
Спасибо.

Или я просто не понял, как это вообще работает в данном примере
Enjoooy вне форума Ответить с цитированием
Непрочитано 22.04.2017, 16:37   #5
Пользователь

По умолчанию Re: getAllPlayersForIterate

Паттерн Итератор использовать http://www.javenue.info/post/101 давно хотел попробовать
Gawric вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 17:12. Часовой пояс GMT +3.

Вверх