hlmod.hu
https://hlmod.hu/

Írj! - Chat
https://hlmod.hu/viewtopic.php?f=13&t=3
Oldal: 3204 / 3928

Szerző:  Metal [ 2016.03.21. 10:57 ]
Hozzászólás témája:  Re: Írj! - Chat

EZ beteg :D Elfogadnám

mforce írta:

Szerző:  Metal [ 2016.03.21. 11:04 ]
Hozzászólás témája:  Re: Írj! - Chat

Lehet hogy én emlékszem rosszul, mivel régen C++oztam, de a ++ és -- operátor effektíve nem az értékét növeli az aktuális memóriacím beli elemnek, hanem magát a címet lépteti. Ez tömböknél lehet jól megfigyelni, valami ilyesmi dereng

int alma[32];
int *pElem = &alma[0];
pElem++ // alma[1]-re mutat már

Tetszenek ezek a cuccok, amiket tevezel, érdekes dolgok, de felhasználni elég bonya lenne. Lehet inkább célszerűbb lenne azzal próbálkoznod, hogy kiterjeszted az absztrakt gép funkcióit és operátorait :)

Üdv,
Mtl

Akosch:. írta:
A múltkori kérdésem után nekiálltam megpróbálni implementálni a mutató típust pawnba, egyelőre itt tartok, ha valakit érdekelne a téma:
  1. #include <amxmodx>
  2.  
  3. enum Pointer { nullptr };
  4. #define new%9*%0=%8&%1; new Pointer:%0= ref(%1);
  5.  
  6. stock Pointer:operator++( Pointer:address )
  7. {
  8.     if ( address )
  9.     {
  10.         #emit lref.s.pri address
  11.         #emit inc.pri
  12.         #emit sref.s.pri address
  13.     }
  14.     else
  15.         log_error( 500, "Invalid address to increase the pointed value! ( ++ )" );
  16.  
  17.     return address;
  18. }
  19.  
  20. stock Pointer:operator--( Pointer:address )
  21. {
  22.     if ( address )
  23.     {
  24.         #emit lref.s.pri address
  25.         #emit dec.pri
  26.         #emit sref.s.pri address
  27.     }
  28.     else
  29.         log_error( 500, "Invalid address to decrease the pointed value! ( -- )" );
  30.  
  31.     return address;
  32. }
  33.  
  34. Pointer:ref( ... )
  35. {
  36.     #emit load.s.pri 12 // PRI = [ FRM + offset ]; ( 12 -> 1. param );
  37.     #emit retn
  38.     return nullptr;
  39. }
  40.  
  41. deref( Pointer:address )
  42. {
  43.     if ( address )
  44.     {
  45.         #emit lref.s.pri address    // PRI = [ [ FRM + offset ] ];
  46.         #emit retn
  47.     }
  48.    
  49.     return 0;
  50. }
  51. /*
  52. p_write( Pointer:address, value )
  53. {
  54.     #emit load.s.pri value      // PRI = [ FRM + offset ];
  55.     #emit sref.s.pri address    // [ [ FRM + offset ] ] = PRI
  56.     #emit retn
  57.     return 0;
  58. }
  59. */


Szóval, hogy mi mire ( kommentben a c++ -s forma ):
  1. // Pointer deklarálás, new kulcsszó, '*', '&' és a ';' kötelező! Szóköz lehet bárhol ezeknek köszönhetően.
  2. new *pPointer = &x; // int *pPointer = &x, a pPointer változóban eltároljuk az x változó memóriacímét.
  3. deref( pPointer ) // *pPointer, visszaadja a mutatott memóriacímen lévő értéket.
  4. ref( pPointer ) // &pPointer, visszaadja a megadott változó memóriacímét.
  5. ++pPointer / pPointer++ // A mutatott változó értékét növeli 1-el.
  6. --pPointer / pPointer-- // A mutatott változó értékét csökkenti 1-el.


Ötleteket szívesen fogadok, h hogyan lehetne c++ -hoz hasonlóbb + hogy mit csináljon az összeadás, kivonás. Egyenlőre tervek szerint:
Pointer:akármi + másvalami -> a mutatott változó értékéhez hozzáadjuk a másvalamit.
Pointer:akármi + Pointer:egyéb -> egyébnyi cell -el( 32 bit, 4 bájt ) odébb toljuk a mutatót, tömbökhöz stb.
( Új operátort létrehozni és referencia operátort szerkeszteni sajna nem lehet pawnban. )

Szerző:  DeteCT0R [ 2016.03.22. 05:25 ]
Hozzászólás témája:  Re: Írj! - Chat

Valaki tud kuldeni changelogot hogy mi valtozott amxx 1.8.2 es 1.8.3 kozott? Igazabol a szendvicsre vagyok kivancsi(hamsendwich) igen konkretan arra vagyok kivancsi.

Szerző:  The Peace [ 2016.03.22. 07:47 ]
Hozzászólás témája:  Re: Írj! - Chat

Reggelt!

Valakinek kell DeRoiD-nak a *kő event , OX event " pluginja?

Szerző:  Metal [ 2016.03.22. 08:44 ]
Hozzászólás témája:  Re: Írj! - Chat

Szerintem igen

The Peace írta:
Reggelt!

Valakinek kell DeRoiD-nak a *kő event , OX event " pluginja?

Szerző:  mforce [ 2016.03.22. 16:48 ]
Hozzászólás témája:  Re: Írj! - Chat

DeteCT0R írta:
Valaki tud kuldeni changelogot hogy mi valtozott amxx 1.8.2 es 1.8.3 kozott? Igazabol a szendvicsre vagyok kivancsi(hamsendwich) igen konkretan arra vagyok kivancsi.


inkább hamsandwich, de értjük.

Szerző:  DeteCT0R [ 2016.03.22. 17:22 ]
Hozzászólás témája:  Re: Írj! - Chat

mforce írta:
DeteCT0R írta:
Valaki tud kuldeni changelogot hogy mi valtozott amxx 1.8.2 es 1.8.3 kozott? Igazabol a szendvicsre vagyok kivancsi(hamsendwich) igen konkretan arra vagyok kivancsi.


inkább hamsandwich, de értjük.


Jolvan nyomd el a negativitasod velem szembe :D

Szerző:  DeR0iD [ 2016.03.22. 18:29 ]
Hozzászólás témája:  Re: Írj! - Chat

mforcenak inkább ilyen lekezelő stílusa van. habár én megértem mert nehéz lehet elviselni pár embert itt. (az olyan 10 éveseket). Ha én itt admin lennék akkor mennének a levesbe.

Szerző:  mforce [ 2016.03.22. 20:09 ]
Hozzászólás témája:  Re: Írj! - Chat

Ma amúgy is megvolt a napi stressz, úgyhogy :D + alapból bal lábbal keltem.

Szerző:  SmaCk [ 2016.03.22. 20:35 ]
Hozzászólás témája:  Re: Írj! - Chat

A gengszter élet...
https://www.youtube.com/watch?v=uye_Q0fuHPY

Oldal: 3204 / 3928 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/