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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: kos - 2014. március 05. - 15:52:00

Cím: /széf probléma
Írta: kos - 2014. március 05. - 15:52:00
Ü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  ::|
Cím: /széf probléma
Írta: halaloszto100 - 2014. március 05. - 18:11:09
Ú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??
Cím: /széf probléma
Írta: kos - 2014. március 05. - 18:19:22
/széf megnéz és úgy jöjjön ki.
Cím: /széf probléma
Írta: Andris2120 - 2014. március 15. - 17:10:24
: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)
Cím: /széf probléma
Írta: kos - 2014. március 17. - 00:48:34
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 :)
Cím: /széf probléma
Írta: Kovacs_Richard - 2014. március 17. - 07:47:21
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?
Cím: /széf probléma
Írta: kos - 2014. március 17. - 23:03:22
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...
Cím: /széf probléma
Írta: Kovacs_Richard - 2014. március 18. - 07:59:14
javítottam most nézd meg
Cím: /széf probléma
Írta: kos - 2014. március 19. - 16:23:30
Igen így már tökéletes  8)
Köszönöm ment a +
Cím: /széf probléma
Írta: kos - 2014. március 17. - 00:48:34
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 :)
Cím: /széf probléma
Írta: Kovacs_Richard - 2014. március 17. - 07:47:21
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?
Cím: /széf probléma
Írta: kos - 2014. március 17. - 23:03:22
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...
Cím: /széf probléma
Írta: Kovacs_Richard - 2014. március 18. - 07:59:14
javítottam most nézd meg
Cím: /széf probléma
Írta: kos - 2014. március 19. - 16:23:30
Igen így már tökéletes  8)
Köszönöm ment a +