Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Принцип работы Disarm (https://forum.zone-game.info/showthread.php?t=23422)

FullMetal 07.10.2012 02:51

Принцип работы Disarm
 
Всем привет!

Кто-нибудь сталкивался с этим на ОВ сборках? Что мне хотелось бы узнать- если я хочу например ввести скил, который работал бы как дизарм, но снимал например плащ (это я так, для примера), где мне это смотреть? Просто дизарм запрещает вообще любые действия с инвентарем, а мне допустим надо для моих целей разграничение на разные типы, и скопировать эффект из дизарма с заменой типа снимаемого предмета не получится... Кто-нибудь в курсе?:Olen':

Ro_0TT 07.10.2012 03:48

Re: Принцип работы Disarm
 
org.mmocore.gameserver.skills.effects.EffectDisarm
	@Override
	public void onStart()
	{
		super.onStart();
		Player player = (Player) _effected;
 
		ItemInstance wpn = player.getActiveWeaponInstance();
		if(wpn != null)
		{
			player.getInventory().unEquipItem(wpn);
			player.sendDisarmMessage(wpn);
		}
		player.startWeaponEquipBlocked();
	}
 
Code: Java
Меняете под свои нужды, как вариант - можно добавить параметр эффекту и использовать его, определяя в каком скиле снимется пуха, а в каком плащ.

Без знаний, конечно, вы ничего толкового не сделаете).

FullMetal 07.10.2012 03:54

Re: Принцип работы Disarm
 
Цитата:

Сообщение от Ro_0TT (Сообщение 233011)
org.mmocore.gameserver.skills.effects.EffectDisarm
	@Override
	public void onStart()
	{
		super.onStart();
		Player player = (Player) _effected;
 
		ItemInstance wpn = player.getActiveWeaponInstance();
		if(wpn != null)
		{
			player.getInventory().unEquipItem(wpn);
			player.sendDisarmMessage(wpn);
		}
		player.startWeaponEquipBlocked();
	}
 
Code: Java
Меняете под свои нужды, как вариант - можно добавить параметр эффекту и использовать его, определяя в каком скиле снимется пуха, а в каком плащ.

Без знаний, конечно, вы ничего толкового не сделаете).

Ну я вроде писал, что в самом скиле только тип снимаемого снаряжение менять можно, а мне больше интересно как поменять условия блокировки его повторной экипировки, т.к. если это использовать, то блокируется весь инвентарь, что для моих планов ну совсем не подходит :) внутри Creature вроде как черным по белому написана блокировка оружия и можноЮ казалось бы, просто переписать аналогичный метод, но к сожалению все та же проблема: мы как бы блокируем отдельный тип, но на деле идет блокировка инвентаря :(

linliss 07.10.2012 04:23

Re: Принцип работы Disarm
 
Цитата:

Сообщение от FullMetal (Сообщение 233012)
Ну я вроде писал, что в самом скиле только тип снимаемого снаряжение менять можно, а мне больше интересно как поменять условия блокировки его повторной экипировки, т.к. если это использовать, то блокируется весь инвентарь, что для моих планов ну совсем не подходит :) внутри Creature вроде как черным по белому написана блокировка оружия и можноЮ казалось бы, просто переписать аналогичный метод, но к сожалению все та же проблема: мы как бы блокируем отдельный тип, но на деле идет блокировка инвентаря :(

boolean can_equip_cloak = true;

при успешном прохождении еффекта can_equip_cloak = false;

при одевании шмотки

if(armorType == cloak && !can_equip_cloak)
return;

при остановке еффекта can_equip_cloak = true;

это самое простое решение

FullMetal 07.10.2012 04:44

Re: Принцип работы Disarm
 
Цитата:

Сообщение от linliss (Сообщение 233014)
boolean can_equip_cloak = true;

при успешном прохождении еффекта can_equip_cloak = false;

при одевании шмотки

if(armorType == cloak && !can_equip_cloak)
return;

при остановке еффекта can_equip_cloak = true;

это самое простое решение

Блин. Надо отдохнуть, не додумался сам до этого. Спасибо)
попутно еще один вопрос - где идет непосредственная обработка одевания эквипа?
Смотрел Inventory -> onEquip() но нет, не оно.

linliss 07.10.2012 05:43

Re: Принцип работы Disarm
 
Цитата:

Сообщение от FullMetal (Сообщение 233015)
Блин. Надо отдохнуть, не додумался сам до этого. Спасибо)
попутно еще один вопрос - где идет непосредственная обработка одевания эквипа?
Смотрел Inventory -> onEquip() но нет, не оно.

клиентский пакет UseItem

FullMetal 07.10.2012 07:24

Re: Принцип работы Disarm
 
Цитата:

Сообщение от linliss (Сообщение 233017)
клиентский пакет UseItem

Не совсем так, скорее вот тут EquipableItem. Сразу не нашел, т.к .искал в ядре, а он зараза в ДП :)

Спасибо всем кто откликнулся!

P.S. Когда нибудь я найду кнопку "спасибо"


Текущее время: 10:51. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot