Szerző Téma: kimenõ/bejövõ smsek (ötletadás)  (Megtekintve 2050 alkalommal)

kimenõ/bejövõ smsek (ötletadás)
« Dátum: 2014. február 18. - 16:49:23 »
0 Show voters
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.
« Utoljára szerkesztve: 2014. február 23. - 13:13:52 írta kriszrap »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
kimenõ/bejövõ smsek (ötletadás)
« Válasz #1 Dátum: 2014. február 18. - 18:28:43 »
0 Show voters
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.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #2 Dátum: 2014. február 18. - 19:32:53 »
0 Show voters
hogyan ellenõrzöd a dolgokat??
vagy írnál egy példát hogy tudjak \"lopni\" :)
persze ha nem baj:)

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
kimenõ/bejövõ smsek (ötletadás)
« Válasz #3 Dátum: 2014. február 18. - 20:48:54 »
0 Show voters

kimenõ/bejövõ smsek (ötletadás)
« Válasz #4 Dátum: 2014. február 18. - 21:14:56 »
0 Show voters
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?

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kimenõ/bejövõ smsek (ötletadás)
« Válasz #5 Dátum: 2014. február 19. - 08:07:55 »
+1 Show voters
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],
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #6 Dátum: 2014. február 19. - 17:56:47 »
0 Show voters
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:)
« Utoljára szerkesztve: 2014. február 19. - 21:01:24 írta kriszrap »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kimenõ/bejövõ smsek (ötletadás)
« Válasz #7 Dátum: 2014. február 20. - 08:26:19 »
+1 Show voters
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 :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #8 Dátum: 2014. február 20. - 12:07:45 »
0 Show voters
\"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??
« Utoljára szerkesztve: 2014. február 20. - 12:31:30 írta kriszrap »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kimenõ/bejövõ smsek (ötletadás)
« Válasz #9 Dátum: 2014. február 20. - 12:29:25 »
0 Show voters
nem mivel az 1. töröltig listázná ki
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #10 Dátum: 2014. február 20. - 12:33:25 »
0 Show voters
(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;
            }
         }
      }
« Utoljára szerkesztve: 2014. február 20. - 12:35:40 írta kriszrap »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kimenõ/bejövõ smsek (ötletadás)
« Válasz #11 Dátum: 2014. február 20. - 12:42:09 »
0 Show voters
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\"?
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #12 Dátum: 2014. február 20. - 12:56:14 »
0 Show voters
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.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kimenõ/bejövõ smsek (ötletadás)
« Válasz #13 Dátum: 2014. február 20. - 13:28:58 »
0 Show voters
de játékosonként tárolod az üzeneteket miért van 2 del változód?
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

kimenõ/bejövõ smsek (ötletadás)
« Válasz #14 Dátum: 2014. február 20. - 16:19:51 »
0 Show voters
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õ
« Utoljára szerkesztve: 2014. február 20. - 17:45:41 írta kriszrap »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal