Beiträge von Zyankali

    Einfachgesagt soll es wie folgt sein:


    option 1. beide werte gleich daher nichts muss passieren ist mir jetzt klar das man da nichts definieren muss


    option 2. Wert pGeld ist höher als Money dann soll Money dem pGeld gleichgesetzt werden den wer würde sich schon selber Geld weg cheaten? Wenn dieser Fall eintritt gehe ich davon aus das ein fehler meinerseits vorliegt. (Mal angenommen ich bin irgendwann mal ein Gottgleicher Scripter dann lass ich so etwas weg aber zur Zeit ist es eine Absicherung)


    option 3. Ja logisch wenn der Money wert über dem pGeld wert liegt was eigentlich nicht möglich sein kann dann wird der Spieler gebannt/Admin informiert.

    Ja das habe ich mir schon überlegt mal testen wie es soweit funktioniert ansonsten eine nachricht an einen Admin bzw supporter schicken mein Problem ist halt das lediglich IID 0 bisher dadrauf reagiert hatte jetzt mal testen.

    Sollte ungefähr so aussehen.


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if (newstate==PLAYER_STATE_DRIVER)
    {
    for(new i=0; i<sizeof(noobroller); i++)
    {
    if(GetPlayerVehicleID(playerid)==noobroller[i])
    {
    if(GetPVarInt(playerid,"Berechtigung")!=1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_RED,"Du bist kein Straßenkehrer. Begib dich zur Stadthalle wenn du dieser Arbeit nachgehen möchtest.");
    }
    if(GetPVarInt(playerid,"Berechtigung")==1)
    {
    //Hier könnte noch etwas getan werden wenn der Spieler den Roller nutzen darf.
    }
    }
    }
    }
    return 1;
    }


    PS: Die Berechtigung den Roller zu nutzen bekommt der Spieler nur wenn PvarInt Berechtigung auf 1 gesetzt ist, dies könntest du zum beispiel nach Ende eines Tutorials, nach bestätigung eines Dialoges in der Stadthalle etc. machen mit SetPVarInt.

    PROBLEM: Der Code funktioniert nur mit playerid 0.


    Eigentlich sollte über diesen Code die Variable geprüft werden und wenn diese dann kleiner als der aktuelle Geld Betrag ist sollte dieser erhöht werden leider Funktioniert dies nur mit Playerid 0 wie muss ich es schreiben damit es nicht nur für id 0 funktioniert daher für alle Spieler.


    public check()
    {
    for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(SpielerInfo[playerid][pGeld] == GetPlayerMoney(playerid))
    {
    return 1;
    }
    if(SpielerInfo[playerid][pGeld] > GetPlayerMoney(playerid))
    {
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);
    return 1;
    }
    else
    {
    Ban(playerid);} // Spieler Bannen

    new string[128], HackerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,HackerName,sizeof(HackerName));
    format(string,sizeof(string),"Info: %s hat Money-Hack genutzt $%d. Sein Geld wurde zurückgesetzt und er wurde vom Server gebannt",HackerName,GetPlayerMoney(playerid));


    for(new i=0;i<=MAX_PLAYERS;i++){
    if(SpielerInfo[i][pAdmin] >= 1 || IsPlayerAdmin(i))
    SendClientMessage(i,COLOR_RED,string);
    }
    }
    return 1;
    }

    Ich muss mich gerade mit CallRemoteFunction befassen und stehe nun vor 2 Fragen die wie folgt wären:


    1. Ich habe bisher einen stock und CallRemoteFunction verwendet ja public s, wie mache ich aus einem stock einen public? einfach nur das "stock zu "public""ändern?


    2. Der stock nutzt einen Array im Gamemode muss ich diesen Array auch irgendwie übergeben oder läuft das alles im Gamemode ab und CallRemoteFunction sagt nur wo die Funktion zu finden ist?

    Hahaha ich stell mir grade vor wie ich mit ner PC Tastatur und meinem Handy auf dem Schoß in der Bahn sitze und tippe xD lustiges Bild (natürlich weiß ich das keine PC Tasta gemeint ist.)

    würde sowas auch ziemlich geil finden wäre ja schon geil wenn es zumindest ne möglichkeit gäbe nen texteditor zu haben der einem alles ein wenig farblich hervorhebt klar das man auf nen android compiler lange warten kann^^

    Folgende Text Zeile schaltet den Stunt Bonus entweder ein 1 oder aus 0:


    EnableStuntBonusForAll(HIER_STEHT_DANN_DIE_ZAHL);


    Und diese hier bewirkt das die Spieler die von dir gewollte Farbe haben:


    SetPlayerColor(playerid,DEIN_FARB_CODE);

    Letzteren habe ich bei OnPlayerSpawn untergebracht aber du kannst Ihn natürlich da verwenden wo du Ihn für richtig hältst.

    Eigentlich sollte bei folgendem Code bei einem leeren Passwortfeld der Dialog erneut aufgerufen werden mit der Bitte ein Passwort einzugeben aber es wird einfach ignoriert und man kann auch ohne passwort einen account erstellen nur warum?


    if(dialogid == DIALOG_REGISTER)
    {
    if(response==1)
    {
    if(!strlen(inputtext)) // Wenn kein Passwort angegebene wurde
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"{ffffff}Register","{ffffff}Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext); //Account wird erstellt
    SetPVarInt(playerid,"Eingeloggt",1); //Die variable wird auf 1 gesetzt, damit wir nun die Skin Auswahl benutzen können ohne wieder nach unserem Passwort gefragt zu werden.
    SetSpawnInfo( playerid, 0, 29, Startspawn, 269.15, 0, 0, 0, 0, 0, 0 );
    StopAudioStreamForPlayer(playerid);
    SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
    return 1;
    }
    }
    else
    {
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    }


    PS: Ich habe es auch schon mit if(strlen(inputtext) == 0) versucht eben so wenig wirkung sitze da nun schon seit 9Stunden dran und verzweifel so langsam aber sicher.


    Mfg Zyan

    Guten Morgen liebe Community, ich habe seit kurzem ein recht seltsames Problem und zwar ist mir aufgefallen das wenn ich mit einem Charakter auf meinem Server einlogge und spawne mich auslogge und sofort mit einem anderem Account wieder einlogge ich den Geldbetrag den der erste Account eigentlich besitzen sollte jetzt auf dem 2. wieder finde, der erste hat jetzt gar kein Guthaben mehr und ich bin ein wenig ratlos wo dran das liegt.


    Mir ist aufgefallen das dies nur passiert wenn ich mich sehr schnell neu einlogge lasse ich mir dagegen ein wenig Zeit besteht dieses Problem nicht.


    Gespeichert wird fast genau so nur das ich da nur ein Query öffne mit UPDATE wenn mir jemand das ganze für SELECT machen könnte würde ich den lade Prozess ebenfalls auf ein Query reduzieren. Ja ich frage den Wert Geld 2x ab aber da der Wert pGeld zur Zeit noch nicht genutzt wird sondern direkt GivePlayerMoney sollte das nicht relevant sein ist dann halt ein Wert der geladen und später unverändert wieder gespeichert wird.


    Ich hoffe jemand hat eventuell eine Idee wodran es liegen könnte.


    Mfg Zyan


    Geladen wir mit folgendem Code:
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pJob] = mysql_GetInt("accounts", "Job", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLeader] = mysql_GetInt("accounts", "Leader", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pBankguthaben] = mysql_GetInt("accounts", "Bankguthaben", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);


    Zur Vollständigkeit halber auch nochmal der Code zum Speichern:
    new query[400];
    format(query,sizeof(query),"UPDATE `accounts` SET `Level` = '%d', `Geld` = '%d', `Health` = '%d', `Job` = '%d', `Fraktion` = '%d',\
    `Leader` = '%d', `Bankguthaben` = '%d', `Skin` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],
    GetPlayerMoney(playerid),
    SpielerInfo[playerid][pHealth],
    SpielerInfo[playerid][pJob],
    SpielerInfo[playerid][pFraktion],
    SpielerInfo[playerid][pLeader],
    SpielerInfo[playerid][pBankguthaben],
    SpielerInfo[playerid][pSkin],
    SpielerInfo[playerid][pName]
    );
    mysql_query(query);