Jump to content

Saltfire

Resident
  • Content Count

    505
  • Joined

  • Last visited

  • Days Won

    18
  • Feedback

    N/A

Saltfire last won the day on May 18

Saltfire had the most liked content!

Community Reputation

81

2 Followers

About Saltfire

  • Rank
    Построил домик

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Почему бы вам AC тогда не взять? Правда зачем оно нужно? Сейчас никто не будет играть в игру, где нужно терять миллионы часов, когда можно заплатить и сделать чтобы сама играла. Вся суть в сервере, очень плохо синхронизирован с клиентом. То есть, если раньше были только макросы, чтобы в ручную выбирать цель, то теперь оно само выбирает. Стало легче жить правда? Теперь ситуация с кликерами, ты сидишь, теряешь море часов, чтобы в ручную выбирать скролл, вставлять пуху, гемы, камни, водить мышь, чтобы нажать на кнопку и постоянно совершать действия, которые наскучат в такой огромной игре и ее атмосфере. А тут само все выбирает, кликает, водит, пошел кофе налил, дела поделал, пусть электричество жгет, играет днями и ночами, а ты будешь только забирать бонусы и открывать всякую хрень и проходить мисии, как круто и легко стало жить, правда? И смотреть за игровым процессом, словно в мультфильме. Главное это же развитие, какую линию выбрал ту и развиваешь. И пусть он там бегает колотит днями и ночами этих мобов, на автомате, какая разница. Сейчас уже другая л2. Всем хочется равенства и автоматики, тогда у тебя будут все играть (а не ФантомБоты). И еще меня поражают все эти исходники сборок это мусорные классы для базы в них еще раз запрос к базе и наполнения классов с перечислениеем тонны информации... За которой еще и следить нужно. Когда можно сделать так: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; public class TableClass<T> { private Map<String, List<T>> data = new HashMap<>(); private Map<String, Function<TableClass<T>, T>> methods = new HashMap<>(); public TableClass(List<Map<String, T>> dataArray, List<String> excludes) { for (Map<String, T> entry : dataArray) { entry.keySet().stream() .filter(key -> !excludes.contains(key)) .forEach(key -> { data.computeIfAbsent(key, k -> new ArrayList<>()).add(entry.get(key)); }); } } public void addMethod(String name, Function<TableClass<T>, T> func) { methods.put(name, func); } public T invokeMethod(String name) { return methods.get(name).apply(this); } public T getProperty(String key) { List<T> values = data.get(key); if (values == null || values.isEmpty()) { return null; } return values.get(0); } } и любую таблицу превращать в класс с методами, если потребуются. При этом мы перечисляем только те поля, которые не хотим показывать и те функции которые только нужно, остальное просто через свойства класса.
  2. Не пойму, ты сам с собой поговорил получается? Я очень сильно сомневаюсь, что ты осилишь engine.dll от данного клиента. Ты просто не представляешь, какая учесть ждет тебя. Покажи, хоть один мне клиент interlude, где есть хоть что-то свое из мира фантастики, да тот-же радар кастомный, этого хватит тебе потеряться на долго. И темы, кто сравнивает от IT-HF, просто не сопоставимы, interlude клиент совершенно другой и там нет такого, что есть в HF, где можно хоть два радара сделать и хоть что затолкать, так сложилось, что HF был сделан не удачным образом и вскрытие и модернизация этого клиента безгранична...
  3. Не уверен, что у тебя хватит денег на реверсера Иначе бы уже нанял и не задавал бы глупых вопросов.
  4. Что подразумевается под простым способом? (вы сначала попробуйте заинжектиться в процесс, с данным продуктом, без жопаболей и заглушек, у вас этого не удастся сделать, ко всему, если конечно не лохо обновлятор, который никак не передает о том, что к серверу уже начали подключаться, после кнопки старт в Обновляторе, а если этого нет, тогда вы сможете запустить клиент в обход Обновлений и опустить библиотеки до нужного уровня и заглушить или вычистить, оставив только шифрацию и передачу пакетов и тайминги - но я сомневаюсь. что у вас хватит знаний и сил это сделать).
  5. Естественный процесс, клиент использует "Anticheat" встроенный продукт для отслеживания как-раз таких действий, которые модернизируют файлы клиента, а также пытаются дергать клиентские файлы в обход, главного процесса игры, который запущен, он работает именно так (надеюсь). Я не пробовал ставить заглушки, но в конкретном проекте, это сделать будет довольно сложно (или почти не возможно, так-как сразу изменится размер, дата и вся целостность файла), скорее всего проще будет искать дырку, на уровне адреса памяти, в которую можно будет внедриться для использования API клиента, все перекрыть не возможно и некоторые блокировки, все-же обойти можно. Но никак не модернизацией текущих файлов клиента.
  6. На сколько помню, в interlude работает нативный метод IsKeyDown который из NWindow->UIScript.uc. И есть класс Engine->Interactions.uc и конструкция событий enum EInputKey. На самом деле, вы очень просто сможете использовать такое условие: if(IsKeyDown(IK_1) && IsKeyDown(IK_Q) || IsKeyDown(IK_2) && IsKeyDown(IK_W)) { //... } То есть по факту, можно отследить весь, вот этот класс: enum EInputKey { /*00*/ IK_None ,IK_LeftMouse ,IK_RightMouse ,IK_Cancel , /*04*/ IK_MiddleMouse ,IK_Unknown05 ,IK_Unknown06 ,IK_Unknown07 , /*08*/ IK_Backspace ,IK_Tab ,IK_Unknown0A ,IK_Unknown0B , /*0C*/ IK_Unknown0C ,IK_Enter ,IK_Unknown0E ,IK_Unknown0F , /*10*/ IK_Shift ,IK_Ctrl ,IK_Alt ,IK_Pause , /*14*/ IK_CapsLock ,IK_Unknown15 ,IK_Unknown16 ,IK_Unknown17 , /*18*/ IK_Unknown18 ,IK_Unknown19 ,IK_Unknown1A ,IK_Escape , /*1C*/ IK_Unknown1C ,IK_Unknown1D ,IK_Unknown1E ,IK_Unknown1F , /*20*/ IK_Space ,IK_PageUp ,IK_PageDown ,IK_End , /*24*/ IK_Home ,IK_Left ,IK_Up ,IK_Right , /*28*/ IK_Down ,IK_Select ,IK_Print ,IK_Execute , /*2C*/ IK_PrintScrn ,IK_Insert ,IK_Delete ,IK_Help , /*30*/ IK_0 ,IK_1 ,IK_2 ,IK_3 , /*34*/ IK_4 ,IK_5 ,IK_6 ,IK_7 , /*38*/ IK_8 ,IK_9 ,IK_Unknown3A ,IK_Unknown3B , /*3C*/ IK_Unknown3C ,IK_Unknown3D ,IK_Unknown3E ,IK_Unknown3F , /*40*/ IK_Unknown40 ,IK_A ,IK_B ,IK_C , /*44*/ IK_D ,IK_E ,IK_F ,IK_G , /*48*/ IK_H ,IK_I ,IK_J ,IK_K , /*4C*/ IK_L ,IK_M ,IK_N ,IK_O , /*50*/ IK_P ,IK_Q ,IK_R ,IK_S , /*54*/ IK_T ,IK_U ,IK_V ,IK_W , /*58*/ IK_X ,IK_Y ,IK_Z ,IK_Unknown5B , /*5C*/ IK_Unknown5C ,IK_Unknown5D ,IK_Unknown5E ,IK_Unknown5F , /*60*/ IK_NumPad0 ,IK_NumPad1 ,IK_NumPad2 ,IK_NumPad3 , /*64*/ IK_NumPad4 ,IK_NumPad5 ,IK_NumPad6 ,IK_NumPad7 , /*68*/ IK_NumPad8 ,IK_NumPad9 ,IK_GreyStar ,IK_GreyPlus , /*6C*/ IK_Separator ,IK_GreyMinus ,IK_NumPadPeriod,IK_GreySlash , /*70*/ IK_F1 ,IK_F2 ,IK_F3 ,IK_F4 , /*74*/ IK_F5 ,IK_F6 ,IK_F7 ,IK_F8 , /*78*/ IK_F9 ,IK_F10 ,IK_F11 ,IK_F12 , /*7C*/ IK_F13 ,IK_F14 ,IK_F15 ,IK_F16 , /*80*/ IK_F17 ,IK_F18 ,IK_F19 ,IK_F20 , /*84*/ IK_F21 ,IK_F22 ,IK_F23 ,IK_F24 , /*88*/ IK_Unknown88 ,IK_Unknown89 ,IK_Unknown8A ,IK_Unknown8B , /*8C*/ IK_Unknown8C ,IK_Unknown8D ,IK_Unknown8E ,IK_Unknown8F , /*90*/ IK_NumLock ,IK_ScrollLock ,IK_Unknown92 ,IK_Unknown93 , /*94*/ IK_Unknown94 ,IK_Unknown95 ,IK_Unknown96 ,IK_Unknown97 , /*98*/ IK_Unknown98 ,IK_Unknown99 ,IK_Unknown9A ,IK_Unknown9B , /*9C*/ IK_Unknown9C ,IK_Unknown9D ,IK_Unknown9E ,IK_Unknown9F , /*A0*/ IK_LShift ,IK_RShift ,IK_LControl ,IK_RControl , /*A4*/ IK_UnknownA4 ,IK_UnknownA5 ,IK_UnknownA6 ,IK_UnknownA7 , /*A8*/ IK_UnknownA8 ,IK_UnknownA9 ,IK_UnknownAA ,IK_UnknownAB , /*AC*/ IK_UnknownAC ,IK_UnknownAD ,IK_UnknownAE ,IK_UnknownAF , /*B0*/ IK_UnknownB0 ,IK_UnknownB1 ,IK_UnknownB2 ,IK_UnknownB3 , /*B4*/ IK_UnknownB4 ,IK_UnknownB5 ,IK_UnknownB6 ,IK_UnknownB7 , /*B8*/ IK_UnknownB8 ,IK_Unicode ,IK_Semicolon ,IK_Equals , /*BC*/ IK_Comma ,IK_Minus ,IK_Period ,IK_Slash , /*C0*/ IK_Tilde ,IK_UnknownC1 ,IK_UnknownC2 ,IK_UnknownC3 , /*C4*/ IK_UnknownC4 ,IK_UnknownC5 ,IK_UnknownC6 ,IK_UnknownC7 , /*C8*/ IK_Joy1 ,IK_Joy2 ,IK_Joy3 ,IK_Joy4 , /*CC*/ IK_Joy5 ,IK_Joy6 ,IK_Joy7 ,IK_Joy8 , /*D0*/ IK_Joy9 ,IK_Joy10 ,IK_Joy11 ,IK_Joy12 , /*D4*/ IK_Joy13 ,IK_Joy14 ,IK_Joy15 ,IK_Joy16 , /*D8*/ IK_UnknownD8 ,IK_UnknownD9 ,IK_UnknownDA ,IK_LeftBracket , /*DC*/ IK_Backslash ,IK_RightBracket,IK_SingleQuote ,IK_UnknownDF , /*E0*/ IK_UnknownE0 ,IK_UnknownE1 ,IK_UnknownE2 ,IK_UnknownE3 , /*E4*/ IK_MouseX ,IK_MouseY ,IK_MouseZ ,IK_MouseW , /*E8*/ IK_JoyU ,IK_JoyV ,IK_JoySlider1 ,IK_JoySlider2 , /*EC*/ IK_MouseWheelUp ,IK_MouseWheelDown,IK_Unknown10E,UK_Unknown10F , /*F0*/ IK_JoyX ,IK_JoyY ,IK_JoyZ ,IK_JoyR , /*F4*/ IK_UnknownF4 ,IK_UnknownF5 ,IK_Attn ,IK_CrSel , /*F8*/ IK_ExSel ,IK_ErEof ,IK_Play ,IK_Zoom , /*FC*/ IK_NoName ,IK_PA1 ,IK_OEMClear }; А также, есть еще interface.xdat, где есть уже привязанные комбинации клавиш и другие события, так называемые shortcuts для интерфейса и оконной системы в целом, разных вызовов, по разным стадиям и сценам. Панель Shortcuts находится в shortcuts->GamingStateShortcut->UseShortcutItem-*, где key - это кнопка для использования. В общем и целом, смотря что вообще требуется, многие вещи, находятся в nwindow.dll.
  7. Для какой цели? Что будет происходить? Где, хоть какая-то информация? Ничего не понятно.
  8. Ппц, Вот бы раньше, так. Года так 2 назад =)
  9. Saltfire

    L2text

    На самом деле, за загрузку, отвечает метод LoadHtml. Как сделано например в interface.u -> UserPetitionWnd.uc: class'UIAPI_HTMLCTRL'.static.LoadHtml( "UserPetitionWnd.HelpHtmlCtrl", "..\\L2text\\" $ PetitionCategoryLink[ a_SelectedIndex - 1 ] ); Оно прописано везде статично, путь нигде жестоко не привязывается, многие вещи в клиенте написаны статично в том числе и пути к файлам, не всем конечно но к многим, например на оконную систему и т.д. Все это находится в nwindow.dll
  10. Данное меню зашито внутри nwindow.dll, я давно задавал уже и отвечал на этот вопрос. Чтобы скрыть это меню, требуется сделать HideWindow("LoginFunctionWnd"); А по верх сделать новое, только так вы сможете его убрать. В исходниках interface/Classes/ создаем новый файл к примеру LoginMenuWnd.uc: class LoginMenuWnd extends UICommonAPI; function onLoad() { //... } function OnShow () { HideWindow("LoginFunctionWnd"); } function OnClickButton(string strID) { switch(strID) { case "btnSettingsGame" : ShowOrHideOptionWnd(); break; } } function ShowOrHideOptionWnd() { if (class'UIAPI_WINDOW'.static.IsShowWindow("OptionWnd")) { PlayConsoleSound(IFST_WINDOW_CLOSE); class'UIAPI_WINDOW'.static.HideWindow("OptionWnd"); } else { PlayConsoleSound(IFST_WINDOW_OPEN); class'UIAPI_WINDOW'.static.ShowWindow("OptionWnd"); class'UIAPI_WINDOW'.static.SetFocus("OptionWnd"); } } defaultproperties{} Далее в interface.xdat создаем LoginMenuWnd и привязываем ему скрипт LoginMenuWnd. А так-же где state прописываем LoginState. И в workingConfiguration пишем Game. Далее настраиваете окно на свое усмотрение, добавляете элементы кнопок, позицию и по ид, проверяете в OnСlickButton методе, нажатие кнопок, а дальше, что нужно уже пишите. Для скрытия окошка ввода логина и пароля HideWindow("AuthWnd"); Если начнете делать свою систему входа и авторизации, что я очень сильно сомневаюсь
  11. Погоди, ты тогда сам ничего не сможешь сделать потом, опять потом надо будет компилить, всегда надо будет компилить =))
  12. О том, что все эти ваши сборки кусок говна и так все знают. Тут доказательства не нужны, я приводил уже множество фактов. Ко всему прошло столько лет, а ничего толком и не сделано. Тадам! Попытка 100501! Ты хочешь 5 лет отдать исправлению говна, чтобы потом все равно забросить? Л2 умерла, а они сервера пишут! О каких-то открытиях, крутых сборках говорят! В нее уже играть никто не будет. Все это ради показухи. А в дальнейшем сруб бала на дурочках. Жаль их, да и вас тоже жаль!
  13. Ты что тут шерстью своей раскидываешься, крот интернетный? Пруфы в студию, где я открывал сервер и звал народ и т.д? У тебя 2 дня.
  14. Причем тут геодата и шанс попадания по мобам? И не исключено также кривые статы или высота мобов. А может еще чего намудрили. Что-то кажись, где-то я, уже это видел тут =)
  15. Очередной тупица, который открывает порт. который уже открыт. Боже, откуда вы такие беретесь только. Я еще раз для особо одаренных повторяю, порт открывается сам, его не нужно нигде открывать. Не нужно!!! Если вам это не поможет - значит, вам ничего не поможет. И не выпустите вы в интернет свой тру сервер под NAT'ом, да хоть у срись там и за открывайся своих портов, ничего у тебя не получится. Пока глаза не откроешь и не начнешь юзать поиск по форуму.
×
×
  • Create New...