Тема: Grind Team
Показать сообщение отдельно

  #6  
Старый 06.08.2015, 22:12
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Веселая система валидации байпасов который гордится гринд и заявляет типо он придумал и реализовал.

Смотрим и веселимся:

Цитата:
Сообщение от Спойлер  

package core.gameserver.enums;

public enum HtmlActionScope

{

NPC_HTML,

NPC_QUEST_HTML,

COMMUNITY_BOARD_HTML,

TUTORIAL_HTML

}
Смотрим лыжу:

http://svn.l2jserver.com/trunk/L2J_S...tionScope.java

Видимо лыжа украла у гринда создав машину времени и раньше залив себе. а FBIagent вообще не достоин быть автором.

Дальше смотрим его мего защиту байпассов:

[QUOTE="Спойлер"]
[COLOR="#363940"]
package core.gameserver.utils;

import java.util.Locale;

import core.gameserver.enums.HtmlActionScope;

import core.gameserver.model.Player;

public class ActionCacheUtil

{

public static final char VAR_PARAM_START_CHAR = '$';

private static final void buildHtmlBypassCache(Player player, HtmlActionScope scope, String html)

{

String htmlLower = html.toLowerCase(Locale.ENGLISH);

int bypassEnd = 0;

int bypassStart = htmlLower.indexOf("=\"bypass ", bypassEnd);

int bypassStartEnd;

while (bypassStart != -1)

{

bypassStartEnd = bypassStart + 9;

bypassEnd = htmlLower.indexOf("\"", bypassStartEnd);

if (bypassEnd == -1)

{

break;

}

int hParamPos = htmlLower.indexOf("-h ", bypassStartEnd);

String bypass;

if ((hParamPos != -1) && (hParamPos _replaces = new ArrayList();

protected boolean have_appends = false;

public NpcHtmlMessage(Player player, int npcId, String filename, int val)

{

List appends = Scripts.dialogAppends.get(npcId);

if(appends != null && appends.size() > 0)

{

have_appends = true;

if(filename != null && filename.equalsIgnoreCase("npcdefault.htm"))

setHtml(""); // контент задается скриптами через DialogAppend_

else

setFile(filename);

String replaces = "";

// Добавить в конец странички текст, определенный в скриптах.

Object[] script_args = new Object[] { new Integer(val) };

for(ScriptClassAndMethod append : appends)

{

Object obj = Scripts.getInstance().callScripts(player, append.className, append.methodName, script_args);

if(obj != null)

replaces += obj;

}

if(!replaces.equals(""))

replace("", "\n" + Strings.bbParse(replaces) + "");

}

else

setFile(filename);

}

public NpcHtmlMessage(Player player, NpcInstance npc, String filename, int val)

{

this(player, npc.getNpcId(), filename, val);

_npcObjId = npc.getObjectId();

//FIXME [G1ta0] не есть истина, исправить

player.setLastNpc(npc);

replace("%npcId%", String.valueOf(npc.getNpcId()));

replace("%npcname%", npc.getName());

replace("%festivalMins%", SevenSignsFestival.getInstance().getTimeToNextFest ivalStr());

}

public NpcHtmlMessage(Player player, NpcInstance npc)

{

if(npc == null)

{

_npcObjId = 5;

player.setLastNpc(null);

}

else

{

_npcObjId = npc.getObjectId();

player.setLastNpc(npc);

}

}

public NpcHtmlMessage(int npcObjId)

{

_npcObjId = npcObjId;

}

public final NpcHtmlMessage setHtml(String text)

{

if(!text.contains(""))

text = "" + text + ""; //Message:

_html = text;

return this;

}

public final NpcHtmlMessage setFile(String file)

{

_file = file;

if(_file.startsWith("data/html/"))

{

_log.info("NpcHtmlMessage: need fix : " + file, new Exception());

_file = _file.replace("data/html/", "");

}

return this;

}

public NpcHtmlMessage replace(String pattern, String value)

{

if(pattern == null || value == null)

return this;

_replaces.add(pattern);

_replaces.add(value);

return this;

}

// npcstring-?.dat

public NpcHtmlMessage replaceNpcString(String pattern, NpcString npcString, Object... arg)

{

if(pattern == null)

return this;

if(npcString.getSize() != arg.length)

throw new IllegalArgumentException("Not valid size of parameters: " + npcString);

_replaces.add(pattern);

_replaces.add(HtmlUtils.htmlNpcString(npcString, arg));

return this;

}

@Override

protected void writeImpl()

{

Player player = getClient().getActiveChar();

if(player == null)

return;

if(_file != null) //TODO может быть не очень хорошо здесь это делать...

{

if(player.isGM())

Functions.sendDebugMessage(player, "HTML: " + _file);

String content = HtmCache.getInstance().getNotNull(_file, player);

String content2 = HtmCache.getInstance().getNullable(_file, player);

if(content2 == null)

setHtml(have_appends && _file.endsWith(".htm") ? "" : content);

else

setHtml(content);

}

for(int i = 0; i
 
Ответить с цитированием