hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 19:18



Jelenlévő felhasználók

Jelenleg 227 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 226 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 39236 hozzászólás ]  Oldal Előző 13201 3202 3203 3204 32053924 Következő
Szerző Üzenet
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.19. 09:48 
Offline
SM Fejlesztő
Avatar

Csatlakozott: 2012.10.18. 15:58
Hozzászólások: 2486
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 132 alkalommal
CrB írta:
Egész érdekes bár nem értem miért de jónak tűnik :D

Nekem túlrágott

_________________
www.akosvagyok.hu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.19. 15:32 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.04.10. 19:49
Hozzászólások: 610
Megköszönt másnak: 53 alkalommal
Megköszönték neki: 147 alkalommal
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. )

_________________
Néha itt, de többször nem.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.19. 18:00 
Offline
Félisten
Avatar

Csatlakozott: 2016.03.06. 14:20
Hozzászólások: 964
Megköszönt másnak: 102 alkalommal
Megköszönték neki: 134 alkalommal
Hálóó!

Ilyen fajta lekéréseket hol lehet találni ami ValveHammer-al lekéregetős cucc , mint ez az eltüntetős :
  1. find_ent_by_tname(-1, "ide az eltuntetett dolog amit a mapban megadsz nevnek")

_________________
 ! Moderátori megjegyzés (kiki):
Kérlek csekkold az aláírásra vonatkozó szabályokat!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.19. 18:15 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
maybe

https://wiki.alliedmods.net/Finding_entities_(amx_mod_x)

_________________
Idk. Csak ugy funbooo.
Kép

Ők köszönték meg DeteCT0R nek ezt a hozzászólást: The Peace (2016.03.19. 21:14)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.19. 21:14 
Offline
Félisten
Avatar

Csatlakozott: 2016.03.06. 14:20
Hozzászólások: 964
Megköszönt másnak: 102 alkalommal
Megköszönték neki: 134 alkalommal
DeteCT0R írta:


Megy a kéz :)

Itt pontosabb :
https://wiki.alliedmods.net/Finding_Ent ... X_Mod_X%29

_________________
 ! Moderátori megjegyzés (kiki):
Kérlek csekkold az aláírásra vonatkozó szabályokat!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.20. 02:49 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
:D
Csatolmány:
fredi.jpg
fredi.jpg [ 49.92 KiB | Megtekintve 1541 alkalommal ]

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.20. 09:04 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.03.11. 20:11
Hozzászólások: 915
Megköszönt másnak: 52 alkalommal
Megköszönték neki: 317 alkalommal
DeteCT0R írta:
:D
Csatolmány:
fredi.jpg

:DDDDDDDDDDDDD

_________________
viewtopic.php?f=101&t=25611#p184899
viewtopic.php?f=114&t=29544&p=209471#p209431


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.20. 18:11 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Mik vannak :D
https://play.google.com/store/apps/deta ... oed.hlrcon

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.20. 23:04 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.04.10. 19:49
Hozzászólások: 610
Megköszönt másnak: 53 alkalommal
Megköszönték neki: 147 alkalommal
Dereferálás, következő indexre hivatkozás pipa. :geek: Persze csak okosan, mert nem lehet ellenőrizni, h meddig tart a tömböd :D
► Spoiler mutatása

_________________
Néha itt, de többször nem.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Írj! - Chat
HozzászólásElküldve: 2016.03.21. 10:45 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Ez a teljes kód? Csak mert ClassName és ClassName:: nem lelek ebben.

Alapvetően nem lehet osztályokat definiálni, de a structokra van egyfajta megoldás (ami ugye nem struct, de talán mondhatjuk azt, hogy ekvivalens :) )

  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. enum _:Ant
  5. {
  6.     OwnerPlayerIndex,
  7.     Name[33],
  8.     Health,
  9.     Attack,
  10.     Power,
  11.     Speed
  12. }
  13.  
  14. #define MAX_ANTS 512
  15. new g_aAnts[MAX_ANTS + 1][Ant];
  16.  
  17. public plugin_init()
  18. {
  19.     register_plugin("Incredible Ant Wars" , "1.0" , "Metal" );
  20.     register_clcmd( "say /makeAnt" , "CmdMakeAnt" );
  21. }
  22.  
  23. public CmdMakeAnt(id)
  24. {
  25.     new slotId = GetFreeAntSlot();
  26.     if (!slotId)
  27.     {
  28.         client_print(id, print_chat, "Nem lehet több hangyát generálni");
  29.         return PLUGIN_HANDLED
  30.     }
  31.     g_aAnts[slotId][OwnerPlayerIndex] = id;
  32.     g_aAnts[slotId][Name] = "Evil";
  33.     g_aAnts[slotId][Health] = 666;
  34.     g_aAnts[slotId][Attack] = 42;
  35.     g_aAnts[slotId][Power] = 69;
  36.     g_aAnts[slotId][Speed] = 68;
  37.    
  38.     client_print(id, print_chat, "Kész a hangya. Küld csatába!");
  39.     return PLUGIN_HANDLED
  40. }
  41.  
  42. public GetFreeAntSlot()
  43. {
  44.     for (new i = 1; i < sizeof(g_aAnts); ++i)
  45.     {
  46.         if (g_aAnts[i][OwnerPlayerIndex] == 0) {
  47.             return i;
  48.         }
  49.     }
  50.    
  51.     return 0; // externális elem
  52. }






Akosch:. írta:
Ha valakit érdekelne látszat megoldás oop -ra pawnban:
  1. #include <amxmodx>
  2. #include <class.inl>
  3.  
  4. #define Monster. Monster_
  5. #define iMonsterObj.%0(%1)  Monster_%0( iMonsterObj, %1 )
  6.  
  7. int iMonsterObj;
  8.  
  9. public plugin_init()
  10. {
  11.     register_plugin( "TEST", "1.0", "Akosch:." );
  12.  
  13.     register_clcmd( "test", "@fnTest" );
  14.  
  15.     iMonsterObj = Monster.Monster( );
  16.     // 2 féle hivatkozás:
  17.     Monster.SetDmg( iMonsterObj, 1 ); // Simán meghívjuk a függvényt
  18.     iMonsterObj.IncreaseDmg( 5, 5 );     // Lásd fent: iMonsterObj.%0(%1)
  19. }
  20.  
  21. @fnTest( iPlayerId )
  22. {
  23.     log_amx( "[Monster]^ndamage: %i ^nhealth: %i", Monster.GetDmg( iMonsterObj ), iMonsterObj.GetHp( ) );
  24. }

  1. #if defined _class_included
  2.     #endinput
  3. #endif
  4. #define _class_included
  5.  
  6. #if !defined _amxmodx_included
  7.     #include < amxmodx >
  8. #endif
  9.  
  10. #define private: static
  11. #define int stock
  12. #define public:
  13.  
  14. // class Monster
  15. #define Monster::   Monster_
  16. #define MONSTER_MAX 32
  17. //
  18. private: int g_iDmg[ MONSTER_MAX ];
  19. private: int g_iHp[ MONSTER_MAX ];
  20.  
  21. /*
  22. class Monster
  23. {
  24.     public:
  25.         int Monster( );
  26.         int IncreaseDmg( int iInt, int iInt2 );
  27.         int SetDmg( int iDmg );
  28.         int GetDmg( );
  29.         int SetHp( int iHp );
  30.         int GetHp( );
  31.     private:
  32.         int g_iDmg, g_iHp;
  33. }
  34.  
  35. */
  36.  
  37. // Konstruktor
  38. public: int Monster::Monster()
  39. {
  40.     static iMonsterId = -1;
  41.     log_amx( "Constructor!" );
  42.     return iMonsterId++;
  43. }
  44.  
  45. public: int Monster::IncreaseDmg( iObj, iInt, iInt2 )
  46.     g_iDmg[ iObj ] *= iInt + iInt2;
  47.  
  48. public: int Monster::SetDmg( iObj, iDmg )
  49.     g_iDmg[ iObj ] = iDmg;
  50.  
  51. public: int Monster::GetDmg( iObj )
  52.     return g_iDmg[ iObj ];
  53.  
  54. public: int Monster::SetHp( iObj, iHp )
  55.     g_iHp[ iObj ] = iHp;
  56.  
  57. public: int Monster::GetHp( iObj )
  58.     return g_iHp[ iObj ];


Hogy mi miért:
int -> stock: Ne ütközzön függvényeknél illetve privát változóknál. ( amúgy totál felesleges, és lehet hülye megoldás is, csak ha már az objektumok kezelését c stílusra szabtam gondoltam legyen meg ez is )
private -> static: A globális, static kulcsszóval létrehozott változók csak a saját fájljukban érhetőek el, ezzel ténylegesen hozzáférhetetlen a fő kódból ( ClassTest.sma ).
public: : Csak hogy legyen kiírva, jelölve.
MONSTER_MAX : Nem volt kedvem dinamikus változókkal babrálni.

+infó:
1 warningot mindenképp dob, mivel 2 makró is ugyanazt helyettesíti be ( ClassName. és ClassName:: ), ezért azt hiszi, h újradefiniálom az egyiket, de nem.

Edit: Ha lenne valakinek ötlete pofásabb objektum létrehozásra, esetleg egy makróra hozzá, akkor szívesen meghallgatom :D ( Ez a kézileg meghívjuk a konstruktort annyira nem tetszik, egy makróval szebb lenne )

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 39236 hozzászólás ]  Oldal Előző 13201 3202 3203 3204 32053924 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 15 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole