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

Скрипт PWSoft

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

Кто знает, как в PWSoft сделать так, чтобы награду выдавало после использования какого-то скила? сейчас стоит после убийства.

package ai;

import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.jython.QuestJython;
import net.sf.l2j.util.Rnd;

public class godItem extends QuestJython
{
//Мобы
private final static int[] Mob1 = {61010};
//ID итема
private final static int god_item = 14070;
//Включить или выключить дополнительный дроп
private static boolean Bool = true; 
//ID фарм монет
private final static int Farm_Coin = 10000;
//Шанс дропа предмета
private final static int chance = 100;

//Сколько давать за убитого моба
//От Drop_Count_Min до Drop_Count_Max
private final static int Drop_Count_Min = 1;
private final static int Drop_Count_Max = 1;

public master(int questId, String name, String descr)
{
super(questId, name, descr, 1);
        for (int mobs : Mob1)
            addKillId(mobs);
}

@Override
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) 
{  
int nagrada = Rnd.get(Drop_Count_Min,Drop_Count_Max);
int npcId = npc.getNpcId();
int count = killer.getInventory().getInventoryItemCount(master1_item,0);
for (int id : Mob1)
if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance)
{
killer.giveItem(Farm_Coin,nagrada);
}

return null; 
}

public static void main(String... arguments )
{
new master(-1, "godItem", "godItem");
}
}

 

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


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

Нужно смотреть методы. Есть onAttack, но нужно искать onCast или типо того. в нем уже проверять ИД скилла и выдавать награду.

  • Upvote 1

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


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

Нужно смотреть методы. Есть onAttack, но нужно искать onCast или типо того. в нем уже проверять ИД скилла и выдавать награду.

спасибо, буду что-то пробовать)

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

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


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

спасибо, будем пробовать, я бы не догадался)

Самое простое это найти квест или скрипт с похожим действием и посмотреть, через какой метод сделано. На вскидку приходит только прокачка СА, посмотрите этот квест, может подойдет.

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


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

Самое простое это найти квест или скрипт с похожим действием и посмотреть, через какой метод сделано. На вскидку приходит только прокачка СА, посмотрите этот квест, может подойдет.

уже пробовал, искал, ничего не мог найти) 

СА смотрел чуток не то получается

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


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

После простого юза скилла или после юза скилла на моба ?

 

 Я так понимаю, на моба должен кастоваться скилл и после этого выдаётся итем. Нету ПВ сборки, так бы глянул.

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


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

После простого юза скилла или после юза скилла на моба ?

После юза скила на моба.

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


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

Глянул пв, нужно использовать onSkillUse:

...
addSkillUseId(ид моба) // подключить обработчик
...

@Override
public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) {
//сам функционал
}
  • Upvote 1

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


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

 

Глянул пв, нужно использовать onSkillUse:

...
addSkillUseId(ид моба) // подключить обработчик
...

@Override
public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) {
//сам функционал
}

спасибо большое, сейчас буду пробовать реализовать

хотя, было бы неплохо, если бы поподробней расписали, а то я боюсь запутаюсь...даже в двух соснах)

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

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


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

спасибо большое, сейчас буду пробовать реализовать

хотя, было бы неплохо, если бы поподробней расписали, а то я боюсь запутаюсь...даже в двух соснах)

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

  • Upvote 2

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


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

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

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

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


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

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

Код хоть покажите.

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


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


import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.quest.jython.QuestJython;
import net.sf.l2j.util.Rnd;


public class master extends QuestJython
{
//Мобы
private final static int[] Mob1 = {61010};
private final static int[] Mob2 = {43919};
//ID Итема
private final static int master1_item = 14070;
//ID Скила
private final static int Skill1 = 42;
//Включить или выключить дополнительный дроп
private static boolean Bool = true; 
//ID фарм монет
private final static int Farm_Coin = 10000;
private final static int Earth_Token = 12010;
    //Шанс дропа предмета
    private final static int chance = 100;
private final static int chance1 = 100;
//Сколько давать за убитого моба
//От Drop_Count_Min до Drop_Count_Max
private final static int Drop_Count_Min = 1;
private final static int Drop_Count_Max = 1;




public master(int questId, String name, String descr)
{
super(questId, name, descr, 1);
        for (int mobs : Mob1)
            addKillId(mobs);
   for (int mobs : Mob2)
   addSkillUseId(mobs);
}
//getIsSpoiledBy isSpoil
@Override
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) 
{  
int nagrada = Rnd.get(Drop_Count_Min,Drop_Count_Max);
int npcId = npc.getNpcId();
int count = killer.getInventory().getInventoryItemCount(master1_item,0);


for (int id : Mob1)
if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance)
{
killer.giveItem(Farm_Coin,nagrada);
}
return null; 
}


public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill)
{ 
int spoil1 = Rnd.get(Drop_Count_Min,Drop_Count_Max);
int npcId = npc.getNpcId();
int count = caster.getInventory().getInventoryItemCount(master1_item,0);
int SkillID = skill.getId();




for (int id : Mob2)
if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance1 && SkillID == Skill1)
{
caster.giveItem(Earth_Token,spoil1);
}
return null; 
}


public static void main(String... arguments )
{
new master(-1, "master", "master");
}
}

 

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


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

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

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


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

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

я не спец в этом деле, все делаю по примеру, смотрю на похожие коды и переделываю)

мне это не принципиально, найти бы в чем может быть проблема. Или же может не правильно все прописал?

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


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

я не спец в этом деле, все делаю по примеру, смотрю на похожие коды и переделываю)

мне это не принципиально, найти бы в чем может быть проблема. Или же может не правильно все прописал?

public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill)
{ 
	if(Rnd.get(100) < chance1 && skill.getId() == Skill1)
	{
		caster.giveItem(Earth_Token, Rnd.get(Drop_Count_Min,Drop_Count_Max);
	}
	return null; 
}

Этого достаточно, т.к. АИ отвечает только за этих мобов и метод вызывается, когда на зарегестрированного моба юзают скилл. Создавать лишние переменные тоже ни к чему.

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


Ссылка на сообщение
Поделиться на другие сайты
public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill)
{ 
	if(Rnd.get(100) < chance1 && skill.getId() == Skill1)
	{
		caster.giveItem(Earth_Token, Rnd.get(Drop_Count_Min,Drop_Count_Max);
	}
	return null; 
}

Этого достаточно, т.к. АИ отвечает только за этих мобов и метод вызывается, когда на зарегестрированного моба юзают скилл. Создавать лишние переменные тоже ни к чему.

 

по прежнему не работает, какой бы скил не ставил.

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


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

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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