[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Nochmal zu meiner Frage, ich glaube die ist in dem ganzem Code oben untergegangen:


    Ich hätte gerne den PayDay normal verbucht, habe dazu meinen stock "PayDay"


    Soweit so gut, nun hätte ich aber gerne, wenn der spieler /lastpayday eingibt, dass er seinen letzten PayDay ausgegeben sieht. Muss ich das alles in variablen zwischenspeichern jeden Wert oder geht das noch anders ?

  • Wenn du nur den letzten PayDay-Wert anzeigen lassen willst, dann kannst du das relativ einfach mit einem Spielerarray machen:

    C
    new lastPayDay[MAX_PLAYERS];

    Dort wo dem Spieler das PayDay-Geld gegeben wird:

    C
    lastPayDay[playerid] = money;

    Und dann der Befehl:

    C
    if(!strcmp(cmdtext, "/lastpayday", true))
    {
        new str[145];
        format(str, sizeof(str), "[PayDay] Dein letzter PayDay hatte einen Wert von $%d", lastPayDay[playerid]);
        SendClientMessage(playerid, 0xFFFFFFFF, str);
        return 1;
    }
  • Kommt denn irgendeine Fehlermeldung? Bzw. bei pawno musst du auf den blauen Pfeil klicken damit die amx erstellt wird.



    Ich habe noch selbst eine Frage:



    Ich habe den Stock:


    Aber ich bekomme den GameText nicht angezeigt?

    2 Mal editiert, zuletzt von Simon2202 ()

  • Ja ich sehe die SendClientMessages.


    Und:


    Ich habe es jetzt so geschrieben um zu schaun woran es liegt:



    Und ich sehe sowohl die ClientMessage die mir die Zahl ausgibt, sowie den Print in der Konsole und zwar mit der richtigen Zahl.

  • hey warum baut mysql keine verbindung auf?
    [21:51:12] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on '1**.7*.1**.6*' (10060)

  • Hallo, habe eine kurze Frage:



    Ich habe den Code geschrieben um die Fraktionsgehälter Dynamisch zu ändern:



    Code
    new rang,gehalt;
    if(sscanf(params,"dd",rang,gehalt))return SCM(playerid,frot,"[FEHLER]: /changesalary [Rang] [Gehalt]");
    format(str,sizeof(str),"gehalt%d",rang);
    FI[frakid][str] = gehalt;

    Meine Frage ist nur, ob das so funktioniert? Oder muss ich jetzt einzeln Abfragen was er als Rang eingegeben hat und es dann damit setzen?


    Herauskommen soll hierbei, wenn er z.B /changesalary 1 100 eingibt, dass dann unten das gesetzt wird;


    FI[frakid][gehalt1] = 100;

  • Wenn du das FI beibehalten willst, brauchst du ein 3-Dimensionales Array, einen String in einem Array Index zu schreiben macht auch keinen Sinn.
    Ich würde für die Gehälter ein zweites Array erstellen.


    new fSalary[MAX_FACTIONS][MAX_RANKS];


    zB dann für Fraktion 0, Rang 5 das Gehalt auf 1000 setzen:


    fSalary[0][4] = 1000;


    new rang, gehalt;
    new faction = pInfo[playerid][Fraktion];
    if(sscanf(params, "dd", rang, gehalt)))return SCM(blablub);
    fSalary[faction][rang] = gehalt;

  • Nein nein, danke das passt dann schon, eine Frage habe ich noch:


    Ich lasse meine Fraktionen über diesen Stock speichern:




    Code
    public OnGameModeExit()
    {
    	SaveFraks();
    	return 1;
    }

    Den lasse ich unter OnGameModeExit aufrufen, aber es speichert nicht, im Mysql log steht nichtmal ein Error, also befürchte ich, dass der Stock nichteinmal aufgerufen, ausgeführt wird.

    Einmal editiert, zuletzt von Simon2202 ()

  • Deine Werteübergabe ist falsch, du gibst Arrays in eine Normale Variable, somit wird nur ein Zeichen, welches keinen Sinn macht, gespeichert.
    Achte auch darauf, dass OnGameModeExit nicht aufgerufen wird, wenn du die Konsole nur schließt ( X ).


    Mache es so:


    Sollte es weiterhin nicht klappen, lasse dir mit einem print das Query ausgeben und schaue in den MySQL Log, ob sich dort Fehler befinden.
    Poste die beiden Logs gegebenenfalls, aber bitte in einem neuen Thread, da dieser Thread für kleine Scriptingfragen ist, und MySQL Debugging gehört da bei Weitem nicht mehr dazu.

  • Beitrag von Simon2202 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Yo, hab mal ne kleine Frage:


    Möchte mal mit Timern arbeiten, sprich eine ausgewählte Funktion soll erst nach einer bestimmten Zeit ausgeführt werden. Habe da mal bisschen in Wiki nachgelesen und SetTimerEx entdeckt.


    Nur verstehe ich nicht was die erste Funktion sein soll die man angeben muss.



    Habe da mal ein Testbefehl erstellt und hatte vor den Spieler zu freezen, Skin setzen und nach 5 Sekunden zu entfreezen.


    C
    CMD:test123(playerid,params[])
    {
    	TogglePlayerControllable(playerid,0 );
    	SetPlayerSkin(playerid, 300);
    	TogglePlayerControllable(playerid,1 );
    	SetTimerEx("TogglePlayerControllable", 5000, false, "i", playerid);
    	return 1;
    }


    Ich weiß das ist falsch, wie mach ich es richtig?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen