Wake of Gods Forum | Форум Во Имя Богов

Full Version: Вопросы по моддингу
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
У кого то скрипт "волшебство 2" работает. Я проверил на нескольких версиях Era + WoG - результат везде один. Описание навыка корректное, а к силе ударной магии по прежнему +5, +10, +15% вместо 10, 20, 30 как заявлено.
Потому что оригинальный скрипт вообще не учитывает "Волшебство II" (v7198=1). Видимо автор скрипта недоглядел.


И да, это не совсем та тема. Лучше такие вопросы задавать в теме по ERM скриптам
(21.05.2016 21:36)igrik Wrote: [ -> ]Потому что оригинальный скрипт вообще не учитывает "Волшебство II"
Спасибо. А как сделать, чтобы в колдовской книге в походном режиме правильный урон показывался, а не только в битве? Сейчас разный урон отображается - в битве с учётом правки в триггере битвы.
И ещё - специализация героя по вторичному навыку "волшебство" никак не учитывается. То есть, независимо от уровня у такого героя бонус к силе заклинания +10, 20, 30% со включённым скриптом. Этот то момент я поправлю своим умом - с описанием в походной книге урона помощи прошу. И что-то мне подсказывает, что с другими специализациями на вторичных навыках тоже могут быть ошибки и логические несостыковки.

PS: Вообще у меня складывается впечатление, что в этой группе не хватает тестировщиков. Люди пишут скрипты зашкаливающей сложности, а проверить нормально по тесткейсам не хотят. Причем чем проще скрипт - тем хуже он протестирован. Поэтому все в Хоту и играют.
(30.05.2016 13:59)Heromant Wrote: [ -> ]с описанием в походной книге урона помощи прошу.
Посмотрю что можно сделать. Только что вы используете WoG или ERA?
(30.05.2016 13:59)Heromant Wrote: [ -> ]И что-то мне подсказывает, что с другими специализациями на вторичных навыках тоже могут быть ошибки и логические несостыковки.
Вполне может быть. Тестировать нужно под разными призмами.
(30.05.2016 13:59)Heromant Wrote: [ -> ]PS: Вообще у меня складывается впечатление, что в этой группе не хватает тестировщиков. Люди пишут скрипты зашкаливающей сложности, а проверить нормально по тесткейсам не хотят. Причем чем проще скрипт - тем хуже он протестирован. Поэтому все в Хоту и играют.
Потому что стандартным воговским скриптам уже чуть больше 10 лет. Че их тестировать то уже, хотя недочеты потихонку ещё всплывают.
А тестировать - дело нудное, долгое и неинтересное. Кто ж так делает 148
Как сказал однажды feanor - "Ну и Кибераллах с ними".
(31.05.2016 11:15)igrik Wrote: [ -> ]Посмотрю что можно сделать. Только что вы используете WoG или ERA?
ERA +WoG, как мод, + LORD, как мод + ещё всякая незначительная мелочёвка - ERM скрипты.
Кто-нибудь знает как сделать для стрелка стрельбу по площади (как магоги и личи)?

В базе по адресу 0041ED00 находится такая вот вещь, пытался заменить номер монстра в проверке на другой, но эффект удара по площади не приобретается
Можно изменить тип существа перед атакой, а потом вернуть как было.
Не там смотришь. Твой адрес видимо для определения ценности выстрела для AI.
А тебе нужно смотреть в функции по адресу 0x0043F620
Например, подменить магога !!UN:C4454190/1/[номер монстра 0...127];
Все воговские скрипты надо не тестировать, а тупо переделывать под эру, под её возможности и её принципы. А там где не хватает - допиливать эру.
Вот например кому вообще это Волшебство Два нужно скриптом, когда тот же функционал достигается бинарником в шестнадцать байт?

..но это еще более никому не надо.
gamecreator, igrik спасибо!
(30.05.2016 13:59)Heromant Wrote: [ -> ]... с описанием в походной книге урона помощи прошу.
В этом плане согласен с feanor'ом.
Но коль нужно, то держи скрипт.
Для работы нужен "erm_hooker.era", который положишь в папку "EraPlugins"
Кстати, в предпросмотре сообщения не работает тег [erm]
Добрый вечер! Вопрос к программистам. Есть функция, которая определяет доход города (скопировано с базы ИДЫ Феанора):

Code:
//----- (005BFA00) --------------------------------------------------------
signed int __thiscall Town_GetGoldIncome(int this, char a2)
{
  signed int result; // eax@1
  int v3; // edi@1
  int v4; // esi@1
  int v5; // edx@9

  v4 = *(_DWORD *)(this + 336);
  v3 = *(_DWORD *)(this + 340);
  result = 500;
  if ( __PAIR__(
         (unsigned int)TownHallMask2 & *(_DWORD *)(this + 340),
         (unsigned int)TownHallMask & *(_DWORD *)(this + 336)) )
    result = 1000;
  if ( CityHallMask2 & v3 | CityHallMask & v4 )
    result = 2000;
  if ( CapitolMask2dword & v3 | CapitolMask & v4 )
    result = 4000;
  if ( a2 )
  {
    if ( ResSiloMask2 & v3 | (unsigned int)ResSiloMask & v4 )
    {
      v5 = *(_BYTE *)(this + 4);
      LOWORD(v5) = LOWORD(TownsResourceSilo[7 * v5 + 6]);
      result += v5;
    }
  }
  if ( __PAIR__((unsigned int)GrailMask2 & *(_DWORD *)(this + 348), (unsigned int)GrailMask & *(_DWORD *)(this + 344)) )
    result += 5000;
  return result;
}
// 66CDF0: using guessed type int TownHallMask;
// 66CDF4: using guessed type int TownHallMask2;
// 66CDF8: using guessed type int CityHallMask;
// 66CDFC: using guessed type int CityHallMask2;
// 66CE00: using guessed type int CapitolMask;
// 66CE04: using guessed type int CapitolMask2dword;
// 66CE6C: using guessed type int GrailMask2;
// 688F04: using guessed type int TownsResourceSilo[63];

Первый вопрос, как правильно понимать данное условие:
Code:
if ( __PAIR__(
         (unsigned int)TownHallMask2 & *(_DWORD *)(this + 340),
         (unsigned int)TownHallMask & *(_DWORD *)(this + 336)) )
, вижу что проверка на построенный таунхолл, но что именно происходит в условии не понимаю.

Второй вопрос, как с помощью длл добавить еще одно условие перед return result: если город Темница, и построен торговец артефактами то доход +100? У меня есть скрипт, который писал на ЕРМ, он просчитывает количество темниц, проверяет постройку здания, а потом прибавляет залото в начале хода, но хочеться научиться писать подобные штуки в Microsoft Visual C++, кроме того есть планы модифицировать под себя еще кое-какие функции, но очень нужен хоть один пример, по аналогии с которым я бы потихоньку начал разбираться дальше
На место return result; вставить хук и изменить этот самый result. В ERM это через erm hooker делается, а в плагине просто вместо возврата записываешь прыжок на твою функцию, которая __declspec(naked), и там уже изменяешь и возвращаешь результат. Сходу код не могу выдать, это надо с адресами копаться (посмотреть где result, куда вписывать хук и т.п.). Тут же важно ещё и понимать язык ассемблера, одного знания С++ недостаточно.
А что за база Феанора? Можно ссылку?
[b]ссылка с df2 форума на базу Феанора

Quote:Сходу код не могу выдать
сходу не надо, если вдруг время будетAb
По той функции дохода из поста выше. Утром набросал ерм скрипт, в котором ставлю хук и изменяю result. Скрипт записывает в result 5000.

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

Reference URL's