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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: kriszrap - 2014. Február 18. - 16:49:23

Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 18. - 16:49:23
Sziasztok!!
Azt szeretném megkérdezni hogy a bejövõ és kimenõ üzeneteket egybe listázom  és csak 128 cella van szabad ezeknek.
Ha megtelik az 128 cella akkor jelezek felhasználónak hogy töröljön vagy van ennél sokkal jobb megoldás ban?
rem érthetõ
Elõre is köszönöm a segítséget.
ha rossz helyre írtam helyezzétek át köszi.
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: ZyZu. - 2014. Február 18. - 18:28:43
Tegnap írtam én is egy hasonló PM rendszert. Pontosabban én is úgy csináltam.. limitáltam a karakterláncot majd lekérdeztem a játékos hány karaktert írt, ha elérte mondjuk 128 -at akkor kiír egy üzenetet neki. Más módszert nem ismerek én sem.
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 18. - 19:32:53
hogyan ellenõrzöd a dolgokat??
vagy írnál egy példát hogy tudjak \"lopni\" :)
persze ha nem baj:)
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Pedró - 2014. Február 18. - 20:48:54
http://wiki.sa-mp.com/wiki/strlen
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 18. - 21:14:56
ijj sztem férre értetük egymást.
 

enum smsinf
{
smsid,
groupidvalaszt[50],
kuldo,
fogado,
latta,
utolso,
fogadodel,
kuldodel,
uzenet[50],
groupidsmsek[50],
}
new SMSinfo[128][smsinf]; // 128 sms (sor)
while (mysql_fetch_row(line))
      {
      i++;
      sscanf(line,\"p<|>dddddds[50]\",SMSinfo[smsid],SMSinfo[latta],SMSinfo[kuldodel],SMSinfo[fogadodel],SMSinfo[fogado],SMSinfo[kuldo],SMSinfo[uzenet]);
      if(SMSinfo[kuldo] == pInfo[playerid][telszam])

 
ha jól gondolom 128 smst(sor) tud megjeleníteni na ezt hogy tudom megoldani vagy csak figyelmesztetést kapjon hogy pl \"elérted a maximális sms darabszámot\"?? erre van más megoldás?
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 19. - 08:07:55
szerintem ne 128-nál jelezzen hogy töröljön mert akkor már nem tudnak neki SMS-t küldeni :D
mérlegelni kell, hogy mennyire fontos az SMS számolási mûvelet...tehát processzort vagy memóriát terhelj...én személy szerint a memóriát terhelem inkább, a sebesség fontosabb mint a RAM spórolás :D persze csak a sûrûn használt vagy nagyobb sebességet igénylõ kódoknál :)
hoppá...a processzor terhelés kód megírása közben vettem észre, hogy összesen 128 cellád van és nem játékosonként van ennyi...ez direkt van így? mi van ha valaki lusta törölni és mind a 128 sms 1 embernek szól? és mondjuk inaktív szóval még a törlési üzenetet sem látja...
én módosítanám játékosonként 128-ra :) a példa kódban úgy írom :)
Processzor terhelés:
- végig mész 1 ciklussal a 128 cellán és ahol az üzenet hossza nagyobb mint 0 növeled a számláló értékét...
 
new counter;
for(new i = 0; i < sizeof(sms); i++)
{
    if(strlen(SMSInfo[playerid][uzenet]) > 0) { counter++; }
}

 
Memória terhelés:
- eltárolod minden felhasználónak, hogy hány darab sms-e van...
 - amikor csatlakozik a szerverre és betöltöd az adatokat akkor betöltöd ezt is
 - amikor kilép a szerverrõl elmented ezt is (vagy ha nem mented akkor csatlakozásnál újra össze kell számolni)
 - amikor SMS-t kap növeled az értéket
 - amikor SMS-t töröl csökkented az értékét
 
new SMSCount[MAX_PLAYERS] = 0;

 
és ha akarsz készíthetsz 1 \"katasztrófa tervet\" is :D
arra gondolok ha valaki sms fiókja megtelt akkor is eltudod tárolni az SMS-t...persze simán ki is írhatod a küldõnek hogy a címzett megtelt...
de egy külön tárolás arra az esetre ha sok lenne az sms vagy fontos lenne a limiten felüli SMS megkapása...azt akkor részletezem ha szükséges :)
ja és elmagyaráznád melyik adat mire szükséges itt?
 
 smsid,
groupidvalaszt[50],
kuldo,
fogado,
latta,
utolso,
fogadodel,
kuldodel,
uzenet[50],
groupidsmsek[50],
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 19. - 17:56:47
Na teljesen átírtam !!:)
 

login:
enum smsinf
{
kuldo,
fogado,
kulodel,
fogadodel,
latta,
utolso,
groupid,
}
new SMSinfo[MAX_PLAYERS][500][smsinf];
new i=-1;
   format(query, sizeof(query), \"SELECT latta,kuldotel,fogadotel,utolso,groupid FROM `sms` WHERE kuldotel =\'%d\' or  fogadotel = \'%d\'\",pInfo[playerid][telszam],pInfo[playerid][telszam]);
   mysql_query(query);
   mysql_store_result();
   while (mysql_fetch_row(line))
   {
      i++;
      sscanf(line,\"p<|>dddds[50]\",SMSinfo[playerid][latta],SMSinfo[playerid][kuldo],SMSinfo[playerid][fogado],SMSinfo[playerid][utolso],SMSinfo[playerid][groupid]);
   }
beszélgetõk :
for (new i = 0; i < 500; i++)
   {
   if(SMSinfo[playerid][utolso] == 1)
   {
         if(SMSinfo[playerid][kuldo] == pInfo[playerid][telszam])
         {
         format(string, sizeof string,\"%s %d \\n\",string,SMSinfo[playerid][fogado]);
         }
         else if(SMSinfo[playerid][fogado] == pInfo[playerid][telszam])
         {
            if(SMSinfo[playerid][latta] == 1)
            {
            format(string, sizeof string,\"%s %d (új üzenet) \\n\",string,SMSinfo[playerid][kuldo]);
            }else{
            format(string, sizeof string,\"%s %d\\n\",string,SMSinfo[playerid][kuldo]);
            }
         }
      }
   }
rem a kódból rájösz hogy oldottam meg (itt csak a személyek telefonszáma jelenik meg 1 x szer)

 
sztem kevélesz 500 mert abba beletartozik az én üzenetem meg a másik felek.
SMSinfo[playerid][fogado]

SMSinfo[playerid]
[kuldo]

hoy tom átvinni egy másik dialogba amibe megjelenítem az üzeneteket azért mert ez a módszer most nem fog mûködni:


SMSinfo[playerid][listitem][fogado]


SMSinfo[playerid][listitem][kuldo]


elõre is köszi a segítséget:)
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 20. - 08:26:19
szerintem még azaz 500 is sok :) nem hiszem hogy annyira fontos sms-eket tárolnának a játékosok :)
amúgy csak én nem látom hogy hol tárolod az sms szövegét?
ez a darabolás biztos jó? groupid-be stringet akarsz belerakni amikor az 1 int
 
sscanf(line,\"p<|>dddds[50]\",SMSinfo[playerid][latta],SMSinfo[playerid][kuldo],SMSinfo[playerid][fogado],SMSinfo[playerid][utolso],SMSinfo[playerid][groupid]);

 
itt nem 500x futtatnám le a kódot hanem csak annyiszor ahány SMS van
 
for (new i = 0; i < 500; i++)

 
http://wiki.sa-mp.com/wiki/Limits
 
Info (Main text)    2048 [/quote]
a dialogod caption szövege szerintem túl hosszú lesz bizonyos sms szám után és nem fogja megjeleníteni a dialogot...
nekem van egy olyan parancs motorom amiben egyszerre használható 1 parancs \"/parancs [paraméter]\" és \"//parancs\" formában...a //-es megoldás dialogot hoz elõ, és így minden parancsnak van parancs és dialog verziója...
és például van egy parancs:
 
/valami [színid]
Színek: 12 = Piros, 23 = Kék, 67 = Zöld
[/quote]
ez a szöveg jelenik meg a parancs résznél de dialognál a 3 szín (Piros,Kék,Zöld) egymás alatt jelenik meg mint kiválasztható opció...
de az értékük 12 23 67 kell legyen ugyanúgy mert azt kezeli a parancs motor...
erre csináltam egy \"fordító táblázatot\" ami annyit csinál, hogy a megadott lista indexek mit is jelentenek de persze ehhez teljesen saját motort építettem fel tehát teljesen kompatibilis...
0. elem = 12
1. elem = 23
2. elem = 67
tehát neked valami azonosítót kell hozzárendelned a listaelemekhez...azért kell azonosító mert ha van egy \"lyuk\" tehát valaki törölt egy SMS-t akkor ott nem hagyhatsz üres sort...
 
new SMSinfo[MAX_PLAYERS][500][smsinf];

 
itt az 500 cella indexe megfelelõ lenne neked azonosításra...
 
new DialogSMSID[MAX_PLAYERS][500];

 
amikor a dialog stringet rakod össze akkor megadod hogy az a sor melyik sms-hez tartozik...tehát azt is számon kell tartanod hogy hanyadik sort írod a stringbe...
 
DialogSMSID[playerid][sor] = smssorszam;

 
OnDialogResponse alatt már tudod melyik SMS-re nyomott rá (SMS azonosító):
 
DialogSMSID[playerid][listitem]

 
remélem nagyjából érthetõ volt :)
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 20. - 12:07:45
\"itt nem 500x futtatnám le a kódot hanem csak annyiszor ahány SMS van
for (new i = 0; i < 500; i++)\"
vagy úgy is jó ha elfogynak az értékek breakelem??
\"amúgy csak én nem látom hogy hol tárolod az sms szövegét?\"
jól látod mert amikor küldtem neked a kódot akkor még nem kérdeztem le:)
elõbb ez a fogadós küldõs dolgot oldottam meg.
ezt az érték átadást hogy melyik sor megoldottam:)
ezt a vész esetet hogy is tudnám megoldani??
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 20. - 12:29:25
nem mivel az 1. töröltig listázná ki
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 20. - 12:33:25
(mentek a pluszok)
hmmm
szerintem meg nem :((
de lehet igazad van
üzenet megjelenítés:
 
if(listitem != -1)
        {
           for (new i = 0; i < MAX_SMS; i++)
      {
             if(SMSinfo[playerid][listitem][valasztot_telefonszam] == SMSinfo[playerid][groupid])
             {
             if(SMSinfo[playerid][kuldo] == pInfo[playerid][telszam])
            {
                if(SMSinfo[playerid][kuldodel] == 1)
                {
                  if(SMSinfo[playerid][latta] == 1)
                  {
                  format(string, sizeof string,\"%s(Nem látta még) én: %s\\n\",string,SMSinfo[playerid][uzenet]);
                  }else{
                  format(string, sizeof string,\"%s én: %s\\n\",string,SMSinfo[playerid][uzenet]);
                  }
               }
            }else if(SMSinfo[playerid][fogado] == pInfo[playerid][telszam])
            {
               if(SMSinfo[playerid][fogadodel] == 1)
                {
                   if(SMSinfo[playerid][latta] == 1)
                   {
                     format(string, sizeof string,\"%s (új)õ: %s \\n\",string,SMSinfo[playerid][uzenet]);
                     format(query, sizeof(query), \"UPDATE `sms` SET latta=\'0\' WHERE id=\'%d\'\",SMSinfo[playerid][smsid]);
                     mysql_query(query);
                  }else{
                      format(string, sizeof string,\"%s õ: %s\\n\",string,SMSinfo[playerid][uzenet]);
                  }
               }
            }
            if(SMSinfo[playerid][kuldo] == 0 || SMSinfo[playerid][fogado] == 0)
            {
            break;
            }
         }
      }
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 20. - 12:42:09
küldõ fogadó
1234 4312
2345 5432
0       0
6789 9786
8901 1098
szerintem itt a 0 0 után nem fog már futni...vagy te hogyan \"törlöd\"?
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 20. - 12:56:14
van egy kitoldel és fogadodel
kitoldel = SMSinfo[playerid][kuldodel]

fogadodel = SMSinfo[playerid]
[fogadodel]

ha kitoldel == 0 // törölve 1 az érték akkor nem


vagy is ha én törölöm mondjuk annál az üzenetnél én voltam aki küldte akkor kuldodel == 0 értéket kap


és nekem nem fogja megjeleníteni.(nincs az a sor nekem)


loginnál is így csináltam így kérdezem le.


azért jó mert ha én törölöm akkor a másik fél attól még látja de én már nem.
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 20. - 13:28:58
de játékosonként tárolod az üzeneteket miért van 2 del változód?
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 20. - 16:19:51
Azért mert mikor lognol megtöltöm mindkettö változot. Mert van olyan üzenet ahol én vagyok a fogado és ahoz tartozik egy fogadodel
képzeld el egy fb chatet ugyan ezt csinálják vagy androidos telók üze et rendszere.
Ha tetörlöd az üzeneted attol a másiknak ugyan ugy meg marad.
rá megy a játékos hogy smsek ----> kiválasztom a csoportot vagy is a telefonszámot pl 306133088
és amit beszélgettem vele azt mind kilistázom (enyémmel együtt)
igy nézki:
ö:Csáá (itt fogado vagyok) fogadodel == 1 ha ez nulla lenne aki ezt külte nem látja de én attól még igen
én:Mizu nigga? (itt küldö)  kuldodel == 1 ha ez nulla lenne nem látnám
..... stb
Rem érthetõ
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 21. - 07:38:28
new SMSinfo[MAX_PLAYERS][500][smsinf];

 
akkor viszont ez nem jó mivel nem kell a MAX_PLAYERS...én máshogy gondoltam amit leírtam :) igaz redundáns adatok lesznek, de egyszerûbb kezelni...kezelheted egy helyen az összes sms-t csak akkor csinálj mellé egy countert a játékosoknak, hogy mennyi SMS-e van, hogy ne kelljen összeszámolni...ahogy írtam növeled amikor jön sms és csökkented amikor töröl...
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 21. - 12:15:41
new SMSinfo[MAX_PLAYERS][500][smsinf];
igy :new SMSinfo[500][smsinf];
de sztem 500 sms mindenkire pl 50 slotos a szeró hát borzasztóan kevés:((
100 000 azért nem írhatok be sztem.
vagy mégis?
mindenki 500 smst tud akkor
50 * 500 = 25 000 cella ha persze minden igaz.
vagy lesz valami \"kárososdás\" pl  megtellik a ramom hosszú távra nem olyan jó?
meg van minden inditáskor az összes üzenetet behívom :)))
és mikor megjön a játékos kikeresgetem azokat az üzeneteket amihez úgy mond köze van:))
persze akkor valósítom meg ha nyerekvele valami gyorsaságot.
Vagy rossz terv?
és így nem adatbázist terhleme
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 21. - 13:17:52
hát én személy szerint a ramot zabálom inkább :)
neked mennyi ramod van?
nekem 16 giga van a laptopomban (+2 szabad slot) szóval én nem félek a RAM elfogyástól :) + ha nagyon kell akkor visszakapcsolom a lapozófájlt is, csak még a RAM negyedét se tudtam kihasználni szóval kikapcsoltam :D + ne b*ssza az SSD-t...szóval RAM + lapozó fájl + nem hiszem hogy olyan sok RAM-ot akarnál zabáltatni a szerverrel, elégnek kell legyen :) de majd hazamegyek és csinálok pár tesztet és megmutatom az eredményeket :)
de én pl simán használok olyat hogy 1000x500 cella 1 kódban de majd írok konkrét példákat...
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 21. - 13:42:13
hmmmm :))) 1,5 giga ramom van sajnos de nem ezen futtatnám a szerót ha nem bátyámén ott 4gb van 
maradtam a playerid esnél azért mert egyszerübb a lekérdezés és kilépéskor könnyebb nullázni:))
az miért van hogy 25 000 cellánál pawno kifagy picit azt vissza tér?
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 21. - 18:46:06
bemásolom pl a GF alapú régi módban mennyi adat tartozott 1 játékoshoz (azaz ennél több ez csak a PlayerInfo volt), de mivel nem publikus ezért a neveket kicseréltem :)
GFRP + a tanulási folyamatom által tárolt adatok...
 
enum pInfo
{
var[128],
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
//comment
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
//comment
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
//comment
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
//comment
//comment
var,
var[128],
var[128],
var[128],
var[128],
var[128],
var,
var[128],
var[128],
var[128],
var[128],
var[128],
var,
var[128],
var[128],
var[128],
var[128],
var[128],
var,
var[128],
var[128],
var[128],
var[128],
var[128],
var,
var[128],
var[128],
var[128],
var[128],
var[128],
//comment
//commment
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
var,
var,
var,
var[128],
var[128],
//comment
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
Float:var,
Float:var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
Float:var,
Float:var,
Float:var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var,
var[MAX_PLAYER_NAME],
//comment
Text:var,
bool:var,
bool:var,
var,
Text3D:var,
Text:var,
bool:var,
Text:var
};
new PlayerInfo[MAX_PLAYERS][pInfo];

 
244 db int
46 db 128 cellás tömb
1 db 24 (MAX_PLAYER_NAME) cellás tömb
5 db float
3 db bool
3 db text
1 db 3DText
6226 cella (24904 byte = 24.3 kbyte)
én inkább a ram-ot eszem mint a procit :) persze azt is elõnyben részesitem (tudom hogy hosszú i, csak ezen a szutyok gépen nincs :D nesze I7, 16 giga ram, 2 gigás vidkártya csak éppen irni nem lehet vele :D ) a fejlesztéseknél, hogy dinamikusan tudjak a szerverrõl kezelni kb mindent ami szükséges lehet...tehát ahol szükséges ott dinamikusan használom az adatokat, de van hely ahol meg pont RAM-ot spórolok :D bit szinten kezelek adatokat :) de okosan kell megcsinálni, amirõl tudod hogy sûrûn lesz használva ott inkább a ramot zabáld amirõl tudod hogy tárol mondjuk 500 adatot de csak induláskor meg havonta 1-2x használod ott nem muszáj mindent tárolni...itt arra gondolok pl én tárolom a felesleges terhelés elkerülése végett az 1. és az utolsó ID-t sok helyen...mondjuk van 500 SMS slot amit betöltésnél töltesz be, ott nem fontos az 1.-t tárolni mivel valószinûleg 0 vagy ahhoz közeli értéknél indul az ellenõrzés, de az utolsót már fontos, mert nem mindegy hogy 0-tól 500-ig fut le az ellenõrzés vagy 0-tól 30-ig ha 30 sms van...de az sms rendszer pont hogy sûrûn használt funkció tehát ott még csinálnék a helyedben egy tömböt amiben eltárolom a játékosoknak az SMS-eit...tehát ha van mondjuk 300 sms a szerveren, abból a játékosnak szól 2 akkor azt a 2-t nem úgy kérdezed le hogy végig mész a 300-on és megnézed melyik szól neki, hanem eltárolod azt a 2 sms azonositót hogy melyik 2 SMS az övé...nem akarlak megkavarni csak gondoltam elmondom nagy vonalakban, hogyan csinálom én, persze nem kötelezõ neked is igy csinálni, csak tudd, hogy van ilyen lehetõség is :) nem mindig a ramot kell zabálni...mérlegelni kell, hogy hol mi a fontos és hogyan lehet a legjobb eredményt elérni, persze mindennek van elõnye és hátránya...processzor vs memória :) gyorsaságot vagy kevesebb memória terhelést akarsz...persze itt a gyorsaság nem mindig szembetûnõ de sok kicsi sokra megy :P sok helyen nyersz egy kis sebességet akkor láthatóan gyorsabb lesz a kód, viszont láthatóan több memóriát ehet :D szóval csak óvatosan :)
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 21. - 20:36:17
\" egy tömböt amiben eltárolom a játékosoknak az SMS-eit...tehát ha van mondjuk 300 sms a szerveren, abból a játékosnak szól 2 akkor azt a 2-t nem úgy kérdezed le hogy végig mész a 300-on és megnézed melyik szól neki, hanem eltárolod azt a 2 sms azonositót hogy melyik 2 SMS az övé\"
erre írnál egy kódódt mert nem annyira értem :)
nagyon köszi a tippeket :)
kezdõ kérdés mi számit ram terhelés nem meg proci igazából?:)))
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 22. - 11:05:43
kezdõ kérdés mi számit ram terhelés nem meg proci igazából?:)))[/quote]
hát pont az amit beidéztél, hogy ha van 500 SMS slot és abból 300 van használva akkor eltárolod, hogy az utolsó slot ami használva van az a 299-es (mivel 0-tól indexel), és ugye ezt a RAM-ban el kell tárolnod...
összes sms bejárása:
 
for(new i; i < sizeof(SMSInfo); i++)

 
utolsó sms-ig bejárás:
 
for(new i; i <= LastSMSVar; i++)

 
a LastSMSVar az a változó amiben tárolod az utolsó SMS ID-t...amikor küld valaki 1 SMS-t hozzáadod ugye a tömbhöz, na ott növeled 1-el...
SMS Küldésnél:
 
if(LastSMSVar == MAX_SMS-1) { SendClientMessage(playerid,0xFF0000FF,\"Szerver: Megtelt az sms lista, nem lehet SMS-t küldeni!\"); return 1; }
LastSMSVar++;
SMSInfo[LastSMSVar][kuldo] = playerid;
...

 
SMS törlésnél meg ellenõrzöd, ha az utolsó SMS-t törölte mind2 játékos akkor
 
LastSMSVar--;

 
van még pár trükk amivel lehet gyorsitani a kódon, de nem akarlak megkeverni mivel mérlegelni kell és több szempont alapján kell eldönteni hol mit hogyan alkalmazhatsz...
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 22. - 14:41:16
nagyon klafa teszik:))
aha hogy csinálom hogy játékosonként 500 sms küldésem /fogadásaim
SMSinfo[max_players][500]; kérésem te melyikel csinálnád?
ott csak annyi hogy mysql_num_rows() persze ha igazam van?
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: Kovacs_Richard - 2014. Február 23. - 12:11:05
hát ha játékosonként tárolod el az üzenetet akkor több RAM-ot fogyaszt mivel 2x van tárolva az üzenet...
igazából én mit csinálnék?
az én helyemben: én már nem \"játékos\" szinten gondolkodok az ilyen dolgokban, de nem részletezném a lényeg hogy én teljesen máshogy oldom meg az ilyeneket :D
a te helyedben: az SMS szövegek 1 tömbben lennének és a játékosoknak tárolnám el külön tömbben, hogy melyik SMS szól nekik, így az SMS szövegek limitjét felvenném mondjuk 1000*64 karakterre tehát 1000 db 64 karakteres SMS-t tudsz tárolni, de talán a 32 is elég ez késõbb derül ki amikor élesben használják a játékosok...kezdetben fejenként 20 SMS-t engednék tárolni, de ha van konkrét limit elképzelésed akkor már azt is alkalmazhatod, ismerni kell a felhasználó igényeket...azért csak 20-at, mert ha eddig nem voltak hozzászokva, hogy van SMS tárolás akkor valószínûleg nem is fogják törölni és csak feleslegesen áll a memóriában + foglalja a slotot...és késõbb a felhasználó igények szerint módosítanám :)
Cím: kimenõ/bejövõ smsek (ötletadás)
Írta: kriszrap - 2014. Február 23. - 13:13:28
köszi így már menni fog:)) mentek a pluszok:)