Current time: 27.11.2024, 01:01 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Обсуждение ФЕНИКС-МОДа
» вопросы, проблемы, предложения и идеи
Author Message
Berserker Offline
Administrators

Posts: 16657
Post: #1546

Sav, там чистый ЕРМ, который и в 3.58 работать будет без ошибок. Подскажи адрес процедуры, но я не уверен, что первый удар будет безопасен, если нападающий умрёт сразу.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.03.2012 15:08
Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1547

Сделайте пожалуйста неограниченные ресурсы компу, может как опцию дополнительную
17.03.2012 15:22
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1548

ILYA1980, а у вас какая сейчас версия?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.03.2012 15:31
Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1549

Самая последняя
17.03.2012 15:33
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1550

В начало script99.erm:


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.03.2012 16:33
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #1551

Насчёт ответного удара.

Вот (в декомпилированном и чуток разобранном виде) функция, о которой я говорю. Это функция ближней атаки. Несложно заметить, что, если, конечно, не требуется чудес интеллектуальности ИИ, кроме неё править ничего не надо.

Code:
void __thiscall A0_Battle_Stack_Hit_sub_4419D0(struct_BattleStack *this, signed int Enemy_Gex_Around_Stack)
{
  signed int TargetGex_v2; // eax@1
  struct_BattleStack *this_v3; // edi@1
  int Stack_Pos_v4; // ecx@1
  struct_BattleStack *TargetStack_v5; // eax@3
  struct_BattleStack *TargetStack_v6; // esi@3
  signed int CurrStackGex_AroundEnemyStack_v7; // eax@4
  int CurrStackGex_AroundEnemyStack_v8; // ebx@4
  int v9; // ebx@6
  int v10; // edx@6
  int v11; // ST1C_4@6
  char Target_Become_UnabkeToAttack_v12; // al@11
  DWORD WaitingTime_v13; // eax@16
  DWORD WaitingTime_v14; // eax@24
  int v15; // ebx@27
  int TargetStack_Default_Orient_v16; // [sp+8h] [bp-Ch]@4
  int CurrStackGex_AroundEnemyStack_v17; // [sp+Ch] [bp-8h]@4
  int v18; // [sp+1Ch] [bp+8h]@27

  this_v3 = this;
  Stack_Pos_v4 = this->GexNum_dword38;
  this_v3->MappingOrderNum_dword8 = 6;
  TargetGex_v2 = A0_Battle_Stack_Get_AroungGexNum_sub_5242E0(this_v3, Stack_Pos_v4, Enemy_Gex_Around_Stack);
  if ( TargetGex_v2 >= 0 )
  {
    if ( TargetGex_v2 < 187 )
    {
      TargetStack_v5 = A0_Battle_get_StackByGex_sub_4E7230(112 * TargetGex_v2 + A0_BattleMgr_dword_699420 + 452);
      TargetStack_v6 = TargetStack_v5;
      if ( TargetStack_v5 )
      {
        TargetStack_Default_Orient_v16 = TargetStack_v5->Orientation_dword44;
        CurrStackGex_AroundEnemyStack_v7 = sub_4455D0(TargetStack_v5, TargetStack_v5->GexNum_dword38, this_v3);
        CurrStackGex_AroundEnemyStack_v8 = CurrStackGex_AroundEnemyStack_v7;
        CurrStackGex_AroundEnemyStack_v17 = CurrStackGex_AroundEnemyStack_v7;
        if ( CurrStackGex_AroundEnemyStack_v7 < 6 )
        {
          if ( (TargetStack_v6->Orientation_dword44 == 0) != CurrStackGex_AroundEnemyStack_v7 >= 3 )// Поворачиваем изображение целевого стека, если надо
          {
            v9 = *(A0_BattleMgr_dword_699420 + 78520);
            v10 = *(A0_BattleMgr_dword_699420 + 78524);
            *(A0_BattleMgr_dword_699420 + 78520) = TargetStack_v6->Owner_dwordF4;
            v11 = v10;
            *(A0_BattleMgr_dword_699420 + 78524) = TargetStack_v6->StackNum_dwordF8;
            sub_446550(TargetStack_v6, this_v3);
            sub_446440(TargetStack_v6, 1);
            *(A0_BattleMgr_dword_699420 + 78520) = v9;
            CurrStackGex_AroundEnemyStack_v8 = CurrStackGex_AroundEnemyStack_v17;
            *(A0_BattleMgr_dword_699420 + 78524) = v11;
          }
        }
        // *** Атака ***
        if ( TargetStack_v6->Spells_Lengths_adword198[62] )// Слепота
          TargetStack_v6->CurrHit_IsBlinded_byte4C0 = 1;
        if ( TargetStack_v6->Spells_Lengths_adword198[74] )// Паралич
          TargetStack_v6->CurrHit_IsParalysed_byte4C1 = 1;
        Target_Become_UnabkeToAttack_v12 = A0_Battle_Stack_MakeHit_sub_441330(
                                             this_v3,
                                             TargetStack_v6,
                                             Enemy_Gex_Around_Stack);
        this_v3->GexesWay_Length_dword490 = 0;
        // *** Атака - закончили ***
        // *** Ответный удар ***
        if ( TargetStack_v6->Count_dword4C > 0 )
        {
          if ( !((this_v3->Creature_29dword74.Flags_dword10 >> 16) & 1) )// Враг может отвечать на атаку
          {
            if ( !TargetStack_v6->Spells_Lengths_adword198[70] )// Враг не окаменён
            {
              if ( TargetStack_v6->CounterStrikes_Count_dword454 > 0 )// У целевого стека остались ответные удары
              {
                if ( !Target_Become_UnabkeToAttack_v12 )// Целевой стек может атаковать
                {
                  WaitingTime_v13 = A0_to_signed_int_sub_617F94(A0_BattleAnimsFastSetPeriodsMults_flt_63CF7C[*&A0_Setting_BattleFast_dword_69883C] * 150.0);
                  A0_Wait_For_Time_sub_4F8A50(WaitingTime_v13);
                  *(A0_BattleMgr_dword_699420 + 78528) = 1 - *(A0_BattleMgr_dword_699420 + 78528);
                  A0_Battle_Stack_MakeHit_sub_441330(TargetStack_v6, this_v3, CurrStackGex_AroundEnemyStack_v8);
                  *(A0_BattleMgr_dword_699420 + 78528) = 1 - *(A0_BattleMgr_dword_699420 + 78528);
                  --TargetStack_v6->CounterStrikes_Count_dword454;
                }
              }
            }
          }
        }
        TargetStack_v6->CurrHit_IsBlinded_byte4C0 = 0;
        TargetStack_v6->CurrHit_IsParalysed_byte4C1 = 0;
        // *** Ответный удар - закночили ***
        // *** Второй удар ***
        if ( (this_v3->Creature_29dword74.Flags_dword10 >> 15) & 1 )// Текущий стек атакует дважды
        {
          if ( TargetStack_v6->Count_dword4C > 0 )// В целевом стеке есть существа
          {
            if ( !((this_v3->Creature_29dword74.Flags_dword10 >> 2) & 1) )// Текущий стек - не стрелок
            {
              if ( !this_v3->Spells_Lengths_adword198[62] )// Не ослеплён
              {
                if ( !this_v3->Spells_Lengths_adword198[70] )// Не окаменён
                {
                  if ( !this_v3->Spells_Lengths_adword198[74] )// Не парализован
                  {
                    if ( this_v3->Count_dword4C > 0 )// В тееущем стеке остались существа
                    {
                      WaitingTime_v14 = A0_to_signed_int_sub_617F94(A0_BattleAnimsFastSetPeriodsMults_flt_63CF7C[*&A0_Setting_BattleFast_dword_69883C] * 150.0);
                      A0_Wait_For_Time_sub_4F8A50(WaitingTime_v14);
                      A0_Battle_Stack_MakeHit_sub_441330(this_v3, TargetStack_v6, Enemy_Gex_Around_Stack);
                    }
                  }
                }
              }
            }
          }
        }
        // *** Второй удар - закончили ***
        if ( !((TargetStack_v6->Creature_29dword74.Flags_dword10 >> 21) & 1) )// Целевой стек жив
        {
          if ( TargetStack_Default_Orient_v16 != TargetStack_v6->Orientation_dword44 )// Если стек направлен в другую сторону, чем раньше, поворачиваем его изображение обратно
          {
            v15 = *(A0_BattleMgr_dword_699420 + 78520);
            v18 = *(A0_BattleMgr_dword_699420 + 78524);
            *(A0_BattleMgr_dword_699420 + 78520) = TargetStack_v6->Owner_dwordF4;
            *(A0_BattleMgr_dword_699420 + 78524) = TargetStack_v6->StackNum_dwordF8;
            sub_446550(TargetStack_v6, this_v3);
            sub_446440(TargetStack_v6, 1);
            *(A0_BattleMgr_dword_699420 + 78520) = v15;
            *(A0_BattleMgr_dword_699420 + 78524) = v18;
          }
        }
        A0_Battle_Stack_RemoveSpell_sub_444230(this_v3, 59);// Берсерк
        this_v3->Attacked_Enemy_Owner_dword10 = -1;
      }
    }
  }
}
(This post was last modified: 17.03.2012 21:35 by Sav.)
17.03.2012 21:34
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1552

Спасибо.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.03.2012 21:39
Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1553

Quote: В начало script99.erm:

    1. !?TM1;
    2. !!OW:C?y1 Iy1/?y2/?y3;
    3. !!FU|y2=0/y3=1:E;
    4. !!OW:Ry1/0/9999999 Ry1/1/9999999 Ry1/2/9999999 Ry1/3/9999999 Ry1/4/9999999 Ry1/5/9999999 Ry1/6/9999999;

Berserker, спасибо большое, золота у компа стало достаточно. Если не сложно, подскажите еще как увеличить другие ресурсы (кристаллы, серу ит т.д), допустим, до 5000. Просто иногда, на картах, созданных по различным шаблонам, бывает много шахт, например, лазурных драконов и других, а т.к они очень дорогие, комп не всегда их может всех выкупить. (если стоит опция накопления существ).
18.03.2012 11:36
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #1554

ILYA1980, так в в этом коде Berserker уже сразу по всем ресурсам сделал бонус Ab
Quote:!!OW:Ry1/0/9999999 Ry1/1/9999999 Ry1/2/9999999 Ry1/3/9999999 Ry1/4/9999999 Ry1/5/9999999 Ry1/6/9999999;

тут и золото =9999999 и остальные ресурсы тоже =9999999 Rolleyes
18.03.2012 11:45
Visit this user's website Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1555

Когда я загружал игру в режиме ход-сид, у компов только золото
18.03.2012 11:57
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #1556

хм, странно
а попробуйте снизить сумму ресурсов для компа на 9999
Code:
!!OW:Ry1/0/9999 Ry1/1/9999 Ry1/2/9999 Ry1/3/9999999 Ry1/4/9999 Ry1/5/9999 Ry1/6/9999999;
18.03.2012 12:24
Visit this user's website Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1557

Попробовал, тоже самое, видимо гдето прописано количество ресурсов (конечно, я ничего в этом не пониманию, я только играю)
18.03.2012 12:38
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #1558

ILYA1980, да, вы правы, есть в одном месте жёсткая установка ресурсов ИИ в скрипте 99

Предлагаю вам код, который вам указал Berserker, добавить в script99.erm не в начало, а в самом конце файла...
18.03.2012 14:31
Visit this user's website Find all posts by this user Quote this message in a reply
ILYA1980 Offline

Posts: 114
Post: #1559

Попробовал, при запуске выдается ошибка в скрипте, но игра запускается, ну а ресурсы как были, только золото
18.03.2012 15:02
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #1560

а какая ошибка выскочила?
(из WOGERMLOG.TXT скопируйте)
18.03.2012 15:19
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group