So here's my first RainMeter module that I've ever made. I'm a StarCraft II fanatic so I made this to display your 1v1 division badge, and on mouse-over it displays division name/division rank/games won. It pulls the information from your battle.net profile page.
Overall I'm pretty happy with the concept, but I feel like the code is crap. I use a Lua script where it's probably not necessary. But then again I just adore Lua.
It is currently September 14th, 2024, 7:49 am
My first RainMeter module [StarCraft II Badge]
-
- Posts: 12
- Joined: January 26th, 2012, 11:50 pm
- Location: Canada
My first RainMeter module [StarCraft II Badge]
I don't suffer from insanity, I enjoy it.
-
- Posts: 1178
- Joined: January 22nd, 2011, 4:23 pm
- Location: GMT +8
Re: My first RainMeter module [StarCraft II Badge]
Nice job that I'm sure will attract the interest of Starcraft aficionados.
I jumped through similar hoops making a skin for a friend but used http://sc2ranks.com/sea/#IDNumber#/#CharacterName# for the URL rather than Battle.net because that is more applicable over here. You haven't shared your code, but would I be right in guessing you had to use LUA script to apply ImageCrop to your equivalent of http://sc2ranks.com/images/leagues/platinum.png? LUA certainly seemed the easiest way to do it in my case.
I jumped through similar hoops making a skin for a friend but used http://sc2ranks.com/sea/#IDNumber#/#CharacterName# for the URL rather than Battle.net because that is more applicable over here. You haven't shared your code, but would I be right in guessing you had to use LUA script to apply ImageCrop to your equivalent of http://sc2ranks.com/images/leagues/platinum.png? LUA certainly seemed the easiest way to do it in my case.
-
- Posts: 12
- Joined: January 26th, 2012, 11:50 pm
- Location: Canada
Re: My first RainMeter module [StarCraft II Badge]
Nope, I actually cut out all the images in Photoshop and just have them in a folder.
Actually what the lua is for is because the webparser returns proper "Win" values for bronze through diamond divisions, but for master/grandmaster it was picking up wierd values. I wasn't able to find a logical reason for it, so what I did was sort of... trim the string it was returning via Lua.
I'm sure i'll be laughed at by more savvy coders, but I didn't know how to fix this within Rainmeter itself, plus as I said I love Lua script, so this was my work-around for now.
Actually what the lua is for is because the webparser returns proper "Win" values for bronze through diamond divisions, but for master/grandmaster it was picking up wierd values. I wasn't able to find a logical reason for it, so what I did was sort of... trim the string it was returning via Lua.
I'm sure i'll be laughed at by more savvy coders, but I didn't know how to fix this within Rainmeter itself, plus as I said I love Lua script, so this was my work-around for now.
Code: Select all
Update = function()
local Badge = SKIN:GetMeasure("MeasureBadge"):GetStringValue()
local Wins = SKIN:GetMeasure("MeasureWinsLua"):GetStringValue()
if Badge:find("master") then -- Find Master/Grandmaster
return Wins:match("%d+", (Wins:len() - 4))
else
return Wins
end
end
I don't suffer from insanity, I enjoy it.
-
- Posts: 1178
- Joined: January 22nd, 2011, 4:23 pm
- Location: GMT +8
Re: My first RainMeter module [StarCraft II Badge]
Come on then Hydra.. lift your skirts and show us what you've got (as in the complete skin). I'm sure there are lots of us just waiting to wade in with suggestions
-
- Posts: 12
- Joined: January 26th, 2012, 11:50 pm
- Location: Canada
Re: My first RainMeter module [StarCraft II Badge]
Here's an upload if you'd like to see how the entire thing is set up: http://dl.dropbox.com/u/7035114/RankBadge.zip
And if you just want the .ini code:
I would love some constructive ideas on cleaning this up, since i'm aware it's... well less than ideal.
And if you just want the .ini code:
Code: Select all
[Rainmeter]
Author=Hydra
Update=1000
[Metadata]
Name=RankBadge
Information=Display StarCraft 2 rank
License=None
Version=1.00
[Variables]
URL="http://us.battle.net/sc2/en/profile/3108735/1/oGsVINES/"
; Measures
[MeasureWeb]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=600
Url=#URL#
RegExp="(?siU)<span class="badge (.*)">.*<strong>Division:</strong> (.*)<br />"
[MeasureRankWeb]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=600
Url=#URL#
RegExp="(?siU)<strong>Rank:</strong> (.*)</div>"
[MeasureRankLua]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureRankWeb]
StringIndex=1
[MeasureRankScript]
Measure=Script
ScriptFile=Rank.lua
[MeasureWinsWeb]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=600
Url=#URL#
RegExp="(?siU)<span class="totals">(.*) Wins</span>"
[MeasureWinsLua]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureWinsWeb]
StringIndex=1
[MeasureWinsScript]
Measure=Script
ScriptFile=Masters.lua
[MeasureBadge]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureWeb]
StringIndex=1
[MeasureDivision]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureWeb]
StringIndex=2
; Meters
[MeterBackground]
Meter=Image
X=1
Y=1
H=100
W=100
[MeterBadge]
MeasureName=MeasureBadge
MeasureName2=MeasureDivision
MeasureName3=MeasureRankScript
MeasureName4=MeasureWinsScript
Meter=Image
X=1
Y=1
ImageName=Images\%1.png
ToolTipText="Division: %2#CRLF#Rank: %3#CRLF#Wins: %4"
LeftMouseUpAction=!Execute ["#URL#"]
I don't suffer from insanity, I enjoy it.
-
- Posts: 1178
- Joined: January 22nd, 2011, 4:23 pm
- Location: GMT +8
Re: My first RainMeter module [StarCraft II Badge]
Sorry for the delay in replying but other stuff grabbed a chunk of my time. My first comment would be that you seem to be using more WebParser measures than you really need to. I think you can just combine all the RegExp='s in [MeasureWeb], [MeasureRankWeb], [MeasureWinsWeb] in a single measure.
You mentioned that you'd used a "Lua script where it's probably not necessary. But then again I just adore Lua". I'm not much of a LUA programmer but I appreciate the way it can be integrated in Rainmeter skins, however, I don't think it is really needed in this case. On the positive side, I had always thought you could only have one LUA script per config, so you taught me something that I'm sure will come in useful at some time, Tnx.
As a result of your post I went back to my old Starcraft II profile skin and used some tips from the Rainmeter Forum post Workaround for Dynamic Variables in WebParser Plugin to produce an updated version without LUA and using http://battle.net rather than http://sc2ranks.com for most of the information. Note that this skin downloads the Portraits and Rank Badges from sc2ranks.com so you avoid all that Photoshop editing.
You mentioned that you'd used a "Lua script where it's probably not necessary. But then again I just adore Lua". I'm not much of a LUA programmer but I appreciate the way it can be integrated in Rainmeter skins, however, I don't think it is really needed in this case. On the positive side, I had always thought you could only have one LUA script per config, so you taught me something that I'm sure will come in useful at some time, Tnx.
As a result of your post I went back to my old Starcraft II profile skin and used some tips from the Rainmeter Forum post Workaround for Dynamic Variables in WebParser Plugin to produce an updated version without LUA and using http://battle.net rather than http://sc2ranks.com for most of the information. Note that this skin downloads the Portraits and Rank Badges from sc2ranks.com so you avoid all that Photoshop editing.
Code: Select all
[Rainmeter]
Author=Mordasius
Update=1000
MiddleMouseDownAction=!Refresh
[Metadata]
Name=SCProfile-2
Version=02022012
Description= Skin displays Starcraft II profile
License=Creative Commons Attribution-Noncommercial-Share Alike 3.0
[Variables]
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;http://sea.battle.net/sc2/en/profile/325603/1/Zettasun/
; Region=sea
; PlayerName=Zettasun
; PlayerNumber=325603
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;http://us.battle.net/sc2/en/profile/3108735/1/oGsVINES/
Region=us
PlayerName=oGsVINES
PlayerNumber=3108735
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
URLProfile=http://#Region#.battle.net/sc2/en/profile/#PlayerNumber#/1/#PlayerName#/
UpdateProfile=3600
MyRank=**Unknown**
PortraitPage=0
[TextStyle]
StringAlign=LEFT
StringStyle=BOLD
FontFace=Calibri
FontColor=ffffff
FontSize=10
Y=R
Antialias=1
[mGetRank]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=#URLProfile#
RegExp="(?siU)<title>(.*) - StarCraft II.*<span class="badge badge-(.*) badge-medium-(.*)">"
StringIndex=2
FinishAction=!Execute [!WriteKeyValue Variables "MyRank" "[mGetRank]"][!WriteKeyValue mGetRank Disabled 1] [!WriteKeyValue mGetProfile Disabled 0] [!Refresh]
Disabled=0
[mGetProfile]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=#URLProfile#
RegExp="(?siU)<title>(.*) - StarCraft II.*<span class="icon-frame ".*portraits/(.*)-90.jpg.*\)(.*)px(.*)px.*<span class="badge badge-(.*) badge-medium-(.*)">.*Division:</strong> (.*)<br />.*Rank:</strong>(.*)\n.*</div>.*<span class="totals">(.*)</span>.*<span class="totals">(.*)</span>"
StringIndex=1
FinishAction=!Execute [!EnableMeasureGroup Profiles]
UpdateRate=#UpdateProfile#
Disabled=1
[mPlayerName]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=1
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mPortraitPage]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=2
Substitute=" ":""
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mPlayerPicX]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=3
Substitute=" ":"","-":""
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mPlayerPicY]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=4
Substitute=" ":"","-":""
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mBadgeName]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=5
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mBadgeLevel]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=6
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[cBadgePicY]
Measure=CALC
; Formula= (( [mBadgeLevel] -1)*105) - Large Badges
Formula= (( [mBadgeLevel] -1)*50)
DynamicVariables=1
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mDivision]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=7
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mRank]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=8
Substitute=" ":""
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mWon]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=9
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mGames]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mGetProfile]
StringIndex=10
Substitute="No Games Played":"(?) Played"
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mGetPortraits]
Measure=Plugin
Plugin=WebParser
URL=http://us.battle.net/sc2/static/local-common/images/sc2/portraits/#PortraitPage#-90.jpg
Download=1
DownloadFile=Portraits.jpg
DynamicVariables=1
FinishAction=!Execute [!Showmeter PlayerAvatar] [!WriteKeyValue Variables "PortraitPage" "[mPortraitPage]"]
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
[mGetBadges]
Measure=Plugin
Plugin=WebParser
URL=http://sc2ranks.com/images/leagues/#MyRank#.png
Download=1
DownloadFile=RankBadges.png
DynamicVariables=1
FinishAction=!Execute [!WriteKeyValue mGetRank Disabled 0] [!WriteKeyValue mGetProfile Disabled 1]
UpdateRate=#UpdateProfile#
Group=Profiles
Disabled=1
;_________________________________________
[BackGround]
Meter=String
W=77
H=77
SolidColor=0066cc
Text=" Updating...."
Update=-1
[PlayerAvatar]
Meter=IMAGE
ImageName="#CURRENTPATH#DownloadFile\Portraits.jpg"
X=1
Y=1
LeftMouseUpAction=#URLProfile#
MouseOverAction=!Execute [!ShowMeterGroup Stats] [!Update]
MouseLeaveAction=!Execute [!HideMeterGroup Stats] [!Update]
ImageCrop= [mPlayerPicX], [mPlayerPicY], 90, 90
H=75
W=75
DynamicVariables=1
Hidden=1
[PopUpBackGround]
Meter=Image
X=77
W=240
H=77
SolidColor=0066cc
Update=-1
Hidden=1
Group=Stats
[ShowPlayerTitle]
Meter=STRING
MeasureName=mPlayerName
MeterStyle=TextStyle
FontColor=f8d906
Fontsize=14
X=81
Y=0
Hidden=1
Group=Stats
[PlayerRankBadge]
Meter=IMAGE
ImageName="#CURRENTPATH#DownloadFile\RankBadges.png"
; ImageCrop= 0, [cBadgePicY], 100, 105 -- Large badges
ImageCrop= 100, [cBadgePicY], 45, 45
Y=25
X=80
DynamicVariables=1
Hidden=1
Group=Stats
[ShowPlayerRank]
Meter=STRING
MeterStyle=TextStyle
StringCase=PROPER
MeasureName=mBadgeName
X=130
Y=23
Hidden=1
Group=Stats
[ShowRankDivision]
Meter=STRING
MeterStyle=TextStyle
MeasureName=mRank
MeasureName2=mDivision
X=130
Text="Rank #%1 of %2"
Hidden=1
Group=Stats
[ShowPlayedWon]
Meter=STRING
MeterStyle=TextStyle
MeasureName=mWon
MeasureName2=mGames
X=130
Text="%1 : %2"
Hidden=1
Group=Stats
You do not have the required permissions to view the files attached to this post.
-
- Posts: 12
- Joined: January 26th, 2012, 11:50 pm
- Location: Canada
Re: My first RainMeter module [StarCraft II Badge]
Hrmm, well there's a whole lot I can learn from this! Thank you for sharing. I plan to look this through and clean my own version up
I don't suffer from insanity, I enjoy it.
-
- Posts: 1178
- Joined: January 22nd, 2011, 4:23 pm
- Location: GMT +8
Re: My first RainMeter module [StarCraft II Badge]
Go for it Bro.. and don't forget that Zergs take Protoss most nights of the week
-
- Posts: 12
- Joined: January 26th, 2012, 11:50 pm
- Location: Canada
Re: My first RainMeter module [StarCraft II Badge]
Psh. Personally PvZ is my favorite match up, I find them easiest to beat :P
I don't suffer from insanity, I enjoy it.
-
- Posts: 1178
- Joined: January 22nd, 2011, 4:23 pm
- Location: GMT +8
Re: My first RainMeter module [StarCraft II Badge]
Zergling rush defeats all. Better Lie Down with your feet in the air and GG now rather than later