Als drittes Argument erwartet mysql_format die Länge der zu formatierenden Zeichenfolge als integer
[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
-
-
und das heißt?
-
-
Moin Leute!
Ich bin dabei mein Teleport System zu schreiben, Speichern klappt Problemlos, aber das Laden nicht irgendwie.
Sobald ich den Befehl eingebe, sagt er mir, das keine Teleports vorhanden sei, obwohl in der Datenbank drei Einträge gibt.
Der Befehl:
ocmd:ateleport(playerid, params[])
{
if(!IstSpielerEinAdmin(playerid,2))return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du hast nicht die Rechte diesen Befehl zu benutzen!");
if(!sInfo[playerid][sEingeloggt])return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du bist nicht eingeloggt!");
new buffer[512];
for(new i; i < MAX_TELEPORTS; i++)
{
if(TeleInfo[i][set] == true)
{
format(buffer, sizeof(buffer), "{FFFFFF}%s%s\n", buffer, TeleInfo[i][tName]);
}
}
if(strlen(buffer) == 0)return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Es sind derzeit keine Teleports vorhanden!");
ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "{FFFFFF}Teleports", buffer, "Porten", "Abbrechen");
return 1;
}Die Funktion zum Laden:
forward LoadTeleports();
public LoadTeleports()
{
if(cache_get_row_count(MySQL_Handle))
{
for(new i,y=cache_get_row_count(MySQL_Handle);i<y;i++)
{
TeleInfo[i][tX] = cache_get_field_content_float(i, "tX", MySQL_Handle);
TeleInfo[i][tY] = cache_get_field_content_float(i, "tY", MySQL_Handle);
TeleInfo[i][tZ] = cache_get_field_content_float(i, "tZ", MySQL_Handle);
TeleInfo[i][tInterior] = cache_get_field_content_int(i, "tInterior", MySQL_Handle);
TeleInfo[i][tVWorld] = cache_get_field_content_int(i, "tVWorld", MySQL_Handle);
cache_get_field_content(i, "tName", TeleInfo[i][tName], MySQL_Handle, 32);
TeleInfo[i][set] = true;
}
}
printf("Aktuele Teleports: %i/%i", cache_get_row_count(MySQL_Handle), MAX_TELEPORTS);
return 1;
}Hoffe einer kann mir Helfen, wäre sehr Dankbar!
-
Hi, ich habe mir ein kleines FilterScript erstellt womit ich in der server_log.txt die Befehle printe die auf meinem Server ausgeführt werden.
Nun möchte ich das aber in einer seperaten Datei abspeichern, dennoch genau wie in dem folgenden Code ohne Zugriff auf das Gamemode zu haben (sprich nicht in jedem Befehl irgendeine Zeile hinzufügen damit der Befehl geloggt wird).Gibt es eine Möglichkeit alle Befehle die ausgeführt werden in einer seperaten Datei abzuspeichern? Aktueller Code schaut so aus, taucht aber wie gesagt nur in der server_log auf.
public OnPlayerCommandText(playerid, cmdtext[])
{
new playername[24];
GetPlayerName(playerid, playername, 24);
printf("[CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext);
return 0;
} -
Moin Leute!
Ich bin dabei mein Teleport System zu schreiben, Speichern klappt Problemlos, aber das Laden nicht irgendwie.
Sobald ich den Befehl eingebe, sagt er mir, das keine Teleports vorhanden sei, obwohl in der Datenbank drei Einträge gibt.Der Befehl:ocmd:ateleport(playerid, params[]){if(!IstSpielerEinAdmin(playerid,2))return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du hast nicht die Rechte diesen Befehl zu benutzen!");if(!sInfo[playerid][sEingeloggt])return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du bist nicht eingeloggt!");new buffer[512];for(new i; i < MAX_TELEPORTS; i++){if(TeleInfo[i][set] == true){format(buffer, sizeof(buffer), "{FFFFFF}%s%s\n", buffer, TeleInfo[i][tName]);}}if(strlen(buffer) == 0)return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Es sind derzeit keine Teleports vorhanden!");ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "{FFFFFF}Teleports", buffer, "Porten", "Abbrechen");return 1;}Die Funktion zum Laden:forward LoadTeleports();public LoadTeleports(){if(cache_get_row_count(MySQL_Handle)){for(new i,y=cache_get_row_count(MySQL_Handle);i<y;i++){TeleInfo[i][tX] = cache_get_field_content_float(i, "tX", MySQL_Handle);TeleInfo[i][tY] = cache_get_field_content_float(i, "tY", MySQL_Handle);TeleInfo[i][tZ] = cache_get_field_content_float(i, "tZ", MySQL_Handle);TeleInfo[i][tInterior] = cache_get_field_content_int(i, "tInterior", MySQL_Handle);TeleInfo[i][tVWorld] = cache_get_field_content_int(i, "tVWorld", MySQL_Handle);cache_get_field_content(i, "tName", TeleInfo[i][tName], MySQL_Handle, 32);TeleInfo[i][set] = true;}}printf("Aktuele Teleports: %i/%i", cache_get_row_count(MySQL_Handle), MAX_TELEPORTS);return 1;}
Hoffe einer kann mir Helfen, wäre sehr Dankbar!
Von wo holst du diesen MYSQL_Handler her?
Du gehts nämlich durch die Rows dieses Handlers durch.Hi, ich habe mir ein kleines FilterScript erstellt womit ich in der server_log.txt die Befehle printe die auf meinem Server ausgeführt werden.
Nun möchte ich das aber in einer seperaten Datei abspeichern, dennoch genau wie in dem folgenden Code ohne Zugriff auf das Gamemode zu haben (sprich nicht in jedem Befehl irgendeine Zeile hinzufügen damit der Befehl geloggt wird).Gibt es eine Möglichkeit alle Befehle die ausgeführt werden in einer seperaten Datei abzuspeichern? Aktueller Code schaut so aus, taucht aber wie gesagt nur in der server_log auf.
public OnPlayerCommandText(playerid, cmdtext[]){ new playername[24]; GetPlayerName(playerid, playername, 24); printf("[CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext); return 0;}
Du kannst es z.b so machen:
-
Kriege folgende Errors
#include <dini>
public OnPlayerCommandText(playerid, cmdtext[])
{new File:log = fopen("command_log.txt", io_append);
new playername[24];
GetPlayerName(playerid, playername, 24);
fwrite(log, "([CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext);
fwrite(log, "\n");
fclose(log);
/*
new playername[24];
GetPlayerName(playerid, playername, 24);
printf("[CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext);
return 0;
*/
}logcmds.pwn(34) : warning 202: number of arguments does not match definition
logcmds.pwn(34) : warning 202: number of arguments does not match definition
logcmds.pwn(34) : warning 202: number of arguments does not match definition -
Du musst den String erst formatieren also so:
new File:log = fopen("command_log.txt", io_append);
new playername[24], logstring[256];
GetPlayerName(playerid, playername, 24);
format(logstring, sizeof(logstring), "[CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext);
fwrite(log, logstring);
fwrite(log, "\n");
fclose(log); -
Hey,
ich will die Skins für jeden Rank im Skript definieren. Dies hab ich auch geschafft doch es scheitert immoment in der Anwendung.
static const f_skins[][] = { //Es geht nach Ranks
{"301","284","265","266","267","280","280","281","281","286","283","283"},//LSPD
{"302","303","282","282","282","310","311","285","288","288"},//LVPD
};Die erste reihe ist für das LSPD dann kommt das LVPD.
Ich möchte das Verbinden mit meinem Makeleader befehl:ocmd:makeleader(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,4) || !IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
new pID, fraction, string[128];
if(sscanf(params,"ui",pID,fraction))return SendClientMessage(playerid,-1,"Tippe: /makeleader [spieler] [fraktion]");
if(fraction<0||fraction>15)return SendClientMessage(playerid,-1,""#error_farbe"Bitte gültigen Fraktion angeben.");
PlayerInfo[pID][pFraction] = fraction;
if(fraction == 2){ PlayerInfo[pID][pFrank] = 10; } else { PlayerInfo[pID][pFrank] = 12; }
SetPlayerSkin(pID, f_skins[PlayerInfo[pID][pFrank]]);
SaveUserStats(pID);
format(string, sizeof(string),""#info_farbe"%s hat dich zum Leader der Fraktion %s gemacht.",PlayerInfo[playerid][pName],f_name[PlayerInfo[pID][pFraction]]);
SendClientMessage(pID,-1,string);
format(string, sizeof(string),""#success_farbe"Du hast erfolgreich %s zum Leader der Fraktion %s gemacht.",PlayerInfo[pID][pName],f_name[PlayerInfo[pID][pFraction]]);
SendClientMessage(playerid,-1,string);
format(string, sizeof(string) ,"%s hat %s zum Leader der Fraktion %s gemacht.",PlayerInfo[playerid][pName],PlayerInfo[pID][pName],f_name[PlayerInfo[pID][pFraction]]);
Log("AdminLog",string);
return 1;
} -
Ohne die ", das sind keine Strings, sondern Zahlen

-
-
meinst du da wo ich Sie definiere?
Ja...bei der Deklaration von f_skins

-
Ergo so?
static const f_skins[][] = { //Es geht nach Ranks
{"301""284""265""266""267""280""280""281""281""286""283""283"},//LSPD
{"302""303""282""282""282""310""311""285""288""288"},//LVPD
};? -
Ergo so?
Was? Ich sagte OHNE "
...wtf
So: -
Er setzt sie ab und zu, doch bei mir buggt grad alles.
Hier deklariere hier alles:
static const f_name[][] = {"Zivilist","Los Santos Police Department","Las Venturas Police Department","San Andreas Medical Department","Ordnungsamt","News Reporter","Hitman","Grove Street","Ballas","Yakuza","Triaden","S.F. Rifa","Präsident","Transport GmbH","Vagos"};
static const a_rang[][] = {"User","Supporter","Moderator","Administrator","Master Administrator","Projektleiter"};
static const f_rang[][][] = {
{"Trainee","Police Officer","Detective","Sergeant","Lieutenant","Captain","Commander","Deputy Chief of Police","Assistant Chief of Police","Chief of Police"}, //SAPD
{"Trainee","Police Officer I","Police Officer II","Sergeant","Lieutenant","Captain","Deputy Chief","Assistant Sheriff","Undersheriff","Sheriff"}};
static const f_skins[][] = { //Es geht nach Ranks
{0,0,0,0,0,0,0,0,0,0},//Zivi
{301,284,265,266,267,280,281,286,283,283},//LSPD
{302,303,282,282,282,310,311,285,288,288}};
Und hier mein Befehl makeleader:
ocmd:makeleader(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,4) || !IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
new pID, fraction, string[128];
if(sscanf(params,"ui",pID,fraction))return SendClientMessage(playerid,-1,"Tippe: /makeleader [spieler] [fraktion]");
if(fraction<0||fraction>15)return SendClientMessage(playerid,-1,""#error_farbe"Bitte gültigen Fraktion angeben.");
PlayerInfo[pID][pFraction] = fraction;
PlayerInfo[pID][pFrank] = 10;
SetPlayerSkin(pID, f_skins[PlayerInfo[pID][pFraction]][PlayerInfo[pID][pFrank]]);
SaveUserStats(pID);
format(string, sizeof(string),""#info_farbe"%s hat dich zum Leader der Fraktion %s gemacht.",PlayerInfo[playerid][pName],f_name[PlayerInfo[pID][pFraction]]);
SendClientMessage(pID,-1,string);
format(string, sizeof(string),""#success_farbe"Du hast erfolgreich %s zum Leader der Fraktion %s gemacht.",PlayerInfo[pID][pName],f_name[PlayerInfo[pID][pFraction]]);
SendClientMessage(playerid,-1,string);
format(string, sizeof(string) ,"%s hat %s zum Leader der Fraktion %s gemacht.",PlayerInfo[playerid][pName],PlayerInfo[pID][pName],f_name[PlayerInfo[pID][pFraction]]);
Log("AdminLog",string);
return 1;
}Ich hab keine Warnings/Errors
-
Alles anzeigen
New fscp_strecke1[][][fahrschulcheckpoints] =
{
{
//Route 1
{0.0,0.0,0.0},
{0.0,0.0.0.0}
},
{
//Route 2
{0.0,0.0,0.0},
{0.0,0.0,0.0}
}
}So sieht das ca aus
wie kann ich von der 2 Strecke die sizeof auslesen ?
Welche Strecke habe ich unter Route gespeichert -
wie kann ich von der 2 Strecke die sizeof auslesen ?Welche Strecke habe ich unter Route gespeichert
Du kannst in sizeof die Dimensionen mit angeben (glaub ich zumindest).
Quasi:Codesizeof(fscp_streacke1) //Gesamt sizeof(fscp_streacke1[]) //Erste Dimension sizeof(fscp_streacke1[][]) //Zweite Dimension sizeof(fscp_streacke1[][][]) //Dritte Dimension@The Sensei
Was genau geht denn nicht / nur ab und zu? -
-
Nein Dimensionen sind was anderes.
Code
Alles anzeigennew fscp_strecke1[][][fahrschulcheckpoints] = {//Erste Dimension {//Zweite Dimension //Route 1 {0.0,0.0,0.0},//Dritte Dimension {0.0,0.0.0.0}//Dritte Dimension }, {//Zweite Dimension //Route 2 {0.0,0.0,0.0},//Dritte Dimension {0.0,0.0,0.0}//Dritte Dimension } }Ich bin mir nicht sicher ob du das so angeben kannst:
Musst du mal probieren, hab länger nicht mehr mit PAWN gearbeitet. -
Nein dann kommt
Error 001 expected token: "]",but found "-integer value-"
warning 215: expression Has no effect -
