출처  :  https://blog.naver.com/best8388/150166410183

 정규식 정리 쉬운 설명으로 링크해둠요


<0개 이상의 공백><소문자> pattern은

 "^\\s*[a-z]$"는

 시작공백이0개이상소문자한개

 private static void pmatch(String input){

Pattern pattern = Pattern.compile("^\\s*[a-z]$");

Matcher matcher = pattern.matcher(input);

if(matcher.matches()) System.out.println("true");

else System.out.println("false");

}


<0개 이상의 공백><소문자><1개 이상의 공백><대소문자><숫자> pattern은

 "^\\s*[a-z]\\s+[A-Za-z][0-9]$"는

 시작공백이0개이상소문자한개공백이1개이상대문자나소문자숫자

 private static void pmatch(String input){

Pattern pattern = Pattern.compile("^\\s*[a-z]\\s+[A-Za-z][0-9]$");

Matcher matcher = pattern.matcher(input);

if(matcher.matches()) System.out.println("true");

else System.out.println("false");

}


+정규식

Pattern Class와 Matcher Class를 사용.

 ^

 형식의 시작

 $

 형식의 끝

 \s

 공백

 +*/,.?! 등 기호는 앞에

 \를 붙여줌

 \D

 숫자가 아닌 문자

 \w

 알파벳, 숫자, _(밑줄)

 [0-9]

 숫자 1개

 [a-z]

 소문자 1개

 [A-Z]

 대문자 1개

 [A-Za-z]

 알파벳 대소문자 1개

 [^~~~]

 ~~~을 제외한 것

 .

 모든 범위의 한 문자

 *

 앞의 문자가 0개 이상

 +

 앞의 문자가 1개 이상 반복

 {숫자}

 앞의 문자가 숫자만큼 반복

 |

 또는 의 의미(괄호를 이용해 여러개 가능. ex. (1|2|3))

 [형식]

 안에 있는 형식


http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/package-summary.html



예제

String a와 b가 같은지만 비교 

 a.equals(b)가 boolean 값을 반환

2

String a와 b의 아스키코드 값 비교

 a.compareTo(b)

String a가 아스키코드 값으로 b보다 앞이면  음수 반환.

같으면 0 반환.

String a가 b보다 뒤에 위치한 문자열이면 양수 반환

3

String a안에 abc라는 문자열이 있는지 검색

 a.matches(".*abc.*")

4

String b가 있는지 검색

 a.matches(".*"+b+".*");

 .*는 정규식의 표현 중 하나로,

.은 아무 문자나 기호를 뜻하고

*는 앞에 있는 것이 0개 이상이라는 뜻.



1
2
3
4
5
6
//특수문자 제거 하기
   public static String StringReplace(String str){      
      String match = "[^\uAC00-\uD7A3xfe0-9a-zA-Z\\s]";
      str =str.replaceAll(match, " ");
      return str;
   }

 

1
2
3
4
5
6
//이메일 유효성
   public static boolean isEmailPattern(String email){
    Pattern pattern=Pattern.compile("\\w+[@]\\w+\\.\\w+");
    Matcher match=pattern.matcher(email);
    return match.find();
   }

 

1
2
3
4
5
6
//연속 스페이스 제거
  public static String continueSpaceRemove(String str){
   String match2 = "\\s{2,}";
   str = str.replaceAll(match2, " ");
   return str;
  }


요구사항 

 iframe을 이용하여 타 사이트의 게시물 표시

 1. iframe을 별도의 html로 저장하여 다시 iframe으로 호출 하는 방법

2. jQuery를 이용하여 파일이 아닌 변수에 코딩하여 로딩하는 방식

 조건 1

 iframe내에서 스크롤 했을경우 iframe 내부가 스크롤 되면 안됨

 css 컨트롤로 가능

 조건 2

 zoom으로 확대 축소하여 표시할 수 있어야 함

 브라우저별 css 컨트롤로 가능 

이하는 적용 예

TOP Page

코인판


리플


비트코인


 download

donzbox.tistory.html

thank you DonzBoxer 




<script type="text/javascript"> alert("이 문건은 2017년 말 부터 작성되고 있습니다. 잊어버리기 쉬운 웹개발을 위한 환경설정 위주의 문서입니다."); </script>

구성대상

노트북 개발 환경 구성

데스크탑 운영 환경 구성

OS

MAC OS

Windows 10

tool & Framework

Eclipse Oxygen

SpringBoot + SpringSecurity + MyBatis + Message(다국어)

Thymeleaf

Gradle(Multi로 구성)

Tomcat(v8.5) + SSL

MySQL

VisualSVN(v3.7.1)

Jenkins(v2.89.2)

Apache(v2.4) + Tomcat(v8.5) + SSL

MySQL

asadal 업체에서 .com domain 구입

dnsever 업체에서 내 데스크탑의 유동IP를 체크하여 내 도메인에 일정 시간마다 자동 매핑 

TODO

비고

외부 tomcat 또는 eclipse의 embedded tomcat 그리고 eclipse의 Run As의 Spring Boot App으로 SpringBoot 기동시 최초에 spring.profiles.active와 같은 환경변수를 읽어 개발서버, 운영서버의 환경변수를 다르게 설정하여 관리

SpringBootWeb에 Thymeleaf를 붙여 문법의 장점을 이용하고, 퍼블리셔의 산출물 수정을 최소화 하여 비지니스 로직 얹음

로그인 세션 관리는 SpringSecurity 를 이용, 로그인 관련 프로세싱은 https의 ssl로 그 이외의 페이지는 http로 상호 세션을 연계하며 서비스, cert 파일을 생성하고 tomcat에 등록

시큐리티 기본예제에 있는 로그인 화면의 나를기억해줘와 단방향 암호화 구현

공통코드와 다국어메세지(정적데이터)를 최초 1회만 DB에서 가져오고 2회 호출부터는 싱글톤으로 구성되어 있는 캐시에서 가져오게 함

로그인 페이지에는 Google의 reCapcha2 넣어 봇과 같은 블랙리스트 ip는 자동 차단

facebook 소셜로그인 oauth2 연동기능으로 선가입 후조치 전략 

윈도우용 VisualSVN은 http와 https 프로토콜만 사용할 수 있지만, 약간의 수정으로 리눅스나 유닉스 처럼 svn 프로토콜을 이용하여 svn 서버 구성하여 소스 배포 관리

jenkins를 이용하여 svn 서버에 취합된 소스를 jenkins workspace로 내려받아 jenkins의 gradle 플러그인 으로 컴파일 하여 jenkins에서 war로 묶은 뒤, tomcat 서버로 이동하여 tomcat에서 war를 해동하여 재기동 시키는 것까지 구성

apache 를 서버의 앞단에 두고 ajp로 tomcat의 여러 컨텍스트에 각각 abc.donzbox.com 처럼 3차 도메인을 부여하여 관리하고, proxy 모듈로 jenkins와 같은 같은 윈도우에 있는 별도의 서버들도 외부에서 접속 할 수 있도록 3차 도메인을 부여하여 연결

tomcat은 apache에서 지정한 버추얼 호스트에 대응하여 server.xml을 수정하고, conf의 catalina 디렉토리의 하부에 3차도메인과 동일한 디렉토리 하나를 만들고 그 속에 ROOT.xml 하나를 만들어 context path를 관리

유닉스 리눅스와 달리 윈도우용 tomcat으로 해동된 war 프로젝트 기동시 spring.profiles.active와 같은 환경변수를 설정하는 부분을 tomcat의 bin 디렉토리의 setenv.bat으로 관리하여 윈도우용 jenkins 빌드후 조치에서도 사용할 수 있도록 함

 

개발서버의 환경과 운영서버의 환경이 다르다는 이야기는 localhost로 설정하여 테스트 하다가 ajp 나 proxy module을 이용한 버추얼 호스트로 연결되어 있는 2차 또는 3차 실도메인으로 설정하여 운영하는 환경 설정이 다르므로, localhost와 실도메인에서 80과 443포트를 왕래하며 세션을 공유 관리하는 tomcat 설정을 기술












출처 : https://www.mkyong.com/mac/mac-osx-what-program-is-using-port-80/

OSX에서 어떤 녀석이 80포트를 사용하고 있나 알아보려면, 터미널 창을 열고

이하와 같이 입력시 PID가 출력됨

$ sudo lsof -i :80

Password:
COMMAND     PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd     12649   root    5u  IPv6 0xede4ca21f607010b      0t0  TCP *:http (LISTEN)
httpd     12650   _www    5u  IPv6 0xede4ca21f607010b      0t0  TCP *:http (LISTEN)
httpd     12653   _www    5u  IPv6 0xede4ca21f607010b      0t0  TCP *:http (LISTEN)

결과로 나온 PID를 통해 어떤 프로그램이 사용하고 있나 알아보려면

$ ps u 12649
USER   PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root 12649   0.0  0.0  2463084   4020   ??  Ss    5:40PM   0:00.21 /usr/sbin/httpd -D FOREGROUND

$ ps u 12650
USER   PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
_www 12650   0.0  0.0  2463084   1580   ??  S     5:40PM   0:00.01 /usr/sbin/httpd -D FOREGROUND

맥에서 이클립스 톰켓 플러그인에 80포트를 설정하면 아래와 같이 애러가 남

이유는 리눅스나 OSX같은 UNIX계열의 OS에서 1024포트 아래의 포트는 privileged 포트로 root계정이 아니면 사용할 수 없도록 설정되어 있기 때문임

이하의 링크로 들어가면 가능

출처 --> http://cheonbrave.blogspot.kr/2016/11/tomcat-80.html
1. 아래 위치로 이동!
cd /etc/pf.anchors/
2. 편집기 실행!
sudo vi com.pow
3. 아래 내용 작성후 저장
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 20559
4. 편집기 실행 !
sudo vi /etc/pf.conf
5. rdr-anchor "com.apple/*" 이 내용 아랫줄에 내용추가!
rdr-anchor "pow"
6. load anchor "com.apple" from "/etc/pf.anchors/com.apple" 이 내용 아랫줄에 내용 추가 후 저장 !
load anchor "pow" from "/etc/pf.anchors/com.pow"
7. 아래 명령 실행 !
sudo pfctl -f /etc/pf.conf
8. 아래 명령 실행 !
sudo pfctl -e



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 가 추가됨을 확인


우오앗! 잘되네! 끝!


20190327

추가백업 (아, 왜 이클립스서 git에 올렸다 새로 생성하며 내려받으면 multi 구조가 깨지는 걸까.... 어떻게 하는거지...)


부모 build.gradle

 /*

 * 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 {


task -> println "I'm $task.project.name."

println "-----------------------------------------------------"

    version = '1.0'


    apply plugin: 'java'

apply plugin: 'java-library'

    apply plugin: 'eclipse'

apply plugin: 'eclipse-wtp'

apply plugin: 'war'

    group 'com.donzbox'


ext {

buildVersion = '0.0.1-SNAPSHOT'

springBootVersion = '1.5.8.RELEASE'

checkGradleVersion = '2.1.0'

}

    

    repositories {

mavenCentral()

jcenter()

maven {

url 'https://maven.atlassian.com/3rdparty'

}

    }


configurations {

    providedRuntime

}


    war {

    version = "${buildVersion}"

        manifest.attributes provider: 'DonzBox.com'

    }

    

dependencies {

/*+---------------------------------------------------------------------------------------

*| multi gradle set

*+--------------------------------------------------------------------------------------*/

compile("com.googlecode.json-simple:json-simple:1.1.1")

/*+---------------------------------------------------------------------------------------

*| spring-boot

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| web

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| social / cloud / 3rd

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| api

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| i18n

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| securitydatabase

*+--------------------------------------------------------------------------------------*/

compile("com.github.ulisesbocchio:jasypt-spring-boot-starter:1.17")

/*+---------------------------------------------------------------------------------------

*| database

*+--------------------------------------------------------------------------------------*/

compile("com.oracle:ojdbc6:11.2.0.4.0-atlassian-hosted")

compile("mysql:mysql-connector-java:8.0.8-dmr")

compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1")

compile("org.apache.commons:commons-dbcp2:2.1.1")


/*+---------------------------------------------------------------------------------------

*| log

*+--------------------------------------------------------------------------------------*/

compile("org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16")

compile("org.logback-extensions:logback-ext-spring:0.1.2")

    /*+---------------------------------------------------------------------------------------

     *| Development (auto set/get)

     *+--------------------------------------------------------------------------------------*/

compile("org.projectlombok:lombok:1.16.18")

    testCompile("junit:junit:4.12")

    compile("junit:junit:4.12")

}


}



자식 build.gradle

buildscript {

ext {

buildVersion = "0.0.1-SNAPSHOT"

springBootVersion = '1.5.8.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-front"

//  version = "${buildVersion}"

}


group = 'com.donzbox'

version = '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8


repositories {

mavenCentral()

}


configurations {

providedRuntime

}


dependencies {

/*+---------------------------------------------------------------------------------------

*| multi gradle set

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| spring-boot

*+--------------------------------------------------------------------------------------*/

compile("org.springframework.boot:spring-boot-starter-security:${springBootVersion}")


/*+---------------------------------------------------------------------------------------

*| web

*+--------------------------------------------------------------------------------------*/

compile("net.sourceforge.nekohtml:nekohtml")

compile("org.springframework.boot:spring-boot-starter-thymeleaf:${springBootVersion}")

compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")

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

compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4:2.1.2.RELEASE")


/*+---------------------------------------------------------------------------------------

*| social

*+--------------------------------------------------------------------------------------*/


/*+---------------------------------------------------------------------------------------

*| was

*+--------------------------------------------------------------------------------------*/

providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")


/*+---------------------------------------------------------------------------------------

*| api

*+--------------------------------------------------------------------------------------*/


/*+---------------------------------------------------------------------------------------

*| i18n

*+--------------------------------------------------------------------------------------*/

compile("org.ehcache:ehcache:3.4.0")


/*+---------------------------------------------------------------------------------------

*| database

*+--------------------------------------------------------------------------------------*/


/*+---------------------------------------------------------------------------------------

*| reCapture

*+--------------------------------------------------------------------------------------*/

compile("org.apache.httpcomponents:httpclient:4.5.4")


/*+---------------------------------------------------------------------------------------

*| log

*+--------------------------------------------------------------------------------------*/

/*+---------------------------------------------------------------------------------------

*| bitcoin bithumb

*+--------------------------------------------------------------------------------------*/

compile("commons-codec:commons-codec:1.11")

compile("com.google.guava:guava:23.6-jre")

compile("org.codehaus.jackson:jackson-mapper-asl:1.9.13")

    /*+---------------------------------------------------------------------------------------

     *| Development (auto set/get)

     *+--------------------------------------------------------------------------------------*/

testCompile('org.springframework.boot:spring-boot-starter-test')

}



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과 동일한 환경으로 실행됨을 확인





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

 



맥북을 껏다 키거나, 잠자기 중 기상시켰을때, 시간이 오래 지나면

제대로 페어링 되지 않는다.

블루투스LE 를 이용한다고 하는데

아이폰이나 맥에는 연결정보가 표시 되지 않을때도 있다.

페어링이 끊긴 후 다시 연결을 해보려고 맥북과 아이폰의 블투캐시 삭제, 재기동 등 을 해보아도

페어링되지 않는 현상으로 하루를 허비하기도 했었다.

해결책은 이하와 같이 한다.


Near Lock 메뉴에서 "블루투스 캐시 청소" 를 누르고

지시에 따라 맥북을 재기동


Ascii Art (2ch)

http://kenji1234.blog75.fc2.com/

http://m-insurance.tistory.com/13


.  .  / )

| ̄|/ └┐

| |    |

|_|―、_ノ  



     __,,,,... -―‐-、__

=ニ_" ̄-...._,二   ,,..=''"   ""''=-、_

  ~~'''''‐、_ ''=;;;>ー`'―――--、    ヽ、     ノ ̄ ̄ ̄ ̄ ̄ヽ

       `/         ヽ ヽ‐-、  ヽ   /  .る る と  |

       |エ`l  =''''エヱ,'' ‐/ /\    .l   l.  る る う  〈

       /(・)`|   /(・)  >  ヽ    \|   |.  る る お  〉

       /〈  ̄ "'  ,`ー- ' i   /\    |   〉  .る る る   |

.      l::::ヽ___ヽ  。゚ , ' l  ヽ__  /   〈   る る る  |

      |::::::r~‐、     /     ,r、`i/    l.  る る る  〈

.       |::::::))ニゝ     /     2り /    _ノ     る る  ,〉

       |::::(_,,   /     (_/|-=二__        る  /

      !::  ""        / 入. |        \____/

       `ヽ、__,,,,........,,,,_/ / || |l|

.          〕;;;;;;;;;;:::::=''" _/||  ||/ |

       _|| ̄|| ̄|| ̄ ||.  ||,/|| ヽ

    '" ̄  ||  ||  ||   || /|    \

         `ー---‐―'''"~



   <               ヽ

  ∠ハハハハハハハ_      ゝ

   /          ∠_     |    >>1さんってさぁ・・・

  /           ∠_    |

  |  ̄\  / ̄ ̄ ̄  /      |    なんかそこら辺の連中と

.  |__   ____  | |⌒l. |    匂い違いますよね・・・・・・

  | ̄o /   ̄ ̄o/  | l⌒| . |

   |. ̄/     ̄ ̄    | |〇|  |    危険というか

.   | /            |,|_ノ   |    アウトローっていうか・・・

.   /__, -ヽ        ||     |    もっとはっきり言うと・・・

.   ヽ――――一    /\   |\

    /ヽ ≡       /   \_|  \ ワキガの匂いがするっていうか・・・・・・

   / ヽ      /      |   |ー―

   /   ヽ    /        |    | ̄ ̄

      /ヽ_,/        /|     |

        /



        .{::::::::::``'ー,、_::::::::::::::l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l

        ノ、_:::::::::::::::::::::`'ー-,/、_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l

       /;;;;;;;;7`'ー.、_:::::::::::::::/;;;;;; ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄'}

       !;;;;;;;;/    `'ー-.、」_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i

       ノ;;;;;;;;;!   <ニニ)    ̄ ̄ ̄ ̄ ̄ ̄i;;;;;;;;;;;;;;〈

      _i;;;;;;;,r'           (ニニニ〉::::::::::::l;;;;;;;;;;;;;;;;i

     /rl;;;;;;r'     ..,,       ..: ::: :::::::::/;;;;;;;;;;;;;;;;l

     l.l l;;;;;!   ,,-==‐..,    ..:::::::_,,:::::::::::::ヾ、;;;;;;;;;;;;;;l

     'l.li;;;;!   ,-r―ェ、   . : :::.,,-―-、::::::::::::i;;;;;;;;;;;;;l 

      l.`;;i   `'ー='‐-',  : :: :,_-ェ―ッ、`:::::::::::'i;;;;;;;;;ス

      .l l;l    `'ー=-'´   : :::::;;`'=='"ー':::::::::::::!;;;;;;/;;;}

        ! i;!          .: ::: :::`'==='"´::::::::::/;;;;;/;;/    >>100

      `i;!        >>  :: :::::::::::::':::::::::::::::::::/;;;;;/;;/    Not Found……………

       !      (,、 ..::::::ヽ、:::::::::::::::::::::::::i;;;;;/;;/  

        'l    ,/´   ヽ-r'~`' 'l,::::::::::::::::::::::l;;;;i_,ノ   

        l   ,/     l :::::::::::::i、::::::::::::::::::l;;;l´

        ヽ   ,-―-,、_,__     〉::::::::::::://

        ∧    `'ー===-`ー―::::::::::::::::::/

       /( ヾ、   :: :::::::::::::::::::::::::::::::::::/,、

     _/ ! l ヽ   ,..:: :::: :::::::::::::::::/::i .l:::\

   / ./   ! i,  ヽ、_..: :: :::: ::::::::::::,r'´:::::::l l::::::::l`ヽ、





                _, . . .--.-.-.- 、__

            _,.rヘr:'": : : : : ̄: :`’':: 、;:ヽ、,_r-vー-、

           l,/'": : : : : : : : : : : : : : : : : \:ヽ=ヽ;.: :ヽ

          /: : : : : : : : : : : : : : : : : : : : : :.ヽ;ヽ=i; : : i、_

         ./ : : ; : : i:/: : .; ji : / : : j i: : : : : : : :i;.:i={ : : : : i,

   __       /: : : j:-‐:/ : : ji i:i /: : : :jl-、 : ; : : : : .i; iミl.:ヽ : : l

  l i iヽ ,、  l : : : i'Lr┴-、j l:i::/--ー/ l、; ヽl : : : : :.l.:lミi :ノ: : : :〉 あ  や  と

  l ' ' ' j l.  |: i: イ ,r1::::i       '7o::ヽ、ji : : : : : i :.l'^: l  ;/  っ  よ  思

   \  l_、 |ノ/i i l~;;:::l       i'::::::::::i il : : i; : : l: l : : : : l' た  い  う

     ヽ、./. \l :i/ `ー'      i、:;;;:ノノ ヽ、;_ij: : :jノ: ; : : . :i、    で

     /^ノ . . . |:.:l  ' ' '       , , ,     .rl : /: / : : : : :j

    l/. . . . . 1.:i,               ,、ーノ: :{ : ヽ: . : :/ 

     `ヽ、. . . . i: .`':. 、._  O      _,. ./: : ' : :.j: : : . : : . .〉

       `ヽ、. \j: \:l,l l.   ―ァフノノ: : : ./jノ: : .. : : i :/

         \. . `\jヽミ三三三',.r'^_;;;;ノjノ l、: : . : : .Y

         /: :\r'"        ̄'y'. . . `i. ヽ、j : : : )

         /: :/ j          /. . . . . .l   lj : :/

        'ー'"  l          l. . . . . . l   `V^



              / ̄ ̄ ̄ ̄\

        / ̄ ̄ /;;::   / ̄ ̄ ̄ ̄\

    / ̄/;;::    |;;:: ィ●/;;::   / ̄ ̄ ̄ ̄\

   /;;:::  |;;:: ィ●ァ |;;::   |;;:: ィ●/;;::       ::;ヽ

   |;;:: ィ●|;;::      |;;::   |;;::   |;;:: ィ●ァ  ィ●ァ::;;|

   |;;:::   |;;::   c{ |;;:::  |;;::   |;;::        ::;;|

   |;;::  c|;;::  ___ヽ;;::  |;;:::  |;;::   c{ っ  ::;;|

   |;;::  __ヽ;;::  ー / ̄\;;ヽ;;::  |;;::  __  ::;;;|

   ヽ;;:::  | ̄\;;  /    / ̄\;;ヽ;;::  ー  ::;;/

   | ̄\;;: |  |    |   | /   / ̄\;;::   ::;;/ ̄|

   |  |   |   \   |   レ  /            |

   |   \ \  \..|  / /  /         /   | 

   .\   \ \   | ././  /        /   /

      \   \ \ .| /  /      /   /

       \   \ヽ|/  /      /   /

       (__(__(__)       (___)

      / ̄/ ̄/ ̄/              ̄ ̄ヽ

      / /  / /                     '、

.     / /  //     / ̄ ̄ ̄ ̄ ̄ ̄|      |

   ;' /  /     /        ヽヽ|      |

   | / ./     /           ヽ|     |

   |;/     /                 |     |

   (_____)                (_____)



      ____  ∧ ∧

     |\ /(´~`)\

     | | ̄ ̄ ̄ ̄ ̄|           ,-、             ,.-、

     | |=みかん=|          ./:::::\         /::::::ヽ

      \|_____|         /::::::::::::;ゝ--──-- 、._/:::::::::::::|

                     /,.-‐''"´          \::::::::::: |

                   / /           \ ヽ、::::|

                  /    ●         ●     ヽ|

                   l   , , ,                     l

                  .|        (_人__丿  """      |

                   l        ヽノ            l

                  ` 、  /⌒⌒i    /⌒ヽ        /

                    `/    |   |   \    /



가만히 놔둬도 렙업 자동, 광고 건너뛰기 기능

AUTO TOUCH 용 LUA SCRIPT 공개

(주의 !!! iPhone6 Plus 만 적용됨)


   

   

유물순서

노동자의 펜던트

충성의반지

타이탄창

영웅의방패

광기의헬멧

광휘의지팡이

예언서(골드관련)

선견의 양피지-아이기스-아카나망토-자수정지팡이/레테강물/영웅의검

천상의검

신성한징벌

에덴의과실/고대의부적/폭풍의검/다모클레스의검

퓨리자매의활

죽음의도끼(데미지관련)

그림자의책(그냥 필수)


TT2_01.AllFriendsLvUp.lua


TT2_02.Last1stFriendLvUp.lua


TT2_03.Last2ndFriendLvUp.lua



TT2_04.Last3rdFriendLvUp.lua



TT2_05.ClanWar.lua



TT2_08.HeroLevelUp.lua



TT2_09.Last4FriendsLvUp.lua



TT2_99.getColor.lua




----------------------------------------------------[ 과거절취선 ]----------------------------------------------------



01. TT2_주인공랩업.lua


02. TT2_친구들 마지막 까지 스크롤 하여 4명에 대하여 랩업.lua


03. TT2_모든 친구들 골고루 랩업.lua


04. TT2_랩2800이상 도달시 핀, 노니, 데이먼 중 하나만 집중 랩업.lua


05. TT2_ 클랜전 난타, 클랜전이 끝난 후 자동 랩업 모드로 변경됨.lua


99. 좌표에 따른 색깔추출.lua




----------------------------------------------------[ 과거절취선 ]----------------------------------------------------



01. 주인공렙업.lua - 렙업버튼색깔인식, 광고무시


02. 영웅레벨업.lua - 실수로 다이아몬드 사용 무시


03. 클랜단타전.lua - 속도중심, 보조스크립트 제거



----------------------------------------------------[ 과거절취선 ]----------------------------------------------------



01. 주인공렙업.lua - 렙업버튼색깔인식


02. 영웅레벨업.lua - 실수로 다이아몬드 사용 무시



----------------------------------------------------[ 과거절취선 ]----------------------------------------------------



01. 주인공렙업.lua (OLD)


02. 영웅레벨업.lua (OLD)


03.공격만하기.lua (OLD)


04.getColor



+ Recent posts