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

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

Ответ
Опции темы
Непрочитано 10.12.2012, 12:35   #1
Аватар для CreazyGreen
Пользователь

Автор темы (Топик Стартер) Что за команды?

Конечно может многим мой вопрос покажется и идиотским и каждый захочет меня потролить, однако обращаюсь к Вам за помощью.

В одном из java файлов датапака нашел список команд и пропись их работы.

Так вот что это за команды "sweep", "pflag", "cflag", "exp" которые были в списке наряду с "help", "whoami", "whoiam", "whoapet", "heading". И как они работают. Т.к. как бы я их не юзал и на кого либо, эффекта 0 что с персонажами что с чатом.

И второй маленький вопросик тоже о командах. Есть такая как "stats". Так вот что за дикость выдает сервер при юзе на себя этой команды и выборе любого пункта.


Почему все показатели [10], [20], [30], [40] и тд. И что они значат?

Всем заранее спасибо за помощь!
CreazyGreen вне форума Ответить с цитированием
Непрочитано 10.12.2012, 13:14   #2
Аватар для Ashe
Олдфаг

По умолчанию Re: Что за команды?

"Экстрасенсы ZG, я призываю Вас..." - нужно было начинать с такой фразы. Больше конкретики. Что за сборка хотя бы?!
__________________
Fortuna - non penis, in manus non recipe.
Ashe вне форума Ответить с цитированием
Непрочитано 10.12.2012, 13:22   #3
Аватар для CreazyGreen
Пользователь

Автор темы (Топик Стартер) Re: Что за команды?

Цитата:
Сообщение от Ashe Посмотреть сообщение
"Экстрасенсы ZG, я призываю Вас..." - нужно было начинать с такой фразы. Больше конкретики. Что за сборка хотя бы?!
А вот и троли))

Та же команда whoami существует уже миллион лет и прошла дюжину хроник.
Как впрочем и остальные.

Чтобы не вставал этот вопрос боле скажу специально для Вас хроники Эпилог, сборка ворона. Только один маленький вопрос: что это дало? Или если я не прав исправьте на разных сборках и хрониках команды кардинально меняются?
CreazyGreen вне форума Ответить с цитированием
Непрочитано 10.12.2012, 13:33   #4
Аватар для Ashe
Олдфаг

По умолчанию Re: Что за команды?

Цитата:
Сообщение от CreazyGreen Посмотреть сообщение
А вот и троли))
Во-первых, где я Вас троллил?!

Цитата:
Сообщение от CreazyGreen Посмотреть сообщение
Чтобы не вставал этот вопрос боле скажу специально для Вас хроники Эпилог, сборка ворона. Только один маленький вопрос: что это дало? Или если я не прав исправьте на разных сборках и хрониках команды кардинально меняются?
Во-вторых, "дало" как минимум то, что я могу скачать и посмотреть/подсказать.

Ну и в-третьих, Вы прежде чем "пафосничать" выложили бы код и оформили нормально тему, а то "гадание на скринах" сейчас не в моде.
__________________
Fortuna - non penis, in manus non recipe.
Ashe вне форума Ответить с цитированием
Непрочитано 10.12.2012, 13:59   #5
Аватар для CreazyGreen
Пользователь

Автор темы (Топик Стартер) Re: Что за команды?

Теперь можешь сказать что за 4ре команды и почему так отображается статус?

package commands.voiced;
 
import l2p.extensions.scripts.Functions;
import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.handler.IVoicedCommandHandler;
import l2p.gameserver.handler.VoicedCommandHandler;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.instances.L2MonsterInstance;
import l2p.gameserver.model.items.L2ItemInstance;
import l2p.gameserver.serverpackets.RadarControl;
import l2p.gameserver.skills.Calculator;
import l2p.gameserver.skills.Formulas;
import l2p.gameserver.skills.Stats;
import l2p.gameserver.skills.funcs.Func;
import l2p.gameserver.tables.FakePlayersTable;
import l2p.gameserver.templates.L2Weapon.WeaponType;
import l2p.util.Files;
 
import java.text.NumberFormat;
import java.util.Locale;
 
/**
 * @Author: Abaddon
 */
public class Help extends Functions implements IVoicedCommandHandler, ScriptFile
{
	private String[] _commandList = new String[]
	{
		"help", "whoami", "whoiam", "whoapet", "heading", "whofake", "sweep",
		"pflag", "cflag", "exp", "stats"
	};
 
	@Override
	public void onLoad()
	{
		VoicedCommandHandler.getInstance().registerVoicedCommandHandler(this);
	}
 
	@Override
	public void onReload()
	{
	}
 
	@Override
	public void onShutdown()
	{
	}
 
	@Override
	public boolean useVoicedCommand(String command, L2Player activeChar, String args)
	{
		command = command.intern();
		if(command.equalsIgnoreCase("help"))
		{
			return help(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("whoami") || command.equalsIgnoreCase("whoiam"))
		{
			return whoami(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("whoapet"))
		{
			return whoapet(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("stats"))
		{
			return stats(activeChar);
		}
		if(command.equalsIgnoreCase("heading"))
		{
			activeChar.sendMessage(String.valueOf(activeChar.getHeading()));
			return true;
		}
		if(command.equalsIgnoreCase("whofake"))
		{
			return whofake(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("sweep"))
		{
			return sweep(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("pflag"))
		{
			return pflag(command, activeChar, args);
		}
		if(command.equalsIgnoreCase("cflag"))
		{
			return cflag(command, activeChar, args);
		}
		return false;
	}
	private static NumberFormat df = NumberFormat.getNumberInstance();
 
	static
	{
		df.setMaximumFractionDigits(2);
	}
 
	private boolean pflag(String command, L2Player activeChar, String args)
	{
		if(!activeChar.isInParty())
		{
			return false;
		}
		RadarControl rc = new RadarControl(0, 1, activeChar.getLoc());
		for(L2Player p : activeChar.getParty().getPartyMembers())
		{
			if(p != activeChar)
			{
				p.sendPacket(rc);
			}
		}
		return true;
	}
 
	private boolean cflag(String command, L2Player activeChar, String args)
	{
		if(activeChar.getClan() == null)
		{
			return false;
		}
		RadarControl rc = new RadarControl(0, 1, activeChar.getLoc());
		for(L2Player p : activeChar.getClan().getOnlineMembers(activeChar.getObjectId()))
		{
			p.sendPacket(rc);
		}
		return true;
	}
 
	private boolean help(String command, L2Player activeChar, String args)
	{
		String dialog = Files.read("data/scripts/commands/voiced/help.htm", activeChar);
		show(dialog, activeChar);
		return true;
	}
 
	private boolean whoapet(String command, L2Player activeChar, String args)
	{
		if(activeChar == null)
		{
			return false;
		}
		showInfo(activeChar, activeChar.getPet());
		return true;
	}
 
	private boolean whoami(String command, L2Player activeChar, String args)
	{
		showInfo(activeChar, activeChar);
		return true;
	}
 
	private boolean whofake(String command, L2Player activeChar, String args)
	{
		if(!activeChar.isGM())
		{
			return false;
		}
		StringBuilder sb = new StringBuilder("");
		for(String p : FakePlayersTable.getActiveFakePlayers())
		{
			sb.append(p).append(" ");
		}
		show(sb.toString(), activeChar);
		return true;
	}
 
	private boolean sweep(String command, L2Player activeChar, String args)
	{
		if(activeChar.getSkillLevel(42) > 0)
		{
			for(L2Character target : activeChar.getAroundCharacters(300, 200))
			{
				if(target.isMonster() && target.isDead() && ((L2MonsterInstance) target).isSweepActive())
				{
					activeChar.getAI().Cast(activeChar.getKnownSkill(42), target);
					return true;
				}
			}
		}
		return false;
	}
 
	public static void showInfo(L2Player caller, L2Character cha)
	{
		if(caller == null || cha == null)
		{
			return;
		}
		StringBuilder dialog = new StringBuilder("<html><body>");
		NumberFormat df = NumberFormat.getNumberInstance(Locale.ENGLISH);
		df.setMaximumFractionDigits(2);
		df.setMinimumFractionDigits(0);
		/*
		dialog.append("<center><font color=\"LEVEL\">Basic info</font></center><br><table width=\"100%\"><tr>");
 
		dialog.append("<td>Name</td><td>").append(cha.getName()).append("</td>");
		dialog.append("<td>Login</td><td>").append(cha.getAccountName()).append("</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>Class</td><td>").append(cha.getClassId().name()).append("</td>");
		dialog.append("<td>IP</td><td>").append(cha.getNetConnection().getIpAddr()).append("</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>Level</td><td>").append(cha.getLevel()).append("</td>");
		dialog.append("<td>ObjId</td><td>").append(cha.getObjectId()).append("</td>");
		dialog.append("</tr></table><br>");
		 */
		dialog.append("<center><font color=\"LEVEL\">Stats</font></center><br><table width=\"100%\"><tr>");
		dialog.append("<td>HP regen</td><td>").append(df.format(Formulas.calcHpRegen(cha))).append("</td>");
		dialog.append("<td>CP regen</td><td>").append(df.format(Formulas.calcCpRegen(cha))).append("</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>MP regen</td><td>").append(df.format(Formulas.calcMpRegen(cha))).append("</td>");
		dialog.append("<td>HP drain</td><td>").append(df.format(cha.calcStat(Stats.ABSORB_DAMAGE_PERCENT, 0, null, null))).append("%</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>HP gain</td><td>").append(df.format(cha.calcStat(Stats.HEAL_EFFECTIVNESS, 100, null, null))).append("%</td>");
		dialog.append("<td>MP gain</td><td>").append(df.format(cha.calcStat(Stats.MANAHEAL_EFFECTIVNESS, 100, null, null))).append("%</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>Crit damage</td><td>").append(df.format(2 * cha.calcStat(Stats.CRITICAL_DAMAGE, null, null))).append("% + ").append((int) cha.calcStat(Stats.CRITICAL_DAMAGE_STATIC, null, null)).append("</td>");
		dialog.append("<td>Magic crit</td><td>").append(df.format(cha.getMagicCriticalRate(null, null))).append("%</td>");
		dialog.append("</tr><tr>");
		dialog.append("<td>Blow rate</td><td>x").append(df.format(cha.calcStat(Stats.FATALBLOW_RATE, null, null))).append("</td>");
		dialog.append("<td>DPS</td><td>").append((int) calcDPS(cha)).append("</td>");
		L2ItemInstance shld = cha.getSecondaryWeaponInstance();
		if(shld != null && shld.getItemType() == WeaponType.NONE)
		{
			dialog.append("</tr><tr>");
			dialog.append("<td>Shield def</td><td>").append(cha.getShldDef()).append("</td>");
			dialog.append("<td>Shield rate</td><td>").append(df.format(cha.calcStat(Stats.SHIELD_RATE, null, null))).append("</td>");
		}
		dialog.append("</tr><tr>");
		dialog.append("<td>Luck</td><td>").append(caller.getBonus().RATE_XP == caller.getRateExp() ? "full" : "limited").append("</td>");
		dialog.append("</tr></table><br><center><font color=\"LEVEL\">Resists</font></center><br><table width=\"70%\">");
		int FIRE_RECEPTIVE = (int) cha.calcStat(Stats.FIRE_RECEPTIVE, 0, null, null);
		if(FIRE_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Fire</td><td>").append(-FIRE_RECEPTIVE).append("</td></tr>");
		}
		int WIND_RECEPTIVE = (int) cha.calcStat(Stats.WIND_RECEPTIVE, 0, null, null);
		if(WIND_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Wind</td><td>").append(-WIND_RECEPTIVE).append("</td></tr>");
		}
		int WATER_RECEPTIVE = (int) cha.calcStat(Stats.WATER_RECEPTIVE, 0, null, null);
		if(WATER_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Water</td><td>").append(-WATER_RECEPTIVE).append("</td></tr>");
		}
		int EARTH_RECEPTIVE = (int) cha.calcStat(Stats.EARTH_RECEPTIVE, 0, null, null);
		if(EARTH_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Earth</td><td>").append(-EARTH_RECEPTIVE).append("</td></tr>");
		}
		int SACRED_RECEPTIVE = (int) cha.calcStat(Stats.SACRED_RECEPTIVE, 0, null, null);
		if(SACRED_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Light</td><td>").append(-SACRED_RECEPTIVE).append("</td></tr>");
		}
		int UNHOLY_RECEPTIVE = (int) cha.calcStat(Stats.UNHOLY_RECEPTIVE, 0, null, null);
		if(UNHOLY_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Darkness</td><td>").append(-UNHOLY_RECEPTIVE).append("</td></tr>");
		}
		int BLEED_RECEPTIVE = (int) cha.calcStat(Stats.BLEED_RECEPTIVE, null, null);
		if(BLEED_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Bleed</td><td>").append(BLEED_RECEPTIVE).append("</td></tr>");
		}
		int POISON_RECEPTIVE = (int) cha.calcStat(Stats.POISON_RECEPTIVE, null, null);
		if(POISON_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Poison</td><td>").append(POISON_RECEPTIVE).append("</td></tr>");
		}
		int STUN_RECEPTIVE = (int) cha.calcStat(Stats.STUN_RECEPTIVE, null, null);
		if(STUN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Stun</td><td>").append(STUN_RECEPTIVE).append("</td></tr>");
		}
		int ROOT_RECEPTIVE = (int) cha.calcStat(Stats.ROOT_RECEPTIVE, null, null);
		if(ROOT_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Root</td><td>").append(ROOT_RECEPTIVE).append("</td></tr>");
		}
		int SLEEP_RECEPTIVE = (int) cha.calcStat(Stats.SLEEP_RECEPTIVE, null, null);
		if(SLEEP_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Sleep</td><td>").append(SLEEP_RECEPTIVE).append("</td></tr>");
		}
		int PARALYZE_RECEPTIVE = (int) cha.calcStat(Stats.PARALYZE_RECEPTIVE, null, null);
		if(PARALYZE_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Paralyze</td><td>").append(PARALYZE_RECEPTIVE).append("</td></tr>");
		}
		int MENTAL_RECEPTIVE = (int) cha.calcStat(Stats.MENTAL_RECEPTIVE, null, null);
		if(MENTAL_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Mental</td><td>").append(MENTAL_RECEPTIVE).append("</td></tr>");
		}
		int DEBUFF_RECEPTIVE = (int) cha.calcStat(Stats.DEBUFF_RECEPTIVE, null, null);
		if(DEBUFF_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Debuff</td><td>").append(DEBUFF_RECEPTIVE).append("</td></tr>");
		}
		int CANCEL_RECEPTIVE = (int) cha.calcStat(Stats.CANCEL_RECEPTIVE, null, null);
		if(CANCEL_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Cancel</td><td>").append(CANCEL_RECEPTIVE).append("</td></tr>");
		}
		int SWORD_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.SWORD_WPN_RECEPTIVE, null, null);
		if(SWORD_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Sword</td><td>").append(SWORD_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int DUAL_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.DUAL_WPN_RECEPTIVE, null, null);
		if(DUAL_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Dual Sword</td><td>").append(DUAL_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int BLUNT_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.BLUNT_WPN_RECEPTIVE, null, null);
		if(BLUNT_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Blunt</td><td>").append(BLUNT_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int DAGGER_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.DAGGER_WPN_RECEPTIVE, null, null);
		if(DAGGER_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Dagger/Rapier</td><td>").append(DAGGER_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int BOW_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.BOW_WPN_RECEPTIVE, null, null);
		if(BOW_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Bow</td><td>").append(BOW_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int XBOW_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.CROSSBOW_WPN_RECEPTIVE, null, null);
		if(XBOW_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Crossbow</td><td>").append(XBOW_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int POLE_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.POLE_WPN_RECEPTIVE, null, null);
		if(POLE_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Polearm</td><td>").append(POLE_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int FIST_WPN_RECEPTIVE = 100 - (int) cha.calcStat(Stats.FIST_WPN_RECEPTIVE, null, null);
		if(FIST_WPN_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Fist weapons</td><td>").append(FIST_WPN_RECEPTIVE).append("%</td></tr>");
		}
		int CRIT_CHANCE_RECEPTIVE = 100 - (int) cha.calcStat(Stats.CRIT_CHANCE_RECEPTIVE, null, null);
		if(CRIT_CHANCE_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Crit get chance</td><td>").append(CRIT_CHANCE_RECEPTIVE).append("%</td></tr>");
		}
		int CRIT_DAMAGE_RECEPTIVE = 100 - (int) cha.calcStat(Stats.CRIT_DAMAGE_RECEPTIVE, null, null);
		if(CRIT_DAMAGE_RECEPTIVE != 0)
		{
			dialog.append("<tr><td>Crit get damage</td><td>").append(CRIT_DAMAGE_RECEPTIVE).append("%</td></tr>");
		}
		if(FIRE_RECEPTIVE == 0 && WIND_RECEPTIVE == 0 && WATER_RECEPTIVE == 0 && EARTH_RECEPTIVE == 0 && UNHOLY_RECEPTIVE == 0 && SACRED_RECEPTIVE // primary elements
																																  == 0 && BLEED_RECEPTIVE == 0 && STUN_RECEPTIVE // phys debuff
																																								  == 0 && POISON_RECEPTIVE == 0 && ROOT_RECEPTIVE == 0 && SLEEP_RECEPTIVE == 0 && PARALYZE_RECEPTIVE == 0 && MENTAL_RECEPTIVE == 0 && DEBUFF_RECEPTIVE == 0 && CANCEL_RECEPTIVE // mag debuff
																																																																															   == 0 && SWORD_WPN_RECEPTIVE == 0 && DUAL_WPN_RECEPTIVE == 0 && BLUNT_WPN_RECEPTIVE == 0 && DAGGER_WPN_RECEPTIVE == 0 && BOW_WPN_RECEPTIVE == 0 && POLE_WPN_RECEPTIVE == 0 && FIST_WPN_RECEPTIVE // weapons
																																																																																																																											== 0 && CRIT_CHANCE_RECEPTIVE == 0 && CRIT_DAMAGE_RECEPTIVE == 0 // other
		)
		{
			dialog.append("</table>No resists</body></html>");
		}
		else
		{
			dialog.append("</table></body></html>");
		}
		show(dialog.toString(), caller, null);
	}
 
	private static double calcDPS(L2Character self)
	{
		L2Character target = null;//self.getTarget() != null && self.getTarget().isCharacter() ? (L2Character) self.getTarget() : null;
		double def = /*target != null ? target.getPDef(self) :*/ 500;
		double critRate = /*target != null ? Formulas.calcCrit(self, target, null) / 100. :*/ self.getCriticalHit(target, null) / 1000.;
		double critPower = 2 * self.calcStat(Stats.CRITICAL_DAMAGE, target, null) / 100.;
		double critStatic = self.calcStat(Stats.CRITICAL_DAMAGE_STATIC, target, null);
		double aSpd = self.getPAtkSpd();
		double reuseDelay = self.getActiveWeaponItem() != null && self.getActiveWeaponItem().getAttackReuseDelay() > 0 ? 1 / (self.getActiveWeaponItem().getAttackReuseDelay() * self.getReuseModifier(target) * 666 * self.calcStat(Stats.ATK_BASE, 0, null, null) / 293. / aSpd) : 0;
		double attackDelay = aSpd / 500.;
		double pAtk = self.getPAtk(target);
		double damageNorm = pAtk * 70. / def;
		double damageCrit = (pAtk * critPower + critStatic) * 70. / def;
		double avgDam = critRate * damageCrit + (1. - critRate) * damageNorm;
		return (int) (Math.max(attackDelay, reuseDelay) * avgDam);
	}
 
	private static boolean stats(L2Player player)
	{
		if(player == null)
		{
			return false;
		}
		StringBuilder dialog = new StringBuilder("<html><body>");
		dialog.append("<center><font color=\"LEVEL\">All Stats</font></center><br><br>");
		Calculator[] calculators = player.getCalculators();
		if(calculators == null || calculators.length == 0)
		{
			dialog.append("None");
		}
		else
		{
			for(Calculator c : calculators)
			{
				dialog.append("[scripts_commands.voiced.Help:showfuncs ").append(c._stat.getValue()).append("|").append(c._stat.getValue()).append("]<br1>");
			}
		}
		dialog.append("</body></html>");
		show(dialog.toString(), player, null);
		return true;
	}
 
	public void showstats()
	{
		stats((L2Player) getSelf());
	}
 
	public void showfuncs(String[] var)
	{
		L2Player player = (L2Player) getSelf();
		if(var.length != 1)
		{
			show("Некорректные данные", player);
			return;
		}
		String value = var[0];
		Stats stat = Stats.valueOfXml(value);
		StringBuilder dialog = new StringBuilder("<html><body>");
		dialog.append("<table><tr>");
		dialog.append("<td><button value=\"Back\" action=\"bypass -h scripts_commands.voiced.Help:showstats\" width=40 height=15 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>");
		dialog.append("<td><button value=\"Refresh\" action=\"bypass -h scripts_commands.voiced.Help:showfuncs ").append(value).append("\" width=60 height=15 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>");
		dialog.append("</tr></table>");
		dialog.append("<br><center><font color=\"LEVEL\">Stat: ").append(stat).append("</font></center><br><br>");
		Calculator[] calculators = player.getCalculators();
		if(calculators == null || calculators.length == 0 || stat == null)
		{
			dialog.append("None");
		}
		else
		{
			Calculator c = calculators[stat.ordinal()];
			Func[] funcs = c.getFunctions();
			for(int i = 0; i < funcs.length; i++)
			{
				if(funcs[i]._funcOwner != null)
				{
					dialog.append(funcs[i]._funcOwner.toString()).append(" [").append(Integer.toHexString(funcs[i]._order)).append("]<br1>");
				}
				else
				{
					dialog.append(funcs[i].getClass().getSimpleName()).append(" [").append(Integer.toHexString(funcs[i]._order)).append("]<br1>");
				}
			}
		}
		dialog.append("</body></html>");
		show(dialog.toString(), player);
	}
 
	@Override
	public String[] getVoicedCommandList()
	{
		return _commandList;
	}
}
Code: Javascript
CreazyGreen вне форума Ответить с цитированием
Непрочитано 10.12.2012, 14:11   #6
Аватар для Ashe
Олдфаг

По умолчанию Re: Что за команды?

/**
	 * Order of functions calculation.
	 * Functions with lower order are executed first.
	 * Functions with the same order are executed in unspecified order.
	 * Usually add/substruct functions has lowest order,
	 * then bonus/penalty functions (multiplay/divide) are
	 * applied, then functions that do more complex calculations
	 * (non-linear functions).
	 */
	public final int _order;
 
Code: Java
Информация такого рода выводится в скобках, то есть это числа, которые определяют порядок исчисления функций. Такие операции, как сложение/вычитание "статов" ( например +100 HP), то есть линейные функции, которые имеют больший приоритет и выполняются в первую очередь, а затем операции умножения / деления.

P.S. Чем меньше число в скобках, тем выше приоритет.
__________________
Fortuna - non penis, in manus non recipe.

Последний раз редактировалось Ashe; 10.12.2012 в 15:00.
Ashe вне форума Ответить с цитированием
Непрочитано 10.12.2012, 14:20   #7
Аватар для CreazyGreen
Пользователь

Автор темы (Топик Стартер) Re: Что за команды?

А что про "sweep", "pflag", "cflag", "exp"
CreazyGreen вне форума Ответить с цитированием
Непрочитано 10.12.2012, 14:28   #8
Аватар для Yorie

По умолчанию Re: Что за команды?

Я одного не понимаю. У Вас есть исходный код, Вы сами не можете сказать, зачем он написан?..

"cflag": сокращенно от Clan Flag - отсылает всем членам клана пакет RadarControl с местоположением, где находится персонаж. Причем отсылает его вообще всему клану, кто есть в онлайне вне зависимости от местоположения.
"pflag": сокращенно от PartyFlag - делает то же самое, что и cflag но для всей группы, а не для клана.
"sweep": делает авто-свип (Skill ID 42), т.е. находит любого заспойленного мертвого монстра и применяет к нему умение "Sweep". Ничего более идиотского в жизни не видел.
"exp": вообще реализации команды не вижу - видимо на очередной бред была заготовка
__________________
// aka Deft
Yorie вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 10.12.2012, 14:30   #9
Аватар для Ro_0TT
Супергерой

По умолчанию Re: Что за команды?

Еще во время шары фениксов командой .exp можно было загрузить память сервера, своего рода бэкдор. Тут тело команды вырезано.
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 10.12.2012, 14:32   #10
Аватар для Ashe
Олдфаг

По умолчанию Re: Что за команды?

Цитата:
Сообщение от CreazyGreen Посмотреть сообщение
А что про "sweep", "pflag", "cflag", "exp"
"sweep" - спойл по таргету;
"pflag" - покажет члена пати на карте;
"cflag" - покажет члена клана на карте;
"exp" - нет реализации.
__________________
Fortuna - non penis, in manus non recipe.
Ashe вне форума Ответить с цитированием
Сказали спасибо:
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Lineage2 Interlude от команды RusTeam TARAN Рынок / Marketplace 2 29.05.2010 17:17
Команды в EVEmu Monolit Другие игры / Other games 0 20.01.2010 03:09
GM команды Redon Копия официального сервера 1 07.11.2009 07:41
Консольные команды в Counter-Strike Lexx_a Клиент 8 28.10.2009 17:09
Команды Dota Allstars Nytrex WarCraft III 10 26.02.2009 19:00


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

Вверх