 | Stepmania Theme Language Template Thread |  |
09-09-2007, 02:17 AM
|
#1 | | I am awesome in all ways.
Midiman is offline
Join Date: Jun 2007 Posts: 142
Marketplace Rating: 0 | Stepmania Theme Language Template Thread Purpose of this topic: - Eliminate " how do I do X " questions
- Provide a neat reference when you want to do something quickly in theming, but fail to know the language and terms involved
- Provide myself a good way to contribute to the theming community
notice that these templates are full. please remove all the terms and fields you do NOT need
( thank you AJ for all the SM4 Knowledge <333 ) Stepmania 3.9 BGAnimations: Code: [BGAnimation]
LengthSeconds=0.30
[Layer*]
Condition= // refer to freizia's huge conditional list
Import= // Use this to refer to another ini
File=
Type=
Text= // if using text, File becomes /Fonts/*
OnCommand=
Command= // Equivalent to OnCommand.
OffCommand=
CommandRepeatSeconds= // Sets command to repeat after x.y seconds. Actors: Code: [Actor]
Text=*
File= // Looks for /Fonts/*
Models:
you can just point File= to *.txt or use this a .model containing this:
Code: [Model]
Meshes=
Materials=
Bones= Stepmania 3.95 BGAnimations: 3.9 INI's can be used in legacy for this. but replace all instances of Type=* with Type=Bitmap/Layer/AutoActor, or leave it blank. XML: Regular Layers Code: <Layer // this replaces Type=
Name= // GIVE IT A NAME, JOHN
InitCommand= // start before any other command, useful for diffusealpha and zoom.
*Command= // same as 3.9
OnCommand= // again
OffCommand= // again
Condition= // kind of different than 3.9's Conditional System.
/> Text And Quads Code: <BitmapText
Text= // same as 3.9
Font= // same as file
InitCommand= // you get the idea from this point
OnCommand=
OffCommand=
/> Code: <Quad
InitCommand= // you'd want to put zoomtowidth and zoomtoheight here, to make the quad ( rectangular texture ) do things
OnCommand=
OffCommand=
/> Models: mostly the same as 3.9: Code: <Layer
File=*.txt
/> Making Multiple Layers Code: <ActorFrame Command= Condition=> // this makes a " Box " that we carry the other layers in. this can use actions
<Children Command= Condition=> // this makes another " Box " that holds a select section of layers. this can use actions
<Anything related to layers goes here>
</Children> // Always close your tags, or else 3.95 will claim the XML invalid, which it is.
</ActorFrame> Actors Code: [Actor]
Text= // text
File= // font in question Stepmania 4.0 CVS ah yeah baby , here we go, current shit: BGAnimations: local t = Def.ActorFrame{
LoadActor( "File" ) .. {
InitCommand=cmd(actions;);
};
};
return t; Text ( Thanks AJ! ) Code: LoadFont("Fontname")..{
Text="Set text here, or alternately do it in a function if needed"
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_ Y;diffusealpha,0);
OnCommand=cmd(linear,0.5;diffusealpha,1;sleep,0.5; playcommand,"ChangeText");
ChangeTextCommand=function(self)
self:settext("here's how you can change text programatically!");
end
} Quads Code: local t = Def.Quad{
InitCommand=cmd(actions;);
};
}; That's really all there is to it in 4.0 CVS, but to really get a use for the whole language, you must refer to the LUA action and command dump: http://stepmania.sourceforge.net/Lua.xml
__________________ - AJ 187, Tweak, Midiman - Making your themes suck completely less since 2004, 2006, and 2007 respectively. [/color][/color][/size] Quote:
Originally Posted by hydrar are you a woman, because that would explain all the yelling. how come everytime i read your posts your typing in big letters | [/center]
[/center]
Last edited by Midiman : 09-09-2007 at 10:45 PM.
| |
| |  |
09-09-2007, 07:46 AM
|
#2 | | I am awesome in all ways.
Midiman is offline
Join Date: Jun 2007 Posts: 142
Marketplace Rating: 0 | So far, I have 3.9 and 3.95 basics.
if anyone feels this is useful, please comment! thank you
__________________ - AJ 187, Tweak, Midiman - Making your themes suck completely less since 2004, 2006, and 2007 respectively. [/color][/color][/size] Quote:
Originally Posted by hydrar are you a woman, because that would explain all the yelling. how come everytime i read your posts your typing in big letters | [/center]
[/center]
| |
| |
09-09-2007, 11:37 AM
|
#3 | | superman brothers
AJ 187 is offline
Join Date: Jun 2006 Location: Chicago Posts: 788
Marketplace Rating: 0 | BitmapText in SM4 since you forgot it:
LoadFont("Fontname")..{
Text="Set text here, or alternately do it in a function if needed"
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_ Y;diffusealpha,0);
OnCommand=cmd(linear,0.5;diffusealpha,1;sleep,0.5; playcommand,"ChangeText");
ChangeTextCommand=function(self)
self:settext("here's how you can change text programatically!");
end
} | |
| |
09-09-2007, 02:10 PM
|
#4 | | I am awesome in all ways.
Midiman is offline
Join Date: Jun 2007 Posts: 142
Marketplace Rating: 0 | added in.
__________________ - AJ 187, Tweak, Midiman - Making your themes suck completely less since 2004, 2006, and 2007 respectively. [/color][/color][/size] Quote:
Originally Posted by hydrar are you a woman, because that would explain all the yelling. how come everytime i read your posts your typing in big letters | [/center]
[/center]
| |
| |
09-09-2007, 10:32 PM
|
#5 | | STANLEY FUBAR
dieKatze88 is offline
Join Date: Jan 2005 Location: New Jersey Posts: 2,597
Marketplace Rating: 4 | 3.9:
CommandRepeatSeconds=x.y
Makes Command= loop after a set number of seconds.
__________________
Excel has no secret mod powers.
| |
| |
09-09-2007, 10:44 PM
|
#6 | | I am awesome in all ways.
Midiman is offline
Join Date: Jun 2007 Posts: 142
Marketplace Rating: 0 | Quote:
Originally Posted by dieKatze88 3.9:
CommandRepeatSeconds=x.y
Makes Command= loop after a set number of seconds. | Forgot to add this
thanks!`
__________________ - AJ 187, Tweak, Midiman - Making your themes suck completely less since 2004, 2006, and 2007 respectively. [/color][/color][/size] Quote:
Originally Posted by hydrar are you a woman, because that would explain all the yelling. how come everytime i read your posts your typing in big letters | [/center]
[/center]
| |
| |
09-11-2007, 09:09 PM
|
#7 | | STANLEY FUBAR
dieKatze88 is offline
Join Date: Jan 2005 Location: New Jersey Posts: 2,597
Marketplace Rating: 4 | Types on 3.9
0 = Normal
1 = Stretch to Screen (Only works in BGs)
2 = Tile?
3 = ???? (Profit?)
__________________
Excel has no secret mod powers.
| |
| |
09-11-2007, 10:08 PM
|
#8 | | superman brothers
AJ 187 is offline
Join Date: Jun 2006 Location: Chicago Posts: 788
Marketplace Rating: 0 | 3 is particles | |
| |  | |  |
09-12-2007, 12:57 PM
|
#9 | | g//ay for k//eternal
Wan is offline
Join Date: Jun 2006 Location: Santiago, Chile Posts: 886
Marketplace Rating: 0 | (can this thread be used for questions? If yes, that's fine. Otherwise, please move this post where appropriate)
I have a confusion with the XML thing. Let's see:
In the ITG2 AC theme, there's the following overlay for ScreenAttract, that displays the "INSERT COIN" text when there aren't credits inserted, "PRESS START" when inserted, "FREE PLAY" when it's set up, etc. Code: <ActorFrame><children>
<BitmapText
Font="_eurostile outline"
Text="???"
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_BOTTOM-86;shadowlength,2;zoom,1;PlayCommand,Refresh"
CoinModeChangedMessageCommand="PlayCommand,Refresh"
RefreshCommand="%
function(self)
if GAMESTATE:GetCoinMode()==COIN_MODE_HOME then self:settext(''); return end
local coins=GAMESTATE:GetCoins()
local coinsPerCredit=PREFSMAN:GetPreference('CoinsPerCredit')
if coins>=coinsPerCredit or GAMESTATE:GetCoinMode()==COIN_MODE_FREE then
self:playcommand('PressStart')
else
self:playcommand('InsertCoin')
end
end"
InsertCoinCommand="settext,INSERT COIN;diffuseshift;EffectColor1,1,1,1,0;EffectColor2,1,1,1,1;EffectPeriod,2;EffectOffset,1;effectdelay,1"
PressStartCommand="%
function(self)
self:settext('PRESS &START;')
self:diffuseblink()
self:effectcolor1(1,1,1,0)
self:effectcolor2(1,1,1,1)
self:effectperiod((GAMESTATE:GetCoinMode() == COIN_MODE_FREE) and 1.0 or 0.3)
end"
/>
<BitmapText
Font="_eurostile outline"
Text="???"
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_BOTTOM-56;shadowlength,2;zoom,0.8;diffuse,0.7,0.7,0.7,1;diffusebottomedge,#DFB629D0;PlayCommand,Refresh"
RefreshCommand="%
function(self)
if GAMESTATE:IsEventMode() then self:settext('EVENT MODE') return end
if GAMESTATE:GetCoinMode()==COIN_MODE_FREE then self:settext('FREE PLAY') return end
if GAMESTATE:GetCoinMode()==COIN_MODE_HOME then self:settext('') return end
local coins=GAMESTATE:GetCoins()
local coinsPerCredit=PREFSMAN:GetPreference('CoinsPerCredit')
local credits=math.floor(coins/coinsPerCredit)
local remainder=math.mod(coins,coinsPerCredit)
local s='CREDIT(S) '
if credits>0 then s=s..credits..' ' end
s=s..remainder..'/'..coinsPerCredit
self:settext(s)
end"
CoinInsertedMessageCommand="PlayCommand,Refresh"
CoinModeChangedMessageCommand="PlayCommand,Refresh"
/>
</children></ActorFrame> What I want to do is to display images instead of BitmapText (obviously keeping the conditions), and I don't know what to change @@ | |
| |  |
09-10-2008, 10:31 PM
|
#10 | | g//ay for k//eternal
Wan is offline
Join Date: Jun 2006 Location: Santiago, Chile Posts: 886
Marketplace Rating: 0 | I'm sorry to bump a thread THIS old, but I'm having (again) questions...
I want to convert a .ini BGAnimation to .xml, and I don't know how to convert this:
[Layer3]
File=ScreenSelectMusic stage 2.png
Type=3 // 0=sprite, 1=stretch, 2=particles, 3=tiles
TileVelocityX=50
TilesStartY=240
...etc
I still don't get how to specify that a layer is a tile, a stretch, etc
Last edited by Wan : 09-10-2008 at 10:48 PM.
| |
| |
09-10-2008, 11:46 PM
|
#11 | | superman brothers
AJ 187 is offline
Join Date: Jun 2006 Location: Chicago Posts: 788
Marketplace Rating: 0 | Tiles and the other types don't exist in later SM versions so you have to work around it. Code: InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT);
OnCommand=cmd(texcoordvelocity,0,-1;customtexturerect,0,0,5,5;diffuse,0.8,0.8,0.8,1); code's for 4, but the main things to keep in mind:
1) texcoordvelocity and customtexturerect are the key elements to replicating tiles. play with them to find something that works.
2) stretch to screen width and height to cover the entire screen (you may also need more)
3) textures for tiling MUST either be a power of two in both dimensions or must have the stretch texture hint, i.e. _tile (stretch).png | |
| |
09-11-2008, 12:19 AM
|
#12 | | SHARK SHARK SHARK
sharksoda is offline
Join Date: Oct 2006 Location: Seattle, WA Posts: 352
Marketplace Rating: 0 | Quote:
Originally Posted by AJ 187 3) textures for tiling MUST either be a power of two in any directions you are going to be moving in or must have the stretch texture hint, i.e. _tile (stretch).png | it will tile on x fine even if the y value is non power of 2, and vice versa. | |
| |
09-11-2008, 10:45 PM
|
#13 | | g//ay for k//eternal
Wan is offline
Join Date: Jun 2006 Location: Santiago, Chile Posts: 886
Marketplace Rating: 0 | Quote:
Originally Posted by shakesoda it will tile on x fine even if the y value is non power of 2, and vice versa. | i.e. a 640x480 texture would work fine? | |
| |
09-11-2008, 11:16 PM
|
#14 | | superman brothers
AJ 187 is offline
Join Date: Jun 2006 Location: Chicago Posts: 788
Marketplace Rating: 0 | neither is a power of two so no | |
| |
Posting Rules
| You may not post new threads You may not post replies You may not post attachments You may not edit your posts HTML code is Off | | | | All times are GMT -6. The time now is 12:54 PM. | | |