[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
  • Hallo


    Habe ein blödes Problem.
    Mein Crashdetect Plugin hat mir soeben verraten das ich an irgenteiner Stelle oder nach bestimmten Ereignissen eine maximale Array Größe von 2000 überschreite.
    Unzwar ist der Größte Index 1999, der wird an irgenteiner Stelle überschritten.


    Mir wird auch gesagt wann das passiert, das Public wird genannt, doch in diesem public habe ich kein Array von 2000.


    Also habe ich die Samp Limits angeschaut, und gesehen das es maximal 2000 Fahrzeuge geben kann und dachte, dass ich den Fehler gefunden habe, da wird zu dem Zeitpunkt vom Crash auch mit Autos "gespielt" haben.


    Habe soeben ein kleinen testbefehl eingebaut, der mir die Anzahl der Autos wiedergibt (ca 750-800 also weit unter 2000):
    new count = 0;
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(IsValidVehicle(i)) count++;
    }
    new str[50];
    format(str,50,"Fahrzeuge: %d", count);
    SendClientMessage(playerid, COLOR_RED, str);
    return 1;


    Wie gesagt: Habe alle Arrays überprüft, keiner hat eine größe von 2000. Gibt es sonst noch Möglichkeiten? Der Punkt ist das der Wert von genau 1999 überschritten wurde und somit außerhalb der größe des Arrays ist.

  • Abend,
    habe ein kleines Problem.
    Wenn der Spieler einen Befehl falsch eintippt, soll kommen: "Benutze: /blablabla"


    Wenn der Spieler aber jetzt nur wie in meinem Fall: /bc eintippt kommt diese Meldung nicht und der befehl wird ausgeführt.


    Hier mein Code der abfrage:


    ocmd:bc(playerid,params[])
    {
    if(PlayerInfo[playerid][pFrak]== 1)
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,0x0085C4F6, "Benutze:{FEFEFE} /bc [Text]");

  • Er kann auch einfach einen Debug-Test einfügen:
    printf("Fraktion: %d",PlayerInfo[playerid][pFrak]);
    if(PlayerInfo[playerid][pFrak]== 1)
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,0x0085C4F6, "Benutze:{FEFEFE} /bc [Text]");
    So wird dir die Fraktions-ID vor der Abfrage ausgegeben, so hast du eine einfache Orientierung, ohne etwas zu löschen.
    Oder du schaust einfach in deiner Datenbank bzw. in deinem Textdokument nach :)

  • Danke aber ich bin in der Fraktion weil ich ja auch am bestimmten Fraktionsspawn spawne :)

  • Beitrag von Apokrate ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • stock GetRankName(frakID, rank)
    {
    printf("FraktionsID: %d - Rank: %d",frakID,rank);
    printf("fRangName0: %s",fRang[frakID][fRangName0]);
    printf("fRangName1: %s",fRang[frakID][fRangName1]);
    printf("fRangName2: %s",fRang[frakID][fRangName2]);
    printf("fRangName3: %s",fRang[frakID][fRangName3]);
    printf("fRangName4: %s",fRang[frakID][fRangName4]);
    printf("fRangName5: %s",fRang[frakID][fRangName5]);
    printf("fRangName6: %s",fRang[frakID][fRangName6]);
    printf("fRangName7: %s",fRang[frakID][fRangName7]);
    printf("fRangName8: %s",fRang[frakID][fRangName8]);
    new string[50];
    switch(rank)
    {
    case 0: format(string, sizeof(string), fRang[frakID][fRangName0]);
    case 1: format(string, sizeof(string), fRang[frakID][fRangName1]);
    case 2: format(string, sizeof(string), fRang[frakID][fRangName2]);
    case 3: format(string, sizeof(string), fRang[frakID][fRangName3]);
    case 4: format(string, sizeof(string), fRang[frakID][fRangName4]);
    case 5: format(string, sizeof(string), fRang[frakID][fRangName5]);
    case 6: format(string, sizeof(string), fRang[frakID][fRangName6]);
    case 7: format(string, sizeof(string), fRang[frakID][fRangName7]);
    case 8: format(string, sizeof(string), fRang[frakID][fRangName8]);
    }
    return string;
    }
    Lass es mal so printen, und schaue was passiert.
    Zeige die Log her.

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