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

mały problem z is


Rekomendowane odpowiedzi

Opublikowano

Kiedyś miałem problem z is gdzie po zakupie itemu po wyciągnięciu go z depo is i ponownym otwarciu depo is można było ten item drugi raz sobie zabrać i tak w nieskończoność.

Naprawiłem to w taki sposób że kupiony item był dodawany na drugie i dalej miejsce w eq, itemy można zabrać z depo is tylko raz i tak powinno być.

 

Teraz mam inny problem.

Kupuję item, on dodaje mi się na drugie miejsce w eq, kolejny item na trzecie itd...

Itemu nie można wyjąć drugi raz, ale gdy kupimy kolejny item (mając puste depo is) to on dodaje się nie na drugim miejscu, a na 4...5...itd...

Jak to naprawić?

 

W kodzie mam tak:

$sql = "INSERT INTO `item` VALUES('0' , '$userid', 'MALL', '$pos', '1', '$itemid', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''
)" ;

wartość pos+1

$pos = $pos + 1;

jak zmienie na 0 to stary problem powróci

 

mam jeszcze takie cos:

if($pos == "42")
{
$pos = "0";

jeżlei skonczy sie miejsce w eq to rozpocznie od poczatku tak?

Nie mam sie o co martwic czy zbuguje sie?

Opublikowano

Nie wiem czy dobrze myśle ale ja ułożyłbym zapytanie wyciągające itemy gracza (pozycje tych itemów) tylko te które ma w IS.

Następnie przeleciał pętelką która kratka jest wolna,

I teraz uwaga, pobrał wysokość itemku jaki zakupił i do wyszukanej wolnej kratki dodał:

0 - jeśli wysokość itemku jest = 1
5 - jeśli wysokość itemku jest = 2

5 i 10 - jeśli wysokość itemku = 3

 

 

i teraz jak wszystkie warunki zostaną spełnione to kupujesz itemek i w zmiennej $pos (tak jest u cb) dajesz ten slot który wyszukałeś pętelką.

Jak nie znajdzie żadnego wolnego slotu to informujesz o tym usera i każesz wyczyścić magazyn. 

 

 

@Edit

pętle powtarzaj dopóki nie osiągnie 40 kratki bo przykładowo zakupiłem item który zajmuje 2x sloty i teraz mam takie ułożenie IS:
54361142333618081780.png

x - zajęte miejsce.

 

 

I teraz bez tego twoja pętla pobrała by 6 slot sprawdziła że nie ma pustego pod tym okienka (nie wejdzie item na dwie kratki) i wywaliła graczowi że nie ma miejsca - a miejsce jest, tylko niżej.

Więc dlatego powinieneś przeszukiwać całą "tabele" (cały ekwipunek) (aż do osiągnięcia 40 kratki)

8910814572903361049127.png

Opublikowano

@baran860

U mnie nie będzie problemu z itemami które zajmują 2-3 miejsca. IS starałem się zrobić tak aby itemy zajmowały zawsze tylko 1 slot.

To:

if($pos == "42")
{
$pos = "0";

zmienie na:

if($pos == "10")
{
$pos = "1";

Aby gdy po zajęciu 10 pozycji kolejne dawało na pierwszą.

Jak będzie ok to ustawie po staremu, jak nie to będziemy kombinować. :P

 

 

Sprawa wygląda następująco:

1.Ustawiłem tak jak napisałem powyżej.

2.Teraz kupione itemy daje do slotów 1-10

3.Kiedy wszystkie sloty są zajęte nie otrzymujemy kupionego itemu.

4.Kiedy zajęty jest tylko 10 slot a reszta jest wolna 1-10 to przydziela od początku od 1 slota.

5.Kiedy były zajęte 1,2 i 10 i gdy wyjmiemy item z 1 slota to przydziela do 3 slota.

 

Co bym potrzebował:

1.kiedy wszystkie sloty są zajęte wyświetla się info że nie ma miejsca w depo, nie zostają zabrane sm, item nie zostaje dodany.

2.dodawanie itemów po kolei do depo np. gdy zajęty jest slot 2,4,5 i kupujemy kolejne 3 to są one dodawane na slot 1,3,6 a nie 6,7,8.

 

Oto kod, jak ktoś umie to proszę o poprawę.

<?php   
      include ("config_account.php");
$itemid = $_GET['itemid'];

		$sql = "SELECT * FROM itemshop WHERE itemid = '$itemid'"; 
$result = mysql_query ($sql); 
if (mysql_num_rows ($result) > 0) 
{ 
  $data = mysql_fetch_array ($result); 
  
   $coins = $data["coins"]; 

$coins2 = $_SESSION["user_coins"];
$userid = $_SESSION["user_id"];
$pos = $_SESSION["user_pos"];
if($coins2 < $coins)
{
echo "<b>Za malo monet,przekierowanie za 2 sekundy </b><br>" ;
echo "<meta http-equiv=\"refresh\" content=\"2;url=shop.php\">"  ; 
} else {
$coinsneu = $coins2 - $coins ;
echo "<b>Item Kupiony !<br>Twoj aktualny stan konta: $coinsneu </b><br>";
$pos = $pos + 1;
if($pos == "10")
{
$pos = "1";
$_SESSION["user_pos"] = $pos ;

}
$_SESSION["user_pos"] = $pos ;

$sql = "UPDATE account SET coins = '$coinsneu', pos = '$pos' WHERE id = $userid "; 
$ergebnis = mysql_query($sql); 
if ($ergebnis == true)   
{ 
$_SESSION["user_coins"] = $coinsneu ; 
mysql_close()  ;                  
include ("config_player.php");
$sql = "INSERT INTO `item` VALUES('0' , '$userid', 'MALL', '$pos', '1', '$itemid', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''
)" ;
$ergebnis = mysql_query($sql); // Ausführen
if($ergebnis == true)
{
 echo "<b>Zostaniesz przekierowany za 3 sekundy ! </b><br>";
echo "<meta http-equiv=\"refresh\" content=\"3;url=shop.php\">"  ;      //weiterleiten
} else {
echo "lols  :D" ;
}     

} else {
   echo "<b>Problem  z polaczeniem z Baza Danych !!</b>" ;
}

}
}
?>

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...