Probem mit /goto x y z

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


    Ich möchte einen /goto x y z Befehl haben!
    Ich habde das bis jetzt so:



    if (strcmp(cmd, "/goto", true) ==0 )
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze /goto x y z");
    new Float:x_c = floatstr(tmp);
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze /goto x y z");
    new Float:y_c = floatstr(tmp);
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze /goto x y z");
    new Float:z_c = floatstr(tmp);
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(GetPlayerVehicleID(playerid),x_c,y_c,z_c);
    }
    else
    {
    SetPlayerPos(playerid,x_c,y_c,z_c);
    }
    return 1;
    }


    Aber es funktioniert nicht :(
    Er poret sich jedesmal irgendwo hin wo er nicht hin soll :(


    LG


    Shadow


    //edit grade bemerckt wenn ich jetzt einen befehl eingebe den es nicht gibt kommt immer /goto x y z!!!
    ????

    Gamemod: |||||||||||||||||||| 15%
    Map: |||||||||||||||||||| 70%



  • nehm das was ich hab das is von M4rciii glaub ich
    if(strcmp(cmd,"/worldport",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 3)
    {
    new coordstr[3][24], Float:coords[3];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp) || !strfind(tmp,",",false)) return SendClientMessage(playerid,COLOR_WHITE," /worldport 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]);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    }
    return 1;
    }


    da funkt X,Y aber Z is iwie immer 0.00000000 ^^ aber wenn du airbreak hast musste dich einfach nach oben breaken dann siehste schon wo das is weil man meist immer direkt dadrunter spawnt ^^

  • //Edit: ninja'd D: Jo is von Marciii :D

    if(strcmp(cmd,"/goto",true) == 0)
    {
    new coordstr[3][24], Float:coords[3];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE," /goto X,Y,Z");
    split(tmp,coordstr,'.');
    coords[0] = floatstr(coordstr[0]);
    coords[1] = floatstr(coordstr[1]);
    coords[2] = floatstr(coordstr[2]);
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(GetPlayerVehicleID(playerid),coords[0],coords[1],coords[2]);
    }
    else
    {
    SetPlayerPos(playerid,coords[0],coords[1],coords[2]);
    }
    return 1;
    }

  • fail?
    jetz erzähl dem doch nicht müll^^
    du hast da bei split . gemacht also PUNKT nich KOMMA ^^
    und dann haste bei sendclientblah goto[...] X,<-- KOMMA xD
    und wen er dann direkt kopiert aus script oda so muss er da noch . ersetzen und das dauert dann xD
    also probiere anstatt den '.' ',' zu nehmen


    btw Ink? da funzt bei mir Z auch nich hatte ich auch schon probiert ;D

  • Benjamin:


    Bekomme eine Error :(


    C:\Users\hans\Desktop\ser 0.3\gamemodes\selfmade.pwn(2261) : error 017: undefined symbol "split"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Gamemod: |||||||||||||||||||| 15%
    Map: |||||||||||||||||||| 70%



  • mach
    public split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }
    mal ganz unten in den script
    und oben bei den forwards :
    forward split(const strsrc[], strdest[][], delimiter);