[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
  • verpass deinen Bots ne id un dann kannste de sie kicken/bannen oda so war das :D


    mfg[SGS]Krypton :thumbup:

  • Ich habe eine Frage:


    Und zwar habe ich folgenden Code aus wiki.sa-mp.com:


    PHP
    //...
    
    
    new string[64];
    format(string,sizeof(string),"Your score is: %d",GetPlayerScore(playerid));
    SendClientMessage(playerid,0xFFFFFFAA,string);


    Ich frage mich nun, wie ich 2 oder mehr solche Format Strings in einen Satz einbauen kann, zum Beispiel "%s wurde von dem Admin 'ADMINNAME' gekickt. Grund: 'REASON'"
    Hier würde ich nun 3 verschiedene Format Strings brauchen. Wie setzt ich dies um?

  • na so:


    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast eine Lernstunde für %s gestartet.",giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Fahrlehrer %s hat deine Lernstunde gestartet.",sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);


    :thumbup:


  • Ja das ist ja klar, du hast ja nun auch nur einen Format String (%s) je Satz, den du ausgeben möchtest. Ich brauch es aber mit 2 oder mehreren Format Strings in einem Satz. (s.o.)

  • new string[128];
    new a,b,c;
    format(string,sizeof(string),"Variable a: %i, Variable b: %i, Variable c: %i",a,b,c);




    Sinn erkannt? Selbe Prinzip kannst du auch einfach für Strings anwenden.


    Danke, hat mir sehr geholfen :)

  • Frage:
    Nach meinen Wissen gibt eine for-Schleifen den Wert aus, bei dem sie grad ist.
    Nun habe ich aber mitbekommen das bei mir was ned richtig geht.


    Hier mein Code:
    COMMAND:createhouse(playerid,params[])
    {
    for(new h;h<MAX_HOUSES;h++)
    {
    if(HouseInfo[h][hID]==0)
    {
    HouseInfo[h][hID]=h;
    break;
    }
    }
    return 1;
    }
    "h" ist hier immer "0".
    Ich weis nicht wo der Fehler liegen könnte.
    Wenn ihr den ganzen Code braucht, könnt ihr in gerne haben.


    mfg.
    Opa

  • Ich will ein Haussystem machen.
    Dadurch bekommt jedes Haus eine ID in diesen Fall "h".
    Dadurch die ID nicht doppelt vorkommen darf wird mit "if(HouseInfo[h][hID]==0)" abgefragt ob der Wert der aktuellen Variable auf 0 ist. (0=nicht erstellt).
    Nun habe ich aber das Problem das alle erstellten Häuser die id 0 haben.


    Ich hoffe so ist es ausführlich.


    mfg.
    Opa

  • Willst du das denn mehrmals machen oder nur einmalig beim Gamemode-Start? Wenn nein, musst du immer überprüfen, ob die HausID schon belegt oder verfügbar ist. Ein Weg dazu wäre zum Beispiel auch eine Zufallszahl (random(10000)) zu nehmen, diese, sofern sie nicht schon irgendwo anders zugewiesen worden ist dem Haus zuzuweisen und wenn doch nach der nächsten Zufallszahl zu suchen.

  • Ich kann grad nicht nachdenken, sorry.


    Mein theoretischer Plan wäre aber eine While-Schleife, der für jede Haus-ID eine Zufallszahl erstellt. Nachdem diese erstellt wurde wird mit einer FOR-Schleife durch alle Haus-IDs gegangen und überprüft, ob die ID schon einmal vorkommt. Nur, wenn das nicht passiert wird der While-Zähler erhöht, ansonsten wird die While-Schleife an der Stelle nochmal durchlaufen.


    Versuchs mal nach der Anleitung und poste es, vllt kriegst du es ja hin oder du siehst den Fehler..ansonsten kann ich es vllt morgen mal versuchen.

  • Du könntest auch eine Varibale erstellen die die "nächst höhere" freie Haus ID darstellt. Und diese halt immer hoch zählen beim häuser erstellen.
    Sieht bei mir so aus (ist allerdings Dynamisch und per MySQL ^^):
    //ganz oben
    new BUILDINGS = 1;//1, damit wir Haus ID 0 Nicht benutzen
    //dann das Public zum Häuser laden (bei mir aus der DB wegen MySQL)
    Public:LoadBuildings()
    {
    new str[512];
    mysql_query("SELECT * FROM `buildings`");
    mysql_store_result();
    new h=BUILDINGS;
    while(mysql_fetch_row(str))
    {
    sscanf(str,"e<p<|>iiis[24]fffiiii>", HausInfo[h]);
    DebugEx("HausInfo[%d][%d] (%s)",h,HausInfo[h][hHausID],str);
    h++;
    }
    BUILDINGS = h;
    mysql_free_result();
    HausUpdate();
    return 1;
    }
    ist zwar n bisschen blöd das so zu erklären weil ich nicht weiss was genau du vor hast und wie.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Ehm wie kann man es so machen das z.B eine Frak Polizei blau angezeigt wird also auf der map und in der Liste ?


    SetPlayerColor(playerid, 0x007DFFFF);


    Das ist setplayercolor mit der farbe blau aber jetzt weiss ich nicht wie man das so macht , das es bei einen polizisten ist (Die Frak heisst Polizei)
    und wo ich das ins script einfügen soll ...


    //EDIT:
    Also falls man >
    if(gTeam[playerid] == Polizei)
    machen muss

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