You are not logged in.

HSFighter

Administrator

  • "HSFighter" started this thread

Posts: 1,517

Location: Flensburg

Occupation: Industrieelektroniker

wcf.user.option.userOption53: Nein

  • Send private message

1

Wednesday, October 16th 2013, 9:53am

Updater

Hallo zusammen,

seit ein paar wochen habe ich Probleme mit meinem Updater-Plugin.
Es Updatet ein Plugin jeden Tag weil die Versionsnummern nicht stimmen.

Da 1.1 und 1.100000 nicht identisch sind wird das Update logischerweise gestartet.
Aber ich weiß nicht wo die Zeros her kommen?!?

Source code

1
2
3
Update available for "Testplugin" (test.smx). Current: 1.1 - Latest: 1.100000
[0]  Code optimationss
Successfully updated and installed "Testplugin".

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"Updater"
{
	"Information"
	{
		"Version"
		{
			"Latest"		"1.1"
		}
		"Notes"		"Code optimations"
	}
	
	"Files"
	{
		"Plugin"		"Path_SM/plugins/test.smx"	
		"Source"		"Path_SM/scripting/test.sp"
	}
}


Jemand eine Idee?

Gruß
HSFighter



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

Impact

Super Moderator

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

2

Wednesday, October 16th 2013, 10:25am

Du musst eine dreistellige Versionsnummer nutzen, das Problem ist schon über ein Jahr bekannt.

This post has been edited 4 times, last edit by "Impact" (Oct 16th 2013, 10:39am)


DeaD_EyE

Administrator

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

3

Thursday, October 17th 2013, 9:15pm

Da ist ja hässlich.
Hab ich das jetzt richtig verstanden?

Source code

1
2
3
current  = 1.1
latest     = 1.100000
latest > current == True?


Kannst den Code ja künstlich mit den Integers Major, Minor, Revision und Build aufblähen oder halt nur Build vergleichen.

MadMakz

Super Moderator

Posts: 1,878

Location: ~#

wcf.user.option.userOption53: Ja

  • Send private message

4

Thursday, October 17th 2013, 9:49pm

Bin mal kurz über den code geflogen (updater/filesys.sp) und hab gesehen das an einigen stellen ein StrEqual() mit den Versionstrings gemacht wird und daher ist 1.1 und 1.100000 eben nicht das selbe.

Woher die nullen kommen kann ich auf anhieb auch nicht sehen. Aber irgendwo muss der updater drei zahlensegmente erwarten und die nullen sind vermutlich teile eines gekürzten Binärstrings resultieren aus einem Fehler oder whatever.

This post has been edited 3 times, last edit by "MadMakz" (Oct 17th 2013, 9:58pm)


DeaD_EyE

Administrator

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

5

Thursday, October 17th 2013, 10:00pm

Macht man sowas? Version als Gleitkommazahl speichern?
Ich würde es mit StringToFloat bzw. StringToFloatEx probieren.

Impact

Super Moderator

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

6

Thursday, October 17th 2013, 11:42pm

Hier die entsprechenden Codestücke aus dem Updater.

KV lesen

PHP Source code

1
2
3
4
5
6
7
// Version info.
if (KvJumpToKey(kv"Version"))
{
    KvGetString(kv"Latest"kvLatestVersionsizeof(kvLatestVersion));
    KvGetString(kv"Previous"kvPrevVersionsizeof(kvPrevVersion));
    KvGoBack(kv);
}


Versionsabgleich


PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
// Check if we have the latest version.
decl String:sCurrentVersion[16], String:sFilename[64];
GetPluginInfo(hPluginPlInfo_VersionsCurrentVersionsizeof(sCurrentVersion));

if (!StrEqual(sCurrentVersionkvLatestVersion))
{
    decl String:sName[64];
    GetPluginFilename(hPluginsFilenamesizeof(sFilename));
    GetPluginInfo(hPluginPlInfo_NamesNamesizeof(sName));
    
    Updater_Log("Update available for "%s" (%s). Current: %s - Latest: %s"sNamesFilenamesCurrentVersionkvLatestVersion);
    // .....


Hier zum selber probieren

Spoiler Spoiler

PHP Source code

1
2
3
4
5
6
7
8
9
new String:val[64];
new Handle:kv CreateKeyValues("Updater");
KvJumpToKey(kv"Information"true);
KvSetFloat(kv"LatestVersion"0.1);

KvGetString(kv"LatestVersion"valsizeof(val), "FAILED!");
CloseHandle(kv);

PrintToServer("KvVersion: %s"val);


Ergebnis

Spoiler Spoiler

Source code

1
KvVersion: 0.100000

Der Typ in einer Keyvalues Datei wird wohl dynamisch erkannt, daher passiert das selbe wie oben.
Tony wollte eigentlich mal auf den SMC-Parser umsteigen, aber wie es aussieht ist er derzeit inaktiv.

This post has been edited 2 times, last edit by "Impact" (Oct 17th 2013, 11:56pm)


HSFighter

Administrator

  • "HSFighter" started this thread

Posts: 1,517

Location: Flensburg

Occupation: Industrieelektroniker

wcf.user.option.userOption53: Nein

  • Send private message

7

Saturday, October 19th 2013, 12:26pm

Danke für die tolle Aufklärung. :bestteam:

Ich habe die Version in meinem Plugin jetzt erst mal 3 Stellig gemacht.

Gruß
HSFighter



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

Similar threads