Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› EvePilot
Посл.ответ Сообщение

Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 июня 2013 19:15 · Поправил: xolseg
· Личное сообщение · #1

И так, не так давно начал играть в еву, нашел бота и попытался его сломать, начал это делать на другом форуме, но пришел сюда, надеясь найти помощи.
И так, в триал версии EVEMiner есть "защита" с таймером в 120 минут, после идет выключение программы. Данное ограничение я убрал, знаний хватило.
EVEPilotFixtimeminer

Дальше, я взялся убирать ограничение EVETrader и тут столкнулся с проблемой.
Суть такова, разрешено покупать/продавать в триал версии только книжки "скилов"/навыков.
Если не лицензии нету, выскакивает окошко:

проверки находятся по "адресам":
Pe.fje(f5e) : Int32
Pe.fPe(f5e) : Int32
Pe.N3e(ffe) : Int32


И далее идет репост моего поста с другого форума, подскажите пожалуйста направление куда копать или объясните что я не так делаю. Я не прошу всё делать за меня, прошу только подсказать.

Code:
  1. Label_1CD3:
  2.                 if (ffe_0.General_WriteDebugLog && ffe_0.General_DetailedDebugLog)
  3.                 {
  4.                     UHe.ee("Trader", "Trading of " + current.string_0 + " disabled in trial mode. Code 3");
  5.                 }
  6.                 Class3.he(0x10, "Trader Trial Limitation", "Trial verion of a trader may be used to trade skillbooks only. Purchase full version license to trade: {0}", 0x1e, new object[] { current.string_0 });
  7.                 return 0x3;


Label_1CD3: вызывается в Label_1C4C
Code:
  1. Label_1C4C:
  2.                     if (ge != 0x96)
  3.                     {
  4.                         goto Label_1CD3;
  5.                     }

Идём выше по цепочке:
Code:
  1. Label_1C1C:
  2.                    if (pe.ge == 0x0)
  3.                     {
  4.                         goto Label_1C4C;
  5.                     }
  6.                     ge = pe.ge;
Code:
  1.  
  2. Label_1C34:
  3.                    pe = Class0.Oe.Je(ge);
  4.                     if (pe != null)
  5.                     {
  6.                         goto Label_1C1C;
  7.                     }


И вот тут начинаются выкрутасы:
Code:
  1. if (flag)
  2.         {
  3.             using (List<Nne>.Enumerator enumerator = ffe_0.Trader_CurrentOrders.GetEnumerator())
  4.             {
  5.                 Nne current;
  6.                 while (enumerator.MoveNext())   // - функция до выхода значения false (т.е. получается если bool flag = false оно должно ниже стать таковым, но ни как не true)
  7.                 {
  8.                     nIe.VPe pe; // - это для чего тут?
  9.                     current = enumerator.Current; // - это более менее понятно
  10.                     nIe.V5e ve = Class0.Re.Je((int) current.se); // - это не понятно (nIe.V5e ve это равно Class0.Re.Je((int) current.se) этому?
  11.                     if (ve == null) // - если ve = null, то идет вызов 1C65
  12.                     {
  13.                         goto Label_1C65; // - вызов проверки на валидность итема
  14.                     }
  15.                     int ge = ve.Int32_1; // - а тут что? int ge равен ve.Int32_1 - этому числу? вынесу в примечание.
  16.                     goto Label_1C34; // - вызов проверок для вывода окна с ошибкой.


И так, вот тут я не понимаю не черта.
Что это делает и чем занимается? Я понимаю что условия если, что то, то то-то.
Что за значение, откуда берутся и почему сравниваются.
Т.е. мне нужно, как то вернуть значение false. Что бы окно не показывалось с ошибкой, каким образом мне это сделать?
Выставить nIe.V5e ve = false или Class0.Re.Je((int) current.se) = false? Если да, то выглядит это проще чем кажется. А если нет, то придется подумать, но что то с логикой у меня плоховато.


Примечание, goto Label_1C65 это:
Code:
  1. Label_1C65:
  2.                 if (ffe_0.General_WriteDebugLog && ffe_0.General_DetailedDebugLog)
  3.                 {
  4.                     UHe.ee("Trader", string.Concat(new object[] { "Item with ID ", (int) current.se, ", Name ", current.string_0, " not found in the database. Code 0" }));
  5.                 }
  6.                 return 0x0;



Примечание, public int Int32_1 это:
Code:
  1. public int Int32_1
  2. {
  3.     get
  4.     {
  5.         int num;
  6.         try
  7.         {
  8.             num = (int) base[this.ie.de];
  9.         }
  10.         catch (InvalidCastException exception)
  11.         {
  12.             throw new StrongTypingException("The value for column 'marketGroupID' in table 'invtypes' is DBNull.", exception);
  13.         }
  14.         return num;
  15.     }
  16.     set
  17.     {
  18.         base[this.ie.de] = value;
  19.     }
  20. }




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2013 14:52
· Личное сообщение · #2

Интересное начинание. Я в свое время пытался, но у меня ничего не получалось в связи с полным отсутствием опыта. Не могли бы вы поделиться информацией как удалось убрать таймер? А то файл который вы выложили уже потерли.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 10 июля 2013 15:41 · Поправил: Veliant
· Личное сообщение · #3

Копай в сторону Class0.Oe.Je
Class0.Re.Je по смыслу просто проверяет есть ли вообще вещи с таким id

Либо патч вот тут if (ge != 0x96) чтоб всегда проходило условие (id книжки так понимаю)



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 сентября 2013 22:12
· Личное сообщение · #4

xolseg, Пожалуйста, скажи как ты убрал ограничение на 120 минут.


 eXeL@B —› Вопросы новичков —› EvePilot
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати