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

Мини ивент жаровни в монастыре

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

В комнате с жаровнями НПЦ Sumiel меняет потухший факел на зажённый, етим факелом надо зажеть по очереди жаровни, чтоб закончить задание, прблемма состоит в том что не риализован скилл у факула, чтоб зажечь огонь, соотвественно нечего не происходит

 

вот предмет

<etcitem id="15485" name="Torch">
    <set name="class" value="OTHER"/>
    <set name="crystal_type" value="NONE"/>
    <set name="destroyable" value="false"/>
    <set name="dropable" value="false"/>
    <set name="icon" value="icon.etc_torchlight_i00"/>
    <set name="tradeable" value="false"/>
    <set name="type" value="OTHER"/>
    <cond msgId="1508">
      <player olympiad="false"/>
    </cond>
		<skills>
			<skill id="9059" level="1"/>
		</skills>
  </etcitem>

а вот сам скилл ))

<skill id="9059" levels="1" name="Torch Light">
		<!-- Lights the Torch -->
		<set name="icon" val="icon.skill0000" />
		<set name="reuseDelay" val="2000" />
		<set name="magicLevel" val="1" />
		<set name="hitTime" val="2000" />
		<set name="target" val="TARGET_NONE" />
		<set name="skillType" val="NOTDONE" />
		<set name="operateType" val="OP_PASSIVE" />
	</skill>

где не искал этот скилл везьде NOTDONE, но через сам скрипт ивента жаровни загораются, когда нужно запомнить поочерёдность.

 

Может кто видел его реализацию?, или как можно ришить такого рода проблему другим способом (на пример скриптом итем-скила)

сборка ФТ -  Hi5

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


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

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

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


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

сделал через скрипт, чтоб юзал скил, создал отдельную зону где можно применять итем

private boolean use15485(Player player, boolean ctrl)
	{
		if(!player.isInZone(SumielInstance.getZone()))
		{
			player.sendPacket(new SystemMessage(SystemMessage.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addItemName(15485));
			return false;
		}
		player.doCast(SkillTable.getInstance().getInfo(9059, 1), player, false);
		return true;
	}

но, если делать так то загоряются все жаровни одновременно

 

Алекс, посмотрел у вас, но так и не понял, как у вас это работает, после начала отсчёта времени ивента, не возмржно даже выделить жаровнью, и при юзание итема, пишет что не верная цель :D

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

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


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

сделал через скрипт, чтоб юзал скил, создал отдельную зону где можно применять итем

private boolean use15485(Player player, boolean ctrl)
	{
		if(!player.isInZone(SumielInstance.getZone()))
		{
			player.sendPacket(new SystemMessage(SystemMessage.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addItemName(15485));
			return false;
		}
		player.doCast(SkillTable.getInstance().getInfo(9059, 1), player, false);
		return true;
	}

но, если делать так то загоряются все жаровни одновременно

 

Алекс, посмотрел у вас, но так и не понял, как у вас это работает, после начала отсчёта времени ивента, не возмржно даже выделить жаровнью, и при юзание итема, пишет что не верная цель :D

что то ты старое пробовал, на новой шаре выделяется

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

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


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

ид нпц сделай разные

 

не вариант, так как там не позволяет движок ивента, там должен быть 1 ИД у жаровни

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


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

а в чем проблема то? там банально меняется npc state у жаровен при юзании на них скилла с определенным ид

т.е. тупо 9059 скиллом с таргетом TARGET_ONE и типом BUFF (ну и еще активным, т.е. OP_ACTIVE).

а в аи жаровен проверяем что за скилл на них кастуется, если 9059 и все остальные условия тоже подходят - меняем у данной жаровни стейт - setNpcState(x).

 

вот тебе офовское поведение жаровен - по ним можешь и на яве аи для них написать

 

/***************************************************************************
*   Script Decompiled by SauDecompiler build 102306.2
***************************************************************************/

class ai_monastery_minigame_burner : citizen
{
parameter:
	int	POT_NUMBER = 0;
	int	OFF_TIMER = 5567;
	int	off_time = 2;

handler:
	EventHandler CREATED()
	{
		myself::ChangeStatus(2);
	}

	EventHandler ATTACKED(attacker, skill_name_id)
	{
		if( skill_name_id == 593690625 )
		{
			myself::ChangeNPCState(myself.sm, 1);
			myself::ChangeStatus(2);
			myself::AddUseSkillDesire(attacker, 337117185, 0, 0, 1000000);
			myself::BroadcastScriptEvent(2114005, POT_NUMBER, 1000);
			myself::AddTimerEx(OFF_TIMER, off_time * 1000);
			myself::ChangeStatus(3);
		}
	}

	EventHandler SCRIPT_EVENT(script_event_arg1, script_event_arg2)
	{
		if( script_event_arg1 == 2114001 )
		{
			myself::ChangeStatus(2);
			if( script_event_arg2 == POT_NUMBER )
			{
				myself::ChangeNPCState(myself.sm, 1);
				myself::AddTimerEx(OFF_TIMER, off_time * 1000);
			}
		}
		else if( script_event_arg1 == 2114002 )
		{
			myself::ChangeStatus(2);
			myself::ChangeNPCState(myself.sm, 1);
			myself::AddTimerEx(OFF_TIMER, off_time * 1000);
		}
		else if( script_event_arg1 == 2114003 )
		{
			myself::ChangeNPCState(myself.sm, 1);
			myself::AddTimerEx(OFF_TIMER, off_time * 1000);
			myself::ChangeStatus(2);
		}
		else if( script_event_arg1 == 2114004 )
		{
			myself::ChangeStatus(2);
			myself::ChangeNPCState(myself.sm, 1);
			myself::AddTimerEx(OFF_TIMER, off_time * 1000);
		}
		else if( script_event_arg1 == 21140015 )
		{
			myself::ChangeNPCState(myself.sm, 1);
			myself::AddTimerEx(OFF_TIMER, off_time * 1000);
			myself::ChangeStatus(3);
		}
	}

	EventHandler TIMER_FIRED_EX(timer_id)
	{
		if( timer_id == OFF_TIMER )
		{
			myself::ChangeNPCState(myself.sm, 2);
		}
	}

}
  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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