Source Rhenn

for (int pi=0; pi<PlayerM.size(); pi++)

{
   PlayerM[pi].UpdatePoz();//(1.9.3)
 
   for (int i=0; i<Boty.size(); i++)//--------[A*A_STAR]----------
     {
 
       PlayerM[pi].blisko=false;
       PlayerM[pi].atak=false;
       PlayerM[pi].wrocilem=true;
 
       //gdy enemy jest blisko playera i nie jest daleko od swojej bazy to....
       if(PlayerM[pi].pozX+5>xA[i]&&PlayerM[pi].pozX-5<xA[i]&&PlayerM[pi].pozY+5>yA[i]&&
       PlayerM[pi].pozY-5<yA[i]&&PlayerM[pi].pozX<xAGlob[i]+15&&PlayerM[pi].pozX>xAGlob[i]-15&&
       PlayerM[pi].pozY<yAGlob[i]+15&&PlayerM[pi].pozY>yAGlob[i]-15&&PlayerM[pi].lok==LOKAL)
       {
 
          if(Boty[i].Rezerwacja=="")//Gdy ten enemy nie jest zarezerwowany to zarezerwuj
          Boty[i].Rezerwacja=PlayerM[pi].name;
 
 
          if((Boty[i].Rezerwacja==PlayerM[pi].name)&&(!Boty[i].Respawn))//gdy jest mój to atakuj
          {
 
             PlayerM[pi].atak=true;//poinformuj,że go atakuje
             PlayerM[pi].blisko=true;//poinformuj,że jest blisko ciebie
 
 
             if(xAOld[i]!=xA[i]||yAOld[i]!=yA[i])//do optymalizacji(aby SI niewykonywało się tak samo)
               {
                 route=pathFind(xA[i],yA[i],PlayerM[pi].pozX,PlayerM[pi].pozY,MapSize,MapSize);//Wykonaj algorytm-A*
                 int jjj;//doA*
                 char ccc;//doA*
 
                 if(route.length()>0)
                   {
                      ccc=route.at(0);
                      jjj=atoi(&ccc);
                   }
 
                //Boty[i].wrog.move(dx[jjj],dy[jjj]);//Enemy wykonuje ruch podążając za graczem.
                Boty[i].Wrog.x+=dx[jjj];
                Boty[i].Wrog.y+=dy[jjj];
                jjjOld[i]=jjj;//do optymalizacji
                xAOld[i]=(int)(Boty[i].Wrog.x+16)/32;//do optymalizacji
                yAOld[i]=(int)(Boty[i].Wrog.y+16)/32;//do optymalizacji
               }else
               {
                 Boty[i].Wrog.x+=dx[jjjOld[i]];//do optymalizacji
                 Boty[i].Wrog.y+=dy[jjjOld[i]];//do optymalizacji
               }
 
          }
 
       }
 
       if((Boty[i].Rezerwacja==PlayerM[pi].name)&&(!Boty[i].Respawn))//gdy jest mój to..
         {
 
            if(!PlayerM[pi].blisko)//Enemy wraca na swoją pozycje!
              {
 
                PlayerM[pi].atak=false;//poinformuj,że cie już nie atakuje
 
                if(xAOld[i]!=xA[i]||yAOld[i]!=yA[i])//do optymalizacji(aby SI nie wykonywało się tak samo)
                  {
                    route=pathFind(xA[i],yA[i],xAGlob[i],yAGlob[i],MapSize,MapSize);//Enemywraca-A*(szuka drogi do bazy)
                    int jjj;//doA*
                    string ccc;//doA*
 
                    if(route.length()>0)//Gdy jeszcze enemy wraca do swojej bazy to..
                      {
                        PlayerM[pi].wrocilem=false;//poinformuj,że jeszcze niedotarł do bazy
                        ccc=route.at(0);
                        jjj=atoi(ccc.c_str());//(1.9.3)
 
                        Boty[i].Wrog.x+=dx[jjj];
                        Boty[i].Wrog.y+=dy[jjj];
                        jjjOld[i]=jjj;//do optymalizacji
                        xAOld[i]=(int)(Boty[i].Wrog.x+16)/32;//do optymalizacji
                        yAOld[i]=(int)(Boty[i].Wrog.y+16)/32;//do optymalizacji
 
                        for(intpii=0;pii<PlayerM.size();pii++)
                           {
                             if(pii==pi)continue;//jeśli to nie jesteś ty to..
                             if(PlayerM[pii].pozX+5>xA[i]&&PlayerM[pii].pozX-5<xA[i]&&PlayerM[pii].pozY+5>yA[i]&&PlayerM[pii].pozY-5<yA[i])
                             Boty[i].Rezerwacja="";//zwolnij rezerwacje jeśli napotkasz podrodze innego playera
                           }
 
                      }else
                      {
                         PlayerM[pi].wrocilem=true;//[else]poinformuj,że enemy wrócił
                         Boty[i].Rezerwacja="";//zwolnij rezerwacje(bo juz cie nie goni)
                         Boty[i].Hp=Boty[i].HpMax;//v1.9.1
                      }
                  }else
                  {
                     PlayerM[pi].wrocilem=false;
                     Boty[i].Wrog.x+=dx[jjjOld[i]];//do optymalizacji
                     Boty[i].Wrog.y+=dy[jjjOld[i]];//do optymalizacji
                  }
 
              }//Enemy wraca na swoją pozycje!
 
 
          //if(prev[i]!=Boty[i].wrog.getPosition())///Gdy pozycja enemy sie zmieniła[WYŚLIJPACKET!!!]
          if(prev[i].x!=Boty[i].Wrog.x||prev[i].y!=Boty[i].Wrog.y)
             {
                 if(PlayerM[pi].wrocilem==false||PlayerM[pi].atak==true)//wyslij poz.gdy goni playera lub wraca.
                    {
 
                       sf::PacketEnE;
                       shortint what=5;//5 to enemy
                       string jakiE=Boty[i].name;
                       sf::Vector2fpozEnE(0,0);
 
                       //pozEnE.x=Boty[i].wrog.getPosition().x;//e1.enemy.getPosition().x;//poz enemy
                       //pozEnE.y=Boty[i].wrog.getPosition().y;
                       pozEnE.x=Boty[i].Wrog.x;//poz enemy
                       pozEnE.y=Boty[i].Wrog.y;
 
                       EnE<<what<<pozEnE.x<<pozEnE.y<<jakiE<<Boty[i].Hp;
                       socket.send(EnE);
                       EnE.clear();
 
                       if(Boty[i].Hp<0)
                         {
                            Boty[i].Hp=Boty[i].HpMax;
                            Boty[i].Respawn=true;//zarezerwuj
                            //Boty[i].wrog.setPosition(sf::Vector2f(xAGlob[i]*32,yAGlob[i]*32));
                            Boty[i].Wrog.x=xAGlob[i]*32;
                            Boty[i].Wrog.y=yAGlob[i]*32;
                         }
                    }
 
              }
 
       }//dalszarezerwacja(odwracamdowyslijpakiet)
 
   }//for(inti=0;i<Boty.size();i++)
 
}//for(intpi=0;pi<PlayerM.size();pi++)

Komentarze:


Imię:

Treść komentarza:

Wybierz swój avatar:

Anonim Pan Pani Chłopiec Dziewczynka Geek Żartowniś Luzak Złośnik Zagubiony

Przepisz kod:


Dodaj komentarz