Skrypt Chodzenia Blokowanie echo mapy na danej pozycji

Skrypt Chodzenia Blokowanie echo mapy na danej pozycji

Wątek zablokowany 2017-04-19 15:25 przez Patryk27 .

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poland
  • Postów: 266
0

witam, w jaki sposób mogę to chodzenie przerobić tak żeby w pewnym miejscu x /y blokowalo echowanie mapy
z takiego powodu ze jezeli dojdę do końca mapy mapa wchodzi poza obramowanie i robi się brzydko

Kopiuj
<?php
require_once('../php/mysql-connect.php');
require_once('../php/load-data.php');

if(time() >= $postac['respawn'] && $postac['zajety_walka'] == 0){
$teleport = mysql_fetch_array(mysql_query("select * from mapa_przenies where mapa = ".
$postac['mapa']." and x = ".
$postac['x']." and y = ".
$postac['y']." limit 1"));

if($_POST['move'] == 'lewo'){
$npcblock = mysql_fetch_array(mysql_query("select * from npc where mapa = ".
$postac['mapa']." and x = ".($postac['x'] - 1)." and y = ".$postac['y']." limit 1"));
$potworblock = mysql_fetch_array(mysql_query("select * from mob where mapa = ".
$postac['mapa']." and x = ".($postac['x'] - 1)." and y = ".$postac['y']." and respawn <= ".$czas_ogolny." limit 1"));
$blokada = mysql_fetch_array(mysql_query("select * from blokadaprzejscia where mapa = ".
$postac['mapa']." and x = ".($postac['x'] - 1)." and y = ".$postac['y']." limit 1"));
//test
if((empty($npcblock)) && (empty($blokada)) && (empty($potworblock))){
mysql_query("update postac set x = x - 1 where id = ".$postac['id']." and x > -1 limit 1");
$postac['x'] -= 1;
echo $mapa['obrazek'];
exit;
}
}

if($_POST['move'] == 'prawo'){
$npcblock = mysql_fetch_array(mysql_query("select * from npc where mapa = ".
$postac['mapa']." and x = ".($postac['x'] + 1)." and y = ".$postac['y']." limit 1"));
$potworblock = mysql_fetch_array(mysql_query("select * from mob where mapa = ".
$postac['mapa']." and x = ".($postac['x'] + 1)." and y = ".$postac['y']." and respawn <= ".$czas_ogolny." limit 1"));
$blokada = mysql_fetch_array(mysql_query("select * from blokadaprzejscia where mapa = ".
$postac['mapa']." and x = ".($postac['x'] + 1)." and y = ".$postac['y']." limit 1"));
if((empty($npcblock)) && (empty($blokada)) && (empty($potworblock))){
mysql_query("update postac set x = x + 1 where id = ".$postac['id']." and x < ".$mapa['maks_x']." limit 1");
$postac['x'] += 1;
echo $mapa['obrazek'];
exit;
}
}

if($_POST['move'] == 'gora'){
$npcblock = mysql_fetch_array(mysql_query("select * from npc where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] - 1)."  limit 1"));
$potworblock = mysql_fetch_array(mysql_query("select * from mob where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] - 1)." and respawn <= ".$czas_ogolny." limit 1"));
$blokada = mysql_fetch_array(mysql_query("select * from blokadaprzejscia where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] - 1)." limit 1"));
if((empty($npcblock)) && (empty($blokada)) && (empty($potworblock))){
mysql_query("update postac set y = y - 1 where id = ".$postac['id']." and y > -1 limit 1");
$postac['y'] -= 1;
echo $mapa['obrazek'];
exit;
}
}

if($_POST['move'] == 'dol'){
$npcblock = mysql_fetch_array(mysql_query("select * from npc where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] + 1)." limit 1"));
$potworblock = mysql_fetch_array(mysql_query("select * from mob where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] + 1)." and respawn <= ".$czas_ogolny." limit 1"));
$blokada = mysql_fetch_array(mysql_query("select * from blokadaprzejscia where mapa = ".
$postac['mapa']." and x = ".$postac['x']." and y = ".($postac['y'] + 1)." limit 1"));
if((empty($npcblock)) && (empty($blokada)) && (empty($potworblock))){
mysql_query("update postac set y = y + 1 where id = ".$postac['id']." and y < ".$mapa['maks_y']." limit 1");
$postac['y'] += 1;
echo $mapa['obrazek'];
exit;
}
}
}
echo false;
exit;
?>

jeżeli NIE MA echo $mapy wtedy mapa stoi w miejscu a chciałbym np żeby stała w miejscu jak dojdę do pewnego x /y
próbowałem na wiele sposobów ale nie daje rady.
wiem ze coś trzeba zrobić i dodać ifa i else

screeny
jest tak:
user image
a chce zrobić zeby było tak
user image

ZZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

sprawdź w bazie w tabeli userów czy dla danego usera x lub y jest < 0 lub > od dozwolonego maksimum

jeśli tak, to faktycznie skrypt Ci źle działa

jeśli nie. to masz po prostu skopane wyświetlanie po stronie html a sam skrypt w php jest ok

//edit dobra wróć zakumałem o co chodzi...
nie wiem jak wygląda front-end tej apki także ciężko cokolwiek Ci doradzić
ale z tego co rozumiem, masz wycentrowaną mapę postać niby idzie a tak naprawdę to tło się przesuwa?

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poland
  • Postów: 266
0
zakręcony_zdzisiek napisał(a):

sprawdź w bazie w tabeli userów czy dla danego usera x lub y jest < 0 lub > od dozwolonego maksimum

jeśli tak, to faktycznie skrypt Ci źle działa

jeśli nie. to masz po prostu skopane wyświetlanie po stronie a sam skrypt w jest ok

pozycje zapisuję prawidłowo w bazie danych
w stronie mam tak

Kopiuj
<div style="background-position: <?php echo $poz_x; ?>px 
<?php echo $poz_y; ?>px; background-image: url('<?php echo $mapa['obrazek']; ?>');"id=oMap></div>
ZZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

a masz jakieś funkcje w js/jquery do animacji mapy/ postaci?
gierka działa na ajaxie (w sensie, że płynnie się mapa przesuwa) czy za każdym razem się odświeża cała strona i pokazuje inną pozycję gracza?

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poland
  • Postów: 266
0
zakręcony_zdzisiek napisał(a):

a masz jakieś funkcje w js/jquery do animacji mapy/ postaci?
gierka działa na ajaxie (w sensie, że płynnie się mapa przesuwa) czy za każdym razem się odświeża cała strona i pokazuje inną pozycję gracza?

js:

Kopiuj
function wyslij(strona,ox,oy,kierunek){
	if(loading) return false;
	loading = true;
 	$.ajax({
		type: "POST",
		url: "js/idz.php",
		data:"move="+strona,
		success: function(msg){
			loading = false;
			if(msg){
					$('#oMap').css("background-image","url("+msg+")");
          setTimeout("map_poz(x+="+(ox/1)+",y+="+(oy/1)+");animation(0,"+kierunek+");",8); //gora
          setTimeout("map_poz(x+="+(ox/1)+",y+="+(oy/1)+");animation(1,"+kierunek+");",8);//dol
          setTimeout("map_poz(x+="+(ox/1)+",y+="+(oy/1)+");animation(2,"+kierunek+");",160);
          setTimeout("map_poz(x+="+(ox/1)+",y+="+(oy/1)+");animation(3,"+kierunek+");",160);
          setTimeout("animation(0,"+kierunek+");",320);
				 }

		}
	});


function map_poz(x,y){
$("#oMap").css("background-position", x+"px "+y+"px");
}
function animation(klatka,kierunek){
$("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
}


	$("div#l").click(function(){wyslij('lewo',8,0,1);});
	$("div#p").click(function(){wyslij('prawo',-8,0,2);});
	$("div#g").click(function(){wyslij('gora',0,8,3);});
	$("div#d").click(function(){wyslij('dol',0,-8,0);});
	//strzałki
	$("div#left").click(function(){wyslij('lewo',8,0,1);});
	$("div#up").click(function(){wyslij('prawo',-8,0,2);});
	$("div#right").click(function(){wyslij('gora',0,8,3);});
	$("div#down").click(function(){wyslij('dol',0,-8,0);});
ZZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
1

tak teoretycznie potrzebujesz:

  1. animacji w js samej postaci we wszystkich kierunkach (góra dół lewo prawo) - bo widzę, że masz jedynie animację tła
  2. w pliku idz.php musisz zrobić if($postac['x'] < jakies_minimum or $postac['x'] > jakies_maksimum) echo "animacja_postaci(kierunek) ";
    a jeśli nie, to robisz to co jest normalnie, analogicznie dla y
  3. w js w tej funkcji wyslij
    if(msg == 'animacja(lewo)' { odpal animacje w lewo }
    else if(analogicznie dla wszystkich kierunków)
    else {
    to co masz teraz aktualnie
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.