Szerző Téma: Nem hajtja végre a parancsot!  (Megtekintve 1999 alkalommal)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Dátum: 2015. július 15. - 15:31:24 »
0 Show voters
Sziasztok! Az lenne a problémám csináltam, a fórumozók segitségével egy scriptet, egy bankos script, csak az a baj hogy /bank befizetés összeg és /bank kivétel összegre bármit irok be nem reagál!
Kérlek segitsetek!
 
CMD:bank(playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 5.0, 2474.5623,1024.2528,10.8203))
    {
new penz;
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,\"i\",penz)) return SendClientMessage(playerid,HIBA,\"Használat : /bank befizetés [ Összeg ]\");
             {
               if(JatekosInfo[playerid][Penz] >= penz)
                 {
                     if(JatekosInfo[playerid][bankszamla] == 1) // BEFIZETÉS
                 {
            GetPlayerName(playerid,Nev,sizeof(Nev));
            format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Betettél : %i a bankszámládra! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
            SendClientMessage(playerid,SZERVER,s);
            printf(\"%s betett %i összeget a bankszámlájára.\",Nev,penz);
                    JatekosInfo[playerid][bank] += penz;
            JatekosInfo[playerid][Penz] -= penz;
         }
         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,\"i\",penz)) return SendClientMessage(playerid,HIBA,\"Használat : /bank kivétel [ Összeg ]\");
             {
               if(JatekosInfo[playerid][bank] >= penz)
                 {
                     if(JatekosInfo[playerid][bankszamla] == 1) // KIVÉTEL
                 {
            GetPlayerName(playerid,Nev,sizeof(Nev));
            format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Kivettél : %i a bankszámládról! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
            SendClientMessage(playerid,SZERVER,s);
            printf(\"%s kivett %i összeget a bankszámlájáról.\",Nev,penz);
                 JatekosInfo[playerid][Penz] += penz;
            JatekosInfo[playerid][bank] -= penz;
         }
         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;
}

Nem elérhető Xeon

Nem hajtja végre a parancsot!
« Válasz #1 Dátum: 2015. július 15. - 17:13:29 »
0 Show voters
Ami nekem most hirtelen beugrik, az az, hogy próbáld meg nem ékezetes betűkkel (befizetes, kivetel).

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #2 Dátum: 2015. július 15. - 19:08:25 »
0 Show voters
amatőr hiba..
cseréld ki ezt:
 
 sscanf(params,\"i\",penz)

 
erre
 
sscanf(params,\"ii\",penz)

 
mindkét helyen.

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #3 Dátum: 2015. július 15. - 20:20:19 »
0 Show voters
Miért cserélje ki arra?
Az úriembernek így van a parancsa.: /bank kifizet összeg.
A második paraméter az szöveges típusú, így nem értem hogy minek oda kettő integer?
A helyes megfelelő a rendszer hibátlan, és korrekt működésére.:
[gmod]Pawn kód kitéve![/gmod]
 

new parameter[32];
if(sscanf(params, \"s[32]{}\", parameter))
return Msg(playerid, COLOR_LRED, \"Használat: /bank [belép | újszámla | új | törlés | áthelyez (bejárat / kijárat) | átnevez]\",1);
if(!strcmp(parameter, \"kifizet\"))
{
new osszeg;
if(sscanf(params, \"{s[32]}d\", osszeg))
return Msg(playerid,COLOR_LRED,\"Használat: /bank újszámla\",1);
if(osszeg < 0)
return SendClientMessage(playerid, -1, \"Tyhajh, majd bemész a bankba pénzt kérni igaz?\");
// további utasítások...
« Utoljára szerkesztve: 2015. július 16. - 14:11:26 írta MAЯTIN »

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #4 Dátum: 2015. július 16. - 09:01:27 »
0 Show voters
Megcsináltam a WHADEZ féle módszerrel, de a hiba változatlan, ugyanazt az üzenetet floodolja. Úgyérzem sikerült egy kijavíthatatlan scriptet csinálni (pacsi)
« Utoljára szerkesztve: 2015. július 16. - 09:15:31 írta 1Mark6 »

Nem hajtja végre a parancsot!
« Válasz #5 Dátum: 2015. július 16. - 09:18:47 »
0 Show voters
Próbát megér.
 

CMD:bank(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 2474.5623,1024.2528,10.8203))
{
new penz, s[128];
if(sscanf(params, \"s[12]d\", params, penz))
if(isnull(params)) return SendClientMessage(playerid, -1, \"Használat: /bank < nyit / befizetés / kivétel / statisztika >\");
if(!strcmp(params, \"nyit\", true) && penz == 0)
{
if(JatekosInfo[playerid][bankszamla] == 0)// NYITÁS
{
SendClientMessage(playerid,SZERVER,\"{EEB917}[szerver] :{44ED37} Nyitottál egy bankszámlát!\");
JatekosInfo[playerid][bankszamla] = 1;
}
else return SendClientMessage(playerid, HIBA,\"Hiba : Neked már van bankszámlád!\");
}
else if(!strcmp(params, \"befizetés\", true))
{
if(penz < 1) return SendClientMessage(playerid, -1, \"Használat: /bank befizetés < Összeg >\");
if(JatekosInfo[playerid][Penz] >= penz)
{
if(JatekosInfo[playerid][bankszamla] == 1) // BEFIZETÉS
{
GetPlayerName(playerid,Nev,sizeof(Nev));
format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Betettél : %i a bankszámládra! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
SendClientMessage(playerid,SZERVER,s);
printf(\"%s betett %i összeget a bankszámlájára.\",Nev,penz);
JatekosInfo[playerid][bank] += penz;
JatekosInfo[playerid][Penz] -= penz;
}
else return SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
}
else return SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed!\");
}
else if(!strcmp(params, \"kivétel\", true))
{
if(penz < 1) return SendClientMessage(playerid, -1, \"Használat: /bank kivétel < Összeg >\");
if(JatekosInfo[playerid][bank] >= penz)
{
if(JatekosInfo[playerid][bankszamla] == 1) // KIVÉTEL
{
GetPlayerName(playerid,Nev,sizeof(Nev));
format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Kivettél : %i a bankszámládról! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
SendClientMessage(playerid,SZERVER,s);
printf(\"%s kivett %i összeget a bankszámlájáról.\",Nev,penz);
JatekosInfo[playerid][Penz] += penz;
JatekosInfo[playerid][bank] -= penz;
}
else return SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
}
else return SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed a Bankban!\");
}
else if(!strcmp(params, \"statisztika\", true) && penz == 0 || !strcmp(params, \"statisztika\", true) && penz == 0)
{
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 return SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
}
else return SendClientMessage(playerid, -1, \"Használat: /bank < nyit / befizetés / kivétel / statisztika >\");
}
else SendClientMessage(playerid,HIBA,\"Hiba : Nem vagy a bankba!\");
return 1;
}

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #6 Dátum: 2015. július 16. - 11:52:23 »
0 Show voters
Ez már lefut csak, van egy problémája, az a gond hogy beirom hogy / bank kivétel vagy befizetés. kiirja hogy Használat : /bank befizetés < összeg > és utána bármit irok pl. /bank befizetés 100 /bank befizetés asd nem reagál rá csak a használtat küldi vissza!. Pedig van pénzem, az nem lehet a gond.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Nem hajtja végre a parancsot!
« Válasz #7 Dátum: 2015. július 16. - 11:53:26 »
0 Show voters
én még mindig az itt leírt megoldásomat ajánlom:
http://sampforum.hu/index.php?topic=59721.0
teszteltem működött...szerintem neked is megérne egy próbát :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #8 Dátum: 2015. július 16. - 11:58:29 »
0 Show voters
azzal a módszerrel van ez is megcsinálva csak kibővitve. És nemjó :(

Nem hajtja végre a parancsot!
« Válasz #9 Dátum: 2015. július 16. - 12:15:03 »
0 Show voters
Ha mar ennyire nem ertitek a problema lenyeget. Ahol tobb argumentum kell lasd befizetes es kifizetes strcmp helyett hasznalj strfindet mivel sose fog egyezni azzal h befizet mivel egy szamot is irsz utana.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Nem hajtja végre a parancsot!
« Válasz #10 Dátum: 2015. július 16. - 12:23:57 »
0 Show voters
akkor nézd meg ismét amit leírtam, mert ez nem azzal a megoldással van amit leírtam neked a másik topicban :)
ezt a sort főleg nézd meg, hogy van az én megoldásomban:
 
if(!strcmp(params, \"nyit\", true))

 
meg az ehhez tartozó sscanf-es sort is...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #11 Dátum: 2015. július 16. - 12:33:37 »
0 Show voters
Úgyan olyannak látom, egyszerűbb lenne ha megoldást irnál :D

Nem hajtja végre a parancsot!
« Válasz #12 Dátum: 2015. július 16. - 12:38:34 »
0 Show voters
Ha nagyon precíz akarok lenni strfind nélkül:
 

    CMD:bank(playerid, params[])
    {
        if(IsPlayerInRangeOfPoint(playerid, 5.0, 2474.5623,1024.2528,10.8203))
        {
                    new penz;
                    new s[128];
                   
                if(isnull(params))
                {
                    SendClientMessage(playerid, HIBA,\"Használat : /bank [nyit/befizetés/kivétel/statisztika]\");
                    return 1;
                }
                    new arg[32];
                    sscanf(params, \"s[32]\", arg);
                    if(!strcmp(arg, \"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(arg, \"befizetés\", true))
            {
                    if(sscanf(params,\"{s[32]}i\",penz)) return SendClientMessage(playerid,HIBA,\"Használat : /bank befizetés [ Összeg ]\");
                    {
                            if(JatekosInfo[playerid][Penz] >= penz)
                            {
                                if(JatekosInfo[playerid][bankszamla] == 1) // BEFIZETÉS
                                    {
                                                    GetPlayerName(playerid,Nev,sizeof(Nev));
                                                    format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Betettél : %i a bankszámládra! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
                                                    SendClientMessage(playerid,SZERVER,s);
                                                    printf(\"%s betett %i összeget a bankszámlájára.\",Nev,penz);
                                JatekosInfo[playerid][bank] += penz;
                                                    JatekosInfo[playerid][Penz] -= penz;
                                            }
                                            else SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
                            }
                            else SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed!\");
                    }
                }
     
                if(!strcmp(arg, \"kivétel\", true))
                {
                    if(sscanf(params,\"{s[32]}i\",penz)) return SendClientMessage(playerid,HIBA,\"Használat : /bank kivétel [ Összeg ]\");
                    {
                            if(JatekosInfo[playerid][bank] >= penz)
                            {
                                if(JatekosInfo[playerid][bankszamla] == 1) // KIVÉTEL
                                    {
                                                    GetPlayerName(playerid,Nev,sizeof(Nev));
                                                    format(s,sizeof(s),\"{EEB917}[szerver] :{44ED37} Kivettél : %i a bankszámládról! | Jelenlegi állapot : %i \",penz,JatekosInfo[playerid][bank]);
                                                    SendClientMessage(playerid,SZERVER,s);
                                                    printf(\"%s kivett %i összeget a bankszámlájáról.\",Nev,penz);
                                            JatekosInfo[playerid][Penz] += penz;
                                                    JatekosInfo[playerid][bank] -= penz;
                                            }
                                            else SendClientMessage(playerid,HIBA,\"Hiba : Nincs bankszámlád!\");
                                    }
                            else SendClientMessage(playerid,HIBA,\"Hiba : Nincs ennyi pénzed a Bankban!\");
                    }
                }
               
                if(!strcmp(arg, \"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;
    }

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Nem hajtja végre a parancsot!
« Válasz #13 Dátum: 2015. július 16. - 13:07:47 »
0 Show voters
lackos, beirom /bank befizetés /bank kivétel és utána számot aztirja hogy SERVER:UNKNOW COMMAND!

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Nem hajtja végre a parancsot!
« Válasz #14 Dátum: 2015. július 16. - 13:08:08 »
0 Show voters
    #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 a kódot írtam a másik topicban...
 
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]\"); }

 

if(!strcmp(param1,\"eldob\",true))

 
én itt már a tovább darabolt stringet ellenőriztem és nem a params-ot...
előtte meg ugye tovább daraboltam, de am strcmp-vel is megoldható az ellenőrzés, csak akkor a további paraméterek darabolását később kell elvégezni...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal