Page 3 of 3

Re: [Help] SkillPoints number in Manialink

Posted: 13 Sep 2017, 13:46
by Qlex
Check if the affectation worked :

Code: Select all

		foreach(Event in PendingEvents) {
				log(Now ^ ") Event received. Event.Type : " ^ Event.Type ^ ", Event.CustomEventType : " ^ Event.CustomEventType);
			switch (Event.Type) {
				case CMlScriptEvent::Type::PluginCustomEvent: {
					switch (Event.CustomEventType) {
						case "skillpoints_sent" : {
							declare Integer Page_SoloSP for Page;
							log(Now ^ ") Skillpoints received by layer : " ^ Page_SoloSP);
							(Page.GetFirstChild("SP") as CMlLabel).SetText(""^ Page_SoloSP);
						}
					}
				}
			}
		}
If you don't see the line "Skillpoints received by layer" when in the TM2UF menu (Ctrl + G), that means the solo.xml does not receive the correct Event

Re: [Help] SkillPoints number in Manialink

Posted: 13 Sep 2017, 16:43
by adamkooo2
I have included the main frame of solo.xml to TM2UF menu.script.txt, so values are loaded (but wrong numbers, it looks skillpoints label displays leaderpoints, and rank label displays amount of players in country of player login).
I will try to send the evnt to solo.xml or do you think it will be possible to include the manialink and hide frames of the included ML?

Re: [Help] SkillPoints number in Manialink

Posted: 18 Sep 2017, 09:26
by Qlex
If you have values that are not zero then I think your method is good.

Check if you're using this line :

Code: Select all

ScoreMgr.Campaign_GetSkillPoints(UserMgr.MainUser.Id, DataFileMgr.Campaigns[0].CampaignId)
some other methods of the class CScoreMgr might be used on accident, like MapLeaderBoard_GetPlayerCount or CampaignLeaderBoard_GetPlayerCount.

Re: [Help] SkillPoints number in Manialink

Posted: 19 Sep 2017, 18:18
by adamkooo2
Thx, but it it does not work. An error ocurred:

Code: Select all

ERROR [58, 48] The member or variable UserMgr does not exist.
ERROR [58, 48] The dot operator '.' must be applied to a class or a vector
ERROR [58, 57] The dot operator '.' must be applied to a class or a vector
ERROR [58, 16] Incorrect arguments to call the function Campaign_GetSkillPoints
I had to replace UserMgr.MainUser.Id with LocalUser.Id to make it work

Re: [Help] SkillPoints number in Manialink

Posted: 20 Sep 2017, 08:29
by Qlex
Is LocalUser.Id giving you the correct results? If not, try calling this function with UserMgr.MainUser.Id, but in the Menu.Script.txt, not in solo.xml

Re: [Help] SkillPoints number in Manialink

Posted: 22 Sep 2017, 17:41
by adamkooo2
Qlex wrote: 20 Sep 2017, 08:29 Is LocalUser.Id giving you the correct results?
No, it shows wrong number (2 instead of 1; yes I was 2nd in past but now I am first)
Qlex wrote: 20 Sep 2017, 08:29 try calling this function with UserMgr.MainUser.Id
It causes errors:
adamkooo2 wrote: 19 Sep 2017, 18:18

Code: Select all

ERROR [58, 48] The member or variable UserMgr does not exist.
ERROR [58, 48] The dot operator '.' must be applied to a class or a vector
ERROR [58, 57] The dot operator '.' must be applied to a class or a vector
ERROR [58, 16] Incorrect arguments to call the function Campaign_GetSkillPoints

Re: [Help] SkillPoints number in Manialink

Posted: 23 Sep 2017, 10:06
by zocka
UserMgr is available in your CManiaApp (or CManiaAppTitle). Everytime you are in your UI-Manialink-script (UILayer.ManialinkPage = """...<script>{{{here}}}</script>...""") you have the context CMlScript (or CManiaAppTitleLayer). You can always check with log(This); which should give you something like (CManiaAppTitle*)???. Then you can look at the documentation and see what is available and what isn't.

For you this means you would have your call to ScoreMgr.Campaign_GetSkillPoints(UserMgr.MainUser.Id, SomeCampaign.CampaignId)); (SomeCampaign being e.g. DataFileMgr.Camapaings[0] if this is your campaign) in your TM2UF Menu.Script.txt and then you would pass the result to the UILayer.ManialinkPage. Either into the string, e.g.

Code: Select all

SPLayer.ManialinkPage = """<manialink version="3">
<label textprefix="Skillpoints: " text="{{{SkillPoints}}}" />
</manialink>
or as variable for you Page like Qlex explained: viewtopic.php?f=279&t=42482&start=10#p291221

Unfortunately I can't give you a minimal working example as it seems that I somehow failed to make a valid campaign configuration xD

On a more general note:
I would suggest using different layers for your different views and hide and show them according to scriptactions you pass from your UI-Manialink to your CManiaAppTitle-script (e.g. <label text="Solo" scriptaction="showview'solo" />, then catch it like you do with the CustomEventType "editors" and hide your UI-Layers accordingly). Splitting your views into multiple manialinks makes it a lot more readable and maintainable. (And you can set a "name" attribute on the manialink-tags which will be displayed in the debugger; sometimes it helps having a look at how Nadeo does things ;) )