a7la7ekaya
  1. youtube
  2. rss

أهلا وسهلا بك إلى منتديات حصري | العاب - اسلاميات - اغاني - افلام - برامج - نكت - منوعات.
أهلا وسهلا بك زائرنا الكريم، إذا كانت هذه زيارتك الأولى للمنتدى، فيرجى التكرم بزيارة صفحة التعليمـــات، بالضغط هنا.كما يشرفنا أن تقوم بالتسجيل بالضغط هنا إذا رغبت بالمشاركة في المنتدى، أما إذا رغبت بقراءة المواضيع والإطلاع فتفضل بزيارة القسم الذي ترغب أدناه.

الرئيسيةاليوميةس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول


منتديات حصري | العاب - اسلاميات - اغاني - افلام - برامج - نكت - منوعات :: الألعاب الإلكترونية :: ألعاب أونلاين :: قسم لعبة حرب التتار :: ...¦ ¦ تطوير حرب التتار | Tatar war development~... :: منتدي الملفات المفكوكه 100% شغاله

 
شاطر
بيانات كاتب الموضوع
ملف War.php مفكوك 100%
كاتب الموضوعرسالة
المعلومات
الكاتب:
اللقب:
>صٍْآحٍّبٌَِ آلمًوٍقٌٍعًٍ<
الرتبه:
>صٍْآحٍّبٌَِ آلمًوٍقٌٍعًٍ
الصورة الرمزية
 
avatar

البيانات
ذكر
عدد المساهمات : 43
نقاط : 1900
تاريخ التسجيل : 10/12/2012
 
 

 

التوقيت

الإتصالات
الحالة:
وسائل الإتصال:
معاينة صفحة البيانات الشخصي للعضو http://7asry.cool.st

 

موضوع: ملف War.php مفكوك 100% الأربعاء مارس 20, 2013 9:40 pm






ملف War.php مفكوك 100%

الكود:
            }

            continue;
          }
        }
      }

      $crannyTotalSize = floor ($crannyTotalSize * $GameMetadata['tribes'][$fromVillageRow['tribe_id']]['crannyFactor']);
      $defenseTroops = array ();
      $totalDefensePower = 0;
      $troops_num = trim ($toVillageRow['troops_num']);
      if ($troops_num != '')
      {
        $vtroopsArr = explode ('|', $troops_num);
        foreach ($vtroopsArr as $vtroopsStr)
        {
          @list ($tvid, $tvtroopsStr) = explode (':', $vtroopsStr);
          $incFactor = ((($toVillageRow['is_oasis'] AND intval ($toVillageRow['player_id']) == 0) AND $tvid == 0 - 1) ? floor ($toVillageRow['oasisElapsedTimeInSeconds'] / 86400) : 0);
          $_hasHero = FALSE;
          $vtroops = array ();
          $_arr = explode (',', $tvtroopsStr);
          foreach ($_arr as $_arrStr)
          {
            @list ($_tid, $_tnum) = explode (' ', $_arrStr);
            if ($_tnum == 0 - 1)
            {
              $_hasHero = TRUE;
              continue;
            }
            else
            {
              $vtroops[$_tid] = $_tnum + $incFactor;
              continue;
            }
          }

          if ($tvid == 0 - 1)
          {
            $hero_in_village_id = intval ($this->provider->fetchScalar ('SELECT p.hero_in_village_id FROM p_players p WHERE p.id=%s', array (intval ($toVillageRow['player_id']))));
            if ((0 < $hero_in_village_id AND $hero_in_village_id == $toVillageRow['id']))
            {
              $_hasHero = TRUE;
            }
          }

          $defenseTroops[$tvid] = $this->_getDefenseTroopsForVillage (($tvid == 0 - 1 ? $toVillageRow['id'] : $tvid), $vtroops, $_hasHero, $toVillageRow['people_count'], $wallPower, FALSE);
          $totalDefensePower += $defenseTroops[$tvid]['total_power'];
        }
      }

      $warResult = $this->getWarResult ($attackTroops, $defenseTroops, $totalDefensePower, $taskRow['proc_type'] == QS_WAR_ATTACK_PLUNDER);
      $harvestResources = '0 0 0 0';
      $harvestInfoStruct = array ('string' => $harvestResources, 'sum' => 0);
      if (!$warResult['all_attack_killed'])
      {
        $harvestInfoStruct = $this->_harvestTroopsFrom ($toVillageRow, $warResult['attackTroops']['total_carry_load'], $crannyTotalSize);
        $harvestResources = $harvestInfoStruct['string'];
      }

      $reduceConsumption = $warResult['attackTroops']['total_dead_consumption'];
      if (($warResult['all_attack_killed'] AND $procInfo['troopsArray']['hasHero']))
      {
        $reduceConsumption += $GameMetadata['troops'][$procInfo['troopsArray']['heroTroopId']]['crop_consumption'];
      }

      if (0 < $reduceConsumption)
      {
        $this->_updateVillage ($fromVillageRow, $reduceConsumption, ($warResult['all_attack_killed'] AND $procInfo['troopsArray']['hasHero']));
      }

      if ((($procInfo['troopsArray']['hasHero'] AND !$warResult['all_attack_killed']) AND 1 <= $warResult['defense_total_dead_number']))
      {
        $heroStatisticPoint = $warResult['defense_total_dead_number'];
        $this->provider->executeQuery ('UPDATE p_players p SET p.hero_points=p.hero_points+%s, p.hero_level=p.hero_level+floor(p.hero_points/(100*(p.hero_level+1))) WHERE p.id=%s', array ($heroStatisticPoint, intval ($fromVillageRow['player_id'])));
      }

      $defenseTroopsStr = '';
      $defenseReduceConsumption = 0;
      $reportTroopTable = array ();
      $tribeId = 0;
      foreach ($warResult['defenseTroops'] as $vid => $troopsTable)
      {
        $defenseReduceConsumption += $troopsTable['total_dead_consumption'];
        $newTroops = '';
        $thisInforcementDied = TRUE;
        foreach ($troopsTable['troops'] as $tid => $tprop)
        {
          if ($newTroops != '')
          {
            $newTroops .= ',';
          }

          $newTroops .= $tid . ' ' . $tprop['live_number'];
          if (0 < $tprop['live_number'])
          {
            $thisInforcementDied = FALSE;
          }

          $tribeId = $GameMetadata['troops'][$tid]['for_tribe_id'];
          if (!isset ($reportTroopTable[$tribeId]))
          {
            $reportTroopTable[$tribeId] = array ('troops' => array (), 'hero' => array ('number' => 0, 'dead_number' => 0));
          }

          if ($tid != 99)
          {
            if (!isset ($reportTroopTable[$tribeId]['troops'][$tid]))
            {
              $reportTroopTable[$tribeId]['troops'][$tid] = array ('number' => $tprop['number'], 'dead_number' => $tprop['number'] - $tprop['live_number']);
              continue;
            }
            else
            {
              $reportTroopTable[$tribeId]['troops'][$tid]['number'] += $tprop['number'];
              $reportTroopTable[$tribeId]['troops'][$tid]['dead_number'] += $tprop['number'] - $tprop['live_number'];
              continue;
            }

            continue;
          }
        }

        if ($troopsTable['hasHero'])
        {
          ++$reportTroopTable[$tribeId]['hero']['number'];
        }

        if ((0 < $troopsTable['total_live_number'] AND $troopsTable['hasHero']))
        {
          if ($vid != 0 - 1)
          {
            if ($newTroops != '')
            {
              $newTroops .= ',';
            }

            $newTroops .= $troopsTable['heroTroopId'] . ' -1';
          }

          if ((($vid == 0 - 1 AND !$toVillageRow['is_oasis']) AND $warResult['all_attack_killed']))
          {
            $heroStatisticPoint = 1;
            $this->provider->executeQuery ('UPDATE p_players p SET p.hero_points=p.hero_points+%s, p.hero_level=p.hero_level+floor(p.hero_points/(100*(p.hero_level+1))) WHERE p.id=%s', array ($heroStatisticPoint, intval ($toVillageRow['player_id'])));
          }

          $thisInforcementDied = FALSE;
        }

        if (($troopsTable['hasHero'] AND $troopsTable['total_live_number'] <= 0))
        {
          ++$reportTroopTable[$tribeId]['hero']['dead_number'];
          $defenseReduceConsumption += $GameMetadata['troops'][$troopsTable['heroTroopId']]['crop_consumption'];
        }

        $this->_updateVillageOutTroops ($vid, $toVillageRow['id'], $newTroops, ($troopsTable['hasHero'] AND $troopsTable['total_live_number'] <= 0), $thisInforcementDied, intval ($toVillageRow['player_id']));
        if (($vid == 0 - 1 AND $toVillageRow['is_oasis']))
        {
          $this->provider->executeQuery ('UPDATE p_villages v SET v.creation_date=NOW() WHERE v.id=%s', array (intval ($toVillageRow['id'])));
        }

        if ((!$thisInforcementDied OR $vid == 0 - 1))
        {
          if ($defenseTroopsStr != '')
          {
            $defenseTroopsStr .= '|';
          }

          $defenseTroopsStr .= $vid . ':' . $newTroops;
          continue;
        }
      }

      if ((($toVillageRow['is_oasis'] AND 0 < intval ($toVillageRow['player_id'])) AND isset ($reportTroopTable[4])))
      {
        unset ($reportTroopTable[4]);
      }

      $this->provider->executeQuery ('UPDATE p_villages v SET v.troops_num=\'%s\' WHERE v.id=%s', array ($defenseTroopsStr, $toVillageRow['id']));
      if (!($toVillageRow['is_oasis'] AND intval ($toVillageRow['player_id']) == 0))
      {
        $_tovid = ($toVillageRow['is_oasis'] ? intval ($toVillageRow['parent_id']) : $toVillageRow['id']);
        $this->provider->executeQuery ('UPDATE p_villages v SET v.crop_consumption=v.crop_consumption-%s WHERE v.id=%s', array ($defenseReduceConsumption, intval ($_tovid)));
      }

      $villageTotallyDestructed = FALSE;
      $wallDestructionResult = '';
      $catapultResult = '';
      if (((!$toVillageRow['is_oasis'] AND !$warResult['all_attack_killed']) AND $taskRow['proc_type'] != QS_WAR_ATTACK_PLUNDER))
      {
        $wallDestrTroopsCount = 0;
        $buildDestrTroopsCount = 0;
        foreach ($warResult['attackTroops']['troops'] as $tid => $tprop)
        {
          if ((((($tid == 7 OR $tid == 17) OR $tid == 27) OR $tid == 106) OR $tid == 57))
          {
            $wallDestrTroopsCount = $tprop['live_number'];
            continue;
          }
          else
          {
            if ((((($tid == 8 OR $tid == 18) OR $tid == 28) OR $tid == 107) OR $tid == 58))
            {
              $buildDestrTroopsCount = $tprop['live_number'];
              continue;
            }

            continue;
          }
        }

        if ($procInfo['troopsArray']['hasWallDest'])
        {
          if (0 < $wallLevel)
          {
            $dropLevels = 0;
            if (2 * $wallPower < $wallDestrTroopsCount)
            {
              $dropLevels = floor ($wallDestrTroopsCount / (2 * $wallPower));
              if ($wallLevel - $dropLevels < 0)
              {
                $dropLevels = $wallLevel;
              }
            }

            if (0 < $dropLevels)
            {
              $wallDestructionResult = $wallLevel . '-' . ($wallLevel - $dropLevels);
              $wallLevel -= $dropLevels;
              $mq = new QueueJobModel ();
              while (0 < $dropLevels--)
              {
                $mq->upgradeBuilding ($toVillageRow['id'], $wallBid, $wallItemId, TRUE);
              }
            }
            else
            {
              $wallDestructionResult = '-';
            }
          }
          else
          {
            $wallDestructionResult = '+';
          }
        }

        if (trim ($procInfo['catapultTarget']) != '')
        {
          $catapultTargetArr = explode (':', $procInfo['catapultTarget']);
          $catapultTargetArr = explode (' ', $catapultTargetArr[1]);
          $buildingsInfo = array ();
          $bStr = trim ($toVillageRow['buildings']);
          if ($bStr != '')
          {
            $bStrArr = explode (',', $bStr);
            $_i = 0;
            foreach ($bStrArr as $b2Str)
            {
              ++$_i;
              @list ($item_id, $level, $update_state) = explode (' ', $b2Str);
              if ((($item_id == 31 OR $item_id == 32) OR $item_id == 33))
              {
                continue;
              }

              if (0 < $level)
              {
                $buildingsInfo[] = array ('id' => $_i, 'item_id' => $item_id, 'level' => $level);
                continue;
              }
            }
          }

          $catapultTargetInfoArr = array ();
          if (0 < sizeof ($buildingsInfo))
          {
            foreach ($catapultTargetArr as $catapultTargetItemId)
            {
              $targetExists = FALSE;
              foreach ($buildingsInfo as $bInfo)
              {
                if ($catapultTargetItemId == $bInfo['item_id'])
                {
                  $catapultTargetInfoArr[] = $bInfo;
                  $targetExists = TRUE;
                  break;
                }
              }

              if (!$targetExists)
              {
                $_randIndex = mt_rand (0, sizeof ($buildingsInfo) - 1);
                $catapultTargetInfoArr[] = $buildingsInfo[$_randIndex];
                continue;
              }
            }
          }

          if (0 < sizeof ($catapultTargetInfoArr))
          {
            if (1 < sizeof ($catapultTargetInfoArr))
            {
              if ($catapultTargetInfoArr[0]['id'] == $catapultTargetInfoArr[1]['id'])
              {
                $tmp = $catapultTargetInfoArr[0];
                $catapultTargetInfoArr = array ();
                $catapultTargetInfoArr[] = $tmp;
              }
            }

            $buildDestrTroopsCount = floor ($buildDestrTroopsCount / sizeof ($catapultTargetInfoArr));
            foreach ($catapultTargetInfoArr as $catapultTargetInfoItem)
            {
              if ($catapultResult != '')
              {
                $catapultResult .= '#';
              }

              $canDestructBuilding = $catapultTargetInfoItem['level'] * $buildinStabilityFactor * 4 <= $buildDestrTroopsCount;
              if ($canDestructBuilding)
              {
                $dropBuildingLevels = floor ($buildDestrTroopsCount / ($catapultTargetInfoItem['level'] * $buildinStabilityFactor * 4));
                if ($catapultTargetInfoItem['level'] - $dropBuildingLevels < 0)
                {
                  $dropBuildingLevels = $catapultTargetInfoItem['level'];
                }

                $catapultResult .= $catapultTargetInfoItem['item_id'] . ' ' . $catapultTargetInfoItem['level'] . ' ' . ($catapultTargetInfoItem['level'] - $dropBuildingLevels);
                $mq = new QueueJobModel ();
                while (0 < $dropBuildingLevels--)
                {
                  $mq->upgradeBuilding ($toVillageRow['id'], $catapultTargetInfoItem['id'], $catapultTargetInfoItem['item_id'], TRUE);
                }

                continue;
              }

              $catapultResult .= $catapultTargetInfoItem['item_id'] . ' ' . $catapultTargetInfoItem['level'] . ' -1';
            }
          }

          if ((!$toVillageRow['is_capital'] AND !$toVillageRow['is_special_village']))
          {
            $checkToVillageRow = $this->_getVillageInfo ($taskRow['to_village_id']);
            $villageTotallyDestructed = TRUE;
            $bStr = trim ($checkToVillageRow['buildings']);
            if ($bStr != '')
            {
              $bStrArr = explode (',', $bStr);
              $_i = 0;
              foreach ($bStrArr as $b2Str)
              {
                ++$_i;
                @list ($item_id, $level, $update_state) = explode (' ', $b2Str);
                if (0 < $level)
                {
                  $villageTotallyDestructed = FALSE;
                  break;
                }
              }
            }

            if ($villageTotallyDestructed)
            {
              $catapultResult = '+';
              $this->leaveVillage ($toVillageRow['id'], $toVillageRow['player_id'], $toVillageRow['people_count'], $toVillageRow['parent_id']);
            }
          }
        }
      }

      $doTroopsBack = TRUE;
      $villageCaptured = FALSE;
      $captureResult = '';
      if (((((((($procInfo['troopsArray']['hasKing'] AND !$toVillageRow['is_oasis']) AND !$warResult['all_attack_killed']) AND $taskRow['proc_type'] != QS_WAR_ATTACK_PLUNDER) AND !$toVillageRow['is_capital']) AND !$villageTotallyDestructed) AND $warResult['all_defense_killed']) AND $toVillageRow['player_id'] != $fromVillageRow['player_id']))
      {
        $checkToVillageRow = $this->_getVillageInfo ($taskRow['to_village_id']);
        $b25_26_exists = FALSE;
        $bStr = trim ($checkToVillageRow['buildings']);
        if ($bStr != '')
        {
          $bStrArr = explode (',', $bStr);
          foreach ($bStrArr as $b2Str)
          {
            @list ($item_id, $level, $update_state) = explode (' ', $b2Str);
            if ((0 < $level AND ($item_id == 25 OR $item_id == 26)))
            {
              $b25_26_exists = TRUE;
              break;
              continue;
            }
          }
        }

        $kingIsLive = FALSE;
        foreach ($warResult['attackTroops']['troops'] as $tid => $tprop)
        {
          if ((((($tid == 9 OR $tid == 19) OR $tid == 29) OR $tid == 108) OR $tid == 59))
          {
            $kingIsLive = 0 < $tprop['live_number'];
            break;
          }
        }

        if (($kingIsLive AND !$b25_26_exists))
        {
          $allegiance_percent = $toVillageRow['allegiance_percent'];
          $allegiance_percent -= mt_rand( 11, 30 ) * $tprop['live_number'];
          if (0 < $allegiance_percent)
          {
            $this->provider->executeQuery ('UPDATE p_villages v SET v.allegiance_percent=%s WHERE v.id=%s', array ($allegiance_percent, intval ($toVillageRow['id'])));
            $captureResult = $toVillageRow['allegiance_percent'] . '-' . $allegiance_percent;
          }
          else
          {
            $allegiance_percent = 0;
            $captureResult = '+';
          }

          if ($allegiance_percent == 0)
          {
            $villageCaptured = TRUE;
            $kingCropConumption = 0;
            $doTroopsBack = FALSE;
            foreach ($warResult['attackTroops']['troops'] as $tid => $tprop)
            {
              if ((((($tid == 9 OR $tid == 19) OR $tid == 29) OR $tid == 108) OR $tid == 59))
              {
                $kingCropConumption = $GLOBALS['GameMetadata']['troops'][$tid]['crop_consumption'];
                break;
              }

              if (0 < $tprop['live_number'])
              {
                $doTroopsBack = TRUE;
                continue;
              }
            }

            $this->leaveVillage ($toVillageRow['id'], $toVillageRow['player_id'], $toVillageRow['people_count'], $toVillageRow['parent_id'], FALSE);
            $this->captureVillage ($toVillageRow, $fromVillageRow, $kingCropConumption);
          }
        }
      }

      $oasisResult = '';
      if (((((($procInfo['troopsArray']['hasHero'] AND $toVillageRow['is_oasis']) AND !$warResult['all_attack_killed']) AND $warResult['all_defense_killed']) AND $toVillageRow['player_id'] != $fromVillageRow['player_id']) AND 10 <= $heroBuildingLevel))
      {
        $canCaptureOasis = FALSE;
        $numberOfOwnedOases = (trim ($fromVillageRow['village_oases_id']) == '' ? 0 : sizeof (explode (',', $fromVillageRow['village_oases_id'])));
        if ($heroBuildingLevel == 20)
        {
          $canCaptureOasis = $numberOfOwnedOases < 3;
        }
        else
        {
          if (15 <= $heroBuildingLevel)
          {
            $canCaptureOasis = $numberOfOwnedOases < 2;
          }
          else
          {
            if (1 <= $heroBuildingLevel)
            {
              $canCaptureOasis = $numberOfOwnedOases < 1;
            }
          }
        }

        $oasisInRang = TRUE;
        $rang = 3;
        $map_size = $SetupMetadata['map_size'];
        $x = $fromVillageRow['rel_x'];
        $y = $fromVillageRow['rel_y'];
        $mi = 0 - $rang;
        while ($mi <= $rang)
        {
          if ($oasisInRang)
          {
            break;
          }

          $mj = 0 - $rang;
          while ($mj <= $rang)
          {
            if ($toVillageRow['id'] == $this->__getVillageId ($map_size, $this->__getCoordInRange ($map_size, $x + $mi), $this->__getCoordInRange ($map_size, $y + $mj)))
            {
              $oasisInRang = TRUE;
              break;
            }

            ++$mj;
          }

          ++$mi;
        }

        if (($canCaptureOasis AND $oasisInRang))
        {
          $qm = new QueueJobModel ();
          if (intval ($toVillageRow['player_id']) == 0)
          {
            $oasisResult = '+';
            $qm->captureOasis ($toVillageRow['id'], $fromVillageRow['player_id'], $fromVillageRow['id'], TRUE);
          }
          else
          {
            $allegiance_percent = $toVillageRow['allegiance_percent'];
            $allegiance_percent -= mt_rand(10, 30);
            if (0 < $allegiance_percent)
            {
              $oasisResult = $toVillageRow['allegiance_percent'] . '-' . $allegiance_percent;
              $this->provider->executeQuery ('UPDATE p_villages v SET v.allegiance_percent=%s WHERE v.id=%s', array ($allegiance_percent, intval ($toVillageRow['id'])));
            }
            else
            {
              $allegiance_percent = 0;
              $oasisResult = '+';
            }

            if ($allegiance_percent == 0)
            {
              $qm->captureOasis ($toVillageRow['id'], $toVillageRow['player_id'], $toVillageRow['parent_id'], FALSE);
              $qm->captureOasis ($toVillageRow['id'], $fromVillageRow['player_id'], $fromVillageRow['id'], TRUE);
            }
          }
        }
      }

      $newTroops = '';
      foreach ($warResult['attackTroops']['troops'] as $tid => $tprop)
      {
        if ($newTroops != '')
        {
          $newTroops .= ',';
        }

        $newTroops .= $tid . ' ' . $tprop['number'] . ' ' . ($tprop['number'] - $tprop['live_number']);
      }

      if ($procInfo['troopsArray']['hasHero'])
      {
        if ($newTroops != '')
        {
          $newTroops .= ',';
        }

        $newTroops .= 0 - 1 . ' ' . 1 . ' ' . ($warResult['all_attack_killed'] ? 1 : 0);
      }

      $attackReportTroops = $newTroops;
      $defenseReportTroops = '';
      foreach ($reportTroopTable as $tribeId => $defTroops)
      {
        $defenseReportTroops1 = '';
        if ($tribeId == 4)
        {
          $monsterTroops = array ();
          foreach ($GLOBALS['GameMetadata']['troops'] as $t4k => $t4v)
          {
            if ($t4v['for_tribe_id'] == 4)
            {
              $monsterTroops[$t4k] = array ('number' => (isset ($defTroops['troops'][$t4k]) ? $defTroops['troops'][$t4k]['number'] : 0), 'dead_number' => (isset ($defTroops['troops'][$t4k]) ? $defTroops['troops'][$t4k]['dead_number'] : 0));
              continue;
            }
          }

          $defTroops['troops'] = $monsterTroops;
        }

        foreach ($defTroops['troops'] as $tid => $tArr)
        {
          if ($defenseReportTroops1 != '')
          {
            $defenseReportTroops1 .= ',';
          }

          $defenseReportTroops1 .= $tid . ' ' . $tArr['number'] . ' ' . $tArr['dead_number'];
        }

        if (0 < $defTroops['hero']['number'])
        {
          if ($defenseReportTroops1 != '')
          {
            $defenseReportTroops1 .= ',';
          }

          $defenseReportTroops1 .= 0 - 1 . ' ' . $defTroops['hero']['number'] . ' ' . $defTroops['hero']['dead_number'];
        }

        if ($defenseReportTroops1 != '')
        {
          if ($defenseReportTroops != '')
          {
            $defenseReportTroops .= '#';
          }

          $defenseReportTroops .= $defenseReportTroops1;
          continue;
        }
      }

      $timeInSeconds = $taskRow['remainingTimeInSeconds'];
      $attackDigit = 0;
      $defenseDigit = 0;
      if ($warResult['all_attack_killed'])
      {
        $attackDigit = 3;
        $defenseDigit = (0 < $warResult['defense_total_dead_number'] ? 5 : 4);
      }
      else
      {
        $attackDigit = (0 < $warResult['attackTroops']['total_dead_number'] ? 2 : 1);
        $defenseDigit = (0 < $warResult['defense_total_dead_number'] ? 6 : 7);
      }

      $reportResult = $defenseDigit * 10 + $attackDigit;
      $reportCategory = 3;
      $reportBody = $attackReportTroops . '|' . $defenseReportTroops . '|' . $warResult['attackTroops']['total_carry_load'] . '|' . $harvestResources . '|' . $wallDestructionResult . '|' . $catapultResult . '|' . $oasisResult . '|' . $captureResult;
      $r = new ReportModel ();
      $r->createReport (intval ($fromVillageRow['player_id']), intval ($toVillageRow['player_id']), intval ($fromVillageRow['id']), intval ($toVillageRow['id']), $reportCategory, $reportResult, $reportBody, $timeInSeconds);
      if (intval ($toVillageRow['player_id']) != intval ($fromVillageRow['player_id']))
      {
        $statisticPoint = 0;
        $harvestPoint = $harvestInfoStruct['sum'];
        if ((0 < intval ($toVillageRow['player_id']) AND intval ($toVillageRow['tribe_id']) != 5))
        {
          $statisticPoint = $warResult['attackTroops']['total_dead_number'];
          $this->provider->executeQuery ('UPDATE p_players p SET p.defense_points=p.defense_points+%s, p.week_defense_points=p.week_defense_points+%s WHERE p.id=%s', array ($statisticPoint, $statisticPoint, intval ($toVillageRow['player_id'])));
        }

        if ((0 < intval ($fromVillageRow['player_id']) AND intval ($fromVillageRow['tribe_id']) != 5))
        {
          $statisticPoint = $warResult['defense_total_dead_number'];
          $this->provider->executeQuery ('UPDATE p_players p SET p.attack_points=p.attack_points+%s, p.week_attack_points=p.week_attack_points+%s, p.week_thief_points=p.week_thief_points+%s WHERE p.id=%s', array ($statisticPoint, $statisticPoint, $harvestPoint, intval ($fromVillageRow['player_id'])));
        }

        if (0 < intval ($toVillageRow['alliance_id']))
        {
          $statisticPoint = $warResult['attackTroops']['total_dead_number'];
          $allianceRate = ($warResult['all_attack_killed'] ? 1 : 0);
          $this->provider->executeQuery ('UPDATE p_alliances p SET p.rating=p.rating+%s, p.defense_points=p.defense_points+%s, p.week_defense_points=p.week_defense_points+%s WHERE p.id=%s', array ($allianceRate, $statisticPoint, $statisticPoint, intval ($toVillageRow['alliance_id'])));
        }

        if (0 < intval ($fromVillageRow['alliance_id']))
        {
          $statisticPoint = $warResult['defense_total_dead_number'];
          $allianceRate = ((!$warResult['all_attack_killed'] AND 0 < $statisticPoint) ? 1 : 0);
          $this->provider->executeQuery ('UPDATE p_alliances p SET p.rating=p.rating+%s, p.attack_points=p.attack_points+%s, p.week_attack_points=p.week_attack_points+%s, p.week_thief_points=p.week_thief_points+%s WHERE p.id=%s', array ($allianceRate, $statisticPoint, $statisticPoint, $harvestPoint, intval ($fromVillageRow['alliance_id'])));
        }
      }

      if ((!$warResult['all_attack_killed'] AND $doTroopsBack))
      {
        $paramsArray = explode ('|', $taskRow['proc_params']);
        $paramsArray[sizeof ($paramsArray) - 1] = 1;
        $newTroops = '';
        foreach ($warResult['attackTroops']['troops'] as $tid => $tprop)
        {
          if ($newTroops != '')
          {
            $newTroops .= ',';
          }

          if (($villageCaptured AND (((($tid == 9 OR $tid == 19) OR $tid == 29) OR $tid == 108) OR $tid == 59)))
          {
            $tprop['live_number'] = 0;
          }

          $newTroops .= $tid . ' ' . $tprop['live_number'];
        }

        if ((!$warResult['all_attack_killed'] AND $procInfo['troopsArray']['hasHero']))
        {
          if ($newTroops != '')
          {
            $newTroops .= ',';
          }

          $newTroops .= $procInfo['troopsArray']['heroTroopId'] . ' -1';
        }

        $paramsArray[0] = $newTroops;
        $paramsArray[4] = $harvestResources;
        $newParams = implode ('|', $paramsArray);
        $this->provider->executeQuery ('UPDATE p_queue q
                SET
                    q.player_id=%s,
                    q.village_id=%s,
                    q.to_player_id=%s,
                    q.to_village_id=%s,
                    q.proc_type=%s,
                    q.proc_params=\'%s\',
                    q.end_date=(q.end_date + INTERVAL q.execution_time SECOND)
                WHERE q.id=%s', array (intval ($taskRow['to_player_id']), intval ($taskRow['to_village_id']), intval ($taskRow['player_id']), intval ($taskRow['village_id']), QS_WAR_REINFORCE, $newParams, intval ($taskRow['id'])));
        return TRUE;
      }

      return FALSE;
    }

    function getWarResult ($attackTroops, $defenseTroops, $totalDefensePower, $isPlunderAttack)
    {
      $warResult = array ('all_attack_killed' => FALSE, 'all_defense_killed' => TRUE, 'defense_total_dead_number' => 0);
      $total_defense = 0;
      foreach ($defenseTroops as $vid => $troopsTable)
      {
        $total_defense += $defenseTroops[$vid]['total_live_number'];
      }

      $attackFactor = ($isPlunderAttack ? 0.75 : 1);
      $totalAttackPower = $attackTroops['total_power'] * $attackFactor;
      $divisionFactor = 10;
      $i = 1;
      while ($i <= $divisionFactor)
      {
        $curPower = floor ($totalDefensePower * $i / $divisionFactor);
        if (0 < $curPower)
        {
          foreach ($attackTroops['troops'] as $tid => $tProp)
          {
            if ($warResult['all_attack_killed'])
            {
              break;
            }

            if ($tid == 99)
            {
              continue;
            }

            $sPower = ($tProp['single_power'] <= 0 ? 1 : $tProp['single_power']);
            $deadNum = floor ($curPower / $sPower);
            if ($tProp['live_number'] < $deadNum)
            {
              $deadNum = $tProp['live_number'];
            }

            $curPower -= $deadNum * $tProp['single_power'];
            $totalDefensePower -= $deadNum * $tProp['single_power'];
            $attackTroops['total_power'] -= $deadNum * $tProp['single_power'];
            $attackTroops['total_carry_load'] -= $deadNum * $tProp['single_carry_load'];
            $attackTroops['total_dead_consumption'] += $deadNum * $tProp['single_consumption'];
            $attackTroops['total_dead_number'] += $deadNum;
            $attackTroops['total_live_number'] -= $deadNum;
            if ($attackTroops['total_live_number'] <= 0)
            {
              $warResult['all_attack_killed'] = TRUE;
            }

            $attackTroops['troops'][$tid]['live_number'] -= $deadNum;
            if ($curPower <= 0)
            {
              break;
            }
          }
        }

        foreach ($defenseTroops as $vid => $troopsTable)
        {
          if ($defenseTroops[$vid]['total_power'] <= 0)
          {
            continue;
          }

          $curPower = floor ($totalAttackPower * $i / $divisionFactor);
          if (0 < $curPower)
          {
            foreach ($troopsTable['troops'] as $tid => $tProp)
            {
              if ($tid == 99)
              {
                continue;
              }

              $sPower = ($tProp['single_power'] <= 0 ? 1 : $tProp['single_power']);
              $deadNum = floor ($curPower / $sPower);
              if ($tProp['live_number'] < $deadNum)
              {
                $deadNum = $tProp['live_number'];
              }

              $warResult['defense_total_dead_number'] += $deadNum;
              $curPower -= $deadNum * $tProp['single_power'];
              $totalAttackPower -= $deadNum * $tProp['single_power'];
              $defenseTroops[$vid]['total_dead_number'] += $deadNum;
              $defenseTroops[$vid]['total_power'] -= $deadNum * $tProp['single_power'];
              $defenseTroops[$vid]['total_dead_consumption'] += $deadNum * $tProp['single_consumption'];
              $defenseTroops[$vid]['total_live_number'] -= $deadNum;
              $defenseTroops[$vid]['troops'][$tid]['live_number'] -= $deadNum;
              if ($curPower <= 0)
              {
                break;
              }
            }

            continue;
          }
        }

        ++$i;
      }

      $warResult['all_defense_killed'] = $total_defense <= $warResult['defense_total_dead_number'];
      $warResult['attackTroops'] = $attackTroops;
      $warResult['defenseTroops'] = $defenseTroops;
      return $warResult;
    }

    function captureVillage ($toVillageRow, $fromVillageRow, $kingCropConumption)
    {
      $GameMetadata = $GLOBALS['GameMetadata'];
      $SetupMetadata = $GLOBALS['SetupMetadata'];
      $this->provider->executeQuery ('SELECT FROM p_queue WHERE player_id=%s AND village_id=%s AND proc_type IN (%s)', array (intval ($toVillageRow['player_id']), intval ($toVillageRow['id']), QS_BUILD_CREATEUPGRADE . ',' . QS_BUILD_DROP . ',' . QS_TROOP_RESEARCH . ',' . QS_TROOP_UPGRADE_ATTACK . ',' . QS_TROOP_UPGRADE_DEFENSE . ',' . QS_TROOP_TRAINING . ',' . QS_TROOP_TRAINING_HERO . ',' . QS_WAR_REINFORCE . ',' . QS_WAR_ATTACK . ',' . QS_WAR_ATTACK_PLUNDER . ',' . QS_WAR_ATTACK_SPY . ',' . QS_CREATEVILLAGE));
      $troops_training = '';
      $troops_num = '';
      foreach ($GameMetadata['troops'] as $k => $v)
      {
        if (($v['for_tribe_id'] == 0 - 1 OR $v['for_tribe_id'] == $fromVillageRow['tribe_id']))
        {
          if ($troops_training != '')
          {
            $troops_training .= ',';
          }

          $researching_done = ($v['research_time_consume'] == 0 ? 1 : 0);
          $troops_training .= $k . ' ' . $researching_done . ' 0 0';
          if ($troops_num != '')
          {
            $troops_num .= ',';
          }

          $troops_num .= $k . ' 0';
          continue;
        }
      }

      $troops_num = '-1:' . $troops_num;
      $buildings = '';
      $bStr = trim ($toVillageRow['buildings']);
      if ($bStr != '')
      {
        $bStrArr = explode (',', $bStr);
        $mq = new QueueJobModel ();
        $ccb = 0;
        foreach ($bStrArr as $b2Str)
        {
          ++$ccb;
          if ($buildings != '')
          {
            $buildings .= ',';
          }

          @list ($item_id, $level, $update_state) = explode (' ', $b2Str);
          if (!isset ($GameMetadata['items'][$item_id]['for_tribe_id'][$fromVillageRow['tribe_id']]))
          {
            while (0 < $level--)
            {
              $mq->upgradeBuilding ($toVillageRow['id'], $ccb, $item_id, TRUE);
            }

            $item_id = $level = $update_state = 0;
          }

          $buildings .= $item_id . ' ' . $level . ' ' . $update_state;
        }
      }

      $this->provider->executeQuery ('UPDATE p_villages v
            SET
                v.parent_id=%s,
                v.tribe_id=%s,
                v.player_id=%s,
                v.alliance_id=%s,
                v.player_name=\'%s\',
                v.alliance_name=\'%s\',
                v.is_capital=0,
                v.buildings=\'%s\',
                v.troops_training=\'%s\',
                v.troops_num=\'%s\',
                v.child_villages_id=NULL,
                v.allegiance_percent=100,
                v.troops_out_num=NULL,
                v.troops_out_intrap_num=NULL,
                v.creation_date=NOW(),
                v.last_update_date=NOW()
            WHERE v.id=%s', array (intval ($fromVillageRow['id']), intval ($fromVillageRow['tribe_id']), intval ($fromVillageRow['player_id']), (0 < intval ($fromVillageRow['alliance_id']) ? intval ($fromVillageRow['alliance_id']) : 'NULL'), $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], $buildings, $troops_training, $troops_num, intval ($toVillageRow['id'])));
      $this->provider->executeQuery ('UPDATE p_villages v
            SET
                v.tribe_id=%s,
                v.player_id=%s,
                v.alliance_id=%s,
                v.player_name=\'%s\',
                v.alliance_name=\'%s\',
                v.troops_num=NULL,
                v.troops_out_num=NULL,
                v.troops_out_intrap_num=NULL
            WHERE v.parent_id=%s AND v.is_oasis=1', array (intval ($fromVillageRow['tribe_id']), intval ($fromVillageRow['player_id']), (0 < intval ($fromVillageRow['alliance_id']) ? intval ($fromVillageRow['alliance_id']) : 'NULL'), $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], intval ($toVillageRow['id'])));
      $child_villages_id = trim ($fromVillageRow['child_villages_id']);
      if ($child_villages_id != '')
      {
        $child_villages_id .= ',';
      }

      $child_villages_id .= $toVillageRow['id'];
      $this->provider->executeQuery ('UPDATE p_villages v
            SET
                v.crop_consumption=v.crop_consumption-%s,
                v.child_villages_id=\'%s\'
            WHERE v.id=%s', array ($kingCropConumption, $child_villages_id, intval ($fromVillageRow['id'])));
      $prow = $this->provider->fetchRow ('SELECT p.villages_id, p.villages_data FROM p_players p WHERE p.id=%s', array (intval ($fromVillageRow['player_id'])));
      $villages_id = trim ($prow['villages_id']);
      if ($villages_id != '')
      {
        $villages_id .= ',';
      }

      $villages_id .= $toVillageRow['id'];
      $villages_data = trim ($prow['villages_data']);
      if ($villages_data != '')
      {
        $villages_data .= '
';
      }

      $villages_data .= $toVillageRow['id'] . ' ' . $toVillageRow['rel_x'] . ' ' . $toVillageRow['rel_y'] . ' ' . $toVillageRow['village_name'];
      $this->provider->executeQuery ('UPDATE p_players p
            SET
                p.total_people_count=p.total_people_count+%s,
                p.villages_count=p.villages_count+1,
                p.selected_village_id=%s,
                p.villages_id=\'%s\',
                p.villages_data=\'%s\'
            WHERE
                p.id=%s', array (intval ($toVillageRow['people_count']), intval ($toVillageRow['id']), $villages_id, $villages_data, intval ($fromVillageRow['player_id'])));
    }

    function leaveVillage ($villageId, $playerId, $village_people_count, $parent_id, $doReset = TRUE)
    {
      $selected_village_id = intval ($this->provider->fetchScalar ('SELECT v.id FROM p_villages v WHERE v.player_id=%s AND v.is_capital=1', array (intval ($playerId))));
      $prow = $this->provider->fetchRow ('SELECT p.villages_data, p.villages_id FROM p_players p WHERE p.id=%s', array (intval ($playerId)));
      $villages_id = trim ($prow['villages_id']);
      if ($villages_id != '')
      {
        $villages_idArr = explode (',', $villages_id);
        $villages_id = '';
        foreach ($villages_idArr as $villages_idArrItem)
        {
          if ($villages_idArrItem == $villageId)
          {
            continue;
          }

          if ($villages_id != '')
          {
            $villages_id .= ',';
          }

          $villages_id .= $villages_idArrItem;
        }
      }

      $villages_data = trim ($prow['villages_data']);
      if ($villages_data != '')
      {
        $villages_dataArr = explode ('
', $villages_data);
        $villages_data = '';
        foreach ($villages_dataArr as $villages_dataArrItem)
        {
          $_varr = explode (' ', $villages_dataArrItem);
          if ($_varr[0] == $villageId)
          {
            continue;
          }

          if ($villages_data != '')
          {
            $villages_data .= '
';
          }

          $villages_data .= implode (' ', $_varr);
        }
      }

      $this->provider->executeQuery ('DELETE FROM p_merchants WHERE village_id=%s', array (intval ($villageId)));
      if (trim ($parent_id) != '')
      {
        $prow = $this->provider->fetchRow ('SELECT v.child_villages_id FROM p_villages v WHERE v.id=%s', array (intval ($parent_id)));
        $child_villages_id = trim ($prow['child_villages_id']);
        if ($child_villages_id != '')
        {
          $villages_idArr = explode (',', $child_villages_id);
          $child_villages_id = '';
          foreach ($villages_idArr as $villages_idArrItem)
          {
            if ($villages_idArrItem == $villageId)
            {
              continue;
            }

            if ($child_villages_id != '')
            {
              $child_villages_id .= ',';
            }

            $child_villages_id .= $villages_idArrItem;
          }
        }

        $this->provider->executeQuery ('UPDATE p_villages v
                SET
                    v.child_villages_id=\'%s\'
                WHERE v.id=%s', array ($child_villages_id, intval ($parent_id)));
      }

      if ($doReset)
      {
        $this->provider->executeQuery ('UPDATE p_villages v
                SET
                    v.tribe_id=IF(v.is_oasis=1, 4, 0),
                    v.parent_id=NULL,
                    v.player_id=NULL,
                    v.alliance_id=NULL,
                    v.player_name=NULL,
                    v.village_name=NULL,
                    v.alliance_name=NULL,
                    v.is_capital=0,
                    v.people_count=2,
                    v.crop_consumption=2,
                    v.time_consume_percent=100,
                    v.offer_merchants_count=0,
                    v.resources=NULL,
                    v.cp=NULL,
                    v.buildings=NULL,
                    v.troops_training=NULL,
                    v.child_villages_id=NULL,
                    v.village_oases_id=NULL,
                    v.troops_trapped_num=0,
                    v.allegiance_percent=100,
                    v.troops_num=IF(v.is_oasis=1, \'-1:31 0,34 0,37 0\', NULL),
                    v.troops_out_num=NULL,
                    v.troops_intrap_num=NULL,
                    v.troops_out_intrap_num=NULL,
                    v.creation_date=NOW()
                WHERE v.id=%s OR (v.parent_id=%s AND v.is_oasis=1)', array (intval ($villageId), intval ($villageId)));
      }

      $this->provider->executeQuery ('UPDATE p_villages v
            SET
                v.parent_id=NULL
            WHERE v.parent_id=%s', array (intval ($villageId)));
      $this->provider->executeQuery ('UPDATE p_players p
            SET
                p.total_people_count=IF(p.total_people_count-%s<0, 0, p.total_people_count-%s),
                p.villages_count=IF(p.villages_count-1<1, 1, p.villages_count-1),
                p.selected_village_id=%s,
                p.villages_id=\'%s\',
                p.villages_data=\'%s\'
            WHERE p.id=%s', array (intval ($village_people_count), intval ($village_people_count), intval ($selected_village_id), $villages_id, $villages_data, intval ($playerId)));
    }

    function _harvestTroopsFrom ($villageRow, $maxCarryLoad, $crannyTotalSize)
    {
      if (($maxCarryLoad <= 0))
      {
        return array ('string' => '0 0 0 0', 'sum' => 0);
      }

      $resources = array ();
      $r_arr = explode (',', $villageRow['resources']);
      foreach ($r_arr as $r_str)
      {
        $r2 = explode (' ', $r_str);
        $prate = floor ($r2[4] * (1 + $r2[5] / 100)) - ($r2[0] == 4 ? $villageRow['crop_consumption'] : 0);
        $current_value = floor ($r2[1] + $villageRow['elapsedTimeInSeconds'] * ($prate / 3600));
        if ($r2[2] < $current_value)
        {
          $current_value = $r2[2];
        }

        $resources[$r2[0]] = array ('current_value' => $current_value - $crannyTotalSize, 'store_max_limit' => $r2[2], 'store_init_limit' => $r2[3], 'prod_rate' => $r2[4], 'prod_rate_percentage' => $r2[5]);
      }

      $divFactor = 4;
      $harvest = array (0, 0, 0, 0);
      $sum = 0;
      while (0 < $maxCarryLoad)
      {
        $curTotalRes = 0;
        $m = 0;
        foreach ($resources as $k => $rdata)
        {
          $v = $rdata['current_value'];
          $take = floor ($maxCarryLoad / $divFactor);
          if (0 < $v)
          {
            if ($v < $take)
            {
              $take = $v;
            }

            $maxCarryLoad -= $take;
            $resources[$k]['current_value'] -= $take;
            $harvest[$m] += $take;
            $sum += $take;
            $curTotalRes += $resources[$k]['current_value'];
          }

          ++$m;
        }

        if (($curTotalRes <= 0 AND $divFactor == 1))
        {
          break;
        }

        $divFactor = 1;
      }

      $resourcesStr = '';
      foreach ($resources as $k => $v)
      {
        if ($resourcesStr != '')
        {
          $resourcesStr .= ',';
        }

        $resourcesStr .= sprintf ('%s %s %s %s %s %s', $k, $v['current_value'] + $crannyTotalSize, $v['store_max_limit'], $v['store_init_limit'], $v['prod_rate'], $v['prod_rate_percentage']);
      }

      $elapsedTimeInSeconds = $villageRow['elapsedTimeInSeconds'];
      @list ($this->cpValue, $this->cpRate) = explode (' ', $this->data['cp']);
      $cpValue = round ($cpValue + $elapsedTimeInSeconds * ($cpRate / 86400), 4);
      $cp = $cpValue . ' ' . $cpRate;
      $this->provider->executeQuery ('UPDATE p_villages v
            SET
                v.resources=\'%s\',
                v.cp=\'%s\',
                v.last_update_date=NOW()
            WHERE
                v.id=%s', array ($resourcesStr, $cp, intval ($villageRow['id'])));
      return array ('string' => implode (' ', $harvest), 'sum' => $sum);
    }

    function __getCoordInRange ($map_size, $x)
    {
      if ($map_size <= $x)
      {
        $x -= $map_size;
      }
      else
      {
        if ($x < 0)
        {
          $x = $map_size + $x;
        }
      }

      return $x;
    }

    function __getVillageId ($map_size, $x, $y)
    {
      return $x * $map_size + ($y + 1);
    }
  }

?>















 الموضوع الأصلي : ملف War.php مفكوك 100% //   المصدر : منتديات أحلى حكاية // الكاتب: Admin



ملف War.php مفكوك 100%

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


الكلمات الدليلية (Tags)
لا يوجد


الــرد الســـريـع

خــدمات المـوضـوع
 KonuEtiketleri كلمات دليليه
ملف War.php مفكوك 100% , ملف War.php مفكوك 100% , ملف War.php مفكوك 100% ,ملف War.php مفكوك 100% ,ملف War.php مفكوك 100% , ملف War.php مفكوك 100%
 KonuLinki رابط الموضوع
 Konu BBCode BBCode
 KonuHTML Kodu HTMLcode
إذا وجدت وصلات لاتعمل في الموضوع او أن الموضوع [ ملف War.php مفكوك 100% ] مخالف ,, من فضلك راسل الإدارة من هنا
>




مواضيع ذات صلة


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.