Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Problem z przesuwaniem obrazka za pomocą JS


endriu322

Pytanie

Opublikowano

Witam, mam problem z mapą zmieniłem wielkość mapy z 608px na 992px tak, żeby było widać 31 kratek

32x32, lecz gdy pójdę do prawej krawędzi mapy to mapa przesuwa się do tak jak by miałem okno wielkości

608px czy ktoś mi wytłumaczy jak to naprawić Nadole są ssy z mapy i skrypt mapy.

PS te czerwone obramowanie to ramka, w której ma się pojawiać mapa.
ss.png

skrypt mapy:

Cytat

<?php
if($gracz['dostep'] < 3) przekieruj('?a=start&info=13');

$pozycja = $gracz;

//$m -> query('UPDATE gracze SET online = '.czas().' WHERE id = '.$_SESSION['id'].' LIMIT 1');

$zapytajm = $m ->query('SELECT x, y, nazwa, grafika FROM mapy WHERE id = '.$pozycja['mapa'].' LIMIT 1');

$mapa = $zapytajm -> fetch_assoc();

list($width, $height) = getimagesize('grafika/layout_gry/postac/'.$pozycja['outfit'].'.png');

$maxx = $mapa['x'];
$maxy = $mapa['y']; 

$x = ($pozycja['x'] - 9) * 32;    //448
$y = ($pozycja['y'] - 8) * 32;

$grx = 288;
$gry = 256;

if(($maxx - $pozycja['x']) < 9){
    $x += 32 * ($maxx - $pozycja['x']) - 9 * 32;
    $grx += -32 * (($maxx - 9) - $pozycja['x']) + 160;
    $grx += 32 * ($maxx - 23);
    }
elseif($pozycja['x'] <= 9) {
    $grx += $x;
    $x = 0;
}
else{
    $grx += 32*($pozycja['x'] - 9);;
}

if(($maxy - $pozycja['y']) < 9){
    $y += 32 * ($maxy - $pozycja['y']) - 8 * 32;
    $gry += -32 * (($maxy - ($maxy - 19) - 8) - $pozycja['y']) + 96;
}
elseif($pozycja['y'] < 8) {
    $gry += $y;
    $y = 0;
}
else{
    $gry += 32*($pozycja['y'] - 8);
}

$t .= '<div id="mapa" style="z-index:1; background:url(grafika/layout_gry/mapy/'.$mapa['grafika'].'); background-position:0 0; width:'.($maxx * 32 + 32).'px; height:'.($maxy * 32 + 32).'px; left:'.(-$x).'px; top:'.(-$y).'px;">';

$t .= '<div id="gracz" style="background:url(grafika/layout_gry/postac/'.$pozycja['outfit'].'.png);z-index:'.($pozycja['y'] + 3).';"><div id="gmenu"><div class="gmenu" id="przejdz">Przejdź</div><div class="gmenu" id="zamknij">Zamknij</div></div></div>';

for($i = 0; $i <= $maxy; $i++){
    for($a = 0; $a <= $maxx; $a++){
        $t .= '<div class="kord" x="'.$a.'" y="'.$i.'" style="position:relative; top:0px; display:inline-block; width:32px; height:32px; cursor:pointer;"></div>';
    }
    
}
$t .= '<div id="x"></div>';
$t .= '</div><script type="text/javascript">grx = '.$grx.'; gry = '.$gry.'; outfit = {w:'.$width.', h:'.$height.'};</script>"';

PS nie ja pisałem mapę tylko mój kolega. 

 

076a6e9d-88f4-43bc-ab33-caf22222dd0e (1).jpg

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

Wszystko sprowadza się do warunku: 

if(($maxx - $pozycja['x']) < 9){
    $x += 32 * ($maxx - $pozycja['x']) - 9 * 32;
    $grx += -32 * (($maxx - 9) - $pozycja['x']) + 160;
    $grx += 32 * ($maxx - 23);
}

Nie wiem, jak masz zapisane $maxx oraz $pozycja, ale wydaje mi się, że ktoś popełnił błąd - obecnie, gdy postać idzie w prawo, wartość dąży do zera, czyli odwrotnie niż być powinno - spróbuj zmienić < na >, może pomoże.

Non omnis moriar.

Opublikowano

Przede wszystkim popraw ortografię w pierwszym poście, bo kompletnie nie mogę zrozumieć, co piszesz.

Po drugie, wyjaśnij co zawierają w sobie dane zmienne, jaki rodzaj wartości.

Non omnis moriar.

Opublikowano

Strasznie zasyfiony ten skrypt, kolega chyba nie umie zbytnio into czysty kod.

Spróbuj tak pozmieniać:

if(($maxx - $pozycja['x']) > 15){
    $x += 32 * ($maxx - $pozycja['x']) - 15 * 32;
    $grx += -32 * (($maxx - 15) - $pozycja['x']) + 160;
    $grx += 32 * ($maxx - 23);
}
elseif($pozycja['x'] <= 15) {
    $grx += $x;
    $x = 0;
}

 

Non omnis moriar.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...