Convert dcmd command to strcmp
#1

Hello, please could someone convert this to strcmp or tell me how to do it.

I have tried just replacing the top line to the strcmp format but then I get lots of errors about params.

Thank you

pawn Код:
dcmd_addv(playerid, params[])
{
    if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
    if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
    new model[32], modelid, dealerid, color1, color2, price;
    if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
        return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [dealerid] [model] [color1] [color2] [price]");
    if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
    if(CarIsNumeric(model)) modelid = strval(model);
    else modelid = GetVehicleModelIDFromName(model);
    if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
    if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
    if(price < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
    new Float:X, Float:Y, Float:Z, Float:angle;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, angle);
    X += floatmul(floatsin(-angle, degrees), 4.0);
    Y += floatmul(floatcos(-angle, degrees), 4.0);
    for(new i=1; i < MAX_DVEHICLES; i++)
    {
        if(!VehicleCreated[i])
        {
            new msg[128];
            VehicleCreated[i] = VEHICLE_DEALERSHIP;
            VehicleModel[i] = modelid;
            VehiclePos[i][0] = X;
            VehiclePos[i][1] = Y;
            VehiclePos[i][2] = Z;
            VehiclePos[i][3] = angle+90.0;
            VehicleColor[i][0] = color1;
            VehicleColor[i][1] = color2;
            VehicleInterior[i] = GetPlayerInterior(playerid);
            VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
            VehicleValue[i] = price;
            valstr(VehicleOwner[i], dealerid);
            VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
            for(new d=0; d < sizeof(VehicleTrunk[]); d++)
            {
                VehicleTrunk[i][d][0] = 0;
                VehicleTrunk[i][d][1] = 0;
            }
            for(new d=0; d < sizeof(VehicleMods[]); d++)
            {
                VehicleMods[i][d] = 0;
            }
            VehiclePaintjob[i] = 255;
            UpdateVehicle(i, 0);
            SaveVehicle(i);
            format(msg, sizeof(msg), "Added vehicle id %d to dealerid %d", i, dealerid);
            SendClientMessage(playerid, COLOR_WHITE, msg);
            return 1;
        }
    }
    SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
    return 1;
}
Reply
#2

Use zcmd or ycmd as the command processor. Using strcmp(String Compare) for command processing is a bad idea.
Reply
#3

Yeah, but i need it to be strcmp so that it is compatible with my gamemode
Reply
#4

Quote:
Originally Posted by lewismichaelbbc
Посмотреть сообщение
Yeah, but i need it to be strcmp so that it is compatible with my gamemode
Why do you think only strcmp is capable with your gamemode?
Reply
#5

i have already tried zcmd - which I can get to compile perfectly but when I go ingame, every command says 'unknown command'
Reply
#6

Quote:
Originally Posted by lewismichaelbbc
Посмотреть сообщение
i have already tried zcmd - which I can get to compile perfectly but when I go ingame, every command says 'unknown command'
It's possibly a return problem. Post your code that has that problem.
Reply
#7

I have posted the start of my onplayercommandtext, it goes on forever, lol. I think i know what it is, I have indicated it in the code below:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(gPlayerSpawned[playerid] == 0)
    {
        SendClientMessage(playerid, COLOR_GRAD1, "   You are not logged in or have not spawned !");
        return 1;
    }
    if(PlayerInfo[playerid][pAdmin] > 0 && gAdminAuthorized[playerid] == 0)
    {
        Kick(playerid);
        return 1;
    }
    new pos, funcname[32];
    while(cmdtext[++pos] > ' ')
    {
        funcname[pos-1] = tolower(cmdtext[pos]);
    }
    strins(funcname, "cmd_", 0, sizeof(funcname));
    while (cmdtext[pos] == ' ') pos++;
    if(!cmdtext[pos])
    {
        return CallLocalFunction(funcname, "is", playerid, "\1");
    }
    return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]); //Think Its Something To Do With This
    new string[128];
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new cmd[128];
    new tmp[128];
    new giveplayerid, moneys, idx;
    cmd = strtok(cmdtext, idx);
    dcmd(countdown, 9, cmdtext);
    dcmd(pm, 2, cmdtext);
    dcmd(reply, 5, cmdtext);
    dcmd(nopm, 4, cmdtext);
This is the problem i think:

pawn Код:
new pos, funcname[32];
    while(cmdtext[++pos] > ' ')
    {
        funcname[pos-1] = tolower(cmdtext[pos]);
    }
    strins(funcname, "cmd_", 0, sizeof(funcname));
    while (cmdtext[pos] == ' ') pos++;
    if(!cmdtext[pos])
    {
        return CallLocalFunction(funcname, "is", playerid, "\1");
    }
    return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]); //Think Its Something To Do With This
Reply
#8

so could you explain to me on how to upgrade them?

Thank you
Reply
#9

okay, i made this command

pawn Код:
if(strcmp(cmd, "/buyveh", true) == 0)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        new id = GetVehicleID(vehicleid);
        if(IsValidVehicle(id))
        {
            if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
            {
                if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
                {
                    ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
                    return 1;
                }
                //new id = GetPVarInt(playerid, "DialogValue1");
                if(GetPlayerMoney(playerid) < VehicleValue[id])
                {
                    ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
                    return 1;
                }
                new freeid = GetFreeVehicleID();
                if(!freeid)
                {
                    ShowErrorDialog(playerid, "Vehicle dealership is out of stock!");
                    return 1;
                }
                GivePlayerMoney(playerid, -VehicleValue[id]);
                PlayerInfo[playerid][pCash] = PlayerInfo[playerid][pCash]-VehicleValue[id];
                new dealerid = strval(VehicleOwner[id]);
                VehicleCreated[freeid] = VEHICLE_PLAYER;
                VehicleModel[freeid] = VehicleModel[id];
                VehiclePos[freeid] = DealershipPos[dealerid];
                VehicleColor[freeid] = VehicleColor[id];
                VehicleInterior[freeid] = VehicleInterior[id];
                VehicleWorld[freeid] = VehicleWorld[id];
                VehicleValue[freeid] = VehicleValue[id];
                GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
                VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
                for(new d=0; d < sizeof(VehicleTrunk[]); d++)
                {
                    VehicleTrunk[freeid][d][0] = 0;
                    VehicleTrunk[freeid][d][1] = 0;
                }
                for(new d=0; d < sizeof(VehicleMods[]); d++)
                {
                    VehicleMods[freeid][d] = 0;
                }
                VehiclePaintjob[freeid] = 255;
                UpdateVehicle(freeid, 0);
                SaveVehicle(freeid);
                new msg[128];
                format(msg, sizeof(msg), "You have bought this vehicle for $%d", VehicleValue[id]);
                SendClientMessage(playerid, COLOR_WHITE, msg);
            }
            else
            {
                if(GetPlayerVehicleAccess(playerid, vehicleid) < 1)
                {
                    RemovePlayerFromVehicle(playerid);
                }
            }
        }
        return 1;
    }
But its not working, its not detecting the params. What can i do to fix this?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)