[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
  • Habe ich so gemacht, aber der Gamemode ist immer noch Unknown

    Mittelsmann Service
    Seit 2014 agiere ich in diesem Forum als Mittelsmann. Als es Mein-Mittelsmann noch gab, zählte ich zu den vertrauenswürdigsten Mittelsmännern, welche auch hier im Forum aufgelistet waren. Seit Beginn meiner Laufbahn wickelte ich bisher schon rund 100 Transaktionen mit Erfolg ab. Wenn du also nach einem erfahrenen und vertrauenswürdigem Mittelsmann suchst, kontaktiere mich gerne.

  • Hey, ich habe mal eine Frage wieso ich diesen Error bekomme.


    stock SendRangeMessage(playerid,color,const message[],Float:Umkreis)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,Umkreis,pos[0],pos[1],pos[2])); // Zeile 1182
    {
    SendClientMessage(i,color,message);
    return 1;
    }
    }
    return 1;
    }


    Test.pwn(1182) : error 036: empty statement

  • Kann mir einer bitte helfen ?
    Ich möchte Goto (zum Spieler teleportieren) und Gethere (Spieler zu sich teleportieren) Befehle erstellen. Es funktioniert aber nicht ..
    Es kommt immer die Nachricht, dass der Spieler nicht online ist.


    CMD:goto(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 1 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "Dieser Spieler ist nicht online.");
    if(InBehandlung[params[0]]) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Spieler ist in Behandlung.");
    if(sscanf( params, "u", params[0], params[1])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /goto <ID/Name>");
    if(params[0] == playerid) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Du kannst dich nicht zu dir selbst teleportieren.");

    new Float:x, Float:y, Float:z;
    GetPlayerPos(params[0], Float:x, Float:y, Float:z);
    SetPlayerPos(playerid, Float:x, Float:y, Float:z);
    return 1;
    }
    CMD:gethere(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 1 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Dieser Spieler ist nicht online.");
    if(InBehandlung[params[0]]) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Spieler ist in Behandlung.");
    if(sscanf( params, "u", params[0], params[1])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /gethere <ID/Name>");
    if(params[0] == playerid) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Du kannst dich nicht zu dir selbst teleportieren.");

    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, Float:x, Float:y, Float:z);
    SetPlayerPos(params[0], Float:x, Float:y, Float:z);
    return 1;
    }

  • Es kommt immer die Nachricht, dass der Spieler nicht online ist.


    Du musst auf die Chronologische Reihenfolge deiner if-Abfragen achten ;)


    Zudem wenn du eine Variable mit einem TAG deklarierst (Float:x), dann musst du nicht immer den Tag wieder davor schreiben, nur wenn du die Variable casten willst ;)


    Also hier, so funktioniert es:


    CMD:goto(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 1 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(sscanf( params, "u", params[0])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /goto <ID/Name>");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "Dieser Spieler ist nicht online.");
    if(InBehandlung[params[0]]) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Spieler ist in Behandlung.");
    if(params[0] == playerid) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Du kannst dich nicht zu dir selbst teleportieren.");


    new Float:x, Float:y, Float:z;
    GetPlayerPos(params[0], x, y, z);
    SetPlayerPos(playerid, x, y, z);
    return 1;
    }
    CMD:gethere(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 2 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(sscanf( params, "u", params[0])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /gethere <ID/Name>");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Dieser Spieler ist nicht online.");
    if(InBehandlung[params[0]]) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Spieler ist in Behandlung.");
    if(params[0] == playerid) return SendClientMessage(playerid, -1, ""COLOR_RED"Fehler: {FFFFFF}Du kannst dich nicht zu dir selbst teleportieren.");

    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(params[0], x, y, z);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • dcmd_gotoz(playerid,params[])
    {
    if (AccInfo[playerid][Level] < 1)
    return SendClientMessage (playerid, COLOR_RED, "* You are not an Administrator to perform this command.");


    new Float:x,Float:y,Float:z;
    new zAmount;
    if(sscanf(params, "f",zAmount)) return SendClientMessage(playerid, COLOR_GREY, "* Usage: /gotoz [Z]");
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z+zAmount);
    return 1;
    }


    Ich crashe bei dem Befehl :s

    Einmal editiert, zuletzt von Salpoe ()

  • dcmd_gotoz(playerid,params[])
    {
    if (AccInfo[playerid][Level] < 1)return SendClientMessage (playerid, COLOR_RED, "* You are not an Administrator to perform this command.");
    new Float:_pos[3],Float:zAmount;
    if(sscanf(params, "f",zAmount)) return SendClientMessage(playerid, COLOR_GREY, "* Usage: /gotoz [Z]");
    GetPlayerPos(playerid, _pos[0], _pos[1], _pos[2]);
    return SetPlayerPos(playerid, _pos[0], _pos[1], zAmount);
    }
    Versuchs mal so..
    "zAmount" muss ein Float sein, kein Integer ;)

  • Ist es möglich einem Object sozusagen Leben zu geben das es nach 2 Deagle schüßße Verschwindet?


    Du kannst eine Variable setzen und dann, wenn ein Spieler auf das Objekt schießt, fragst du ab, welche Waffe es ist.
    Ist es eine Deagle, setzt die die Variable z.B. um 1 runter, sodass sie beim 2. Schießen auf 0 ist..
    Wenn die Variable dann auf 0 ist, löscht du das Objekt.
    Hier das Callback dafür


  • Du kannst eine Variable setzen und dann, wenn ein Spieler auf das Objekt schießt, fragst du ab, welche Waffe es ist.
    Ist es eine Deagle, setzt die die Variable z.B. um 1 runter, sodass sie beim 2. Schießen auf 0 ist..
    Wenn die Variable dann auf 0 ist, löscht du das Objekt.
    Hier das Callback dafür


    Gibt es keine Möglichkeit da ich ohne lagshot benutze:
    This callback is only called when lag compensation is enabled.

  • Kann jmd. schnell helfen ?
    Soll ein Admin Text sein, der an alle Spieler gesendet wird.


    CMD:a(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 1 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(sscanf(params, "u", params[0], params[1])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /a <Text/Nachricht>");

    new String[256];
    format(String,sizeof String, "%s %s: %s",GetPlayerLevelName(playerid),pName(playerid),params[0]);
    SendClientMessageToAll(-1, String);
    return 1;
    }


    /a Dies ist ein Text
    InGame: 1339 Admin Andreas: ÿies ist ein Text

  • ..

    ..

    CMD:a(playerid,params[])
    {
    if(GetPVarInt( playerid, "Level" ) < 1 ) return SendClientMessage( playerid, -1, "Du musst ein "COLOR_LIGHT_BLUE"Administrator Level 1 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(sscanf(params, "s", params[0])) return SendClientMessage( playerid, -1, ""COLOR_LIGHT_BLUE"Verwendung:{FFFFFF} /a <Text/Nachricht>");
    if(strlen(params[0]) <= 0)return SendClientMessage(playerid,-1,"Gebe einen Text ein!");
    new String[144]; format(String,sizeof String, "%s %s: %s",GetPlayerLevelName(playerid),pName(playerid),params[0]);
    return SendClientMessageToAll(-1, String);
    }
    Du musst einen String ( Text ) eingeben, nicht den Namen / die ID eines Spielers!



    //Edit: Kann man die Waffenmunition in dem Magazin abfragen? ( z.B. 953-7 [Gesamte Munition: 960] ), davon halt die "7" rausnehmen..

    Wenn das geht

    Kann man die Zahl dann auch wieder der Waffe setzen?
    Also, wenn der Spieler die Waffe wieder nimmt ( wieder zu dieser Waffe scrollt )

  • //Edit: Kann man die Waffenmunition in dem Magazin abfragen? ( z.B. 953-7 [Gesamte Munition: 960] ), davon halt die "7" rausnehmen..

    Wenn das geht

    Kann man die Zahl dann auch wieder der Waffe setzen?
    Also, wenn der Spieler die Waffe wieder nimmt ( wieder zu dieser Waffe scrollt )


    Auf jeden Fall nicht mit einfachen Mitteln.
    Hier hast du ein Archiv Thread aus dem englischen Forum: http://forum.sa-mp.com/archive/index.php/t-314958.html
    Dort wurde sowas in der Art diskutiert, wobei aber nichts raus kam, als Idee ist das aber schonmal was.


    Dann müsstest du abfragen, wie viele bullets der Spieler abgeschossen hat, und abziehen vom Magazin.


    Das Magazin weniger setzen geht meines Wissens nach nicht.


    Hier vielleicht noch was Hilfreiches: http://forum.sa-mp.com/showthread.php?t=186926

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