[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
  • Hey,
    Ich habe eine funktion die ein Textdraw erscheinen lässt wenn sich der Spieler etwas Kauft!
    Aber dieses Textdraw zeigt er nur bei Id 0 an...
    Hier die Public die dafür zuständig ist den Textdraw anzuzeigen.
    public moneyabzug(playerid)
    {
    new money = GetPlayerMoney(playerid);
    if((money - PMoney[playerid]) < 0)
    {
    new MStringy[128];
    valstr(MStringy,money - PMoney[playerid]);
    if(strlen(MStringy)<=8)
    {
    new Stringy[128];
    format(Stringy,sizeof(Stringy),"%08d",money - PMoney[playerid]);
    TextDrawSetString(MoneyText[playerid],Stringy);
    TextDrawShowForPlayer(playerid,MoneyText[playerid]);
    KillTimer(MoneyHide[playerid]);
    MoneyHide[playerid]=SetTimerEx("HideMoneyText",4000,0,"i",playerid);
    }
    }
    PMoney[playerid] = money;
    return 1;
    }


    Mfg T.Bone

  • Ich habe es mit PlayerToPoint versucht aber irgend wie geht das nicht.


    Ich weis nicht wo ich es hin machen soll in meinem gamemode.

    WEGEN MEINER RECHTSCHREIBUNG MÖCHTE ICH MICH ENDSCHULDIGEN ICH BIN LEGASTENIGER!!!!!!!!!!!!!

  • Textdraw + Gewisse Zeichen , die Tasten dafür sind leicht zu finden, öffne Notepad & stelle die Schriftart auf GTA Weapon
    danach Tippe die Sonderzeichen ein , sollte dann auch die Taste sein sprich das Zeichen das dieses Symbol darstelle soweit ich weiß,
    ansonsten einfach herumprobieren.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Hey
    Habe eine Frage weil das fur mich unlogisch ist also
    public OnPlayerDeath(playerid, killerid, reason)
    {
    Player[playerid][Deaths]++; //WIESO wird diese Aktion durchgefuhrt
    SendClientMessage(playerid,COLOR_RED,"Tod"); // UND diese hier nicht ?!
    return 1;
    }

  • Weiß keiner eine Lösung für mein Problem?
    "
    Ich habe eine funktion die ein Textdraw erscheinen lässt wenn sich der Spieler etwas Kauft!
    Aber dieses Textdraw zeigt er nur bei Id 0 an...
    Hier die Public die dafür zuständig ist den Textdraw anzuzeigen.
    public moneyabzug(playerid)
    {
    new money = GetPlayerMoney(playerid);
    if((money - PMoney[playerid]) < 0)
    {
    new MStringy[128];
    valstr(MStringy,money - PMoney[playerid]);
    if(strlen(MStringy)<=8)
    {
    new Stringy[128];
    format(Stringy,sizeof(Stringy),"%08d",money - PMoney[playerid]);
    TextDrawSetString(MoneyText[playerid],Stringy);
    TextDrawShowForPlayer(playerid,MoneyText[playerid]);
    KillTimer(MoneyHide[playerid]);
    MoneyHide[playerid]=SetTimerEx("HideMoneyText",4000,0,"i",playerid);
    }
    }
    PMoney[playerid] = money;
    return 1;
    }"




    Mfg T.Bone

  • was ist wenn du zuerst Sendclientmessage machst und dann die Deaths zählst ?

  • Hallo zusammen,
    Ich hab ein Script drin, mit dem ich Namen per Menü ändern lassen kann. (selfmade). Das dumme an der Sache ist nur, dass ich die natürlich auch wieder resetten will und dieses irgendwie alleine schon beim Connecten von anderen Spielern Probleme aufwirft.
    Hier mal mein Code.
    new gname[MAX_PLAYER_NAME];//steht außerhalb - oben bei den defines und new's
    new gstring[120];
    GetPlayerName(playerid, gname, sizeof(gname));
    format(gstring, 100, "[ %s hat den Server betreten! ]", gname);
    SendClientMessageToAll(0x24FF0AB9, gstring);



    Das steht bei OnPlayerConnect und ich glaube hier liegt der Fehler. So wird wenn ich als "FACE" drauf connecte und ein Freund von mir "Fabian_Wilhelmi" (ig-name) am Ende aus meinem Namen "FFabian_Wilhelmi".
    Pls helft mir.



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wie kann ich Badwords aus einer Textdatei auslesen (mit dini.inc) ohne aber im Script eine feste Anzahl anzugeben


    D.h. wenn es ausgelesen wird, soll das Script schaun ob die nächste Zeile noch ein Badword enthält oder nicht.

  • Taste Abfragen , Animation ausführen & Energie auffüllen natürlich alles in einer bestimmten Distanz.


    Aso das mit dem Array geht auch so


    array[0] = '\0';


    sollte so gehen, da hiermit das Ende einer Reihenfolge gesetzt wird.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Wie meinst du das ?


    Willst du einen weiteren Automaten hinstellen ?


    ----------------------------------------- Eigenes Problem -----------------------------------
    Hab das mit dem Badwords aus DAtei auslesen mal probiert nur gibts einen Error, pls help


    Datei badwords.txd existiert und sieht so aus


    Zitat

    maxbadwords=4
    word[0]=huso
    word[1]=wixxer
    word[2]=spast
    word[3]=hurensohn


    Dann im Script zum auslesen hab ich das


    Unter den defines
    enum badwordsinfo
    {
    iname[32],
    };


    new maxbadwords = 30;
    new badwords[][badwordsinfo];


    OnGameModeInit


    new file[128];
    format(file,sizeof(file),"/serverfiles/badwords.txd");
    if(dini_Exists(file))
    {
    maxbadwords = dini_Int(file,"maxbadwords");
    new string[128];
    for(new i = 0;i<sizeof(maxbadwords);i++)
    {
    format(string,sizeof(string),"word[%d]",i);
    if(dini_Isset(file,string))
    {
    badwords[i][iname] = dini_Get(file,string);
    }
    }
    }

    testword();


    testword(); ist zum testen und bezieht sich herrauf


    testword()
    {
    printf("%d",maxbadwords);
    for(new i = 0;i<sizeof(maxbadwords);i++)
    {
    printf("Word[%d]: %s",i,badwords[i][iname]);
    }

    }


    Der Error ist folgender (329) : error 047: array sizes do not match, or destination array is too small
    und bezieht sich auf diese Zeile
    badwords[i][iname] = dini_Get(file,string);


    Weiß jemand ne Lösung ?

    Einmal editiert, zuletzt von Hagi ()

  • dini_Get gibt wohl ein größeres Array wieder sprich das größer ist als iname


    Zudem sollte das hier auch einen Fehler wiedergeben
    new maxbadwords = 30;
    new badwords[][badwordsinfo];


    Maximale Wörter Anzahl = Keine Konstante, muss es aber sonst kannst du dies nicht als festen Index Wert festlegen
    Zum anderen hat badwords keine wirkliche Größe, wenn du Dynamisch arbeitest musst du immer einen Wert angeben
    daraus wird dann die endgültige Größe ermittelt.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • iname ist 64 (byte bit ?) groß.


    aber in der Datei name[0] ist grade mal 4 zeichen groß.


    Hab iname auch schon auf 128 gesetzt, immer noch zu klein


    Wenn ich das Printe,siehts so aus


    printf("%s",dini_Get(file,string));
    In der Serverlog steht dann das erste Wort von der Liste:

    Zitat

    "huso"


    Wie meinst du das mit dem entgültigen Wert ermitteln

    Einmal editiert, zuletzt von Hagi ()

  • Ich meine du kannst Arrays nicht mit einem nicht Konstanten Wert belegen sprich ihren Index einstellen.


    new indextest = 50;
    new array[indextest]; // FALSCH
    new const indextest = 50;
    new array[indextest]; // Richtig
    #define indextest 50
    new array[indextest]; // geht auch


    new array[]; // Falsch, hat keine festgelegte Größe


    new array = {0,1,2,3}; // Hat 4 Zellen also ist die Array von 0 angefangen 3 Zellen Groß


    Ich hoffe du verstehst mich jetzt.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • K Das sieht jetzt so aus


    #define maxbadwords 4
    new badwords[maxbadwords];
    new file[128];
    format(file,sizeof(file),"/serverfiles/badwords.txd");
    if(dini_Exists(file))
    {
    for(new i = 0;i<maxbadwords;i++)
    {
    new string[128];
    format(string,sizeof(string),"word[%d]",i);
    if(dini_Isset(file,string))
    {
    strins(badwords[i],dini_Get(file,string),0);
    printf("Insertet: %s",badwords[i]);
    }
    }
    }


    Nur das Ergebnis sieht dann so aus, als ob er die Schleife nicht hochzählen würde


    Zitat

    [17:57:28] Insertet: huso
    [17:57:28] Insertet: wixxeruso
    [17:57:28] Insertet: spastixxeruso
    [17:57:28] Insertet: hurensohnpastixxeruso
    [17:57:28] urensohnpastixxeruso

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen