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
 

Black004 - zdjęcie

Black004

Rejestracja: 17.06.2017
Aktualnie: Nieaktywny
Poza forum Ostatnio: 20.02.2025 13:45
-----

#767492 [ROZWIĄZANE] Pobranie litery na miejscu x z ciągu znaków.

Napisane przez Rivit w 23.06.2020 13:21

%s jest dla stringów, string to napis zakończony zerem (null byte), w twoim przypadku to oznacza - "wez napis od indexu 2" no i jedzie od 2 do konca.

 

do pojedynczego znaku uzyj %c


  • +
  • -
  • 4


#766068 Kupie serwer CSGO !!

Napisane przez Rivit w 18.04.2020 10:54

Możesz swój serwer postawić i go rozkręcić. Wiele serwerowni uzywało tego poradnika i im się udało: https://www.youtube....h?v=cd_23x8Xq5I


  • +
  • -
  • 5


#765792 Posługiwanie się socketem.

Napisane przez Rivit w 10.04.2020 19:30

Czy serwer 145.239.26.143 wysyła jakieś dane na twój socket? Bo żadnego 'zapytania' nie wysyłasz do serwera 145.239.26.143

Popatrz tu: https://amxx.pl/dokumentacja/f1324/socket-recv


  • +
  • -
  • 1


#765733 Posługiwanie się socketem.

Napisane przez Rivit w 08.04.2020 19:57

nie kazdy ma czas zeby Ci odpisywać. czasem trzeba samemu coś pokminić. sockety to jakby nie patrzec troche trudniejszy temat.

 

Pytanie co chcesz osiągnąć, bo ciężko doradzić.

Zajrzyj także tutaj: https://forums.allie...ad.php?t=151401


  • +
  • -
  • 1


#765732 Posługiwanie się socketem.

Napisane przez DarkGL w 08.04.2020 19:34

Pytanie jaki konkretnie efekt chcesz osiągnać.

 

TSource Engine Query - to protokół do komunikacji klient serwer w grach Valve https://developer.va.../Server_queries


  • +
  • -
  • 1


#765558 Posługiwanie się socketem.

Napisane przez Rivit w 05.04.2020 16:57

sockety w amxx działają podobnie jak te z języka C, więc jakiś pierwszy lepszy tutek zeby obczaić w ogole o co chodzi w tym i śmigasz.

 

co do tutków wrzuc sobie 'c sockets' w google, poczytaj poogladaj, a potem skorzystaj z funkcji z rodziny socket_*


  • +
  • -
  • 1


#765429 Problem native error set_pev

Napisane przez Rivit w 30.03.2020 21:10

Kod w załącznik lub w spoiler (tak jak zrobiłeś), ale żeby nie wyglądał jak *****. Popatrz, wszystkie wcięcia wywaliło, no nieczytelne to jest. Przydałoby się też powiedzieć może, która linijka to 335, bo skąd my to mamy wiedziec? Jak wstawiasz kod w listing to jest tam opcja numeracji linii, wystarczy tam jedynkę wpisać.


  • +
  • -
  • 1


#685689 [KOSZ] Jak kompletnie uporac sie z upierdliwym graczem???

Napisane przez Shalom_israel w 31.01.2015 14:08

poczytaj

http://amxx.pl/topic...a-banowanie-ns/

rozważ kupno NeoBans


  • +
  • -
  • 1


#763490 Crashuje wszystkim graczom CS podczas zmiany mapy.

Napisane przez Robiin w 29.12.2019 11:50

Spróbuj użyć tego kompilatora:

 

Załączone pliki


  • +
  • -
  • 1


#763495 Crashuje wszystkim graczom CS podczas zmiany mapy.

Napisane przez Robiin w 29.12.2019 13:25

Nie wiem. Bez znaczenia :) Daj znać czy naprawiło to problem.


  • +
  • -
  • 1


#763483 Crashuje wszystkim graczom CS podczas zmiany mapy.

Napisane przez Robiin w 29.12.2019 01:21

Wchodzisz na https://www.amxmodx....wnloads-new.php

W tabelce pobierasz wersję z builda 5263, obie paczki.

Wrzucasz na serwer (pamiętaj, że podmienią Ci się pliki .ini/.cfg etc. więc skopiuj sobie najlepiej cały folder amxmodx/).

 

 

AMXX jest buildowany z zachowaniem kompatybilności wstecznej, co oznacza, że nowsze wersje będą współgrały ze starszymi lecz niekoniecznie na odwrót (Pluginy z np. 1.8.2 będą działały na 1.9, ale pluginy z 1.9 niekoniecznie na 1.8.2).

Kompilator na ścieżce cstrike/addons/amxmodx/scripting/[amxxpc.exe | compile.dat | amxxpc32.dll | compile.exe | /include]

 


  • +
  • -
  • 1


#760208 Problem z gangami by Cypis

Napisane przez Robiin w 30.07.2019 08:51

ArrayGetCell zwróci Ci wartość, więc musi być przypisana do zmiennej:

new money = ArrayGetCell(gangMoney, user_gang[id]);

  • +
  • -
  • 1


#760221 Problem z gangami by Cypis

Napisane przez Robiin w 30.07.2019 12:34

W zaladuj_skils ArrayPushCell, nie ArraySetCell, ale to zapewne pomiesza Ci dane różmych klanów. Właśnie dlatego o takich rzeczach myśli się wcześniej.


  • +
  • -
  • 1


#760229 Problem z gangami by Cypis

Napisane przez Rivit w 30.07.2019 16:30


To można wiedzieć dlaczego ten błąd występuję ?

 

No to jest temu, że się odwołujesz poza tablice

 

Tak siedze w pracy i dumam i na szybko wydumałem jakieś takie dziobaki

jak robisz push cell to ono dodaje na koniec tablicy, a nam trzeba pod indeksem. i tera tak

albo robim takie fake puste wpisy zeby sie indeksy zgadzali

albo korzystamy z Trie i mamy elegancko pary klucz-wartość    - klucz to id gangu a wartosc to bonus szlugów.

public zaladuj_skills(id)
{

	new vaultkey[64],vaultdata[128]
	formatex(vaultkey,63,"%d-skills",user_gang[id])
	
	if(nvault_get(jb_skills,vaultkey,vaultdata,127)) {
		new parsowanie[3][16];
		parse(vaultdata, parsowanie[0], 15, parsowanie[1], 15, parsowanie[2], 15)

		while(ArraySize(gangMoneyBonus) < user_gang[id]){
			ArrayPushCell(gangMoneyBonus, 0)
			ArrayPushCell(gangWeaponDrop, 0)
			ArrayPushCell(gangMoney, 0)
		}
		
		ArraySetCell(gangMoneyBonus, user_gang[id], str_to_num(parsowanie[0]))
		ArraySetCell(gangWeaponDrop, user_gang[id], str_to_num(parsowanie[1]))
		ArraySetCell(gangMoney, user_gang[id], str_to_num(parsowanie[2]))
	}
	return PLUGIN_CONTINUE
}  

O takim czymś mówie, wypełniasz dopóki nie ma pożądanego indeksu, a jak już jest to ustawiasz wartość po prostu.

 

 

Trie method:

Robisz TrieCreate na początku.

Przy odczytywaniu pakujesz do Trie (TrieSetCell) - klucz to user_gang[id], value to bonus szlugów i jak kolejni gracze wchodzą to sprawdzasz czy istnieje już taki klucz, jeśli tak to nic nie robisz, jeśli nie to wczytujesz.

Przy zapisie sprawdzasz czy klucz istnieje i po prostu pobierasz value poprzez TrieGetCell i zapisujesz normalnie do nvault.

 

Co do pobrania wartości: TrieGetCell.

Reszta jest na forum, tutoriale do Trie, Array, wystarczy spędzić troche czasu i sie naumiesz ;)

 

A te rzeczy wczytujesz oczywiscie wtedy, gdy juz załaduje sie user_gang z sqla


  • +
  • -
  • 1


#47296 Dynamiczne Tablice

Napisane przez R3X w 03.03.2009 19:21

Dynamiczne Tablice

Możemy ich użyć zawsze, gdyż są składnikiem biblioteki <amxmodx>, bez której ciężko napisać jakikolwiek plugin.


1. Co to?
Tablica to zbiór danych tego samego typu. Mamy do nich dostęp przez nazwę tablicy i indeks pola. Jednak zwykłe tablice muszą mieć z góry założoną wielkość.

new g_CechaGracza[33];		//wielkość:33
new g_kolory[][]={"white","red"};	//wielkość:2x6

Dynamiczne tablice pozwalają na przechowywanie nieokreślonej (ale skończonej :] ) ilości danych. Dzięki temu wykorzystujemy dokładnie tyle miejsca w pamięci ile akurat potrzeba.

2. Tworzenie
Musimy zadeklarować tablicę.
new Array:MojaTablica;
Jeśli jest globalna (dostępna z każdego miejsca w pluginie) nie możemy od razu jej stworzyć. W innym przypadku można zrobić to od razu przy deklaracji.
new Array:g_MojaTablica;
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_MojaTablica=ArrayCreate();
}
Interesuje nas ta linijka:
g_MojaTablica=ArrayCreate();

ArrayCreate(cellsize=1, reserved=32)
cellsize rozmiar komórki; dla liczby całkowitej rozmiar=1 (wartość domyślna),
jeśli elementy tablicy mają być zwykłą tablicą (czyli też stringiem) podajemy tu rozmiar tej tablicy[/list]reserved ilość tworzonych podczas inicjacji tablicy komórek;domyślnie rezerwowane są 32 pola
nie jest to maksymalna ilość danych, lecz po stworzeniu tablicy będzie miała ona na starcie tyle indeksów[/list]
3. Zapis danych
Cóż nam po pustej tablicy - pora uzupełnić ją danymi. Podstawową operacją jest Push. Polega ona na dodaniu nowego elementu na końcu tablicy. Nawet jeśli zarezerwowaliśmy 32 komórki pierwsze Push umieści dane w indeksie 0, drugie w 1 itd.

Dla tablicy o cellsize=1 używamy:
ArrayPushCell(Array:which, any:input);
Array:which docelowa tablica, podajemy tu nazwę naszej zmiennej typu Array:[/list]any:input dane, które umieszczone zostaną w tablicy; zmienna może być dowolnego typu
np. liczbą całkowitą/rzeczywistą, znakiem czy inną tablicą Array:[/list]
ArrayPushCell(g_MojaTablica,5);
Jeśli jest to pierwszy Push g_MojaTablica w polu o indeksie 0 będzie zawierała liczbę 5.

Dla tablicy o cellsize>1 używamy:
ArrayPushString(Array:which, const input[]);
ArrayPushArray(Array:which, const any:input[]);
Array:which docelowa tablica, podajemy tu nazwę naszej zmiennej typu Array:[/list]input[] tutaj podajemy tablicę, która umieszczona zostanie w tablicy,
w przypadku PushString tablica musi być typu całkowitego (znaki) i powinna być zakończona bajtem zerowym '/0'
PushArray używamy przy pozostałych tablicach[/list]

Aby edytować wybrane pole tablicy używamy funkcji (zależnie od typu):

ArraySetCell(Array:which, item, any:input);
ArraySetString(Array:which, item, const input[]);
ArraySetArray(Array:which, item, const any:input[]);

Argumenty są prawie te same, funkcje działają analogicznie do Push, więc nie będę się rozpisywał.
Pojawił się nowy parametr:
item edytowany indeks; liczba porządkowa określająca położenie danych w tablicy[/list]jeśli chcemy zmienić piątkę z poprzedniego przykładu napiszemy tak:
ArraySetCell(g_MojaTablica,0,6);
Teraz g_MojaTablica w polu o indeksie 0 będzie zawierała liczbę 6.

4. Odczyt danych
Zależnie od rodzaju przechowywanych danych używamy jednej z trzech funkcji:
ArrayGetCell(Array:which, item);
zwraca wartość z pola o indeksie item z tablicy which

ArrayGetString(Array:which, item, output[], size);
wypełnia (przez referencję ) tablicę output do maks. długości size tekstem z pola o indeksie item z tablicy dynamicznej which

ArrayGetArray(Array:which, item, any:output[]);
wypełnia (przez referencję ) tablicę output wartościami tablicy z pola o indeksie item z tablicy dynamicznej which

5. Przydatne funkcje
ArrayClear(Array:which);
czyści dynamiczną tablicę dynamiczną whichArraySize(Array:which);
zwraca ilość elementów tablicy dynamicznej which; ostatni indeks w g_MojaTablica (jeśli nie jest pusta) to (ArraySize(g_MojaTablica)-1)
6. Więcej?
Pełniejsza lista funkcji będzie pewnie w dokumentacji amxx.pl
Póki co radzę wpisać w AMXX-Studio gdzieś w kodzie słowo "Array" i jeśli korzystasz z podpowiedzi pokaże się przesuwana lista wszystkich funkcji z cellarray.inc


Powodzenia przy pisaniu pluginów korzystających z dynamicznych tablic!
  • +
  • -
  • 20