/gethereall Befehl geht ingame nicht

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
  • Hallo Leute,


    ich hab mal einen gut gebrauchbaren befehl gemacht (Meine ersten schritte als Scripter) (/gethereall) doch er Funktioniert Ingame nicht, kann mir jemand sagen, was hier falsch ist?


    if (strcmp("/gethereall", cmdtext, true, 10) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 6)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i=0; i<200; i++)
    {
    SetPlayerPos(i,x,y,z);
    SendClientMessageToAll(COLOR_WHITE, " Admin %s hat alle Spieler die Online sind zu sich geportet ");
    }
    } else {
    SendClientMessage(playerid, COLOR_WHITE, " Du bist nicht befugt ");
    }
    return 1;

    Eigentlich ein ganz Netter! :)

  • Wie gesagt, bin nen Anfänger, hab heute mit Scripten angefangen, kann mir jemand den Befehl Korrgieren?


    //Edit: Ausserdem, überall wo bei mir ne Nachricht wie: "Du bist nicht befugt" ist, steht nirgends was mit nem String??


    Ausserdem ist darunter doch der Befehl setplayerpos?

    Eigentlich ein ganz Netter! :)

  • Also so solltest du es schreiben:


    if(!strcmp(cmdtext, "/gethereall", true))
    {
    if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,rot,"Du benötigst ein Adminlevel > 6 !");
    new Float:X, Float:Y, Float: Z, name[24], string[128];
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Admin %s hat alle Spieler zu sich geportet !",name);
    SendClientMessageToAll(rot, string);
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    SetPlayerPos(i, X+1,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

  • Zitat

    doch er Funktioniert Ingame nicht, kann mir jemand sagen, was hier falsch ist?


    Sag du doch erst mal,was dort nicht funktioniert.


    SendClientMessageToAll(COLOR_WHITE, " Admin %s hat alle Spieler die Online sind zu sich geportet ");
    Solltest du nicht in der Schleife haben,da du die Nachricht an alle Spieler sonst 200x sendest.
    Wenn du in einen Text etwas dynamisch einfügen willst,wie zum Beispiel einen Spielernamen,so benutzt du lieber format.
    Beispiele dazu findest du hier.


    for(new i=0; i<200; i++)
    Nutz lieber MAX_PLAYERS anstatt 200, ist "zukunftssicherer".



    Zitat

    Mit GetPlayerPos bekommst du nur raus wo der Spieler ist der den Befehl ausführt.


    Der Befehl lautet ja auch : get here all -> Er will wahrscheinlich alle Spieler zu sich porten.

  • Ist das, was mir Kaliber gesendet hat so in Ordnung oder wird das nicht klappen?


    Wie gesagt, es sollen alle Spieler zu mir geportet werden,


    am besten wärs, wenn man gefragt wird, ob man geportet werden möchte, wie mache ich das am besten, kann mir jemand das mal so vorgefertigt schicken, dass ich mir mal so einen Befehl in der Art anschaun kann, und lernen kann??

    Eigentlich ein ganz Netter! :)

  • Ist das, was mir Kaliber gesendet hat so in Ordnung oder wird das nicht klappen?


    Denk doch mal nach ;)


    Mein Command erfüllt alle Vorraussetzungen die Goldkiller geschrieben hat, obwohl es suboptimal ist, da du jetzt einfach Copy&Paste machst :S


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Zitat

    am besten wärs, wenn man gefragt wird, ob man geportet werden möchte, wie mache ich das am besten, kann mir jemand das mal so vorgefertigt schicken, dass ich mir mal so einen Befehl in der Art anschaun kann, und lernen kann??



    //Edit ach und nein ich werde kein C&P machen, weil ichs selber lernen möchte.. ich nehme das nur als Lösung


    //EDIT2: Der befehl geht immer noch nicht, nichts geschieht ingame, bzw es kommt keine Nachricht

    Eigentlich ein ganz Netter! :)

    Einmal editiert, zuletzt von ★Blackjack★ ()

  • naya bei kaliber fehlt noch GetPlayerPos(playerid, x, y, z); wenn ich mich nicht irre ?


    //edit: achja und nochwas, das X+1 nützt in dieser variante eher weniger, erstens wird er selbst auch geportet, und zweitens werden eh mehrere spieler dorthin gerportet, die dann wieder ineinanderstehen.


    Folgendes müsste aber funktionieren, schaus dir einfach mal genau an


    if(!strcmp(cmdtext, "/gethereall", true))
    {
    if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,rot,"Du benötigst ein Adminlevel > 6 !");
    new Float:X, Float:Y, Float: Z, name[24], string[128];
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Admin %s hat alle Spieler zu sich geportet !",name);
    SendClientMessageToAll(rot, string);
    GetPlayerPos(playerid, x, y, z);
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(i==playerid) continue;
    SetPlayerPos(i, X+1,Y,Z);
    }
    return 1;
    }