Parcourir la source

Secret abfrage zum Minigame Client hinzugefügt

Kolja Strohm il y a 6 ans
Parent
commit
a18b701952

+ 2 - 0
Include/KSGNetwork.h

@@ -998,6 +998,8 @@ namespace KSGClient
         // Gibt den Anzeigenamen eines bestimmten Accounts zurück
         //  id: Die id des Accounts
         virtual Text *getAccountName( int id ) = 0;
+        // Gibt eine geheime zeichenkette die nur der client kennt zurück (ist bei spielstart)
+        virtual Text *getSecret() = 0;
         // Ermittelt die liste mit allen Optionen zu einem Minigame zurück, zu denen es Welt beste Scores gibt
         //  mName: Der Name des Minigames
         //  zOptionList: Enthält nach erfolgreichem Aufruf eine Liste mit Optionen

+ 1 - 1
KSGNetwork/KSGNetwork.vcxproj

@@ -22,7 +22,7 @@
     <VCProjectVersion>15.0</VCProjectVersion>
     <ProjectGuid>{96295A91-C497-4691-B3F4-AE8CC7A7CEC5}</ProjectGuid>
     <RootNamespace>KSGNetwork</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+ 45 - 0
KSGNetwork/MinigameClient.cpp

@@ -180,6 +180,51 @@ Text *MinigameClient::getAccountName( int id )
     return 0;
 }
 
+// Gibt eine geheime zeichenkette die nur der client kennt zurück (ist bei spielstart)
+Text *MinigameClient::getSecret()
+{
+    cs.lock();
+    if( !k )
+    {
+        if( !verbinde() )
+        {
+            err = "Der Client ist nicht verbunden.";
+            cs.unlock();
+            return 0;
+        }
+    }
+    k->sendeEncrypted( "\xD", 1 );
+    char ret = 0;
+    k->getNachrichtEncrypted( &ret, 1 );
+    if( ret == 1 )
+    {
+        unsigned char l = 0;
+        k->getNachrichtEncrypted( (char*)&l, 1 );
+        char *buff = new char[ l + 1 ];
+        buff[ l ] = 0;
+        k->getNachrichtEncrypted( buff, l );
+        cs.unlock();
+        Text *ret = new Text( buff );
+        delete[] buff;
+        return ret;
+    }
+    if( ret == 3 )
+    {
+        char l = 0;
+        k->getNachrichtEncrypted( &l, 1 );
+        char *fehler = new char[ l + 1 ];
+        fehler[ l ] = 0;
+        k->getNachrichtEncrypted( fehler, l );
+        err = fehler;
+        delete[] fehler;
+        cs.unlock();
+        return 0;
+    }
+    err = "Unbekannter Fehler";
+    cs.unlock();
+    return 0;
+}
+
 // Ermittelt die liste mit allen Optionen zu einem Minigame zurück, zu denen es Welt beste Scores gibt
 //  mName: Der Name des Minigames
 //  zOptionList: Enthält nach erfolgreichem Aufruf eine Liste mit Optionen

+ 2 - 0
KSGNetwork/MinigameClient.h

@@ -30,6 +30,8 @@ namespace KSGClient
         bool verbinde() override;
         // Gibt die Id des aktuell spielenden Accounts zurück
         int getAccountId() override;
+        // Gibt eine geheime zeichenkette die nur der client kennt zurück (ist bei spielstart)
+        Text *getSecret() override;
         // Gibt den Anzeigenamen eines bestimmten Accounts zurück
         //  id: Die id des Accounts
         Text *getAccountName( int id ) override;