GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Wiliam Levy - 2014. november 09. - 09:57:55

Cím: SSCANF probléma
Írta: Wiliam Levy - 2014. november 09. - 09:57:55
Hello, az a problémám, hogy csináltam egy parancsot, amihez alapból 2 param kell, de hogyha az az 1 param mondjuk \"név\" akkor működésbe kell lépnie egy harmadik paramnak
Nos hát én ezt így oldottam meg, de nem igazán működik:
 
CMD:ajto(playerid,params[])
{
    if(pInfo[playerid][pAdmin] < ASZINT_KEZDO) return NemVagyAdmin(playerid);
if(pInfo[playerid][pAdmin] < ASZINT_TELJES  && !IsPlayerAdmin(playerid)) return NemVagyElegAdmin(playerid);
new tevekenyseg[128],temp;
if(sscanf(params,\"ds\",temp,tevekenyseg)) return Msg(playerid,COLOR_LIGHTRED, \"/ajto [iD] [tevékenység] ( név, bepos, kipos, töröl, munka, frakció)\");
if(!strcmp(tevekenyseg, \"nev\", false) || !strcmp(tevekenyseg, \"név\", false))
{
new AjtoNev[128];
if(sscanf(params,\"dss\",temp,tevekenyseg,AjtoNev)) return Msg(playerid,COLOR_LIGHTRED, \"/ajto név [név]\");
if(!strlen(AjtoNev)) return Msg(playerid,COLOR_LIGHTRED, \"Írj is be valamit akkor...\");
    format(aInfo[temp][aNev],128,\"%s\",AjtoNev);
    SFM(playerid,COLOR_RED,\"Az ajtó új neve: %s\",AjtoNev);
    DestroyDynamic3DTextLabel(aInfo[temp][aLabelB]);
    DestroyDynamic3DTextLabel(aInfo[temp][aLabelK]);
   new tempa[128];
format(tempa,128,\"ID: %d\\nBejárat: %s\\nHasználat: \'F\' vagy \'ENTER\'\", temp, aInfo[temp][aNev]);
aInfo[temp][aLabelB] = CreateDynamic3DTextLabel(tempa, COLOR_WHITE, aInfo[temp][aPosBx], aInfo[temp][aPosBy], aInfo[temp][aPosBz], 20.0, INVALID_VEHICLE_ID, INVALID_VEHICLE_ID, 0, aInfo[temp][aVwB], aInfo[temp][aIntB]);
format(tempa,128,\"ID: %d\\nKijárat: %s\\nHasználat: \'F\' vagy \'ENTER\'\", temp, aInfo[temp][aNev]);
aInfo[temp][aLabelK] = CreateDynamic3DTextLabel(tempa, COLOR_WHITE, aInfo[temp][aPosKx], aInfo[temp][aPosKy], aInfo[temp][aPosKz], 20.0, INVALID_VEHICLE_ID, INVALID_VEHICLE_ID, 0, aInfo[temp][avWK], aInfo[temp][aIntK]);
    return 1;
        }
        return 1;
}//Itt eredetileg tovább is van de fölösleges lenne ide beírni.

 
Itt új nevet adhatunk az ajtónak. Az a helyzet hogy nem működik, és nem tudok vele mit kezdeni..
Segítséget előre is köszönöm.
UI:NEM szeretnék új parancsot csinálni külön
Cím: SSCANF probléma
Írta: M1A1 - 2014. november 09. - 13:30:51
Írd meg valahogy így:
 
new id, tevekenyseg[128];
if(!sscanf(params, \"is[129]\"))
{
   if(!strcmp(tevekenyseg, \"név\")
   {
      new nev[128];
      if(sscanf(params, \"{is[129]}s[129]\", nev)) Msg(playerid, \"Használat: /... ... ... ...\");
      //...
   }
}
else Msg(playerid, COLOR_..., \"Használat: /... ... ...\");

 
Gyorsan írtam, lehet benne hiba. Sok sikert!
Szerk.:
A \"{}\" specifikátorral azt jelzed, hogy arra a részre nincs szükséged.
Cím: SSCANF probléma
Írta: Wiliam Levy - 2014. november 09. - 13:40:34
Ránézésre nem tűnik jónak, most van egy jobb ötletem rá, de ha nem működik kipróbálom a tiedet
;)
Cím: SSCANF probléma
Írta: DrAkE - 2014. november 10. - 00:10:50
Karácsonyi ajándék, elméletben működnie kell:
 

if(sscanf(params,\"ds[128]{}\",temp, tevekenyseg))
return Msg(playerid,COLOR_LIGHTRED, \"/ajto [iD] [tevékenység] ( név, bepos, kipos, töröl, munka, frakció)\");
if(!strcmp(tevekenyseg, \"nev\", false) || !strcmp(tevekenyseg, \"név\", false))
{
new AjtoNev[128];
if(sscanf(params,\"{ds[128]}s[128]\",AjtoNev)) return Msg(playerid,COLOR_LIGHTRED, \"/ajto név [név]\");
if(!strlen(AjtoNev)) return Msg(playerid,COLOR_LIGHTRED, \"Írj is be valamit akkor...\");
format(aInfo[temp][aNev],128,\"%s\",AjtoNev);
SFM(playerid,COLOR_RED,\"Az ajtó új neve: %s\",AjtoNev);
DestroyDynamic3DTextLabel(aInfo[temp][aLabelB]);
DestroyDynamic3DTextLabel(aInfo[temp][aLabelK]);
new tempa[128];
format(tempa,128,\"ID: %d\\nBejárat: %s\\nHasználat: \'F\' vagy \'ENTER\'\", temp, aInfo[temp][aNev]);
aInfo[temp][aLabelB] = CreateDynamic3DTextLabel(tempa, COLOR_WHITE, aInfo[temp][aPosBx], aInfo[temp][aPosBy], aInfo[temp][aPosBz], 20.0, INVALID_VEHICLE_ID, INVALID_VEHICLE_ID, 0, aInfo[temp][aVwB], aInfo[temp][aIntB]);
format(tempa,128,\"ID: %d\\nKijárat: %s\\nHasználat: \'F\' vagy \'ENTER\'\", temp, aInfo[temp][aNev]);
aInfo[temp][aLabelK] = CreateDynamic3DTextLabel(tempa, COLOR_WHITE, aInfo[temp][aPosKx], aInfo[temp][aPosKy], aInfo[temp][aPosKz], 20.0, INVALID_VEHICLE_ID, INVALID_VEHICLE_ID, 0, aInfo[temp][avWK], aInfo[temp][aIntK]);
return 1;
}

 
[gmod]Javítottam helyetted a

taget

tagre![/gmod]
Cím: SSCANF probléma
Írta: Wiliam Levy - 2014. november 10. - 00:19:04
Találtam rá egyszerűbb megoldást! Zárok, de azért köszönöm!!!!  :thankyou:
Cím: SSCANF probléma
Írta: Dfoglalo - 2014. november 10. - 00:34:19
[gmod]Ha kiírod, hogy zársz, miért nem zárod a témát...? Akkor zárok helyetted. Legközelebb ne feledkezz meg róla![/gmod]