Skocz do zawartości
  • Postów

    49 226
  • Wpisów na chatbox

    2
  • Dołączył

GET

Właściciel
  • Ostatnia wizyta

    nigdy
  • Wygrane

    36
  • Darowizny

    0.00 PLN 

Treść opublikowana przez GET

  1. Kolizja dproto z binarkami? Opiszę w tym temacie dość istotny wątek związany z dproto i binarkami. 1. Na wstępie, dużo osób myli trochę pojęcia i nie zdaje sobie sprawy z bzdur, które coraz więcej można czytać w Internecie na temat błędu z przypisywaniem steam:id. Zacznijmy od tego, że nie można tego dokładnie nazwać kolizją dproto z binarkami. Nie można powiedzieć, że binarki są za to odpowiedzialne czy dproto konkretnie. Zastanówmy się trochę nad sensem tego. 2. Cóż to za błąd, który występuje w najnowszym dproto i binarkach? Chodzi o to, iż graczom STEAM w wyniku błędów, przypisywany jest VALVE_ID_LAN czyli nie posiada SID-u, przez to wiele osób posiadających funkcję typu: V.I.P, admin, rezerwacja slota na (oczywiście steam:id) cierpi na tym, gdyż funkcja nie może być - skoro jest na steam:id - wczytywana. VALVE_ID_LAN != STEAM:ID czyli nie może być równy steam, bo nie został on przypisany. 3. Celem tego wątku jest napisanie jasno i wyraźnie, że ten błąd nie pojawia się "o stąd" z niewiadomych przyczyn. Błąd pojawia się najczęściej wtedy gdy: a) klient (gracz) błędnie łączy się z serwerem, np. przy zmianie mapy, podczas pobierania plików (nie przypisanie w plugin_precache plików w pluginie też jest temu winne) itd.. b) klient traci dostęp do serwera, np. w wyniku zawieszenia się serwera przez co można wywnioskować, że dproto traci dane o graczu i błędnie przypisuje z dproto.cfg: Zamiast 1 można przypisać inne, ale dla STEAM wiadomo, że musi generować STEAM:ID realny, więc 1 musi być. 4. Można zapobiec oszustom tak, aby tylko graczom steam generowało SID, a innym wyświetlało VALVE_ID_LAN: i z oszustami sobie poradziliśmy. Nie można w żaden od teraz przypisać STEAM:ID na podstawie IP lub programów bądź najnowszym dproto (chyba że o czymś nie wiem). 5. Reasumując, warto zadbać o konfigurację serwera i dobrze się zabezpieczyć. Większość ludzi nie zdaje sobie sprawy z tego, przez co wypisują na różnych forach czy do hostingu pretensje "że ktoś im się wkradł". Nawet ludzie nie zdają sobie sprawy z tego jakie pluginy wgrywają na serwerze. Ano najlepiej jest wgrać plugin "bo jest dostępny", tak robi typowa osoba, nieznająca się na tym! Warto zadbać o każdy szczegół na serwerze, każdy kto posiada dobrą, rozwiniętą sieć powinien o tym wiedzieć! Poradnik by Nesty Nie gwarantuję rozwiązania wszystkich problemów w tym temacie. To nie jest poradnik tylko artykuł!
  2. GET

    [KOSZ] [PAWN] Forwardy

    Forwardy 1. Opis Działają odwrotnie do natywów. Funkcja natywna jest udostępniana innym pluginom. Forwardy to abstrakcyjne funkcje, które biblioteka próbuje wywołać. Wykonując forward dajemy sygnał, że nastąpiło jakieś zdarzenie i plugin może na nie zareagować. Można to lepiej zrozumieć biorąc pod uwagę forwardy samego AMXX, takie jak: forward plugin_init(); forward client_putinserver(id); stąd powinieneś się domyślić je rozpowszechniać. W pliku .inc podajemy nagłówek forward nazwa(Float:para, met, ry[]); a w pliku .sma public nazwa(Float:para, met, ry[]){ //nasz kod }Dalej tę funkcji publiczną nazywam 'funkcją oczekującą'.O tym jak zaprojektować czytaj dalej -> 2. Tworzenie Po pierwsze musimy zarejestrować forward. MutliForward Gdy użyjemy poniższej, oczekująca funkcja będzie wywoływana w każdym pluginie, który z niej korzysta. /** * Rejestruje forward dostępny dla wszystkich pluginów * * @param name[] Nazwa publicznej funkcji * @param stop_type Typ zatrzymania * @param ... Parametry * @return Uchwyt (liczba całkowita) */ CreateMultiForward ( const name[], stop_type, ... ) Jako name[] podajemy nazwę, Typ zatrzymania określa sposób realizacji: #define ET_IGNORE 0 //ignoruj zwracaną wartość #define ET_STOP 1 //zatrzymuje przy PLUGIN_HANDLED #define ET_STOP2 2 //to samo,tylko nie zwraca największej wartości #define ET_CONTINUE 3 //bez stopu, zwraca największą wartość forward z typem ingore i continue będzie wywołany zawsze we wszystkich pluginach opcje stopu (STOP i STOP2) zatrzymują rozsyłanie forwardu po otrzymaniu PLUGIN_HANDLED Jeśli na tym skończymy to powstaje forward bez parametrów, jak: //sma biblioteki CreateMultiForward ( "nic_sie_nie_stalo", ET_IGNORE); //w pliku .inc forward nic_sie_nie_stalo(); Aby dodać jakieś argumenty trzeba rozwinąć rejestrowanie o dodatkowe wartości. Do określenia typu parametru służą stałe (nazwy są sugestywne) #define FP_CELL 0 #define FP_FLOAT 1 #define FP_STRING 2 #define FP_ARRAY 4 Dodanie argumentu forwardu polega na dopisniu jego typu po przecinku //sma biblioteki CreateMultiForward ( "nic_sie_nie_stalo", ET_IGNORE, FP_CELL, FP_FLOAT); //w pliku .inc forward nic_sie_nie_stalo(id, Float:fTime); MultiForwardEx Jest to wersja kompatybilna z pluginami AMX. Nie będę się tym zajmował, szczegóły w pliku amxmodx.inc. OneForward Druga możliwość to forward przeznaczony wyłącznie dla jednego pluginu. /** * Rejestruje forward dostępny dla pojedynczego pluginu * * @param plugin_id Id pluginu * @param name[] Nazwa publicznej funkcji * @param ... Parametry * @return uchwyt (liczba całkowita) */ CreateOneForward ( plugin_id, const name[], ... ) Nie ma tu opcji stopu, bo tylko jeden, konkretny plugin może wykonać forward i zwróci on równie konkretną wartość. plugin_id to id zwrócone przez funkcję find_plugin_byfile(const pname[]);albo....Ciekawym rozwiązaniem jest połączenie funkcji natywnej z forwardem w ten sposób. Wyobraźmy sobie rdzeń modu, który pozwala dodawać itemy w osobnych pluginach. Rdzeń ten udostępnia natywną funkcję register_item( /*parametry*/), która zapisuje informacje i tworzy właśnie pojedynczy forward powiedzmy: forward get_item(id) ten osobny plugin będzie czekał na sygnał, gdy gracz zdobędzie ten przedmiot. Wygodne prawda? Zwłaszcza, że id pluginu to jeden z parametrów funkcji obsługującej natyw.Parametry jak przy MultiForward 3. Wywołanie Pora wysłać sygnał wywołania forwardu. /** * Wywołuje wskazany forward * * @param forward_handle Wartość zwrócona przez Create(One|Multi)Forward * @param &ret Wartość zwrócona przez wywołane forwardy przekazana przez referencję * @param ... Dokładnie tyle parametrów i takich typów jak podaliśmy przy tworzeniu * Dane zostaną przekazane do funkcji oczekujących na forward * @return 1 jeśli wywołano jakąś funkcję oczekującą, 0 jeśli nie */ ExecuteForward ( forward_handle, &ret, ... ) Przykład: new gFW; public plugin_init(){ gFW = CreateMutliForward("jakies_zdarzenie", ET_CONTINUE, FP_FLOAT, FP_CELL, FP_STRING); } public plugin_cfg(){ new iRet; ExecuteForward(gFW, iRet, 3.14, -5, "Pi"); } Tak podane parametry są jak najbardziej w porządku. Inaczej ma się sprawa z type FP_ARRAY. Nie podajemy bezpośrednio tablicy, ale rezultat funkcji /** * Przygotowuje tablicę do przekazania do forwardu * * @param array[] Tablica wejściowa * @param size Ilość komórek * @param copyback Czy tablica zmieniona przez funkcje oczekującą ma wrócić */ PrepareArray(array[], size, copyback=0 ) Ostatni parametr jest dosyć ciekawy. Wynika z niego, że oprócz podania danych do forwardu możemy także z niego uzyskać. Ustawiając 0 mamy normalne przekazanie, podając 1 funkcje oczekujące będą pracować niejako na tej tablicy. new gFW; public plugin_init(){ gFW = CreateMutliForward("jakies_zdarzenie", ET_CONTINUE, FP_CELL, FP_ARRAY); } public plugin_cfg(){ new data[2]; data[0] = 0; data[1] = 1; new iRet; ExecuteForward(gFW, iRet, 0, PrepareArray(data, 2, 1)); //data[0] == 0? możliwe, że już nie! } 4. Przykłady w załączniku plik udostępniający i korzystający z forwardu w jednym pliku odzielone kreskami ex1 - tylko wywołanie ex2 - z analizą z wyniku (istotne co funkcje oczekujące zwracają) ex3 - przekazywanie tablicy ex4 - przekazywanie tablicy i powrót wyniku Autor: R3X | amxx.pl
  3. Zmienne - Co I Jak? Po pierwsze - co to jest zmienna? Najprościej ujmując zmienna jest to obszar ulokowany w pamięci komputera przechowywujący dane różnego typu np. index gracza, informacje o aktualnej broni, życiu, armor etc. Można na nich wykonywać przeróżne operacje np. pre/post de/inkrementacja(zwiększenie/zmniejszenie o 1) dodawanie, mnożenie, dzielenie, odejmowanie itp. Przy ich tworzeniu automatycznie ustawiane są na 0( nie przechowywują żadnych danych, są po prostu puste) chyba, że zechcemy inaczej dopisując po nazwie "= wartość". ---------------------------------------------------------------------------------------------------------------------------------- Tworzeniu zmiennych są przypisane trzy pojęcia, mianowicie: Deklaracja: Po prostu utworzenie zmiennej, bez nadawania jej wartości: new zmienna; Inicjacja: Pierwsze przypisanie wartości do zmiennej po jej utworzeniu: new zmienna; zmienna = 1; Definicja: Jednoczesne zadeklarowanie i zainicjowanie zmiennej: new zmienna = 2; ---------------------------------------------------------------------------------------------------------------------------------- W Pawnie można spotkać następujące typy zmiennych: Integer: Zmienna przechowywująca dowolne liczby całkowite np. 1, 2, 124, 553562 i wszystkie inne. Ich deklaracja jest bardzo prosta: new zmienna; Float: Zmienna przechowywująca liczby zmiennoprzecinkowe np. 3.5, 7.0, 2.1. Deklaracja: new Float:zmienna String: Zmienna przechowywująca string - ciąg znaków. Po nazwie wystarczy dodać dwa nawiasy(lub więcej w zależności jaką tablice chcemy stworzyć) Deklaracja: new zmienna[ilosc_znakow_tablicy]; Bool: Tzw. zmienna logiczna, która przechowuje tylko wartość true(1), lub false(0). Zazwyczaj używane do tego, żeby określić czy coś jest włączone, lub nie. Deklaracja: new bool:zmienna; Stock: Wiele osób używa je, ale tak naprawdę nie wie jak one działają. Zmienne te są tworzone tylko wtedy, jeżeli są używane, w innym wypadku kompilator je ignoruje. Zazwyczaj używane w plikach nagłówkowych .inc . Deklaracja: stock zmienna; ---------------------------------------------------------------------------------------------------------------------------------- Operacje na zmiennych: Jest możliwych kilka sposobów. Pierwszy to umieszczenie znaku dodawania przed znakiem równości. zmienna += wartość Zostanie ona powiększona o podaną wartość. Sposób drugi: zmienna = zmienna + wartość Zostaje pobierana aktualna wartość zmiennej i o ile ma zostać powiększona. Zamiast plusa można użyć innych znaków np. odejmowania(-), mnożenia(*), dzielenia(/), dzielenia z resztą(%) Inkrementacja i Dekrementacja ---------------------------------------------------------------------------------------------------------------------------------- Stałe: Działają tak samo jak zmienne, lecz zmienną ich nie można nazwać gdyż byłaby to kompletna sprzeczność. Różnią się tym, że poprzez cały czas mają jedną wartość, która zostanie im przypisana, nie można na nich wykonywać żadnych operacji oprócz pobierania ich wartości. Przy tworzeniu przed nazwą trzeba dodać przedrostek 'const' Makrodefinicje: Bardzo podobne do zmiennych, działają na zasadzie "niech X będzie Y". Tak więc jeżeli do makrodefinicji X przypiszemy Y każdorazowe wpisanie w kodzie X skutkuje wywołaniem Y. Programiści używają ich najczęściej aby zaoszczędzić sobie wpisywania długich nazw funkcji, lub ścieżek do plików. Nie ma ograniczeń co do typu przechowywanych w nich danych. Tworzenie: #define NAZWA_MAKRODEFINICJI KOD_KTORY_MA_ONA_ZASTEPOWAC Przykład: #define func1 server_exec() ---------------------------------------------------------------------------------------------------------------------------------- Widoczność zmiennych: Występują dwa typy zmiennych jeżeli chodzi o ich widoczność - zmienne lokalne i globalne. Zmienne globalne są tworzone poza wszystkimi funkcjami, najczęściej na początku kodu pod dyrektywami(dla zachowania estetyki) i można je używać w każdym miejscu. Zmienne lokalne są przeciwieństwem - deklarowane wewnątrz jakieś funkcji i używanie tylko w niej. Autor: darkman Źródło: amxx.pl
  4. Często w pluginach widać taką konstrukcję #define SOME_TEXT "text" jednak jest to bardzo złe podejście ale można je łatwo naprawić Najpierw co się dzieje przy użyciu define preprocesor podczas przeszukiwania naszego kodu każde wystąpienie SOME_TEXT podmieni na "text". Potem przychodzi etap kompilacji i teraz każde wystąpienie ciągu znaków nie przypisanego do żadnej zmiennej ( tak zwane hardcoded ) czyli w naszym przypadku "text" zostanie dodane do sekcji DAT ( tam trzymane są wszystkie zmienne globalne i właśnie ciągi znaków ) . Inaczej mówiąc jeśli użyjemy 20 razy SOME_TEXT to "text" zostanie dodane do sekcji DAT 20 razy. Kompilator w żaden sposób tego nie optymalizuje. I tak jest z każdym ciągiem znaków który jest hardcoded. Tak jak mowiłem możemy to łatwo naprawić. Jeśli zamiast define użyjemy new const SOME_TEXT[] = "text";i będziemy używać tej stałej zmiennej to wszystkie odwołania do niej będą polegały na odwołaniu się do tego samego adresu ( w pawn wszystkie tablice są przekazywane przez referencje ) Podsumowując ciąg znaków "text" wyląduje w sekcji DAT tylko raz i wszystkie odwołania do zmiennej SOME_TEXT będą działać na tym samym ciągu/miejscu w pamięci By: DarkGL
  5. Witajcie, Przedstawiam Wam stock dla ColorChatu fix. Dlaczego fix? Zacznijmy od budowy jego. ColorChat(index, color_type, msg, any:...) index - index gracza color_type - kolor wiadomości msg - wiadomość any:... - dodatkowe rzeczy powiązane z msg, np. static name[33] name = get_user_name(index, name, charsmax(name)) ColorChat(index, GREEN, "Gracz %s", name) Jeśli index jest równy 0, a to oznacza, że wiadomość wysyła się do każdego na serwerze, color_type jest pobierany zazwyczaj od gracza, które ma najmniejsze ID. Jeśli mamy HLTV lub bota, to pobierze właśnie index od niego i przez to jeśli color_type damy taki, który jest zależny od teamu, wiadomość będzie się pojawiać niestety na szaro, bo jak wiadomo szary kolor to spectator, a HLTV, boty itd. znajdują się na spekcie. Aby temu zapobiec, należy użyć albo stocku albo pętli. Jeśli chcemy pętlę, wystarczy: for(new i=1, maxPlayers=get_maxplayers(); i if(is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i)){ static name[33] name = get_user_name(i, name, charsmax(name)) ColorChat(i, GREEN, "Fragujemy.com to swietne serwery! Wyprobuj i Ty^x03 %s", name)); } } Jak zauważyć można, Msg[] można formatować za pomocą formy szesnastkowej czyli ^x03, ^x01, ^x04 ( przeczytaj wątek -> http://fragujemy.com/ColorChat ) Gdybyśmy nie zastosowali wyżej wymienionej pętli, tam gdzie sformatowaliśmy tekst formatem szesnastkowym (^x03), będzie niestety wyświetlał się nick gracza na szaro. Po zastosowaniu pętli for wszystko będzie jak należy. Natomiast ciągłe robienie pętli for jest dość uciążliwe, związku z tym udostępniam stock: stock ColoredPrint(const Msg[], const any[]) { for(new i=1, maxPlayers=get_maxplayers(); i if(is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i)){ ColorChat(i, GREEN, Msg, any); } } } Pamiętaj, że na samym początku musi się znaleźć: #include <colorchat> ! Msg[] - wiadomość any:... - cała reszta To tyle; wykonanie: Nesty
  6. Niedługo się pojawi 4.0.
  7. Nie dodałbym: - zm_scary_house_zk (powiem coś rogalowi, Ty też wiesz raducha o co chodzi); - zm_defense (mamy zm_defense2) całą resztę znam oprócz dust2-nieve i huntercrazy, ale jestem za dodaniem.
  8. Filmik? Jak to piosenka..
  9. Patrz na to:
  10. Nie ma się z czego naśmiewać generalnie, ona niedosłysząca i ten tłuk zamiast się wypytywać, to by już tam straż posłał czy cokolwiek. Ale z drugiej strony, przepisy..
  11. Komendant wojewódzki ma przeprosić staruszkę. Bo "ktoś wykradł nagranie" Przeprosiny od komendanta wojewódzkiego należą się starszej pani z woj. lubuskiego, która dzwoniła z prośbą o interwencję pod numer alarmowy. Nagranie wyciekło do internetu. 85-letnia dziś pani Jadwiga, która z powodu problemów ze słuchem, miała kłopot z porozumiewaniem się przez telefon, stała się obiektem niewybrednych komentarzy w sieci. Wyrok - który na razie nie jest prawomocny - opisuje "Gazeta Lubuska". Jak mówi w rozmowie z "Gazetą Lubuską" adwokat pani Jadwigi, sąd uznał, że policja udostępniając rozmowę pani Jadwigi z dyżurnym, naruszyła dobra osobiste kobiety. Zasądzono przeprosiny, nie uwzględniono natomiast wniosku o kilkadziesiąt tysięcy złotych odszkodowania, których pozywająca domagała się za ośmieszenie jej. Pani Jadwiga dzwoniła na numer alarmowy komendy w Żarach we wrześniu 2009 roku. Na jej polu, w pobliżu domu, płonęła sterta siana. Kobieta od dawna choruje, a z racji sędziwego wieku słabo słyszy. To dlatego, z przyjmującym zgłoszenie dyżurnym policji, kompletnie nie mogła się dogadać. Dialog słuchany przez osoby postronne, mógł brzmieć komicznie. Kilka miesięcy później nagranie - zawierające również dane kobiety, włącznie z adresem - pojawiło się na kilku społecznościowych serwisach. Do linków podłączano złośliwe komentarze internautów, kpiących z niedosłyszącej staruszki. Na domowy adres kobiety zaczęły nadchodzić kartki od fanów "babci od styrty”. Córka kobiety tłumaczy, że o pani Jadwidze plotkowano w miejscowości, w której mieszka, ludzie puszczali sobie nagranie. - Policjanci cyrk sobie z tego zrobili - denerwuje się córka. Jak mówiła w rozmowie z "Gazetą Lubuską", policja twierdziła podczas rozprawy, że nagranie zostało wykradzione z komendy. Prawnik reprezentujący panią Jadwigę informuje, ze będzie odwoływał się od części orzeczenia dotyczącej zadośćuczynienia. Chodzi o ten filmik:
  12. Nieoficjalna data wydania: 21.01.2013r czyli poniedziałek.
  13. up@ Dodano kilka rzeczy do wzoru.
  14. Uliczny Kombajn : Golenie miejsc intymnych
  15. GET

    [KOSZ] Skarga na h@

    Problem rozwiązany. Autor wątku przeprosił, bo rzeczywiście ten wątek to nieporozumienie.
  16. Witajcie, Pukawka tłumaczy, że problemy wynikające dzisiaj..: Więc Pukawki nie jest to dokładna wina, tak jak mówiłem.
  17. GET

    [KOSZ] Skarga na h@

    Nie rozumiem, zadajesz czasem nieprzemyślane pytania, które nijak mają się do sytuacji. Skoro Cię prosiłem o coś, to się na tym skup człowieku! Przez takich ludzi jak Ty odechciewa się pracy i musimy marnować czas na właśnie tego typu pytania i tematy. Dla mnie temat jest zbędny, bo ewidentnie zawiniłeś Ty, a skoro pomoc odrzucasz, to już niestety nie moja wina. Wysłałeś SMS z błędną treścią, jeśliby okazało się, że rzeczywiście wysłałeś, to powinieneś mieć wiadomość SMS od cashbill zaraz po złożonej reklamacji przeze mnie - o czym Cię poinformowałem! - i byś przyjął ten kod czy jak to tam jest z tym przysłanym SMSem, to by wpłata była. Widocznie: - podałeś błędny nr telefonu - kłamiesz, że wysłałeś SMS Po zaksięgowaniu wpłaty, która znajdować powinna się w portfelu, powinieneś wybrać czy chcesz podstawowy czy rozszerzony. Rozszerzony ma więcej funkcji, droższy jest, trwa krócej od podstawowego. Więc na logikę, skoro nie ma wpłaty w portfelu = nie ma VIP-a. Proste? Proste! Więc nie rozumiem zadanego pytania; skup się na konkretnej sprawie, a nie pobocznych, które nie mają sensu w temacie. @@ Dodam coś jeszcze. Z doświadczenia wiem, że tego typu tworzenie problemów na forum ogólnym to próba przedstawienia błędu ewidentnego ze strony usługodawcy czyli z naszej strony, podczas kiedy to jest wina tylko i wyłącznie usługobiorcy czyli Twoja - mateuszn56. Z nas drogi chłopcze nie zrobisz oszustów, jesteśmy uczciwi, rzetelni i nie możemy odpowiadać za błędy niewynikające z naszej winy; jeśli taki motyw kierujesz, to niestety będziemy musieli pozwać tego typu działania. Dla mnie jest to też próba wyłudzenia usługi.
  18. GET

    [KOSZ] Skarga na h@

    Po 1. Co ta skarga ma tutaj wnieść? Po 2. Co H@ mają wspólnego z Twoją głupotą? Po 3. Wyjaśnijmy sytuację: - wysłałeś błędnie SMS-a, o czym poinformowałeś mnie i napisałeś, że zamiast w treści wpisać "ag pukawka" to wpisałeś "Ag pukawka" - czyli inaczej błędna treść z winy usługobiorcy; - następnie poprosiłem o Twój nr telefonu i wszelkie dane tego SMS-a - otrzymałem - kolejna rzecz zgłosiłem sprawę (reklamację) w tej sprawie do Pukawki - napisałem do Ciebie na PW: było to "Wczoraj 12:07" wysłane. Nie dostałem żadnej odpowiedzi z Twojej strony, a potwierdzenie dostarczenia reklamacji: Więc winić można tylko i wyłącznie Ciebie za głupotę, brak ogarnięcia. Skoro ja Ci napisałem o reklamacji, to jakim prawem żądasz sobie na PW VIP-a rozszerzonego, kiedy wpłaty w portfelu nie ma i nie współpracujesz?
  19. GET

    Wprowadzamy zmiany ? ;)

    Mogę dodać de_tuscan, nie stanowi to problemu.
  20. Zmieniona zasada "postowa", mianowicie można przeklinać, ale nie nadmiernie.
  21. Odradzanie się, a istnieje coś takiego? 4.0 jest to po prostu kolejna odsłona serwera, cały czas taka sama tylko ulepszona i bardziej optymalna. Nie zamierzamy nic usuwać co jest teraz, a dodać lub zmodyfikować. PS: Bugów tutaj nie zgłaszamy.
  22. GET

    [KOSZ] Obietnice Tuskowe

    Obietnice Tuskowe hahaha, najlepsze: 1:18 - gdzie Tusk doprowadził kobietę do orgazmu xD
  23. Szymon Majewski SuperSam - odc. 4 (NIEWĄSKI)
  24. GET

    Wprowadzamy zmiany ? ;)

    Nowy mapcycle: de_dust2 de_inferno de_nuke de_train de_dust2 de_cpl_mill de_nuke cs_office de_inferno de_dust de_dust2 de_train de_cbble de_dust2002 de_inferno cs_assault de_dust2 de_nuke de_kabul de_aztec Czas trwania mapy: 24 minut. Poprawione femaly sound.
  25. GET

    [KOSZ] AMXBans

    Pomyśl logicznie. Po 1. Jak można wpisywać inne dane na serwerze i inne dane do AMXBans przy instalacji? Bo ja tego nie rozumiem. Baza MySQL ma jedne i te same dane, a nie kilka odmian. Po 2. Skoro AMXBans w całości zainstalował się na konkretnej bazie, to wiadome że składniki jego znajdują się na konkretnej bazie. Więc nie rozumiem powyższego pytania, jak ma działać na innej bazie AMXBans, skoro tam nie ma składników zainstalowanych? Serwer musi mieć połączenie z bazą, na której jest zainstalowany AMXBans. Czy gdziekolwiek widziałeś, aby do AMXBans web była inna baza, a od serwera też inna? Mijałoby się to z celem. Moja rada: nie zabieramy się za coś, czego nie rozumiemy. Należy pomyśleć z logicznego punktu widzenia, a nie punktu paranormalnego.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Polityka prywatności