Command, sscanf
#1

Im converting my command from strcmp to ycmd, and i come to this problem...
Part of the command where is problem:
Код:
else if(strcmp(params,"color",true) == 0)
  {
  new color1, color2;
  if(ownvehkey == 999) return SCM(playerid, COLOR_GREY,"[GRESKA] Niste u vasem vozilu!");
  if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, COLOR_GREY,"   Nemate dovoljno novca za farbanje.");
  if(sscanf(params, "ii", color1, color2)) return SCM(playerid, -1, "/v color [ID boje 1] [ID boje 2]");
  if(color1 < 0 && color1 > 255 || color2 < 0 && color2 > 255) return SendClientMessage(playerid, COLOR_GREY, "   Pogresan color id!");
  CarInfo[ownvehkey][cColorOne] = color1;
  CarInfo[ownvehkey][cColorTwo] = color2;
  GivePlayerMoneyEx(playerid, -1000);
  GameTextForPlayer(playerid, "~w~Cena farbanja~n~~r~-$1000", 5000, 1);
  ChangeVehicleColor(ownvehkey, color1, color2);
  SacuvajVozilo(ownvehkey);
  return 1;
  }
else return ShowPlayerDialog(playerid,213,DIALOG_STYLE_MSGBOX, "{0F629F}Vozilo Pomoc","{0F629F}/v park - {FFFFFF}Parkirati vozilo\n{0F629F}/v lock (1-3) - {FFFFFF}Zakljucati-Otkljucati vozilo\n{0F6Audio_CreateSequence()29F}/v sell - {FFFFFF}Prodati vozilo\n{0F629F}/v sellto - {FFFFFF}Prodati vozilo igracu\n{0F629F}/v color - {FFFFFF}Ofarbati vozilo\n{0F629F}/v list - {FFFFFF}Videti listu vozila\n{0F629F}","Ok","");
When i write /v color, its say /v color [ID boje 1] [ID boje 2], but when i write ex: /v color 1, or just empty space, its show dialog... How to fix it?
Reply
#2

Show the entire command.

+ if it helps, you can just do (sscanf(params, "'color'ii", color1, color2)), but I still need to see the entire command to set it up right.
Reply
#3

Here is it: Command
Reply
#4

Anyone to help?

P.S. I try this what tell me @Crayder, but its not work good...
Reply
#5

Why did you remove the command ?
The example you showed should be working..
pawn Код:
else if(strcmp(params,"color",true) == 0)
{
    if(ownvehkey == 999) return SCM(playerid, COLOR_GREY,"[GRESKA] Niste u vasem vozilu!");
    if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, COLOR_GREY,"   Nemate dovoljno novca za farbanje.");

    new color1, color2;
    if(sscanf(params, "dd", color1, color2)) return SCM(playerid, -1, "/v color [ID boje 1] [ID boje 2]");
    if(color1 < 0 && color1 > 255 || color2 < 0 && color2 > 255) return SendClientMessage(playerid, COLOR_GREY, "   Pogresan color id!");
    CarInfo[ownvehkey][cColorOne] = color1;
    CarInfo[ownvehkey][cColorTwo] = color2;
    GivePlayerMoneyEx(playerid, -1000);
    GameTextForPlayer(playerid, "~w~Cena farbanja~n~~r~-$1000", 5000, 1);
    ChangeVehicleColor(ownvehkey, color1, color2);
    SacuvajVozilo(ownvehkey);
    return 1;
}
else return ShowPlayerDialog(playerid,213,DIALOG_STYLE_MSGBOX, "{0F629F}Vozilo Pomoc","{0F629F}/v park - {FFFFFF}Parkirati vozilo\n{0F629F}/v lock (1-3) - {FFFFFF}Zakljucati-Otkljucati vozilo\n{0F6Audio_CreateSequence()29F}/v sell - {FFFFFF}Prodati vozilo\n{0F629F}/v sellto - {FFFFFF}Prodati vozilo igracu\n{0F629F}/v color - {FFFFFF}Ofarbati vozilo\n{0F629F}/v list - {FFFFFF}Videti listu vozila\n{0F629F}","Ok","");
Reply
#6

I choose time for expire...
Here is new link: http://pastebin.com/iwhVJC2p

BTW: Its not working good, xVIP3Rx
Reply
#7

You need add lenght in strcmp

pawn Код:
else if(strcmp(params,"color",true,5) == 0) // 5 means strlen("color")
because if you type /v color 1, params is "color 1" so strcmp is not "color" (doesn't match)
and next sscanf you need skip "color" from params (we dont need "color" part) so {s[6}}
pawn Код:
if(sscanf(params, "{s[6]}dd", color1, color2))
Reply
#8

I do it, but its not working... it always say: /v color [ID boje 1] [ID boje 2]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)