Перейти к содержанию
Авторизация  
Raxus

Защита От Дропа При Пк...

Рекомендуемые сообщения

дать Х итем, в базе убрать все манипуляции с ним

если есть итем - удаляем,выходим

иначе идем дальше

 

 

Скрытый текст
	final int ITEM_ID=57;
if(getInventory().getItemByItemId(ITEM_ID)!=null)
{
	destroyItemByItemId("Anti_PK", ITEM_ID, 1, this, false);
	return;
}

 

вообщем я нашёл условие при котором не будет дропаться чар. (если у персонажа есть х скил, он не дропается), как сделать теперь чтобы этот скилл удалялся когда тебя слили будучи пк

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Cделал в начале кода (когда у персонажа не дропаются итемы)

 

for (L2Skill Skill : SkillTable.getInstance().getInfo(194, 1) )
	if (!isInsideZone(ZONE_PVP) && (!isGM() || Config.KARMA_DROP_GM) && (getKnownSkill(Skill) != null ))
	{
		boolean isKarmaDrop = false;
		boolean isKillerNpc = (killer instanceof L2NpcInstance);
		int pkLimit = Config.KARMA_PK_LIMIT;;

		int dropEquip		   = 0;
		int dropEquipWeapon	 = 0;
		int dropItem			= 0;
		int dropLimit		   = 0;
		int dropPercent		 = 0;
  removeSkill(getKnownSkill(Skill));

 

 

Выдаёт такие ошибки

 

	[javac] E:\selleon\source\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:4270: foreach not applicable to expression type
[javac]	  for (L2Skill Skill : SkillTable.getInstance().getInfo(194, 1) )
[javac]														   ^
[javac] E:\selleon\source\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:4271: getKnownSkill(int) in net.sf.l2j.gameserver.model.L2Character cannot be applied to (net.sf.l2j.gameserver.model.L2Skill)
[javac] 		if (!isInsideZone(ZONE_PVP) && (!isGM() || Config.KARMA_DROP_GM) || (getKnownSkill(Skill) != null ))
[javac] 																			 ^
[javac] E:\selleon\source\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:4282: getKnownSkill(int) in net.sf.l2j.gameserver.model.L2Character cannot be applied to (net.sf.l2j.gameserver.model.L2Skill)
[javac]	   removeSkill(getKnownSkill(Skill));
[javac]				   ^

Изменено пользователем Raxus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

	if (!isInsideZone(ZONE_PVP) && (!isGM() || Config.KARMA_DROP_GM) && (((L2PcInstance)killer).getInventory().getInventoryItemCount(6673, 0) < 10))
	{
		boolean isKarmaDrop = false;
		boolean isKillerNpc = (killer instanceof L2NpcInstance);
		int pkLimit = Config.KARMA_PK_LIMIT;;

		int dropEquip		   = 0;
		int dropEquipWeapon	 = 0;
		int dropItem			= 0;
		int dropLimit		   = 0;
		int dropPercent		 = 0;

 

сделал так для начала, скомпилил, дроп не падает ни при >10 ни при <10

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего понаписали XD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Чего понаписали XD

 

всмысле?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После моих издевательств над кодом, пришол к более менее близко к решению проблемы.

 

if (!isInsideZone(ZONE_PVP) && (!isGM() || Config.KARMA_DROP_GM) && ((L2PcInstance)killer).getInventory().getItemByItemId(4037).getCount() != 1)
	{
		boolean isKarmaDrop = false;
		boolean isKillerNpc = (killer instanceof L2NpcInstance);
		int pkLimit = Config.KARMA_PK_LIMIT;;

		int dropEquip		   = 0;
		int dropEquipWeapon	 = 0;
		int dropItem			= 0;
		int dropLimit		   = 0;
		int dropPercent		 = 0;
		if (getKarma() > 0 && getPkKills() >= pkLimit && ((L2PcInstance)killer).getInventory().getItemByItemId(4037).getCount() == 1 )
		{
			isKarmaDrop = true;
			dropPercent = Config.KARMA_RATE_DROP;
			dropEquip = Config.KARMA_RATE_DROP_EQUIP;
			dropEquipWeapon = Config.KARMA_RATE_DROP_EQUIP_WEAPON;
			dropItem = Config.KARMA_RATE_DROP_ITEM;
			dropLimit = Config.KARMA_DROP_LIMIT;
		}

 

не при итеме ==1 не при !=1 ничего не дропается. Как так-то??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
После моих издевательств над кодом, пришол к более менее близко к решению проблемы.

 

if (!isInsideZone(ZONE_PVP) && (!isGM() || Config.KARMA_DROP_GM) && ((L2PcInstance)killer).getInventory().getItemByItemId(4037).getCount() != 1)
	{
		boolean isKarmaDrop = false;
		boolean isKillerNpc = (killer instanceof L2NpcInstance);
		int pkLimit = Config.KARMA_PK_LIMIT;;

		int dropEquip		   = 0;
		int dropEquipWeapon	 = 0;
		int dropItem			= 0;
		int dropLimit		   = 0;
		int dropPercent		 = 0;
		if (getKarma() > 0 && getPkKills() >= pkLimit && ((L2PcInstance)killer).getInventory().getItemByItemId(4037).getCount() == 1 )
		{
			isKarmaDrop = true;
			dropPercent = Config.KARMA_RATE_DROP;
			dropEquip = Config.KARMA_RATE_DROP_EQUIP;
			dropEquipWeapon = Config.KARMA_RATE_DROP_EQUIP_WEAPON;
			dropItem = Config.KARMA_RATE_DROP_ITEM;
			dropLimit = Config.KARMA_DROP_LIMIT;
		}

 

не при итеме ==1 не при !=1 ничего не дропается. Как так-то??

 

Потому что вы написали полный бред, по причини того, что вы не понимаете данный алгоритм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Потому что вы написали полный бред, по причини того, что вы не понимаете данный алгоритм.

 

ну просто у меня такой бзик, если скомпилилось значит всё должно работать. :(

 

Может подскажете, что нужно видоизменять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ну просто у меня такой бзик, если скомпилилось значит всё должно работать. :spiteful:

 

Может подскажете, что нужно видоизменять?

 

может всё-таки по делу ответите, а не удалять мои апы. Я ведь не прошу мне весь код написать, а просто сказать что я делаю неправильно в понятной форме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ну просто у меня такой бзик, если скомпилилось значит всё должно работать. :spiteful:

 

Может подскажете, что нужно видоизменять?

 

Вам нужно не видоизменять, а начать понимать структуру программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Акуму вы говорите просто умными словами от этих слов даному человеку не помочь, вы типо такой умный и знаете что да как раз если это бред!

Дак просто помогите а не цитируйте его словА! мне кажеться вы тупо набиваете поСТ!

Поделиться сообщением


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

 

ну это уже второстепенный вопрос, мне на данный момент главное разобраться в реализации сией фишки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ну это уже второстепенный вопрос, мне на данный момент главное разобраться в реализации сией фишки

 

Я вам уже говорил выше, в топике, что для отказа от дропа с пк достаточно прерывать выполнения данного метода.

А вот конкретно условия, я так и не понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Я вам уже говорил выше, в топике, что для отказа от дропа с пк достаточно прерывать выполнения данного метода.

А вот конкретно условия, я так и не понял.

 

Попытаюсь объснить доступнее: Если у персонажа есть определённый скил (итем), то дропа с него не будет только 1 раз (то есть как только его убьют когда он будет пк, дропа не будет, а потом, как и у обычных игроков, дроп будет)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сам реализовал, благодаря вашей "помощи"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
сам реализовал, благодаря вашей "помощи"

 

Вот так и учатся. Практической помощи я не даю, в теории всегда пожалуйста. В теории вам распишу досконально что и как сделать, обращайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...