Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ERM: Вопросы и ответы
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52
totkotoriy
Существует ли команда ERM на обновление экрана встречи героев? Хочу сделать пару кнопок этом экране, но плагин MoP'a в тригере 66666 не обновляет экран после завершения. Может есть вариант как-то без этого плагина кнопки сделать?

Где можно взять последнюю версию ERM-help от Драголича в другом формате?
totkotoriy
Еще вопрос, можно ли сделать чтоб другое существо стреляло как бехолдер или маг? Т.к. в таблице снарядо их нет...
tolich
Это лазер, а не снаряд. Попробуй поискать слово лазер по пользователю feanor.
feanor
Флаг 2048
totkotoriy
Мож кто знает где достать таблицу звуков существ?
И как использовать звуки на действие существ циклически и с разной скоростью? Т.к. я думаю, что звуки некоторых существ одини и те же, и забиты в ехе...
feanor
Цитата
Мож кто знает где достать таблицу звуков существ?

Поле в структуре существа
totkotoriy
Цитата(feanor @ 18 Feb 2012, 00:50) *
Цитата
Мож кто знает где достать таблицу звуков существ?

Поле в структуре существа

А можно поподробнее? Что за структура существа? И как можно назначить существу другой звук на опр. действие?
feanor
Код
typedef struct
{
    int town;
    int level;
    char* soundname; // 4 буквы, с которых начинаются звуки монстра
    char* defname;
    int flags;
    char* name;
    char* pluralname;
    char* features; // (описание способностей)
    int cost_wood;
    int cost_mercury;
    int cost_ore;
    int cost_sulfur;
    int cost_crystal;
    int cost_gems;
    int cost_gold;
    int fight_value;
    int ai_value;
    int growth;
    int horde_growth;
    int hp;
    int speed;
    int attack;
    int defence;
    int damage_low;
    int damage_high;
    int shots;
    int spells;
    int adv_low;  // ?
    int adv_high; // ?
}MONSTER_PROP;


soundname указывает на четырехбуквенное вида DEVL, CYCL, AZUR и т.п.
Реальный звук берется как soundname+постфикс, ответственный за конкретное действие (ATTK, DFND, KILL, MOVE, WNCE, EXT1, EXT2)
Sav
А почему вопросы напротив adv_...? Это же просто минимум и максимум количеств существ в кучках бродячих монстров на старте карты по-умолчанию.
feanor
А это кажется, из сорцев Дьякона. Я про это знаю, но комментировать не стал.
totkotoriy
А всё это прописано в ехе или берется с другого места?
И всё-таки как можно присвоить действию существа звук? Только заменой названия звука в памяти?
feanor
Цитата
А всё это прописано в ехе или берется с другого места?

В exe.
Цитата
И всё-таки как можно присвоить действию существа звук?

Какому действию какого существа?
Заменить звук в Heroes3.snd не проще?
Etoprostoya
Код
MONSTER_PROP *newmon = &(адрес_монстра);
char newmonSndName[] = "SND1";
newmon->soundname = newmonSndName;

Вроде так? Должны существовать файлы SND1ATTK.wav и так далее.
totkotoriy
Цитата(feanor @ 18 Feb 2012, 18:21) *
Цитата
А всё это прописано в ехе или берется с другого места?

В exe.
Цитата
И всё-таки как можно присвоить действию существа звук?

Какому действию какого существа?
Заменить звук в Heroes3.snd не проще?

Любому действию любого существа.
Да, было бы проще, но как определить какой звук какому существу принадлежит. Например звуки для ВОГ существ скорее всего взяты из СОД, а вот какой где хз... и тем более не знаю как их заменить в ехе.
feanor
Цитата
Вроде так?


Код
MONSTER_PROP* GetMonsterRecord(int number)
{
    return (MONSTER_PROP*)((*(int*)0x47ADD1)+number*sizeof(MONSTER_PROP));
}
totkotoriy
Вот и ответ как можно это реализовать через ERM biggrin.gif
Sav
На всякий случай про BM:G:

Флаги существа - это не -71, а -69.
"Правильное" количество заклинаний для любого использования - это по -1. По 173 находится кусок вложенной структуры заголовка массива номеров наложенных заклинаний, которое используется только при операциях с этой структурой.
-40 - это номер стека (0-21)
-100 - это не просто видимость, а вообще параметр, каким-то образом управляющий отображением существа и может быть не только 4 или 8.
Всё остальное верно.
MasterOfPuppets
О хоспади...

!?CM;
!!FU1234:Pномер_существа/номер_Z_переменной_для_получения_озвучки;
!!IF:M1/номер_Z_переменной_для_получения_озвучки;

!?FU1234;
!!UN:C6768560/4/?y1;
!!VRx1:*116+y1+8;
!!UN:Cx1/4/?y3 Cy3/4/?y2;
!!VRx2:*512+9597416;
!!UN:Cx2/4/y2;
!!VRx2:+4;
!!UN:Cx2/1/0;

P.S.: Хм, возможно, что озвучку специально сделали состоящей из двух частей по 4 буквы - оперировать dword-ами легче, чем строками.
Berserker
Цитата
P.S.: Хм, возможно, что озвучку специально сделали состоящей из двух частей по 4 буквы - оперировать dword-ами легче, чем строками.

smile.gif МоР, это же С++ )
feanor
Если бы с расчетом на это - то в структуре был бы не char*, a char[4] biggrin.gif
MasterOfPuppets
У меня в Опере на этом форуме вообще форматирование сообщений не работает - панель исчезла нах. (

> МоР, это же С++ )
Ему же надо хотя бы просто посмотреть озвучку монстров. Какая разница, на каком языке это делать?
В принципе, можно для этой цели взять мой редактор существ для мода. Содовским я озвучку не менял, а воговским - только заменённым.

> Если бы с расчетом на это - то в структуре был бы не char*, a char[4]
Поэтому - "возможно".
feanor
Цитата
У меня в Опере на этом форуме вообще форматирование сообщений не работает - панель исчезла нах. (

11.60? Она ппц бажная.
MasterOfPuppets
Ну хоть спасибо можно поставить. smile.gif А то даже кнопка "Правка" работает как scroll-up и выбрасывает меня в начало страницы.
Но странно то, что глючит только на df2.
totkotoriy
Как можно узнать параметры банков существ (охрана, сокровище)? Не могу в справке найти.
feanor
!!CB
totkotoriy
А как можно узнать мораль и удачу героя с одетыми артами? Как я понимаю ресиверы HE?:R0/? R1/? выдают значения без учета артефактов.
Sav
Проверять всё вручную. Через SN:E можно вызвать геройские функции, которые сами это делают. Вроде я что-то такое находил, скорее всего через некоторое время смогу дать адреса функций и информацию о них.

Хотя, эти ресейверы вполне могут сами вызывать эти функции, тут я не знаю.
Sav
Не знаю, нужно ли это и сможешь ли ты разобраться, но вот:


Код
int __thiscall A0_Hero_get_Morale_Level_sub_4E3C20(int this, int Unused, char a3, char a4)
{
  int this_v4; // edi@1
  int result; // eax@2
  char Hero_Skill_Level_v6; // al@3
  int Morale_v7; // ebx@3
  int Hero_ArtifactsSlots_offset_v8; // eax@7
  signed int Slot_v9; // ecx@7
  int Combo_art_Num_v10; // eax@10
  signed int Slot_v11; // eax@13
  int Hero_ArtifactsSlots_offset_v12; // ecx@13
  int v13; // eax@16
  signed int Slot_v14; // eax@19
  int Hero_ArtifactsSlots_offset_v15; // ecx@19
  int v16; // eax@22
  signed int Slot_v17; // eax@25
  int Hero_ArtifactsSlots_offset_v18; // ecx@25
  int v19; // eax@28
  signed int Slot_v20; // eax@31
  int Hero_ArtifactsSlots_offset_v21; // ecx@31
  int v22; // eax@34
  char v23; // al@37
  int v24; // ebx@38
  int v25; // edi@38
  int v26; // esi@38
  int v27; // eax@38
  int v28; // eax@39
  signed int v29; // edx@40
  int Morale_v30; // ebx@48
  int v31; // eax@48
  int *Morale_addr_v32; // eax@53
  float Hero_Level_v33; // [sp+4h] [bp-8h]@6
  int this_v34; // [sp+8h] [bp-4h]@1
  signed int Morale_v35; // [sp+18h] [bp+Ch]@3
  float Morale_v36; // [sp+18h] [bp+Ch]@6
  signed int Worst_morale_v37; // [sp+18h] [bp+Ch]@51

  this_v4 = this;
  this_v34 = this;
  if ( a3 )
  {
    result = 0;                                 // Возврат нуля
  }
  else
  {
    Hero_Skill_Level_v6 = *(_BYTE *)(this + 207);
    Morale_v7 = Morale_Skill_Bonuses_dword_63E9A8[Hero_Skill_Level_v6];
    Morale_v35 = Morale_Skill_Bonuses_dword_63E9A8[Hero_Skill_Level_v6];
    if ( Hero_Skill_Level_v6 > 0 )
    {
      if ( !*((_DWORD *)HeroSpecTable_off_679C80 + 10 * *(_DWORD *)(this + 26)) )
      {
        if ( *((_DWORD *)HeroSpecTable_off_679C80 + 10 * *(_DWORD *)(this + 26) + 1) == 6 )
        {
          Hero_Level_v33 = (double)*(_WORD *)(this + 85);
          Morale_v36 = (double)Morale_v35;
          Morale_v35 = (signed __int64)((Hero_Level_v33 * 0.05000000074505806 + 1.0) * Morale_v36);// Бонус специализации
          Morale_v7 = Morale_v35;
        }
      }
    }
    Slot_v9 = 0;
    Hero_ArtifactsSlots_offset_v8 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)Hero_ArtifactsSlots_offset_v8 == 108 )
        goto LABEL_12;
      ++Slot_v9;
      Hero_ArtifactsSlots_offset_v8 += 8;
    }
    while ( Slot_v9 < 19 );
    Combo_art_Num_v10 = (*Main_Artifacts_Table_off_660B68[0])[870];// 108*8 + 6
    if ( Combo_art_Num_v10 != -1
      && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * Combo_art_Num_v10]) )
    {
LABEL_12:
      Morale_v7 += 3;
      Morale_v35 = Morale_v7;
    }
    Slot_v11 = 0;
    Hero_ArtifactsSlots_offset_v12 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)Hero_ArtifactsSlots_offset_v12 == 45 )
        goto LABEL_18;
      ++Slot_v11;
      Hero_ArtifactsSlots_offset_v12 += 8;
    }
    while ( Slot_v11 < 19 );
    v13 = (*Main_Artifacts_Table_off_660B68[0])[366];
    if ( v13 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v13]) )
    {
LABEL_18:
      ++Morale_v7;
      Morale_v35 = Morale_v7;
    }
    Slot_v14 = 0;
    Hero_ArtifactsSlots_offset_v15 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)Hero_ArtifactsSlots_offset_v15 == 49 )
        goto LABEL_24;
      ++Slot_v14;
      Hero_ArtifactsSlots_offset_v15 += 8;
    }
    while ( Slot_v14 < 19 );
    v16 = (*Main_Artifacts_Table_off_660B68[0])[398];// 49*8 + 6
    if ( v16 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v16]) )
    {
LABEL_24:
      ++Morale_v7;
      Morale_v35 = Morale_v7;
    }
    Slot_v17 = 0;
    Hero_ArtifactsSlots_offset_v18 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)Hero_ArtifactsSlots_offset_v18 == 50 )
        goto LABEL_30;
      ++Slot_v17;
      Hero_ArtifactsSlots_offset_v18 += 8;
    }
    while ( Slot_v17 < 19 );
    v19 = (*Main_Artifacts_Table_off_660B68[0])[406];// 50*8 + 6
    if ( v19 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v19]) )
    {
LABEL_30:
      ++Morale_v7;
      Morale_v35 = Morale_v7;
    }
    Slot_v20 = 0;
    Hero_ArtifactsSlots_offset_v21 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)Hero_ArtifactsSlots_offset_v21 == 51 )
        goto LABEL_36;
      ++Slot_v20;
      Hero_ArtifactsSlots_offset_v21 += 8;
    }
    while ( Slot_v20 < 19 );
    v22 = (*Main_Artifacts_Table_off_660B68[0])[414];// 51*8 + 6
    if ( v22 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v22]) )
    {
LABEL_36:
      ++Morale_v7;
      Morale_v35 = Morale_v7;
    }
    v23 = *(_BYTE *)(this_v4 + 34);
    if ( v23 >= 0 )
    {
      v26 = 0;
      v27 = 5 * v23;
      v24 = *(_BYTE *)(dword_699538[0] + 72 * v27 + 133902);
      v25 = dword_699538[0] + 72 * v27 + 133840;
      if ( v24 > 0 )
      {
        while ( 1 )
        {
          v28 = *(_BYTE *)(v25 + v26 + 64);
          v29 = v28 == -1 ? 0 : *(_DWORD *)(dword_699538[0] + 136724) + 360 * v28;
          if ( Grail_BuidingFlags_qword_66CE68 & *(_QWORD *)(v29 + 344) && !*(_BYTE *)(v29 + 4) )
            break;
          ++v26;
          if ( v26 >= v24 )
            goto LABEL_47;
        }
        Morale_v35 += 2;
      }
LABEL_47:
      this_v4 = this_v34;
      Morale_v7 = Morale_v35;
    }
    Morale_v30 = *(_BYTE *)(this_v4 + 282) + Morale_v7;
    v31 = *(_DWORD *)(this_v4 + 261);
    if ( v31 & 0x800000 )
      Morale_v30 += 500;
    if ( a4 )
    {
      LODWORD(Hero_Level_v33) = Morale_v30;
      Worst_morale_v37 = -3;
      if ( Morale_v30 >= -3 )
      {
        Morale_addr_v32 = (int *)&a4;
        if ( Morale_v30 <= 3 )
          Morale_addr_v32 = (int *)&Hero_Level_v33;
        result = *Morale_addr_v32;
      }
      else
      {
        result = Worst_morale_v37;
      }
    }
    else
    {
      result = Morale_v30;
    }
  }
  return result;
}




Код
int __thiscall A0_Hero_get_Luck_Level_sub_4E3930(int this, int a2, int a3, char a4)
{
  int this_v4; // esi@1
  int result; // eax@3
  signed int v6; // eax@4
  int v7; // ecx@4
  int v8; // eax@7
  signed int v9; // eax@10
  int v10; // edx@10
  int v11; // eax@13
  char v12; // al@16
  char *v13; // eax@17
  int v14; // eax@20
  signed int v15; // ecx@20
  int v16; // eax@23
  signed int v17; // eax@26
  int v18; // ecx@26
  int v19; // eax@29
  signed int v20; // eax@32
  int v21; // ecx@32
  int v22; // eax@35
  signed int v23; // eax@38
  int v24; // ecx@38
  int v25; // eax@41
  char v26; // al@46
  signed int v27; // ebx@47
  int v28; // edi@47
  int v29; // eax@47
  int v30; // eax@48
  int v31; // esi@49
  int v32; // ecx@57
  int this_v33; // [sp+8h] [bp-4h]@1
  float v34; // [sp+14h] [bp+8h]@19

  this_v4 = this;
  this_v33 = this;
  if ( *(_DWORD *)(this + 261) & 0x400000 )
  {
LABEL_16:
    v12 = *(_BYTE *)(this_v4 + 210);
    a3 = dword_63E998[v12];
    if ( v12 > 0 )
    {
      v13 = (char *)HeroSpecTable_off_679C80 + 40 * *(_DWORD *)(this_v4 + 26);
      if ( !*(_DWORD *)v13 )
      {
        if ( *((_DWORD *)v13 + 1) == 9 )
        {
          v34 = (double)*(_WORD *)(this_v4 + 85);
          *(float *)&a3 = (double)a3;
          a3 = (signed __int64)((v34 * 0.05000000074505806 + 1.0) * *(float *)&a3);
        }
      }
    }
    v15 = 0;
    v14 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)v14 == 108 )
        goto LABEL_25;
      ++v15;
      v14 += 8;
    }
    while ( v15 < 19 );
    v16 = (*Main_Artifacts_Table_off_660B68[0])[870];
    if ( v16 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v16]) )
LABEL_25:
      a3 += 3;
    v17 = 0;
    v18 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)v18 == 45 )
        goto LABEL_31;
      ++v17;
      v18 += 8;
    }
    while ( v17 < 19 );
    v19 = (*Main_Artifacts_Table_off_660B68[0])[366];
    if ( v19 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v19]) )
LABEL_31:
      ++a3;
    v20 = 0;
    v21 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)v21 == 46 )
        goto LABEL_37;
      ++v20;
      v21 += 8;
    }
    while ( v20 < 19 );
    v22 = (*Main_Artifacts_Table_off_660B68[0])[374];
    if ( v22 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v22]) )
LABEL_37:
      ++a3;
    v23 = 0;
    v24 = this_v4 + 301;
    do
    {
      if ( *(_DWORD *)v24 == 47 )
        goto LABEL_43;
      ++v23;
      v24 += 8;
    }
    while ( v23 < 19 );
    v25 = (*Main_Artifacts_Table_off_660B68[0])[382];
    if ( v25 != -1 && A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v25]) )
LABEL_43:
      ++a3;
    if ( A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, 48) )
      ++a3;
    v26 = *(_BYTE *)(this_v4 + 34);
    if ( v26 >= 0 )
    {
      v27 = 0;
      v29 = 5 * v26;
      v28 = dword_699538[0] + 72 * v29 + 133840;
      if ( *(_BYTE *)(dword_699538[0] + 72 * v29 + 133902) > 0 )
      {
        while ( 1 )
        {
          v30 = *(_BYTE *)(v28 + v27 + 64);
          v31 = v30 == -1 ? 0 : *(_DWORD *)(dword_699538[0] + 136724) + 360 * v30;
          if ( (unsigned __int8)sub_4305A0(v31, 26, 1) && *(_BYTE *)(v31 + 4) == 1 )
            break;
          ++v27;
          if ( v27 >= *(_BYTE *)(v28 + 62) )
            goto LABEL_56;
        }
        a3 += 2;
LABEL_56:
        this_v4 = this_v33;
      }
    }
    result = *(_BYTE *)(this_v4 + 283) + a3;
    v32 = *(_DWORD *)(this_v4 + 261);
    if ( v32 & 0x400000 )
      result += 500;
    if ( a4 )
    {
      a3 = 3;
      *(_DWORD *)&a4 = result;
      result = *(_DWORD *)sub_4E6800(&a3);
    }
  }
  else
  {
    if ( (_BYTE)a3 )
    {
      result = 0;
    }
    else
    {
      v6 = 0;
      v7 = this + 301;
      while ( *(_DWORD *)v7 != 85 )
      {
        ++v6;
        v7 += 8;
        if ( v6 >= 19 )
        {
          v8 = (*Main_Artifacts_Table_off_660B68[0])[686];
          if ( v8 == -1 || !A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4, (*Combo_Arts_off_660B6C)[6 * v8]) )
          {
            if ( !a2 )
              goto LABEL_16;
            v9 = 0;
            v10 = a2 + 301;
            while ( *(_DWORD *)v10 != 85 )
            {
              ++v9;
              v10 += 8;
              if ( v9 >= 19 )
              {
                v11 = (*Main_Artifacts_Table_off_660B68[0])[686];
                if ( v11 == -1 || !A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(a2, (*Combo_Arts_off_660B6C)[6 * v11]) )
                  goto LABEL_16;
                goto LABEL_15;
              }
            }
          }
          break;
        }
      }
LABEL_15:
      result = 0;
    }
  }
  return result;
}



Для вызова функций в обоих случаях для вызова через SN:E надо смотреть на первую строку - в ней указаны тип возвращаемого значения, соглашение вызова, кол-во параметров и, собственно адрес (в конце названия).
В обоих случаях первый параметр - ссылка на структуру героя ((*(char*)0x699538 + 0x21620 + 1170*n), где n - номер героя (1170 - в десятичной)), а второй, третий и четвёртый: 0, 0, 1.
totkotoriy
Цитата(Sav @ 01 Apr 2012, 22:14) *
Не знаю, нужно ли это и сможешь ли ты разобраться, но вот:

Спасибо, но наверное сейчас у меня не хватит терпения разобраться. Сделал через костыли на ЕРМ. Кстати еще заметил, что эта команда выдает данные без учета навыков лидерства и удачи, и дух уныния отбирает бонусы боевого духа только в бою, а на карте приключений у героя бонусы не отнимаются, а с часами недоброго часа отнимаются и там bad.gif

Может есть у кого список портретов с номерами, вроде сделал как в exeшнике, но не факт, что там по порядку номера идут. Непонятно именно с героями для компаний какие у них номера.
totkotoriy
А как можно (не в битве) получить/установить максимально возможный опыт существ в стеке у героя?
Например существа псевдо 8-го уровня имеют больший потолок очков опыта (147000) чем сущ. 7-го (122500), хотя в системе они оба считаются 7-м уровнем. Спасибо rolleyes.gif
Я, конечно, могу опять всё через костыли сделать, но так уже надоело это...
Sav
У каждого существа отдельно настраивается, см. соответствующие ресейверы (EA или EX вроде).
totkotoriy
Цитата(Sav @ 02 Apr 2012, 15:16) *
У каждого существа отдельно настраивается, см. соответствующие ресейверы (EA или EX вроде).

Я смотрел, ничего похожего не вижу там. А EA только на поле боя работает.
Sav
Проверял? EA:C.
totkotoriy
Цитата(Sav @ 02 Apr 2012, 15:10) *
Проверял? EA:C.

Ёёёёлки палки, вот я торможу....прошу прощения, я думал все команды EA только в бою работают. Спасибо.
totkotoriy
Как можно узнать посещал герой объект или нет, например банк существ?
И как можно получить номер (не тип) объекта зная его координаты?
tolich
Посещение: надо исследовать, смотреть Control Word до и после посещения.
!!OB:C$;
Я когда-то это делал для Ведьминой Избушки, но это было так давно, что я уже забыл результат.

Да, емнип, посещение смотрится отдельно для каждой стороны.
Etoprostoya
Для банка существ есть свой ресивер !!CB.
Цитата(ERM Help)
Ресейверы и инструкции
для объектов

!!CB банк существ
!!CH сундук сокровищ
!!DW жилища существ
!!FR костер покинутого лагеря
!!GD мистический сад
!!GR гарнизон
!!KT дерево знаний
!!LN навес
!!ML ветряная мельница
!!MN шахта
!!MT обелиск
!!SC ученый
!!SG знак (бутыль)
!!SK скелет
!!SP магический ручей
!!SR магическая святыня
!!ST камень знаний
!!SW лебединый пруд
!!SY верфь
!!UR университет
!!WG тележка
!!WH хижина ведьмы
!!WM водяная мельница
!!WT гробница воина

Любой их этих ресейверов способен принимать в качестве координат (x/y/l) переменные, в том числе и последовательные (например, !!MNv1:... для настройки шахты в v1/v2/v3)
totkotoriy
Цитата(etoprostoya @ 03 Apr 2012, 21:29) *
Для банка существ есть свой ресивер !!CB.

Это то я знаю уже biggrin.gif а как узнать про посещаемость idontno.gif
описания на эти ресиверы то нету
feanor
С чего бы нет?
В справке от Драколича с незапамятных времен есть.
Etoprostoya
Ресейвер CB (банки существ)




!!CB#1/#2/#3:XXXX; - установка параметров банка (хранилища) существ в X Y L.
Вы можете дать в награду неограниченное количество артефактов, кроме свитков с заклинаниями. Если вы поставите в награду свиток, игра вылетит. Этот ресейвер работает также для Драконьей утопии, Склепа, Кораблекрушения и Заброшенного корабля.


--------------------------------------------------------------------------------

A
Бонус – артефакт
A1/$ - проверить/получить количество артефактов в таблице бонусов (установить нельзя!)
A2/#/$ - установить/проверить/получить артефакт $ в позиции # (0…) в таблице бонусов
A3/$ - добавить артефакт $ в конец бонусной таблицы
A4/$ - удалить артефакт в позиции $ (0…) в таблице бонусов.


--------------------------------------------------------------------------------

G#1/$2/$3
Установить/проверить/получить охранников в слоте #1 (0…6), типа $2 и количеством $3.
Дополнительно (показать)


Монстры располагаются так:
3 6 0
5 4
2 1
Причем даже если вы настроили каких-либо монстров в слотах 0...4 включительно, то слоты 5 и 6 будут заняты копейщиками. Во избежание этого используйте для слотов 5 и 6 значение монстра-охранника -1 количеством 0.


--------------------------------------------------------------------------------

M$1/$2
Установить/проверить/получить бонусных существ типа $1 и количеством $2. Количество бонусных существ должно быть больше 0 и меньше 128. Чтобы удалить бонусное существо, установите тип -1 и количество 0.


--------------------------------------------------------------------------------

R#1/$2
Установить/проверить/получить бонус ресурсов типа #1 и количеством $2. Вы можете установить все 7 ресурсов.


--------------------------------------------------------------------------------

T$
Установить/проверить/получить, посещен ли банк (1) или нет (0).
Комментарий (скрыть)

Если вы включаете хранилище снова (устанавливаете данную команду на 0), вам нужно установить как минимум одного охранника, иначе следующий герой, посетивший данное хранилище, получит всю награду без битвы.


--------------------------------------------------------------------------------

V$
Установить/проверить/получить слово «посещено» для игрока $.
Комментарий (скрыть)

Это побитная маска, например, если хранилище посещал синий, красный и зеленый, и оно было ограблено синим сразу, $ будет равно 2(синий)+1(красный)+mad.gifзеленый)=11. Этим игрокам на жилище будет надпись, что оно посещено. Также, если игрок посетил хранилище, но не атаковал, его биты все равно занесутся в значение, редактируемое этой опцией, и игроку будет в подсказке указано количество охранников.


--------------------------------------------------------------------------------


Жмёшь кнопку "Ресейвер" справа вверху, потом внизу кликаешь "Ресейверы для объектов".
tolich
Да, как раз у банков есть !!CB:V$. А вот с вичхатами пришлось помучиться.
totkotoriy
Ну простите меня добрый народ, я тут всех задолбал потому что пытаюсь побыстрее всё сделать. Спасибо biggrin.gif
Я оказывается не видел вкладку ресиверы для объектов.
FallenAngel
Подскажите, пожалуйста. Нужен скрипт, который бы заменял деф половины из хижин провидцев на карте на
ABX.def
Где X число, случайно выбираемое из нескольких диапазонов (Например: 400-700; 100-200; 2000-5000).
Sav
Емнип, erm не может управлять def'ами объектов. Хотя, возможно, я ошибаюсь.
FallenAngel
Еще парочка вопросов:
1. Можно ли, допустим, арктическому снайперу поставить звук ***DFND от другого монстра, не затрагивая ничего у оригинального снайпера и не меняя остальные звуки? Если нет, то хотя бы как сделать, чтобы все звуки один монстр брал просто у другого, чтобы апгрейды\даунгрейды не меняли своих?
2. Нужно 6-му и 7-му левелу инферно сделать 2 гекса. По хелпу пробовал, не получалось.
feanor
Цитата
1. Можно ли, допустим, арктическому снайперу поставить звук ***DFND от другого монстра, не затрагивая ничего у оригинального снайпера и не меняя остальные звуки? Если нет, то хотя бы как сделать, чтобы все звуки один монстр брал просто у другого, чтобы апгрейды\даунгрейды не меняли своих?

Не столь давно всплывала функция для смены звуков существа.
Цитата
2. Нужно 6-му и 7-му левелу инферно сделать 2 гекса. По хелпу пробовал, не получалось.

Пробуй еще раз
FallenAngel
Цитата(feanor)
Пробуй еще раз

Спасибо, сейчас получилось.
Правда, так и не разобрался со звуками.
feanor
Забавно
Algor
Аджит - неудачник. Даже выпить яду не получилось gigi.gif
Sav
Так без книжки-то никогда ничего не действует. Или кнопка уже успела стать неактивной при колдовстве?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.