/gotocoords

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
  • Guten Tag liebe Breadfishe!
    Ich will mir jetzt einen /gotocoords Befehl erstellen, wo man /gotocoords eintippt und dann die Koordinaten postet und dann zu dieser Stelle gelangen soll. (z.B. /gotocoords 181.3221, 245.1454, 123.1444)
    Wie mache ich das?
    Habe zwar etwas ausprobiert, doch es hat nicht geklappt.
    Braucht man hier für spezielle Integer / Defines oder so?
    Weil ich hatte alles richtig bei if(sscanf(params,"iii",X,Y,Z))return .... aber es ging nicht.


    Könntet ihr helfen?

  • ocmd:gotocoords(playerid,params[])
    {
    new fahr,Float:x,Float:y,Float:z,string[128];
    if(sscanf(params,"fff",x,y,z))return SendClientMessage(playerid,rot,"Benutzung: /gotocoords [x] [y] [z]");
    if(Adminabfrage)
    {
    fahr = GetPlayerVehicleID(playerid);
    SetVehiclePos(fahr,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    PutPlayerInVehicle(playerid,fahr,0);
    format(string,sizeof(string),"Sie haben sich zu den kooridnaten %i %i %i Teleportiert",x,y,z);
    SendClientMessage(playerid,rot,string);
    }
    return 1;
    }


    //edit:
    jetzt sollte es gehen ( X, Y und Z als Float erstellt )

  • also muss ich if(sscanf(params,"fff",Position_X,Position_Y,Position_Z))return .... machen?
    Und bei den new's:
    new Float:Position_X, .... ??


    Ich würde noch die Split Funtion nutzen, die ich oben verlinbkt habe
    Ansonsten musst du die coords so eingeben: XXX.XXX XXX.XXX XXX.XXX Die Function kann aber die Kommas trennen heißt kannst
    wie gewohnt so eingeben: XXX.XXX, XXX.XXX, XXX.XXX


    L.G.
    heyho ;)

  • der befehl ging bei mir nicht.

    ocmd:gotocoords(playerid, params[])
    {
    new Float:Position_X, Float:Position_Y, Float:Position_Z;
    new vehicle, string[128];
    if(!IsPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,Hellrot,"* Du bist dazu nicht befugt.");
    if(sscanf(params,"fff",Position_X,Position_Y,Position_Z))return SendClientMessage(playerid,Grau,"FEHLER: /gotocoords [Koordinaten]");
    vehicle = GetPlayerVehicleID(playerid);
    GetVehiclePos(vehicle,Position_X,Position_Y,Position_Z);
    GetPlayerPos(playerid,Position_X,Position_Y,Position_Z);
    format(string,sizeof(string),"* Du hast dich zu den Koordinaten %i %i %i teleportiert.",Position_X,Position_Y,Position_Z);
    SendClientMessage(playerid,Gelb,string);
    format(string,sizeof(string),"%s hat den Befehl /gotocoords benutzt. (Nur zur Info!)",SpielerName(playerid));
    printf(string);
    SetVehiclePos(vehicle,Position_X,Position_Y,Position_Z);
    SetPlayerPos(playerid,Position_X,Position_Y,Position_Z);
    return 1;
    }

  • Nimm meinen strmp Befehl (kannste ja umschreiben)


    if(strcmp(cmd,"/gotocoords",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    new coordstr[3][24], Float:coords[3];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE," /gotocoords X,Y,Z");
    split(tmp,coordstr,',');
    coords[0] = floatstr(coordstr[0]);
    coords[1] = floatstr(coordstr[1]);
    coords[2] = floatstr(coordstr[2]);
    SetPlayerPos(playerid,coords[0],coords[1],coords[2]);
    format(string,sizeof(string)," Erfolgreich teleportiert: X %f Y %f Z %f",coords[0],coords[1],coords[2]);
    ShowInfoDialog(playerid,"Koordinaten",string);
    }
    return 1;
    }
    L.G.
    heyho ;)


    //edit: cmd = strtok(cmdtext, idx);

  • Schreibs so:


    ocmd:gotocoords(playerid, params[]) {
    if(!IsPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,Hellrot,"* Du bist dazu nicht befugt.");
    new Float:Pos[3],string[128];
    if(sscanf(params,"fff",Pos[0],Pos[1],Pos[2]))return SendClientMessage(playerid,Grau,"FEHLER: /gotocoords [Koordinaten]");
    if(IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),Pos[0],Pos[1],Pos[2]);
    else SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    format(string,sizeof(string),"* Du hast dich zu den Koordinaten %i %i %i teleportiert.",Pos[0],Pos[1],Pos[2]);
    SendClientMessage(playerid,Gelb,string);
    format(string,sizeof(string),"%s hat den Befehl /gotocoords benutzt. (Nur zur Info!)",SpielerName(playerid));
    print(string);
    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

  • danke, ich habe mein problem gelöst:
    hatte GetPlayerVehicleID(playerid); und GetPlayerPos(playerid); drinne, dabei bleibt ja dann der Spieler an der selben stelle stehen.


    Habe es doch oben geschrfieben nimm doch den Code ;)

    muss ich einfach nur den Code einfügen?