둘러보기 메뉴
검색
바뀐글
임의글
개인 도구
가입하기
로그인
도움말
도움말
질문게시판
자주 묻는 질문
커뮤니티
실시간 채팅방
가입인사게시판
자유게시판
뉴스게시판
제재안게시판
최근 토론
페미위키
공지사항
개선 요청
바뀐글
임의글
파일 올리기
다면 분류 목록
특수 문서 목록
모듈:Ensemblestars 문서 원본 보기
이름공간
모듈
토론
주시
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
위키베이스 항목
행위
보기
읽기
원본 보기
역사 보기
←
모듈:Ensemblestars
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요.
요청한 명령은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
사용자
,
Seeders
.
문서를 고치려면 이메일 인증 절차가 필요합니다.
사용자 환경 설정
에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.
문서의 원본을 보거나 복사할 수 있습니다.
local p = {} local function _card(args, frame) local returnText, images = '', {} if args['이름'] == nil then args['이름'] = '없음' end if args['개화'] == '전' then images[#images+1] = '개화 전' elseif args['개화'] == '후' then images[#images+1] = '개화 후' elseif args['개화'] == '전후' then images[#images+1] = '개화 전' images[#images+1] = '개화 후' else images[#images+1] = '개화 전' end local width = 160 local plain = string.find(args[1], "【") == nil returnText = returnText .. '<table style="display:inline-block;"><tr>' for i, v in ipairs(images) do returnText = returnText .. '<td style="border-width:0;width:' .. width .. 'px;height:' .. (width/4*5) .. ';px;padding:0;">' if plain then returnText = returnText .. '[[파일:앙상블스타즈 for kakao ' .. args[1] .. ' 카드 ' .. v .. '.png' else returnText = returnText .. '[[파일:' .. args[1] .. ' ' .. v .. '.png' end returnText = returnText .. '|' .. width .. 'x' .. (width/4*5) .. '픽셀' local link = args['이미지 링크'] if link ~= nil then returnText = returnText .. '|링크=' .. link end returnText = returnText .. '|' .. args[1] .. ' ' .. v returnText = returnText .. ']]' returnText = returnText .. '</td>' end returnText = returnText .. '</tr>' if args['이름'] == '있음' then returnText = returnText .. '<tr><td style="border-width:0;width:160px;text-align:center;"' if #images == 2 then returnText = returnText .. ' colspan=2' end if plain then returnText = returnText .. '>[[' .. args[1] .. '(앙상블스타즈 for kakao 카드)|' .. args[1] .. ']]' else returnText = returnText .. '>[[' .. args[1] .. ']]' end returnText = returnText .. '</td></tr>' end return returnText .. '</table>' end local function unitSkillTableStart(label) return '<table class = "sortable wikitable full-width-on-mobile">' .. '<tr>' .. '<th>' .. ( label ~= nil and label or '이름' ) .. '/효과</th>' .. '<th>멤버</th>' .. '<th>이벤트</th>' .. '</tr>' end local function unitSkillTableEnd() return '</table>\n' end local function unitSkillRow(datum, frame) local rt = '<tr>' --이름/효과 셀을 출력합니다. local dataSortValue = math.max(0, datum['댄스'] or 0, datum['보컬'] or 0, datum['퍼포먼스'] or 0, datum['Fantasy'] or 0, datum['Cool'] or 0, datum['Active'] or 0, datum['고평점'] or 0) rt = rt .. '<td data-sort-value='.. dataSortValue ..">'''" .. datum['이름'] .. "'''<br/>" if datum['아르바이트'] == nil then for i, v in ipairs( { '댄스', '보컬', '퍼포먼스' } ) do if datum[v] ~= nil then rt = rt .. '<span style="background-color: ' .. frame:expandTemplate{ title = '앙상블스타즈 for kakao 속성 색깔', args = { v } } .. '; color:white;border-radius:.3em;padding:.1em .4em;">' .. v .. '</span> ' .. datum[v] .. '% △' end end else rt = rt .. '「' .. datum['아르바이트'] .. '」 ' if datum['Fantasy'] ~= nil then rt = rt .. 'Fantasy ' .. datum['Fantasy'] .. '% ' end if datum['Cool'] ~= nil then rt = rt .. 'Cool ' .. datum['Cool'] .. '% ' end if datum['Active'] ~= nil then rt = rt .. 'Active ' .. datum['Active'] .. '% ' end if datum['고평점'] ~= nil then rt = rt .. '고평점 획득 확률 ' .. datum['고평점'] .. '% ' end rt = rt .. '상승' end rt = rt .. '</td>' -- rt = rt .. '<td style="line-height: 0;" data-sort-value='.. #datum ..'>' for i, v in ipairs(datum) do if i==math.floor(i) then rt = rt .. frame:expandTemplate{ title = '앙상블스타즈 for kakao 아이돌', args = { v, ["이름"] = '아래' } } end end rt = rt .. '</td>' rt = rt .. '<td>' .. (datum['이벤트'] ~= nil and '[[' .. datum['이벤트'] .. '(앙상블스타즈 for kakao)|'..datum['이벤트']..']]' or '') .. '</td>' return rt .. '</tr>\n'; end local function _unitSkill(args, frame) local data, returnText = {}, '' for i, v in ipairs(args) do data[#data+1] = {} for token in string.gmatch(v, '%s*([^,\n]+)%s*') do local left, right = string.match(token, '(.+):'), string.match(token, ':(.+)') if left ~= nil and right ~= nil then data[#data][left] = right else data[#data][#data[#data]+1] = token end end end table.sort(data, function (left, right) return #left < #right end) returnText = returnText .. '== 효과별 ==\n아래 표에는 종료된 이벤트 유닛 스킬은 제외되어 있다.\n' returnText = returnText .. '=== 댄스(레드) ===\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do if v['댄스'] ~= nil and (v['이벤트'] == nil or v['이벤트'] == args['이벤트']) then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '=== 보컬(블루) ===\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do if v['보컬'] ~= nil and (v['이벤트'] == nil or v['이벤트'] == args['이벤트']) then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '=== 퍼포먼스(옐로) ===\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do if v['퍼포먼스'] ~= nil and (v['이벤트'] == nil or v['이벤트'] == args['이벤트']) then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '=== 아르바이트 ===\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do if v['아르바이트'] ~= nil and (v['이벤트'] == nil or v['이벤트'] == args['이벤트']) then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '== 조건별 ==\n아래 표에는 종료된 이벤트 유닛 스킬은 제외되어 있다.\n' returnText = returnText .. '=== 유닛 ===\n' returnText = returnText .. unitSkillTableStart('유닛') for i, v in ipairs(data) do if v['조건'] == '유닛' and v['이벤트'] == nil then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '=== 동아리 ===\n' returnText = returnText .. unitSkillTableStart('동아리') for i, v in ipairs(data) do if v['조건'] == '동아리' and v['이벤트'] == nil then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '=== 기타 ===\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do if v['조건'] ~= '유닛' and v['조건'] ~= '동아리' and (v['이벤트'] == nil or v['이벤트'] == args['이벤트']) then returnText = returnText .. unitSkillRow(v,frame) end end returnText = returnText .. unitSkillTableEnd() returnText = returnText .. '== 전체 ==\n아래 표에는 종료된 이벤트 유닛 스킬도 포함되어 있다.\n' returnText = returnText .. unitSkillTableStart('이름') for i, v in ipairs(data) do returnText = returnText .. unitSkillRow(v,frame) end returnText = returnText .. unitSkillTableEnd() return returnText -- 조건 -- 유닛 / 동아리 -- 효과 -- 속성 증가(레드, 블루, 옐로) / 아르바이트 -- 인원수 -- end ------------------------------------- -- 점 항목(2단계부터 시작)으로 된 이벤트 리스트를 만듭니다. ------------------------------------- local function _eventList(args, frame) local data, returnText, ct = {}, '', 0 for i, v in ipairs(args) do if i % 3 == 1 then data[#data+1] = {} data[#data]['name'] = v elseif i % 3 == 2 then if v == '' then data[#data]['start'] = 0 else data[#data]['start'] = frame:callParserFunction('#time', { 'U', v })+0 end elseif i % 3 == 0 then if v == '' or v == '\n' then data[#data]['end'] = 0 else data[#data]['end'] = frame:callParserFunction('#time', { 'U', v })+0 end end end local format = '* [[파일:앙상블스타즈 for kakao %s 배너.png' .. '|class=notpageimage' .. '|204px|링크=%s(앙상블스타즈 for kakao)]]\n' local now = os.time()+60*60*9 --진행중인 이벤트들을 자례대로 출력합니다. ct = 0 for i, v in ipairs(data) do if ( v['start'] ~= 0 or v['end'] ~= 0 ) and ( v['start'] == 0 or now > v['start'] ) and ( v['end'] == 0 or now < v['end'] ) then ct = ct + 1 returnText = returnText .. string.format(format, v['name'], v['name']) end end if ct == 0 then returnText = returnText .. '* (없음)\n' end --아직 진행 전인 이벤들을 시작이 빠른 순으로 출력합니다. local notice = '' ct = 0 table.sort(data, function(left, right) return left['start']<right['start'] end) for i, v in ipairs(data) do if ( v['start'] == 0 and v['end'] == 0 ) or ( ( v['start'] ~= 0 and now < v['start'] ) and ( v['end'] == 0 or now < v['end'] ) ) then ct = ct + 1 notice = notice .. string.format(format, v['name'], v['name']) end end if ct ~= 0 then returnText = returnText .. '** 예고\n' .. notice end --종료된 이벤트는 종료가 늦은 순으로 출력합니다. returnText = returnText .. '* 지난 이벤트\n' table.sort(data, function(left, right) return left['end']>right['end'] end) for i, v in ipairs(data) do if ( v['start'] ~= 0 or v['end'] ~= 0 ) and ( v['end'] ~= 0 and now > v['end'] ) and ( v['start'] == 0 or now > v['start'] ) then returnText = returnText .. string.format(format, v['name'], v['name']) end end return string.sub(returnText, 1,string.len(returnText)-1) --마지막 문자(\n)는 빼고 출력합니다. end ------------------------------------- -- frame 객체가 틀에서 호출되어 생긴 frame인지 바로 모듈이 호출되어 생긴 frame인지와 무관하게 args를 찾습니다. -- @param frame 호출되면서 자동으로 만들어진 frame 객체. -- @return args 호출되면서 전달받은 전달인자. ------------------------------------- local function safeArgs(frame) if frame.args[1] ~= nil then --frame은 metatable이라 next(frame.args)가 안 된다고 하여 이리 되었습니다. return frame.args else return frame:getParent().args end end function p.card(frame) return _card(safeArgs(frame), frame) end function p.unitSkill(frame) return _unitSkill(safeArgs(frame), frame) end function p.eventList(frame) return _eventList(safeArgs(frame), frame) end return p
이 문서에서 사용한 틀:
모듈:Ensemblestars/설명문서
(
원본 보기
)
모듈:Ensemblestars
문서로 돌아갑니다.
다른 언어