Сообщений: 47
Тем: 9
Зарегистрирован: Dec 2011
Репутация:
97
добавил класс мастера в кб, при нажатии на кнопку карьера, ничего не происходит. в ГСе пишет [01:35:20] WARN Direct access to bypass: _bbsclassmaster / Player: test
подскажите в чем косяк
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
DuMoH4uK Написал:добавил класс мастера в кб, при нажатии на кнопку карьера, ничего не происходит. в ГСе пишет [01:35:20] WARN Direct access to bypass: _bbsclassmaster / Player: test
подскажите в чем косяк Не смотря на то, что я постоянный член клуба "Экстрасенсы ZoneGame", всё же хотел бы узнать, что за сборка? Но, что-то мне подсказывает, что овероподобная.
Fortuna - non penis, in manus non recipe.
Сообщений: 47
Тем: 9
Зарегистрирован: Dec 2011
Репутация:
97
Ashe Написал:Не смотря на то, что я постоянный член клуба "Экстрасенсы ZoneGame", всё же хотел бы узнать, что за сборка? Но, что-то мне подсказывает, что овероподобная. так и есть, исходы овера
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
DuMoH4uK Написал:так и есть, исходы овера
Байпас в сборке пропишите. На форуме таких тем много, смотрите.
Fortuna - non penis, in manus non recipe.
Сообщений: 197
Тем: 4
Зарегистрирован: Aug 2011
Репутация:
948
если не ошибаюсь, то не хватает -h в байпассе.
как пример - action="bypass -h admin_admin"
Сообщений: 47
Тем: 9
Зарегистрирован: Dec 2011
Репутация:
97
теперь появляется выбор профессий, но когда нажимаешь на любую из них пишет, что "у вас нет 100 адена". хотя в инвентаре 1 миллион
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Посмотрите в хендлере обрабочике класс мастера - там же все понятно написано на java
Сообщений: 47
Тем: 9
Зарегистрирован: Dec 2011
Репутация:
97
Visor Написал:Посмотрите в хендлере обрабочике класс мастера - там же все понятно написано на java все проверил, по сути все должно работать, но так же пишет у вас нету 100 adena.
PHP код: <?php
package services.community;
import java.util.StringTokenizer;
import l2p.gameserver.Config;
import l2p.gameserver.handler.bbs.CommunityBoardManager;
import l2p.gameserver.handler.bbs.ICommunityBoardHandler;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.base.ClassId;
import l2p.gameserver.modul.Merchant;
import l2p.gameserver.scripts.ScriptFile;
import l2p.gameserver.serverpackets.ShowBoard;
import services.community.custom.GeneratePage;
/**
*
* @author voron.dev
*/
public class CommunityBoardClassMaster implements ScriptFile, ICommunityBoardHandler
{
@Override
public void onLoad()
{
CommunityBoardManager.getInstance().registerHandler(this);
}
@Override
public void onReload()
{
CommunityBoardManager.getInstance().removeHandler(this);
}
@Override
public void onShutdown()
{
}
@Override
public String[] getBypassCommands()
{
return new String[]
{
"_bbsclassmaster",
"_bbssetclass"
};
}
@Override
public void onBypassCommand(Player player, String bypass)
{
StringTokenizer st = new StringTokenizer(bypass, "_");
String cmd = st.nextToken();
String html = "";
if("bbsclassmaster".equals(cmd))
{
html = GeneratePage.main(genPageCareer(player), player);
}
else if(bypass.startsWith("_bbssetclass"))
{
ClassId classId = player.getClassId();
int classLvl = classId.level();
if(!Config.allowClassMaster.contains(classLvl + 1))
{
classLvl = 3;
}
int playerLvl = player.getLevel();
if(check(playerLvl, classLvl))
{
int itemId = Config.classMasterPriceId[classLvl];
long count = Config.classMasterPriceCount[classLvl];
StringTokenizer st1 = new StringTokenizer(bypass, " ");
st1.nextToken();
int id = Integer.parseInt(st1.nextToken());
for(ClassId ci : ClassId.values())
{
if(ci == ClassId.inspector)
{
continue;
}
if(ci.getId() == id && ci.childOf(classId) && ci.level() == classLvl + 1)
{
if(Merchant.getPay(player, itemId, count))
{
player.setClassId(id, false, false);
if(player.isSubClassActive())
{
player.getSubClasses().get(player.getClassId().getId()).setClassId(player.getActiveClassId());
}
else
{
player.setBaseClass(player.getActiveClassId());
}
player.broadcastUserInfo(true);
}
String pBypass = "_bbsclassmaster";
if(pBypass != null)
{
ICommunityBoardHandler handler = CommunityBoardManager.getInstance().getCommunityHandler(pBypass);
if(handler != null)
{
handler.onBypassCommand(player, pBypass);
}
}
return;
}
}
}
String pBypass = "_bbsclassmaster";
if(pBypass != null)
{
ICommunityBoardHandler handler = CommunityBoardManager.getInstance().getCommunityHandler(pBypass);
if(handler != null)
{
handler.onBypassCommand(player, pBypass);
}
}
}
ShowBoard.separateAndSend(html, player);
}
@Override
public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)
{
}
private static String genPageCareer(Player player)
{
ClassId classId = player.getClassId();
int classLvl = classId.level();
if(!Config.allowClassMaster.contains(classLvl + 1))
{
classLvl = 3;
}
int playerLvl = player.getLevel();
StringBuilder sb = new StringBuilder();
sb.append("Приветствую ").append("<font color=F2C202>").append(player.getName()).append("</font> ");
sb.append("ваша текущая профессия ").append("<font color=F2C202>").append(player.getClassId().name()).append("</font><br>");
if(check(playerLvl, classLvl))
{
int itemId = Config.classMasterPriceId[classLvl];
long count = Config.classMasterPriceCount[classLvl];
sb.append("<font color=F2C202>Цена: ").append(count).append(" ").append(Merchant.getItemName(itemId)).append("</font><br>");
sb.append("Доступные профессии:<br1>");
sb.append("<table fixwidth=700><tr>");
for(ClassId ci : ClassId.values())
{
if(ci == ClassId.inspector)
{
continue;
}
if(ci.childOf(classId) && ci.level() == classLvl + 1)
{
sb.append("<td>");
sb.append("<button value=\"").append(ci.name()).append("\" ");
sb.append("action=\"bypass _bbssetclass ").append(ci.getId());
sb.append("\" width=150 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\">");
sb.append("</td>");
}
}
sb.append("</tr>");
sb.append("</table>");
}
else
{
switch(classLvl)
{
case 0:
sb.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>20-го уровня</font>");
break;
case 1:
sb.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>40-го уровня</font>");
break;
case 2:
sb.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>76-го уровня</font>");
break;
default:
sb.append("Для вас нет доступных профессий.");
break;
}
}
String htm = "";
try
{
htm = new String(sb.toString().getBytes(), "utf-8");
}
catch(Exception e)
{
e.printStackTrace();
}
return htm;
}
private static boolean check(int playerLvl, int classLvl)
{
if(playerLvl >= 20 && classLvl == 0 || playerLvl >= 40 && classLvl == 1 || playerLvl >= 76 && classLvl == 2)
{
return true;
}
return false;
}
}
PHP код: <?php
package l2p.gameserver.modul;
import l2p.gameserver.data.xml.holder.ItemHolder;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.items.PcInventory;
import l2p.gameserver.templates.item.ItemTemplate;
public class Merchant
{
public static boolean getPay(Player paramPlayer, int paramInt, long paramLong)
{
if (paramPlayer.getInventory().getItemByItemId(paramInt) == null)
{
paramPlayer.sendMessage("Цена: " + paramLong + " " + getItemName(paramInt));
paramPlayer.sendMessage("У вас вообще нету " + getItemName(paramInt));
return false;
}
if (getItemCount(paramPlayer, paramInt) > paramLong)
{
paramPlayer.sendMessage("Цена: " + paramLong + " " + getItemName(paramInt));
paramPlayer.sendMessage("У вас нету " + paramLong + " " + getItemName(paramInt));
return false;
}
paramPlayer.getInventory().destroyItemByItemId(paramInt, paramLong);
return true;
}
public static void addItem(Player paramPlayer, int paramInt, long paramLong)
{
paramPlayer.getInventory().addItem(paramInt, paramLong);
StringBuilder localStringBuilder = new StringBuilder();
localStringBuilder.append("Вы получили ");
localStringBuilder.append(paramLong).append(" ");
localStringBuilder.append(getItemName(paramInt));
paramPlayer.sendMessage(localStringBuilder.toString());
}
public static String getItemName(int paramInt)
{
return ItemHolder.getInstance().getTemplate(paramInt).getName();
}
public static long getItemCount(Player paramPlayer, int paramInt)
{
return paramPlayer.getInventory().getItemByItemId(paramInt).getCount();
}
}
Сообщений: 1,883
Тем: 53
Зарегистрирован: Feb 2011
action=\"bypass _cbbsbuycert;"
Как пример, хендлер зарегистрирован как я вижу.
п.с Темы чистого овера как бы запрещаются на этом портале.
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
offtop
iqman Написал:п.с Темы чистого овера как бы запрещаются на этом портале.
Как бы давно уже не запрещаются
Fortuna - non penis, in manus non recipe.
|