[WEB]Funcție pentru verificarea spațiului gol ItemShop

Despre programarea aplicațiilor web și nu numai, cu PHP, baze de date și altele.
Discutiile despre utilizarea si modificarea scripturilor se desfasoara in aria Webmaster.
Discuțiile despre proiectarea și optimizarea bazelor de date se desfășoară în aria Databases.
Avatar utilizator
Nazir a.k.a. Zorke
Traficant de ouă

Traficant de ouă
Mesaje: 1250
Membru din: 05 Sep 2014, 19:41
Server: Metin2 Kotoba
Regat: Shinsoo
Aprecieri: 5  
Mulţumiri: 44  
 Contact:
Medalii

Salut vă las o funție care vă ajută să verificați spațiul gol din itemshop.

Aveți un video cu această funcție.
[bbvideo=500,315]https://www.youtube.com/watch?v=pGq-tLx7yCM[/bbvideo]


Cod: Selectaţi tot


public function checkPosition($newsize){
    
    $slot=array(
            "0" => 0,
            "1" => 0,
            "2" => 0,
            "3" => 0,
            "4" => 0,
            "5" => 0,
            "6" => 0,
            "7" => 0,
            "8" => 0,
            "9" => 0,
            "10" => 0,
            "11" => 0,
            "12" => 0,
            "13" => 0,
            "14" => 0,
            "15" => 0,
            "16" => 0,
            "17" => 0,
            "18" => 0,
            "19" => 0,
            "20" => 0,
            "21" => 0,
            "22" => 0,
            "23" => 0,
            "24" => 0,
            "25" => 0,
            "26" => 0,
            "27" => 0,
            "28" => 0,
            "29" => 0,
            "30" => 0,
            "31" => 0,
            "31" => 0,
            "32" => 0,
            "33" => 0,
            "34" => 0,
            "35" => 0,
            "36" => 0,
            "37" => 0,
            "38" => 0,
            "39" => 0,
            "40" => 0,
            "41" => 0,
            "42" => 0,
            "43" => 0,
            "44" => 0,
        );
    
    
    $own_id=$_SESSION['user_id'];
        
    $sql = "SELECT item.pos,item_proto.size AS item_size 
    FROM player.item
    INNER JOIN player.item_proto 
    ON item_proto.vnum=item.vnum
    WHERE item.owner_id=? AND item.window=?";
    $stmt = $this->o_db->prepare($sql);
    $stmt->execute(array($own_id,"MALL"));
        
    $result =$stmt->FetchAll();
    
    $nextposition = 0;
    foreach($result as $exist){
        $replace = array($exist['pos'] => 1);
        $slot = array_replace( $slot, $replace); 

        if($exist['item_size'] == '2'){
            $replace2 = array($exist['pos']+5=>1);
            $slot = array_replace( $slot, $replace2); 
        }
        if($exist['item_size'] == '3'){
            $replace3 = array($exist['pos']+5=>1,$exist['pos']+10=>1);
            $slot = array_replace( $slot, $replace3); 
        }
    }
    for($zorke=0;$zorke<=44;$zorke++){
        if($newsize == '1'){
            if($slot[$zorke] == '0'){
                $nextposition = $zorke;
                $zorke = 45;
            }
            if($zorke == 44)
            {
            $nextposition = 45;
            $zorke = 45;  
            }
        }
        if($newsize == '2'){
            if($slot[$zorke] == '0' && $slot[$zorke+5] == '0' ){
                $nextposition = $zorke;
                $zorke = 45;
            }
            if($zorke == 40){
            $nextposition = 45;
            $zorke = 45;
            }
        }
        if($newsize == '3'){
            if($slot[$zorke] == '0' && $slot[$zorke+5] == '0' && $slot[$zorke+10] == '0'){
                $nextposition = $zorke;
                $zorke = 45;
            }
            if($zorke == 35){
            $nextposition = 45;
            $zorke = 45;
            }
        }
        
    }

    return $nextposition; 
      
    }
01.Funcția returnează următoarea poziție liberă.. este perfect funțională pe toate 3 size. O să aveți nevoie să vă mai faceți o funție (sau să integrați în aceasta) care să primească size-ul itemului din itemshop.. fiecare după cum are făcut itemshop.

02.Ca să o apelați folosiți $this->checkPosition($variabilă), unde scrie variabilă trebuie să pui size-ul itemului, dacă nu folosiți clase funcția se apelează direct checkPosition($variabilă).

03.Conexiunea la db trebuie să fie pdo.

04. Această linie $nextposition = 45; în funcția mea de buy item am pus condiția că dacă este mai mare sau egal decât 45 să afișeze mesajul că sunt prea multe iteme și are inventarul plin.

Spor,
Zorke.
Pentru acest mesaj, Nazir a.k.a. Zorke for the post:
FRANCIS
Securizează website-ul la serverul tău chiar acum ! Sfaturi gratuite !
Schimbă codul din spatele template-ului cu ceva mai nou ! Același design alt cod !!
https://www.facebook.com/ZorkeOfficial/

Imagine
Afișează semnătura
Avatar utilizator
DarkAngell
Nou Venit

Nou Venit
Mesaje: 48
Membru din: 12 Ian 2015, 18:28
Server: www.metin2wow.fzn.ro
Regat: Jinno
Aprecieri: 4  
Mulţumiri: 1  
Medalii

vreau si eu homepagiu :)
Avatar utilizator
Nazir a.k.a. Zorke
Traficant de ouă

Traficant de ouă
Mesaje: 1250
Membru din: 05 Sep 2014, 19:41
Server: Metin2 Kotoba
Regat: Shinsoo
Aprecieri: 5  
Mulţumiri: 44  
 Contact:
Medalii

DarkAngell scrie:vreau si eu homepagiu :)
Momentan homepageul nu este gata , si nu l`am facut public !
Securizează website-ul la serverul tău chiar acum ! Sfaturi gratuite !
Schimbă codul din spatele template-ului cu ceva mai nou ! Același design alt cod !!
https://www.facebook.com/ZorkeOfficial/

Imagine
Afișează semnătura
Avatar utilizator
railgun
Nou Venit

Nou Venit
Mesaje: 14
Membru din: 12 Apr 2018, 11:02
Server: nu
Regat: Chunjo
Aprecieri: 0
Mulţumiri: 1  
Medalii

Pentru ce -cenzurat- ai nevoie de asa ceva cand ai item_Award
Avatar utilizator
Nazir a.k.a. Zorke
Traficant de ouă

Traficant de ouă
Mesaje: 1250
Membru din: 05 Sep 2014, 19:41
Server: Metin2 Kotoba
Regat: Shinsoo
Aprecieri: 5  
Mulţumiri: 44  
 Contact:
Medalii

railgun scrie:Pentru ce -cenzurat- ai nevoie de asa ceva cand ai item_Award

Fiecare folosește ce vrea, în plus voi adapta funcția la un sistem de bonusat itemele direct în itemshop de către playeri :)

EDIT: Poate alții nu au sursă și vor un script și pentru bonusuri ;)
Securizează website-ul la serverul tău chiar acum ! Sfaturi gratuite !
Schimbă codul din spatele template-ului cu ceva mai nou ! Același design alt cod !!
https://www.facebook.com/ZorkeOfficial/

Imagine
Afișează semnătura
Avatar utilizator
florinenache
Nivel 2

Nivel 2
Mesaje: 255
Membru din: 25 Noi 2017, 14:00
Server: Wold 4 In Curand
Regat: Jinno
Aprecieri: 35  
Mulţumiri: 229  
 Contact:
Medalii

DarkAngell scrie:vreau si eu homepagiu :)
cocosel ia cauta pe net sa vezi ca exista deja ;)

Cod: Selectaţi tot

General
https://visual-basic.online
Afișează semnătura
Răspunde

Înapoi la “Tutoriale scripting”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator