[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
  • return 1 in der Schleife.

    Code
    else if (PRESSED(KEY_ANALOG_RIGHT))
          {
        for(new i=0; i < 25; i++)
        {
         DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
         SendClientMessage(playerid,-1,"{FF0000}Löschen ausgeführt");
        }
        }
        return 1;
    }
  • Danke @malE


    Habe wieder ein ähnliches Problem beim erstellen der Label. Ich drücke Numpad 4, die Nachricht im Code wird aufgerufen aber die Labels erstellen sich nicht..



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (PRESSED(KEY_ANALOG_LEFT))
    {
    if(!CheckAdminName(playerid)) return 0;
    for(new i=0; i < 25; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    new name[MAX_PLAYER_NAME];
    new str[32];
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name);
    SendClientMessage(playerid,-1,"Versuche Label zu erstellen..");
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
    return 1;
    }
    }
    else if (PRESSED(KEY_ANALOG_RIGHT))
    {
    for(new i=0; i < 25; i++)
    {
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    }
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Du darfst in den meisten Fällen kein return 1 in den Schleifen machen.
    Versuchs mal, vielleicht lag es ja daran.

  • Hmm, habe das so eingefügt und wir kommen schon der Sache ein bisschen näher. Mein Label wird nun erstellt aber nur an einem Spieler und nicht an alle.
    Dabei habe ich doch die Schleife verwendet, oder habe ich irgendwas falsch gemacht ?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Wie bereits gesagt.. Du willst doch immer dem Spieler mit der ID "i", welche bei jedem Schleifendurchlauf um 1 erhöht wird, ein Label setzen. Dann musst du auch "i" bei CreatePlayer3DTextLabel einsetzen anstatt "playerid".

    pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);


    Das mache ich doch da bereits. Der TextLabel soll nicht für alle sichtbar sein, sondern nur für die Person die Numpad 4 drückt, deswegen bleibt es bei playerid und geht nicht zur Schleife.
    Außerdem hilft das auch nicht wenn ich es zu i umändere, habe es bereits versucht..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ist das Normal?



    Code
    if(GetPlayerSpeed(playerid) > 0 && GetPlayerSpeed(playerid) < 40)CarInfo[idx][car_Verbrauch] += 0.11;
    if(GetPlayerSpeed(playerid) >= 40 && GetPlayerSpeed(playerid) < 60)CarInfo[idx][car_Verbrauch] += 0.14;
    if(GetPlayerSpeed(playerid) >= 60 && GetPlayerSpeed(playerid) < 95)CarInfo[idx][car_Verbrauch] += 0.17;
    if(GetPlayerSpeed(playerid) >= 95 && GetPlayerSpeed(playerid) < 125)CarInfo[idx][car_Verbrauch] += 0.21;
    if(GetPlayerSpeed(playerid) >= 125 && GetPlayerSpeed(playerid) < 140)CarInfo[idx][car_Verbrauch] += 0.24;
    if(GetPlayerSpeed(playerid) >= 140 && GetPlayerSpeed(playerid) < 160)CarInfo[idx][car_Verbrauch] += 0.26;
    if(GetPlayerSpeed(playerid) >= 160 && GetPlayerSpeed(playerid) < 170)CarInfo[idx][car_Verbrauch] += 0.31;
    if(GetPlayerSpeed(playerid) >= 170 && GetPlayerSpeed(playerid) < 260)CarInfo[idx][car_Verbrauch] += 0.46;
    printf("[Verbrauch] %0.2f Liter", CarInfo[idx][car_Verbrauch]);
  • Nein, normal sehen die Zahlen nicht aus, vor allem nicht wenn das in einem Sekundenabstand ist. ;)

    C
    if(GetPlayerSpeed(playerid) > 0 && GetPlayerSpeed(playerid) < 40)CarInfo[idx][car_Verbrauch] += 0.11;
    else if(GetPlayerSpeed(playerid) >= 40 && GetPlayerSpeed(playerid) < 60)CarInfo[idx][car_Verbrauch] += 0.14;
    else if(GetPlayerSpeed(playerid) >= 60 && GetPlayerSpeed(playerid) < 95)CarInfo[idx][car_Verbrauch] += 0.17;
    else if(GetPlayerSpeed(playerid) >= 95 && GetPlayerSpeed(playerid) < 125)CarInfo[idx][car_Verbrauch] += 0.21;
    else if(GetPlayerSpeed(playerid) >= 125 && GetPlayerSpeed(playerid) < 140)CarInfo[idx][car_Verbrauch] += 0.24;
    else if(GetPlayerSpeed(playerid) >= 140 && GetPlayerSpeed(playerid) < 160)CarInfo[idx][car_Verbrauch] += 0.26;
    else if(GetPlayerSpeed(playerid) >= 160 && GetPlayerSpeed(playerid) < 170)CarInfo[idx][car_Verbrauch] += 0.31;
    else if(GetPlayerSpeed(playerid) >= 170 && GetPlayerSpeed(playerid) < 260)CarInfo[idx][car_Verbrauch] += 0.46;

    So?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Es erscheinen mehr oder weniger immer noch die selben Werte.
    Ich frag mich eigentlich auch, wie der Verbrach am Anfang bei 0.10 Litern ist, denn es beginnt eigentlich mit 0.11 Litern.

    Code
    [12:06:39] [Verbrauch] 0.10 Liter
    [12:06:40] [Verbrauch] 1038174144.00 Liter
    [12:06:41] [Verbrauch] 1316455680.00 Liter
    [12:06:42] [Verbrauch] 1318907648.00 Liter
    [12:06:43] [Verbrauch] 1318926848.00 Liter
    [12:06:44] [Verbrauch] 1318926976.00 Liter
  • Wie kann ich alle Spieler die auf dem Server connectet sind abfragen welche Waffen sie besitzen und in einer Nachricht ausgeben?
    Wichtig ist, welche Waffe sie besitzen und nicht welche sie aktuell in der Hand halten..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Schau dir dazu mal die Funktion [wiki]GetPlayerWeaponData[/wiki] an, damit kann man das realisieren. ;)

  • Danke :)


    Wieso erhalte ich hier diesen Error?



    stock CheckAdminName(playerid)
    {
    if(!strcmp(SpielerName(playerid), "[LnD]JustMe.77"))return 1;
    return 0;
    }



    SendAdminMessage(color, const strdoadm[]) {
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) == 1) if(!CheckAdminName(playerid)) SendClientMessage(i, color, strdoadm);
    }
    return 0;
    }


    error 017: undefined symbol "playerid"


    Bisher hatte ich das noch nicht gehabt wenn ich irgendwo meine Adminabfrage gemacht habe, wieso erscheint das jetzt?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • C
    if(!CheckAdminName(playerid))

    zu


    C
    if(CheckAdminName(i))

    => EDIT:
    @malE


    Bist du dir sicher, das die Variable car_Verbrauch auch auf 0 steht? Das ganze kommt mir bisschen komisch rüber, denn anstatt 0.11 wird 0.10 eingetragen und danach ist es sofort eine große Zahl. Du setzt den Verbrauch aber nur da hoch, aber nirgendswo anders, oder?

    Einmal editiert, zuletzt von AirM4X ()

  • Kann mir jemand helfen? Warscheinlich sehe ich mal wieder den Wald vor lauter Bäumen nicht.. :D


    "Number of arguments not match definition" oder so.. zeile 4



    new pREGdone[128];
    new pNameReg[128];
    GetPlayerName(playerid,pNameReg,sizeof(pNameReg));
    format(pREGdone,sizeof(pREGdone),"Name: %s | Age: %d | Gender: %s | Religon: notavailible | Origin Race: %s",GetPlayerName(playerid),pInfo[playerid][pAge],gender,pInfo[playerid][pOrigin]);
    SendClientMessage(playerid,COLOR_WHITE,pREGdone); //dafuq

  • Danke für die schnelle Antwort !!


    Ich musste also nur hinten statt dem ganzen "GetPlayerName.." nur den zugewiesenen namen schreiben..


    es geht jetzt :)



    Noch eine andere Frage.. bei meinem login Dialogen erscheint unten die links und rechts auswahl box für die skinauswahl, dabei geht mein script garnicht zu "onplayerrequstclass"
    Man kann sich zwar einloggen aber auch da einfach auf spawn drücken und dann schmier tes halt ab "stay within the world .." :/
    Wie kann ich das Auswahlfenster unterbinden?!

    • Offizieller Beitrag

    Noch eine andere Frage.. bei meinem login Dialogen erscheint unten die links und rechts auswahl box für die skinauswahl, dabei geht mein script garnicht zu "onplayerrequstclass"
    Man kann sich zwar einloggen aber auch da einfach auf spawn drücken und dann schmier tes halt ab "stay within the world .."
    Wie kann ich das Auswahlfenster unterbinden?!

    Die Frage wurde hier im Forum schon häufig behandelt.
    Schau mal in diesem Thread: [HILFE]Wie kann ich den Spawn button wegmachen ?