Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Dokumentacja AMX Mod X v. 11.5 Uzupełnionych funkcji: Sortowanie: Według modułów | Alfabetycznie
Szukaj funkcji:

3rdParty
Core
Cstrike
CSX
DoDX
Engine
ESF
Fakemeta
Fun
fun
GeoIP
HamSandwich
JSON
NS
nVault
REAPI
Regex
Sockets
Sql
SQLx
dbi
TFCX
TSFUN
TSX
tsx

SortCustom2D

Dodane 04.05.2010 17:04 przez: R3X
#
  


Opis

Sortuje dwuwymiarową tablicę liczb całkowitych. Wykorzystuje algorytm qsort (szybkiego sortowania).
Funkcja pozwala na zdefiniowanie procedury porównującej elementy.



Składnia

SortCustom2D(array[][], array_size, const comparefunc[], data[], data_size=0)

Typ

Natywny

Notatki

  • array - tablica do posortowania, po wywołaniu funkcji zapisywany jest w niej wynik.
  • array_size - ilość elementów w tablicy.
  • comparefunc - nazwa publiczne funkcji, która będzie decydować o kolejności elementów.
  • data - nasze dane przydatne podczas porównywania elementów.
  • data_size - wielkość tablicy naszych danych.

Funkcja porównująca ma mieć postać:

public MySortFunc(const elem1[], const elem2[], const array[], const data[], data_size)

gdzie:

  • elem1 - pierwszy element do porównania (tablica).
  • elem2 - drugi element do porównania (tablica).
  • array - pomniejsza tablica (powstała przy podziale qsort).
  • data - nasze dane.
  • data_size - wielkość tablicy z naszymi danymi.

O kolejności decyduje wartość zwrócona przez funkcję dla danych elementów

  • -1 - elem1 idzie przed elem2.
  • 0 - elem1 i elem2 są równe.
  • 1 - elem1 idzie za elem2.


Przykład

// Niech myArray przechowuje informacje o ilości zabójstw i śmierci graczy.

new myArray[][] = { 
	{3, 5}
};

// Czyli jest tylko 1 gracz który zabił 3 osoby, a 5 razy zginął

public plugin_init() {
	//Zabójstwa i śmierci
	new myArray[][] = { 
		{3, 5},
		{5, 3},
		{5, 2},
		{3, 1},
		{7, 10}
	};
	new len = 5; // lub new len = sizeof(myArray);
	
	SortCustom2D(myArray, len, "porownaj2D");
	
	for(new i=0;
		log_amx("%d, %d", myArray[i][0], myArray[i][1]);
	}
}
/*
 * Sortowanie malejące
 *
 * Nie używamy własnych danych, więc data[] i data_size nie są potrzebne
 * podobnie jak array, więc lista parametrów skróciła się do 2
 */
public porownaj2D(const elem1[], const elem2[]){
	if(elem1[0] == elem2[0]){ 
		//gdy ilość zabójstw obu graczy jest równa
		//o kolejności decyduje ilość śmierci

		if(elem1[1] == elem2[1]) 
			//no cóż, takie same staty
			return 0;
		else if(elem1[1] < elem2[1])
			//zabił tyle samo przeciwników, lecz ginął rzadziej -> idzie przed
			return -1;
		//zabił tyle samo przeciwników, lecz ginął częściej
		return 1;
	}
	else if(elem1[0] > elem2[0]) 
		// zabił więcej przeciwników, więc idzie przed
		return -1;
	//zabił mniej przeciwników
	return 1;
}

/*

Konsola

L 05/04/2010 - 17:56:08: [sort.amxx] 7, 10
L 05/04/2010 - 17:56:08: [sort.amxx] 5, 2
L 05/04/2010 - 17:56:08: [sort.amxx] 5, 3
L 05/04/2010 - 17:56:08: [sort.amxx] 3, 1
L 05/04/2010 - 17:56:08: [sort.amxx] 3, 5

*/

Edytowane 19.10.2013 16:33 przez:
  




Zakaz używania, kopiowania i innego wykorzystywania treści witryny oraz innych materiałów w niej zawartych bez zgody autorów. Wszelkie prawa zastrzeżone. © 2009-2024