[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
  • "%s%d\t%s"
    Zu
    "%s%d\t%s\n"

    :D dieser kleine Fehler.
    Dank dir, hab aber jetzt einen blöden Fehler, wenn ich einen Auftrag bzw eine der Aufgelisteten Listitems lösche wurde das gelöscht aber einige sind dann doppelt angezeigt.
    Ist das ein SA:MP Bug?


    Also Listitem wird gelöscht ( Datenbank ) und wird neu geladen, gebe ich den Befehl erneut an wird mir die letzte angezeigte Listitem doppelt angezeigt...
    Ich hoffe ich hab das jetzt nicht umständlich geschrieben :3

  • @N1co sowas habe ich ja noch gar nicht, mir gehts erstmal um die Frakcars, privatcars finde ich schon ne einfache Lösung ^^

    Ich kann das leider nicht testen aber ich würde das ganz einfach so machen:

  • Poste bitte den Code davon.


    Hier sollen die Tickets aufgelistet werden, dass tun sie auch aber wenn eins gelöscht wurde, wird der letzte doppelt Angezeigt...


    Code
    new string1[2000];
    for(new i = 0; i < sizeof(TicketInfo); i++)
    {
    	if(TicketInfo[i][t_id] == 0) continue;
    	format(string1, sizeof(string1), "%s%d\t%s\t%s\t%s\t%s\n",string1,TicketInfo[i][t_id],TicketInfo[i][t_bereich],TicketInfo[i][t_absender]);
    }
    format(string1, sizeof(string1), "ID\tBereich\tAbsender\n%s", string1);
    ShowPlayerDialog(playerid, DIALOG_ADMIN_TICKETS, DIALOG_STYLE_TABLIST_HEADERS, "Support-Ticket",string1, "Annehmen", "Beenden");


    Und löschen tue ich es folgendermaßen:

    Code
    new query[56], ticketid = strval(inputtext);
    format(query, sizeof(query), "DELETE FROM `supportticket` WHERE `id` = '%i'", ticketid);
    mysql_function_query(handle, query, true, "LoadTickets", "");
    TicketInfo[i][t_id] = 0;


    Ich weiß nur nicht warum denn der letzte doppel Angezeigt wird...

  • Kannst du bitte den kompletten Dialog-Teil des Löschens posten, und dazu die LoadTickets Funktion?

    klar,


    Daten werden so geladen:


    Und im Dialog wird folgendermaßen gelöscht:

  • Ändere den Dialog hierzu ab:
    case DIALOG_TICKET_DEL:
    {
    if(!response) return ShowPlayerDialog(playerid, DIALOG_ADMIN_TICKET_INFO, DIALOG_STYLE_LIST, "Ticket {85BEFF}Informationen", "{85BEFF}1.{FFFFFF} Annehmen\n{85BEFF}2.{FFFFFF} Löschen\n{85BEFF}3.{FFFFFF} Frage anschauen", "Auswählen", "Zurück");
    if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Fehler{FFFFFF}! Ungültige Zahl!");
    new ticketid = strval(inputtext);
    for(new i = 0; i < sizeof(TicketInfo); i++)
    {
    if(TicketInfo[i][t_id] == ticketid)
    {
    new query[56];
    format(query, sizeof(query), "DELETE FROM `supportticket` WHERE `id` = '%i'", ticketid);
    mysql_function_query(handle, query, true, "LoadTickets", "");
    TicketInfo[i][t_id] = 0;
    SendClientMessage(playerid, COLOR_WHITE, "Ticket {A4FF85}erfolgreich{FFFFFF} gelöscht.");
    return 1;
    }
    }
    SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Fehler{FFFFFF}! Ticket ist nicht vorhanden.");
    return 1;
    }
    Der else-Teil musste aus der Schleife, sonst könntest du immer nur das erste Ticket löschen.


    Und das Laden hierzu:
    forward LoadTicketData();
    public LoadTicketData()
    {
    new num_fields, num_rows;
    cache_get_data(num_rows, num_fields, handle);
    if(num_rows > 0)
    {
    for(new i = 0; i < num_rows; i++)
    {
    TicketInfo[i][t_id] = cache_get_field_content_int(i, "id", handle);
    cache_get_field_content(i, "Absender", TicketInfo[i][t_absender], handle, 35);
    cache_get_field_content(i, "Bereich", TicketInfo[i][t_bereich], handle, 35);
    }
    }
    for(new i = num_rows; i < sizeof(TicketInfo); i++) TicketInfo[i][t_id] = 0;
    return 1;
    }
    Dies setzt die Variablen am Ende wieder zu 0, somit kommt kein doppeltes Ticket am Ende vor.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Bei der Zeile kommt das die Zeile zu Lang ist wie kann ich das Kürzer Schreiben ?


    Code
    if(strval(inputtext) == 288 || strval(inputtext) == 284 || strval(inputtext) == 283 || strval(inputtext) == 282 || strval(inputtext) == 281 || strval(inputtext) == 280 || strval(inputtext) == 265 || strval(inputtext) == 266 || strval(inputtext) == 267 || strval(inputtext) == 306 || strval(inputtext) == 307 || strval(inputtext) == 300 || strval(inputtext) == 301 || strval(inputtext) == 302 || strval(inputtext) == 308 || strval(inputtext) == 309 || strval(inputtext) == 310 || strval(inputtext) == 311)
    			{
  • Hallo,


    hab eine kurze Frage, in der Konsole erhalte ich folgende Meldung:
    sscanf warning: Strings without a length are deprecated, please add a destination size.


    Code:


    ( nutze den sscanf plugin )
    Ich versteh grad nicht was der meint mit der Stringlänge?

  • Man sollte die string Grösse angeben. Ging glaube ich so:

    Code
    if(sscanf(params,"s[4]",chatstatus))return SendClientMessage(playerid, COLOR_WHITE, "Nutze: {FFD785}/togchat{FFFFFF} [an/aus]");

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gefunden ().
  • Wo Liegt der Fehler ?

    Code
    C:\Users\Tobias\Desktop\Reallife\gamemodes\grandlarc.pwn(552) : warning 213: tag mismatch
    C:\Users\Tobias\Desktop\Reallife\gamemodes\grandlarc.pwn(552) : error 032: array index out of bounds (variable "pInfo")


    Code
    if(pInfo[playerid][pRang] == 0) return pInfo[fID][f_rang0lohn];


    In:

    Code
    if(pInfo[playerid][pRang] == 0) return pInfo[playerid][f_rang0lohn] = 3000;
  • Hallo ich habe mal eine Kleine Frage unswa habe ich mir ein Befehl gemacht wo die Fraktionscars von meiner Fraktion drinne stehen aber wie kann ich wenn ich auf das Car klicke die Carid unter OnDialogResponse herrausbekommen ?


    Code
    new fID = GetPlayerFrakID(playerid),string[500];
        for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    	{
    	    if(fracVehicle[i][e_fracID] != fID) continue;
    	    format(string,sizeof(string),"%s\n%d",string,fracVehicle[i][e_modelID]);
    	}
        ShowPlayerDialog(playerid,DIALOG_FCARS,DIALOG_STYLE_LIST,"Fraktions Fahrzeuge",string,"Weiter","Abbruch");
    	return 1;