Сенат    Галерея    Библиотека    Цезопедия    Скачать    Форум    Ссылки    О сайте

Текущее время: 18 ноя 2018, 14:55


Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 01 июн 2014, 18:35 
Аватара пользователя
Консул
Консул
Не в сети

Зарегистрирован: 15 окт 2012, 11:48
Сообщения: 248
Откуда: Экибастуз, но на самом деле думаю еще дальше...
Oldnick писал(а):
Единственно что я выстроил город из домов одного уровня. Если прийдется суммировать несколько различных типов домов, возможно округляться будет каждый тип отдельно. А может и нет. Это проверю позже.
Здесь как раз и сложности. Продолжай! У меня пока не получилось разобраться +)

_________________
... Тишина вокруг. Погружается лист каштана в ручей прозрачный...


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 04 июн 2014, 12:19 
Аватара пользователя
Консул
Консул
Не в сети

Зарегистрирован: 15 окт 2012, 11:48
Сообщения: 248
Откуда: Экибастуз, но на самом деле думаю еще дальше...
С расчетом налога вроде разобралась [ссылка] +)

_________________
... Тишина вокруг. Погружается лист каштана в ручей прозрачный...


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 04 июн 2014, 15:40 
Цензор
Цензор
Не в сети

Зарегистрирован: 07 июл 2013, 00:15
Сообщения: 88
Откуда: Киев-Феодосия
Выходит, остатки каждого дома суммируются и округляются вниз, причем отдельно для сектора плебеев и отдельно для патрициев? Интересно было бы узнать логику авторов при утверждении такой формулы.

А ты пробовала только для одного сейва рассчитывать? Почему там подчеркнуто, что правильно считает именно для него?

Я, кстати, вкурил, наконец, откуда взялись твои 200% в формуле. Должен сказать, что случай с этой формулой был одним из самых сложных, что мне попадались, несмотря на мой 10-летний опыт изучения технических инструкций на английском языке и донесения потом этой информации до простых людей на языке доступном. :shock: :o :roll: :) :D :lol:
Чуть позже попробую разъяснить твою остроумную логику для понимания широкой общественностью.

_________________
Lingua latina non penis canis est
Эксперименты провожу на старенькой версии от 7-го волка, для которой не существует патча. Поэтому не факт, что результаты будут справедливы и для вашей версии. Проверяйте у себя или используйте на свой страх и риск. ;)


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 04 июн 2014, 19:20 
Аватара пользователя
Консул
Консул
Не в сети

Зарегистрирован: 15 окт 2012, 11:48
Сообщения: 248
Откуда: Экибастуз, но на самом деле думаю еще дальше...
Oldnick писал(а):
А ты пробовала только для одного сейва рассчитывать? Почему там подчеркнуто, что правильно считает именно для него?
Нет, не только для одного. На других тоже пробовала. Всё работает. Но вдруг найдутся исключения. Кто найдет, покажите +)

_________________
... Тишина вокруг. Погружается лист каштана в ручей прозрачный...


Последний раз редактировалось Angel A 12 июн 2014, 12:32, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 12 июн 2014, 10:37 
Цензор
Цензор
Не в сети

Зарегистрирован: 07 июл 2013, 00:15
Сообщения: 88
Откуда: Киев-Феодосия
Итак, как и обещал, рассказываю про 200% от Angel A. :)

Некоторая логика в назывании налогового числа из c3model.txt "двумястами процентами налога с одного жителя" есть. Если представить, что ставка налога у финансового советника установлена в размере 200% (т.е. отдавать в два раза больше, чем зарабатывает :twisted: ), то один житель дома как раз и будет в месяц платить такую сумму, какая указана в c3model.txt. А зная, сколько он заплатит при 200%, можно высчитать и для 5% и для 10% и т.д. 5% - это в 40 раз меньше чем 200%, соответственно, один житель при налоговой ставке 5% будет платить (число из c3model.txt)/40, и т.д.

Мне, однако, такая модель расчетов кажется несколько громоздкой и оторванной от реальной человеческой практики, когда налог высчитывают с дохода. Соответственно, моя интерпретация мне кажется более легкой для понимания широкой общественностью. К тому же в моем варианте в знаменателе на два нуля меньше. :)
Впрочем, каждый может выбрать себе способ расчета по вкусу - математически они идентичны. :geek: :)

_________________
Lingua latina non penis canis est
Эксперименты провожу на старенькой версии от 7-го волка, для которой не существует патча. Поэтому не факт, что результаты будут справедливы и для вашей версии. Проверяйте у себя или используйте на свой страх и риск. ;)


Последний раз редактировалось Oldnick 12 июн 2014, 12:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 12 июн 2014, 11:11 
Аватара пользователя
Консул
Консул
Не в сети

Зарегистрирован: 15 окт 2012, 11:48
Сообщения: 248
Откуда: Экибастуз, но на самом деле думаю еще дальше...
Oldnick писал(а):
5% - это в 40 раз меньше чем 200%, соответственно, один житель при налоговой ставке 5% будет платить (число из c3model.txt)/40.
Лучше (число из c3model.txt)/200, чтобы узнать сколько из себя представляет 1%, а потом умножить на то количество, которое требуется +)
________________________
N*F*C/200
C - значение из "c3model.txt" (для каждого уровня дома своё);
F - значение налоговой ставки у фин. советника (смотреть в самой игре);
N - количество людей проживающих в данном уровне домов (придется помучится: найти все дома определенного уровня для которого будет вестись расчет и подсчитать общее количество жильцов, проживающих в них с учетом наполненности домов).

C/200 - денариев в месяц с 1 человека, при налоговой ставки 1%;
C/200*F - денариев в месяц с 1 человека, при налоговой ставки F%;
C/200*F*N - денариев в месяц с N человек, при налоговой ставки F%.

_________________
... Тишина вокруг. Погружается лист каштана в ручей прозрачный...


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 15 июл 2014, 12:56 
Претор
Претор
Не в сети

Зарегистрирован: 02 апр 2013, 16:53
Сообщения: 100
Внесу свою небольшую лепту ))) Код из восстановленных исходников

Код:
void  fun_collectMonthlyTaxes()
{
  //внутренние переменные
  int collectedPatricians; // eax@29
  int collectedPatricians2; // ST54_4@29
  int collectedPlebs; // eax@29
  int totalCollectedTax; // ST54_4@29
  int tax; // [sp+4Ch] [bp-14h]@18
  int trm; // [sp+50h] [bp-10h]@14
  bool isPatrician; // [sp+54h] [bp-Ch]@12
  signed int i; // [sp+58h] [bp-8h]@1
  signed int j; // [sp+5Ch] [bp-4h]@4

  //переменные для нашего города
  city_inform[ciid].numPlebsTaxed = 0;
  city_inform[ciid].numPatriciansTaxed= 0;
  city_inform[ciid].numPlebsNotTaxed = 0;
  city_inform[ciid].numPatriciansNotTaxed = 0;
  city_inform[ciid].uncollectedTaxFromPlebs = 0;
  city_inform[ciid].collectedTaxFromPlebs = 0;
  city_inform[ciid].uncollectedTaxFromPatricians = 0;
  city_inform[ciid].collectedTaxFromPatricians = 0;

  //обнуление графика состоятельности жителей по уровню домов
  for ( i = 0; i < 20; ++i )
    city_inform[ciid].societyGraph[i] = 0;
 
  //продемся по всем зданиям города
  for ( j = 1; j < 2000; ++j )
  {
    if ( buildings[j].inUse == 1 ) //если ячейка здания используется
    {
      if ( buildings[j].house_size ) //и это дом
      {
        isPatrician = buildings[j].level_resourceId >= 12; //флаг что это дом патриция
        trm = fun_adjustWithPercentage(
                model_houses[buildings[j].level_resourceId].tax,
                difficulty_moneypct[setting_difficulty]);    //вычсляем величину налогов в зависимости от уровня сложности игры

        city_inform[ciid].societyGraph[ buildings[j].level_resourceId] += buildings[j].house_population; //обновляем количество жителей этой группы
        if ( building_46_house_taxcollector[128 * j] )  //обработаем дома, которые посещялись сборщиком налогов
        {
          if ( isPatrician )
            city_inform[ciid].numPatriciansTaxed+= buildings[j].house_population;
          else
            city_inform[ciid].numPlebsTaxed += buildings[j].house_population;
          tax = buildings[j].house_population * trm;                                               //вычисляем налог (учитываются дети и старики :) )
          building_74_house_taxIncomeThisYear_senateForum_treasureStore[32 * j] += tax;  //сохраняем общий налог в этом году
          if ( isPatrician )
            city_inform[ciid].collectedTaxFromPatricians += tax;
          else
            city_inform[ciid].collectedTaxFromPlebs += tax;
        }
        else                                                                               //подсчитаем недополученный налог
        {
          if ( isPatrician )
            city_inform[ciid].numPatriciansNotTaxed += buildings[j].house_population;
          else
            city_inform[ciid].numPlebsNotTaxed += buildings[j].house_population;
          if ( isPatrician )
            city_inform[ciid].uncollectedTaxFromPatricians += buildings[j].house_population * trm;
          else
            city_inform[ciid].uncollectedTaxFromPlebs += buildings[j].house_population * trm;
        }
      }
    }
  }
  // помним что в игре целочисленная арифметика
  collectedPatricians = fun_adjustWithPercentage(   //теперь подсчитаем сколько налогов надо забрать в этом месяце в зависимости от уровня процентной ставки
                          city_inform[ciid].collectedTaxFromPatricians / 2,   //!!!!!!!!!! вот откуда берется 200% в файле конфигурации, сделано это для срезания остатка в меньшую сторону
                          city_inform[ciid].taxrate);   //подсчет ведем для патрициев
  city_inform[ciid].yearlyTaxFromPatricians += collectedPatricians;
  collectedPatricians2 = collectedPatricians;
  collectedPlebs = fun_adjustWithPercentage(  //теже самые вычисление проводим для плебеев
                     city_inform[ciid].collectedTaxFromPlebs / 2,
                     city_inform[ciid].taxrate);
   city_inform[ciid].yearlyTaxFromPlebs += collectedPlebs;
  totalCollectedTax = collectedPlebs + collectedPatricians2;  //сколько всего собрали в этом месяце
 
 //посчитаем недополученную прибыль
 city_inform[ciid].yearlyUncollectedTaxFromPatricians += fun_adjustWithPercentage(
                                                                city_inform[ciid].uncollectedTaxFromPatricians / 2,
                                                                city_inform[ciid].taxrate);
  city_inform[ciid].yearlyUncollectedTaxFromPlebs += fun_adjustWithPercentage(
                                                           city_inform[ciid].uncollectedTaxFromPlebs / 2,
                                                           city_inform[ciid].taxrate);

  city_inform[ciid].treasury += totalCollectedTax;  //добавляем деньги в казну города
 
  //это надо для статистики
  city_inform[ciid].percentagePlebsRegisteredForTax = getPercentage(
                                                            city_inform[ciid].numPlebsTaxed,
                                                            city_inform[ciid].numPlebsNotTaxed
                                                          + city_inform[ciid].numPlebsTaxed);
  city_inform[ciid].percentagePatriciansRegisteredForTax = getPercentage(
                                                                 city_inform[ciid].numPatriciansTaxed,
                                                                 city_inform[ciid].numPatriciansNotTaxed
                                                               + city_inform[ciid].numPatriciansTaxed);
  city_inform[ciid].percentageRegisteredForTax = getPercentage(
                                                       city_inform[ciid].numPlebsTaxed
                                                     + city_inform[ciid].numPatriciansTaxed,
                                                       city_inform[ciid].numPlebsNotTaxed
                                                     + city_inform[ciid].numPlebsTaxed
                                                     + city_inform[ciid].numPatriciansNotTaxed
                                                     + city_inform[ciid].numPatriciansTaxed);
}


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 22 июл 2014, 15:53 
Цензор
Цензор
Не в сети

Зарегистрирован: 07 июл 2013, 00:15
Сообщения: 88
Откуда: Киев-Феодосия
... а потом пришел лесник... :D

А человеческим языком это что значит? Расчеты наши верны? А то слишком много матана (т.е. кода ;) ), в глазах начинает рябить и сложно отследить с непривычки все переменные.

_________________
Lingua latina non penis canis est
Эксперименты провожу на старенькой версии от 7-го волка, для которой не существует патча. Поэтому не факт, что результаты будут справедливы и для вашей версии. Проверяйте у себя или используйте на свой страх и риск. ;)


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 22 июл 2014, 16:15 
Претор
Претор
Не в сети

Зарегистрирован: 02 апр 2013, 16:53
Сообщения: 100
200% присутствует чтобы не париться с приведением к ближайшему меньшему целому, имхо. например собираем с дома 1 дн с человека в месяц, людей у нас в доме допустим 52 человек живет, тогда тогда получем что дом должен заплатить 52 * 1 * 7% = 3,64 денариев, если просто округлить это число до целого получим 4. тут вступает в силу логика с двойной ставкой 3,64/2 = 1,82 ~ 2дн. Собственно 2 денария заплатит этот дом в этом месяце. Если я не ошибся при разборе кода, то както так. Все из-за того, что в цезаре целочисленная арифметика, вещественные числа не используются.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 июл 2014, 22:35 
Цензор
Цензор
Не в сети

Зарегистрирован: 07 июл 2013, 00:15
Сообщения: 88
Откуда: Киев-Феодосия
Я, конечно, давненько уже не брал в руки матанализ, но что-то все равно не пойму чем отличается одно округление до 4-х и два округления до двух? В сумме-тов обоих случаях выходит 4. )

_________________
Lingua latina non penis canis est
Эксперименты провожу на старенькой версии от 7-го волка, для которой не существует патча. Поэтому не факт, что результаты будут справедливы и для вашей версии. Проверяйте у себя или используйте на свой страх и риск. ;)


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
 ,     
2011 © Dimitrius
Русская поддержка phpBB