-
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;
}
-
Ami nekem most hirtelen beugrik, az az, hogy próbáld meg nem ékezetes betűkkel (befizetes, kivetel).
-
amatőr hiba..
cseréld ki ezt:
sscanf(params,\"i\",penz)
erre
sscanf(params,\"ii\",penz)
mindkét helyen.
-
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...
-
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)
-
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;
}
-
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.
-
é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 :)
-
azzal a módszerrel van ez is megcsinálva csak kibővitve. És nemjó :(
-
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.
-
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...
-
Úgyan olyannak látom, egyszerűbb lenne ha megoldást irnál :D
-
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;
}
-
lackos, beirom /bank befizetés /bank kivétel és utána számot aztirja hogy SERVER:UNKNOW COMMAND!
-
#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...
-
A probléma megoldódott WHADEZ segitségével, köszönöm WHADEZ és igazad volt hülye voltam ehez.