Pawn sam w sobie nie zawiera czegoś takiego jak wskaźniki ( zamiast tego mamy przekazywanie przez referencje ) jednak funkcje dostępne w amxx pozwalają na pobieranie adresu zmiennej , ustawianie wartości pod danym adresem itp. czyli wszystko co jest nam potrzebne do obsługi "wskaźników"
Przydane funkcje w AMXX do obsługi wskaźników:
- get_addr_val - pobieranie wartość spod danego adresu
- get_var_addr - pobieranie adresu zmiennej
- set_addr_val - ustawianie wartości pod adresem
Pierwszy przykład kodu
#include <amxmodx>
#include "pointers.inc"
public plugin_init(){
new testVariable = 1;
new Pointer: testPointer = _&(testVariable);
__*( testPointer ) = 2;
testVariable = 3;
}Drugi przykład kodu#include <amxmodx>
#include "pointers.inc"
public plugin_init(){
new testVariable = 1;
new Pointer: testPointer = _&(testVariable);
new Pointer: testPointer2 = getPointer( testVariable );
log_amx( "Test 1 : %d | %d | %x" , __*(testPointer) ,getPointerValue( testPointer2 ) , testPointer );
__*( testPointer ) = 2;
log_amx( "Test 2 : %d | %d | %x" , __*(testPointer) ,getPointerValue( testPointer2 ) , testPointer );
testVariable = 3;
log_amx( "Test 3 : %d | %d | %x" , __*(testPointer) ,getPointerValue( testPointer2 ) , testPointer );
}Logi zwracane przez ten kodL 08/11/2013 - 15:31:06: [testPointer.amxx] Test 1 : 1 | 1 | 40fc L 08/11/2013 - 15:31:06: [testPointer.amxx] Test 2 : 2 | 2 | 40fc L 08/11/2013 - 15:31:06: [testPointer.amxx] Test 3 : 3 | 3 | 40fcOstatni parametr może być inny u was ze względu że jest to adres zmiennej.
Plik pointers.inc udostępnia takie funkcje
- _& - służy do pobierania adresu zmiennej
- __* - służy do wyłuskania wartości spod danego adresu lub jeśli występuje po lewej stronie operatora = do ustawiania wartości pod adresem wskazywanym przez wskaźnik
- getPointer( variable ) - zwraca adres zmiennej
- variable - jakaś zmienna
- getPointerValue( Pointer: pointer ) - zwraca wartość spod danego adresu
- pointer - wskaźnik na zmienną
- setPointerValue( Pointer: pointer , value ) - ustawia wartość pod danym adresem
- pointer - wskaźnik na zmienną
- value - wartość na jaką ustawić adres wskazywany przez pointer
pointers.inc 703 bajtów 70 Ilość pobrań

Dodatki SourceMod














