Szerző Téma: Több paraméterből álló parancs!  (Megtekintve 1309 alkalommal)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Dátum: 2015. Július 15. - 08:57:20 »
0
Sziasztok!
Megpróbálkoztam elkészíteni egy több paraméterből álló parancssort, ez ment is amig ugye számokat kellet irni, gondolok itt a /jail ID MP
Ez ment mert csak számokat kellett irni, na de most én olyan parancssorra gondoltam, hogy beirja a játékos hogy : /pénz ekkor kiirja neki hogy Használat : /pénz felvesz,eldob ésha beirja hogy /pénz felvesz akkor kiirja neki hogy Használat : /pénz felvesz összeg.
A felveszis eltudtam jutni, de azsem biztos hogy jó, de utána nemtudom hogy írhatnék oda számot, ami az összeg lenne.
 
CMD:penz(playerid, params[])
{
new str[40];
     if(sscanf(params,\"s[40]\",str)) return SendClientMessage(playerid, -1, \"Használat : /penz |felvesz/eldob|\");
      if(strcmp(str,\"felvesz\",true,40)) return SendClientMessage(playerid, -1,\"Használat : /penz felvesz /összeg/\");
    {
}
if(strcmp(str,\"eldob\",true,40)) return SendClientMessage(playerid, -1,\"Használat : /penz eldob /összeg/\");
    {
}
return 1;
}

Nem elérhető MotI

  • 185
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #1 Dátum: 2015. Július 15. - 09:48:05 »
0

     {
      else if(strcmp(str,\"felvesz\",true,40)) return SendClientMessage(playerid, -1,\"Használat : /penz felvesz /összeg/\");

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #2 Dátum: 2015. Július 15. - 09:51:17 »
0
De nem ez volt a problémám, és else nélkül is hibátlan.

Nem elérhető kos

  • 292
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #3 Dátum: 2015. Július 15. - 09:52:12 »
0
Sok lehetőség van erre  :cool2: ez is csak egy példa  :yes:
 

CMD:penz(playerid, params[])
{
    if(isnull(params))
    {
        SendClientMessage(playerid, SZÍN,\"/pénz [Mit]\");
        SendClientMessage(playerid, SZÍN,\"felvesz [1] | eldob [2]\");
return 1;
    }
    if(!strcmp(params, \"1\", true) || !strcmp(params, \"felvesz\", true))
    {
        // többi parancs
    }
    if(!strcmp(params, \"2\", true) || !strcmp(params, \"eldob\", true))
    {
        // többi parancs
    }
    return 1;
}

 
innentől egyszerű megcsinálnod  :smokin:

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #4 Dátum: 2015. Július 15. - 10:03:07 »
0
kos, én is megcsináltam ugyanezt De nem ez volt a problémám, eddig én is eljutottam tovább nemtudom,hogy /pénz felvesz [összeg]
az összeget kellene beleírni de nemtudom hogy...

Nem elérhető kos

  • 292
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #5 Dátum: 2015. Július 15. - 10:12:41 »
0
pofon egyszerű...
 

new osszeg;
if(sscanf(params,\"i\",osszeg)) return SendClientMessage(playerid,Red,\"Használata: /pénz felvesz [1] | [összeg]\");
if(Eldobott pénz < osszeg) return SendClientMessage(playerid,Red,\"Figyelem: Ennyit nem tudsz felvenni!\");
// másik
if(sscanf(params,\"i\",osszeg)) return SendClientMessage(playerid,Red,\"Használata: /pénz eldob [2] | [összeg]\");
if(GetPlayerMoney(playerid) < osszeg) return SendClientMessage(playerid,Red,\"Figyelem: Ennyit nem tudsz eldobni!\");

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #6 Dátum: 2015. Július 15. - 10:23:02 »
0
Megkérnélek összekapcsolnád a 2-t?

Nem elérhető kos

  • 292
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #7 Dátum: 2015. Július 15. - 10:26:24 »
0
az enyémmel vagy a tiéddel? a kettő máshogyan néz ki :) de átírható lazán egyik a másikból  ;D

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #8 Dátum: 2015. Július 15. - 10:35:42 »
0
Lényegtelen, az számít hogy jó legyen :D

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Több paraméterből álló parancs!
« Válasz #9 Dátum: 2015. Július 15. - 11:05:41 »
0
melóhelyen vagyok így nem áll rendelkezésre az otthoni kód gyűjteményem, de am írtam egy olyan motort ahol egy motor kezeli a parancsokat és a dialogot és minden funkció elérhető mind2-ben...
ott valami másmilyen megoldással oldottam meg, az nem publikus kód, de talán valami hasonló volt ehhez:



#include <a_samp>
#include <sscanf2>
#define SendClientMessage(playerid,0xFF6600FF, print(
public OnFilterScriptInit()
{
new params[128];
// Paraméter tesztek:
//format(params,sizeof(params),\"func1 alma\");
//format(params,sizeof(params),\"eldob\");
//format(params,sizeof(params),\"eldob 10\");
//format(params,sizeof(params),\"felvesz\");
format(params,sizeof(params),\"\");
//
new param1[64], param2[64];
if(sscanf(params,\"s[64]s[64]\",param1, param2) && sscanf(params,\"s[64]\",param1)) { return SendClientMessage(playerid,0xFF6600FF,\"/pénz [eldob/felvesz]\"); }
//
if(!strcmp(param1,\"eldob\",true))
{
    new osszeg;
        if(sscanf(param2,\"i\",osszeg) || !(1 <= osszeg <= 1000)) { return SendClientMessage(playerid,0xFF6600FF,\"Használat: /pénz eldob [összeg 1-1000]\"); }
        //
        SendClientMessage(playerid,0xFF6600FF,\"Eldobtad a pénzt...\");
}
else if(!strcmp(param1,\"felvesz\",true))
{
        SendClientMessage(playerid,0xFF6600FF,\"Felvetted a pénzt...\");
}
else { return SendClientMessage(playerid,0xFF6600FF,\"/pénz [eldob/felvesz]\"); }
return 1;
}

 
 
ezt most gyorsba írtam, mert láttam, hogy a fentiek megoldása egyik sem jó, már ránézésből látszott...
ha nem felejtem el akkor otthon megnézem a másik megoldást, mondjuk ott 2 nagyobb makrót írtam ami összepakolja a szöveget, mondjuk ott a parancs-dialog közti különbségek miatt kellett megcsinálni olyanra amilyen...
szerintem ezzel már fog menni, teszteltem, ott vannak a teszt paraméterek
az OnFilterScriptInit itt a cmd-t akarja helyettesíteni...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető kos

  • 292
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #10 Dátum: 2015. Július 15. - 11:19:13 »
0
wow, nice, én évek óta használom és jó.. nem tudom miben élsz de oké xd és mellesleg a cmd-t kivetted és filtbe raktad és ezért kell két string ... a te megoldásod kicsit sem jó mert betöltős xd szerver bugoltató... más munkáját nem fikázni kell, el kell h szomorítsalak de nálam működik, erről ennyit...

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Több paraméterből álló parancs!
« Válasz #11 Dátum: 2015. Július 15. - 12:01:51 »
0
Idézetet írta: kos date=1436951953\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"55171\" data-ipsquote-contentclass=\"forums_Topic
wow, nice, én évek óta használom és jó.. nem tudom miben élsz de oké xd és mellesleg a cmd-t kivetted és filtbe raktad és ezért kell két string ... a te megoldásod kicsit sem jó mert betöltős xd szerver bugoltató... más munkáját nem fikázni kell, el kell h szomorítsalak de nálam működik, erről ennyit...
 


pofon egyszerű...
 

new osszeg;
if(sscanf(params,\"i\",osszeg)) return SendClientMessage(playerid,Red,\"Használata: /pénz felvesz [1] | [összeg]\");
if(Eldobott pénz < osszeg) return SendClientMessage(playerid,Red,\"Figyelem: Ennyit nem tudsz felvenni!\");
// másik
if(sscanf(params,\"i\",osszeg)) return SendClientMessage(playerid,Red,\"Használata: /pénz eldob [2] | [összeg]\");
if(GetPlayerMoney(playerid) < osszeg) return SendClientMessage(playerid,Red,\"Figyelem: Ennyit nem tudsz eldobni!\");

 

[/quote]
 

Sok lehetőség van erre  :cool2: ez is csak egy példa  :yes:
 

CMD:penz(playerid, params[])
{
    if(isnull(params))
    {
        SendClientMessage(playerid, SZÍN,\"/pénz [Mit]\");
        SendClientMessage(playerid, SZÍN,\"felvesz [1] | eldob [2]\");
return 1;
    }
    if(!strcmp(params, \"1\", true) || !strcmp(params, \"felvesz\", true))
    {
        // többi parancs
    }
    if(!strcmp(params, \"2\", true) || !strcmp(params, \"eldob\", true))
    {
        // többi parancs
    }
    return 1;
}

 
innentől egyszerű megcsinálnod  :smokin:
 
[/quote]
hát nem tudom az utóbbiban hogyan tudnál összeget beírni, de lehet, hogy csak nekem nem egyértelmű...igaz nem teszteltem, de ránézésre ez a sor:
 
if(!strcmp(params, \"2\", true) || !strcmp(params, \"eldob\", true))

 
akkor már nem fog lefutni ha a beírt paraméter mondjuk ez: \"eldob 200\"
de lehet én látom rosszul és neked tényleg működik, használd egészséggel :)
és nem fikázni akartalak, szimplán ránézésre szembetűnő volt a hiba, de úgy tűnik nálad mégis működik, lehet én értettem valamit félre akkor...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Több paraméterből álló parancs!
« Válasz #12 Dátum: 2015. Július 15. - 12:35:53 »
0
Megcsináltam amit szerettem volna, kicsit átalakítottam, de most egy másik hiba lépett fel :
 
CMD:bank(playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 5.0, 2474.5623,1024.2528,10.8203))
    {
new osszeg;
new s[128];
    if(isnull(params))
    {
        SendClientMessage(playerid, HIBA,\"Használat : /bank [nyit/befizetés/kivétel/statisztika]\");
        return 1;
    }
if(!strcmp(params, \"nyit\", true))
        {
        if(JatekosInfo[playerid][bankszamla] == 0)// NYITÁS
    {
      SendClientMessage(playerid,SZERVER,\"{EEB917}[szerver] :{44ED37} Nyitottál egy bankszámlát!\");
      JatekosInfo[playerid][bankszamla] = 1;
   }
   else SendClientMessage(playerid, HIBA,\"Hiba : Neked már van bankszámlád!\");
}
        if(!strcmp(params, \"befizetés\", true))
       {
           if(sscanf(params,\"d\",osszeg)) return SendClientMessage(playerid,HIBA,\"Használat : /bank befizetés [ Összeg ]\");
             {
               if(JatekosInfo[playerid][Penz] >= osszeg)
                 {
                     if(JatekosInfo[playerid][bankszamla] == 1) // BEFIZETÉS
                 {
            GetPlayerName(playerid,Nev,sizeof(Nev));
            format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Betettél : %d a bankszámládra! | Jelenlegi állapot : %d \",osszeg,JatekosInfo[playerid][bank]);
            SendClientMessage(playerid,SZERVER,s);
            printf(\"%s betett %d összeget a bankszámlájára.\",Nev,osszeg);
                    JatekosInfo[playerid][bank] += osszeg;
            JatekosInfo[playerid][Penz] -= osszeg;
         }
         else SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
              }
              else SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed!\");
            }
    }
    if(!strcmp(params, \"kivétel\", true))
    {
           if(sscanf(params,\"d\",osszeg)) return SendClientMessage(playerid,HIBA,\"Használat : /bank kivétel [ Összeg ]\");
             {
               if(JatekosInfo[playerid][bank] >= osszeg)
                 {
                     if(JatekosInfo[playerid][bankszamla] == 1) // KIVÉTEL
                 {
            GetPlayerName(playerid,Nev,sizeof(Nev));
            format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Kivettél : %d a bankszámládról! | Jelenlegi állapot : %d \",osszeg,JatekosInfo[playerid][bank]);
            SendClientMessage(playerid,SZERVER,s);
            printf(\"%s kivett %d összeget a bankszámlájáról.\",Nev,osszeg);
                 JatekosInfo[playerid][Penz] += osszeg;
            JatekosInfo[playerid][bank] -= osszeg;
         }
         else SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
         }
              else SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed a Bankban!\");
            }
    }
   
    if(!strcmp(params, \"statisztika\", true) || !strcmp(params, \"statisztika\", true))
    {
        if(JatekosInfo[playerid][bankszamla] == 1) // STAT
       {
      format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Bankszámlád jelenlegi állapota : %i \",JatekosInfo[playerid][bank]);
      SendClientMessage(playerid,SZERVER,s);
   }
   else SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
       }
}
else SendClientMessage(playerid,HIBA,\"Hiba : Nem vagy a bankba!\");
    return 1;
}

 
A Pawno nem ír hibákat, azonban ha a játékban beirom pl. /bank befizetés  5000, akkor nem ir ki semmit ,se serverlogba se chat-be pedig nem irt errort a pawn.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal