-
Üdv.
Mint a téma nevében is látni /széf problémám akadt... Ugyebár megcsináltam azt a parancsot, hogy /széf [megnéz] [ki/be]-[mit]-[mennyit]
Tökéletesen mûködik a /széf [ki/be]-[mit]-[mennyit], de a /széf megnéz nem jó, mert nem tudtam rájönni hogyan lehetne a funkciókat addig kikapcsolni.... :hmmm:
if(sscanf(params,\"s[16]s[16]d\",function,function2,osszeg)) return msg(playerid,Red,\"/széf [megnéz] [ki/be]-[mit]-[mennyit]\");
Tehát ez azt teszi lehetõvé, hogy sok funkciót megadhatok, de a /széf megnéznél is kéne ugyebár, és hogyan tudnám azt megcsinálni, hogy annál ne kérje azokat :question:
Remélem érthetõ volt a kérdésem ::|
-
Úgy szeretnéd, hogy beírod, hogy /széf és kijön, hogy mi van benne?Vagy, hogy /széf megnéz és úgy jön ki??
-
/széf megnéz és úgy jöjjön ki.
-
:hmmm: :hmmm:
hát abból a kicsibõl amit leszûrtem a kérdésedbõl, valami olyasmire vágyhatsz hogy ha beírod hogy: /széf akkor mutassa a széfben lévõ pénzt...
viszont azt a részt nem értem hogy mit magyarázol az sscanf-fal szóval egy külön parancsban leírom, hátha utána meg tudod csinálni magadnak.
tehát:
CMD:szef(playerid, params[])
{
new nev[MAX_PLAYER_NAME];
GetPlayerName(playerid, nev, sizeof(nev));
dfile_Open(nev) //igazából fölösleges hisz a dfile magától nyitja meg a fájlokat ha épp ki kell olvasni valamit vagy beírni, de a biztonság kedvéért :)
new str[128]; //na én így csináltam a hasonló dolgokat
format(str, sizeof(str), \"Készpénz: %i\", dfile_ReadInt(\"Széfpénz\"));
ShowPlayerDialog(playerid, 666, DIALOG_STYLE_LIST, \"Széf\", str, \"Ok\", \"\");
return 1;
}
Ezek után még csinálhatsz egy (szerintem) sokkal jobban kinézõ kivesz-betesz dolgot az OnDialogResponse-ban ami mint már említettem jobban is nézne ki szerintem és egyszerûbb is lenne használni (persze ha szebb és a használat egyszerûbb = a script kcsit hosszadalmasabb és összetettebb)
-
Köszi, ez hasznos, de ezt én is meg tudom csinálni :) igazából nekem még mindig az a bajom, hogy nem tudom kikapcsolni a funkciókat...
Egy kis részletet mutatok, hogy vizuálisan is lássad a gondomat:(ez a v1.0 verzió a széfbõl, azóta már fejlesztettem, hogy ne keljen külön irkálni minden széfet. )
CMD:szef(playerid, params[])
{
new function[70],function2[70],osszeg;
if(sscanf(params,\"s[16]s[16]d\",function,function2,osszeg)) return msg(playerid,Red,\"/széf [megnéz] [ki/be]-[mit]-[mennyit]\");
if(pInfo[playerid][pFrakcio] == 1)
{
if(pInfo[playerid][pFrakcioRang] >= YakuzaMinrang)
{
if(!strcmp(function,\"ki\",true))
{
if(!strcmp(function2,\"pénz\",true))
{
if(YakuzaPenz < osszeg) return msg(playerid,Red,\"Nincs ennyi pénz a széfben!\");
pInfo[playerid][pPenz] += osszeg;
GivePlayerMoney(playerid,osszeg);
YakuzaPenz -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kaja\",true))
{
if(YakuzaKaja < osszeg) return msg(playerid,Red,\"Nincs ennyi kaja a széfben!\");
pInfo[playerid][pKaja] += osszeg;
YakuzaKaja -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"mati\",true))
{
if(YakuzaMati < osszeg) return msg(playerid,Red,\"Nincs ennyi mati a széfben!\");
pInfo[playerid][pMati] += osszeg;
YakuzaMati -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"marihuana\",true))
{
if(YakuzaMarihuana < osszeg) return msg(playerid,Red,\"Nincs ennyi marihuana a széfben!\");
pInfo[playerid][pMarihuana] += osszeg;
YakuzaMarihuana -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"heroin\",true))
{
if(YakuzaHeroin < osszeg) return msg(playerid,Red,\"Nincs ennyi heroin a széfben!\");
pInfo[playerid][pHeroin] += osszeg;
YakuzaHeroin -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kokain\",true))
{
if(YakuzaKokain < osszeg) return msg(playerid,Red,\"Nincs ennyi kokain a széfben!\");
pInfo[playerid][pKokain] += osszeg;
YakuzaKokain -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"gyémánt\",true))
{
if(YakuzaMati < osszeg) return msg(playerid,Red,\"Nincs ennyi gyémánt a széfben!\");
pInfo[playerid][pGyemant] += osszeg;
YakuzaGyemant -= osszeg;
YakuzaSzefMent();
}
}
}else msg(playerid,Red,\"Nincs elég rangod hozzá!\");
if(!strcmp(function,\"be\",true))
{
if(!strcmp(function2,\"pénz\",true))
{
if(pInfo[playerid][pPenz] < osszeg) return msg(playerid,Red,\"Nincs ennyi pénz nálad!\");
pInfo[playerid][pPenz] -= osszeg;
GivePlayerMoney(playerid,-osszeg);
YakuzaPenz += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kaja\",true))
{
if(pInfo[playerid][pKaja] < osszeg) return msg(playerid,Red,\"Nincs ennyi kaja nálad!\");
pInfo[playerid][pKaja] -= osszeg;
YakuzaKaja += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"mati\",true))
{
if(pInfo[playerid][pMati] < osszeg) return msg(playerid,Red,\"Nincs ennyi mati nálad!\");
pInfo[playerid][pMati] -= osszeg;
YakuzaMati += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"marihuana\",true))
{
if(pInfo[playerid][pMarihuana] < osszeg) return msg(playerid,Red,\"Nincs ennyi marihuana nálad!\");
pInfo[playerid][pMarihuana] -= osszeg;
YakuzaMarihuana += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"heroin\",true))
{
if(pInfo[playerid][pHeroin] < osszeg) return msg(playerid,Red,\"Nincs ennyi heroin nálad!\");
pInfo[playerid][pHeroin] -= osszeg;
YakuzaHeroin += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kokain\",true))
{
if(pInfo[playerid][pKokain] < osszeg) return msg(playerid,Red,\"Nincs ennyi kokain nálad!\");
pInfo[playerid][pKokain] -= osszeg;
YakuzaKokain += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"gyémánt\",true))
{
if(pInfo[playerid][pGyemant] < osszeg) return msg(playerid,Red,\"Nincs ennyi gyémánt nálad!\");
pInfo[playerid][pGyemant] -= osszeg;
YakuzaGyemant += osszeg;
YakuzaSzefMent();
}
}
}else msg(playerid,Red,\"Nem vagy Yakuza tagja!\");
return 1;
}
ez mind szépen mûködik, de igazából ha be akarom építeni ezt /széf megnéz részt is, ez azért nem lesz jó mert ugyan úgy kéri a többi adatot(a mit és menyit)
Nekem ez a gondom, hogy nem tudom megcsinálni, hogy annál ne kérje a másik két funkciót...
Remélem így vizuálisan egy régebbi széf verziómmal érthetõ a kérdésem :)
-
if(!strlen(params) || strcmp(params,\"megnéz\",true) && sscanf(params,\"s[16]s[16]d\",function,function2,osszeg)) return msg(playerid,Red,\"/széf [megnéz] [ki/be]-[mit]-[mennyit]\");
//
if(!strcmp(params,\"megnéz\",true))
{
// megnézés kódja
}
else
{
// ki / berakás kódja
}
ez megfelel?
-
hm közel a megolás :) megfelelne ha nem bugolna a minranggal ><... mert csak példaként vetettem fel am egnézet, sok más parancs van még amihez ki kell kapcsolni a funkciókat, de a minrangnál pl csak az összeg kell, ami valaiért bugolt a megnézzel...
-
javítottam most nézd meg
-
Igen így már tökéletes 8)
Köszönöm ment a +
-
Köszi, ez hasznos, de ezt én is meg tudom csinálni :) igazából nekem még mindig az a bajom, hogy nem tudom kikapcsolni a funkciókat...
Egy kis részletet mutatok, hogy vizuálisan is lássad a gondomat:(ez a v1.0 verzió a széfbõl, azóta már fejlesztettem, hogy ne keljen külön irkálni minden széfet. )
CMD:szef(playerid, params[])
{
new function[70],function2[70],osszeg;
if(sscanf(params,\"s[16]s[16]d\",function,function2,osszeg)) return msg(playerid,Red,\"/széf [megnéz] [ki/be]-[mit]-[mennyit]\");
if(pInfo[playerid][pFrakcio] == 1)
{
if(pInfo[playerid][pFrakcioRang] >= YakuzaMinrang)
{
if(!strcmp(function,\"ki\",true))
{
if(!strcmp(function2,\"pénz\",true))
{
if(YakuzaPenz < osszeg) return msg(playerid,Red,\"Nincs ennyi pénz a széfben!\");
pInfo[playerid][pPenz] += osszeg;
GivePlayerMoney(playerid,osszeg);
YakuzaPenz -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kaja\",true))
{
if(YakuzaKaja < osszeg) return msg(playerid,Red,\"Nincs ennyi kaja a széfben!\");
pInfo[playerid][pKaja] += osszeg;
YakuzaKaja -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"mati\",true))
{
if(YakuzaMati < osszeg) return msg(playerid,Red,\"Nincs ennyi mati a széfben!\");
pInfo[playerid][pMati] += osszeg;
YakuzaMati -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"marihuana\",true))
{
if(YakuzaMarihuana < osszeg) return msg(playerid,Red,\"Nincs ennyi marihuana a széfben!\");
pInfo[playerid][pMarihuana] += osszeg;
YakuzaMarihuana -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"heroin\",true))
{
if(YakuzaHeroin < osszeg) return msg(playerid,Red,\"Nincs ennyi heroin a széfben!\");
pInfo[playerid][pHeroin] += osszeg;
YakuzaHeroin -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kokain\",true))
{
if(YakuzaKokain < osszeg) return msg(playerid,Red,\"Nincs ennyi kokain a széfben!\");
pInfo[playerid][pKokain] += osszeg;
YakuzaKokain -= osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"gyémánt\",true))
{
if(YakuzaMati < osszeg) return msg(playerid,Red,\"Nincs ennyi gyémánt a széfben!\");
pInfo[playerid][pGyemant] += osszeg;
YakuzaGyemant -= osszeg;
YakuzaSzefMent();
}
}
}else msg(playerid,Red,\"Nincs elég rangod hozzá!\");
if(!strcmp(function,\"be\",true))
{
if(!strcmp(function2,\"pénz\",true))
{
if(pInfo[playerid][pPenz] < osszeg) return msg(playerid,Red,\"Nincs ennyi pénz nálad!\");
pInfo[playerid][pPenz] -= osszeg;
GivePlayerMoney(playerid,-osszeg);
YakuzaPenz += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kaja\",true))
{
if(pInfo[playerid][pKaja] < osszeg) return msg(playerid,Red,\"Nincs ennyi kaja nálad!\");
pInfo[playerid][pKaja] -= osszeg;
YakuzaKaja += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"mati\",true))
{
if(pInfo[playerid][pMati] < osszeg) return msg(playerid,Red,\"Nincs ennyi mati nálad!\");
pInfo[playerid][pMati] -= osszeg;
YakuzaMati += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"marihuana\",true))
{
if(pInfo[playerid][pMarihuana] < osszeg) return msg(playerid,Red,\"Nincs ennyi marihuana nálad!\");
pInfo[playerid][pMarihuana] -= osszeg;
YakuzaMarihuana += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"heroin\",true))
{
if(pInfo[playerid][pHeroin] < osszeg) return msg(playerid,Red,\"Nincs ennyi heroin nálad!\");
pInfo[playerid][pHeroin] -= osszeg;
YakuzaHeroin += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"kokain\",true))
{
if(pInfo[playerid][pKokain] < osszeg) return msg(playerid,Red,\"Nincs ennyi kokain nálad!\");
pInfo[playerid][pKokain] -= osszeg;
YakuzaKokain += osszeg;
YakuzaSzefMent();
}
if(!strcmp(function2,\"gyémánt\",true))
{
if(pInfo[playerid][pGyemant] < osszeg) return msg(playerid,Red,\"Nincs ennyi gyémánt nálad!\");
pInfo[playerid][pGyemant] -= osszeg;
YakuzaGyemant += osszeg;
YakuzaSzefMent();
}
}
}else msg(playerid,Red,\"Nem vagy Yakuza tagja!\");
return 1;
}
ez mind szépen mûködik, de igazából ha be akarom építeni ezt /széf megnéz részt is, ez azért nem lesz jó mert ugyan úgy kéri a többi adatot(a mit és menyit)
Nekem ez a gondom, hogy nem tudom megcsinálni, hogy annál ne kérje a másik két funkciót...
Remélem így vizuálisan egy régebbi széf verziómmal érthetõ a kérdésem :)
-
if(!strlen(params) || strcmp(params,\"megnéz\",true) && sscanf(params,\"s[16]s[16]d\",function,function2,osszeg)) return msg(playerid,Red,\"/széf [megnéz] [ki/be]-[mit]-[mennyit]\");
//
if(!strcmp(params,\"megnéz\",true))
{
// megnézés kódja
}
else
{
// ki / berakás kódja
}
ez megfelel?
-
hm közel a megolás :) megfelelne ha nem bugolna a minranggal ><... mert csak példaként vetettem fel am egnézet, sok más parancs van még amihez ki kell kapcsolni a funkciókat, de a minrangnál pl csak az összeg kell, ami valaiért bugolt a megnézzel...
-
javítottam most nézd meg
-
Igen így már tökéletes 8)
Köszönöm ment a +