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.
|
Klakier
Rejestracja: 03.11.2011Aktualnie: Nieaktywny
Poza forum Ostatnio: 25.06.2020 19:35
Statystyki
- Grupa: Power User
- Całość postów: 878
- Odwiedzin: 8 482
- Tytuł: Volenti non fit iniuria
- Wiek: 28 lat
- Urodziny: Październik 5, 1995
-
Imię
Sebastian
-
Płeć
Mężczyzna
-
Lokalizacja
Mogilno
-
Zainteresowania
keyboard, amxx
Narzędzia użytkownika
Ostatnio byli
#712978 Zna ktoś tytuł tej nuty ?
Napisane przez White w 08.10.2015 19:20
#665322 Jak zablokować klase na wiecej niz jednej mapie
Napisane przez mastah7991 w 27.09.2014 13:50
#605814 Proszę o ogarnięcie tego
Napisane przez glut w 15.01.2014 20:33
Po 2 prosiłbym osoby, które się znają/ zajmują amxx scriptingiem, aby pomagały rozwiązać wszystkie problemy czy jakieś prośby o coś, a nie żeby wątki zostały bez odpowiedzi i tym podobne. Sam z tym miałem styczność, żę potrzebowałem pomocy, a nikt mi nawet nie odpisał. Takie forum duże, a tyle do zrobienia jeszcze jest.
Tak jak Kawon, nikt tu nie jest nikogo niewolnikiem. Każdy z nas ma swoje życie. Umiem, mam czas i chęci to pomagam. Jeżeli chcesz pomocy od zaraz możesz zwrócić się bezpośrednio do przyjaciela, jakiegoś użytkownika poprzez PW/GG itp. Lecz nie zawsze każdy zrobi to bezpłatnie.
#603536 Osoby roku 2013 - Wyniki
Napisane przez DarkGL w 10.01.2014 07:46
W dwóch kategoriach ze względu na minimalne różnice w głosach podałem 3 pierwsze osoby.
Osoba roku ( najbardziej zasłużona itp. ) - DarkGL ( 50.65% )
Najbardziej pomocna osoba -
- FORMOZA ( 19.48% )
- GwynBleidD ( 16.88% )
- Benio101 ( 14.29% )
- FORMOZA ( 33.77% )
- glut ( 29.87% )
- GwynBleidD ( 18.18% )
Osobiście gratuluje wszystkim , niech to będzie małe docenie pracy i czasu poświęconego na forum . Tak jak w poprzednim roku uważam że Osoba roku bardziej należy się innym użytkownikom niż mi , oczywiście dziękuje za głosy
#584284 DarkGL i CheQ - skaczemy :)
Napisane przez dasiek w 10.11.2013 14:45
#582383 Problem w napisaniu programu - prośba o pomoc
Napisane przez DarkGL w 03.11.2013 00:04
Argh ! Goto ? naprawdę ?! nabierasz zdecydowanie złych nawyków , nie rozprzestrzeniaj ich jak zarazy to że Ty używasz konstrukcji niepożadanych nie znaczy że inni muszą
po za tym widze tu bardziej pole dla int nie dla chara, może zabrzmi to troche niezrozumiale ale lepsze jest podejśćie whitelisty niż blacklisty
co znaczy że
Zabezpiecz przed wczytaniem nieprawidłowej liczby
jaka jest nieprawidłowa ?
Używająć int otrzymamy automatyczne rzutowanie !
Więc w praktyce nigdy nie uzyskamy czegoś innego niż liczba
#577763 Najlepszy gracz rundy
Napisane przez Gość w 15.10.2013 01:35
Jak już tofor(new i = 1; i < 33; i++)nie lepiej i optymalniej nafor(new i = 1; i < get_maxplayers(); i++)i jescze do if'a sprawdzenie czy gracz jest hltv jak tak to wiadomo co!for(new i = 1, maxp = get_maxplayers(); i < maxp; i++)A najlepiej maksymalną ilość graczy pobrać jeden raz przy rozpoczęciu mapy, ale to jest stock.
for(new i = 1, maxp = get_maxplayers(); i <= maxp; i++)
Chciałeś za każdą iteracją pętli pobierać tę samą zmienną?po co Ci maxp ?
#571034 Zmiana prędkości gracza
Napisane przez G[o]Q w 11.09.2013 18:08
#567387 Java czy C++ ?
Napisane przez G[o]Q w 26.08.2013 19:04
#554295 Śmieszne, głupawe linki, kawały
Napisane przez K!113r w 11.07.2013 12:27
#566014 HUD ScoreBoard [PL]
Napisane przez d0naciak w 22.08.2013 10:32
#563266 Hardstyle Summer Set 2013
Napisane przez LordMar w 13.08.2013 22:21
Siemka
Jeśli znudziły Cię kawałki non stop grane w radiu, jeśli pop, hip-hop, rock, electro, dubstep ... Ci się przejadły.
Chcesz poczuć coś nowego i nie boisz się sąsiadów wybijających razem z Tobą rytm.
Zapraszam do przesłuchania niecodziennego, bo Hardstyle'owego Mix'a Wakacyjnego
Więc Volume MAX & Subwoofer ON !!! Feel the maximum pleasure!!!
--->
A tak przy okazji, też piszcie, która dziewczyna najlepsza
Pozdrawiam
#560499 Drzewa słownikowe, czyli Trie
Napisane przez BlackPerfum w 03.08.2013 08:58
Zalecam przed nauką obsługiwania się biblioteką "celltrie" naukę "cellarray" gdyż są ów biblioteki dosyć powiązane ze sobą. Niestety biblioteka "celltrie" nie jest opisana ani w dokumentacji na amxx.pl, ani na wiki amxmodx`a, dlatego jeśli popełnię jakieś literówki proszę o wyrozumiałość ;D. Nie sprawdzałem czy w AMXX-Studio jest ich opis gdyż go nie używam. Główną zaletą korzystania z "celltrie" jest możliwość dynamicznego zarządzania pamięcią ;D
1. Różnice CellTrie od CellArray
• w "celltrie" wyszukuje się dane za pomocą stringa (porównywalne do nvault), a w "cellarray" za pomocą indexu.
• nie trzeba po kolei zapełniać miejsca jak w przypadku "cellarray" funkcjami "push"
2. Deklaracja Trie
Tak samo jak w przypadku tablic dynamicznych najpierw trzeba stworzyć zmienną poprzedzoną enum (chodzi o typ zmiennej), która będzie naszym uchwytem.
new Trie:Uchwyt
Po stworzeniu zmiennej możemy do niej "włożyć" nasz uchwyt stwarzany przy deklaracji tablicy Trie.
Uchwyt = TrieCreate()
W ten sposób ulokowaliśmy sobie troszkę miejsca na nasze "drzewko" i uchwyt do niego zapisaliśmy w zmiennej "Uchwyt" ;D
3. Zapis Danych
Jak wyżej wspomniałem w "celltrie" można od razu zapisywać dane w tym miejscu w którym się chce tzn. nie trzeba(nie można) używać funkcji "push"
Można zapisywać dane na trzy sposoby:
• Jako liczbę/znak:
TrieSetCell(Uchwyt,klucz[],wartość)
• Jako ciąg znaków:
TrieSetString(Uchwyt,klucz[],wartość[])
• Jako tablicę danych:
TrieSetArray(Uchwyt,klucz[],wartość[])
• Uchwyt - Uchwyt do naszego "drzewka"
• klucz - Unikalny klucz(ciąg znaków)
• wartość - Nasze dane, które chcemy zapisać
4. Odczyt Danych
Jeśli już potrafimy zapisać dane to pozostaje nam ich odczytanie.
Podobnie jak w przypadku zapisywania, odczytać można na trzy sposoby:
• Jako liczbę/znak:
TrieGetCell(Uchwyt,klucz[],wartość)
• Jako ciąg znaków:
TrieGetString(Uchwyt,klucz[],wartość[],rozmiar)
• Jako tablicę danych:
TrieGetArray(Uchwyt,klucz[],wartość[],rozmiar)
• Uchwyt - Uchwyt do naszego "drzewka"
• klucz - Unikalny klucz(ciąg znaków), którego użyliśmy do zapisu
• wartość - zmienna do której referencyjnie zostaną przekazane dane
• rozmiar - maksymalny rozmiar danych jakie chcemy otrzymać
Dodatkowo każda z powyższych funkcji(pobierających dane) zwraca true/false zależnie od tego czy znaleziono nasz klucz
4. Czyszczenie/Niszczenie
Tak samo jak w "cellarray" można czyścić dane, a nawet powinno się (gdy zajmują nie potrzebnie miejsce)
Do tego służy funkcja:
TrieClear(Uchwyt)
Kolejnym podobieństwem do "cellarray" jest funkcja pozwalająca na wyczyszczenie danych oraz zwolnienie ulokowanego przez nas miejsca:
TrieDestroy(Uchwyt)
A jeśli nie chcemy czyścić wszystkich danych tylko dane pod jednym kluczem to możemy posłużyć się tą funkcją:
TrieDeleteKey(Uchwyt, klucz[])
• Uchwyt - Uchwyt do naszego "drzewka"
• klucz - Unikalny klucz(ciąg znaków), którego użyliśmy do zapisu
Funkcja "TrieDeleteKey" dodatkowo zwraca czy klucz istnieje
4. Funkcje ułatwiające korzystanie z Trie
Niestety jest tylko jedna, która sprawdza czy podany klucz istnieje
TrieKeyExists(Uchwyt, klucz[])
Zwraca czy klucz istnieje
• Uchwyt - Uchwyt do naszego "drzewka"
• klucz - Unikalny klucz(ciąg znaków), którego użyliśmy do zapisu
4. Praktyczne użycie
Może teraz troszkę praktyki, a więc wychwyćmy moment gdy gracz wpisz na "say" jakieś słowo z podanego pliku, po czym pojawi mu się tekst napisany obok danego słowa.
Opis całego pluginu zamieszczę w komentarzach
#include <amxmodx> #include <amxmisc> #include <ColorChat> new Trie:Uchwyt // Stworzenie zmiennej, w której umieścimy uchwyt public plugin_init() { register_plugin("Praktyczne użycie Trie", "Final", "BlackPerfum"); register_clcmd("say", "cmd_say")// Wychwycenie momentu(oraz tekstu) gdy gracz napisze coś na "say" } public plugin_cfg() { new szFilename[ 128 ]//Ścieżka do pliku get_configsdir( szFilename, 127 )//Pobieram ścieżkę do folderu "config" add( szFilename, 127, "/Slowa.ini" )//Na końcu ścieżki umieszczam swój plik if(!file_exists(szFilename)) { set_fail_state("Plugin zostanie wylaczony z powodu braku pliku Slowa.ini") //Jeśli plik nie istnieje to wyłączam plugin return PLUGIN_CONTINUE } new iFile = fopen( szFilename, "rt" ) // Otwieram plik if( !iFile ) { set_task(10.0,"plugin_cfg") // Jeśli jakiś proces używa już pliku to opóźniam otwarcie pliku return PLUGIN_CONTINUE } new szData[100] // Do tej zmiennej będe wpakowywał po kolei linijki z pliku new slowo[20],tekst[90] // Zmienne do podziału lini Uchwyt = TrieCreate() while(!feof( iFile )) { fgets( iFile, szData, 99 )//Pobieram linie if( !szData[ 0 ] || szData[ 0 ] == '^n'|| szData[ 0 ] == ';'|| szData[ 0 ] == '/' && szData[ 1 ] == '/' ) continue // Omijam nie potrzebne linie split(szData, slowo, 19, tekst, 89, " ") // Dziele linie na dwie części (słowo i dalszy tekst) trim(slowo)// Usuwam białe znaki (o ile są) replace_all(tekst,89," ", "$") // Zamieniam spacje na dany znak trim(tekst) // Usuwam białe znaki (tu na pewno jest jeden uciążliwy, chyba że to ostatnia linia) replace_all(tekst,89,"$", " ") // Zamieniam dany znak na spacje TrieSetString( Uchwyt, slowo, tekst ) // Zapisuje słowo i tekst } fclose( iFile ) // Zamykam plik return PLUGIN_CONTINUE } public cmd_say(id) { new slowo[20] // Tworzenie zmiennej read_args(slowo, 19) // Pobieranie 19 znaków (o ile jest ich co najmniej 19) z tekstu który napisał gracz na "say" remove_quotes(slowo) //usuwanie " if(!TrieKeyExists(Uchwyt, slowo)) return PLUGIN_CONTINUE //Sprawdzam czy słowo które napisał gracz jest jednym ze słów które zapisaliśmy new tekst[90] TrieGetString(Uchwyt,slowo,tekst,89) // Pobieram tekst ColorChat(id,GREEN,tekst) // Pokazuje graczu tekst return PLUGIN_CONTINUE }
A tak wygląda nasz plik pod ścieżką "addons/amxmodx/configs/Slowa.ini"
amxx Nieoficjalne forum AMX MOD X [...]
Teraz gdy gracz wpisze na "say" słowo "amxx" to pokaże mu się zielona wiadomość "Nieoficjalne forum AMX MOD X"
#558855 Minusy do reputacji
Napisane przez Ossal w 27.07.2013 21:31
#558799 Minusy do reputacji
Napisane przez Ossal w 27.07.2013 17:45
Otrzymałem 2 minusy do reputacji i wcale mi się to nie uśmiecha, nie wiem na kogo zkładam skarge, ale w logach na pewno jest, kóry to moderator. Żeby było śmieszniej dostałem 2 minusy za jeden post i to we własnym temacie. Sporo można znieść, ale karanie ludzi bo moderator akurat miał taki kaprys to chyba jest coś nie tak. Nie obchodzi mnie czy ktoś coś z tym zrobi, Wasze forum, ale chce reputke spowrotem. Licze na rozpatrzenie. Pozdrawiam
PS hehe, link do tematu raczej sie przyda http://amxx.pl/topic...dpalaniu-demka/
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: Klakier
- Regulamin