Skocz do zawartości

PrzMas

Użytkownik
  • Zawartość

    878
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    55

Aktywność reputacji

  1. Like
    PrzMas otrzymał reputację od Mati_(POL)[ROZWIĄZANY]kalkulacje w argumencie   
    new objectid = (36842010 << 10) >>> 20; DestroyPlayerObject(0, objectid); Tak nie może być?
    Jeżeli dla poszczególnego argumentu funkcji nie ma określonego słowa const to wówczas kompilator będzie oczekiwał w miejscu tego argumentu zmiennej "lvalue". Wówczas w momencie wywołania funkcji w kodzie zostaną przekazane argumenty do funkcji, a tam gdzie będzie zmienna najpierw nastąpi jej odczyt (po adresie w pamięci), a następnie przekazanie jej wartości do funkcji jako argument.
    Jeżeli w nagłówku funkcji przed argumentem jest & to znaczy, że wartość zmiennej przekazywanej do tej funkcji może być (lub będzie) modyfikowana w trakcie wykonywania kodu znajdującego się wewnątrz niej. Wówczas jako argument przekazywany jest adres w pamięci danej zmiennej.
    Dla wyrażenia "++zmienna" najpierw następuje zwiększenie wartości zmiennej a dopiero po tym dostęp do niej i przekazanie jej wartości jako argument. W twoim przypadku najpierw powinny zostać wykonane operacje bitowe na wartości zmiennej a dopiero po tym dostęp do tej zmiennej (odczyt jej wartości i przekazanie jako argument dla funkcji), jednak dla operacji bitowych nie ma operatora działającego (kompilowanego) analogicznie do prefiksowej inkrementacji/dekrementacji.
    Kompilator ma dylemat czy do funkcji przekazywana jest zmienna czy wartość.
    Miał tak, ale edytował post
  2. Like
    PrzMas otrzymał reputację od DejvMighty-RP.net | Klasyk w nowym wydaniu!   
    2. Zabronione jest pisanie kilku wiadomości pod rząd w niedługim odstępie czasu, używaj opcji "modyfikuj".
    a) Podbijanie tematu dozwolone jest po 7 dniach od ostatniego postu, wyjątkiem jest dział "Problemy", gdzie czas ten skrócony jest do 48 godzin.
     
    Podzielone ze względu na ilość znaków, tak więc zostawiamy. Poza tym wystarczy zgłosić raz, a nie każdy post po kolei.  ~Inferno
  3. Like
    PrzMas otrzymał reputację od DejvMighty-RP.net | Klasyk w nowym wydaniu!   
    2. Zabronione jest pisanie kilku wiadomości pod rząd w niedługim odstępie czasu, używaj opcji "modyfikuj".
    a) Podbijanie tematu dozwolone jest po 7 dniach od ostatniego postu, wyjątkiem jest dział "Problemy", gdzie czas ten skrócony jest do 48 godzin.
     
    Podzielone ze względu na ilość znaków, tak więc zostawiamy. Poza tym wystarczy zgłosić raz, a nie każdy post po kolei.  ~Inferno
  4. Like
    PrzMas otrzymał reputację od reviser.[Zapowiedź] FunnyServer.pl   
    § III Posty
    2. Zabronione jest pisanie kilku wiadomości pod rząd w niedługim odstępie czasu, używaj opcji "modyfikuj".
    a) Podbijanie tematu dozwolone jest po 7 dniach od ostatniego postu, wyjątkiem jest dział "Problemy", gdzie czas ten skrócony jest do 48 godzin.
  5. Like
    PrzMas otrzymał reputację od Mario[ROZWIĄZANY]Przegrany czas na serwerze.   
    @Mario Toteż nie bez powodu się odezwałem, bo sam pisałem jakiś czas temu na tym forum o czymś, co może Ci się przydać, natomiast ze mnie ani magister informatyki ani matematyk ani programista - po prostu czasem trzeba sobie nad czymś samemu posiedzieć i pomyśleć.
    Na wejście zapisujesz do zmiennej per-player (np. PVar) aktualny czas unixowy pobrany za pomocą funkcji gettime, natomiast cała rzecz dzieje się na wyjściu, kiedy to wyliczasz różnicę pomiędzy aktualnym czasem (znów funkcja gettime) a tym zapisanym na wejściu, którą to [różnicę] możesz sobie z kolei przekonwertować/przeliczyć na czas sformatowany w postaci godziny, minuty, sekundy w taki sposób, jak Ci to napisali wyżej. W Twoim przypadku nawet nie musi Cię interesować jak ten czas unixowy jest generowany, istotą jest, że to jest aktualny czas (na moment wywołania tejże funkcji w kodzie) wyrażony w sekundach i tylko taka wiedza jest Ci potrzebna na taki Twój użytek, jak w tym temacie to opisałeś.
    Tak szczerze to jeżeli byłeś w stanie skonstruować te timer'y to powinieneś też poradzić sobie bez problemu z tą jedną funkcją gettime, tylko musisz popatrzeć i pomyśleć.
  6. Like
    PrzMas otrzymał reputację od Skipper[ROZWIĄZANY]Losowe tworzenie obiektów   
    Najprościej (matematycznie) będzie opisać na przykładzie prostokątnej/kwadratowej strefy.
    Otóż, aby wyznaczyć taką strefę to dla osi X i Y musisz określić minimalne i maksymalne położenie punktu tj. Xmin, Xmax, Ymin, Ymax.
    Wysokość dla danej strefy będziesz musiał określić ręcznie, dla każdej osobną, cała strefa najlepiej jakby miała jednakową wysokość w każdym jej miejscu - równy teren.
    Gdy już losujesz położenie to przyjmując, że Xmin < Xmax oraz Ymin < Ymax, będzie konieczne wylosowanie dwóch wartości, czyli tyle ile jest osi.
    pX = Xmin + random(Xmax - Xmin);
    pY = Ymin + random(Ymax - Ymin);
  7. Like
    PrzMas przyznał reputację dla grzegorz00[ROZWIĄZANY]xxx   
    Chcesz pomocy, a jak sam rozwiążesz problem to usuwasz cały temat, zostaw, aby inni mięli na przyszłość, podaj rozwiązanie. To forum nie jest tylko dla Ciebie.
  8. Like
    PrzMas otrzymał reputację od DaxLer[ROZWIĄZANY]Spam Tekstem   
    Chyba lepiej zmienną per-player, w której będzie zapisany czas albo znacznik czasowy ostatniego użycia pickup'a i przy każdym wywołaniu callback-a dać warunek sprawdzający ile czasu minęło od ostatniego użycia pickup'a i jeżeli więcej lub dokładnie te 20 sekund to się wyświetli, a jeśli nie to "return 1".
  9. Like
    PrzMas otrzymał reputację od DaxLer[ROZWIĄZANY]Spam Tekstem   
    @DaxLer Ja już nie umiem dokładniej, no chyba, że ucieknę się do najgłupszej metody - patrz poniżej (kod):
    public OnPlayerConnect(playerid) {   SetPVarInt(playerid, "lastpickup", gettime()); // zmienna nie będzie wynosiła 0, tego byśmy nie chcieli :) } public OnPlayerPickUpPickup(playerid, pickupid) {   if (gettime() - GetPVarInt(playerid, "lastpickup") <= 20) return 1; // po instrukcji return nic nie zostanie dalej wykonane, natomiast sama instrukcja zostanie wywołana jeżeli warunek zostanie spełniony SetPVarInt(playerid, "lastpickup", gettime()); // jak można było nie zauważyć braku tej linijki? :D   // (jakiś) dalszy kod, który będzie wykonywany najczęściej raz na 20 sekund }
  10. Like
    PrzMas otrzymał reputację od DaxLer[ROZWIĄZANY]Spam Tekstem   
    Bo się rąbnąłem czego nie zauważyłeś - błąd logiczny z mojej strony. Poprawiłem kod, edytowałem post wyżej.
  11. Like
    PrzMas otrzymał reputację od DaxLer[ROZWIĄZANY]Spam Tekstem   
    Hmm... Bo popełniłem jeszcze jeden głupi błąd, można go było wyhaczyć. Edytowałem post.
  12. Like
    PrzMas otrzymał reputację od The_Crew[ROZWIĄZANY]System na czas?   
    new expiry_time= gettime() + 3*(24*60*60); // 24*60*60=86400 [s] if (gettime() > expiry_time) { // domek jest przeterminowany } else { // domek nie jest przeterminowany } Dlatego czas unixowy jest prosty w użyciu.
    Funkcja, którą dałem jest potrzebna w zasadzie tylko do wyświetlania przeliczonego znacznika w postaci: rok, miesiąc, dzień, godzina, minuta, sekunda i opcjonalnie dzień tygodnia (1-7).
  13. Like
    PrzMas otrzymał reputację od DaxLerLaptop z wgranym systemem   
    Z partycji RECOVERY, czy jak to się tam nazywa
  14. Like
    PrzMas otrzymał reputację od The_Crew[ROZWIĄZANY]System na czas?   
    Może ktoś jest trochę ambitniejszy, a na dodatek chce się nauczyć czegoś nowego?
    Chyba czytałeś niezbyt uważnie. Algorytm, który zapodałem... po prostu wziąłem kartkę i długopis, przeliczyłem parę znaczników (dzielenie i reszty z niego), robiłem to w odpowiedniej kolejności, a jak doszedłem zasady działania to napisałem na to kod. [sam zobacz]
    P.S.
    3 dni to 259200 sekund
  15. Like
    PrzMas otrzymał reputację od ŁukiRejestracja   
    Z uwagi na brak szczególnych oczekiwań odpowiedź będzie ogólna:
    http://lmgtfy.com/?q=insert+into
    http://www.w3schools.com/sql/sql_insert.asp
    Możliwość nr 1:
    INSERT INTO nazwa_tabeli VALUES ('wartość_1', 'wartość_2', 'wartość_3'); Możliwość nr 2:
    INSERT INTO nazwa_tabeli (pole_1, pole_2, pole_3) VALUES ('wartość_1', 'wartość_2', 'wartość_3');
  16. Like
    PrzMas otrzymał reputację od Łuki[ROZWIĄZANY]Problem z podpięciem gm pod mysql   
    Nie podlega najmniejszej wątpliwości, że tak
    Generalnie typy i kolejność parametrów (argumentów) widać po nagłówku funkcji (patrz w plikach INC) oraz co to mają być za parametry to widać po ich nazwach, a jeżeli nie da się tego wydedukować po nazwach to trzeba szukać jakiejś dokumentacji albo czegokolwiek w internetach.
  17. Like
    PrzMas otrzymał reputację od SA:MP[ROZWIĄZANY]Tekst dla gracza na środku ekranu   
    To jest z twojej strony nieznajomość środowiska, w którym piszesz i taki temat nie powinien znaleźć się w tym dziale ani nawet na tym forum. Zresztą nawet nie trzeba znać środowiska, bo wystarczy umieć szukać wiedzy.
  18. Like
    PrzMas otrzymał reputację od Beata_Szydlo_2015[ROZWIĄZANY]Tekst dla gracza na środku ekranu   
    Do niego, specjalnie wkleiłem w odwrotnej kolejności te cytaty, zresztą w takiej właśnie kolejności widać też w czym tak na prawdę tkwi problem - mógł on był zadać sobie trud i samemu momentalnie znaleźć oczywiste rozwiązanie zamiast zawracać ludziom głowę, co niestety jest coraz powszechniejszym zjawiskiem na tym forum i eskaluje nadal
  19. Like
    PrzMas otrzymał reputację od WolverineWykrywanie s0beit'a (anty-s0beit 0.3.7-R2)   
    W związku z tym, że przestało mi zależeć na przetrzymywaniu tego "wykrywacza" na własny użytek, toteż postanowiłem opublikować w miarodajnej postaci to co wydedukowałem.
     
    native SendClientCheck(clientid, actionid, arg1= 0x00000000, arg2= 0x0000, bytes= 0x0004); // int32, int8, int32, int16, int16 forward OnClientCheckResponse(clientid, actionid, checksum, crc); // int32, int8, int32, int8 Deklaracja nagłówka funkcji i callback-a, należy je umieścić gdzieś w skrypcie, najlepiej w widocznym miejscu np. na górze.
     
    public OnPlayerConnect(playerid) { SendClientCheck(playerid, 0x47); return 1; } Zainicjowanie sprawdzania, które jest możliwe dopiero wtedy, gdy klasa gracza jest utworzona (oczywiście po stronie klienta) - akcja 0x47 to jest oczekiwanie na załadowanie tej klasy.
     
    public OnClientCheckResponse(clientid, actionid, checksum, crc) { switch(actionid) { case 0x47: SendClientCheck(clientid, 0x02); // klasa gracza załadowana, wysłanie zapytania o wygenerowanie checksum-u (akcja 0x02) case 0x02: if (checksum & 0x00ff0000 == 0x00300000) Kick(clientid); // mod-s0beit-sa } } Callback OnClientCheckResponse nie jest wykonywany (wywoływany) w skrypcie gamemode-a, dlatego należy go umieszczać w filtercript-ach.
    Wiadomo, że jeżeli w ciągu 1 sekundy (czas zależy m.in. od szybkości połączenia klient-serwer) od wywołania funkcji SendClientCheck dla akcji 0x47 (patrz: OnPlayerConnect) nie zostanie wywołany callback OnClientCheckResponse, to można takiego gracza wyrzucić, bo np. to może być RakSAMP albo ulepszony s0beit z pewnymi blokadami.
    W kwestii polityki proponuję nie chwalić się, że macie coś takiego w skrypcie, a jeśli już to lepiej rozpowszechnić plotkę, że to jest wózek golfowy, ponieważ z pewnego punktu widzenia powyższa metoda jest lepsza od tego wózka, choćby dlatego, że jest dyskretniejsza i prostsza w użyciu, a nawet daje kilka innych możliwości, dla których nie ma w SA-MP wbudowanych funkcji, natomiast (przy powyższej metodzie) łatwo można "zostać niewykrytym" podczas dołączania z s0beit-em na serwer.
    Co do tych kilku innych możliwości...
    Proponuję sprawdzić jakie checksum-y są generowane dla graczy znajdujących się w różnym stanie (pieszo, w powietrzu, w wodzie, w pojeździe, ...), którzy już dołączyli do gry, czyli mają już utworzoną klasę gracza (m.in. postać/skin). Do generowania tych checksum-ów wystarczy jedynie wywołanie dla akcji 0x02, natomiast do ich analizowania/porównywania będzie konieczna wiedza na temat operacji bitowych, więc jeżeli ktoś nie czuje się na siłach to może od razu sobie to odpuścić, choć na dobrą sprawę ta wiedza nie jest jakaś tajemna
    Oprócz akcji 0x47 i 0x02 są jeszcze takie akcje jak poniżej:
    0x48: czas, jaki upłynął od momentu uruchomienia systemu operacyjnego klienta/gracza, wyrażony w ilości milisekund; 0x46: ta akcja okaże się przydatna w połączeniu z parametrem 'crc', wówczas przekazany do funkcji argument 'arg1' jest zwracany (przez zmienną 'checksum') z niezmienioną wartością. Jeśli chodzi o zgodność klient/serwer dla powyższego kodu, to w/w akcje zostały dodane/odblokowane w wersji 0.3z-R4 i są dostępne do wersji 0.3.7-R2 dla serwera, natomiast dla klienta powyższy mechanizm na pewno jest efektywny od wersji 0.3z-R2 (nie sprawdzałem 0.3z-R1) do 0.3.7-R1. Tak wygląda sytuacja zgodności na chwilę obecną.
    Z uwagi na brak oficjalnej dokumentacji ze strony twórców nie napiszę nic więcej na temat przedmiotowego w temacie kodu, zresztą i tak już napisałem wystarczająco dużo.
    Pytania typu co jeszcze oprócz s0beit'a można wykryć są bezcelowe, ponieważ to zależy od pomysłowości tego, kto używa powyższego mechanizmu, no i od faktycznych jego możliwości.
  20. Like
    PrzMas otrzymał reputację od Beata_Szydlo_2015[ROZWIĄZANY]Tekst dla gracza na środku ekranu   
    Do niego, specjalnie wkleiłem w odwrotnej kolejności te cytaty, zresztą w takiej właśnie kolejności widać też w czym tak na prawdę tkwi problem - mógł on był zadać sobie trud i samemu momentalnie znaleźć oczywiste rozwiązanie zamiast zawracać ludziom głowę, co niestety jest coraz powszechniejszym zjawiskiem na tym forum i eskaluje nadal
  21. Like
    PrzMas otrzymał reputację od The_Crew[ROZWIĄZANY]System na czas?   
    Jak to można wyczytać np. na Wikipedii czas unixowy to czas jaki upłynął od 1 stycznia 1970 roku i jest on wyrażony w sekundach.
    Jeżeli masz pobrany jakiś znacznik i dodasz do niego 3 dni to uzyskasz nowy znacznik, po którego [wartości] przeliczeniu będzie można uzyskać datę przesuniętą 3 dni w przód w stosunku do tej pierwotnej daty. Jeżeli w momencie wynajęcia domku pobierzesz ówczesny znacznik i dodasz do niego te 3 dni to uzyskasz wartość analogicznie jak wyżej. Natomiast to ty jesteś projektantem swojego "systemu" i to ty musisz zadecydować kiedy chcesz sprawdzać czy okres najmu domku już minął, czyli tak jak pisałem wcześniej:
    Możesz to sprawdzać w momencie gdy najmujący wchodzi do domku, ale pojawi się pewna luka, ponieważ dopóki ten najmujący nie wejdzie na domek to de facto będzie on cały czas zajęty, czyli sprawdzanie powinno się odbywać gdy jakikolwiek gracz chcący wynająć domek wejdzie na niego albo kliknie opcję najmu. Jeżeli będziesz chciał dać nick najmującego w 3DText-cie to pojawi się problem z aktualnością informacji - odradzam tworzenie timer-a na odświeżanie tych etykiet, bo to karkołomne przedsięwzięcie, chyba że ci na tym zależy to ok.
  22. Like
    PrzMas otrzymał reputację od .ainethrPomocy! Utracony plik   
    "[...] akurat Ci się uda" - uruchomić w trybie awaryjnym czy odzyskać plik? Ja bym obstawiał to pierwsze, bo to drugie z góry odpada.
    Przywracanie systemu Windows do poprzedniego stanu (w domyśle sprzed instalacji jakiegoś programu lub aktualizacji) nie ingeruje w prywatne pliki użytkownika.
    Jeżeli nie robiłeś okresowo Ctrl+S (ew. Ctrl+Shift+S) to wszystko przepadło momentalnie po spadku napięcia na pamięci RAM w trakcie restartu komputera.
    W przeciwnym razie możesz poszukać programików do odzyskiwania/przywracania danych z dysku twardego.
  23. Like
    PrzMas otrzymał reputację od xMassBłędy podczas kompilacji   
    Nie dość, że wiem to jeszcze wiem gdzie szukać odpowiedzi na twoje pytanie, a nawet ją znalazłem [link], czego ty jak widać nawet nie pofatygowałeś się spróbować zrobić.
    Jeżeli nie znasz angielskiego to od tego masz tłumacz, a jeśli nie znasz podstaw programowania to najpierw je ogarnij, a potem bierz się za klepanie kodu.
  24. Like
    PrzMas otrzymał reputację od Sławek[ROZWIĄZANY]Logowanie w gui   
    Można też tak:
    new string[n]; // deklaracja ciągu o n elementach // (...) if (string[0] > 0) // ciąg niepusty { // (...) } Zwłaszcza, że funkcja strcmp zwróci 0 jeżeli co najmniej jeden z dwóch porównywanych ciągów jest pusty.
    Ale przy podejściu autora tematu można jedynie polemizować, ale nie stwierdzać co jest albo czego nie ma.
  25. Like
    PrzMas otrzymał reputację od (100%) Konto Oficjalne[ROZWIĄZANY]Co dalej z kodem Pastebin?   
    Ludzie,
    jedno (1) pytanie:
    jedna (1) odpowiedź:

    w sumie cztery (4) posty do tematu (zamiast jednego), no i plus mój (1) - co to za syf?!
    W sumie nie jest źle, bo mogło być gorzej
    @Arek111116
    Wiedziałeś, że takie coś istnieje? I to się nawet daje czytać, ale niestety nie ma tam obrazków
×