![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, szukam skryptu, który zmieni wartość rekordu w bazie danych danych i go zmieni po 2 sekundach.
Np. skrypt zmienia wartość na "tak", a jak miną 2 sekundy, to aby zmienił się on w bazie danych na "nie". Da się tak zrobić? Pozdrawiam. Ten post edytował Machro 15.12.2007, 15:32:21 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 3 Dołączył: 15.06.2003 Skąd: kosmosu? Ostrzeżenie: (0%) ![]() ![]() |
Możesz zrobić tak:
1. zapytanie do bazy danych 2. sleep(2); 3. zapytanie do bazy danych |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Możesz zrobić tak: 1. zapytanie do bazy danych 2. sleep(2); 3. zapytanie do bazy danych A skąd to wie, które instrukcje pod sleep ma wykonywać? 2 linijki instrukcji, 10, czy może wszystkie? Nie za bardzo jasne to jest ... ; \ Ma ktoś może inny sposób? Ten post edytował Machro 15.12.2007, 18:14:32 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Wstrzymuje wykonywanie całego skryptu na czas podany jako argument (w sekundach). Więc wykonywane jest wszystko do momentu Sleep, odczekane dwie sekundy i skrypt leci dalej. Inne rozwiązanie ociera się już o AJAXa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . A do czego potrzebne Ci takie coś? Może uda się zaleźć inne rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam, -- Nattfarinn Ten post edytował Nattfarinn 15.12.2007, 18:17:11 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, napiszę po co mi to jest, ale pewnie i tak nikt nie zrozumie :-)
Piszę grę internetową pod przeglądarkę i mam tam dział Miasto, gdzie gracze mogą chodzić i się spotykac online, jednak chcę wlasnie zrobic ograniczenia ruchu, czyli jeden ruch co 2 sekundy. 1. Osoba wykonuje ruch 2. Zapytanie robi blokadę na chodzenie na "tak" 3. Mijają 2 sekundy podczas ktorych gracz nie moze chodzic 4. Blokada w mysql zmienia się na "nie" 5. Gracz moze wykonac kolejny ruch |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
1. Osoba wykonuje ruch 2. Zapytanie robi blokadę na chodzenie na "tak" 3. Mijają 2 sekundy podczas ktorych gracz nie moze chodzic 4. Blokada w mysql zmienia się na "nie" 5. Gracz moze wykonac kolejny ruch Trochę bez sensu to rozwiązanie. O wiele lepiej będzie przechowywać w bazie czas, kiedy nastepny ruch jest możliwy i zamiast zmieniać wartość w bazie wielokrotnie, poprostu sprawdzać czy gracz nie wykonał ruchu za wcześnie (porównać obecny czas wykonywania ruchu z wartością z bazy mówiącą kiedy będzie mógł wykonać). Po poprawnym ruchu zmienić w bazie blokadę ruchu na czas: teraz + 2 sekundy i tak w kółko. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawim, -- Nattfarinn Ten post edytował Nattfarinn 15.12.2007, 18:28:37 |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale to bezsensu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W tabeli z USERAMI zrób sobie kolumnę last_move i tam dawaj (może być time_stamp) poprostu datę i czas. Później tylko sprawdzasz czy minęły 2 sekundy od ostatniego ruchu, jeśli nie to dajesz komunikat lub czekasz sleep(2) i to tyle... Po co wstawiać tak/nie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) EDIT: Nattfarinn mnie ubiegł (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował ayeo 15.12.2007, 18:29:26 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Już tak robiłem jak piszecie, ale spotkalem sie z problemem - jak sprawdzić czy minęły 2 sekundy?
Ten post edytował Machro 15.12.2007, 18:35:32 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Już tak robiłem jak piszecie, ale spotkalem sie z problemem - jak sprawdzić czy minęły 2 sekundy? Nie napiszę przecież: NOW() + 2 sekundy A po co Ci sprawdzać czy upłynęły już dwie sekundy? Wystarczy sprawdzić czy czas już dawno minął czy jeszcze nie. Dla przykładu, jeśli przechowujesz w bazie czas w postaci Uniksowej, to po wykonanym ruchu zmieniasz starą wartość na: "time()+2;". Później jak osoba chce się poruszyć to sprawdasz czy time() jest większe czy mniejsze od wartości w bazie. Jeśli jest większe to znaczy że minęlo już wiecej niż 2 sekundy, jeśli jest mniejsze to ktoś klika zbyt szybko. Pozdrawiam, -- Nattfarinn |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
A po co Ci sprawdzać czy upłynęły już dwie sekundy? Wystarczy sprawdzić czy czas już dawno minął czy jeszcze nie. Dla przykładu, jeśli przechowujesz w bazie czas w postaci Uniksowej, to po wykonanym ruchu zmieniasz starą wartość na: "time()+2;". Później jak osoba chce się poruszyć to sprawdasz czy time() jest większe czy mniejsze od wartości w bazie. Jeśli jest większe to znaczy że minęlo już wiecej niż 2 sekundy, jeśli jest mniejsze to ktoś klika zbyt szybko. Pozdrawiam, -- Nattfarinn Mogę sobie sprawdzać, czy 4 < 5, ale to chyba nie będzie przecież działać z czasem? if (time() > $row[mozliwy_ruch] ) Przecież to wykaże błąd :] Bo to nie są liczby, tylko mają jeszcze dwukropki itp .. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
if (time() > $row[mozliwy_ruch] ) Przecież to wykaże błąd :] Bo to nie są liczby, tylko mają jeszcze dwukropki itp .. Jesteś pewien? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) time() zwraca czas uniksowy, czyli liczbę sekund które upłynęły od 1 stycznia 1970 roku. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) To jest aktualnie bodajże 32-bitowy signed integer (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zaraz to sprawdzę : ) I dam znac
Edit: Mm, wygląda na to, że działa :-) Zaraz tego użyję w grze. Edit2: Działa tylko, gdy time() jest mniejsze od $linia[Mapa_mozliwy_ruch] A powinno być większe .. Nie rozumiem Edit3: Dziala tylko tak:
Gdy jest:
To błąd pokazuje się zawsze gdy chcę sie ruszyc. Ten post edytował Machro 15.12.2007, 19:51:12 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
I działa dobrze. Nie wiem o co Ci chodzi właściwie teraz. Time() zwraca czas Teraz. W pierwszym przypadku komunikat wyświetli się tylko gdy czas odpowiedzialny za ruch jeszcze nie minął. W drugim pokaże się za każdym razem gdy czas minął. W czym więc rzecz?
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 25.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak, już zauwazylem, ze to jednak nie jest błąd :-)
Troche za duzo w tym mieszalem i mi się wszystko pomieszalo Dzieki z rady :-) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:27 |