Two easy to read complete opensource Noteskins called exact and easy.

Play around with them and ajust anything you want
There are made to test and increase the easy ness of reading simfiles with
certain notesins, In this case one for accuracy which is "exact"
and one for cluster simfiles which is "easy"

Easy is made to be easy to see with simfiles that are clustered
for example an simfile with an high bpm and a load of notes coming at the same
time, with an load of noteskins which have nice effects and its hard to read
these paterns.
so basicly you can read the file with clustered patterns which some people
including me have trouble with.

Exact is to test the accuracy, increasing your scores with Flawless, so people
get higher scores on easier files.
This commit is contained in:
Jousway
2012-04-12 20:19:44 +02:00
parent 700a8c7837
commit 5378b837ed
84 changed files with 898 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_Center", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_Center', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+19
View File
@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_Down", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

+4
View File
@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_DownLeft", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_downleft', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
+137
View File
@@ -0,0 +1,137 @@
--I am the bone of my noteskin
--Arrows are my body, and explosions are my blood
--I have created over a thousand noteskins
--Unknown to death
--Nor known to life
--Have withstood pain to create many noteskins
--Yet these hands will never hold anything
--So as I pray, Unlimited Stepman Works
local ret = ... or {};
--Defining on which direction the other directions should be bassed on
--This will let us use less files which is quite handy to keep the noteskin directory nice
--Do remember this will Redirect all the files of that Direction to the Direction its pointed to
--If you only want some files to be redirected take a look at the "custom hold/roll per direction"
ret.RedirTable =
{
--PIU
Center = "Center",
DownLeft = "DownLeft", -- for PIU and dance
DownRight = "DownLeft", -- for PIU and dance
UpLeft = "DownLeft",
UpRight = "DownLeft",
--Dance
Down = "Down",
Up = "Down",
Left = "Down",
Right = "Down",
};
-- <
--Between here we usally put all the commands the noteskin.lua needs to do, some are extern in other files
--If you need help with lua go to http://kki.ajworld.net/lua/ssc/Lua.xml there are a bunch of codes there
--Also check out commen it has a load of lua codes in files there
--Just play a bit with lua its not that hard if you understand coding
--But SM can be an ass in some cases, and some codes jut wont work if you dont have the noteskin on FallbackNoteSkin=common in the metric.ini
local OldRedir = ret.Redir;
ret.Redir = function(sButton, sElement)
sButton, sElement = OldRedir(sButton, sElement);
sButton = ret.RedirTable[sButton];
if not string.find(sElement, "Head") and
not string.find(sElement, "Explosion") then
if string.find(sElement, "Hold") or
string.find(sElement, "Roll") then
if Var "Button" == "Down" or Var "Button" == "Up" or Var "Button" == "Left" or Var "Button" == "Right" then
sButton = "Down";
else
sButton = "Center";
end
end
end
-- Instead of separate hold heads, use the tap note graphics.
if sElement == "Hold Head Inactive" or
sElement == "Hold Head Active" or
sElement == "Roll Head Inactive" or
sElement == "Roll Head Active" or
sElement == "Tap Fake"
then
sElement = "Tap Note";
end
if sElement == "Tap Explosion Dim" or
sElement == "Hold Explosion" or
sElement == "Roll Explosion"
then
sElement = "Tap Explosion Bright";
end
if sElement == "Tap Mine"
then
sButton = "Down";
end
return sButton, sElement;
end
local OldFunc = ret.Load;
function ret.Load()
local t = OldFunc();
--Explosion should not be rotated; it calls other actors.
if Var "Element" == "Explosion" then
t.BaseRotationZ = nil;
end
return t;
end
-- >
-- Parts of noteskins which we want to rotate
ret.PartsToRotate =
{
["Receptor"] = true,
["Tap Explosion Bright"] = true,
["Tap Explosion Dim"] = true,
["Tap Note"] = true,
["Tap Fake"] = true,
["Tap Addition"] = true,
["Hold Explosion"] = true,
["Hold Head Active"] = true,
["Hold Head Inactive"] = true,
["Roll Explosion"] = true,
["Roll Head Active"] = true,
["Roll Head Inactive"] = true,
};
-- Defined the parts to be rotated at which degree
ret.Rotate =
{
--PIU
Center = 0,
DownLeft = 0,
DownRight = -90,
UpLeft = 90,
UpRight = 180,
--Dance
Down = 0,
Up = 180,
Left = 90,
Right = -90,
};
-- Parts that should be Redirected to _Blank.png
-- you can add/remove stuff if you want
ret.Blank =
{
["HitMine Explosion"] = true,
["Hold Tail Active"] = true,
["Hold Tail Inactive"] = true,
["Roll Tail Active"] = true,
["Roll Tail Inactive"] = true,
};
-- dont forget to close the ret cuz else it wont work ;>
return ret;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+243
View File
@@ -0,0 +1,243 @@
#USW Metric Version V2
#Made for Version Stepmania 5 Preview 2
#I am the bone of my noteskin
#Arrows are my body, and explosions are my blood
#I have created over a thousand noteskins
#Unknown to death
#Nor known to life
#Have withstood pain to create many noteskins
#Yet these hands will never hold anything
#So as I pray, Unlimited Stepman Works
[Global]
#Noteskin this noteskin falls back on
#We normaly make this fallback on common
#Because its the global noteskin every default fallsback on to
FallbackNoteSkin=common
[NoteDisplay]
#Noteskin Animation Lengths
AnimationIsBeatBased=1
##Tap Parts
TapNoteAnimationLength=4
TapMineAnimationLength=4
TapLiftAnimationLength=4
TapFakeAnimationLength=4
##Hold Parts
HoldHeadAnimationLength=4
HoldTopCapAnimationLength=4
HoldBottomCapAnimationLength=4
HoldBodyAnimationLength=4
HoldTailAnimationLength=4
##Roll Parts
RollHeadAnimationLength=4
RollTopCapAnimationLength=4
RollBottomCapAnimationLength=4
RollBodyAnimationLength=4
RollTailAnimationLength=4
#Define if noteskin is Vivid or not
#Value 1 = true, Value 0 = false
##Tap Parts
TapNoteAnimationIsVivid=0
TapMineAnimationIsVivid=0
TapFakeAnimationIsVivid=0
TapLiftAnimationIsVivid=0
##Hold Parts
HoldHeadAnimationIsVivid=0
HoldTopCapAnimationIsVivid=0
HoldBodyAnimationIsVivid=0
HoldBottomCapAnimationIsVivid=0
HoldTailAnimationIsVivid=0
##Roll Parts
RollHeadAnimationIsVivid=0
RollTopCapAnimationIsVivid=0
RollBodyAnimationIsVivid=0
RollBottomCapAnimationIsVivid=0
RollTailAnimationIsVivid=0
#Texture Coord Offest Info
#This is the TextureCoordOffset which we use for Rhythm colored noteskins
#If you dont want to use it, just keep the value 0
#Rhythm colored noteskins are noteskins that have different colors for every
#4th, 8th, 12th, 16th and so on
#To use this you need to use simple math because it isnt based on the size of
#the image but its based on the total value of the size which is 1
#So if you got 9 frames (including 192nd)
#You need to run this simple math
# 1 / 9 = 0.11111111111111111111111111 (and so on)
#Because using the entire value is to long, lets make it smaler to 6 digits
#You can make it longer if you want but lets keep it nice to 6 digits
##Tap Parts
TapNoteAdditionTextureCoordOffsetX=0.5
TapNoteAdditionTextureCoordOffsetY=0.125
TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0.125
TapMineAdditionTextureCoordOffsetX=0
TapMineAdditionTextureCoordOffsetY=0
TapMineNoteColorTextureCoordSpacingX=0
TapMineNoteColorTextureCoordSpacingY=0
TapLiftAdditionTextureCoordOffsetX=0
TapLiftAdditionTextureCoordOffsetY=0
TapLiftNoteColorTextureCoordSpacingX=0
TapLiftNoteColorTextureCoordSpacingY=0
TapFakeAdditionTextureCoordOffsetX=0.5
TapFakeAdditionTextureCoordOffsetY=0.1
TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0.125
##Hold Parts
HoldHeadAdditionTextureCoordOffsetX=0.5
HoldHeadAdditionTextureCoordOffsetY=0.125
HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0.125
HoldTopCapAdditionTextureCoordOffsetX=0
HoldTopCapAdditionTextureCoordOffsetY=0
HoldTopCapNoteColorTextureCoordSpacingX=0
HoldTopCapNoteColorTextureCoordSpacingY=0
HoldBodyAdditionTextureCoordOffsetX=0
HoldBodyAdditionTextureCoordOffsetY=0
HoldBodyNoteColorTextureCoordSpacingX=0
HoldBodyNoteColorTextureCoordSpacingY=0
HoldBottomCapAdditionTextureCoordOffsetX=0
HoldBottomCapAdditionTextureCoordOffsetY=0
HoldBottomCapNoteColorTextureCoordSpacingX=0
HoldBottomCapNoteColorTextureCoordSpacingY=0
HoldTailAdditionTextureCoordOffsetX=0
HoldTailAdditionTextureCoordOffsetY=0
HoldTailNoteColorTextureCoordSpacingX=0
HoldTailNoteColorTextureCoordSpacingY=0
##Roll Parts
RollHeadAdditionTextureCoordOffsetX=0
RollHeadAdditionTextureCoordOffsetY=0
RollHeadNoteColorTextureCoordSpacingX=0
RollHeadNoteColorTextureCoordSpacingY=0
RollTopCapAdditionTextureCoordOffsetX=0
RollTopCapAdditionTextureCoordOffsetY=0
RollTopCapNoteColorTextureCoordSpacingX=0
RollTopCapNoteColorTextureCoordSpacingY=0
RollBodyAdditionTextureCoordOffsetX=0
RollBodyAdditionTextureCoordOffsetY=0
RollBodyNoteColorTextureCoordSpacingX=0
RollBodyNoteColorTextureCoordSpacingY=0
RollBottomCapAdditionTextureCoordOffsetX=0
RollBottomCapAdditionTextureCoordOffsetY=0
RollBottomCapNoteColorTextureCoordSpacingX=0
RollBottomCapNoteColorTextureCoordSpacingY=0
RollTailAdditionTextureCoordOffsetX=0
RollTailAdditionTextureCoordOffsetY=0
RollTailNoteColorTextureCoordSpacingX=0
RollTailNoteColorTextureCoordSpacingY=0
#Other Stuff
DrawHoldHeadForTapsOnSameRow=1
DrawRollHeadForTapsOnSameRow=1
TapHoldRollOnRowMeansHold=1
StartDrawingHoldBodyOffsetFromHead=0
StopDrawingHoldBodyOffsetFromTail=0
HoldLetGoGrayPercent=1
UseLighting=0
ReverseDrawOrder=1101
HoldHeadIsAboveWavyParts=1
HoldTailIsAboveWavyParts=1
HoldActiveIsAddLayer=0
#Edit this incase you want to make noteskin for reverse or both
FlipHoldBodyWhenReverse=1
FlipHeadAndTailWhenReverse=1
TopHoldAnchorWhenReverse=1
#Diffuse Info v2
#Diffuse uses a color code to define the diffuse
#You can use diffusealpha to make noteskins disapear with value = 0 or reapear with value = 1
#The way it works is pretty easy
#It is based on the Red,Blue,Green,Alpha value that you get with color
#But instead of 255,255,255,255 it uses 1,1,1,1
#So if you want to use a RBG value from an image like for example Taupe
#Which has a value of 72,60,50 , What we just do is / 254 on every value
#And we also add a Alpha (for transparent) value between 0.1 and 1
#So We get 0.283464,0.236220,0.196850,0.6
#You can go over the 6 digits after the . (which I don't do because I like to keep it clean and not to big)
#diffuse,1,1,1,1 is the basic code
#Change them to which value you want
#add ; at the end of your command incase you add more commands
[GhostArrowDim]
NoneCommand=
HitMineCommand=visible,false
AvoidMineCommand=
MissCommand=
#Boo explosion
W5Command=diffuse,0.8,0.0,0.6,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Good explosion
W4Command=diffuse,0.3,0.8,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Great explosion
W3Command=diffuse,0.0,1.0,0.4,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Perfect explosion
W2Command=diffuse,1.0,1.0,0.3,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Marvelous explosion
W1Command=diffuse,1.0,1.0,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Hold end commands
LetGoCommand=
HeldCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
[GhostArrowBright]
NoneCommand=
HitMineCommand=visible,false
AvoidMineCommand=
MissCommand=
#Boo explosion
W5Command=diffuse,0.8,0.0,0.6,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Good explosion
W4Command=diffuse,0.3,0.8,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Great explosion
W3Command=diffuse,0.0,1.0,0.4,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Perfect explosion
W2Command=diffuse,1.0,1.0,0.3,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Marvelous explosion
W1Command=diffuse,1.0,1.0,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Hold end commands
LetGoCommand=
HeldCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
[ReceptorArrow]
#For InitCommand take a look at "Down Receptor.lua"
#InitCommand=
NoneCommand=stoptweening;zoom,0.75;linear,0.11;zoom,1
PressCommand=
LiftCommand=
AvoidMineCommand=
#The way the receptor responds when you hit an arrow on specified judgment
#Boo command
W5Command=stoptweening
#Good command
W4Command=stoptweening
#Great command
W3Command=stoptweening
#Perfect command
W2Command=stoptweening
#Marvelous command
W1Command=stoptweening
[HoldGhostArrow]
#The way the hold arrow reacts
HoldingOnCommand=visible,true
HoldingOffCommand=visible,false
RollOnCommand=visible,true
RollOffCommand=visible,false
[Press]
ReverseOnCommand=vertalign,bottom
ReverseOffCommand=vertalign,top
PressCommand=visible,true
LiftCommand=visible,false
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_Center", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_Center', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+19
View File
@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_Down", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
@@ -0,0 +1,19 @@
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
local t = Def.ActorFrame {
Def.Sprite {
Texture=NOTESKIN:GetPath("_DownLeft", "Go Receptor" );
InitCommand=cmd(effectclock,"beat");
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
};
};
return t;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,4 @@
return Def.Sprite {
Texture=NOTESKIN:GetPath( '_downleft', 'tap note' );
Frames = Sprite.LinearFrames( 1, 1 );
};
+137
View File
@@ -0,0 +1,137 @@
--I am the bone of my noteskin
--Arrows are my body, and explosions are my blood
--I have created over a thousand noteskins
--Unknown to death
--Nor known to life
--Have withstood pain to create many noteskins
--Yet these hands will never hold anything
--So as I pray, Unlimited Stepman Works
local ret = ... or {};
--Defining on which direction the other directions should be bassed on
--This will let us use less files which is quite handy to keep the noteskin directory nice
--Do remember this will Redirect all the files of that Direction to the Direction its pointed to
--If you only want some files to be redirected take a look at the "custom hold/roll per direction"
ret.RedirTable =
{
--PIU
Center = "Center",
DownLeft = "DownLeft", -- for PIU and dance
DownRight = "DownLeft", -- for PIU and dance
UpLeft = "DownLeft",
UpRight = "DownLeft",
--Dance
Down = "Down",
Up = "Down",
Left = "Down",
Right = "Down",
};
-- <
--Between here we usally put all the commands the noteskin.lua needs to do, some are extern in other files
--If you need help with lua go to http://kki.ajworld.net/lua/ssc/Lua.xml there are a bunch of codes there
--Also check out commen it has a load of lua codes in files there
--Just play a bit with lua its not that hard if you understand coding
--But SM can be an ass in some cases, and some codes jut wont work if you dont have the noteskin on FallbackNoteSkin=common in the metric.ini
local OldRedir = ret.Redir;
ret.Redir = function(sButton, sElement)
sButton, sElement = OldRedir(sButton, sElement);
sButton = ret.RedirTable[sButton];
if not string.find(sElement, "Head") and
not string.find(sElement, "Explosion") then
if string.find(sElement, "Hold") or
string.find(sElement, "Roll") then
if Var "Button" == "Down" or Var "Button" == "Up" or Var "Button" == "Left" or Var "Button" == "Right" then
sButton = "Down";
else
sButton = "Center";
end
end
end
-- Instead of separate hold heads, use the tap note graphics.
if sElement == "Hold Head Inactive" or
sElement == "Hold Head Active" or
sElement == "Roll Head Inactive" or
sElement == "Roll Head Active" or
sElement == "Tap Fake"
then
sElement = "Tap Note";
end
if sElement == "Tap Explosion Dim" or
sElement == "Hold Explosion" or
sElement == "Roll Explosion"
then
sElement = "Tap Explosion Bright";
end
if sElement == "Tap Mine"
then
sButton = "Down";
end
return sButton, sElement;
end
local OldFunc = ret.Load;
function ret.Load()
local t = OldFunc();
--Explosion should not be rotated; it calls other actors.
if Var "Element" == "Explosion" then
t.BaseRotationZ = nil;
end
return t;
end
-- >
-- Parts of noteskins which we want to rotate
ret.PartsToRotate =
{
["Receptor"] = true,
["Tap Explosion Bright"] = true,
["Tap Explosion Dim"] = true,
["Tap Note"] = true,
["Tap Fake"] = true,
["Tap Addition"] = true,
["Hold Explosion"] = true,
["Hold Head Active"] = true,
["Hold Head Inactive"] = true,
["Roll Explosion"] = true,
["Roll Head Active"] = true,
["Roll Head Inactive"] = true,
};
-- Defined the parts to be rotated at which degree
ret.Rotate =
{
--PIU
Center = 0,
DownLeft = 0,
DownRight = -90,
UpLeft = 90,
UpRight = 180,
--Dance
Down = 0,
Up = 180,
Left = 90,
Right = -90,
};
-- Parts that should be Redirected to _Blank.png
-- you can add/remove stuff if you want
ret.Blank =
{
["HitMine Explosion"] = true,
["Hold Tail Active"] = true,
["Hold Tail Inactive"] = true,
["Roll Tail Active"] = true,
["Roll Tail Inactive"] = true,
};
-- dont forget to close the ret cuz else it wont work ;>
return ret;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+243
View File
@@ -0,0 +1,243 @@
#USW Metric Version V2
#Made for Version Stepmania 5 Preview 2
#I am the bone of my noteskin
#Arrows are my body, and explosions are my blood
#I have created over a thousand noteskins
#Unknown to death
#Nor known to life
#Have withstood pain to create many noteskins
#Yet these hands will never hold anything
#So as I pray, Unlimited Stepman Works
[Global]
#Noteskin this noteskin falls back on
#We normaly make this fallback on common
#Because its the global noteskin every default fallsback on to
FallbackNoteSkin=common
[NoteDisplay]
#Noteskin Animation Lengths
AnimationIsBeatBased=1
##Tap Parts
TapNoteAnimationLength=4
TapMineAnimationLength=4
TapLiftAnimationLength=4
TapFakeAnimationLength=4
##Hold Parts
HoldHeadAnimationLength=4
HoldTopCapAnimationLength=4
HoldBottomCapAnimationLength=4
HoldBodyAnimationLength=4
HoldTailAnimationLength=4
##Roll Parts
RollHeadAnimationLength=4
RollTopCapAnimationLength=4
RollBottomCapAnimationLength=4
RollBodyAnimationLength=4
RollTailAnimationLength=4
#Define if noteskin is Vivid or not
#Value 1 = true, Value 0 = false
##Tap Parts
TapNoteAnimationIsVivid=0
TapMineAnimationIsVivid=0
TapFakeAnimationIsVivid=0
TapLiftAnimationIsVivid=0
##Hold Parts
HoldHeadAnimationIsVivid=0
HoldTopCapAnimationIsVivid=0
HoldBodyAnimationIsVivid=0
HoldBottomCapAnimationIsVivid=0
HoldTailAnimationIsVivid=0
##Roll Parts
RollHeadAnimationIsVivid=0
RollTopCapAnimationIsVivid=0
RollBodyAnimationIsVivid=0
RollBottomCapAnimationIsVivid=0
RollTailAnimationIsVivid=0
#Texture Coord Offest Info
#This is the TextureCoordOffset which we use for Rhythm colored noteskins
#If you dont want to use it, just keep the value 0
#Rhythm colored noteskins are noteskins that have different colors for every
#4th, 8th, 12th, 16th and so on
#To use this you need to use simple math because it isnt based on the size of
#the image but its based on the total value of the size which is 1
#So if you got 9 frames (including 192nd)
#You need to run this simple math
# 1 / 9 = 0.11111111111111111111111111 (and so on)
#Because using the entire value is to long, lets make it smaler to 6 digits
#You can make it longer if you want but lets keep it nice to 6 digits
##Tap Parts
TapNoteAdditionTextureCoordOffsetX=0.5
TapNoteAdditionTextureCoordOffsetY=0.125
TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0.125
TapMineAdditionTextureCoordOffsetX=0
TapMineAdditionTextureCoordOffsetY=0
TapMineNoteColorTextureCoordSpacingX=0
TapMineNoteColorTextureCoordSpacingY=0
TapLiftAdditionTextureCoordOffsetX=0
TapLiftAdditionTextureCoordOffsetY=0
TapLiftNoteColorTextureCoordSpacingX=0
TapLiftNoteColorTextureCoordSpacingY=0
TapFakeAdditionTextureCoordOffsetX=0.5
TapFakeAdditionTextureCoordOffsetY=0.1
TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0.125
##Hold Parts
HoldHeadAdditionTextureCoordOffsetX=0.5
HoldHeadAdditionTextureCoordOffsetY=0.125
HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0.125
HoldTopCapAdditionTextureCoordOffsetX=0
HoldTopCapAdditionTextureCoordOffsetY=0
HoldTopCapNoteColorTextureCoordSpacingX=0
HoldTopCapNoteColorTextureCoordSpacingY=0
HoldBodyAdditionTextureCoordOffsetX=0
HoldBodyAdditionTextureCoordOffsetY=0
HoldBodyNoteColorTextureCoordSpacingX=0
HoldBodyNoteColorTextureCoordSpacingY=0
HoldBottomCapAdditionTextureCoordOffsetX=0
HoldBottomCapAdditionTextureCoordOffsetY=0
HoldBottomCapNoteColorTextureCoordSpacingX=0
HoldBottomCapNoteColorTextureCoordSpacingY=0
HoldTailAdditionTextureCoordOffsetX=0
HoldTailAdditionTextureCoordOffsetY=0
HoldTailNoteColorTextureCoordSpacingX=0
HoldTailNoteColorTextureCoordSpacingY=0
##Roll Parts
RollHeadAdditionTextureCoordOffsetX=0
RollHeadAdditionTextureCoordOffsetY=0
RollHeadNoteColorTextureCoordSpacingX=0
RollHeadNoteColorTextureCoordSpacingY=0
RollTopCapAdditionTextureCoordOffsetX=0
RollTopCapAdditionTextureCoordOffsetY=0
RollTopCapNoteColorTextureCoordSpacingX=0
RollTopCapNoteColorTextureCoordSpacingY=0
RollBodyAdditionTextureCoordOffsetX=0
RollBodyAdditionTextureCoordOffsetY=0
RollBodyNoteColorTextureCoordSpacingX=0
RollBodyNoteColorTextureCoordSpacingY=0
RollBottomCapAdditionTextureCoordOffsetX=0
RollBottomCapAdditionTextureCoordOffsetY=0
RollBottomCapNoteColorTextureCoordSpacingX=0
RollBottomCapNoteColorTextureCoordSpacingY=0
RollTailAdditionTextureCoordOffsetX=0
RollTailAdditionTextureCoordOffsetY=0
RollTailNoteColorTextureCoordSpacingX=0
RollTailNoteColorTextureCoordSpacingY=0
#Other Stuff
DrawHoldHeadForTapsOnSameRow=1
DrawRollHeadForTapsOnSameRow=1
TapHoldRollOnRowMeansHold=1
StartDrawingHoldBodyOffsetFromHead=0
StopDrawingHoldBodyOffsetFromTail=0
HoldLetGoGrayPercent=1
UseLighting=0
ReverseDrawOrder=1101
HoldHeadIsAboveWavyParts=1
HoldTailIsAboveWavyParts=1
HoldActiveIsAddLayer=0
#Edit this incase you want to make noteskin for reverse or both
FlipHoldBodyWhenReverse=1
FlipHeadAndTailWhenReverse=1
TopHoldAnchorWhenReverse=1
#Diffuse Info v2
#Diffuse uses a color code to define the diffuse
#You can use diffusealpha to make noteskins disapear with value = 0 or reapear with value = 1
#The way it works is pretty easy
#It is based on the Red,Blue,Green,Alpha value that you get with color
#But instead of 255,255,255,255 it uses 1,1,1,1
#So if you want to use a RBG value from an image like for example Taupe
#Which has a value of 72,60,50 , What we just do is / 254 on every value
#And we also add a Alpha (for transparent) value between 0.1 and 1
#So We get 0.283464,0.236220,0.196850,0.6
#You can go over the 6 digits after the . (which I don't do because I like to keep it clean and not to big)
#diffuse,1,1,1,1 is the basic code
#Change them to which value you want
#add ; at the end of your command incase you add more commands
[GhostArrowDim]
NoneCommand=
HitMineCommand=visible,false
AvoidMineCommand=
MissCommand=
#Boo explosion
W5Command=diffuse,0.8,0.0,0.6,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Good explosion
W4Command=diffuse,0.3,0.8,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Great explosion
W3Command=diffuse,0.0,1.0,0.4,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Perfect explosion
W2Command=diffuse,1.0,1.0,0.3,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Marvelous explosion
W1Command=diffuse,1.0,1.0,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Hold end commands
LetGoCommand=
HeldCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
[GhostArrowBright]
NoneCommand=
HitMineCommand=visible,false
AvoidMineCommand=
MissCommand=
#Boo explosion
W5Command=diffuse,0.8,0.0,0.6,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Good explosion
W4Command=diffuse,0.3,0.8,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Great explosion
W3Command=diffuse,0.0,1.0,0.4,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Perfect explosion
W2Command=diffuse,1.0,1.0,0.3,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Marvelous explosion
W1Command=diffuse,1.0,1.0,1.0,1;zoom,1;diffusealpha,.9;linear,0.1;zoom,2;diffusealpha,.3;linear,0.06;diffusealpha,0
#Hold end commands
LetGoCommand=
HeldCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
[ReceptorArrow]
#For InitCommand take a look at "Down Receptor.lua"
#InitCommand=
NoneCommand=stoptweening;zoom,0.75;linear,0.11;zoom,1
PressCommand=
LiftCommand=
AvoidMineCommand=
#The way the receptor responds when you hit an arrow on specified judgment
#Boo command
W5Command=stoptweening
#Good command
W4Command=stoptweening
#Great command
W3Command=stoptweening
#Perfect command
W2Command=stoptweening
#Marvelous command
W1Command=stoptweening
[HoldGhostArrow]
#The way the hold arrow reacts
HoldingOnCommand=visible,true
HoldingOffCommand=visible,false
RollOnCommand=visible,true
RollOffCommand=visible,false
[Press]
ReverseOnCommand=vertalign,bottom
ReverseOffCommand=vertalign,top
PressCommand=visible,true
LiftCommand=visible,false