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

Создание Свитков Уменьшения Счетчика Пк

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

Всем здарова.

 

В общем очень нужна помощь.

 

Суть такая:

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

 

Сейчас такая трабла, неясно как к новому итему привязать скил. Неясно даже как привязан скил на повешение сп по дефолту.

 

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

 

Жду помощи заранее спс.

Skype: Zifrius, или на форуме.

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


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

Неужели никто не подскажет? мне удалось понять как работает квест на снятие счетчика пк, по сути там скрипт.

 

Итемы по клику в моей сборки не расположены как обычно в gameserver\data\stats\etcitem\ кагбы \etcitem\ нет каталога.

Я распаковал ядро сборки, там нашел такую вещь: \libs\Исходники\pw_interlude\scripts\items\itemhandlers\ в ней пачка файлов: скриптов по категориям заинтересовал такой файл: Scrolls.class.

 

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

 

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

 

А так может у кого есть еще мысли?

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

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


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

воу воу а ответ же давали (возможно в похож ой теме).

Берем шарную сборку ГОД++ и смотрим реализацию данного свитка (метода и все что с ним связано).

Профит не хз* даже.

 

(на подобии СП свитков или ститков снятия штрафа за смерть (меняете на свои задачи и готово)).

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


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

Может стоит копать квкест на снятие пк. Найти там метод уменьшающий счетчик (это явно будет одна строчка, и если у вас норм сборка, с человеческим названием).

Потом копать скилы и написать свой использующий данный метод.

А уж потом окпать свитки и привязать к своему этот скил?

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


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

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

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

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


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

у кого покупаешь?

в шару мало кто дает нормально реализованный ДП (притом половина не знает что делает - лоси имхо)

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

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


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

у кого покупаешь?

в шару мало кто дает нормально реализованный ДП (притом половина не знает что делает - лоси имхо)

PWsoft последнею рев. беру от разрабов, может еще они что подскажут хз.

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


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

а я думал про команды что пилят ГОД++))))

 

эти свитки с полной реализацией есть в шаре (я забыл на каком портале).

удачи.

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


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

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

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


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

Перекачал все свежие шаровые ревизий включаю линдвиор и бамбук)

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


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

Варианта два, либо привязать к итему скилл новый с новым типом, что по факту бесполезно, можно сразу написать метод на снижение ПК и юзать этот метод с итемом, и все...

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


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

сэмпл

 

уменьшение количества пк:

package l2p.gameserver.skills.skillclasses;

import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Skill;
import l2p.gameserver.network.serverpackets.SystemMessage;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.templates.StatsSet;
import java.util.List;

public class ReducePK extends Skill
{
public ReducePK(StatsSet set)
{
	super(set);
}

@Override
public boolean checkCondition(Creature activeChar, Creature target, boolean forceUse, boolean dontMove, boolean first)
{
	if (!target.isPlayer())
	{
		activeChar.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET);
		return false;
	}

	Player player = (Player) target;

	if (player.getPkKills() < 1 || player.isCursedWeaponEquipped())
	{
		activeChar.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this));
		return false;
	}

	return super.checkCondition(activeChar, target, forceUse, dontMove, first);
}

@Override
public void useSkill(Creature caster, List<Creature> targets)
{
	for (Creature target : targets)
		if (target != null && target.isPlayer())
		{
			((Player) target).setPkKills((int) Math.max(((Player) target).getPkKills() - getPower(), 0));
			((Player) target).sendChanges();
		}
}
}

 

уменьшение количества кармы

package l2p.gameserver.skills.skillclasses;

import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Skill;
import l2p.gameserver.network.serverpackets.SystemMessage;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.templates.StatsSet;
import java.util.List;

public class ReduceKarma extends Skill
{
public ReduceKarma(StatsSet set)
{
	super(set);
}

@Override
public boolean checkCondition(Creature activeChar, Creature target, boolean forceUse, boolean dontMove, boolean first)
{
	if (!target.isPlayer())
	{
		activeChar.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET);
		return false;
	}

	Player player = (Player) target;

	if (player.getKarma() >= 0 || player.isCursedWeaponEquipped())
	{
		activeChar.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this));
		return false;
	}

	return super.checkCondition(activeChar, target, forceUse, dontMove, first);
}

@Override
public void useSkill(Creature caster, List<Creature> targets)
{
	for (Creature target : targets)
		if (target != null && target.isPlayer())
			((Player) target).increaseKarma((int) Math.min(-((Player) target).getKarma(), getPower()));
}
}

  • Upvote 2

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


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

Ну просто нереальный сенк, завтра с утречка опробую. отпишу что как. постараюсь адоптировать под свою сборку)

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


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

Вот собрал папочку: https://yadi.sk/d/f02Wz-kkbhae9 вроде бы все верно сделал грузить отказывается:

 

Initializing QuestManager

 

importing Skills data ...

failed to import Skills : ReduceKarma

failed to import Skills : ReducePK

... done

 

 

importing quests ...

... done

 

Кому несложно проверить?)

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


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

Может надо компилировать в ..class? кто может подсказать там же получается файл .py основной а .class дамп? Или я вообще неверно рассуждаю?

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


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

И отсюда вытекает интересная фишка-

вот например скилл:

 

<skill id="9903" levels="1" name="No PK scroll">

<!-- 9903 1 Scroll to reduce counter PK lvl1-->

<set name="operateType" val="OP_ACTIVE" />

<set name="hitTime" val="2000" />

<set name="coolTime" val="200" />

<set name="reuseDelay" val="3000" />

<set name="target" val="TARGET_SELF" />

<set name="skillType" val="NOTDONE" />

<for>

<mul stat="ReducePK" val="1" order="0x10"/>

</for>

</skill>

 

Который буду привязывать к итему, сомневаюсь что верно прописал параметр:stat="ReducePK, ну пока неважно, суть в том что скиллы грузяться при старте сервера, а скрипты в самом конце, и даже если удалость загрузить эти новые скрипты, то параметр нового запроса будет указан после и скилл не сможет загрузиться...

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


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

вы просматривали функционал "Пета на снятие ПК" ?

возможно там можно изменить и под свиток запрос.

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


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

И отсюда вытекает интересная фишка-

вот например скилл:

 

<skill id="9903" levels="1" name="No PK scroll">

<!-- 9903 1 Scroll to reduce counter PK lvl1-->

<set name="operateType" val="OP_ACTIVE" />

<set name="hitTime" val="2000" />

<set name="coolTime" val="200" />

<set name="reuseDelay" val="3000" />

<set name="target" val="TARGET_SELF" />

<set name="skillType" val="NOTDONE" />

<for>

<mul stat="ReducePK" val="1" order="0x10"/>

</for>

</skill>

 

Который буду привязывать к итему, сомневаюсь что верно прописал параметр:stat="ReducePK, ну пока неважно, суть в том что скиллы грузяться при старте сервера, а скрипты в самом конце, и даже если удалость загрузить эти новые скрипты, то параметр нового запроса будет указан после и скилл не сможет загрузиться...

в моем примере я показал классы-скилтайпы, т.е. в итоге сами скиллы будут типа таких

<!-- Scroll: PK (Low-grade) / Свиток Возобновления (низкий уровень) -->
<skill id="9504" levels="1" name="Scroll: PK (Low-grade)">
	<set name="icon" val="icon.skill0000" />
	<set name="hitTime" val="2000" />
	<set name="coolTime" val="200" />
	<set name="reuseDelay" val="3000" />
	<set name="power" val="1" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="REDUCE_PK" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="itemConsumeId" val="35741" />
	<set name="itemConsumeCount" val="1" />
	<set name="isHandler" val="true" />
	<cond msg="Это можно использовать только во Флоране.">
		<or>
			<zone name="[floran_town_peace1]" />
			<zone name="[floran_town_peace2]" />
			<zone name="[floran_town_peace3]" />
		</or>
	</cond>
</skill>

  • Upvote 2

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

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

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