Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

HSFighter

Administrator

  • »HSFighter« ist der Autor dieses Themas

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

1

Mittwoch, 16. Oktober 2013, 09:53

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?!?

Quellcode

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

Quellcode

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

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Mittwoch, 16. Oktober 2013, 10:25

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

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Impact« (16. Oktober 2013, 10:39)


DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

3

Donnerstag, 17. Oktober 2013, 21:15

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

Quellcode

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

Beiträge: 1 878

Wohnort: ~#

Rootserver vorhanden: Ja

  • Nachricht senden

4

Donnerstag, 17. Oktober 2013, 21:49

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.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »MadMakz« (17. Oktober 2013, 21:58)


DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

5

Donnerstag, 17. Oktober 2013, 22:00

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

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

6

Donnerstag, 17. Oktober 2013, 23:42

Hier die entsprechenden Codestücke aus dem Updater.

KV lesen

PHP-Quelltext

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-Quelltext

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-Quelltext

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

Quellcode

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.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Impact« (17. Oktober 2013, 23:56)


HSFighter

Administrator

  • »HSFighter« ist der Autor dieses Themas

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

7

Samstag, 19. Oktober 2013, 12:26

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)

Ähnliche Themen