Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 806
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    139

Odpowiedzi opublikowane przez gnysek

  1. No ale jak znasz wysokość i szerokość, to nadal jak wyżej.

    A jak nie znasz, to ciężka sprawa... chyba, ze to jedyny kształt w tym gridzie ? Wtedy będzie tak:

     

    var _w = ds_grid_width(index);
    var _h = ds_grid_height(index);
    
    
    var xstart = _w, xend = 0, ystart = _h, yend = 0;
    
    for(var i = 0; i < _w; i++) {
        for(var j = 0; j < _h; j++) {
          if index[# i, j] == 1 {
            xstart = min(xstart, i);
            xend = max(xend, i);
            ystart = min(ystart, j);
            yend = max(yend, j);
          }
        }
    }
    
    
    // ok, mamy juz prostokat w ktorym jest figura, teraz przesuwamy
     
    var offsetx = -1, offsety = -20;
    
    for(var i = xstart; i < xend; i++;) {
        for(var j = ystart; j < _yend; j++) {
          if index[# i, j] == 1 {
            index[# ((i + _w + xoffset) % _w), ((j + _h + yoffset) % _h)] = 1;
            index[# i, j] = 0;
    
            /* robimy operację modulo, żeby przenosiło na drugi koniec grida w przypadku, gdy np. litera zaczyna się na osi X w pozycji 2, a ustawisz offset na -5.
            ponieważ jednak modulo z liczb ujemnych nie jest tylko dopisaniem znaku - przed wartością, dodajemy pełną wysokość
            np. 3 % 10 = 3, ale -3 % 10 = 7, wystarczy jednak dodawać zawsze 10 do liczby i po sprawie (-3 + 10) % 10 = 3. */
          }
        }
    }

    tu jest jeszcze taki jeden problem, że jak szerokość litery jest taka, ze po odjęciu offsetu nachodzi na siebie z drugiej strony, no to skasuje się część litery niestety - trzeba by wtedy do nowego grida po prostu przenosić i stary kasować.

  2. A spróbuj ten pierwszy kod dać do "Begin Step" ? Nie wiem, czy nie ma znaczenia i i tak wszystko jest aktywowane po "End Step", czy jest rozdział aktywacji na te 3 eventy.

     

    Jedyne inne rozwiązanie w tej sytuacji jakie mi przychodzi, to na bieżąco do jakiejś tablicy zapisywać pozycje obiektów i zapisywać tablicę.

  3. Timeout jest prosty - zapisujesz o której godzinie gracz ostatni raz aktualizował sesję, a przy logowaniu robisz

    $time = time() - 600; // 10 minut
    
    $sql = "DELETE * FROM session WHERE last_time < {$time}";

    W czasie, gdy nikt nie korzysta ze strony i tak nie ma znaczenia, że sesja nie jest skasowana, bo nikt nie czyta też bazy :)

     

    Czy ten hosting dokleja reklamy również jak zrobisz:

    <?php
    header('Content-type: application/json');
    echo json_encode(array('logged_in' => true));

     

    Btw. ogólnie są małe hostingi za grosze dzisiaj (5zł miesięcznie) - więc może pomyśl nad tym? Np. tutaj https://www.webd.pl/ masz za 4 złote. Albo na https://az.pl/hosting/ masz za 15 zł rocznie (tylko poczytaj regulamin, czy to nie promocja a za rok 5x tyle skasują, aczkolwiek ja płacę 100 zł rocznie za dużo większe hostingi).

×
×
  • Dodaj nową pozycję...