[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

  • Ah jetzt versteh ich es.. danke :thumbup: (Erstell sie in OnPlayerConnect)

  • Nachdem der ganze Textdraw Dreck jetzt endlich vorbei und es endlich fehlerfrei kompiliert wurde. Gibts nun ein neues Problem: Es funktioniert nicht. Das Textdraw bleibt auf "/god:AUS" stehen. Egal was ich mache... Hat jemand evlt. eine Idee?



    new God[MAX_PLAYERS] = 0;
    new PlayerText:TD[MAX_PLAYERS];


    //PlayerConnect
    {
    TD[playerid] = CreatePlayerTextDraw(playerid,3.666702, 281.659332, "/god:");
    PlayerTextDrawLetterSize(playerid,TD[playerid], 0.285999, 1.371851);
    PlayerTextDrawAlignment(playerid,TD[playerid], 1);
    PlayerTextDrawColor(playerid,TD[playerid], -1);
    PlayerTextDrawSetShadow(playerid,TD[playerid], 2);
    PlayerTextDrawSetOutline(playerid,TD[playerid], 0);
    PlayerTextDrawBackgroundColor(playerid,TD[playerid], 51);
    PlayerTextDrawFont(playerid,TD[playerid], 2);
    PlayerTextDrawSetProportional(playerid,TD[playerid], 1);


    new text[32];
    switch(God[playerid])
    {
    case 0: format(text, sizeof(text), "/god: AUS");
    case 1: format(text, sizeof(text), "/god: AN");
    }
    PlayerTextDrawSetString(playerid, TD[playerid], text);
    PlayerTextDrawShow(playerid, TD[playerid]);


    //PlayerSpawn


    God[playerid] = 1;


    //Playercommand


    if(strcmp("/god", cmdtext, true, 10) == 0)
    {
    if (God[playerid] == 1)
    {
    SendClientMessage(playerid, Rot, "God Modus aus. Du bist nun Verwundbar!");
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    God[playerid] = 0;
    return 1;
    }
    else if(God[playerid] == 0)
    {
    SendClientMessage(playerid, Hellblau, "God Modus an. Du bist nun Unverwundbar.");
    God[playerid] = 1;
    SetPlayerArmour(playerid, 10000);
    SetPlayerHealth(playerid, 10000);
    return 1;
    }

  • case 0 & 1 kommen unter den Befehl nicht unter ongamemodeinit.
    Ebenfalls kannst du es permanent updaten lassen was aber sinnlos ist.
    Einfach unter den Befehl schreiben und den TXD anzeigen lassen.


    Hab ich gemacht. Direkt unter If (strcmp /god usw.


    Jetzt wird gar nichts angezeigt:



    if(strcmp("/god", cmdtext, true, 10) == 0)
    {
    if (God[playerid] == 1)
    {
    SendClientMessage(playerid, Rot, "God Modus aus. Du bist nun Verwundbar!");
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    God[playerid] = 0;
    return 1;
    }
    else if(God[playerid] == 0)
    {
    SendClientMessage(playerid, Hellblau, "God Modus an. Du bist nun Unverwundbar.");
    God[playerid] = 1;
    SetPlayerArmour(playerid, 10000);
    SetPlayerHealth(playerid, 10000);
    return 1;
    }
    new text[32];
    switch(God[playerid])
    {
    case 0: format(text, sizeof(text), "/god: AUS");
    case 1: format(text, sizeof(text), "/god: AN");
    }
    PlayerTextDrawSetString(playerid, TD[playerid], text);
    PlayerTextDrawShow(playerid, TD[playerid]);



    }

  • if(strcmp("/god", cmdtext, true, 10) == 0)
    {
    new text[MAX_PLAYERS][32];
    if (God[playerid] == 1)
    {
    SendClientMessage(playerid, Rot, "God Modus aus. Du bist nun Verwundbar!");
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    God[playerid] = 0;
    text[playerid] = "/god: AUS";
    }
    else if(God[playerid] == 0)
    {
    SendClientMessage(playerid, Hellblau, "God Modus an. Du bist nun Unverwundbar.");
    God[playerid] = 1;
    SetPlayerArmour(playerid, 10000);
    SetPlayerHealth(playerid, 10000);
    text[playerid] = "/god: AN";
    }
    PlayerTextDrawHide(playerid,TD[playerid])
    PlayerTextDrawSetString(playerid, TD[playerid], text[playerid]);
    PlayerTextDrawShow(playerid, TD[playerid]);
    return 1;
    }


    //Edit

    KleineHilfe 2.0

  • Edit: Ok. Funktioniert alles.


    Aber lol:



    Header size: 3692 bytes
    Code size: 43068 bytes
    Data size: 32068 bytes
    Stack/heap size: 16384 bytes; estimated max. usage=16517 cells (66068 bytes)
    Total requirements: 95212 bytes



    Edit2: Textdraw wird immer noch nicht angezeigt :(

    Einmal editiert, zuletzt von Performer ()

  • Hey, habe mal eine kleine frage, die mir gerade gekommen ist.
    Mal an einem Beispiel gezeigt:


    #define MAX_CP 0
    Float:CP[MAX_CP];
    if (strcmp("/command", cmdtext, true, 10) == 0)
    {
    #define CP +1
    return 1;
    }


    Kurz gesagt:
    Ich möchte das es die variable CP nur 1x gibt.
    Sollte jedoch jemand "/command" eingeben wird diese variable noch einmal erstellt indem ich das #define erhöhe.
    Ist das ganze so möglich?

  • Hey ich habe mal eine kleine Frage unzwa:
    Wie mache ich einen random string?
    z.B.

    ocmd:Minestinkt(playerid,params[])
    {
    SendClientMessage (...) //entweder diesen Text
    SendClientMessage (...) // oder diesen Text.
    }

    Das ich das in ein Public schreibe und immer aufrufe.
    MFG.

    Dieser Beitrag wurde bereits 763 mal editiert, zuletzt von »Anker.« (Vor einem Moment)


    "eingetragende Stand -Ins"


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(strcmp(cmd, "/umbenennen", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "USAGE: /umbenennen [PlayerID/Name] [Neuername]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerNPC(giveplayerid)) return 1;
    if(PlayerInfo[playerid][pAdmin] >=4)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "USAGE: /umbenennen [PlayerID/Name] [Neuername]");
    return 1;
    }
    format(string, sizeof(string), "%s.ini", tmp);
    if(fexist(string))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Dieser Name ist schon registriert!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    // PlayerInfo[giveplayerid][pDisabled] = 1;
    // OnPlayerSave(giveplayerid);
    SetPlayerName(giveplayerid, tmp);
    // PlayerInfo[giveplayerid][pDisabled] = 0;
    format(string, sizeof(string), "%s.ini", giveplayer);
    fremove(string);
    OnPlayerSave(giveplayerid);
    format(string, sizeof(string), "Du hast den Namen von %s zu %s geändert!", giveplayer, tmp);
    SendClientMessage(playerid, COLOR_GREY, string);
    format(string, sizeof(string), "Dein Name wurde von %s zu %s geändert.", giveplayer, tmp);
    SendClientMessage(giveplayerid, COLOR_YELLOW, string);
    [color=#ff0000]format(string, sizeof(string), "%s hat den Namen von %s zu %s geändert.", sendername, giveplayer, tmp);[/color]
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht berechtigt diesen Befehl zu benutzen!");
    }
    }
    return 1;
    }



    Wo muss ich was einfügen damit alle Spieler die Meldung bekommen: Xy hat den Namen von XY zu XY geändert?


    Ich dachte erst das ist das rotmarkierte,doch Ingame kommt keine Meldung

  • Habe bisher immer direkt Konsolen Eingaben ausgewertet wie funktioniert es den wenn ich die Eingabe eines Dialogs mit sscanf2 überprüfen möchte könnte mir da jemand vielleicht ein kleines beispiel schreiben?


    (inputtext)


    sscanff(inputtext, "ii",wert1, wert2);
    Sowas ? :D



    @[LnD]Awesome:
    Du musst die Nachricht auch senden mit SendClientMessage(ID, Farbe, string);


    Gruß

    ik bin der vito c:


  • Ich check echt nicht wo,kannst du das von mir zitieren und das Blau markieren und dass dann auch richtig hinschreiben?Ich verstehe dass nicht so richtig mit den %s und so..

  • Ich check echt nicht wo,kannst du das von mir zitieren und das Blau markieren und dass dann auch richtig hinschreiben?Ich verstehe dass nicht so richtig mit den %s und so..


    Der format ist richtig
    Du musst es nurnoch absenden an jemanden.
    Du hast jetzt eine Variable, die die Nachricht entählt lässt sie aber nicht schicken (siehe oben: SendClientmessage)


    Gruß

    ik bin der vito c:

  • Der format ist richtig
    Du musst es nurnoch absenden an jemanden.
    Du hast jetzt eine Variable, die die Nachricht entählt lässt sie aber nicht schicken (siehe oben: SendClientmessage)


    Gruß



    Markier es doch einfach -.- Weil dort steht mehrmals SendClientMessage,aber ich will ja auch dass jeder sieht von wem der Name und so geändert wurde und dafür muss ich ja %s machen und dahinter dann senderplayer oder so und das verstehe ich nicht.

  • ocmd:support(playerid, params[]) {
    new text[128];
    if(pData[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, COLOR_ERROR, "[Fehler]{FFFFFF} Du musst eingeloggt sein, um Befehle auszuführen!");
    if(sscanf(params, "s[128]", text)) return SendClientMessage(playerid, COLOR_USING, "[Benutzung]{FFFFFF} /support [Text]");
    if(strlen(pData[playerid][pTicket]) == 0) {
    new msg[164];

    strmid(pData[playerid][pTicket], text, 0, 128);
    format(msg, sizeof(msg), "[Support]{FFFFFF} %s", text);
    SendClientMessage(playerid, COLOR_SUPPORT, "[Support]{FFFFFF} Du hast ein Supportticket eröffnet. Deine Frage:");
    SendClientMessage(playerid, COLOR_SUPPORT, msg);
    } else {
    SendClientMessage(playerid, COLOR_SUPPORT, "[Support]{FFFFFF} Du hast dein Supportticket gelöscht!");
    strdel(pData[playerid][pTicket], 0, 128);
    }
    return 1;
    }
    Wert wird nicht gespeichert. Warum nicht?

    enum playerData
    {
    pEingeloggt,
    pAdmincar,
    pAduty,
    pTicket[128],
    pTicketOffen,
    pAdmin
    }
    new pData[MAX_PLAYERS][playerData];


    Kostenlose Pawno Alternative / PAWN IDE -> PawnStar
    Mass Effect
    :love:

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