Jump to content
Sign in to follow this  
ncsSpawN

Баг на euro-pvp и lucera 1.7 от ncs.SpawN

Recommended Posts

не change_class байпас случаем?)

через него можно 75 взять 3 профу на пв

естественно )

а есть другие ещё ?))

Share this post


Link to post
Share on other sites

в общем, такая штука не работает на акисах. Ни через точку, ни со слешом, вообще ничего не происходит

На ацисах не работает, там не реализованы воискоманды. 

Share this post


Link to post
Share on other sites

На ацисах не работает, там не реализованы воискоманды. 

войс да но не кто не запрещал байпасы )

Share this post


Link to post
Share on other sites

войс да но не кто не запрещал байпасы )

А с этого момента по подробней=)

Share this post


Link to post
Share on other sites

А с этого момента по подробней=)

Да что тут писать просто в html вставляем свои байпасы

можно в l2text

Share this post


Link to post
Share on other sites

А нельзя это решить путем удаления или запретом команды? Ну типо чтоб только у нпц брали проф?

Share this post


Link to post
Share on other sites

А нельзя это решить путем удаления или запретом команды? Ну типо чтоб только у нпц брали проф?

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

Для этого нужно пилить шифрацию и и реализовать прием только зашифрованных байпасов.

Share this post


Link to post
Share on other sites

Если запретить команду, не что не помешает подменить байпас в памяти или через клиент.Для этого нужно пилить шифрацию и и реализовать прием только зашифрованных байпасов.

легче убрать награду))

Share this post


Link to post
Share on other sites

Прощай один из самых легких багов ((((

еще скажи что ты его знал))))))))))

Share this post


Link to post
Share on other sites

как такое в 2016 может работать?

если в сборках л2ж

тот же ла2бейс

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

level >= 20 && jobLevel == 0 ) || (level >= 40 && jobLevel == 1 ) || (level >= 76 && jobLevel == 2

это вообще бред, команду либо специально такой сделали либо допустили ошибку

веселый баг на х100

ты просто не представляешь сколько всего работает)))))))))     

Share this post


Link to post
Share on other sites

Да у меня свой проект есть, а фейлить других чтоб потом вернулось в тройне не по мне)

Я хотел показать что сервер euro-pvp это просто раскрученный проект, есть сборки намного круче моей или ихней и на них не так много онлайна бегает.

Но по моим меркам хоть и с маленьким онлайном именно они лидеры по сборкам.

твоя то круче чем у евро,  я за день ковыряний в евро нахожу что то 100%,  а  в твоей с*к   за неделю не мог нини найти) 

Edited by DeadForzz

Share this post


Link to post
Share on other sites

еще скажи что ты его знал))))))))))

 

Нет не знал, доволен? Ты агр? Теперь будешь выслеживать мои сообщения и цеплять их?  :fool:  :fool:  :fool:

Edited by Lightning

Share this post


Link to post
Share on other sites

Нет не знал, доволен? Ты агр? Теперь будешь выслеживать мои сообщения и цеплять их?  :fool:  :fool:  :fool:

причем тут ты чайка,  но на счет цеплять тебя я теперь всегда буду))) тут ты прав,  я просто тему спавна читал и вижу твой глупый как и все твои коменты   и решил ответить 

п.с. так что ты меня зря тронул чайка)))

Edited by DeadForzz

Share this post


Link to post
Share on other sites

твоя то круче чем у евро,  я за день ковыряний в евро нахожу что то 100%,  а  в твоей с*к   за неделю не мог нини найти)

Недавно нашел ещё одну но уже серьезную уязвимость под дюп, работает практически везде на java)

И на том же эвро пвп, на пакетном уровне.

Везде и всегда можно найти баги, не только в серверах л2 но в тех же банковских системах или обычных домофонах.

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

У нас всегда будут присутствовать баги и дыры во всем.

Share this post


Link to post
Share on other sites

причем тут ты чайка,  но на счет цеплять тебя я теперь всегда буду))) тут ты прав,  я просто тему спавна читал и вижу твой глупый как и все твои коменты   и решил ответить 

п.с. так что ты меня зря тронул)))

 

Хороший мальчик, возьми булочку с полки. Когда окончишь школу, покажешь мне аттестат? И может тогда я и вступлю с тобой в дальнейшем в дискуссию, а пока я надеюсь - это будет мое последнее сообщение адресованное тебе. Я не против, что ты полагаешь мои все комментарии тупыми, но, в таком случае считайся с тем, что у тебя сообщений оставленных на форуме куда больше, чем у меня. А сколько реков? верно, на парочку больше чем у меня. А это что означает? Снова верно, что ты дружочек мой меньший, куда больше оставляешь "тупых" и не имеющих смысловой нагрузки сообщений. О чем даже свидетельствует та тема "акуме)". Таким образом, хочу подчеркнуть, что ты послан на три буквы. Удачи.

Share this post


Link to post
Share on other sites

Хороший мальчик, возьми булочку с полки. Когда окончишь школу, покажешь мне аттестат? И может тогда я и вступлю с тобой в дальнейшем в дискуссию, а пока я надеюсь - это будет мое последнее сообщение адресованное тебе. Я не против, что ты полагаешь мои все комментарии тупыми, но, в таком случае считайся с тем, что у тебя сообщений оставленных на форуме куда больше, чем у меня. А сколько реков? верно, на парочку больше чем у меня. А это что означает? Снова верно, что ты дружочек мой меньший, куда больше оставляешь "тупых" и не имеющих смысловой нагрузки сообщений. О чем даже свидетельствует та тема "акуме)". Таким образом, хочу подчеркнуть, что ты послан на три буквы. Удачи.

много букв,  ты просто пишешь бред всякий, ты просто меньше набивай сообщений ненужными ответами в теме),все не флуди чайка

Edited by DeadForzz

Share this post


Link to post
Share on other sites

много букв,  ты просто пишешь бред всякий, ты просто меньше набивай сообщений ненужными ответами в теме),все не флуди чайка

 

Ты посмотри на дату моей регистрации "Регистрация: 25 Feb 2013"  Все еще считаешь, что 730 сообщений в течении 3 лет, это набивание постов? ))) Я же говорю ты гений  :rofl:.

Share this post


Link to post
Share on other sites

Ты посмотри на дату моей регистрации "Регистрация: 25 Feb 2013"  Все еще считаешь, что 730 сообщений в течении 3 лет, это набивание постов? ))) Я же говорю ты гений  :rofl:.

я сужу по последних 

Share this post


Link to post
Share on other sites

Ищем:

for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet())

Выше добавляем:

if ((((level >= 20 && jobLevel == 0) || (level >= 40 && jobLevel == 1) || (level >= 76 && jobLevel == 2)) && Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel))) {

Закрываем } перед return process(player, "",false);

 

В итоге к примеру на 40 уровне сс пишем в чат .classmaster 103 получаем:

198d886b730f.jpg

Можно подробнее, нужен именно такой результат, но не могу разобраться. Шифрование и прочее не нужны. Вот код classmaster.java при котором баг воспроизводится:

package handlers.voice;
import javolution.text.TextBuilder;
import ru.catssoftware.Config;
import ru.catssoftware.gameserver.communitybbs.CommunityBoard;
import ru.catssoftware.gameserver.communitybbs.IBBSHandler;
import ru.catssoftware.gameserver.datatables.CharTemplateTable;
import ru.catssoftware.gameserver.datatables.ItemTable;
import ru.catssoftware.gameserver.handler.IVoicedCommandHandler;
import ru.catssoftware.gameserver.handler.VoicedCommandHandler;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.base.ClassId;
import ru.catssoftware.gameserver.model.olympiad.Olympiad;
import ru.catssoftware.gameserver.network.SystemMessageId;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;
import ru.catssoftware.gameserver.network.serverpackets.SystemMessage;

public class ClassMaster implements IVoicedCommandHandler,IBBSHandler {

private static final String NOT_ALLOWED = "<html><body><br><br><center>Not allowed now</center></body></html>";

public ClassMaster() {
VoicedCommandHandler.getInstance()._classMasterHandler = this;
}
@Override
public String getDescription(String command) {
return "Вызов диалога классмастера";
}

@Override
public String[] getVoicedCommandList() {
return new String[] {"classmaster"};
}

@Override
public boolean useVoicedCommand(String command, L2PcInstance activeChar,
String target) {
NpcHtmlMessage msg = new NpcHtmlMessage(0);
try {
Integer.parseInt(target);
} catch(NumberFormatException e) {
target = null;
}
msg.setHtml(process(activeChar, target,false));
activeChar.sendPacket(msg);
return false;
}

public String process(L2PcInstance player, String args, boolean isBBS) {
if (player._event!=null || Olympiad.getInstance().isRegistered(player) ||
Olympiad.getInstance().isRegisteredInComp(player)) {
return NOT_ALLOWED;
}

if(args==null || args.length()==0) {
TextBuilder sb = new TextBuilder();
sb.append("<html><body><center><br><br><br><font color=\"006600\">Class Master:</font><br>");
ClassId classId = player.getClassId();
int level = player.getLevel();
int jobLevel = classId.level();
int newJobLevel = jobLevel + 1;

if ((((level >= 20 && jobLevel == 0) || (level >= 40 && jobLevel == 1) || (level >= 76 && jobLevel == 2)) && Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel)))
{
if (((level >= 20 && jobLevel == 0) || (level >= 40 && jobLevel == 1) || (level >= 76 && jobLevel == 2)) && Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel))
{
sb.append("Avaliable classes:<br>");

for (ClassId child : ClassId.values())
{
if (child.childOf(classId) && child.level() == newJobLevel)
sb.append("<br><a action=\"bypass " +(isBBS?"_bbschange_class ":"voice_classmaster ")
+ (child.getId()) + "\"> " + CharTemplateTable.getClassNameById(child.getId()) + "</a>");
}

if (Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel) != null && !Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).isEmpty())
{
sb.append("<br><br>Required items:");
sb.append("<table width=270>");
for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet())
{
int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId);
sb.append("<tr><td><font color=\"LEVEL\">" + _count + "</font></td><td>" + ItemTable.getInstance().getTemplate(_itemId).getName() + "</td></tr>");
}
sb.append("</table>");
}
}

sb.append("<br>");
}
else
{
switch (jobLevel)
{
case 0:
if (Config.CLASS_MASTER_SETTINGS.isAllowed(1))
sb.append("Call me after <font color=\"LEVEL\">20</font> level.<br>");
else if (Config.CLASS_MASTER_SETTINGS.isAllowed(2))
sb.append("Call me after 1st class transfer.<br>");
else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3))
sb.append("Call me after 2nd class transfer.<br>");
else
sb.append("You can't change your profession.<br>");
break;
case 1:
if (Config.CLASS_MASTER_SETTINGS.isAllowed(2))
sb.append("Call me after <font color=\"LEVEL\">40</font> level.<br>");
else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3))
sb.append("Call me after 2nd class transfer.<br>");
else
sb.append("You can't change your profession.<br>");
break;
case 2:
if (Config.CLASS_MASTER_SETTINGS.isAllowed(3))
sb.append("Call me after <font color=\"LEVEL\">76</font> level.<br>");
else
sb.append("You can't change your profession.<br>");
break;
case 3:
sb.append("You reach top class.<br>");
break;
}
sb.append("<br>");
}
sb.append("</center></body></html>");
return sb.toString();

} else {
int val = Integer.parseInt(args);

ClassId classId = player.getClassId();
ClassId newClassId = ClassId.values()[val];

int level = player.getLevel();
int jobLevel = classId.level();
int newJobLevel = newClassId.level();

if (!Config.CLASS_MASTER_SETTINGS.isAllowed(newJobLevel))
return NOT_ALLOWED;
if (!newClassId.childOf(classId))
return NOT_ALLOWED;
if (newJobLevel != jobLevel + 1)
return NOT_ALLOWED;
if (level < 20 && newJobLevel > 1)
return NOT_ALLOWED;
if (level < 40 && newJobLevel > 2)
return NOT_ALLOWED;
if (level < 76 && newJobLevel > 3)
return NOT_ALLOWED;

// Weight/Inventory check
if(!Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).isEmpty())
{
if (player.getWeightPenalty() >= 3 || (player.getInventoryLimit() * 0.8 <= player.getInventory().getSize()))
{
player.sendPacket(new SystemMessage(SystemMessageId.INVENTORY_LESS_THAN_80_PERCENT));
return NOT_ALLOWED;
}
}

for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet())
{
int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId);
if (player.getInventory().getInventoryItemCount(_itemId, -1) < _count)
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
return NOT_ALLOWED;
}
}
for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet())
{
int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId);
player.destroyItemByItemId("ClassMaster", _itemId, _count, player, true);
}
for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).keySet())
{
int _count = Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).get(_itemId);
player.addItem("ClassMaster", _itemId, _count, player, true);
}

changeClass(player, val);

player.rewardSkills();

if (newJobLevel == 3)
player.sendPacket(SystemMessageId.THIRD_CLASS_TRANSFER);
else
player.sendPacket(SystemMessageId.CLASS_TRANSFER);

TextBuilder sb = new TextBuilder();
sb.append("<html><body>");
sb.append("<br><br><center>");
sb.append("Поздравляю, Вы получили класс: <font color=\"LEVEL\">" + CharTemplateTable.getClassNameById(player.getClassId().getId()) + "</font>.");
sb.append("</center></body></html>");
player.refreshOverloaded();
player.refreshExpertisePenalty();
player.broadcastFullInfo();
return sb.toString();
}
}

private void changeClass(L2PcInstance player, int val)
{
player.setClassId(val);

if (player.isSubClassActive())
player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());
else
player.setBaseClass(player.getActiveClass());

player.broadcastUserInfo();
player.broadcastClassIcon();
}

@Override
public String[] getCommands() {
return new String [] {"change_class"};
}
@Override
public String handleCommand(L2PcInstance activeChar, String command, String args) {
return process(activeChar,args,true);
}
public static void main(String [] args) {
if(Config.SPAWN_CLASS_MASTER) {
ClassMaster cm = new ClassMaster();
VoicedCommandHandler.getInstance().registerVoicedCommandHandler(cm);
CommunityBoard.getInstance().registerBBSHandler(cm);
}
}
} 

Дело в том, что если искать

for (Integer _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keySet())

то находится 3 таких строки, а 

 

 

Закрываем } перед return process(player, "",false);

return process(player, "",false); - такого нет вообще.

 

Если делаю копипасту из шапки, то получаю неработоспособного классмастера и ClassMaster.java.error.log следующего содержания:

Error on: X:\SERVER\game\data\scripts\handlers\voice\ClassMaster.java.error.log
Line: -1 - Column: -1

compilation failed
Edited by advanced

Share this post


Link to post
Share on other sites

тоже проблема решил скинь в пм фикс или ктонебуть у кого готово 

Share this post


Link to post
Share on other sites

тоже проблема решил скинь в пм фикс или ктонебуть у кого готово 

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

Share this post


Link to post
Share on other sites

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

бьет ошьбку проверял могу вылошить в пм ее поэтому и порасил минемальный фикс

Share this post


Link to post
Share on other sites

глянте

Edited by Firs

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...