[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
  • new Grund[MAX_PLAYERS][256],Datum[MAX_PLAYERS][256],Uhrzeit[MAX_PLAYERS][256],GBV[MAX_PLAYERS][256];
    db_get_field_assoc(Result,"Banned",str,sizeof(str));
    SpielerInfo[playerid][Banned]=strval(str);
    db_get_field_assoc(Result,"Grund",str,sizeof(str));
    Grund[playerid]=str;
    db_get_field_assoc(Result,"Datum",str,sizeof(str));
    Datum[playerid]=str;
    db_get_field_assoc(Result,"Uhrzeit",str,sizeof(str));
    Uhrzeit[playerid]=str;
    db_get_field_assoc(Result,"Gebanntvon",str,sizeof(str));
    GBV[playerid]=str;
    if(SpielerInfo[playerid][Banned] == 1)
    {
    // format(str,sizeof(str),"Du wurdest gebannt!\nGrund: %s\nDatum: %s\nUhrzeit: %s\nGebannt von: %s",Grund[playerid],Datum[playerid],Uhrzeit[playerid],GBV[playerid]);
    ShowPlayerDialog(playerid,BanTrue,DIALOG_STYLE_MSGBOX,"{00FF00}[Ausschluss]",str,"OK", "");
    SetTimerEx("Kicked",250,false,"i",playerid);
    }
    Jemand ne Idee, warum meine Stack/Heapsize auf über
    Stack/heap size: 16384 bytes; estimated max. usage=514467 cells (2057868 bytes)
    Total requirements: 300256 bytes
    geht? :D


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • emand ne Idee, warum meine Stack/Heapsize auf über
    Stack/heap size: 16384 bytes; estimated max. usage=514467 cells (2057868 bytes)
    Total requirements: 300256 bytes
    geht?


    Ja, du erstellt da 4 Variablen mit jeweils einem 2 Demensionalen Array....
    Sprich die 1. Dimension bei dir Verbraucht (500*4=2000Bytes*4=) 8000Bytes und die 2. Dimension verbraucht nochmal 256*4*4 = 4096 ^^


    Erstelle nur 1ne Variable und nicht 4 und mach die doch etwas kleiner.... :pinch:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Erstelle nur 1ne Variable und nicht 4 und mach die doch etwas kleiner....


    Du meinst ich Soll Grund, Uhrzeit, Datum etc. in einer Variable speichern?


    Das ist mir schon klar, dass die zu groß sind, habs auch schon mit nem Enum versucht.


    Will ja nur das aus der Datenbank, in die Variable laden, und im Dialog ausgeben lassen.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Du meinst ich Soll Grund, Uhrzeit, Datum etc. in einer Variable speichern?


    Ja...zum beispiel, einfach so:


    new tmp_var[4][MAX_PLAYERS][64]; //Ich hoffe MAX_PLAYERS ist nur so auf 100 definiert...


    //PS: du musst nicht die Variable str benutzen, kannst auch direkt unsere Variable werden^^
    db_get_field_assoc(Result,"Grund",str,sizeof(str));
    tmp_var[0][playerid]=str;
    db_get_field_assoc(Result,"Datum",str,sizeof(str));
    tmp_var[1][playerid]=str;
    db_get_field_assoc(Result,"Uhrzeit",str,sizeof(str));
    tmp_var[2][playerid]=str;
    db_get_field_assoc(Result,"Gebanntvon",str,sizeof(str));
    tmp_var[3][playerid]=str;


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • new tmp_var[4][MAX_PLAYERS][64]; //Ich hoffe MAX_PLAYERS ist nur so auf 100 definiert...


    Jop ist auf 75 Slot Zahl definiert.


    Gut, danke hat soweit funktioniert.



    format(bstr,sizeof(bstr),"Du wurdest gebannt!\nGrund: %s\nDatum: %s\nUhrzeit: %s\nGebannt von: %s",banvar[0],banvar[1],banvar[2],banvar[3]);
    ShowPlayerDialog(playerid,BanTrue,DIALOG_STYLE_MSGBOX,"{00FF00}[Ausschluss]",bstr,"OK", "");


    Aber jetzt kommt im Dialog nur Grund: "ø


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Musst das ja auch so schreiben:


    format(bstr,sizeof(bstr),"Du wurdest gebannt!\nGrund: %s\nDatum: %s\nUhrzeit: %s\nGebannt von: %s",banvar[0][playerid],banvar[1][playerid],banvar[2][playerid],banvar[3][playerid]);
    ShowPlayerDialog(playerid,BanTrue,DIALOG_STYLE_MSGBOX,"{00FF00}[Ausschluss]",bstr,"OK", "");


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • format(bstr,sizeof(bstr),"Du wurdest gebannt!\nGrund: %s\nDatum: %s\nUhrzeit: %s\nGebannt von: %s",banvar[0][playerid],banvar[1][playerid],banvar[2][playerid],banvar[3][playerid]);


    Hab garnicht an [MAX_PLAYERS] gedacht. :D


    Passt, danke. 8)


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Hey ich wollte euch fragen warum das nicht geht.


    Ich will wenn man /tv macht und wieder ausmacht das man dort landet wo man TV angemacht hat ;)



    if(strcmp(cmd, "/tv", true) == 0 || strcmp(cmd, "/recon", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:x,Float:y,Float:z;
    if(PlayerInfo[playerid][pAdmin] > 0 || PlayerInfo[playerid][pSupporter] > 0)
    {
    if(WatchingTV[playerid] < 1)
    {
    GetPlayerPos(playerid, Unspec[playerid][Coords][0],Unspec[playerid][Coords][1],Unspec[playerid][Coords][2]);
    }
    }
    if(Spectate[playerid] == 255 && PlayerInfo[playerid][pLocal] != 255 || Spectate[playerid] == 255 && PlayerInfo[playerid][pAdmin] > 0)
    {
    GetPlayerPos(playerid, Unspec[playerid][sPx], Unspec[playerid][sPy], Unspec[playerid][sPz]);
    Unspec[playerid][sPint] = PlayerInfo[playerid][pInt];
    Unspec[playerid][sLocal] = PlayerInfo[playerid][pLocal];
    PlayerInfo[playerid][pLocal] = 255;
    gTeam[playerid] = 0;
    }
    tmp = strtok(cmdtext, idx);
    if(strcmp("off", tmp, true, strlen(tmp)) == 0)
    {
    if(WatchingTV[playerid] > 0)
    {
    WatchingTV[playerid] = 0;
    Spectate[playerid] = 253;
    GameTextForPlayer(playerid, "~w~ TV~n~~r~ Aus", 5000, 6);
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    SetPlayerPos(playerid,x,y,z);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Mit dem Befehl schaltest du den Fernseher aus [Einschalten mit /tv [ID]!");
    return 1;
    }
    }
    if(PlayerInfo[playerid][pAdmin] > 0 || PlayerInfo[playerid][pSupporter] > 0)
    {
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerPos(playerid,x,y,z);
    Spectate[playerid] = giveplayerid;
    new Float:health;
    GetPlayerHealth(Spectate[playerid], health);
    GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer));
    new cash = GetPlayerMoney(Spectate[playerid]);
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    format(string, sizeof(string), "Recon: (%d) %s $%d H:%.0f",Spectate[playerid],giveplayer,cash,health);
    }
    else
    {
    format(string, sizeof(string), "UAV: (%d) %s",Spectate[playerid],giveplayer);
    }
    SendClientMessage(playerid, COLOR_GREEN, string);
    WatchingTV[playerid] = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Ziel ist nicht verfügbar.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du bist nicht befugt!");
    return 1;
    }
    }
    return 1;
    }

  • Guten Abend,


    mein Problem ist das mein erstes Textdraw nicht angezeigt wird. Sondern mein zweites, wo hab ich den Fehler gemacht?


    Unter OnGameModeInit:


    Registerflug = TextDrawCreate(123.200012, 140.373321,"Entfernt");TextDrawLetterSize(Registerflug, 0.291999, 1.321244);TextDrawAlignment(Registerflug, 1);TextDrawColor(Registerflug, -1);TextDrawSetShadow(Registerflug, 0);TextDrawSetOutline(Registerflug, 1);TextDrawBackgroundColor(Registerflug, 51);TextDrawFont(Registerflug, 2);TextDrawSetProportional(Registerflug, 1);
    Registerflugans = TextDrawCreate(122.400016, 161.777755, "Entfernt II");TextDrawLetterSize(Registerflugans, 0.291999, 1.321244);TextDrawAlignment(Registerflugans, 1);TextDrawColor(Registerflugans, -1);TextDrawSetShadow(Registerflugans, 0);TextDrawSetOutline(Registerflugans, 1);TextDrawBackgroundColor(Registerflugans, 51);TextDrawFont(Registerflugans, 2);TextDrawSetProportional(Registerflugans, 1);


    Unter meinem stock:


    TextDrawShowForPlayer(playerid,Registerflug);
    TextDrawShowForPlayer(playerid,Registerflugans);


    Der Registerflugans Textdraw funktioniert, der Registerflug nicht.

  • Da BlackAce der Waschlappen schon weg ist, muss mir irgendnen anderer Script-Guru mal kurz behilflich sein:
    Gibt es eine Funktion von PAWN um die SERVER IP + Port auszugeben, auf der das besagte Filter-Script gerade läuft?


    / Edit: Achja und gegebenfalls vielleicht noch den Servernamen? ;)


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Da BlackAce der Waschlappen schon weg ist, muss mir irgendnen anderer Script-Guru mal kurz behilflich sein:
    Gibt es eine Funktion von PAWN um die SERVER IP + Port auszugeben, auf der das besagte Filter-Script gerade läuft?


    Ja sollte gehen sovern die bindip eingetragen ist:


    http://wiki.sa-mp.com/wiki/GetServerVarAsInt
    http://wiki.sa-mp.com/wiki/GetServerVarAsString
    http://wiki.sa-mp.com/wiki/GetServerVarAsBool


    Natürlich die String Funktion benutzen ;)