Prozix
New Member
- Reaction score
- 7
Hi there, it's me again.
This time I'm on the forums because I'd like to save you some time. The next snippet allows you to create buildings very easily and rapidly. It requires:
An example script which creates 4 buildings:
of course, I have included a demo map.
Beware that I haven't tested everything thoroughly so there might be some minor errors I haven't discovered yet.
Please let me know if you have an idea or if you discovered something that doesn't work correctly.
Greetz, Prozix
This time I'm on the forums because I'd like to save you some time. The next snippet allows you to create buildings very easily and rapidly. It requires:
- Newgen
JASS:
//---HEADER---
// This file was made by Prozix.
// It contain's macros to facilitate building creation with object merger
// Example code is in the Example trigger and a more descriptive copyable example beneath the library code
// Fictional Example is only possible when textmacro's will be able to run other textmacro's, which was not possible at the time of creation of this library
// Couldn't have done this withoud Azlier's tutorial on ObjectMerger
// Enjoy
//---FILE TEXTMACRO'S---
//do not touch this unless you know what you are doing
//please report any bugs or errors you may discover on the thehelper forums
//! textmacro MakeChangeArt takes BTNX, BTNY, GROUND_TEX, ICON, MODEL, SCALE, SELECTION_SCALE, SHADOW_TEX
//! i makechange(current, "ubpx", $BTNX$)
//! i makechange(current, "ubpy", $BTNY$)
//! i makechange(current, "uubs", "$GROUND_TEX$")
//! i makechange(current, "uico", "$ICON$")
//! i makechange(current, "umdl", "$MODEL$")
//! i makechange(current, "usca", $SCALE$)
//! i makechange(current, "ussc", $SELECTION_SCALE$)
//! i makechange(current, "ushb", "$SHADOW_TEX$")
//! endtextmacro
//! textmacro MakeChangeColor takes R, G, B
//! i makechange(current, "uclr", $R$)
//! i makechange(current, "uclg", $G$)
//! i makechange(current, "uclb", $B$)
//! endtextmacro
//! textmacro MakeChangeCombat takes DEATH_TYPE, DEFENSE_BASE, DEFENSE_TYPE
//! i makechange(current, "udea", $DEATH_TYPE$)
//! i makechange(current, "udef", $DEFENSE_BASE$)
//! i makechange(current, "udty", "$DEFENSE_TYPE$")
//! endtextmacro
//! textmacro MakeChangePathing takes COLLISION_SIZE, PATHING_MAP
//! i makechange(current, "ucol", $COLLISION_SIZE$)
//! i makechange(current, "upat", "$PATHING_MAP$")
//! endtextmacro
//! textmacro MakeChangeSound takes CONSTRUCTION_SOUNDSET, UNIT_SOUNDSET
//! i makechange(current, "ubsl", "$CONSTRUCTION_SOUNDSET$")
//! i makechange(current, "usnd", "$UNIT_SOUNDSET$")
//! endtextmacro
//! textmacro MakeChangeFood takes FOOD_PRODUCED, FOOD_COST
//! i makechange(current, "ufoo", $FOOD_COST$)
//! i makechange(current, "ufma", $FOOD_PRODUCED$)
//! endtextmacro
//! textmacro MakeChangeStatsBuild takes BUILD_GOLD, BUILD_LUMBER, BUILD_TIME
//! i makechange(current, "ugol", $BUILD_GOLD$)
//! i makechange(current, "ulum", $BUILD_LUMBER$)
//! i makechange(current, "ubld", $BUILD_TIME$)
//! endtextmacro
//! textmacro MakeChangeStatsRepair takes REPAIR_GOLD, REPAIR_LUMBER, REPAIR_TIME
//! i makechange(current, "ugor", $REPAIR_GOLD$)
//! i makechange(current, "ulur", $REPAIR_LUMBER$)
//! i makechange(current, "urtm", $REPAIR_TIME$)
//! endtextmacro
//! textmacro MakeChangeStats takes HP_BASE, HP_REGEN, HP_REGENTYPE, MP_INITIAL, MP_BASE, MP_REGEN
//! i makechange(current, "uhpm", $HP_BASE$)
//! i makechange(current, "uhpr", $HP_REGEN$)
//! i makechange(current, "uhrt", "$HP_REGENTYPE$")
//! i makechange(current, "umpi", $MP_INITIAL$)
//! i makechange(current, "umpm", $MP_BASE$)
//! i makechange(current, "umpr", $MP_REGEN$)
//! endtextmacro
//! textmacro MakeChangeStatsExtra takes HIDE_DISPLAY, SHOW_ICON, RACE, SIGHT_DAY, SIGHT_NIGHT
//! i makechange(current, "uhom", $HIDE_DISPLAY$)
//! i makechange(current, "unbm", $SHOW_ICON$)
//! i makechange(current, "urac", "$RACE$")
//! i makechange(current, "usid", $SIGHT_DAY$)
//! i makechange(current, "usin", $SIGHT_NIGHT$)
//! endtextmacro
//! textmacro MakeChangeTechtreeItems takes ITEMS_MADE, ITEMS_SOLD
//! i makechange(current, "umki", "$ITEMS_MADE$")
//! i makechange(current, "usei", "$ITEMS_SOLD$")
//! endtextmacro
//! textmacro MakeChangeTechtreeUnits takes UNITS_SOLD, UNITS_TRAINED
//! i makechange(current, "useu", "$UNITS_SOLD$")
//! i makechange(current, "utra", "$UNITS_TRAINED$")
//! endtextmacro
//! textmacro MakeChangeTechtreeUpgrades takes UPGRADES_TO, UPGRADES_USED
//! i makechange(current, "uupt", "$UPGRADES_TO$")
//! i makechange(current, "upgr", "$UPGRADES_USED$")
//! endtextmacro
//! textmacro MakeChangeTechtree takes TECHTREE_REQ, TECHTREE_LVLS, RESEARCHES_AVAILABLE, REVIVES_HEROES
//! i makechange(current, "ureq", "$TECHTREE_REQ$")
//! i makechange(current, "urqa", "$TECHTREE_LVLS$")
//! i makechange(current, "ures", "$RESEARCHES_AVAILABLE$")
//! i makechange(current, "urev", $REVIVES_HEROES$)
//! endtextmacro
//! textmacro MakeChangeText takes HOTKEY, NAME, EDITOR_SUFFIX, TOOLTIP_BASIC, TOOLTIP_EXTENDED
//! i makechange(current, "uhot", "$HOTKEY$")
//! i makechange(current, "unam", "$NAME$")
//! i makechange(current, "unsf", "$EDITOR_SUFFIX$")
//! i makechange(current, "utip", "$TOOLTIP_BASIC$")
//! i makechange(current, "utub", "$TOOLTIP_EXTENDED$")
//! endtextmacro
//! textmacro MakeChangeTextAuto takes HOTKEY, NAME, EDITOR_SUFFIX, TOOLTIP_EXTENDED, COLOR_HOTKEY
//! i makechange(current, "uhot", "$HOTKEY$")
//! i makechange(current, "unam", "$NAME$")
//! i makechange(current, "unsf", "$EDITOR_SUFFIX$")
//! i makechange(current, "utip", "Build $NAME$ |cff$COLOR_HOTKEY$\($HOTKEY$\)|r")
//! i makechange(current, "utub", "$TOOLTIP_EXTENDED$")
//! endtextmacro
//! textmacro MakeBuilding takes BASEID, NEWID
//! i setobjecttype("units")
//! i createobject("$BASEID$", "$NEWID$")
//! endtextmacro
//---EXAMPLE CODE---
/*
//! externalblock extension=lua ObjectMerger $FILENAME$
///! runtextmacro MakeBuilding("BASE_ID", "NEW_ID")
//! runtextmacro MakeBuilding("hhou", "hH01")
///! runtextmacro MakeChangeArt("BTNX", "BTNY", "GROUND_TEX", "ICON", "MODEL", "SCALE", "SELECTION_SCALE", "SHADOW_TEX") //be sure to use \\ in file paths for \
//! runtextmacro MakeChangeArt("1", "1", "HSMA", "ReplaceableTextures\\CommandButtons\\BTNFireBolt.blp", "buildings\\human\\GryphonAviary\\GryphonAviary.mdl", "0.76", "1.0", "ShadowHouse")
///! runtextmacro MakeChangeColor("RED", "GREEN", "BLUE") //RGB 0-255
//! runtextmacro MakeChangeColor("255", "50", "130")
///! runtextmacro MakeChangeCombat("DEATH_TYPE", "DEFENSE_BASE", "DEFENSE_TYPE") //DEATH_TYPE 0-3, DEFENSE_TYPE normal, small, medium, large, fort, hero, devine, none
//! runtextmacro MakeChangeCombat("0", "50", "hero")
/// runtextmacro MakeChangePathing("COLLISION_SIZE", "PATHING_MAP")
//! runtextmacro MakeChangePathing("64", "PathTextures\\4x4SimpleSolid.tga")
///! runtextmacro MakeChangeSound("CONSTRUCTION_SOUNDSET", "UNIT_SOUNDSET")
//! runtextmacro MakeChangeSound("BuildingConstructionLoop", "Farm")
///! runtextmacro MakeChangeFood("FOOD_PRODUCED", "FOOD_COST")
//! runtextmacro MakeChangeFood("12", "0")
///! runtextmacro MakeChangeStatsBuild("BUILD_GOLD", "BUILD_LUMBER", "BUILD_TIME")
//! runtextmacro MakeChangeStatsBuild("200", "20", "10")
///! runtextmacro MakeChangeStatsRepair("REPAIR_GOLD", "REPAIR_LUMBER", "REPAIR_TIME")
//! runtextmacro MakeChangeStatsRepair("200", "20", "10")
///! runtextmacro MakeChangeStats HP_BASE", "HP_REGEN", "HP_REGENTYPE", "MP_INITIAL", "MP_BASE", "MP_REGEN") REGENTYPE none, always, blight, day, night
//! runtextmacro MakeChangeStats("500", "5", "always", "2000", "20000", "100")
///! runtextmacro MakeChangeStatsExtra("HIDE_DISPLAY", "SHOW_ICON", "RACE", "SIGHT_DAY", "SIGHT_NIGHT")
//! runtextmacro MakeChangeStatsExtra("0", "0", "human", "700", "700")
///! runtextmacro MakeChangeTechtreeItems("ITEMS_MADE", "ITEMS_SOLD")
//! runtextmacro MakeChangeTechtreeItems("modt,ratf", "rde1")
///! runtextmacro MakeChangeTechtreeUnits("UNITS_SOLD", "UNITS_TRAINED")
//! runtextmacro MakeChangeTechtreeUnits("", "")
///! runtextmacro MakeChangeTechtreeUpgrades("UPGRADES_TO", "UPGRADES_USED")
//! runtextmacro MakeChangeTechtreeUpgrades("", "")
///! runtextmacro MakeChangeTechtree("TECHTREE_REQ", "TECHTREE_LVLS", "RESEARCHES_AVAILABLE", "REVIVES_HEROES")
//! runtextmacro MakeChangeTechtree("", "", "", "0")
///! runtextmacro MakeChangeText("HOTKEY", "NAME", "EDITOR_SUFFIX", "TOOLTIP_BASIC", "TOOLTIP_EXTENDED")
//You can use this one, but the next one does the same with some automatic stuff
///! runtextmacro MakeChangeTextAuto("HOTKEY", "NAME", "EDITOR_SUFFIX", "TOOLTIP_EXTENDED", "COLOR_HOTKEY")
//! runtextmacro MakeChangeTextAuto("F", "Heavy Farm", "", "Provides food for heavy peasants. ", "ffcc00")
//! endexternalblock
*/
An example script which creates 4 buildings:
JASS:
//GOAL: we are going to create 4 farm like buildings that can upgrade into each other
//This needs to be added before using the Building textmacro's
//! externalblock extension=lua ObjectMerger $FILENAME$
//base heavy farm
//! runtextmacro MakeBuilding("hhou", "hH01")
//! runtextmacro MakeChangeArt("0", "2", "HSMA", "ReplaceableTextures\\CommandButtons\\BTNFireBolt.blp", "buildings\\human\\GryphonAviary\\GryphonAviary.mdl", "0.76", "1.0", "ShadowHouse")
//! runtextmacro MakeChangeColor("255", "0", "130")
//! runtextmacro MakeChangeCombat("0", "50", "hero")
//! runtextmacro MakeChangePathing("64", "PathTextures\\4x4SimpleSolid.tga")
//! runtextmacro MakeChangeSound("BuildingConstructionLoop", "Farm")
//! runtextmacro MakeChangeFood("6", "0")
//! runtextmacro MakeChangeStatsBuild("200", "20", "1")
//! runtextmacro MakeChangeStatsRepair("200", "20", "1")
//! runtextmacro MakeChangeStats("500", "5", "always", "2000", "20000", "100")
//! runtextmacro MakeChangeStatsExtra("0", "0", "human", "700", "700")
//! runtextmacro MakeChangeTechtreeItems("", "")
//! runtextmacro MakeChangeTechtreeUnits("", "")
//! runtextmacro MakeChangeTechtreeUpgrades("hH02", "")
//! runtextmacro MakeChangeTechtree("", "", "", "0")
//! runtextmacro MakeChangeTextAuto("F", "Heavy Farm lvl 1", "", "Provides food for heavy peasants. ", "ffcc00")
//heavy farm lvl 2
//! runtextmacro MakeBuilding("hH01", "hH02")
//! runtextmacro MakeChangeColor("255", "50", "160")
//! runtextmacro MakeChangeFood("12", "0")
//! runtextmacro MakeChangeTechtreeUpgrades("hH03", "")
//! runtextmacro MakeChangeTextAuto("F", "Heavy Farm lvl 2", "", "Provides food for heavy peasants. ", "ffcc00")
//heavy farm lvl 3
//! runtextmacro MakeBuilding("hH01", "hH03")
//! runtextmacro MakeChangeColor("255", "100", "190")
//! runtextmacro MakeChangeFood("18", "0")
//! runtextmacro MakeChangeTechtreeUpgrades("hH04", "")
//! runtextmacro MakeChangeTextAuto("F", "Heavy Farm lvl 3", "", "Provides food for heavy peasants. ", "ffcc00")
//heavy farm lvl 4
//! runtextmacro MakeBuilding("hH01", "hH04")
//! runtextmacro MakeChangeColor("255", "150", "220")
//! runtextmacro MakeChangeFood("24", "0")
//! runtextmacro MakeChangeTechtreeUpgrades("", "")
//! runtextmacro MakeChangeTextAuto("F", "Heavy Farm lvl 4", "", "Provides food for heavy peasants. ", "ffcc00")
//and this line ends the external block
//! endexternalblock
of course, I have included a demo map.
Beware that I haven't tested everything thoroughly so there might be some minor errors I haven't discovered yet.
Please let me know if you have an idea or if you discovered something that doesn't work correctly.
Greetz, Prozix