Модуль:CurrencyDiamondsConverter: различия между версиями

Материал из Demovio Wiki
Перейти к навигации Перейти к поиску
Новая страница: «local p = {} local oneDiamondCost = 16 local spurNominal = 1 local bevelNominal = 8 local sprocketNominal = 16 local cogNominal = 64 local crownNominal = 512 local sunNominal = 4096 function p.currencyToDiamonds(frame) local spur = tonumber(frame.args['spur']) or 0 local bevel = tonumber(frame.args['bevel']) or 0 local sprocket = tonumber(frame.args['sprocket']) or 0 local cog = tonumber(frame.args['cog']) or 0 local crown = tonumber(frame.args[...»
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 47: Строка 47:
   local spur = math.floor(sum / spurNominal)
   local spur = math.floor(sum / spurNominal)


   local coinTemplate = '[[Файл:%s.png|link=Валюта|class=pixelated coin16px]][[Валюта|%s]] %i'
   local coinTemplate = '{{Currency/Coin|%i|%s}}'


   local result = ''
   local result = ''


   if sun > 0 then
   if sun > 0 then
     result = result .. string.format(coinTemplate, 'Sun', 'Солнышко', sun)
     result = result .. string.format(coinTemplate, sun, 'Солнышко')
   end
   end


   if crown > 0 then
   if crown > 0 then
     result = result .. string.format(coinTemplate, 'Crown', 'Коронка', crown)
     result = result .. string.format(coinTemplate, crown, 'Коронка')
   end
   end


   if cog > 0 then
   if cog > 0 then
     result = result .. string.format(coinTemplate, 'Cog', 'Шестеренка', cog)
     result = result .. string.format(coinTemplate, cog, 'Шестеренка')
   end
   end


   if sprocket > 0 then
   if sprocket > 0 then
     result = result .. string.format(coinTemplate, 'Sprocket', 'Звездочка', sprocket)
     result = result .. string.format(coinTemplate, sprocket, 'Звездочка')
   end
   end


   if bevel > 0 then
   if bevel > 0 then
     result = result .. string.format(coinTemplate, 'Bevel', 'Фаска', bevel)
     result = result .. string.format(coinTemplate, bevel, 'Фаска')
   end
   end


   if spur > 0 then
   if spur > 0 then
     result = result .. string.format(coinTemplate, 'Spur', 'Шпора', spur)
     result = result .. string.format(coinTemplate, spur, 'Шпора')
   end
   end



Текущая версия от 19:22, 14 марта 2025

{{#invoke:CurrencyDiamondsConverter|currencyToDiamonds|cog=2}} 8
{{#invoke:CurrencyDiamondsConverter|diamondsToCurrency|diamonds=2}} 2|Звездочка}}

local p = {}

local oneDiamondCost = 16

local spurNominal = 1
local bevelNominal = 8
local sprocketNominal = 16
local cogNominal = 64
local crownNominal = 512
local sunNominal = 4096

function p.currencyToDiamonds(frame)
  local spur = tonumber(frame.args['spur']) or 0
  local bevel = tonumber(frame.args['bevel']) or 0
  local sprocket = tonumber(frame.args['sprocket']) or 0
  local cog = tonumber(frame.args['cog']) or 0
  local crown = tonumber(frame.args['crown']) or 0
  local sun = tonumber(frame.args['sun']) or 0

  local sum = spur * spurNominal + bevel * bevelNominal + sprocket * sprocketNominal + cog * cogNominal + crown * crownNominal + sun * sunNominal

  local diamonds = math.floor(sum / oneDiamondCost + 0.5)

  return diamonds
end

function p.diamondsToCurrency(frame)
  local diamonds = tonumber(frame.args['diamonds']) or 0

  local sum = diamonds * oneDiamondCost

  local sun = math.floor(sum / sunNominal)
  sum = sum - sun * sunNominal

  local crown = math.floor(sum / crownNominal)
  sum = sum - crown * crownNominal

  local cog = math.floor(sum / cogNominal)
  sum = sum - cog * cogNominal

  local sprocket = math.floor(sum / sprocketNominal)
  sum = sum - sprocket * sprocketNominal

  local bevel = math.floor(sum / bevelNominal)
  sum = sum - bevel * bevelNominal

  local spur = math.floor(sum / spurNominal)

  local coinTemplate = '{{Currency/Coin|%i|%s}}'

  local result = ''

  if sun > 0 then
    result = result .. string.format(coinTemplate, sun, 'Солнышко')
  end

  if crown > 0 then
    result = result .. string.format(coinTemplate, crown, 'Коронка')
  end

  if cog > 0 then
    result = result .. string.format(coinTemplate, cog, 'Шестеренка')
  end

  if sprocket > 0 then
    result = result .. string.format(coinTemplate, sprocket, 'Звездочка')
  end

  if bevel > 0 then
    result = result .. string.format(coinTemplate, bevel, 'Фаска')
  end

  if spur > 0 then
    result = result .. string.format(coinTemplate, spur, 'Шпора')
  end

  return result
end

return p