"%s%d\t%s"
Zu
"%s%d\t%s\n"
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
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"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:
Code
Alles anzeigenif(strcmp(cmd, "/motor", true) == 0) { new car = GetPlayerVehicleID(playerid); if(Vehicle[car][fFrak] == FRAKID ) //Die ID der Fraktion eintragen. { if(!(pInfo[playerid][frak] == FRAKID)) //Die ID der Fraktion eintragen, die das Fahrzeug benutzen darf. { SendClientMessage(playerid, FARBE, "Du hast keine Schlüssel!"); return 1; } } }
-
Also Listitem wird gelöscht ( Datenbank ) und wird neu geladen, gebe ich den Befehl erneut an wird mir die letzte angezeigte Listitem doppelt angezeigt...
Poste bitte den Code davon.
-
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...Codenew 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:
Codenew 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... -
Und löschen tue ich es folgendermaßen:
Kannst du bitte den kompletten Dialog-Teil des Löschens posten, und dazu die LoadTickets Funktion?
-
Kannst du bitte den kompletten Dialog-Teil des Löschens posten, und dazu die LoadTickets Funktion?
klar,
Daten werden so geladen:
Code
Alles anzeigenforward LoadTickets(); public LoadTickets() { new query[56]; format(query, sizeof(query), "SELECT * FROM `supportticket`"); mysql_function_query(handle, query, true, "LoadTicketData", ""); return 1; } 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); } } return 1; }
Und im Dialog wird folgendermaßen gelöscht:
Code
Alles anzeigencase 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!"); for(new i = 0; i < sizeof(TicketInfo); i++) { new ticketid = strval(inputtext); 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; } else SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Fehler{FFFFFF}! Ticket ist nicht vorhanden."); return 1; } return 1; }
-
Ä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. -
-
-
Bei der Zeile kommt das die Zeile zu Lang ist wie kann ich das Kürzer Schreiben ?
Codeif(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) {
-
switch(strval(inputtext))
{
case 265..267,280..284,288,300..302,306..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:
Code
Alles anzeigennew str[10],chatstatus[4]; if(sscanf(params,"s",chatstatus))return SendClientMessage(playerid, COLOR_WHITE, "Nutze: {FFD785}/togchat{FFFFFF} [an/aus]"); if(strcmp(chatstatus,"an",true) == 0) { } else if(strcmp(chatstatus,"aus",true) == 0) { }
( nutze den sscanf plugin )
Ich versteh grad nicht was der meint mit der Stringlänge? -
-
Beitrag von reaL. ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Dank dir @TheBlueFireKing
Dachte ich mach ne Variable und dort gebe ich die Stringlänge an. Funkioniert, danke! (y) -
Beitrag von reaL. ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gefunden (). -
-
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 ?
Codenew 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;
-
new fID = GetPlayerFrakID(playerid), count = -1;
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fracVehicle[i][e_fracID] != fID) continue;
count++;
if(count == listitem)
{
//Das Fahrzeug mit dem Index "i" wurde angeklickt.
break;
}
}