Участник:SupposedToBeLegend

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску

DFHack скриптер, чутка программист плагинов DFHack

Руководства по разработке скриптов и плагинов для DFHack пишу на отдельной странице

Некоторые наблюдения

При игре с активным использованием DFHack, замечены следующие особенности:

Разумные расы

При добавлении разумного существа в пул граждан (они дают возврат true при проверке dfhack.units.isCitizen(код юнита)), данный юнит получает потребности: сон, еда, питьё. Даже если добавить флаг CAN_LEARN к юниту кота или собаки, они захотят есть и пить как обычные дварфы, но не смогут пить и есть, так как у них нет рук. Гарпии по умолчанию являются разумными, но не имеют рук, чтобы могли кушац или пить. Предполагается, что юнит в пуле граждан фактически геймплейно приравнивается к дварфу.

Игра за semi-megabeast

(Посредством создания и добавления юнитов в пул граждан)

Замечено следующее:

Если отправить отряд на захват (conquer) какого-либо места, то данный semi-megabeast может вернуться в крепость в виде атаки на крепость. Данный бывший гражданин не будет враждебен к гражданам крепости, но будет числиться в списке other, будет хаотично бегать по крепости, у него не будет потребностей.

Возможности крафта одежды для semi-megabeast через details: нет. Для создания одежды для Минотавров нужно приказать Минотавру крафтить одежду, тогда на выходе будет получаться одежда с подходящим размером для минотавров.

Игра за Гоблинов

  • Если у гоблинов будут в пуле ресурсов добавлены животные WAGON_PULLER, то будут приходить караваны с повозками.
  • При покидании каравана, любые животные, которые увезены гоблинами-торговцами, будут объявлены похищенными A kidnapper has made off with the . . .
  • Количество товаров у караванщиков зависит от предыдущих торговель.
  • При назначении звания master гражданину в крепости, будет выведено уведомление в розовом цвете (LMAGENTA) с сообщением After a polite discussion with rivals . . ., такое же сообщение выводится при успешном захвате врaжecких пocелений и назначением глaвы от aтaкyющих cил.

DFHack и манипулирование памятью

Увеличение размера отряда

В консоль DFHack набираем следующее:

lua "df.historical_entity.find(df.global.ui.group_id).positions.own[0].squad_size=100" — MILITIA_COMMANDER

lua "df.historical_entity.find(df.global.ui.group_id).positions.own[1].squad_size=100" — MILITIA_CAPTAIN

Вместо 100 можно поставить любое число до 32767.

Все дополнительные слоты полностью управляемы.

Изменение играемой цивилизации (расы)

С помощью DFHack

Данный способ обеспечивает чистую смену расы, получая все её атрибуты и особенности из RAW, получая вместо стартовых дварфов и мигрантов-дварфов другую расу.

Можно разблокировать все виды цивилизаций на этапе Embark, получив возможность высадки за все виды разумных цивилизаций, существующих в мире.

Список доступных цивилизаций хранится в специальном viewscreen высадки: df.viewscreen_choose_start_sitest. Нужный атрибут — вектор available_civs, по умолчанию содержащий все дварфовые цивилизации.

Порядок действий:

  1. Получите открытый экран высадки: экземпляр класса df.viewscreen_choose_start_sitest
  2. Очистите в нём вектор available_civs
  3. Добавьте в этот вектор нужные цивилизации
  4. В соответствующей вкладке через Tab вы увидите добавленные цивилизации. Цивилизации без названия (animal people и shrine) будут отображаться в списке и могут быть выбраны, но будут иметь пустые названия

Через сторонний редактор памяти

Данный способ не рекомендуется применять, так как способ, указанный выше, является корректной сменой игровой цивилизации. Он совершает все внутриигровые манипуляции, связанные со сменой цивилизации на этапе embark

Чтобы изменить код цивилизации, за которую будет создана игровая крепость, нужно изменить переменную по адресу Dwarf Fortress.exe+1C36B80. Все коды игровых сущностей (цивилизaции, прaвитeльcтвa, peлигия и другие) доступны в векторе по адресу df.global.world.entities.all

Некоторые переменные

(приведено на состояние версии 0.47.05, без модификаций)

Коды разумных рас, для использования в скриптах
Раса Код
TOAD_MAN 1
WORM_MAN 4
BLUEJAY_MAN 6
CARDINAL_MAN 9
GRACKLE_MAN 12
ORIOLE_MAN 15
RW_BLACKBIRD_MAN 18
PENGUIN MAN 23
PEREGRINE FALCON MAN 26
KIWI MAN 29
OSTRICH MAN 32
CROW_MAN 35
RAVEN_MAN 38
CASSOWARY_MAN 41
KEA_MAN 44
SNOWY_OWL_MAN 47
SPARROW_MAN 50
WHITE_STORK_MAN 53
LOON_MAN 56
BARN_OWL_MAN 59
PARAKEET_MAN 62
KAKAPO_MAN 65
GREY_PARROT_MAN 68
PUFFIN_MAN 71
SWAN_MAN 74
LORIKEET_MAN 77
WREN_MAN 80
OSPREY_MAN 83
EMU_MAN 86
COCKATIEL_MAN 89
PEACH-FACED_LOVEBIRD_MAN 92
MAGPIE_MAN 95
KESTREL_MAN 98
ALBATROSS_MAN 101
GREAT_HORNED_OWL_MAN 104
EAGLE_MAN 107
HORNBILL_MAN 110
MASKED_LOVEBIRD_MAN 113
BUSHTIT_MAN 116
DAMSELFLY_MAN 119
MOTH_MAN 122
GRASSHOPPER_MAN 125
BARK_SCORPION_MAN 128
MANTIS_MAN 131
TICK_MAN 134
LOUSE_MAN 137
THRIPS_MAN 140
SLUG_MAN 143
MOSQUITO_MAN 146
JUMPING_SPIDER_MAN 149
MOON_SNAIL_MAN 153
BROWN_RECLUSE_SPIDER_MAN 156
SNAIL_MAN 159
LEOPARD_GECKO_MAN 162
DESERT_TORTOISE_MAN 165
GILA_MONSTER_MAN 168
FLY_MAN 197
ROACH_MAN 200
BEETLE_MAN 203
BUTTERFLY_MONARCH_MAN 207
FIREFLY_MAN 210
DRAGONFLY_MAN 213
GOAT_MOUNTAIN_MAN 218
MARMOT_HOARY_MAN 221
GNOME_MOUNTAIN 223
GNOME_DARK 224
WALRUS_MAN 226
NARWHAL MAN 263
HIPPO_MAN 266
PLATYPUS MAN 273
BEAR_GRIZZLY_MAN 276
BEAR_BLACK_MAN 279
DEER_MAN 282
FOX_MAN 285
RACCOON_MAN 288
MACAQUE_RHESUS_MAN 291
COUGAR_MAN 294
WOLF_MAN 297
GROUNDHOG_MAN 300
ALLIGATOR_MAN 303
BUZZARD_MAN 306
PANDA MAN 310
CAPYBARA MAN 313
BADGER MAN 315
MOOSE MAN 318
RED PANDA MAN 321
ELEPHANT_MAN 324
WARTHOG_MAN 327
LION_MAN 330
LEOPARD_MAN 333
JAGUAR_MAN 336
TIGER_MAN 339
CHEETAH_MAN 342
GAZELLE_MAN 345
MANDRILL_MAN 348
CAMEL_1_HUMP_MAN 364
CAMEL_2_HUMP_MAN 367
CROCODILE_SALTWATER_MAN 370
VULTURE_MAN 373
RHINOCEROS_MAN 376
GIRAFFE_MAN 379
HONEY BADGER MAN 382
GIANT TORTOISE MAN 385
ARMADILLO MAN 388
MUSKOX_MAN 391
ELK_MAN 394
BEAR_POLAR_MAN 397
WOLVERINE_MAN 400
CHINCHILLA_MAN 403
BLIND_CAVE_OGRE 409
MANERA 424
GORLAK 432
PLUMP_HELMET_MAN 434
OCTOPUS_MAN 438
CRAB_MAN 441
LEOPARD_SEAL_MAN 444
CUTTLEFISH_MAN 447
ORCA_MAN 450
SPONGE_MAN 453
HORSESHOE_CRAB_MAN 456
SPERM_WHALE_MAN 459
ELEPHANT_SEAL_MAN 462
HARP_SEAL_MAN 465
NAUTILUS_MAN 468
LIZARD_MAN 480
SKINK_MAN 483
CHAMELEON_MAN 486
ANOLE_MAN 489
IGUANA_MAN 492
OTTER_MAN 496
SNAPPING_TURTLE_MAN 500
BEAVER_MAN 503
LEECH_MAN 506
AXOLOTL_MAN 509
MINK_MAN 512
POND_TURTLE_MAN 515
RAT_MAN 518
SQUIRREL_GRAY_MAN 520
SQUIRREL_RED_MAN 523
CHIPMUNK_MAN 526
HAMSTER_MAN 529
HEDGEHOG_MAN 532
FLYING_SQUIRREL_MAN 535
SQUID MAN 559
DWARF 572
HUMAN 573
ELF 574
GOBLIN 575
KOBOLD 576
GREMLIN 577
TROLL 578
OGRE 579
SATYR 582
GIANT 584
CYCLOPS 585
ETTIN 586
MINOTAUR 587
BLIZZARD_MAN 590
FAIRY 592
PIXIE 593
BLENDEC_FOUL 596
NIGHTWING 598
HARPY 599
MERPERSON 601
TROGLODYTE 612
CAVE_FISH_MAN 618
OLM_MAN 622
BAT_MAN 624
CAVE_SWALLOW_MAN 631
AMPHIBIAN_MAN 633
REPTILE_MAN 634
SERPENT_MAN 635
ANT_MAN 636
RODENT MAN 637
WILD_BOAR_MAN 639
COYOTE_MAN 642
KANGAROO_MAN 645
KOALA_MAN 648
ADDER_MAN 651
ECHIDNA_MAN 654
PORCUPINE_MAN 657
KINGSNAKE_MAN 660
GRAY_LANGUR_MAN 663
BOBCAT_MAN 666
SKUNK_MAN 669
GREEN_TREE_FROG_MAN 672
HARE_MAN 675
RATTLESNAKE_MAN 678
WEASEL_MAN 681
COPPERHEAD_SNAKE_MAN 684
IBEX_MAN 687
WOMBAT_MAN 690
DINGO_MAN 693
COATI_MAN 696
OPOSSUM_MAN 699
MONGOOSE_MAN 702
HYENA_MAN 705
ANACONDA_MAN 708
MONITOR_LIZARD_MAN 711
KING_COBRA_MAN 714
OCELOT_MAN 717
JACKAL_MAN 720
CAPUCHIN_MAN 723
SLOTH_MAN 726
SPIDER_MONKEY_MAN 729
PANGOLIN_MAN 732
BLACK_MAMBA_MAN 735
SLOTH_BEAR_MAN 738
AYE-AYE_MAN 741
BUSHMASTER_MAN 744
PYTHON_MAN 747
TAPIR_MAN 750
IMPALA_MAN 753
AARDVARK_MAN 756
LION_TAMARIN_MAN 759
STOAT_MAN 762
LYNX_MAN 765