What the.. - another WML problem.
Moderator: Forum Moderators
Forum rules
- Please use [code] BBCode tags in your posts for embedding WML snippets.
- To keep your code readable so that others can easily help you, make sure to indent it following our conventions.
What the.. - another WML problem.
I was a little too bored and started to make new MP scenario.(not sure that will be good, but it's always good way to waste some time )
Obviously scenario doesn't want to work, when somebody move it creates goblin for 1st side, i think it's something with BUY_LADDER macro, but i don't see where is problem, help me!
P.S.: It's not finished yet.
EDIT: Also when you move ladder near wall (LADDER_PLACE macro) it changes wrong hex.
Obviously scenario doesn't want to work, when somebody move it creates goblin for 1st side, i think it's something with BUY_LADDER macro, but i don't see where is problem, help me!
P.S.: It's not finished yet.
EDIT: Also when you move ladder near wall (LADDER_PLACE macro) it changes wrong hex.
Code: Select all
[multiplayer]
id=Sige
name= _ "Sige"
map_data="gggggggggggWWWgggggg
gggggggggoWgggWogggg
gggggggWWgggCgggWWgt
gggggggWgCgggggCgWgg
gtggtggWgggCgCgggWgg
gggggggWgggg1ggggWgc
gggggggWgCggCggCgWct
WWtggCCWgggggggggWcC
ggWWCgggWWogCgoWWgcC
ggggWWggggWWgWWgggcW
gggggnouggggWggggWWg
ggggggnguogggggWWgcg
gIggggggnnWWtWWgggcg
IIIIggggggggWIIgggcg
IIPIggIIggggIPIggccg
ggIIIIIPIgggIIIgcggg
ggggggIIIgggggggcggg
vggggXXgXXggggggcggg
gggggXgggXvgggggcggg
gggggXgggXgXXgXXccgg
ggggggXXXggXgggXggcg
gggnnngggggXgggXvgcg
gggg2gggggggXXXggccg
gggggggggggnggggcggg
ggggoggvggn3ngggcggg
gvggggggggggggggcggg
gggggggggggoggggcggg
gggggggggggggvggccgg
gggggggggggggggggcgg
gggggggggggggggggcgg"
description= _ "Sige"
turns=90
{DAWN}
{MORNING}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{SECOND_WATCH}
################# macro define part ##############
#define UNIT_SET TYPE SIDE X Y
[unit]
side={SIDE}
x={X}
y={Y}
type={TYPE}
[/unit]
#enddef
#define START_OFFENSIVE_UNITS X Y SIDE
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Warrior
description=Squad Leader
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Ancient Wose
description=Battering Ram
[modifications]
[trait]
[effect]
apply_to=attack
increase_damage=-24
[/effect]
[/trait]
[/modifications]
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Archer
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Archer
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
#enddef
#define SIDE_SET SIDE
[side]
side={SIDE}
team_name={SIDE}
canrecruit=1
controller=human
[/side]
#enddef
#define VARIABLE_INIT NAME VALUE
[set_variable]
name={NAME}
value={VALUE}
[/set_variable]
#enddef
#define LABEL X Y TEXT
[label]
x,y={X},{Y}
text={TEXT}
[/label]
#enddef
#define LADER_PLACE X Y
[event]
name=moveto
first_time_only=no
[filter]
type=Goblin Spearman
description=ladder
[/filter]
[if]
[have_unit]
x={X}
y={Y}
type=Goblin Spearman
description=ladder
[/have_unit]
[then]
[terrain]
x={X}
y={Y}-1
letter=u
[/terrain]
[kill]
x={X}
y={Y}
[/kill]
[/then]
[/if]
[/event]
#enddef
#define BUY_LADDER X Y XX YY
[event]
name=moveto
first_time_only=no
x={X}
y={Y}
[store_unit]
[filter]
x={X}
y={Y}
[/filter]
variable=ladder_trigger_unit
[/store_unit]
[store_gold]
side=$ladder_trigger_unit.side
variable=gold
[/store_gold]
[if]
[variable]
name=gold
greater_than_equal_to=10
[/variable]
[then]
[unit]
x={XX}
y={YY}
type=Goblin Spearman
description=ladder
side=$ladder_trigger_unit.side
[/unit]
[gold]
side=$ladder_trigger_unit.side
amount=-10
[/gold]
[/then]
[/if]
[/event]
#enddef
#################################################
{SIDE_SET 1}
{SIDE_SET 2}
{SIDE_SET 3}
[event]
name=prestart
{VARIABLE_INIT GATES 1}
{START_OFFENSIVE_UNITS 8 19 2}
{START_OFFENSIVE_UNITS 14 21 3}
[/event]
{LABEL 11 9 ("Open gate")}
{LABEL 5 25 ("Buy ladder")}
{LABEL 12 27 ("Buy ladder")}
{BUY_LADDER 5 25 8 19}
{BUY_LADDER 12 27 14 21}
{LADER_PLACE 1 9}
{LADER_PLACE 2 9}
{LADER_PLACE 3 10}
{LADER_PLACE 4 10}
{LADER_PLACE 5 11}
{LADER_PLACE 11 14}
{LADER_PLACE 12 14}
{LADER_PLACE 13 15}
{LADER_PLACE 14 14}
{LADER_PLACE 15 14}
{LADER_PLACE 16 15}
{LADER_PLACE 17 15}
{LADER_PLACE 18 16}
{LADER_PLACE 19 16}
{LADER_PLACE 20 17}
[/multiplayer]
That's a bit long to carefully check everything, but here's one:
You'll probably want the x and y to be inside a [filter]?
Also, it's a bit difficult to find bugs, because I really don't have an idea of how the scenario and the events are supposed to work. But still, this one looks suspicious as well:
Are you sure that whenever you use this macro, you want to create a new event that triggers every time any Goblin Spearman with the description "ladder" moves (I suppose there will be quite a few of them)? The event filter doesn't filter for any location now, should it have x,y={X},{Y}? Then it would trigger only when a Goblin Spearman with the description "ladder" moves onto the hex that is given in the macro's attributes.
Code: Select all
#define BUY_LADDER X Y XX YY
[event]
name=moveto
first_time_only=no
x={X}
y={Y}
...
Also, it's a bit difficult to find bugs, because I really don't have an idea of how the scenario and the events are supposed to work. But still, this one looks suspicious as well:
Code: Select all
#define LADER_PLACE X Y
[event]
name=moveto
first_time_only=no
[filter]
type=Goblin Spearman
description=ladder
[/filter]
[if]
[have_unit]
x={X}
y={Y}
type=Goblin Spearman
description=ladder
[/have_unit]
[then]
...
Nearly everything is working now, but i still have problem, gate closes, but doesn't want to open!
Code: Select all
[multiplayer]
id=Sige
name= _ "Sige"
map_data="gggggggggggWWWgggggg
gggggggggoWgggWogggg
gggggggWWgggCgggWWgt
gggggggWgCgggggCgWgg
gtggtggWgggCgCgggWgg
gggggggWgggg1ggggWgc
gggggggWgCggCggCgWct
WWtggCCWgggggggggWcC
ggWWCgggWWogCgoWWgcC
ggggWWggggWWgWWgggcW
gggggnWuggggWggggWWg
ggggggnguWgggggWWgcg
gIggggggnnWWtWWgggcg
IIIIggggggggWIIgggcg
IIPIggIIggggIPIggccg
ggIIIIIPIgggIIIgcggg
ggggggIIIgggggggcggg
vggggXXgXXggggggcggg
gggggXgggXvgggggcggg
gggggXgggXgXXgXXccgg
ggggggXXXggXgggXggcg
gggnnngggggXgggXvgcg
gggg2gggggggXXXggccg
gggggggggggnggggcggg
ggggoggvggn3ngggcggg
gvggggggggggggggcggg
gggggggggggoggggcggg
gggggggggggggvggccgg
gggggggggggggggggcgg
gggggggggggggggggcgg"
description= _ "Sige"
turns=90
{DAWN}
{MORNING}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{SECOND_WATCH}
################# macro define part ##############
#define UNIT_SET TYPE SIDE X Y
[unit]
side={SIDE}
x={X}
y={Y}
type={TYPE}
[/unit]
#enddef
#define WALL_GUARD X Y
{UNIT_SET (Wall Guard) 1 {X} {Y}}
#enddef
#define START_OFFENSIVE_UNITS X Y SIDE
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Warrior
description=Squad Leader
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Ancient Wose
description=Battering Ram
[modifications]
[trait]
[effect]
apply_to=attack
increase_damage=-24
[/effect]
[/trait]
[/modifications]
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Archer
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Archer
description=Soldier
[/unit]
[unit]
side={SIDE}
x={X}
y={Y}
type=Orcish Grunt
description=Soldier
[/unit]
#enddef
#define SIDE_SET SIDE
[side]
side={SIDE}
team_name={SIDE}
canrecruit=1
controller=human
[/side]
#enddef
#define VARIABLE_SET NAME VALUE
[set_variable]
name={NAME}
value={VALUE}
[/set_variable]
#enddef
#define LABEL X Y TEXT
[label]
x,y={X},{Y}
text={TEXT}
[/label]
#enddef
#define LADDER_PLACE X Y
[event]
name=moveto
first_time_only=no
[filter]
x={X}
y={Y}
type=Goblin Spearman
description=ladder
[/filter]
[if]
[variable]
name=nowall{X}{Y}
not_equals=131341526
[/variable]
[then]
{VARIABLE_SET y {Y}}
[set_variable]
name=y
add=-1
[/set_variable]
[terrain]
x={X}
y=$y
letter=C
[/terrain]
[kill]
x={X}
y={Y}
[/kill]
{VARIABLE_SET (nowall{X}{Y}) 131341526}
[/then]
[/if]
[/event]
#enddef
#define BUY_LADDER X Y XX YY
[event]
name=moveto
first_time_only=no
[filter]
x={X}
y={Y}
[/filter]
[store_unit]
[filter]
x={X}
y={Y}
[/filter]
variable=ladder_trigger_unit
[/store_unit]
[store_gold]
side=$ladder_trigger_unit.side
variable=gold
[/store_gold]
[if]
[variable]
name=gold
greater_than_equal_to=10
[/variable]
[then]
[unit]
x={XX}
y={YY}
type=Goblin Spearman
description=ladder
side=$ladder_trigger_unit.side
[/unit]
[gold]
side=$ladder_trigger_unit.side
amount=-10
[/gold]
[/then]
[/if]
[/event]
#enddef
#define BATTERING_RAM_TURN_COUNTER
[event]
name=new turn
first_time_only=no
[if]
[have_unit]
x=8
y=12
type=Ancient Wose
description=Battering Ram
[/have_unit]
[then]
[set_variable]
name=brtc
add=1
[/set_variable]
[/then]
[/if]
[if]
[variable]
name=brtc
equals_to=2
[/variable]
[then]
{VARIABLE_SET gates 0}
[terrain]
x=8,9
y=11,12
letter=u
[/terrain]
[/then]
[/if]
[/event]
#enddef
#define OPEN_GATES X Y
[event]
name=moveto
first_time_only=no
[filter]
x={X}
y={Y}
[/filter]
[terrain]
x=8
y=11
letter=u
[/terrain]
[terrain]
x=9
y=12
letter=u
[/terrain]
[/event]
#enddef
#define CLOSE_GATES X Y
[event]
name=moveto
first_time_only=no
[filter]
x={X}
y={Y}
[/filter]
[if]
[variable]
name=gates
euqals=1
[/variable]
[then]
[terrain]
x=8
y=11
letter=W
[/terrain]
[terrain]
x=9
y=12
letter=W
[/terrain]
[/then]
[/if]
[/event]
#enddef
#################################################
{SIDE_SET 1}
{SIDE_SET 2}
{SIDE_SET 3}
[event]
name=prestart
{VARIABLE_SET gates 1}
{VARIABLE_SET brtc 1}
{START_OFFENSIVE_UNITS 8 19 2}
{START_OFFENSIVE_UNITS 14 21 3}
{WALL_GUARD 1 8}
{WALL_GUARD 3 9}
{WALL_GUARD 5 10}
{WALL_GUARD 7 11}
{WALL_GUARD 10 12}
{WALL_GUARD 12 13}
{WALL_GUARD 14 13}
{WALL_GUARD 16 12}
{WALL_GUARD 18 11}
{WALL_GUARD 20 10}
{WALL_GUARD 12 10}
{WALL_GUARD 14 10}
{WALL_GUARD 8 7}
{WALL_GUARD 9 9}
{WALL_GUARD 8 4}
{WALL_GUARD 9 3}
{WALL_GUARD 12 1}
{WALL_GUARD 14 1}
{WALL_GUARD 17 3}
{WALL_GUARD 18 4}
{WALL_GUARD 18 7}
{WALL_GUARD 17 9}
{UNIT_SET Swordsman 1 7 12}
{UNIT_SET Swordsman 1 9 13}
{UNIT_SET (Shock Trooper) 1 6 11}
{UNIT_SET (Shock Trooper) 1 10 13}
[/event]
{LABEL 11 9 ("Open gate")}
{LABEL 15 9 ("Close gate")}
{LABEL 5 25 ("Buy ladder")}
{LABEL 12 27 ("Buy ladder")}
{BUY_LADDER 5 25 8 19}
{BUY_LADDER 12 27 14 21}
{LADDER_PLACE 1 9}
{LADDER_PLACE 2 9}
{LADDER_PLACE 3 10}
{LADDER_PLACE 4 10}
{LADDER_PLACE 5 11}
{LADDER_PLACE 11 14}
{LADDER_PLACE 12 14}
{LADDER_PLACE 13 15}
{LADDER_PLACE 14 14}
{LADDER_PLACE 15 14}
{LADDER_PLACE 16 13}
{LADDER_PLACE 17 13}
{LADDER_PLACE 18 12}
{LADDER_PLACE 19 12}
{LADDER_PLACE 20 11}
{OPEN_GATES 11 9}
{CLOSE_GATES 15 9}
{BATTERING_RAM_TURN_COUNTER}
[/multiplayer]
Last edited by Tomsik on December 30th, 2005, 6:30 pm, edited 1 time in total.
Code: Select all
#define CLOSE_GATES X Y
[event]
name=moveto
first_time_only=no
[if]
[variable]
name=gates
euqals=1
[/variable]
[then]
[filter]
x={X}
y={Y}
[/filter]
...
Also, [terrain] in BATTERING_RAM_TURN_COUNTER should be closed:
Code: Select all
[if]
[variable]
name=brtc
equals_to=2
[/variable]
[then]
{VARIABLE_SET gates 0}
[terrain]
x=8,9
y=11,12
letter=u
[/then]
You mispelled equals in a [variable] tag near the bottom. Search for euqals.
Also, you should use numerical_equals=1 inside those.
Also, you should use numerical_equals=1 inside those.
Hope springs eternal.
Wesnoth acronym guide.
Wesnoth acronym guide.