Jump to content
  • 0

pomoc Nemovitosti


Mathew

Dotaz

6 odpovědí na tuto otázku

Recommended Posts

  • 0

jednoduchy, vytvoris string ktery bude slouzit jako ukladani jmena hrace vlastnici nemovitost, nastavis ukladani a nacitani... tady mas priklad:

new Nemovitost[55];
format(Nemovitost,55,"nikdo");


//pokud koupi nemovitost:

if(!strcmp(Nemovitost,"nikdo",false)) //porovna string nemovitost se zakladem, pokud ji nikdo nevlastni....
{
    format(Nemovitost,55,"%s",Jmeno(playerid)); //nastavi ze ji vlastni kupujici hrac
}

stock Jmeno(playerid) 
{ 
    new j[55]; 
   if(IsPlayerConnected(playerid))
   {
       GetPlayerName(playerid,j,55); 
   }
   return j; 
}

//EDITED - opraven return

Link to comment
Share on other sites

  • 0

Myslis Dave ze to pochopi novacek ?

princip je upa stejnej jak zamestnani s tim rozdilem ze to je string, staci kdyz do ukladani pak prida upa stejny radek co ma na zamestnani akorat tam nebude %d ale %s ... snad jo

Link to comment
Share on other sites

  • 0

 

jednoduchy, vytvoris string ktery bude slouzit jako ukladani jmena hrace vlastnici nemovitost, nastavis ukladani a nacitani... tady mas priklad:

new Nemovitost[55];
format(Nemovitost,55,"nikdo");
format(Nemovitost,55,"%s",Jmeno(playerid)); //nastavi ze ji vlastni kupujici hrac

 

Jednoduché, ale zbytočné. Použil si array so 55 bunkami, ktorý zaberie v pamäti 220 bajtov. Prečo teda nepoužiť 24 buniek (MAX_PLAYER_NAME), ktoré budú zaberať 96 bajtov? Rozdiel je pomerne dosť veľký a pri predstave, že gamemód bude obsahovať kopu takýchto premenných, bude použité zbytočne veľa pamäte, keď netreba.

 

Potom:

 

stock Jmeno(playerid) 
{ 
    new j[55]; 
   if(IsPlayerConnected(playerid))
   {
       GetPlayerName(playerid,j,55); 
   }
   return 1; 
}

 

Zbytočná podmienka a zlý return, znova vytvorená premenná so zbytočnymi bunkami. Tieto funkcie dokáže vyvolať len konkrétny pripojený hráč (playerid).

 

Potom:

 

if(!strcmp(Nemovitost,"nikdo",false)) //porovna string nemovitost se zakladem, pokud ji nikdo nevlastni....
{
    format(Nemovitost,55,"%s",Jmeno(playerid)); //nastavi ze ji vlastni kupujici hrac
}

 

Znova zbytočné bunky a použil som nejakú inú a lepšiu metódu pre kopírovanie stringov.

if(!strcmp(Nemovitost,"nikdo")) //porovna string nemovitost se zakladem, pokud ji nikdo nevlastni....
{
    memcpy(Nemovitost, Jmeno(playerid), 0, MAX_PLAYER_NAME); //nastavi ze ji vlastni kupujici hrac
}
else SendClientMessage(playerid, -1, "Túto nemovitosť už niekto zakúpil!");

Alebo (pre nováčikov je však lepšia prvá možnosť): 

(!strcmp(Nemovitost, "nikto") ? memcpy(Nemovitost, Jmeno(playerid), 0, MAX_PLAYER_NAME) : SendClientMessage(playerid, -1, "Túto nemovitosť už niekto zakúpil!"));
Link to comment
Share on other sites

  • 0

 

Jednoduché, ale zbytočné. Použil si array so 55 bunkami, ktorý zaberie v pamäti 220 bajtov. Prečo teda nepoužiť 24 buniek (MAX_PLAYER_NAME), ktoré budú zaberať 96 bajtov? Rozdiel je pomerne dosť veľký a pri predstave, že gamemód bude obsahovať kopu takýchto premenných, bude použité zbytočne veľa pamäte, keď netreba.

napodobujes QWERa :d

 

proc davam 55 a ne 25? asi proto ze mam treba kamose na sampu a ten si daval nick na maximalni pocet pismen co to slo, kdyz to bylo mensi, neukazovalo to jeho celej nick a to me stvalo tak asi proto

toto asi tak pochopí :d a nic není zbytečný :d ulehčující podmínka IsPlayerConnected(playerid) neuškodí ;)  je více způsobů pawnění, já dávám přednost přehlednosti a snadné obtížnosti...

Alebo (pre nováčikov je však lepšia prvá možnosť): 

(!strcmp(Nemovitost, "nikto") ? memcpy(Nemovitost, Jmeno(playerid), 0, MAX_PLAYER_NAME) : SendClientMessage(playerid, -1, "Túto nemovitosť už niekto zakúpil!"));

 

silně pochybuju, že se nováček bude chápat memcpy když sotva umí format ;)

 

jo jinak s tim returnem mas pravdu preklep :) ma tam byt

return j;

dik

Link to comment
Share on other sites

  • 0

V pohode, len som napísal, ako by som to spravil ja. :)

 

BTW: Ten stock tam ani nemusí byť, jednoduché makro:

#define meno(%0, %1) GetPlayerName(%0, %1, MAX_PLAYER_NAME);

Použitie:

meno(playerid, dest[]);

 

playerid = ID hráča, ktorého chceš meno

dest[] = Kam chceš jeho meno uložiť

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...