Beiträge von DurtyFree

    Also ich komm gleich zur Sache, ich bin derzeit an einem Handy System und hier bekommt der Spieler eine Random Nummer zugewiesen jedoch möchte ich davor checken ob die Nummer die er zugewiesen bekommt schon benutzt wird. Ich hab dazu nun eine Funktion geschrieben aber diese funktioniert nicht (Der Online teil funktioniert, jedoch die sämtliche MySQL Abfrage nicht ^^)


    stock CheckNumberExist(Nummer) //By DurtyFree
    {
    foreach (Player, i)
    {
    if(SpielerInfo[i][Telefonnummer] == Nummer)
    {
    return 1;
    }
    }
    new data[4],telefonnummer;
    mysql_query("SELECT * FROM userdata");
    new rows = mysql_num_rows();
    mysql_store_result();
    for(new i;i<rows;i++)
    {
    mysql_query("SELECT * FROM userdata WHERE 'Handy' > '0'");
    mysql_store_result();
    if(mysql_num_rows())
    {
    mysql_fetch_field("Telefonnummer",data);
    printf("Nummer %s",data);
    mysql_fetch_field("Name",data);
    printf("Name %s",data);
    telefonnummer = strval(data);
    if(telefonnummer == Nummer)
    {
    return 1;
    }
    mysql_free_result();
    }
    }
    mysql_free_result();
    return 0;
    }
    Das ist mein derzeitiger Code, die erste Abfrage (foreach) funktioniert, die zweite jedoch returned immer 0 (Also das die Nummer noch frei ist), obwohl diese schon von einem User benutzt wird.


    Hoffentlich kann mir jemand helfen ^^
    MFG DurtyFree

    Hups, wenn das so ist ^^ Verbesserung:


    if(!havePlayerHanf(playerid,2)) return SendClientMessage(playerid,FARBE,"Du hast nicht genügend Hanf!");
    Dannach einfach das hanf -2 und sein Armour dementsprechend setten ^^


    //Verbessert xD

    Ich würd dir vorschlagen erstmal den Grundbau zu machen, dann das ganze hier zu posten und dann zeig ich dir wie du abfragen einbaust (zb. ob das eine gültige SpielerID ist)


    Überall wo du die playerid benötigst nutzt du nun einfach "strval(inputtext)" (Wir gehen hierbei einfach mal davon aus das der Spieler eine gültige SpielerID in das Feld eingegeben hat)

    Ich denke es sollte eher "if(!havePlayerHanf(playerid)) return SendClientMessage(playerid,FARBE,"BLabla du hast kein Hanf!");" heißen ^^
    Und hanf geben kannst du mit givePlayerHanf(playerid,2);

    Folgend würdest du abfragen ob der Spieler Online ist "if(!IsPlayerConnected(strval(inputtext))) return ShowPlayerDialog(Oder was auch immer hier hin soll, der fehler halt);"
    Wenn du mit einem Namen arbeiten willst dann musst du eine Schleife machen die überprüft ob irgend jemand so heißt und dann die ID des Spielers returnen :D

    Du machst das auch falsch ^^ Du ziehst dem Spieler das Geld ab und gibst dann den Fehler aus...


    Du musst erstmal abfragen wieviel Geld der Spieler hat, dieses dann vergleichen und dann das Geld abziehen.



    {
    new color1, color2, carid, pID;
    new name[MAX_PLAYER_NAME];
    if(sscanf(params,"ii",color1,color2))return SendClientMessage(playerid,hellblau,"INFO: /color 1 2");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,ROT,"Fehler: Du bist in keinem Auto!");
    if(GetPlayerMoney(playerid) < 500) return SendClientMessage(pID,ROT,"Fehler: Zu wenig Geld!");
    pID = GetPlayerName(pID,name,sizeof(name));
    GivePlayerMoney(playerid,-500);
    carid = GetPlayerVehicleID(playerid);
    ChangeVehicleColor(carid,color1,color2);
    SendClientMessage(playerid,Grün,"Farbe erfolgreich geändert");
    return 1;
    }

    Das sollte gehen.

    Wenn ich etwas testen will und keinen hab dann bau ich einfach den Befehl um. In diesem Fall zb. das es "/ainvite" oder so gibt, dann könntest du dich selbst in eine Fraktion einladen (Testweise)

    Wie gesagt, du hast "playerid" nicht definiert, änder das einfach in "public Radio(playerid)" und "forward Radio(playerid);", und überall wo du jetzt die Funktion "Radio" genutzt hast packst du noch "playerid" in die Klammern (Bzw. die Variable in der die SpielerID gespeichert ist (Normalfall Playerid oder "i"))

    Eine Schleife erstellen die alle Spieler die Online sind durchgeht und dann wiederrum nochmal prüft ob der Spieler Wanteds hat. Das ganze einfach in einen string packen und ausgeben.


    Ich könnt dir ein Beispiel machen wenn ich wüsste wie die Variable heißt in der das Wanted Level der Spieler gespeichert wird

    Die Variable "inputtext" beinhaltet das was der Spieler eingegeben hat. Also müsstest du praktisch nur abfragen ob er etwas eingegeben hat und ob das eingegebene eine gültige SpielerID/Name ist.


    Am besten du schaust im Englischen Samp WIKI ShowPlayerDialog nochmal an (Da du Fehler in deinem hast)
    Du müsstest für ein Input Dialog ShowPlayerDialog(playerid,DIALOG_HACK,DIALOG_STYLE_INPUT,"Sateliten-HackPoint","Wanteds geben (15) \nWanteds löschen ","Ausführen","Abbrechen"); benutzen


    Und die listitem Variable ist nur für List Dialoge ^^

    Einfach überall wo er Geld ausgeben kann eine Abfrage einbauen ob er überhaupt soviel hat und dann return nutzen (Bzw. das ganze abbrechen)



    Und sonst könntest du in einen Timer einfach checken ob der Spieler weniger als 0$ hat und sein Geld dann auf 0 setzen (if(GetPlayerMoney(playerid) < 0) SetPlayerMoney(playerid,0);)