Beiträge von Dudalus

    Hi


    Ich möchte mein Script gmx-tauglich machen. Speichermässig ist alles klar, jedoch habe ich ein Problem nach dem Einloggen. Ich rufe das Passwortmenü bei OnPlayerConnect auf, vergleiche das Passwort und lasse ihn dann mittels SpawnPlayer() spawnen. Nun, nach einem GMX kommt die Skinauswahl (OnPlayerRequestClass) einerseits überhaupt nicht, andererseits spawne ich mit einem blauen Screen. Muss hier hinzufügen, dass dies nicht immer passiert.


    Ich befinde mich nicht im falschen Interior, denn der ganze Bildschirm ist blau/hellblau. Die Spawnposition stimmt, die Meldung mit dem Du bewohnst kein Haus mehr ist vernachlässigbar, denn der GMX speichert momentan noch nicht (baue es erst um, wenn das mit dem blauen Bildschirm weg ist).Hat jemand bereits was Ahnliches erlebt und kann mir helfen ?


    MfG Simon

    Hi


    Ok, ja, Du kannst es auch als Ladecode fürn OnGameModeInit nehmen, dachte es sei dazu da, alle Häuser zu refreshen/aktualisieren. Wenn es jedoch für OnGameModeInti da ist, warum wird es bei CreateHaus nochmals benutzt ? Zu dem return, da muss ich dir glaub widersprechen. Überleg mal, was passiert, wenn das letzte erstellte Haus, welche die höchste Zahl hat im Datennamen hat, nicht verkauft ist ? Dann läuft der Code weiter bis zu MAX_Haus oä.


    Simon

    Hi


    Du machst da ein paar Fehler:


    1.) return bricht den Code ab, wenn Du aber alle Häuser laden möchtest, musst Du continue brauchen
    2.) Du lädst alle Häuser neu, wenn Du ein neues Haus erstellst. Du musst LoadHaus() anpassen, sonst kann es da Probleme geben. Mein Tipp:


    CreateHaus

    • Daten speichern
    • Pickup erstellen
    • 3DText erstellen


    LoadHaus

    • Entfernen, da das Haus bereits bei CreateHaus komplett erstellt wird


    UpdateHaus

    • Pickups zerstören und neu erstellen
    • 3DText updaten


    Du hast wie bei 1.) gesagt ein return-Fehler, verwende da unbedingt continue, um einen for-Wert zu erhöhen.Hinzu kommt, dass Du nur abfragen darfst, ob das Haus verkauft ist oder nicht, wenn es auch existiert, habe das umgebaut:


    public LoadHaus()
    {
    new string[128];
    for(new i=1;i<MaxHaus;i++)
    {
    format(string,sizeof(string),"/Haus/Hausid %d.ini",i);
    if(dini_Exists(string))
    {
    format(HausInfo[i][Besitzer],40,"%s",dini_Get(string,"Besitzer"));
    HausInfo[i][Hx] = dini_Float(string,"Hx");
    HausInfo[i][Hy] = dini_Float(string,"Hy");
    HausInfo[i][Hz] = dini_Float(string,"Hz");
    HausInfo[i][Ix] = dini_Float(string,"Ix");
    HausInfo[i][Iy] = dini_Float(string,"Iy");
    HausInfo[i][Iz] = dini_Float(string,"Iz");
    HausInfo[i][Zimmer] = dini_Int(string,"Zimmer");
    HausInfo[i][Inte] = dini_Int(string,"Inte");
    HausInfo[i][World] = dini_Int(string,"World");
    HausInfo[i][HPreis] = dini_Int(string,"HPreis");
    HausInfo[i][Verkauft] = dini_Int(string,"Verkauft");
    HausInfo[i][Verschlossen] = dini_Int(string,"Verschlossen");
    HausInfo[i][Hlevel] = dini_Int(string,"Level");
    HausInfo[i][Hkasse] = dini_Int(string,"Kasse");
    HausInfo[i][Hmiete] = dini_Int(string,"Miete");
    if(HausInfo[i][Verkauft] == 0)
    {
    Hausp[i] = CreatePickup(1273,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
    Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
    format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nPreis: %d$ \nLevel: %d",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][HPreis],HausInfo[i][Hlevel]);
    Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
    continue;
    }
    if(HausInfo[i][Verkauft] == 1)
    {
    Hausp[i] = CreatePickup(1272,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
    Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
    format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nMiete: %d$",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][Hmiete]);
    Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
    }
    }
    }
    return 1;
    }


    MfG Simon

    Hi


    Ich kenne mich mit Dini nicht so aus, aber Du hast sicher ein Enum, poste dieses bitte mal. Wenn Du den Code für das Laden der Häuser beim Serverstart hast, poste diesen auch mit. Meistens passiert dort der Fehler (Ich spreche aus Erfahrung, hatte selber mit meinem Vehiclesystem solch ein Einzeiler Problem)


    Simon

    Hi


    Ich verstehe deinen Gedanken, jedoch nicht den genauen Sinn


    1.) Eine solche Zufallszahl ersetzt nur das Passwort, wenn sie vom User eingegeben werden muss
    2.) Generierst Du zB eine Nummer aus dem Namen des Spielers, so macht das ganze keinen Sinn, da es keine "Ich bin der rochtige User" Abfrage/Kontrolle gibt


    Warum möchtest Du das Passwort ersetzen, das ist dasselbe wie wenn ich das Passwort pseudo-zufällig generieren lasse und es nachher mit einem gleichen pseudo-ähnlichen (welches mit dem Anderen übereinstimmt) vergleiche ?


    MfG Simon

    Hi


    Du benötigst für solche "Funktionen" kein Public, ein stock sollte reichen:


    stock GetPlayerMember(playerid)
    {
    return PlayerInfo[playerid][pMember];
    }


    stock GetPlayerLeader(playerid)
    {
    return PlayerInfo[playerid][pLeader];
    }


    stock GetPlayerRank(playerid)
    {
    return PlayerInfo[playerid][pRank];
    }

    Hi


    Ich habe grad festgestellt, dass man die Installation nicht abbrechen kann - es öffnet sich ein neuer Dialog, doch das Auswählen und Klicken des Button Setup abbrechen oä führt zu nix.


    MfG Simon

    Hi


    Ich möchte für mein Registrierungssystem das Geburtsdatum abfragen, dieses muss in folgendem Format sein:


    Code
    TT.MM.JJJJ


    Nun, die Werte 1-31 und 1-12 frage ich bereits ab, ich möchte aber verhindern, dass sich zB jemand so registrieren kann:


    Code
    1.4.1989 (Ich will 01.04.1994)


    Nun, ich benutzte valstr und frage dann mit strlen die Länge ab, nur kommt das dumemrweise raus:


    Code
    int = 01 Länge = 1 (Ich bräuchte aber 2, dann könnte ich eine einfache Abfrage mit strlen machen.
    int = 10 Länge = 2



    Nun, hat jemand eine Idee, wie man das lösen kann ? Ich könnte jetzt die Grösse abfragen, aber das wird sehr aufwändig, ich bräuchte also eine Funktion, welche abfragt, ob der Wert zwischen 1 und 31, 1 und 12 liegt und 2-stellig ist.Das problem ist halt, dass 01 zu 1 gemacht wird und dann die Stringlänge 1 hat


    MfG Simon

    Hi


    Irgendwie geht das nicht so ganz. Das kommt immer raus (wegen dem var_dump):


    Code
    bool(false)


    index.php


    PHP
    else if($_GET['page'] == 'overview')
    {
    $playerdata = GetDataSpieler($_POST['username']);
    var_dump($playerdata);
    echo ($playerdata['Name']);
    }


    functions.php




    MfG Simon

    Hi


    Das ganze ist mir ein wenig unklar. Ich rufe von der index.php die Funktion GetDataSpieler auf (welche sich in der functions.php befindet) und diese soll die ganze MySQL-Row als assoziatives Array returnen, so dass ich in der index.php all die MySQL Daten assoziativ per echo oder sonst auch per var_dump (zum testen) ausgeben kann.


    Könntest Du mir da ein Beispiel machen, den für mich wirkt eine leere (ohne ausführbaren Code) while Schleife sehr fremd ;)

    Hi


    Gibt es eine einfache Möglichkeit, assoziativ ein Array per echo zu senden, welches ich mit einer Funktion in einer Include füllen, sprich das ich den Arrayeintrag nicht numerisch sondern assoziativ benutzen kann.


    index.php

    PHP
    else if($_GET['test'] == 'fahrzeuge')
    {
    	$Data = GetDataFahrzeuge($_POST['username']);
    	echo $Data['Level'];
    }



    MfG Simon