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

    • Offizieller Beitrag

    @[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;
    }

  • 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;
    }

  • 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 CompuPhase



    1 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.

  • @The Sensei
    Sorry, ich habe mich eben total vertan :D
    Versuchs 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[30];
    if(PlayerInfo[playerid][pFrank] < 1)format(p_frank,30,"%s",f_rang[PlayerInfo[playerid][pFraction-1]][0]);
    else format(p_frank, 30, "%s", 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",p_frank,name,text);
    }
    }
    return 1;
    }
    Wenns wieder nicht geht, melde dich mal mit TV Daten per PN dann mache ich es dir eben dann geht das schneller :D