Показать сообщение отдельно
Непрочитано 14.01.2011, 06:41   #54
Аватар для Ozzy
Администратор

Автор темы (Топик Стартер) Re: Почта России

А это вот для тех, кто свято верит что Sun-Dev труЪ команда и вообще ничего ни у кого не копируют:

Код:
package ai;

import l2p.gameserver.ai.CtrlEvent;
import l2p.gameserver.ai.Fighter;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Spawn;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.tables.NpcTable;
import l2p.util.Rnd;

/**
 * 
 * @author Ozzy
 *
 */
public class ForgeOfGods extends Fighter
{
	private static final int MOBS[] = {18799, 18800, 18801, 18802, 18803};

	public ForgeOfGods(L2Character actor)
	{
		super(actor);
	}

	@Override
	protected void onEvtDead(L2Character killer)
	{
		L2NpcInstance actor = getActor();
		if(actor == null)
			return;

			if(actor.isDead())
			{
				if(Rnd.chance(40))//Шанс стоит от балды, так как точной инфы нет.
					for(int i = 0; i < 1; i++)
						try
						{
							L2Spawn spawn = new L2Spawn(NpcTable.getTemplate(MOBS[Rnd.get(MOBS.length)]));
							spawn.setLoc(actor.getLoc());
							L2NpcInstance npc = spawn.doSpawn(true);
							npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, killer, Rnd.get(1, 100));
						}
						catch(Exception e)
						{
							e.printStackTrace();
						}
			}
		super.onEvtDead(killer);
	}
}
Код:
package ai;

import l2p.commons.random.Rnd;
import l2p.gameserver.ai.CtrlEvent;
import l2p.gameserver.ai.Fighter;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Spawn;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.tables.NpcTable;

/**
 * @author ManageR
 */
public class ForgeOfGods extends Fighter
{
	private static final int MOBS[] = {18799, 18800, 18801, 18802, 18803};

	public ForgeOfGods(L2Character actor)
	{
		super(actor);
	}

	@Override
	protected void onEvtDead(L2Character killer)
	{
		L2NpcInstance actor = getActor();
		if(actor == null)
			return;

			if(actor.isDead())
			{
				if(Rnd.chance(40)) //TODO: Уточнить шанс
					for(int i = 0; i < 1; i++)
						try
						{
							L2Spawn spawn = new L2Spawn(NpcTable.getTemplate(MOBS[Rnd.get(MOBS.length)]));
							spawn.setLoc(actor.getLoc());
							L2NpcInstance npc = spawn.doSpawn(true);
							npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, killer, Rnd.get(1, 100));
						}
						catch(Exception e)
						{
							e.printStackTrace();
						}
			}
		super.onEvtDead(killer);
	}
}
Код:
package ai;

import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2Effect;
import l2p.gameserver.model.L2Skill;
import l2p.gameserver.model.L2World;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.serverpackets.MagicSkillUse;
import l2p.gameserver.tables.SkillTable;
import l2p.util.GArray;
import l2p.util.Rnd;

/**
 * 
 * @author Ozzy
 *
 */
public class TarBeetle extends DefaultAI
{
	private long _spawnTime = 0;
	private boolean _spawned = false;
	private static final int DESPAWN_TIME = 300000;

	public TarBeetle(L2NpcInstance actor)
	{
		super(actor);
		AI_TASK_DELAY = 1000;
		AI_TASK_ACTIVE_DELAY = 1000;
	}

	@Override
	protected boolean thinkActive()
	{
		L2NpcInstance actor = getActor();
		if(actor == null)
			return true;

		for(L2Player player : L2World.getAroundPlayers(actor, 300, 200))
		{
			if(Rnd.chance(5))
				addEffect(actor, player);
		}

		if(_def_think)
		{
			doTask();
			_spawned = false;
			return true;
		}

		if(!_spawned)
		{
			_spawned = true;
			_spawnTime = System.currentTimeMillis() + DESPAWN_TIME;
		}

		if(_spawnTime != 0 && _spawned && _spawnTime < System.currentTimeMillis())
		{
			actor.onDecay();
			return true;
		}
		return true;
	}
	private void addEffect(L2NpcInstance actor, L2Player player)
	{
		GArray<L2Effect> effect = player.getEffectList().getEffectsBySkillId(6142);
		if(effect != null)
		{
			int level = effect.get(0).getSkill().getLevel();
			if(level < 3)
			{
				effect.get(0).exit();
				L2Skill skill = SkillTable.getInstance().getInfo(6142, level + 1);
				skill.getEffects(actor, player, false, false);
				actor.broadcastPacket(new MagicSkillUse(actor, player, skill.getId(), level, skill.getHitTime(), 0));
			}
		}
		else
		{
			L2Skill skill = SkillTable.getInstance().getInfo(6142, 1);
			if(skill != null)
			{
				skill.getEffects(actor, player, false, false);
				actor.broadcastPacket(new MagicSkillUse(actor, player, skill.getId(), 1, skill.getHitTime(), 0));
			}
		}
	}

	protected boolean randomWalk()
	{
		return false;
	}
}
Код:
package ai;

import l2p.commons.collections.GArray;
import l2p.commons.random.Rnd;
import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.model.L2Effect;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2Skill;
import l2p.gameserver.model.L2World;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.serverpackets.MagicSkillUse;
import l2p.gameserver.tables.SkillTable;

/**
 * @author ManageR
 */
public class TarBeetle extends DefaultAI
{
	private long _spawnTime = 0;
	private boolean _spawned = false;
	private static final int DESPAWN_TIME = 300000;

	public TarBeetle(L2NpcInstance actor)
	{
		super(actor);
		AI_TASK_DELAY = 1000;
		AI_TASK_ACTIVE_DELAY = 1000;
	}

	@Override
	protected boolean thinkActive()
	{
		L2NpcInstance actor = getActor();
		if(actor == null)
			return true;

		for(L2Player player : L2World.getAroundPlayers(actor, 300, 200))
		{
			if(Rnd.chance(5))
				addEffect(actor, player);
		}

		if(_def_think)
		{
			doTask();
			_spawned = false;
			return true;
		}

		if(!_spawned)
		{
			_spawned = true;
			_spawnTime = System.currentTimeMillis() + DESPAWN_TIME;
		}

		if(_spawnTime != 0 && _spawned && _spawnTime < System.currentTimeMillis())
		{
			actor.onDecay();
			return true;
		}
		return true;
	}
	private void addEffect(L2NpcInstance actor, L2Player player)
	{
		GArray<L2Effect> effect = player.getEffectList().getEffectsBySkillId(6142);
		if(effect != null)
		{
			int level = effect.get(0).getSkill().getLevel();
			if(level < 3)
			{
				effect.get(0).exit();
				L2Skill skill = SkillTable.getInstance().getInfo(6142, level + 1);
				skill.getEffects(actor, player, false, false);
				actor.broadcastPacket(new MagicSkillUse(actor, player, skill.getId(), level, skill.getHitTime(), 0));
			}
		}
		else
		{
			L2Skill skill = SkillTable.getInstance().getInfo(6142, 1);
			if(skill != null)
			{
				skill.getEffects(actor, player, false, false);
				actor.broadcastPacket(new MagicSkillUse(actor, player, skill.getId(), 1, skill.getHitTime(), 0));
			}
		}
	}

	@Override
    protected boolean randomWalk()
	{
		return false;
	}
}
Найдите 10 отличий, помимо смены копирайтов. Так же глянув таймлайн команды заметил еще не один и не два и даже не десять коммитов со стертыми моими копирайтами:

Код:
package quests._119_LastImperialPrince;

import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.model.quest.Quest;
import l2p.gameserver.model.quest.QuestState;

/**
 * Квест 119 (Last Imperial Prince (Последний Принц Империи))
 *
 * @author Ozzy
 */
public class _119_LastImperialPrince extends Quest implements ScriptFile
{
	//NPC's
	private static final int SPIRIT = 31453;
	private static final int DEVORIN = 32009;

	//Items
	private static final int BROOCH = 7262;

	public CheckStatus LAST_CHECK_STATUS = CheckStatus.GRACIA_EPILOGUE;

	public void onLoad()
	{}

	public void onReload()
	{}

	public void onShutdown()
	{}

	public _119_LastImperialPrince()
	{
		super(false);
		addStartNpc(SPIRIT);
		addTalkId(DEVORIN);
	}

	@Override
	public String onEvent(String event, QuestState st, L2NpcInstance npc)
	{
		String htmltext = event;
		if(event.equalsIgnoreCase("31453-06.htm"))
		{
			st.set("cond", "1");
			st.setState(STARTED);
			st.playSound(SOUND_ACCEPT);
		}
		else if(event.equalsIgnoreCase("32009-02.htm"))
		{
			if(st.getQuestItemsCount(BROOCH) < 1)
			{
				htmltext = "32009-02a.htm";
				st.exitCurrentQuest(true);
			}
		}
		else if(event.equalsIgnoreCase("32009-03.htm"))
		{
			st.set("cond", "2");
			st.playSound(SOUND_MIDDLE);
		}
		else if(event.equalsIgnoreCase("31453-10.htm"))
		{
			st.giveItems(ADENA_ID, 150292, true);
			st.addExpAndSp(902439, 90067);
			st.playSound(SOUND_FINISH);
			st.setState(COMPLETED);
			st.exitCurrentQuest(false);
		}
		return htmltext;
	}

	@Override
	public String onTalk(L2NpcInstance npc, QuestState st)
	{
		String htmltext = "noquest";
		int npcId = npc.getNpcId();
		int cond = st.getInt("cond");

		if(npcId == SPIRIT)
		{
			if(st.getState() == CREATED)
			{
				if(st.getPlayer().getLevel() >= 74 && st.getQuestItemsCount(BROOCH) >= 1)
					htmltext = "31453-01.htm";
				else
				{
					htmltext = "31453-02.htm";
					st.exitCurrentQuest(true);
				}
			}
			else if(cond == 1)
			{
				if(st.getQuestItemsCount(BROOCH) >= 1)
					htmltext = "31453-07.htm";
				else
				{
					htmltext = "31453-07a.htm";
					st.exitCurrentQuest(true);
				}
			}
			else if(cond == 2)
				htmltext = "31453-08.htm";
			/*else if(st.getState() == COMPLETED)
				htmltext = "31453-03.htm"; //TODO: Придумать что-то с выводом HTML при стейте COMPLETED. Сейчас стоит вывод сообщения по умолчанию. */
		}
		else if(npcId == DEVORIN)
		{
			if(cond == 1)
				htmltext = "32009-01.htm";
			else if (cond == 2)
				htmltext = "32009-04.htm";
		}
		return htmltext;
	}
}
Код:
package quests._119_LastImperialPrince;

import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.model.quest.Quest;
import l2p.gameserver.model.quest.QuestState;

/**
 * @author ManageR
 */
public class _119_LastImperialPrince extends Quest implements ScriptFile
{
	//NPC's
	private static final int SPIRIT = 31453;
	private static final int DEVORIN = 32009;

	//Items
	private static final int BROOCH = 7262;

	public CheckStatus LAST_CHECK_STATUS = CheckStatus.GRACIA_EPILOGUE;

	@Override
    public void onLoad()
	{}

	@Override
    public void onReload()
	{}

	@Override
    public void onShutdown()
	{}

	public _119_LastImperialPrince()
	{
		super(false);
		addStartNpc(SPIRIT);
		addTalkId(DEVORIN);
	}

	@Override
	public String onEvent(String event, QuestState st, L2NpcInstance npc)
	{
		String htmltext = event;
		if(event.equalsIgnoreCase("31453-06.htm"))
		{
			st.set("cond", "1");
			st.setState(STARTED);
			st.playSound(SOUND_ACCEPT);
		}
		else if(event.equalsIgnoreCase("32009-02.htm"))
		{
			if(st.getQuestItemsCount(BROOCH) < 1)
			{
				htmltext = "32009-02a.htm";
				st.exitCurrentQuest(true);
			}
		}
		else if(event.equalsIgnoreCase("32009-03.htm"))
		{
			st.set("cond", "2");
			st.playSound(SOUND_MIDDLE);
		}
		else if(event.equalsIgnoreCase("31453-10.htm"))
		{
			st.giveItems(ADENA_ID, 150292, REWARD);
			st.addExpAndSp(902439, 90067);
			st.playSound(SOUND_FINISH);
			st.setState(COMPLETED);
			st.exitCurrentQuest(false);
		}
		return htmltext;
	}

	@Override
	public String onTalk(L2NpcInstance npc, QuestState st)
	{
		String htmltext = "noquest";
		int npcId = npc.getNpcId();
		int cond = st.getCond();

		if(npcId == SPIRIT)
		{
			if(st.getState() == CREATED)
			{
				if(st.getPlayer().getLevel() >= 74 && st.getQuestItemsCount(BROOCH) >= 1)
					htmltext = "31453-01.htm";
				else
				{
					htmltext = "31453-02.htm";
					st.exitCurrentQuest(true);
				}
			}
			else if(cond == 1)
			{
				if(st.getQuestItemsCount(BROOCH) >= 1)
					htmltext = "31453-07.htm";
				else
				{
					htmltext = "31453-07a.htm";
					st.exitCurrentQuest(true);
				}
			}
			else if(cond == 2)
				htmltext = "31453-08.htm";
			/*else if(st.getState() == COMPLETED)
				htmltext = "31453-03.htm"; //TODO: Придумать что-то с выводом HTML при стейте COMPLETED. Сейчас стоит вывод сообщения по умолчанию. */
		}
		else if(npcId == DEVORIN)
		{
			if(cond == 1)
				htmltext = "32009-01.htm";
			else if (cond == 2)
				htmltext = "32009-04.htm";
		}
		return htmltext;
	}
}
Так же повеселили коммиты и не только по квестам/аи, которые магическим образом перекочевали с моей сборки в Sun-Dev, при этом таким же магическим образом мои копирайты сменились копирайтами Sun-Dev. Кстати, еще хотелось бы обратиться к одному человеку (а может и не одному, но один из них точно связан с той же конторкой Sun-Dev), который очень классно поливал меня дерьмом, только видимо у него не хватило смелости сказать мне это в лицо, мне, человеку, которого он закидывал какашками, зная обо мне чуть меньше чем ничего, и заявлял о моей продажности. Оказывается я не могу продавать свою работу, которую я выполнял для кого-то (только из-за сложной обстановки в семье), а затем только заливал к себе на SVN. Бог вам судья.
Ozzy вне форума Ответить с цитированием
Сказали спасибо: