[HELP] SSCANF Arguments
#1

Перевожу команды в моде на sscanf + dc_cmd
Впрочем проблем почти нету, но я не знаю как перевести такую команду: (LuxAdmin)

PHP код:
dcmd_car(playerid,params[])
{
    if(
AccInfo[playerid][Level] >= 3)
    {
        new 
Index;
        new 
tmp[256];  tmp  strtok(params,Index);
        new 
tmp2[256]; tmp2 strtok(params,Index);
        new 
tmp3[256]; tmp3 strtok(params,Index);
        if(!
strlen(tmp)) return
        
SendClientMessage(playeridLIGHTBLUE2"Usage: /car [ModelID/Name] [Colour1] [Colour2]") &&
           
SendClientMessage(playeridorange"Function: Will create a Car with specified Colours");
        new 
car;
        new 
string[128];
        new 
colour1colour2;
           if(!
IsNumeric(tmp))
         
car GetVehicleModelIDFromName(tmp);
          else 
car strval(tmp);
        if(
car 400 || car 611) return  SendClientMessage(playeridred"ERROR: Invalid Vehicle Model ID!");
        if(!
strlen(tmp2)) colour1 random(126); else colour1 strval(tmp2);
        if(!
strlen(tmp3)) colour2 random(126); else colour2 strval(tmp3);
        
        if(
AccInfo[playerid][pCar] != -&& !IsPlayerAdmin(playerid))
        
EraseVeh(AccInfo[playerid][pCar]);
        new 
LVehicleID;
        new 
Float:X,Float:Y,Float:Z;
        new 
Float:Angle,int1;
        
GetPlayerPos(playeridX,Y,Z);
        
GetPlayerFacingAngle(playerid,Angle);
        
int1 GetPlayerInterior(playerid);
        
LVehicleID CreateVehicle(carX+3,Y,ZAnglecolour1colour2, -1);
        
LinkVehicleToInterior(LVehicleID,int1);
        
AccInfo[playerid][pCar] = LVehicleID;
        
SendCommandToAdmins(playerid,"Car");
        
format(stringsizeof(string), "%s Spawned a \"%s\" (Model:%d) Colours (%d, %d), Pos: X:%0.2f, Y:%0.2f, Z:%0.2f"pName(playerid), VehicleNames[car-400], carcolour1colour2XYZ);
        
SaveIn("CarSpawns",string);
        
format(stringsizeof(string), "|- You have Spawned a \"%s\" (Model: %d) with Colours: %d,%d -|"VehicleNames[car-400], carcolour1colour2);
        return 
SendClientMessage(playerid,LIGHTBLUEstring);
    }
    else return 
ErrorMessages(playerid6);

Как сделать что бы не "ругался" сервер

Код:
[23:47:02] [command] [SkyLoKi.]: /car Elegy 0 0
[23:47:02] sscanf warning: Strings without a length are deprecated, please add a destination size.
Вот так я использую сейчас:

Код:
if(sscanf(params,"sii",id,color1,color2)) return UseCmd(playerid,"/car [ModelID/Name] [Colour1] [Colour2]","Will create a Car with specified Colours");
Возникают два вопроса:

1. Как тут сделать что бы первый параметр мог быть либо числовой, либо строчный?
2. Как сделать цвета необязательными?

P.S.
Про параметр z читал в wiki sscanf, но он строчный.
-1 перед параметрами я так и не понял как делать (где то видел что так вроде можно, но не получалось)
Reply
#2

Код:
sscanf warning: Strings without a length are deprecated, please add a destination size.
укажи размер для "s"
Reply
#3

Quote:
Originally Posted by DeViLsS
Посмотреть сообщение
Код:
sscanf warning: Strings without a length are deprecated, please add a destination size.
укажи размер для "s"
Мда.. как то глупо получилось с моей стороны) Видел просто sscanf warning и дальше даже не читал.. Спасибо)

Тогда только вопрос 2 остается
Как сделать цвета необязательными?
Reply
#4

Ну так они и необязательные, если их не указать, они будут равны 0, т.е. чёрный.
Reply
#5

Если я их (цвета) не ввожу, то пишет как использовать команду: /car [ModelID/Name] [Colour1] [Colour2]
Reply
#6

В коде первого поста не так. С вашими фуфлосканфами надо убрать строку "Вот так я использую сейчас".
Reply
#7

Вводим название/ид машины без цветов => создаст машину с 0 цветами.

PHP код:
if(sscanf(params,"s[max value str]",id)) return UseCmd(playerid,"/car [ModelID/Name] [Colour1] [Colour2]","Will create a Car with specified Colours");
sscanf(params,"s[max value str]ii",id,color1,color2); 
Поправил
Reply
#8

Сейчас буду пробовать
Reply
#9

Quote:
Originally Posted by Dembel
Посмотреть сообщение
Вводим название/ид машины без цветов => создаст машину с 0 цветами.

PHP код:
if(sscanf(params,"s[max value str]",id)) return UseCmd(playerid,"/car [ModelID/Name] [Colour1] [Colour2]","Will create a Car with specified Colours");
sscanf(params,"s[max value str]ii",id,color1,color2); 
Поправил
Спасибо. Помогло
Reply
#10

А вот так будет правильнее, красивее и быстрее:

PHP код:
if (sscanf(params,"s[размер строки]I(знач. по умолч.)I(зн. по ум.)"idcolor1color2))
{
    ...
    return 
1;
}
... 
Reply
#11

У меня так почему то не срабатывает
Reply
#12

Покажи, как ты сделал.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)