[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
  • Ich habe mir gerade ein Befehl erstellt um zu sehen wie mein gemapptes Nachts aussieht, das Problem ist nur das der Befehl halt funktioniert aber nicht so wie ich möchte.


    Mein Code sieht so aus:


    if(!strcmp(cmdtext, "/settime 0", true))
    SetPlayerTime(playerid, 0, 0); // Midnight
    SendClientMessage(playerid,GELB,"Time set to Midnight");
    return 1;
    }


    Das Problem ist der Befehl funktioniert auch wenn ich nur /settime eingebe oder so..


    Ich weiß das ich irgendwo eine Zahl anhängen muss, aber wo :S


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Mein Stats System Funtkioniert eig. aber es kommt bei Fraktion ein Punkt und bei IP eine 50.


    ocmd:stats(playerid)
    {
    new string[128];
    format(string, sizeof(string),"Name: %s\nLevel: %d\nFraktion: %s Rang: %d\n\nGeld: %d\nKills: %d Tode: %d\n\nAdminlevel: %i\nIP: %i",NamePlayer(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pRang],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pIP]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX, "Stats",string,"Ok","");
    return 1;
    }

  • @[LnD]JustMe.77:
    if(!strcmp(cmdtext, "/settime", true))
    {
    if(!strcmp(cmdtext,"0",true))
    {
    SetPlayerTime(playerid, 0, 0); // Midnight
    SendClientMessage(playerid,GELB,"Time set to Midnight");
    }
    return 1;
    }
    Ich weiß jetzt nicht ob das so mit der "0" klappt.


    @FerienFreak:
    Ist "SpielerInfo[playerid][pFraktion]" ein Integer oder ein String?
    Kannst uns auch einfach mal dein Enum dazu zeigen.

  • ICy.:


    Ne, ich bin mir sicher das dass damit nix zu tun hat, ich glaube eher ein Problem mit return 1 oder return 0, habe beides probiert doch das hilft nicht.
    Ich habe außerdem vergessen zu erwähnen das jedes mal kommt "Time set to night" egal was für ein Befehl ich benutze, und das soll nicht passieren.



    if(!strcmp(cmdtext, "/setday 3", true))
    {
    SendClientMessage(playerid,GELB,"Weather changed to extra sunny.");
    SetWeather(0);
    return 1;
    }

    if(!strcmp(cmdtext, "/settime", true))
    SetPlayerTime(playerid, 0, 0); // Midnight
    SendClientMessage(playerid,GELB,"Time set to Midnight");
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Was ich gerade sehe. Bekommst du eigentlich keinen Fehler?
    Du hast nämlich eine Klammer vergessen.
    if(!strcmp(cmdtext, "/settime", true))
    SetPlayerTime(playerid, 0, 0); // Midnight
    SendClientMessage(playerid,GELB,"Time set to Midnight");
    return 1;
    }
    zu
    if(!strcmp(cmdtext, "/settime", true))
    {
    SetPlayerTime(playerid, 0, 0); // Midnight
    SendClientMessage(playerid,GELB,"Time set to Midnight");
    return 1;
    }

  • pIP muss erst mal ein String sein.
    Sprich so: pIP[16],
    Die Zeichenlänge 16 reicht.
    Jetzt musst du gucken. Wie heißt das Array für dieses Enum?
    enum fraktEnum{

    Einmal editiert, zuletzt von AirM4X ()

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

  • Möglicherweise sind da zwei Preview Models übereinander gelegt worden, das könnte ich mir vorstellen.


    Dann poste bitte den Code wenn du wieder am PC bist, ohne Code können wir dir nicht helfen, es weiß ja keiner was du am Code gemacht hast, bzw was da ist oder was fehlt.


    Gute Nacht


    Wenn ich die jetzt übereinander mache, wird nur ein andere Skin angezeigt? Könntest du mir bitte einen Beispiel geben?


    -> Jetzt zum Crash problem: Es ist irgendwie verschwunden? :D

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • @FerienFreak:
    Für das 1. Enum hast du doch das Array SpielerInfo.
    Wie heißt das Array für das 2. Enum?


    @[GeD]Max:
    So wie ich das verstanden habe, sollst du nicht die TextDraws übereinander machen, sondern die sind möglicherweise schon übereinander. Laut Jeffry sollst du uns mal den Code schicken, was sicher sinnvoller ist :)

    So ein Blödsinn von mir :) - Falsch verstanden..

    Einmal editiert, zuletzt von AirM4X ()

  • Mein derzeitiger Code:



    if(clickedid == Textdraw6) // United States
    {
    PlayerTextDrawSetPreviewModel(playerid, Textdraw3[playerid], 287); // Mit das hier sol dann auch die M4 gezeigt werden
    PlayerTextDrawShow(playerid, Textdraw3[playerid]);
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}United States {FFFFFF}als Team ausgewählt!");
    gTeam[playerid] = TEAM_UNITEDSTATES;
    if(mysql_CheckAccount(playerid) == 1)
    {
    SpielerInfo[playerid][pTeamAuswahl] = 1;
    }
    else if(mysql_CheckNoAccount(playerid) == 1)
    {
    NoSpielerInfo[playerid][pNoTeamAuswahl] = 1;
    }
    }
    //....

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Ja, du musst noch ein 2. TextDraw erstellen, auch mit den PreviewModel enthalten, und dort zeigst du dann die Model-ID 356 an. (356 ist die M4)
    Versuch das mal, ansonsten melde dich noch einmal.

  • Jetzt wird zwar die M4 angezeigt, aber der skin der schon vorher drauf ist z.b. Army skin soll die M4 halten. also da mit der M4 stehen.

    if(clickedid == Textdraw6) // United States
    {
    PlayerTextDrawSetPreviewModel(playerid, Textdraw3[playerid], 287);
    PlayerTextDrawShow(playerid, Textdraw3[playerid]);
    PlayerTextDrawSetPreviewModel(playerid, Textdrawdrei[playerid], 356);
    PlayerTextDrawShow(playerid, Textdrawdrei[playerid]);
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}United States {FFFFFF}als Team ausgewählt!");
    gTeam[playerid] = TEAM_UNITEDSTATES;
    if(mysql_CheckAccount(playerid) == 1)
    {
    SpielerInfo[playerid][pTeamAuswahl] = 1;
    }
    else if(mysql_CheckNoAccount(playerid) == 1)
    {
    NoSpielerInfo[playerid][pNoTeamAuswahl] = 1;
    }
    }
    //..


    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • @FerienFreak:
    Für das 1. Enum hast du doch das Array SpielerInfo.
    Wie heißt das Array für das 2. Enum?


    @[GeD]Max:
    So wie ich das verstanden habe, sollst du nicht die TextDraws übereinander machen, sondern die sind möglicherweise schon übereinander. Laut Jeffry sollst du uns mal den Code schicken, was sicher sinnvoller ist :)

    So ein Blödsinn von mir :) - Falsch verstanden..


    new fInfo[][fraktEnum] = {
    {"Zivilist", 0.0, 0.0, 0.0, 0.0, 0, 0, WEIß},
    {"LSPD", 1526.4583,-1677.8275,5.8906, 266.6004, 0, 0, BLAU},
    {"Ordnungsamt", 0.0, 0.0, 0.0, 0.0, 0, 0, BABYBLAU}
    };

  • @FerienFreak:
    ocmd:stats(playerid)
    {
    new string[256];
    format(string, sizeof(string),"Name: %s\nLevel: %d\nFraktion: %s Rang: %d\n\nGeld: %d\nKills: %d Tode: %d\n\nAdminlevel: %i\nIP: %i",NamePlayer(playerid), SpielerInfo[playerid][pLevel],fInfo[SpielerInfo[playerid][pFraktion]][f_name],SpielerInfo[playerid][pRang],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pIP]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX, "Stats",string,"Ok","");
    return 1;
    }
    So.
    pIP haste zum String gemacht, nech?
    #edit:
    Habe den String mal etwas erhöht :)

  • Kann mir einer sagen, wie ich hier strcat benutze?



    new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
    getdate(Tag,Monat,Jahr);
    gettime(Stunde,Minute,Sekunde);
    format(query,sizeof(query),"d.d.%d - d:d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
    mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pVersuche`, `pLeben`) VALUES ('%e','%e','%d','%d','%d','%d','0','0','%s','%s','%d','100.0')",Spieler[playerid][pName],inputtext,Spieler[playerid][pAlter],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWrongPass],Spieler[playerid][pLeben]);
    mysql_tquery(DBHandle, query, "", "");
    Spieler[playerid][pLogged] = true;
    SpawnPlayer(playerid);
    return 1;



    bekomme in der mysql_format Zeile ein Fehler error 075: input line too long (after substitutions)

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Brauchst du gar nicht, kannst es auch so kürzen.
    mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pVersuche`, `pLeben`) VALUES ('%e','%e','%d','%d','%d','%d','0','0','%s','%s','%d','100.0')",
    Spieler[playerid][pName],inputtext,Spieler[playerid][pAlter],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWrongPass],Spieler[playerid][pLeben]);

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