블로그 이미지
이 닭대가리야! Donz
DNS Powered by DNSEver.com

카테고리

DonzBox.com (556)
-----------------' (0)
01. Jailbreak (40)
08. MacBook Air (10)
09. LEGO TECHNIC (22)
10. Eclipse Plugin (15)
-----------------^ (0)
11. Java(Script) 스크랩 (82)
12. Unix 얇팍지식 (75)
13. Apache 관련 (13)
14. Tomcat6 자료 (4)
15. SQL 따라잡기 (40)
16. Struts 냠냠 (0)
19. OSX, XCODE (2)
17. Symfony 퉷퉷 (8)
18. 각종 잡 Server (1)
20. Android (5)
29. IT잡식・해킹대응 (128)
-----------------. (0)
30. 거기에 가다 (12)
31. Rilakkuma 수집 (0)
32. MyCar Silvia (9)
33. RC Life (1)
-----------------, (0)
40. Photoshop 배경 (6)
41. PhotoShop 로고 (4)
42. Easy English (8)
43. 입이트이는영어 (1)
50. 잡동짬뽕짬짜면 (70)
-----------------" (0)
Total632,266
Today181
Yesterday124

Eclipse STS + MultiGradle +  Subproject Spring Boot(1.5.8)


사전설정
이클립스 마켓에서 등록해 참조 : http://donzbox.tistory.com/593

전체구조


부모프로젝트 생성


첫번째 자식 프로젝트 생성 (프로젝트 Location 설정 : 부모프로젝트 밑으로 변경해야 함)


두번째 자식 프로젝트 생성 (프로젝트 Location 설정 : 부모프로젝트 밑으로 변경해야 함)


부모프로젝트에서 자식프로젝트 연결 설정


/*

 * This build file was generated by the Gradle 'init' task.

 *

 * This generated file contains a sample Java Library project to get you started.

 * For more details take a look at the Java Libraries chapter in the Gradle

 * user guide available at https://docs.gradle.org/3.5/userguide/java_library_plugin.html

 */

subprojects {


// Apply the java-library plugin to add support for Java Library

apply plugin: 'java-library'

ext {

buildVersion = '0.0.1-SNAPSHOT'

springBootVersion = '1.5.6.RELEASE'

checkGradleVersion = '2.1.0'

}

// In this section you declare where to find the dependencies of your project

repositories {

    // Use jcenter for resolving your dependencies.

    // You can declare any Maven/Ivy/file repository here.

    jcenter()

}


dependencies {

    // This dependency is exported to consumers, that is to say found on their compile classpath.

    api 'org.apache.commons:commons-math3:3.6.1'


    // This dependency is used internally, and not exposed to consumers on their own compile classpath.

    implementation 'com.google.guava:guava:21.0'

    // Use JUnit test framework

    testImplementation 'junit:junit:4.12'

    runtime("org.springframework.boot:spring-boot-devtools:${springBootVersion}")

}

}


부모프로젝트에서 컴파일 하여 subprojects 에 선언한 dependencies 가 추가 시킴


자식프로젝트 homepage-api, homepage-batch 양쪽에 Referenced Libraries 속에

spring-boot-debtools1.5.6RELEASE.jar 가 추가됨을 확인


우오앗! 잘되네! 끝!

저작자 표시
신고
Posted by 먹어봐야 맛을알지 Donz

Eclipse STS + Spring Boot(1.5.8) + Gradle + Thymeleaf (Change Template Directory)

+ Embedded Tomcat + 외부 Tomcat



전체구조


이클립스기동


마켓에서 등록할 목록


STS 프로젝트 생성

외부 tomcat 배포를 위해 War형태로 패키징 하길 바랍니다.


STS 프로젝트 생성된 프로젝트 구조


build.gradle 설정

buildscript { ext { buildVersion = "0.0.1-SNAPSHOT" springBootVersion = '1.5.7.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse-wtp' apply plugin: 'org.springframework.boot' apply plugin: 'war' war { baseName = "homepage-test" version = "${buildVersion}" } group = 'com.bluedigm' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } configurations { providedRuntime } dependencies { compile('net.sourceforge.nekohtml:nekohtml') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.boot:spring-boot-starter-web') providedRuntime('org.springframework.boot:spring-boot-starter-tomcat') testCompile('org.springframework.boot:spring-boot-starter-test') }


주의 : 알아야 할 사항


compile('net.sourceforge.nekohtml:nekohtml') 는 닫는 tag를 쓰지 않아도 view단 컴파일 오류 발생하지 않음


또는 Embedded Tomcat인 bootRun으로는 정상 기동 되지만,

외부 Tomcat으로 기동시 Thymeleaf Compile 에러 발생시의 해결 대안 이기도 하다. (찾느라 3일 걸림 ㅠㅠ)

윈도우 환경에서는 에러가 나지 않지만, Mac 환경에서는 이하와 같이 Thymeleaf 코드 컴파일 에러가 터진다.

index.html의 <html> tag를 삭제하면 컴파일 오류가 나지 않고 th tag 컴파일이 잘된다. 완전 버그인듯.


환경 : Eclipse Oxygen / boot 1.5.7 / thymeleaf4 2.1.5


에러내용감상 : org.xml.sax.SAXParseException : 엔티티 참조에서는 '&' 바로 다음에 엔티티 이름이 와야 합니다.

에러내용보기


ThymeleafConfig.java

package com.bluedigm.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;

@Configuration
public class ThymeleafConfig {
   
    @Bean
    public ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setPrefix("/views/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("LEGACYHTML5");
        resolver.setCacheable(false);
        return resolver;
    } 
}

neko html 을 활성화 하려면 이하와 같이 선언해야 함

resolver.setTemplateMode("HTML5"); --> resolver.setTemplateMode("LEGACYHTML5");


CommonController.java

package com.bluedigm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class CommonController {

   @RequestMapping("/")
   public String indexPage(@RequestParam(value="name", required=false, defaultValue="Donz") String name, Model model) {
      model.addAttribute("name", name);
      return "index";
   }
}


index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
   <title>Thymeleaf Test</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
   <p th:text="${'Hello ' + name + '!'}"></p>
</body>


gradle.build에 설정된 내용의 관련 jar 내려받기


[sts] -----------------------------------------------------

[sts] Starting Gradle build for the following tasks: 

[sts]      :homepage-helper:cleanEclipse

[sts]      :homepage-helper:eclipse

[sts] -----------------------------------------------------

:homepage-helper:cleanEclipseClasspath

:homepage-helper:cleanEclipseJdt

:homepage-helper:cleanEclipseProject

:homepage-helper:cleanEclipseWtpComponent

:homepage-helper:cleanEclipseWtpFacet

:homepage-helper:cleanEclipseWtp

:homepage-helper:cleanEclipse

:homepage-helper:eclipseClasspath

:homepage-helper:eclipseJdt

:homepage-helper:eclipseProject

:homepage-helper:eclipseWtpComponent

:homepage-helper:eclipseWtpFacet

:homepage-helper:eclipseWtp

:homepage-helper:eclipse


BUILD SUCCESSFUL


Total time: 0.414 secs

[sts] -----------------------------------------------------

[sts] Build finished succesfully!

[sts] Time taken: 0 min, 0 sec

[sts] -----------------------------------------------------


compile 및 war파일 생성하고 embedded tomcat  으로 실행하기

실행로그 보기


브라우저에서 확인


배포 환경처럼 구성하기 위해 "외부 Tomcat" 으로 실행하기

상기의 화면에서는 꼭 "save" 해 주세요.

그리고 기동하기!

bootRun과 동일한 환경으로 실행됨을 확인


로그내용 보기


저작자 표시
신고
Posted by 먹어봐야 맛을알지 Donz



Scroll Test

--[[

+---------------------+

| Made by DonzBox.com |

| operate for iPhone 6+

| ver 2017.08.30      |       

+---------------------+

]]--


CREATETIME="2017-08-30 19:38:51";

adaptResolution(1242, 2208);

adaptOrientation(ORIENTATION_TYPE.PORTRAIT);



--[[ Environment Set ]]---------------------------


-- 터치유휴시간

local ms = 15000.00;


-- End Stage Set

local endStage = 4000;


-- ScreenShot (script no."01"~"05", shot on/off)

local scrShotSet = {"01", true};




--[[ Common Function ]]---------------------------


-- Screenshot

function scrShot(dirName, indicator)

    if scrShotSet[2] then

        if indicator ~= nil and indicator ~= "" then

            indicator = "_"..indicator;

        else

            indicator = "";

        end

        local today = os.date("%m월%d일_%X");

        screenshot("images/"..dirName.."/"..today..indicator..".bmp", nil);

    end

end


function multiTouch1(id1,x1,y1)

    touchDown(id1, x1, y1);

    usleep(ms);

    touchUp(id1, x1, y1);

    usleep(ms);

end

function multiTouch2(id1,x1,y1, id2,x2,y2)

    --[[

    if getColor(x1, y1) == adOkColor or

       getColor(x2, y2) == adOkColor then

        adNoSelect();

    else ]]--

        touchDown(id1, x1, y1);

        touchDown(id2, x2, y2);

        usleep(ms);

        touchUp(id1, x1, y1);

        touchUp(id2, x2, y2);

        usleep(ms);

 -- end

end

function multiTouch3(id1,x1,y1, id2,x2,y2, id3,x3,y3)

    --[[

    if getColor(x1, y1) == adOkColor or

       getColor(x2, y2) == adOkColor or

       getColor(x3, y3) == adOkColor then

        adNoSelect();

    else ]]--

        touchDown(id1, x1, y1);

        touchDown(id2, x2, y2);

        touchDown(id3, x3, y3);

        usleep(ms);

        touchUp(id1, x1, y1);

        touchUp(id2, x2, y2);

        touchUp(id3, x3, y3);

        usleep(ms);

 -- end

end

function multiTouch4(id1,x1,y1, id2,x2,y2, id3,x3,y3, id4,x4,y4)

    --[[

    if getColor(x1, y1) == adOkColor or

       getColor(x2, y2) == adOkColor or

       getColor(x3, y3) == adOkColor or

       getColor(x4, y4) == adOkColor then

        adNoSelect();

    else ]]--

        touchDown(id1, x1, y1);

        touchDown(id2, x2, y2);

        touchDown(id3, x3, y3);

        touchDown(id4, x4, y4);

        usleep(ms);

        touchUp(id1, x1, y1);

        touchUp(id2, x2, y2);

        touchUp(id3, x3, y3);

        touchUp(id4, x4, y4);

        usleep(ms);

 -- end

end


-- Tapping of Monster

function attackOfPet()

    multiTouch3(1, 628.22, 572.90, 2, 628.22, 582.90, 3, 628.22, 592.90);

    multiTouch4(1, 50.00, 626.36, 2, 50.00, 770.22, 3, 785.76, 1155.51, 4, 921.08, 1155.51);

end


function attackOfPetFull()

multiTouch4(1, 608.89, 480.50, 2, 926.88, 767.32, 3, 601.16, 486.34, 4, 179.75, 549.10)

multiTouch4(5, 830.22, 551.02, 6, 287.04, 867.76, 7, 309.27, 582.90, 8, 924.94, 640.84);

multiTouch4(1, 1051.56, 520.13, 2, 245.48, 524.00, 3, 825.39, 1058.95, 4, 897.88, 511.44);

multiTouch4(5, 426.22, 518.21, 6, 230.01, 616.69, 7, 389.49, 631.17, 8, 599.22, 530.74);

multiTouch4(1, 857.29, 649.54, 2, 1079.59, 635.99, 3, 213.58, 493.11, 4, 323.77, 572.28);

multiTouch4(5, 218.42, 750.10, 6, 363.39, 750.30, 7, 219.38, 823.35, 8, 389.49, 807.89);

multiTouch4(1, 591.49, 1006.80, 2, 714.24, 1065.69, 3, 920.11, 1098.54, 4, 1080.55, 1093.72);

multiTouch4(5, 884.35, 970.11, 6, 1034.16, 962.40, 7, 854.39, 886.08, 8, 1027.39, 862.94);

multiTouch4(1, 207.78, 967.21, 2, 376.92, 956.60, 3, 213.58, 1074.39, 4, 352.76, 1071.49);

multiTouch4(5, 857.29, 766.38, 6, 1044.79, 749.94, 7, 1023.53, 1006.80, 8, 203.92, 1051.21);

multiTouch4(1, 60.87, 623.46, 2, 84.07, 914.12, 3, 72.47, 757.69, 4, 106.30, 609.95);

end


-- Tapping of Friends

function attackOfFriends()

multiTouch4(1, 56.04, 520.13, 2, 36.71, 646.64, 3, 103.40, 666.92, 4, 203.92, 647.58);

multiTouch4(5, 31.88, 855.19, 6, 82.14, 862.94, 7, 189.42, 857.14, 8, 196.19, 849.39);

multiTouch4(1, 57.97, 1135.23, 2, 172.99, 1145.84, 3, 265.77, 1141.03, 4, 322.80, 1123.64);

multiTouch4(5, 899.81, 1145.84, 6, 962.64, 1122.67, 7, 1017.73, 1156.46, 8, 1120.18, 1128.46);

multiTouch4(1, 1211.03, 1108.12, 2, 948.14, 895.75, 3, 1018.70, 886.08, 4, 1092.15, 897.67);

multiTouch4(5, 1190.74, 888.98, 6, 1028.36, 648.56, 7, 1135.64, 653.38, 8, 1219.73, 665.94);

multiTouch4(1, 262.88, 1082.13, 2, 1132.75, 527.84, 3, 1058.32, 527.84, 4, 931.71, 550.08);

multiTouch4(5, 250.31, 576.12, 6, 1167.54, 505.64, 7, 1162.71, 602.20, 8, 1192.67, 788.58);

multiTouch4(1, 27.04, 802.09, 2, 1016.76, 855.19, 3, 147.86, 1037.70, 4, 126.60, 790.50);

multiTouch4(5, 1220.70, 625.38, 6, 150.76, 642.76, 7, 989.70, 520.13, 8, 105.33, 516.25);

multiTouch4(1, 1199.44, 383.00, 2, 981.00, 407.16, 3, 205.85, 422.59, 4, 1200.40, 477.64);

multiTouch2(1, 1096.98, 358.88, 2, 312.17, 448.67);

end




--[[ User Function ]]-----------------------------


-- 광고버튼 설정하기

local adNoButton = 16417035; -- (150.00, 1700.00)

local adYesButton = 2728910; -- (1000.00, 1700.00)

function adPopupCancel()

    if getColor(150.00, 1700.00) == adNoButton then

        multiTouch1(9, 150.00, 1700.00);

    end

end

function adPopupAccept()

    if getColor(1000.00, 1700.00) == adYesButton then

        multiTouch1(9, 1000.00, 1700.00);

    end

end


-- 주인공렙업만하기(보이는 리스트 상에서 상→하)↓

--[[ 렙업시 피해야할 색

3158064 2105385 8222838 7170664 7959666 2565679 6249565 ]]--

function friendsLvUpU2D()

    for variable = 1340, 2080, 50 do

        adPopupAccept();

        if getColor(1217.00, variable) ~= 3158064 and getColor(1217.00, variable) ~= 2105385 and getColor(1217.00, variable) ~= 8222838 and getColor(1217.00, variable) ~= 7170664 and getColor(1217.00, variable) ~= 7959666 and getColor(1217.00, variable) ~= 2565679 and getColor(1217.00, variable) ~= 6249565 then

            for push = 1, 4, 1 do

                multiTouch1(1, 1217.00, variable);

            end

        end

    end

    -- 유휴시간

    usleep(ms*10);

end


-- 친구들렙업하기(보이는 리스트 상에서 하→상)

function friendsLvUpD2U()

    local delay = 5;

    for variable = 2080, 1340, -100 do

        -- 친구들랩업 스크롤 중 구매최대 버튼까지 도달시

        if getColor(1217.00, variable) == 5928316 then

            friendsTabScrollLast(2);

            return "scrollLast";

        end

        -- 보스어택활성화

        enableBossAttack();

        -- 광고버튼 설정하기

        adPopupAccept();

        for push = 1, 4, 1 do

            multiTouch1(1, 1217.00, variable);

            -- 유휴시간

            usleep(ms*10*delay);

            attackOfPet();

        end

    end

    -- 유휴시간

    usleep(ms*10);

    return "scrollMiddle";

end


-- 스크롤 1Step하단으로 내리기↓

function friendsTabScrollDn1()

    touchDown(1, 1340, 2040);usleep(ms);

    for variable = 2020, 1960, -7 do

        touchMove(1, 1340, variable);usleep(ms);

    end

    touchUp(1, 1340, 1940);usleep(ms*50);

end

-- 스크롤 1Step상단으로 올리기↑

function friendsTabScrollUp1()

    touchDown(1, 1340, 1940);usleep(ms);

    for variable = 1960, 2020, 26 do

        touchMove(1, 1340, variable);usleep(ms);

    end

    touchUp(1, 1340, 2040);usleep(ms*50);

end

-- 스크롤 4Step 하단으로 내리기↓

function friendsTabScrollDn()

    touchDown(1, 1340, 2060);usleep(ms);

    for variable = 2000, 1500, -16 do

        touchMove(1, 1340, variable);usleep(ms);

    end

    touchUp(1, 1340, 1440);usleep(ms*20);

end

-- 스크롤 4Step 상단으로 올리기↑

function friendsTabScrollUp()

    touchDown(1, 1340, 1440);usleep(ms);

    for variable = 1500, 2000, 16 do

        touchMove(1, 1340, variable);usleep(ms);

    end

    touchUp(1, 1340, 2060);usleep(ms*20);

end

-- 스크롤 최하단으로 내리기↓

function friendsTabScrollLast(cnt)

    for variable = 1, cnt, 1 do

        touchDown(1, 620.49, 1936.68);usleep(ms);

        touchMove(1, 616.62, 1813.10);usleep(ms);

        touchMove(1, 657.22, 1504.09);usleep(ms);

        touchMove(1, 754.83, 1001.01);usleep(ms);

        touchMove(1, 933.64,  371.41);usleep(ms);

        touchUp(1, 1055.42, 60.51);usleep(ms*80);

    end

end

-- 스크롤 최상단으로 올리기↑

function friendsTabScrollFirst(cnt)

    for variable = 1, cnt, 1 do

        touchDown(1, 700, 1400);usleep(ms);

        touchMove(1, 700, 1450);usleep(ms);

        touchMove(1, 700, 1600);usleep(ms);

        touchMove(1, 700, 1800);usleep(ms);

        touchMove(1, 700, 2000);usleep(ms);

        touchMove(1, 700, 2150);usleep(ms);

        touchUp(1, 700, 2200);usleep(ms*80);

    end

end


-- 보스전 상태에서 보스전 비활성화때 보스전으로 들어가기

function enableBossAttack()

    -- 과거 빨강색 : 15691794

    if (getColor(960.00, 60.00) == rgbToInt(70, 85, 88) or getColor(960.00, 60.00) == 15691794)

    and

       getColor(1107.00, 93.00) ~= 16777215 then

        multiTouch1(1, 960.00, 60.00);

    end

end


-- n번 어택 후 보스전 활성화

local bossAttackActive = 0;

local bossAttackActiveCnt = 10;

function enableBossCountAttack()

    -- 보스어택활성화

    if bossAttackActive == 0 then

        enableBossAttack();

        bossAttackActive = bossAttackActiveCnt;

    else bossAttackActive = bossAttackActive -1;

    end

end


-- 친구들리스트탭활성화 (비활성:6422304, 활성:10616662)

function enableFriendsTab()

    for loop = 0, 2, 1 do

        if getColor(312.17, 2181.01) == 6422304 then

            multiTouch1(1, 312.17, 2181.01);

        end

        -- 유휴시간

        usleep(ms*50);

    end

    -- 스크롤 최하단으로 내리기

    friendsTabScrollLast(2);

end


-- 주인공탭활성화 (비활성:12275501, 활성:11653343)

function enableHeroTab()

    for loop = 0, 2, 1 do

        if getColor(94.00, 2157.00) == 12275501 then

            multiTouch1(1, 94.00, 2157.00);

        end

        -- 시작전 유휴시간

        usleep(ms*50);

    end

end



-- 주인공스킬랩업 후 친구들리스트 마지막으로

function heroLvUp(cnt)

    -- 보스어택활성화

    enableBossAttack();

    for loop = 1, cnt, 1 do

        enableHeroTab();

        friendsTabScrollFirst(1);

        friendsTabScrollDn1();

        friendsLvUpU2D();

        -- 스크린샷

        scrShot(scrShotSet[1], "HeroLvUp");

        friendsTabScrollLast(1);

        friendsTabScrollUp1();

        friendsLvUpU2D();

        -- 스크린샷

        scrShot(scrShotSet[1], "HeroLvUp");

    end

    -- 친구들리스트활성화

    enableFriendsTab();

end


-- 클랜전 종료시 빠져나오기

function clanWarClose()

    if getColor(1106.00, 127.00) == 4405296 then

        multiTouch1(1, 1106.00, 127.00);

        -- 클랜전 빠져나오기

        return;

    end

end


-- 환생

function prestige()

    usleep(ms*123); --(ms=15000) about=2000000

    adPopupCancel();

    enableHeroTab();

    friendsTabScrollLast(1);

    -- 확인버튼1 (스크롤 하단버튼)

    multiTouch1(1, 1021.60, 2023.61);

    usleep(ms*123);

    -- 확인버튼2 (확인팝업)

    multiTouch1(1, 583.76, 1673.08);

    usleep(ms*123);

    -- 확인버튼3 (컨펌팝업)

    multiTouch1(1, 864.05, 1457.76);

    usleep(ms*123);

end


-- Dialog Box

function inputDialog()

    local label = {type=CONTROLLER_TYPE.LABEL, text="게임 화면의 Stage를 입력해 주세요."};

    local stageInput = {type=CONTROLLER_TYPE.INPUT, title="Stage:", key="Stage", value="1770"}

    local swordMasterLvUpSwitch = {type=CONTROLLER_TYPE.SWITCH, title="주인공 렙업 부터 하고 시작합니다. 선택하지 않더라도 주인공 레벨이 낮으면 강제렙업이 실행 됩니다.", key="swordMasterLvUp", value=0};

    local prestigeSwitch = {type=CONTROLLER_TYPE.SWITCH, title="마지막 Stage에서 환생 합니다.", key="Prestige", value=1};

    local controls = {label, stageInput, swordMasterLvUpSwitch, prestigeSwitch};

    local enableRemember = false;

dialog(controls, enableRemember);

    -- alert(string.format("Stage:%s, SwordMaster LvUp:%d, Prestige:%d", stageInput.value, swordMasterLvUpSwitch.value, prestigeSwitch.value));


    local returnValue = {s = stageInput.value, m = swordMasterLvUpSwitch.value, p = prestigeSwitch.value};

    return returnValue;

end


function remainLoop(currentStage)

    if currentStage > 4000 then

        currentStage = endStage;

    end

    local remainStage = endStage - currentStage;

    -- friendsLvUpSet(1, 1) 당 19~20stage 진행

    local remainLoopCnt = math.ceil(remainStage/19);

    return remainLoopCnt;

end


-- 친구들 렙업(모든친구=37명, friendsLvUpD2U()=4명_렙업)

function friendsLvUpCtrl(cnt)

    -- 보스어택활성화

    enableBossAttack();

    -- 친구들리스트활성화

    enableFriendsTab();

    -- 스크롤 최하단으로 내리기

    friendsTabScrollLast(2);

    for loop = 0, cnt-1, 1 do

        -- n번 어택 후 보스전 활성화

        enableBossCountAttack();

        -- 친구들리스트탭 활성화

        enableFriendsTab();

        friendsLvUpD2U();

        friendsTabScrollUp();

    end

end

function friendsLvUpSet(scrollCnt, loopCnt)

    for loop = 0, loopCnt, 1 do

        if scrollCnt == 0 then

            -- "모두" 렙업

            friendsLvUpCtrl(10);

        else

            -- "부분" 렙업

            friendsLvUpCtrl(scrollCnt);

        end

    end

end

-- n:4스크롤횟수, x:n의반복횟수, b:다음if실행여부,

-- p:현재Stage로부터 마지막까지 가기위한 대략적 남은 스크롤 횟수

-- r:현재Stage로부터 마지막까지 가기위한 정확한 남은 스크롤 횟수

-- t:스크롤구간 설정으로 인해 부정확해진 남은 스크롤 수의 보정값

function friendsLvUpVal(n, x, b, p, r)

    local t = 0;

    -- 최초1회만 실행됨

    if b == true and n > 0 then t = p - r; end

    friendsLvUpSet(n - t, x);

    return false;

end




--[[ main ]----------------------------------------

01. Scroll => 1 Scroll에는 4명의 친구들이 있음.

02. 4000 Stage에서 환생하면 1762 Stage 부터 시작됨.

   

03. 1 Scroll에 있는 친구들 렙업이 진행될때 19 Stage가 진행.

04. 1762 Stage 시작시 존재하는 34명의 친구들을 활성화 하려면

    9 Scroll이 필요함.

   

05. 1762 Stage 부터 37명 모든 친구들이 활성화 되려면

06. 27 Scroll을 해야하고, 이때의 Stage는 2280.

07. 2280 Stage 부터 94 Scroll 하면  4000 Stage도달함.

   

08. 1762~4000 Stage까지 도달하려면 총 121 Scroll이 필요.

-----------------------------------------------]]--




--[[ 마지막 Stage까지 남은 스크롤 계산

local startStage = inputDialog();

-- 현재 Stage 추출

local m = startStage.m;

local r = remainLoop(tonumber(startStage.s));

alert("현재 Stage가 "..m.."이면 "..endStage.."까지, "..r.." Scroll이 필요합니다.");

]]--




-- 주인공스킬랩업 후 친구들리스트 마지막으로

heroLvUp(1);


-- loop Counter

local friendsLvUpD2ULastCnt = 1;

-- Scroll Counter

local friendsLvUpD2UCnt = 1;


-- 스크린샷

scrShot(scrShotSet[1], "Start");

while true do

    -- 주인공스킬랩업 후 친구들리스트 마지막으로

    if friendsLvUpD2ULastCnt == 6 then

        heroLvUp(1);

    end

    -- Scroll Counter

    friendsLvUpD2UCnt = 1;

    while true do

        if "scrollLast" == friendsLvUpD2U() then

            break;

        end

        -- 스크린샷

        scrShot(scrShotSet[1], friendsLvUpD2ULastCnt.."_"..friendsLvUpD2UCnt);

        friendsLvUpD2UCnt = friendsLvUpD2UCnt + 1;

        friendsTabScrollUp();

    end

    -- 스크린샷

    scrShot(scrShotSet[1], friendsLvUpD2ULastCnt.."_"..friendsLvUpD2UCnt);

    friendsLvUpD2ULastCnt = friendsLvUpD2ULastCnt + 1;

    if friendsLvUpD2ULastCnt == 18 then

        break;

    end

end

 



저작자 표시
신고
Posted by 먹어봐야 맛을알지 Donz

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바