Skocz do zawartości

PrzMas

Użytkownik
  • Zawartość

    878
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    55

Aktywność reputacji

  1. Like
    PrzMas otrzymał reputację od On.rejestracja powrót...   
    Trzymanie kasy i score w zmiennych globalnych ma zastosowanie przy wykrywaniu cheater'ów.
    Przerabianie gamemoda pod takie zmienne może być uciążliwe, ponieważ trzeba zadbać,
    aby przy każdym ruchu kasy czy score odpowiednia wartość została zapisana do zmiennych.
    W podanym przez ciebie kodzie już widać, że są niekonsekwencje w tej kwestii - używasz ich nie tak jak trzeba.
    Równie dobrze te zmienne zamiast globalne mogłyby być lokalne, bo właśnie tak ich używasz.
     
    W zasadzie to czyszczenie zmiennych (tych dwóch) możesz wywalić, bo jest bezużyteczne, z uwagi na to, że
    przy wczytywaniu z pliku wartości zmiennych są "nadpisywane" nowymi danymi, natomiast gdy gracz się łączy to kasę i score ma zawsze na 0.
     
    Twój problem może wynikać z tego, co jest napisane na pomarańczowym tle tutaj. I być może dlatego warto się zastanowić nad
    trzymaniem pewnych wartości w zmiennych, ale to musi być dobrze napisane, bo inaczej niczemu nie służy.
  2. Like
    PrzMas przyznał reputację dla Beata_Szydlo_2015Spam errorów przy wczytywaniu z bazy   
    ` zmien na ' 
  3. Like
    PrzMas otrzymał reputację od Cliff32Jak zrobić "odliczanie" do ukończenia timera?   
    // globalnie new timer= -1; new czas= 0; // obecny postęp new max= 60; // 100% czasu do końca w sekundach // to też globalnie forward Odliczanie(); public Odliczanie() { new procent= (++czas *100) /max; // wykorzystanie procentów w TextDraw'ach albo gdzieś } // uruchomienie odliczania gdzieś w kodzie timer= SetTimer("Odliczanie", 1000, true); Podobno te Timer'y w samp'ie nie są zbyt dokładne, ale to detal. Można poczytać w internetach o jakiejś poprawce czy cuś.
  4. Like
    PrzMas otrzymał reputację od TylkoSiePytam3dText przy pojeździe dopiero gdy wsiądne   
    A jak wysiądniesz to ten Text3D znika czy nadal jest?
  5. Like
    PrzMas otrzymał reputację od TylkoSiePytam3dText przy pojeździe dopiero gdy wsiądne   
    Może przy tworzeniu tego 3DTextLabel-a trzeba podać w parametrach (tamp gdzie masz zera) pozycję pojazdu?
    Wtedy ten Label będzie się inaczej zachowywał.
  6. Like
    PrzMas otrzymał reputację od TylkoSiePytam3dText przy pojeździe dopiero gdy wsiądne   
    No to pozostaje modlitwa albo...
    http://wiki.sa-mp.com/wiki/Create3DTextLabel
     
    Dlaczego dałeś "DrawDistance" na 1.0 ??
    Nie wiem jak ty, ale ja się nie dziwię, że to tak działa jak działa xD
  7. Like
    PrzMas otrzymał reputację od TylkoSiePytam3dText przy pojeździe dopiero gdy wsiądne   
    Nie odmóżdżaj ludzi, to jest błąd wychowawczy - pójdziesz na karnego jeża ;D
    A gościu jak zepsuł to niech sam wpadnie na to jak to naprawić, jak nie ruszał to pewnie było dobrze xD
  8. Like
    PrzMas otrzymał reputację od Wojtek020699Dysk HDD a SSD   
    Dysk SSD jest na SATA i w dodatku pełniej je wykorzystuje niż dysk HDD.
    Mam dysk HDD na SATA III, teoretyczna przepustowość 600 MB/s, a w praktyce ~40 MB/s przy zapisie to już jest super.
    Obecne w sprzedaży SSD mają ze 128 GB, może i więcej (256 GB) i są drogie.
  9. Like
    PrzMas otrzymał reputację od DejvKomenda   
    Dodaj zmienne globalne:
    new bool: PlayerDuty[MAX_PLAYERS]; new PlayerDutyTick[MAX_PLAYERS]; W OnPlayerConnect() piszesz:
    PlayerDuty[playerid]= false; Po wpisaniu komendy '/aduty' i sprawdzeniu uprawnień:
    if (PlayerDuty[playerid] == false) { PlayerDuty[MAX_PLAYERS]= true; PlayerDutyTick[playerid]= GetTickCount(); // wiadomość - na służbie } else { PlayerDuty[MAX_PLAYERS]= false; // wiadomosć - po służbie // czas służby = GetTickCount() - PlayerDutyTick[playerid]; (milisekundy) } Ogólnie do czasu używam innych funkcji zamiast GetTickCount(), bo podobno z tą jest problem, gdy serwer jest długo uruchomiony (przekr. zakr. integer).
     
    Funkcja zwracajaca aktualny czas (wyrażony w ilości sekund od godz. 00:00:00):
    stock time_now() // tą funkcją można zastąpić GetTickCount() { new h, m, s; gettime(h, m, s); return h*60*60 + m*60 +s; } Przy powyższej funkcji pojawia się problem, gdy obliczamy różnicę pomiędzy jednym czasem a drugim, na co proponuję poniższą funkcję:
    stock time_int(from_tick, to_tick) // time interval { if ( (0 <= from_tick < 86400)&&(0 <= to_tick < 86400) ) { return (from_tick < to_tick)?(to_tick-from_tick):(86400-from_tick+to_tick); } // miałem tu błąd xD else return -1; } Funkcja zwraca -1, gdy podano nieprawidłowy czas. Różnica jest zwracana w sekundach.
     
    Czas służby (w sekundach):
    new DutyTime= time_int(PlayerDutyTick[playerid], time_now());
  10. Like
    PrzMas otrzymał reputację od kxnrvdOdtwarzanie muzyki pod rząd.   
    Nie będę taki i się podzielę:
    stock Stacje[][][]= { { {"OpenFM: Impreza"}, {"http://gr-relay-lb.gaduradio.pl/2"} }, { {"OpenFM: 500 Party Hits"}, {"http://gr-relay-lb.gaduradio.pl/81"} }, { {"OpenFM: Trance"}, {"http://gr-relay-lb.gaduradio.pl/7"} }, { {"OpenFM: House"}, {"http://gr-relay-lb.gaduradio.pl/5"} }, { {"OpenFM: Klub 90"}, {"http://gr-relay-lb.gaduradio.pl/8"} }, { {"OpenFM: Top 20 Hip-Hop"}, {"http://gr-relay-lb.gaduradio.pl/98"} }, { {"OpenFM: Hip-Hop Ulica"}, {"http://gr-relay-lb.gaduradio.pl/92"} }, { {"OpenFM: 500 Hip-Hop Hits"}, {"http://gr-relay-lb.gaduradio.pl/84"} }, { {"OpenFM: Hip-Hop PL"}, {"http://gr-relay-lb.gaduradio.pl/24"} }, { {"OpenFM: Hip-Hop Stacja"}, {"http://gr-relay-lb.gaduradio.pl/23"} }, { {"OpenFM: Hip-Hop Freszzz"}, {"http://gr-relay-lb.gaduradio.pl/93"} }, { {"OpenFM: Hip-Hop klasyk"}, {"http://gr-relay-lb.gaduradio.pl/107"} }, { {"OpenFM: 100% O.S.T.R."}, {"http://gr-relay-lb.gaduradio.pl/47"} }, { {"OpenFM: 100% Eminem"}, {"http://gr-relay-lb.gaduradio.pl/85"} }, { {"OpenFM: 500 R'n'B Hits"}, {"http://gr-relay-lb.gaduradio.pl/26"} }, { {"OpenFM: Soul Cafe"}, {"http://gr-relay-lb.gaduradio.pl/18"} }, { {"OpenFM: MTV Rocks"}, {"http://gr-relay-lb.gaduradio.pl/77"} }, { {"OpenFM: Top 20 Rock"}, {"http://gr-relay-lb.gaduradio.pl/99"} }, { {"OpenFM: 500 Rock Hits"}, {"http://gr-relay-lb.gaduradio.pl/82"} }, { {"OpenFM: Polski Rock"}, {"http://gr-relay-lb.gaduradio.pl/29"} }, { {"OpenFM: Polski Rock Classic"}, {"http://gr-relay-lb.gaduradio.pl/45"} }, { {"OpenFM: Rock Ballady"}, {"http://gr-relay-lb.gaduradio.pl/61"} }, { {"OpenFM: Classic Rock"}, {"http://gr-relay-lb.gaduradio.pl/32"} }, { {"OpenFM: American Rock"}, {"http://gr-relay-lb.gaduradio.pl/40"} }, { {"OpenFM: Punk Rock"}, {"http://gr-relay-lb.gaduradio.pl/78"} }, { {"OpenFM: 500 Heavy Hits"}, {"http://gr-relay-lb.gaduradio.pl/54"} }, { {"OpenFM: Classic Metal"}, {"http://gr-relay-lb.gaduradio.pl/108"} }, { {"OpenFM: Ciężkie Brzmienia"}, {"http://gr-relay-lb.gaduradio.pl/13"} }, { {"OpenFM: 100% Metallica"}, {"http://gr-relay-lb.gaduradio.pl/62"} }, { {"OpenFM: 100% Depeche Mode"}, {"http://gr-relay-lb.gaduradio.pl/74"} }, { {"OpenFM: 500 Alternative Hits"}, {"http://gr-relay-lb.gaduradio.pl/55"} }, { {"OpenFM: Alt Freszzz"}, {"http://gr-relay-lb.gaduradio.pl/6"} }, { {"OpenFM: Alt Club"}, {"http://gr-relay-lb.gaduradio.pl/9"} }, { {"OpenFM: Alt Cafe"}, {"http://gr-relay-lb.gaduradio.pl/34"} }, { {"OpenFM: Alt PL"}, {"http://gr-relay-lb.gaduradio.pl/36"} }, { {"OpenFM: Alt Classic"}, {"http://gr-relay-lb.gaduradio.pl/43"} }, { {"OpenFM: 500 Electronic Hits"}, {"http://gr-relay-lb.gaduradio.pl/94"} }, { {"OpenFM: Miejska Stacja"}, {"http://gr-relay-lb.gaduradio.pl/106"} }, { {"OpenFM: Dubstep"}, {"http://gr-relay-lb.gaduradio.pl/68"} }, { {"OpenFM: Drum'n'Bass"}, {"http://gr-relay-lb.gaduradio.pl/41"} }, { {"OpenFM: Chillout"}, {"http://gr-relay-lb.gaduradio.pl/33"} }, { {"OpenFM: 500 Reggae Hits"}, {"http://gr-relay-lb.gaduradio.pl/30"} }, { {"OpenFM: Polish Reggae Stylee"}, {"http://gr-relay-lb.gaduradio.pl/22"} }, { {"OpenFM: Retro Cafe"}, {"http://gr-relay-lb.gaduradio.pl/25"} }, { {"OpenFM: Smooth Jazz"}, {"http://gr-relay-lb.gaduradio.pl/60"} }, { {"OpenFM: Muzyka Klasyczna"}, {"http://gr-relay-lb.gaduradio.pl/67"} }, { {"OpenFM: Muzyka Filmowa"}, {"http://gr-relay-lb.gaduradio.pl/38"} } };
  11. Like
    PrzMas otrzymał reputację od kxnrvdcztery warningi trudne w rozwiązaniu   
    local variable ... shadows a variable at a preceding level

    Masz zmienną globalną i lokalną o tej samej nazwie.
  12. Like
    PrzMas otrzymał reputację od kxnrvdcztery warningi trudne w rozwiązaniu   
    Jeśli chodzi o 2 pierwsze linijki to wyglądają ok. Może gdzieś nad nimi brakuje średnika, klamry albo nawiasu.
    A 3 linijka:
    else { format(string, sizeof(string), "**Gracz o nicku %s(id: %d), nie siedzi w pojeździe!", PlayerName, id); SendClientMessage(playerid, -1, string); }
  13. Like
    PrzMas przyznał reputację dla Eryk245PLEryczal-DM   
    Witajcie
    Kiedyś robiłem serwer Eryczal-DM, ale serwer się skończył i daję wam mojego gamemode całkowicie za darmo!
     
    Co w nim jest?
    W tym gamemodzie jest wiele różnych i ciekawych rzeczy, które możesz mieć na serwerze. Między innymi są to:
    -Reklamy, które wyświetlają się co jakiś czas (RandomMessages)
    -Rejestracja oraz logowanie, zapis i wczytywanie kont
    -Sklepy z brońmi, pojazdami...
    -System poziomów i doświadczenia (autorski)
    -Dostępne do kupienia mnożniki doświadczenia i pieniędzy
    -System administratorów (w tym VIP)
    -Oraz wiele więcej!
     
    Trochę info...
    Gamemode był pisany w 100% przeze mnie od 0. Nie jest to kolejny gamemode, który jest sklejony z rzeczy kilku gamemodów i "jest napisany od 0". W grze nie ma zabaw typu /onede itp, ale można je łatwo pobrać jako filterscript. Podziękowania dla bartiss122 w tworzeniu textdrawów.
     
    Screeny





    Download
    http://www.mediafire.com/download/auj1zyzea8kqqz5/Eryczal-DM.zip
    Już wkrótce lepsza i nowa wersja gamemoda...
     
    Zapraszam i życzę miłej gry
  14. Like
    PrzMas przyznał reputację dla Eryk245PLRandomMessages [Reklama]   
    Witajcie
    To znowu ja, a tym razem mam dla was FilterScript, a właściwie to skrypt na RandomMessages czyli Losowe Wiadomości, które są wyświetlone w TextDrawie.
    Informacje
    W tym prostym skrypcie jest TextDraw z tłem, w którym wyświetlają się losowe wiadomości, które sobie wpiszemy. Skrypt nie jest długi, jest to prosty skrypt na pokazywanie losowych wiadomości, który nawet początkujący programista może zrozumieć. Na ten czas zrobiłem w nim 5 wiadomości, ale jak już pisałem w tym prostym skrypcie nawet nowicjusz potrafi dodać swoje wiadomości.
    Autorzy
    Ten FilterScript to pomysł bartiss122.
    bartiss122 zrobił textdrawy i tło, a ja resztę.
    Mam nadzieję, że wam się spodoba
    Screeny


    *Prohibited
     
    Download
    http://www.mediafire.com/download/w77fy616i6d41p1/TDRandomMessages.zip
    Na zdjęciach jest angielska wersja, ale jest też wersja po polsku.
    Jeżeli chcesz inny styl TextDrawu napisz do mnie.
  15. Like
    PrzMas otrzymał reputację od komwboj[ROZWIĄZANY]Błąd przy kompilacji   
    = przypisanie wartosci do zmiennej
    == porownywanie dwoch wartosci
    ! negacja, przeciwna wartosc
    != wartosc zmiennej rozna od ...
  16. Like
    PrzMas otrzymał reputację od khykbarBledy w mysql i cofanie stat   
    Przy dodawaniu rekordow z mozliwym powieleniem klucza glownego uzy skladni INSERT IGNORE INTO, aby uniknac niepotrzebnych ostrzezen lub bledow. Poczytaj tez moze o ON DUPLICATE KEY UPDATE.
  17. Like
    PrzMas otrzymał reputację od RosolZKurWieluKonwerter   
    A ty chcesz gotowe funkcje na konwersje?
    Chcialem wstawic taki fajny moj include, ale mi ktos przeniosl do kosza.
    No ale tam mam gotowe funkcje konwertujace czas, napisane dla pawn.
    A zebys nie szukal zanadto: http://pastebin.com/fyVnfVWk
  18. Like
    PrzMas otrzymał reputację od ZbychuRychu[ROZWIĄZANY]błąd sscanf'a   
    Nie wiem co ty masz za sscanf() - może go zaktualizuj albo użyj strtok. A wszędzie indziej działa normalnie ten sscanf() ?
    Po prostu wygląda na to, że id gracza i id admina są nieprawidłowe, zobacz w logu czy nie sypie błędami o przekroczonym zakresie tablicy.
  19. Like
    PrzMas otrzymał reputację od ForgeTingProblem ze skonwertowaniem mapy Pro Evolucja   
    function heading differs from prototype - deklaracje funkcji (najczęściej forward i public) różnią się od siebie, ilością lub typami parametrów, ale w tym przypadku czytaj dalej
    symbol already defined: "strtok" - masz gdzieś 2 (lub więcej) razy funkcję 'strtok' - prawdopodobnie wystarczy z include wyrzucić (powinno załatwić błąd powyżej i ten ponizej)
    array sizes do not match, or destination array is too small - niezgodny rozmiar tablic, odwołanie do elementu tablicy wykraczającego poza jej rozmiar
  20. Like
    PrzMas otrzymał reputację od BoreKkomenda eye   
    Funkcja OnPlayerCommandPerformed() jest z jakiegoś plugina, prawdopodobnie brakuje ci pliku *.inc od dcmd.
    Możesz też nie dokładać tego pliku INC - napisz nagłówek tej funkcji u góry (zaraz nad nią) tyle, że zamieniając 'public' na 'forward' i średnik na końcu.
     
    A co do:
    error 017: undefined symbol "PlayerName"
    to używasz  zmiennej, która nie została zadeklarowana.
     
    warning 213: tag mismatch
    to jest niezgodny typ danych, prawdopodobnie chodzi o jeden z parametrów w wywołaniu funkcji
    albo np. do zmiennej typu 'Float' przypisujesz dane typu 'int' lub coś analogicznego.
  21. Like
    PrzMas otrzymał reputację od HardMCore[ROZWIĄZANY]Wybierałka/logowanie   
    Moze w OnPlayerRequestClass() brakuje na samym dole return 1; Jezeli to nie pomoze to na samym poczatku OnPlayerRequestClass() dodaj TogglePlayerSpectating(playerid, false);
  22. Like
    PrzMas otrzymał reputację od Belfer[ROZWIAZANE]Wykrywanie item'ku   
    for(new i= 0; i < sizeof(iName); i++)
    {
    if (!strcmp(iName, inputtext))
    {
    // znaleziony item o indeksie 'i'

    return 1;
    }

    // tutaj nie znaleziono odpowiadajacego item-u
    }
  23. Like
    PrzMas otrzymał reputację od PaweLGeoIp (baza danych)   
    Witam,
    Chciałbym podzielić się bazą danych z zakresami adresów IP oraz 2-cyfrowymi kodami państw i nazwami miejscowości dla tych zakresów.
    Wszystkie nazwy państw i miast zostały zamienione przeze mnie na angielskie odpowiedniki (np. Москва = Moscow, Łódź = Lodz), aby nie było problemów z kodowaniem i wyświetlaniem ich w SA-MP (lub gdzie indziej).
    Baza składa się z 2 tabel:
    1. tabela z adresami IP (4 448 792 rekordy, ~198,6 MB)
    - początkowe i końcowe IP zakresu (2 pierwsze pola) zapisane jest w postaci liczby dziesiętnej (szybsze przeszukiwanie);
    - 3 pole tabeli to 2-cyfrowy kod państwa;
    - 4 pole tabeli to nazwa miejscowości.
    2. tabela z państwami (249 rekordów, ~10,4 kB)
    - 1 pole tabeli zawiera 2 cyfrowy kod;
    - 2 pole tabeli zawiera nazwę państwa.
    Tabele są zapisane w plikach CSV. Z uwagi na to, że phpMyAdmin niezbyt radzi sobie z wczytaniem 4 mln rekordów naraz postanowiłem podzielić tą jedną tabelę na 45 plików po 100 tys. rekordów w każdym.
    Pobieranie:
    1. tabela z adresami IP zapisanymi normalnie np. "127.0.0.1" (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_a.zip
    2. tabela z adresami IP zapisanymi w postaci liczb (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_n.zip
    3. tabela z adresami IP zapisanymi w postaci liczb (podzielona): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_n_part.zip
    4. tabela z nazwami państw (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_cc.zip
    Strukturę tabeli z adresami IP (zapisanymi w postaci liczbowej) można utworzyć następującą kwerendą:
    CREATE TABLE IF NOT EXISTS geoip( ip1 INT(10) UNSIGNED NOT NULL UNIQUE, ip2 INT(10) UNSIGNED NOT NULL UNIQUE, cc CHAR(2) NOT NULL, city VARCHAR(64) NOT NULL ) ENGINE= MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci; Kwerenda tworząca tabelę z nazwami państw może wyglądać następująco:
    CREATE TABLE IF NOT EXISTS geoip_cc( cc CHAR(2) NOT NULL UNIQUE, country VARCHAR(64) NOT NULL ) ENGINE= MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci; Kwerenda zwracająca kod państwa, nazwę państwa oraz nazwę miejscowości prezentuje się następująco:
    SELECT geoip.cc,geoip_cc.country,city FROM geoip INNER JOIN geoip_cc ON(geoip.cc = geoip_cc.cc) WHERE (INET_ATON('127.0.0.1')+1 > ip1) AND (INET_ATON('127.0.0.1')-1 < ip2) LIMIT 1; W miejscach gdzie jest "127.0.0.1" należy wstawić interesujący nas adres IP, np. w Pawn za pomocą funkcji format().
    Podany kod łatwo można przerobić na filterscrip albo cokolwiek innego.
    Oto przykładowy skrypt: https://dl.dropboxusercontent.com/u/81934621/SA-MP/geoip_pawno_pl.zip
    W archiwum ZIP jest skrypt 'mysql.amx' i odpowiada on za połączenie z bazą - dane połączenia pobierane są z 'scriptfiles\mysql.ini'.
    Można napisać swoje łączenie się z bazą albo skorzystać z mojego - kodu nie udostępniam, bo jest zbyt prosty
    W skrypcie został użyty plugin: http://forum.sa-mp.com/showthread.php?t=56564
    Wszystko co udostępniłem może zostać wykorzystane w dowolny sposób.
    Co do autorstwa, to będę wdzięczny jak ktoś tam mnie gdzieś wspomni wraz z tym forum.
    Jeśli ktoś chciałby podziękować - nie bronię
  24. Like
    PrzMas otrzymał reputację od PaweLGeoIp (baza danych)   
    Witam,
    Chciałbym podzielić się bazą danych z zakresami adresów IP oraz 2-cyfrowymi kodami państw i nazwami miejscowości dla tych zakresów.
    Wszystkie nazwy państw i miast zostały zamienione przeze mnie na angielskie odpowiedniki (np. Москва = Moscow, Łódź = Lodz), aby nie było problemów z kodowaniem i wyświetlaniem ich w SA-MP (lub gdzie indziej).
    Baza składa się z 2 tabel:
    1. tabela z adresami IP (4 448 792 rekordy, ~198,6 MB)
    - początkowe i końcowe IP zakresu (2 pierwsze pola) zapisane jest w postaci liczby dziesiętnej (szybsze przeszukiwanie);
    - 3 pole tabeli to 2-cyfrowy kod państwa;
    - 4 pole tabeli to nazwa miejscowości.
    2. tabela z państwami (249 rekordów, ~10,4 kB)
    - 1 pole tabeli zawiera 2 cyfrowy kod;
    - 2 pole tabeli zawiera nazwę państwa.
    Tabele są zapisane w plikach CSV. Z uwagi na to, że phpMyAdmin niezbyt radzi sobie z wczytaniem 4 mln rekordów naraz postanowiłem podzielić tą jedną tabelę na 45 plików po 100 tys. rekordów w każdym.
    Pobieranie:
    1. tabela z adresami IP zapisanymi normalnie np. "127.0.0.1" (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_a.zip
    2. tabela z adresami IP zapisanymi w postaci liczb (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_n.zip
    3. tabela z adresami IP zapisanymi w postaci liczb (podzielona): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_n_part.zip
    4. tabela z nazwami państw (cała): https://dl.dropboxusercontent.com/u/81934621/geoip/geoip_cc.zip
    Strukturę tabeli z adresami IP (zapisanymi w postaci liczbowej) można utworzyć następującą kwerendą:
    CREATE TABLE IF NOT EXISTS geoip( ip1 INT(10) UNSIGNED NOT NULL UNIQUE, ip2 INT(10) UNSIGNED NOT NULL UNIQUE, cc CHAR(2) NOT NULL, city VARCHAR(64) NOT NULL ) ENGINE= MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci; Kwerenda tworząca tabelę z nazwami państw może wyglądać następująco:
    CREATE TABLE IF NOT EXISTS geoip_cc( cc CHAR(2) NOT NULL UNIQUE, country VARCHAR(64) NOT NULL ) ENGINE= MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci; Kwerenda zwracająca kod państwa, nazwę państwa oraz nazwę miejscowości prezentuje się następująco:
    SELECT geoip.cc,geoip_cc.country,city FROM geoip INNER JOIN geoip_cc ON(geoip.cc = geoip_cc.cc) WHERE (INET_ATON('127.0.0.1')+1 > ip1) AND (INET_ATON('127.0.0.1')-1 < ip2) LIMIT 1; W miejscach gdzie jest "127.0.0.1" należy wstawić interesujący nas adres IP, np. w Pawn za pomocą funkcji format().
    Podany kod łatwo można przerobić na filterscrip albo cokolwiek innego.
    Oto przykładowy skrypt: https://dl.dropboxusercontent.com/u/81934621/SA-MP/geoip_pawno_pl.zip
    W archiwum ZIP jest skrypt 'mysql.amx' i odpowiada on za połączenie z bazą - dane połączenia pobierane są z 'scriptfiles\mysql.ini'.
    Można napisać swoje łączenie się z bazą albo skorzystać z mojego - kodu nie udostępniam, bo jest zbyt prosty
    W skrypcie został użyty plugin: http://forum.sa-mp.com/showthread.php?t=56564
    Wszystko co udostępniłem może zostać wykorzystane w dowolny sposób.
    Co do autorstwa, to będę wdzięczny jak ktoś tam mnie gdzieś wspomni wraz z tym forum.
    Jeśli ktoś chciałby podziękować - nie bronię
×