Jump to content

Inventár


LYRIcS

Recommended Posts

Cawte, spravil som tut na inventar, snad sa to niekomu hodi ;-), v inventari su len pre ukazku 4 predmety, ak chcete dorobte si dalsie.

#include  // zakladny includ
#include  // ak nemate includ tak si ho stiahnite, sluzi na ukladanie dat

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 // definicia dcmd

new Rozky[MAX_PLAYERS]; // new pre Rozky
new Bagety[MAX_PLAYERS]; // new pre Bagety
new Vino[MAX_PLAYERS]; // new pre Vina
new Pivo[MAX_PLAYERS]; // new pre Piva
new Obchod; // pickup na obchod

#define C_ORANGE 0xFF7700FF // definicia farby
#define C_RED 0xFF0000FF // definicia farby

#define SCM SendClientMessage // ulahcime si pisanie :-)
#define GPM GivePlayerMoney // ulahcime si pisanie :-)

#pragma tabsize 0 // taka sprostost aby vam nepisalo zbytocne warningy, ak to uz vo FS/GM mate tak to zmazte

public OnFilterScriptInit()
{
  Obchod = CreatePickup(1239,23,X,Y,Z,0); // miesto X Y Z si doplnte vase suradnice kam chcete dat pickup
return 1;
}

public OnPlayerConnect(playerid) // pri pripojeni to automaticky nastavi hracove Rozky, Bagety...
{
  new Meno[30];
  GetPlayerName(playerid,Meno,30); // zisti hracove meno
  new road[40]; // 40 je maximalny pocet pismen ktore moze naformatovany text obsahovat
  format(road,40,"Inventar/%s.cfg",Meno); // naformatujeme si cestu k suboru (subor sa bude volat ako hrac)
  if(!dini_Exists(road)) { // ak subor s hracovym menom neexistuje...
     dini_Create(road); // vytvori subor
     dini_IntSet(road,"Rozky",0); // do suboru napise ze hrac ma 0 rozkov, ale pri disconnecte tam uz neda nulu, ale pocet hracovych rozkov (teda "Rozky[playerid", uz ne "0");
     dini_IntSet(road,"Bagety",0); // to iste
     dini_IntSet(road,"Vino",0); // to iste
     dini_IntSet(road,"Pivo",0); // to iste
  }
  if(dini_Exists(road)) { // ak subor s hracovym menom existuje...
     Rozky[playerid]=dini_Int(road,"Rozky"); // nastavi to hracovi taky pocet rozkov aky je zapisany v subore
     Bagety[playerid]=dini_Int(road,"Bagety"); // to iste
     Vino[playerid]=dini_Int(road,"Vino"); // to iste
     Pivo[playerid]=dini_Int(road,"Pivo"); // to iste
  }
return 1;
}

public OnPlayerDisconnect(playerid, reason) // pri odpojeni to automaticky ulozi hracove Rozky, Bagety...
{
  new Meno[30];
  GetPlayerName(playerid,Meno,30);
  new road[40];
  format(road,40,"Inventar/%s.cfg",Meno);
  if(!dini_Exists(road)) {
     dini_Create(road);
     dini_IntSet(road,"Rozky",Rozky[playerid]); // vlozi do suboru pocet hracovych rozkov
     dini_IntSet(road,"Bagety",Bagety[playerid]); // to iste
     dini_IntSet(road,"Vino",Vino[playerid]); // to iste
     dini_IntSet(road,"Pivo",Pivo[playerid]); // to iste
  }
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
  dcmd(inventar,8, cmdtext); // prikaz "/inventar"
return 1;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
  if(pickupid == Obchod) { // ked vojde hrac do pickupu "Obchod" tak...
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Obchod","Rožok (10$)\nBageta (40$)\nVino (250$)\nPivo (50$)","Kúpiť","Cancel"); // ukaze hracovi dialog
  }
return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) // dialog s dislom 1
  {
  if(response == 1) // 1. Tlacitko ("Kúpiť")
  {
//--------------------------
     if(listitem == 0) // prvy riadok
     {
        if(GetPlayerMoney(playerid)<10) return SCM(playerid,C_RED,"[  !  ] Potrebuješ aspoň 10$ !"); // ak ma hrac menej penazi ako 10$ (9$, 8$, 7$...) posle spravu
        else { // ak nieje splnena prva podmienka tak...
           SCM(playerid,C_ORANGE,"Kúpil si si Rožok !"); // posle spravu
           Rozky[playerid]++; // prida hracovi 1 rozok
           GPM(playerid,-10); // uberie mu to 10$
        }
     }
//--------------------------
     if(listitem == 1) // druhy riadok...
     {
        if(GetPlayerMoney(playerid)<40) return SCM(playerid,C_RED,"[  !  ] Potrebuješ aspoň 40$ !");
        else {
           SCM(playerid,C_ORANGE,"Kúpil si si Bagetu !");
           Bagety[playerid]++;
           GPM(playerid,-40);
        }
     }
//--------------------------
     if(listitem == 2)
     {
        if(GetPlayerMoney(playerid)<250) return SCM(playerid,C_RED,"[  !  ] Potrebuješ aspoň 250$ !");
        else {
           SCM(playerid,C_ORANGE,"Kúpil si si Víno !");
           Vino[playerid]++;
           GPM(playerid,-250);
        }
     }
//--------------------------
     if(listitem == 3)
     {
        if(GetPlayerMoney(playerid)<50) return SCM(playerid,C_RED,"[  !  ] Potrebuješ aspoň 50$ !");
        else {
           SCM(playerid,C_ORANGE,"Kúpil si si Pivo !");
           Pivo[playerid]++;
           GPM(playerid,-50);
        }
     }
//--------------------------
  }
  }

if(dialogid == 2) // dialog s dislom 1
  {
  if(response == 1) // 1. Tlacitko ("Použiť")
  {
//--------------------------
     if(listitem == 0) // prvy riadok...
     {
        if(Rozky[playerid]<=0) return SCM(playerid,C_RED,"[  !  ] Nemáš žiadne Rožky !"); // ak nema hrac ziadne rozky tak mu to zasle spravu
        if(Rozky[playerid]>=1) // ak ma hrac 1 alebo viac rozkov (1,2,3,4...)
        {
           Rozky[playerid]--; // uberie to hracovi 1 rozok
           SCM(playerid,C_ORANGE,"Zjedol si Rožok !"); // posle spravu
           new Float:health; // novy Float
           GetPlayerHealth(playerid,health); // zisti hracov zivot
           SetPlayerHealth(playerid,health+15); // prida hracovi 15 zivota
           if(health > 100) return SetPlayerHealth(playerid,100); // ak by mal hrac viac zivota ako 100 tak mu to nastavi zivot na 100 (neviem ci je to blbost ale nektore jednoduche anticheaty maju ze ak ma hrac viac zivota ako 100 tak ho to vyhodi, tak aby si to hraca nepomylilo z cheaterom)
        }
     }
//--------------------------
     if(listitem == 1)
     {
        if(Bagety[playerid]<=0) return SCM(playerid,C_RED,"[  !  ] Nemáš žiadne Bagety !");
        if(Bagety[playerid]>=1)
        {
           Bagety[playerid]--;
           SCM(playerid,C_ORANGE,"Zjedol si Bagetu !");
           new Float:health;
           GetPlayerHealth(playerid,health);
           SetPlayerHealth(playerid,health+35);
           if(health > 100) return SetPlayerHealth(playerid,100);
        }
     }
//--------------------------
     if(listitem == 2)
     {
        if(Vino[playerid]<=0) return SCM(playerid,C_RED,"[  !  ] Nemáš žiadne Víno !");
        if(Vino[playerid]>=1)
        {
           Vino[playerid]--;
           SCM(playerid,C_ORANGE,"Vypil si Víno !");
           new Float:health;
           GetPlayerHealth(playerid,health);
           SetPlayerHealth(playerid,health+20);
           if(health > 100) return SetPlayerHealth(playerid,100);
           SetPlayerDrunkLevel(playerid,GetPlayerDrunkLevel(playerid)+1000); // prida hracovi DrunkLevel 1000 (bude opity)
        }
     }
//--------------------------
     if(listitem == 3)
     {
        if(Pivo[playerid]<=0) return SCM(playerid,C_RED,"[  !  ] Nemáš žiadne Pivo !");
        if(Pivo[playerid]>=1)
        {
           Pivo[playerid]--;
           SCM(playerid,C_ORANGE,"Vypil si Pivo !");
           new Float:health;
           GetPlayerHealth(playerid,health);
           SetPlayerHealth(playerid,health+10);
           if(health > 100) return SetPlayerHealth(playerid,100);
           SetPlayerDrunkLevel(playerid,GetPlayerDrunkLevel(playerid)+500); // prida hracovi DrunkLevel 500 (bude opity)
        }
     }
//--------------------------
  }
  }
return 1;
}

dcmd_inventar(playerid, params[]) // co sa stane ked hrac napise prikaz "/inventar"
{
  #pragma unused params // nebudeme pouzivat ziadne parametre
  new inventar[256]; // 256 je maximalny pocet pismen ktore moze naformatovany text obsahovat
  format(inventar,256,"Rožky: %d ks\nBagety: %d ks\nVína: %d ks\nPivá: %d",
Rozky[playerid], Bagety[playerid], Vino[playerid], Pivo[playerid]); // naformatuje text, miesto "%d" sa doplni kolko ma hrac rozkov, bagiet...
  ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"Inventár",inventar,"Použiť","Cancel"); // ukaze hracovi dialog ("inventar" je ten naformatovany text)
return 1;
}

 

Je potrebné vytvoriť si zložku Inventar v scriptfiles !!!

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 2 weeks later...

Proč když jsem si do ukladani a disconetu přidal novou proměnou s novou věcí tak mi ji to nezapíše ani nenačte a neuloží, v příkazu /inventař to sice mám ale neuklada se mi počet kusu a ve scriptfiles v inventáři taky tu další proměnou nemám

Link to comment
Share on other sites

Proč když jsem si do ukladani a disconetu přidal novou proměnou s novou věcí tak mi ji to nezapíše ani nenačte a neuloží, v příkazu /inventař to sice mám ale neuklada se mi počet kusu a ve scriptfiles v inventáři taky tu další proměnou nemám

mas doplene v disconnecte a connecte dini_Int(...) a v disconnecte dini_IntSet(...)? ak hej tak skus vymazat ten subor s tvojim menom v scriptfiles a malo by to ist, ak stale nepojde posli pwn, opravim

Link to comment
Share on other sites

Ok díky už se mi tam ta další proměná zapsala,ale nějak se mi nekladají všecky položky jako bagety atd koupim si to v inventari to je ale když se odhlasim tak se mi to neuloží to co mám neví někdo čím to je ?

Link to comment
Share on other sites

jj mám v disconete mám to to :

 

new Meno[30];
      GetPlayerName(playerid,Meno,30);
      new road[40];
      format(road,40,"Inventar/%s.cfg",Meno);
     if(!dini_Exists(road)) {
     dini_Create(road);
     dini_IntSet(road,"Ciga",Ciga[playerid]); // vlozi do suboru pocet hracovych rozkov
     dini_IntSet(road,"Bagety",Bagety[playerid]); // to iste
     dini_IntSet(road,"Vino",Vino[playerid]); // to iste
     dini_IntSet(road,"Pivo",Pivo[playerid]); // to iste
     dini_IntSet(road,"Trava",ganja[playerid]);

 

A v Connect:

 

new Meno[30];
  GetPlayerName(playerid,Meno,30); // zisti hracove meno
  new road[40]; // 40 je maximalny pocet pismen ktore moze naformatovany text obsahovat
  format(road,40,"Inventar/%s.cfg",Meno); // naformatujeme si cestu k suboru (subor sa bude volat ako hrac)
  if(!dini_Exists(road)) { // ak subor s hracovym menom neexistuje...
     dini_Create(road); // vytvori subor
     dini_IntSet(road,"Ciga",0); // do suboru napise ze hrac ma 0 rozkov, ale pri disconnecte tam uz neda nulu, ale pocet hracovych rozkov (teda "Rozky[playerid", uz ne "0");
     dini_IntSet(road,"Bagety",0); 
     dini_IntSet(road,"Vino",0); 
     dini_IntSet(road,"Pivo",0); 
     dini_IntSet(road,"Trava",0);
  }
  if(dini_Exists(road)) { 
     Ciga[playerid]=dini_Int(road,"Ciga"); 
     Bagety[playerid]=dini_Int(road,"Bagety"); 
     Vino[playerid]=dini_Int(road,"Vino"); 
     Pivo[playerid]=dini_Int(road,"Pivo"); 
     ganja[playerid]=dini_Int(road,"Trava");

  }

 

ale počty kusů se mi neukladají

Link to comment
Share on other sites

jj mám v disconete mám to to :

 

new Meno[30];
      GetPlayerName(playerid,Meno,30);
      new road[40];
      format(road,40,"Inventar/%s.cfg",Meno);
     if(!dini_Exists(road)) {
     dini_Create(road);
     dini_IntSet(road,"Ciga",Ciga[playerid]); // vlozi do suboru pocet hracovych rozkov
     dini_IntSet(road,"Bagety",Bagety[playerid]); // to iste
     dini_IntSet(road,"Vino",Vino[playerid]); // to iste
     dini_IntSet(road,"Pivo",Pivo[playerid]); // to iste
     dini_IntSet(road,"Trava",ganja[playerid]);

 

A v Connect:

 

new Meno[30];
  GetPlayerName(playerid,Meno,30); // zisti hracove meno
  new road[40]; // 40 je maximalny pocet pismen ktore moze naformatovany text obsahovat
  format(road,40,"Inventar/%s.cfg",Meno); // naformatujeme si cestu k suboru (subor sa bude volat ako hrac)
  if(!dini_Exists(road)) { // ak subor s hracovym menom neexistuje...
     dini_Create(road); // vytvori subor
     dini_IntSet(road,"Ciga",0); // do suboru napise ze hrac ma 0 rozkov, ale pri disconnecte tam uz neda nulu, ale pocet hracovych rozkov (teda "Rozky[playerid", uz ne "0");
     dini_IntSet(road,"Bagety",0); 
     dini_IntSet(road,"Vino",0); 
     dini_IntSet(road,"Pivo",0); 
     dini_IntSet(road,"Trava",0);
  }
  if(dini_Exists(road)) { 
     Ciga[playerid]=dini_Int(road,"Ciga"); 
     Bagety[playerid]=dini_Int(road,"Bagety"); 
     Vino[playerid]=dini_Int(road,"Vino"); 
     Pivo[playerid]=dini_Int(road,"Pivo"); 
     ganja[playerid]=dini_Int(road,"Trava");

  }

 

ale počty kusů se mi neukladají

skus vymazat ten subor s tvojim menom v scriptfiles, a potom by to vsetko malo ist, ak ne daj cele pwn

Link to comment
Share on other sites

  • 1 month later...

vypisuje chyby :

.pwn(85) : error 017: undefined symbol "Rozky"
.pwn(85) : warning 215: expression has no effect
.pwn(85) : error 001: expected token: ";", but found "]"
.pwn(85) : error 029: invalid expression, assumed zero
.pwn(85) : fatal error 107: too many error messages on one line

riadok :

Rozky[playerid] = dini_Int(road,"Rozky");

 

a mam aj new

new Rozky[MAX_PLAYERS];

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...