[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Danke dir, es funktioniert gut nur ein kleines Problem. Es wird kein Zeilenumbruch gemacht und der Inhalt der Log schaut so aus:
[CMD LOG]: << JustMe.77 used /test121 >> [CMD LOG]: << JustMe.77 used /hallo123 >> etc
Aktueller Code
public OnPlayerCommandText(playerid, cmdtext[])
{new File:log = fopen("command_log.txt", io_append);
new playername[24], logstring[256];
GetPlayerName(playerid, playername, 24);
format(logstring, sizeof(logstring), "[CMD LOG]: << %s used %s >>", playername, cmdtext);
fwrite(log, logstring);
fwrite(log, "\n");
fclose(log);
} -
Danke dir, es funktioniert gut nur ein kleines Problem. Es wird kein Zeilenumbruch gemacht und der Inhalt der Log schaut so aus:
[CMD LOG]: << JustMe.77 used /test121 >> [CMD LOG]: << JustMe.77 used /hallo123 >> etc
Setz das \n doch direkt in deinen String
format(logstring, sizeof(logstring), "[CMD LOG]: << %s used %s >>\n", playername, cmdtext);
da sparst du dir eine Zeile und einen weiteren Funtionsaufruf.Mit welchem Editor öffnest du die datei? der Standard Notepad von Windows hat da so seine schwierigkeiten. Notepad++ hingegen stellt es richtig dar. So jedenfalls meine Erfahrung
-
-
@[LnD]JustMe.77 Das würd ich so nicht sagen, damals als ich mein GF noch auf ini Basis hatte, war das auch so. Da konnte man keinen Account öffnen ohne das nicht alles in einer reihe angezeigt wurde.
Im Notepad++ hat er alles untereinander angezeigt, halt da wo Zeilenumbrüche waren. Seit dem vertrau ich eigentlich nur noch auf Notepad++. Vor allem weil er auch syntax Highlighting usw kann.Versuchs einfach mal: https://notepad-plus-plus.org/download/v6.9.1.html
-
Danke, hat mit Nodepad geklappt
Letze Frage zu diesem Thema, wie logge ich die Zeit an dem der Befehl benutzt wurde + das Datum ? -
-
Kaliber:
Ok Danke
Könntest du mir dort mal Helfen komme einfach nicht weiter.
Mysql Problem -
@[LnD]JustMe.77 hier ist mal ein Beispiel
new File:log = fopen("command_log.txt", io_append);
new playername[24], logstring[256], hour, minute, second, day, month, year;
GetPlayerName(playerid, playername, 24);
getdate(year, month, day);
gettime(hour, minute, second);
format(logstring, sizeof(logstring), "[%02d.%02d.%d, %d:%d:%d] [CMD LOG]: << %s used %s >>\n", day, month, year, hour, minute, second, playername, cmdtext);
fwrite(log, logstring);
fclose(log); -
Hey ich weiß nicht aber irgendwas stimmt mit meinem /f befehl nicht. Ich bekomme keine Errors o.Ä.
ocmd:f(playerid,params[])
{
new text[144],name[MAX_PLAYER_NAME];
if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]");
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(text,144,""#fchat_farbe"*%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,params);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){
SendClientMessage(i, -1, text);
} else {
printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,params);
}
}
return 1;
} -
ocmd:f(playerid,params[])
{
new text[144],name[MAX_PLAYER_NAME], msg[144];
if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]");
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(msg,144,""#fchat_farbe"*%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){
SendClientMessage(i, -1, msg);
} else {
printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
}
}
return 1;
} -
Er zeigt mir immer noch nichts im Chat (oder Konsole) an.
@SynonymousZ -
ocmd:f(playerid,params[])
{
new text[144],name[MAX_PLAYER_NAME], msg[144];
if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]");
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
print("Debug - 1");
printf("%s - %s - %s", name,f_rang[PlayerInfo[playerid][pFrank]-1], text);
format(msg,144,""#fchat_farbe"*%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){
SendClientMessage(i, -1, msg);
} else {
printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
}
}
return 1;
}
Schreibs mal so und sag was er printet -
ocmd:f(playerid,params[]){ new text[144],name[MAX_PLAYER_NAME], msg[144]; if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung"); if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]"); GetPlayerName(playerid,name,MAX_PLAYER_NAME); print("Debug - 1"); printf("%s - %s - %s", name,f_rang[PlayerInfo[playerid][pFrank]-1], text); format(msg,144,""#fchat_farbe"*%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text); for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){ SendClientMessage(i, -1, msg); } else { printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text); } } return 1;}
Schreibs mal so und sag was er printet@SynonymousZ er macht das Debug - 1 das darunter nicht mehr
Er zeigt mir das an:
Code[17:44:59] sscanf warning: Strings without a length are deprecated, please add a destination size. [17:44:59] Debug - 1 [17:44:59] [debug] Run time error 4: "Array index out of bounds" [17:44:59] [debug] Accessing element at index 9 past array upper bound 1 [17:44:59] [debug] AMX backtrace: [17:44:59] [debug] #0 00008fb4 in public ocmd_f (0, 265096) from Hightech_Reallife.amx [17:44:59] [debug] #1 native CallLocalFunction () from samp-server.exe [17:44:59] [debug] #2 00000264 in public OnPlayerCommandText (0, 265068) from Hightech_Reallife.amx
-
Dann mach das ganze mal so:
ocmd:f(playerid,params[])
{
new text[144],name[MAX_PLAYER_NAME], msg[144];
if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]");
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
new p_frank;
if(PlayerInfo[playerid][pFrank] < 1)p_frank = 1;
else p_frank = f_rang[PlayerInfo[playerid][pFrank]-1];
format(msg,144,""#fchat_farbe"*%s %s: %s", p_frank,name,text);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){
SendClientMessage(i, -1, msg);
} else {
printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
}
}
return 1;
} -
kann mir mal hier wer helfen ?
Mysql Problem -
Ich musste das umstellen, da mein f_rang aufgebaut ist wie eine Tabelle.
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"} //LVPD
//{"Ersthelfer","Sanitätshelfer","Sanitäter","Rettungshelfer","Rettungssanitäter","Rettungsassistent","Kinderarzt","Notarzt","Leitender Notarzt","Stellv. Chefarzt","Chefarzt"}, //SAMD
//{"Praktikant","Lehrling","Geselle","Abschlepper","Assistant Kontrolleur","Kontrolleur","Ausbilder","Ordnungshüter","Oberrat","Vize Direktor","Direktor"}, //OAMT
//{"Praktikant","-","-","-","-","Chefjournalist","Chefredakteur","Redaktionsleitung","Eventsleitung","Stellv. Geschäftsführung","Leitende Geschäftsführung"} //NEWS
};mein Code sieht nun so aus:
ocmd:f(playerid,params[])
{
new text[144],name[MAX_PLAYER_NAME], msg[144];
if(!isPlayerNotZivi(playerid))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");
if(sscanf(params,"s",text))return SendClientMessage(playerid,-1,"Tippe: /f [text]");
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
new p_frank;
if(PlayerInfo[playerid][pFrank] < 1)p_frank = 1;
else p_frank = f_rang[PlayerInfo[playerid][pFraction]][PlayerInfo[playerid][pFrank]-1]; //Diese Zeile
format(msg,144,""#fchat_farbe"*%s %s: %s", p_frank,name,text);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && isPlayerInSameFrak(playerid, i)){
SendClientMessage(i, -1, msg);
} else {
printf("%s %s: %s",f_rang[PlayerInfo[playerid][pFrank]-1],name,text);
}
}
return 1;
}es kommt dieser Error:
C:\Users\Patrick\Desktop\San Andreas\gamemodes\Hightech_Reallife.pwn(332) : error 006: must be assigned to an array
C:\Users\Patrick\Desktop\San Andreas\gamemodes\Hightech_Reallife.pwn(726) : warning 203: symbol is never used: "f_skins"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
Hoffe du kannst damit was anfangen und mir das vielleicht erklären warum ich nach f_rang drei "[]" machen muss bei zwei "[]" zeigt er mir den falschen Rank namen an.
-
Was zeigt er dir denn bei 2 "[]" an?
-
Gibt es eine Funktion mit der ich ein Fahrzeug restreamen kann? Z.b. dafür das, dass Kennzeichen angezeigt wird?
Ansonsten erstelle ich eine simple Funktion. -
Was zeigt er dir denn bei 2 "[]" an?
Wie meinst du das?
Also f_rang hab ich immer so benutzt:
format(string,sizeof(string),""#info_farbe"Du bist %s (Rank: %i)", f_rang[PlayerInfo[playerid][pFraction]-1][PlayerInfo[playerid][pFrank]-1],PlayerInfo[playerid][pFrank]);
SendClientMessage(playerid,-1,string); -