[Help]Need /goto help
#1

Can someone tell me what I need to do to get this code working normaly... -.-'

pawn Код:
COMMAND:goto(playerid, params[])
{
    new id = strval(params);
    if(PlayerInfo[playerid][Admin] > 0 || PlayerInfo[playerid][Helper] > 0)
    {
        if(!params[0])return SendClientMessage(playerid, COLOR_WHITE, "[INFO]: /goto [id]");
        {
        new Float:x,Float:y,Float:z; GetPlayerPos(id,x,y,z);
        SetPlayerPos(id,x+1,y+1,z);
        }
    }
    else return SendClientMessage(playerid, COLOR_RED, "You must be Helper/Admin to use that command.");
    return 1;
}
And if I in game enter /goto he will automatically send me to id 0... why?? and how to make if player enters only /goto (without id) he gets that message..??
'Cause when I enter /goto i dont get any message...he just teleports me... :S
Reply
#2

pawn Код:
COMMAND:goto(playerid, params[])
{
    new id = strval(params);
    if(PlayerInfo[playerid][Admin] > 0 || PlayerInfo[playerid][Helper] > 0)
    {
        if(strlen(params) == 0)return SendClientMessage(playerid, COLOR_WHITE, "[INFO]: /goto [id]");
        {
        new Float:x,Float:y,Float:z;
        GetPlayerPos(id,x,y,z);
        SetPlayerPos(playerid,x+1,y+1,z);
        }
    }
    else return SendClientMessage(playerid, COLOR_RED, "You must be Helper/Admin to use that command.");
    return 1;
}
If you want to "goto" someone, you want to move yourself, not "id" - Wrong variable

That should work

I also changed this line:
pawn Код:
if(strlen(params) == 0)return SendClientMessage(playerid, COLOR_WHITE, "[INFO]: /goto [id]");
as you were just asking the script about cell "0" in params.
Reply
#3

Hmm...Thanks for quick answer but still when I enter /goto i get teleported.....to me LOL
I don't get any messages... hmmmm :S
Reply
#4

pawn Код:
#define isnull(%1)                        (!%1[0] || (%1[0] == '\1' && !%1[1]))

COMMAND:goto(playerid, params[])
{
    new
        id = strval(params),
        Float:x,
        Float:y,
        Float:z;
    if (PlayerInfo[playerid][Admin] <= 0 && PlayerInfo[playerid][Helper] <= 0) return SendClientMessage(playerid, COLOR_RED, "You must be Helper/Admin to use that command.");
    if (isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, "[INFO]: /goto [id]");
    GetPlayerPos(id, x, y, z);
    SetPlayerPos(playerid, x + 1, y + 1, z);
    return 1;
}
I'd recommend using sscanf.
Reply
#5

sscanf isn't needed in this case since there is only one paramater. However, if you have commands using more than one, I would also suggest using it.
Reply
#6

It is not needed, but seeing as he is using strval for a player's ID, I think it would be smarter to use sscanf because I, personally, would hate typing a player's ID instead of a username.

Personal preference.
Reply
#7

Quote:
Originally Posted by bigcomfycouch
Посмотреть сообщение
pawn Код:
#define isnull(%1)                        (!%1[0] || (%1[0] == '\1' && !%1[1]))

COMMAND:goto(playerid, params[])
{
    new
        id = strval(params),
        Float:x,
        Float:y,
        Float:z;
    if (PlayerInfo[playerid][Admin] <= 0 && PlayerInfo[playerid][Helper] <= 0) return SendClientMessage(playerid, COLOR_RED, "You must be Helper/Admin to use that command.");
    if (isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, "[INFO]: /goto [id]");
    GetPlayerPos(id, x, y, z);
    SetPlayerPos(playerid, x + 1, y + 1, z);
    return 1;
}
I'd recommend using sscanf.
Man thats very nice...Thanks for help
Reply
#8

i have another but ...

pawn Код:
if(strcmp(cmd, "/goto", true) == 0)     {
    if(PlayerInfo[playerid][Level] >= 2) {
        new player1, tmp[256];
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))    {
           SendClientMessage(playerid, red, "USAGE: /goto [playerid]");
        return 1;    }
        player1 = strval(tmp);

         if(IsPlayerConnected(player1))        {
            CMDMessageToAdmins(playerid,"GOTO");
            new Float:x, Float:y, Float:z;    GetPlayerPos(player1,x,y,z); SetPlayerInterior(playerid,GetPlayerInterior(player1));
            SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(player1));
            if(GetPlayerState(playerid) == 2)    {
                SetVehiclePos(GetPlayerVehicleID(playerid),x+3,y,z);    LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(player1));
                SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(player1));
            } else    {
                SetPlayerPos(playerid,x+2,y,z);    }
            GetPlayerName(player1, playername, sizeof(playername));        GetPlayerName(playerid, adminname, sizeof(adminname));
            //format(string,256,"Administrator %s has teleported to you",adminname);    SendClientMessage(player1,blue,string);
            format(string,256,"You have teleported to %s", playername); SendClientMessage(playerid,blue,string);
               return 1;
        } else {
         SendClientMessage(playerid, red, "Player is not connected");
         return 1;    }
    } else     {
    SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command");   }
     return 1;    }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)