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

Добавить Баф В Бафера

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

Есть бафер, который через ядро

Вот его код:

 

 

package com.l2jfrozen.gameserver.model.actor.instance;
import com.l2jfrozen.gameserver.datatables.CharSchemesTable;
import com.l2jfrozen.gameserver.datatables.SkillTable;
import com.l2jfrozen.gameserver.model.L2Effect;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.L2Summon;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;
import javolution.util.FastList;
import javolution.util.FastMap;
import java.util.StringTokenizer;
public class L2BuffInstance extends L2FolkInstance
{
public int[] TableId;
public int[] TableDialog;

public L2BuffInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
 TableId=new int[]{
		 1068,1388,1086,1077,1242,1240,1085,1059,1303,1062,1043,
1040,1389,1036,1035,1243,1304,1078,1087,
1045,1048,1204,1073,1397,1044,1268,1257,
1182,1189,1191,1033,1259,1392,1393,1353,1352,1354,
271,272,273,274,275,276,277,307,309,310,311,
264,265,266,267,268,269,270,304,305,306,308,
1355,1356,1357,1363,4699,4554,365,363,364,349,4702
};
 TableDialog=new int[]{
		 1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,
4,4,4,4,4,4,4,4,4,4,
5,5,5,5,5,5,5,5,5,5,5,
6,6,6,6,6,6,6,6,6,6,6,
7,7,7,7,7,7,7,7,7,7,7
};
}
@Override
public String getHtmlPath(int npcId, int val)
{
String pom;
if (val == 0)
pom = "" + npcId;
else
pom = npcId + "-" + val;
return "data/html/buff/" + pom + ".htm";
}
@Override
public void onBypassFeedback(L2PcInstance player, String command)
{
StringTokenizer st = new StringTokenizer(command, " ");
String actualCommand = st.nextToken(); // Get actual command
if (actualCommand.startsWith("Chat"))
{
	 String filename = "data/html/buff/40001.htm";
	 int cmdChoice = Integer.parseInt(command.substring(5,7).trim());
if(cmdChoice>0)
{
filename = "data/html/buff/40001-"+cmdChoice+".htm";
}
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile(filename);
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("Cancel"))
 {
	 player.stopAllEffects();
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile("data/html/buff/40001.htm");
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("PetCancel"))
 {
	 L2Summon pet=player.getPet();
	 if(pet!=null)
	 pet.stopAllEffects();
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile("data/html/buff/40001-08.htm");
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("Regenerate"))
 {
	 player.setCurrentHpMp(player.getMaxHp(),(player.getMaxMp()));
	 player.setCurrentCp(player.getMaxCp());
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile("data/html/buff/40001.htm");
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("PetRegenerate"))
 {
	 L2Summon pet=player.getPet();
	 pet.setCurrentHpMp(pet.getMaxHp(),(pet.getMaxMp()));
	 pet.setCurrentCp(pet.getMaxCp());
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
	 html.setFile("data/html/buff/40001-08.htm");
		 sendHtmlMessage(player,html);
	 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("Buff"))
 {
	 String filename = "data/html/buff/40001",v;
	 int cmdChoice = Integer.parseInt(command.substring(5, 7).trim());
int id=TableId[cmdChoice];
int dialog=TableDialog[cmdChoice];
int level=SkillTable.getInstance().getMaxLevel(id,0);
	 if(id==4554)level=4;
	 if(dialog==0)v="";
	 else v="-"+Integer.toString(dialog);
	 player.stopSkillEffects(id);
	 SkillTable.getInstance().getInfo(id,level).getEffects(player,player);
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile(filename+v+".htm");
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
else if(actualCommand.startsWith("PetBuff"))
 {
	 String filename = "data/html/buff/40001",v;
	 int cmdChoice = Integer.parseInt(command.substring(5, 7).trim());
int id=TableId[cmdChoice];
int dialog=TableDialog[cmdChoice];
int level=SkillTable.getInstance().getMaxLevel(id,0);
	 if(dialog==0)v="";
	 else v="-"+Integer.toString(dialog);
	 L2Summon pet=player.getPet();
		 if(pet!=null)
 {
 pet.stopSkillEffects(id);
 SkillTable.getInstance().getInfo(id,level).getEffects(pet,pet);
			 }
		 else player.sendMessage("You don't have a summon");
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
 html.setFile(filename+v+".htm");
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("save"))
 {
	 int cmdChoice = Integer.parseInt(command.substring(5, 6).trim());
	 int flag=0;
NpcHtmlMessage html = new NpcHtmlMessage(1);
if(cmdChoice>3)
{
html.setFile("data/html/buff/40001-11.htm");
flag=1;
}
	 else
html.setFile("data/html/buff/40001.htm");
CreateScheme(player,Integer.toString(cmdChoice),flag);
	 sendHtmlMessage(player,html);
 player.sendPacket(new ActionFailed());
 }
 else if(actualCommand.startsWith("give"))
 {
	 int cmdChoice = Integer.parseInt(command.substring(5, 6).trim());
	 if((cmdChoice<1)&&(cmdChoice>6))return;
	 String key="data/html/buff/40001",sKey=Integer.toString(cmdChoice);
	 int flag=0;
	 NpcHtmlMessage html = new NpcHtmlMessage(1);
	 if(cmdChoice>3)
	 {
		 flag=1;
		 key="data/html/buff/40001-8";
	 }
	 if (CharSchemesTable.getInstance().getScheme(
 player.getObjectId(),sKey)!=null)
	 {
		 if(flag==0)
		 {
			 for (L2Skill sk : CharSchemesTable.getInstance().getScheme(
 player.getObjectId(),sKey))
 {
				 player.stopSkillEffects(sk.getId());
				 sk.getEffects(this, player);
 }
		 }
		 else
		 {
			 for (L2Skill sk : CharSchemesTable.getInstance().getScheme(
 player.getObjectId(),sKey))
 {
				 L2Summon pet = player.getPet();
				 if(pet!=null)
				 {
					 pet.stopSkillEffects(sk.getId());
					 sk.getEffects(this, pet);
				 }
			 }
		 }
		 html.setFile(key+".htm");
	 }
	 else
	 {
		 player.sendMessage("Profile "+sKey+" can't find");
		 return;
	 }
	 sendHtmlMessage(player,html);
	 player.sendPacket(new ActionFailed());
 }
 else
 {
super.onBypassFeedback(player, command);
}
}
private void sendHtmlMessage(L2PcInstance player, NpcHtmlMessage html)
{
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcId%", String.valueOf(getNpcId()));
player.sendPacket(html);
}
 private void CreateScheme(L2PcInstance player,String name,int flag)
{
if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) != null
&& CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).containsKey(name))
{
CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).remove(name);
}
if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) == null)
		 {
			 CharSchemesTable.getInstance().getSchemesTable().put(player.getObjectId(),
					 new FastMap<String, FastList<L2Skill>>(6));
		 }
CharSchemesTable.getInstance().setScheme(player.getObjectId(),name.trim(),
 new FastList<L2Skill>(69));
		 L2Effect[] s;
	 if (flag==0)
	 {
			 s= player.getAllEffects();

	 }
else
{
L2Summon pet=player.getPet();
	 s=pet.getAllEffects();
}
	 int Id;
	 Boolean Ok=false;
 int i = 0;
 while (i < s.length) {
	 L2Effect value = s[i];
	 Id = value.getSkill().getId();
	 int k = 0;
	 while (k < TableId.length) {
		 if (Id == TableId[k]) {
			 Ok = true;
			 break;
		 }
		 k++;
	 }
	 if (Ok)
		 CharSchemesTable.getInstance().getScheme(
				 player.getObjectId(), name).add(
				 SkillTable.getInstance().getInfo(Id, value.getSkill().getLevel()));
	 Ok = false;
	 i++;
 }
 player.sendMessage("Profile "+name+" saved!");
}
}

 

 

Необходимо добавить скилл Flu (id 4553, 4 лвл)

 

 

И еще:

в бафере есть встроенная маляра, но я не смог разобраться, каким образом прописывается id?

<td><a action="bypass -h npc_%objectId%_Buff 64">Malaria</a></td>

тут запрос идет на _buff 64

Хотя у маляры id 4554

У остальных скиллов так же.

Кто может помочь? Гуглил - не нашел)

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

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


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

разобрался как.. надо в скрипт добавить этот кусок:

 

else if(actualCommand.startsWith("Buff"))

{

String filename = "data/html/buff/40001",v;

int cmdChoice = Integer.parseInt(command.substring(5, 7).trim());

int id=TableId[cmdChoice];

int dialog=TableDialog[cmdChoice];

int level=SkillTable.getInstance().getMaxLevel(id,0);

if(id==4553)level=4;

if(dialog==0)v="";

else v="-"+Integer.toString(dialog);

player.stopSkillEffects(id);

SkillTable.getInstance().getInfo(id,level).getEffects(player,player);

NpcHtmlMessage html = new NpcHtmlMessage(1);

html.setFile(filename+v+".htm");

sendHtmlMessage(player,html);

player.sendPacket(new ActionFailed());

}

 

Но другая проблема.. Бафает флю почему-то 10 лвла) хотя выставлено 4, почему?:)

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


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

int level=SkillTable.getInstance().getMaxLevel(id,0);

Получаем максимальный лвл бафа.

 

 if(id==4553)level=4;

Если ИД бафа равен 4553 то значение level устанавливаем на 4. То что получали выше уже не идет в счет.

 

следовательно вместо ид 4553 надо вписать ид маляры\флу

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


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

int level=SkillTable.getInstance().getMaxLevel(id,0);

Получаем максимальный лвл бафа.

 

 if(id==4553)level=4;

Если ИД бафа равен 4553 то значение level устанавливаем на 4. То что получали выше уже не идет в счет.

 

следовательно вместо ид 4553 надо вписать ид маляры\флу

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

 

 

else if(actualCommand.startsWith("Buff"))

{

String filename = "data/html/buff/40001",v;

int cmdChoice = Integer.parseInt(command.substring(5, 7).trim());

int id=TableId[cmdChoice];

int dialog=TableDialog[cmdChoice];

int level=SkillTable.getInstance().getMaxLevel(id,0);

if(id==4554)level=4;

if(dialog==0)v="";

else v="-"+Integer.toString(dialog);

player.stopSkillEffects(id);

SkillTable.getInstance().getInfo(id,level).getEffects(player,player);

NpcHtmlMessage html = new NpcHtmlMessage(1);

html.setFile(filename+v+".htm");

sendHtmlMessage(player,html);

player.sendPacket(new ActionFailed());

}

 

 

4554 - маляра

4553 - флю

решил сделать по аналогии. Получилось, но дает 10 лвл флю

Но почему маляру дает 4 лвла, а флю 10?

 

Проблему, в принципе, решил, но другим способом. В xml поставил макс уровень 4.

Но хотелось бы узнать почему без редактирования xml флю дает 10 лвл, а маляра 4 =)

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

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


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

Посмотри ошибки. Вдруг есть :)

 

TableId=new int[]{

Также в этот список добавь ид флу

 

7,7,7,7,7,7,7,7

и тут к семеркам добавь еще одну семерку)

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

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


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

Посмотри ошибки. Вдруг есть :)

 

TableId=new int[]{

Также в этот список добавь ид флу

 

7,7,7,7,7,7,7,7

и тут к семеркам добавь еще одну семерку)

это, конечно, добавил) иначе бафф не бафался бы)

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


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

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

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

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

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

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

Войти

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

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

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

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

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