[파이퍼] 디지털피아노 연결해서 피리불기






피아노 실력은 미천하니... 박자가 어떻냐니.. 이런말 마시구
그냥 이렇게 하는방법도 있다는 걸로만..



아두이노 레오나르도에 USB호스트 붙이고
이거 업로드하면댐
3옥타브 도가 모드1
3옥타브 레가 모드2


트오세는 모드2

아두이노 소스
/*
 *******************************************************************************
   USB-MIDI dump utility
   Copyright (C) 2013-2017 Yuuichi Akagawa

   for use with USB Host Shield 2.0 from Circuitsathome.com
   https://github.com/felis/USB_Host_Shield_2.0a12a12a12a12

   This is sample program. Do not expect perfect behavior.
 *******************************************************************************
*/
#include "Keyboard.h"
#include <usbh_midi.h>
#include <usbhub.h>
#include <SoftwareSerial.h>
SoftwareSerial com1 = SoftwareSerial(8, 2);//8rx 7tx
SoftwareSerial com2 = SoftwareSerial(8, 3);//8rx 7tx
SoftwareSerial com3 = SoftwareSerial(8, 4);//8rx 7tx
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>

#include <EEPROM.h>
int computer = 1;
USB Usb;
//USBHub Hub(&Usb);
USBH_MIDI  Midi(&Usb);

void MIDI_poll();
void doDelay(uint32_t t1, uint32_t t2, uint32_t delayTime);

boolean bFirst;
uint16_t pid, vid;
char mode = 0;

int KEYPA_9 = 233 ;
int KEYPA_8 = 232 ;
int KEYPA_7 = 231;
int KEYPA_6 = 230 ;
int KEYPA_5 = 229 ;
int KEYPA_4 = 228;
int KEYPA_3 = 227 ;
int KEYPA_2 = 226 ;
int KEYPA_1 = 225;
//  final public static int   KEY_F1   =194;
//  final public static int  KEY_F2  =195;
//  final public static int  KEY_F3  =196;
//  final public static int  KEY_F4  =197;
//  final public static int  KEY_F5  =198;
//  final public static int  KEY_F6  =199;
//  final public static int  KEY_F7  =200;
//  final public static int  KEY_F8  =201;
//  final public static int  KEY_F9  =202;
//  final public static int  KEY_F10   =203;
//  final public static int  KEY_F11   =204;
//  final public static int  KEY_F12   =205;
int keyMatch2(int key) {
  int lKey;
  if (key == 49) {
    lKey = '1';
  } else if (key == 2) {
    lKey = '2';
  } else if (key == 3) {
    lKey = '3';
  } else if (key == 4) {
    lKey = '4';
  } else if (key == 5) {
    lKey = '5';
  } else if (key == 6) {
    lKey = '6';
  } else if (key == 7) {
    lKey = '7';
  } else if (key == 8) {
    lKey = '8';
  } else if (key == 9) {
    lKey = '9';
  } else if (key == 10) {
    lKey = '0';
  } else if (key == 11) {
    lKey = '-';
  } else if (key == 12) {
    lKey = '=';
  } else if (key == 13) {
    lKey = 'q';
  } else if (key == 14) {
    lKey = 'w';
  } else if (key == 15) {
    lKey = 'e';
  } else if (key == 16) {
    lKey = 'r';
  } else if (key == 17) {
    lKey = 't';
  } else if (key == 18) {
    lKey = 'o';
  } else if (key == 19) {
    lKey = 'p';
  } else if (key == 20) {
    lKey = '[';
  } else if (key == 21) {
    lKey = ']';
  } else if (key == 22) {
    lKey = KEYPA_7;
  } else if (key == 23) {
    lKey = KEYPA_8;
  } else if (key == 24) {
    lKey = KEYPA_9;
  } else if (key == 25) {
    lKey = 'a';
  } else if (key == 26) {
    lKey = 's';
  } else if (key == 27) {
    lKey = 'd';
  } else if (key == 28) {
    lKey = 'f';
  } else if (key == 29) {
    lKey = 'g';
  } else if (key == 30) {
    lKey = 'h';
  } else if (key == 31) {
    lKey = 'j';
  } else if (key == 32) {
    lKey = ';';
  } else if (key == 33) {
    lKey = 39;
  } else if (key == 34) {
    lKey = KEYPA_4;
  } else if (key == 35) {
    lKey = KEYPA_5;
  } else if (key == 36) {
    lKey = KEYPA_6;
  } else if (key == 37) {
    lKey =  129;
  } else if (key == 38) {
    lKey = 'z';
  } else if (key == 39) {
    lKey = 'x';
  } else if (key == 40) {
    lKey = 'c';
  } else if (key == 41) {
    lKey = 'v';
  } else if (key == 42) {
    lKey = 32;
  } else if (key == 43) {
    lKey = ',';
  } else if (key == 44) {
    lKey = '.';
  } else if (key == 45) {
    lKey = '/';
  } else if (key == 46) {
    lKey = KEYPA_1;
  } else if (key == 47) {
    lKey  = KEYPA_2;
  } else if (key == 48) {
    lKey = KEYPA_3;
  }  else if (key == 0) {
    lKey = -1;
  }
  return lKey;
}
static int tosDelay = 50;
void tosKey(int key, int sw) {
  if (sw == 9) {
    switch (key) {
      case 60:
        Keyboard.press('a');
        break;
      case 61:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('a');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 62:
        Keyboard.press('s');
        break;
      case 63:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('s');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 64:
        Keyboard.press('d');
        break;
      case 65:
        Keyboard.press('f');
        break;
      case 66:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('f');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 67:
        Keyboard.press('g');
        break;
      case 68:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('g');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 69:
        Keyboard.press('h');
        break;
      case 70:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('h');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 71:
        Keyboard.press('j');
        break;
      case 72:
        Keyboard.press('q');
        break;
      case 73:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('q');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 74:
        Keyboard.press('w');
        break;
      case 75:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('w');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 76:
        Keyboard.press('e');
        break;
      case 77:
        Keyboard.press('r');
        break;
      case 78:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('r');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 79:
        Keyboard.press('t');
        break;
      case 80:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('t');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 81:
        Keyboard.press('y');
        break;
      case 82:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('y');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 83:
        Keyboard.press('u');
        break;
      case 84:
        Keyboard.press('1');
        break;
      case 85:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('1');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 86:
        Keyboard.press('2');
        break;
      case 87:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('2');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 88:
        Keyboard.press('3');
        break;
      case 89:
        Keyboard.press('4');
        break;
      case 90:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('4');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 91:
        Keyboard.press('5');
        break;
      case 92:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('5');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 93:
        Keyboard.press('6');
        break;
      case 94:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.press('6');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 95:
        Keyboard.press('7');
        break;
      default:
        break;
        // statements
    }
  } else {
    switch (key) {

      case 60:
        Keyboard.release('a');
        break;
      case 61:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('a');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 62:
        Keyboard.release('s');
        break;
      case 63:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('s');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 64:
        Keyboard.release('d');
        break;
      case 65:
        Keyboard.release('f');
        break;
      case 66:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('f');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 67:
        Keyboard.release('g');
        break;
      case 68:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('g');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 69:
        Keyboard.release('h');
        break;
      case 70:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('h');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 71:
        Keyboard.release('j');
        break;
      case 72:
        Keyboard.release('q');
        break;
      case 73:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('q');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 74:
        Keyboard.release('w');
        break;
      case 75:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('w');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 76:
        Keyboard.release('e');
        break;
      case 77:
        Keyboard.release('r');
        break;
      case 78:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('r');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 79:
        Keyboard.release('t');
        break;
      case 80:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('t');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 81:
        Keyboard.release('y');
        break;
      case 82:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('y');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 83:
        Keyboard.release('u');
        break;



      case 84:
        Keyboard.release('1');
        break;
      case 85:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('1');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 86:
        Keyboard.release('2');
        break;
      case 87:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('2');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 88:
        Keyboard.release('3');
        break;
      case 89:
        Keyboard.release('4');
        break;
      case 90:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('4');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 91:
        Keyboard.release('5');
        break;
      case 92:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('5');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 93:
        Keyboard.release('6');
        break;
      case 94:
        Keyboard.press(32);
        delay(tosDelay);
        Keyboard.release('6');
        delay(tosDelay);
        Keyboard.release(32);
        break;
      case 95:
        Keyboard.release('7');
        break;
      default:
        break;
        // statements
    }
  }

}
int key[100];
int keyDel[10];
void setup()
{
  for (int i = 0; i < 100; i++) {
    key[i] = -1;
    //keyDel[i] = -1;
  }
  if (  EEPROM.read(1) != 245) {
    for (int i = 0 ; i < EEPROM.length() ; i++) {
      EEPROM.write(i, 0);
    }
    EEPROM.write(1, 245);
  }
  mode = EEPROM.read(0);
  Serial.begin(9600);
  Keyboard.begin();
  com1.begin(9600);
  com2.begin(9600);
  com3.begin(9600);

  bFirst = true;
  vid = pid = 0;

  if (Usb.Init() == -1) {
    while (1); //halt
  }//if (Usb.Init() == -1...
  delay( 200 );
}
//int t = 0;
int keyEnable[10];
int keyRecent[10];
bool keySwitch[3];
int keySwitchNum[10];
bool keyUse[10];
int t = 0;
bool musicState = false;
int min = 250;
long beforeMillis = millis();

void loop()
{
  // delay(1);
  if (mode == 0) {
    if (key[0] != -1) {
      if (musicState == false) {

        //   Keyboard.press(KEY_F2);
        //  delay(50);
        //   keyEnable[0]-=50;
        //   Keyboard.release(KEY_F2);
        musicState = true;
      }
      t = 0;
      if (keyEnable[0] <= 0) {
        // Serial.println("");
        //  Serial.print("KEY : ");
        //  Serial.println(key[0]);
        //   com1.print((char)keyMatch2(key[0]));
        Keyboard.press(keyMatch2(key[0]));
        for (int k = 0; k < 50; k++) {
          Usb.Task();
          //uint32_t t1 = (uint32_t)micros();
          if ( Usb.getUsbTaskState() == USB_STATE_RUNNING )
          {
            MIDI_poll();
          }
          //  delay(1);
        }

        Keyboard.release(keyMatch2(key[0]));
        //         com1.print((char)keyMatch2(key[0]));
        keyRecent[0] = key[0];
        for (int i = 0; i < 100; i++) {
          key[i] = key[i + 1];
        }
        key[99] = -1;

        keyEnable[0] = min;

      }  else if (keyEnable[0] <= min / 2 &&  keyRecent[0] != key[0]) {
        //  Serial.println("");
        //   Serial.print("KEY : ");
        //   Serial.println(key[0]);
        // com1.print((char)keyMatch2(key[0]));
        Keyboard.press(keyMatch2(key[0]));
        for (int k = 0; k < 50; k++) {
          Usb.Task();
          //uint32_t t1 = (uint32_t)micros();
          if ( Usb.getUsbTaskState() == USB_STATE_RUNNING )
          {
            MIDI_poll();
          }
          //  delay(1);
        }
        Keyboard.release(keyMatch2(key[0]));
        //  com1.print((char)keyMatch2(key[0]));
        keyRecent[0] = key[0];
        for (int i = 0; i < 100; i++) {
          key[i] = key[i + 1];
        }
        key[99] = -1;

        keyEnable[0] = min;
      }
    }

  }




  Usb.Task();
  //uint32_t t1 = (uint32_t)micros();
  if ( Usb.getUsbTaskState() == USB_STATE_RUNNING )
  {
    MIDI_poll();
    unsigned long currentMillis = millis();
    if (currentMillis > beforeMillis + 10) {
      for (int i = 0; i < 10; i++) {
        if (keyEnable[i] > 0) {
          keyEnable[i] -= 10;
        }
      }

      if (t < 3000) {
        t += 10;
      }
      beforeMillis = beforeMillis + 10;
    }

    else {
      if (musicState == true) {
        musicState = false;
        //    Keyboard.press(KEY_F1);
        // delay(50);
        //  keyEnable[0]-=50;
        //   Keyboard.release(KEY_F1);
      }
    }

  }
    // delay(1);

    //delay(1ms)
    //doDelay(t1, (uint32_t)micros(), 1000);
  }

// Poll USB MIDI Controler and send to serial MIDI
void MIDI_poll()
{
  char buf[20];
  uint8_t bufMidi[64];
  uint16_t  rcvd;

  if (Midi.vid != vid || Midi.pid != pid) {
    sprintf(buf, "VID:%04X, PID:%04X", Midi.vid, Midi.pid);
    Serial.println(buf);
    vid = Midi.vid;
    pid = Midi.pid;
  }

  if (Midi.RecvData( &rcvd,  bufMidi) == 0 ) {
    uint32_t time = (uint32_t)millis();
    // sprintf(buf, "%04X%04X: ", (uint16_t)(time >> 16), (uint16_t)(time & 0xFFFF)); // Split variable to prevent warnings on the ESP8266 platform
    // Serial.print(buf);
    // Serial.print(rcvd);
    // Serial.print(':');
    if (bufMidi[2] == 48) {
      mode = 0;
      EEPROM.write(0, 0);
    }
    else if (bufMidi[2] == 50) {
      mode = 1;
      EEPROM.write(0, 1);
    }
    else if (bufMidi[2] == 52) {
      mode = 2;
      EEPROM.write(0, 2);
    }
    if (mode == 0) {
      int selectNum = -1;
      for (int i = 0; i < 100; i++) {
        if (key[i] == -1) {
          selectNum = i;
          break;
        }
      }
      int tempkey = 0;
      if (selectNum != -1) {
        if (bufMidi[0] == 9 && bufMidi[3] > 10) {
          key[selectNum] = bufMidi[2] - 47;
        } else if (bufMidi[0] == 8 || bufMidi[3] == 0) {
          for (int j = 0; j < 10; j++) {
            if (keyDel[j] == -1) {
              //   Serial.print("Del ");
              //     Serial.print(tempkey);
              keyDel[j]  = bufMidi[2] - 47;

              break;
            }
          }

        }

    //    Serial.print("Sound : ");
    //    Serial.print(bufMidi[0]);
   //     Serial.print(" ");
   //     Serial.print(bufMidi[1]);
   //     Serial.print(" ");
    //    Serial.print(bufMidi[2]);
    //    Serial.print(" ");
   //     Serial.print(bufMidi[3]);
    //    //for(int i = 0; i<10; i++){======================================================================================================
        //  Serial.print(key[i]);==
        //  Ser===================================================================ial.print(" ");
        //  }
      //  Serial.println("");
      }

    } else if (mode == 1) {

      tosKey(bufMidi[2], bufMidi[0]);
    //  Serial.print("Mode2 : ");
    //  Serial.print(bufMidi[0]);
   //   Serial.print(" ");
   //   Serial.print(bufMidi[1]);
    //  Serial.print(" ");
   //   Serial.print(bufMidi[2]);
  //    Serial.print(" ");
   //   Serial.print(bufMidi[3]);
      //for(int i = 0; i<10; i++){======================================================================================================
      //  Serial.print(key[i]);==
      //  Ser===================================================================ial.print(" ");
      //  }
   //   Serial.println("");


    } else if (mode == 2) {



      Serial.print("Mode3 : ");
      Serial.print(bufMidi[0]);
      Serial.print(" ");
      Serial.print(bufMidi[1]);
      Serial.print(" ");
      Serial.print(bufMidi[2]);
      Serial.print(" ");
      Serial.print(bufMidi[3]);
      //for(int i = 0; i<10; i++){======================================================================================================
      //  Serial.print(key[i]);==
      //  Ser===================================================================ial.print(" ");
      //  }
      Serial.println("");


    }

  }
}

// Delay time (max 16383 us)
void doDelay(uint32_t t1, uint32_t t2, uint32_t delayTime)
{
  uint32_t t3;

  if ( t1 > t2 ) {
    t3 = (0xFFFFFFFF - t1 + t2);
  } else {
    t3 = t2 - t1;
  }

  if ( t3 < delayTime ) {
    delayMicroseconds(delayTime - t3);
  }
}

EXP 4,768 (92%) / 4,801

Lv24 리셔


레벨
Lv24
경험치
4,768 (92%) / 4,801 ( 다음 레벨까지 33 / 마격까지 12 남음 )
포인트

이니 1,265

베니 3

제니 19

명성
234
획득스킬
  • 2
  • 3
  • 1
  • 1
  • 1

SNS 공유하기

코멘트

새로고침
새로고침

게임별 조립 PC

인증글 3추글 즐겨찾기
최근 방문한 게시판
    초기화
    번호             제목             글쓴이 등록일 조회 추천
    13847      [전투]  아처계열 레까캐쥬얼 미세팁      게이고 14:37  140 0
    13846      [전투]  트리니 1인깍 깻어요  [3] 푸푸파파 14:42  505 1
    13844      [기타]  안 찍은 여신상 찾기! - 노애드온 버..  [3] 철테 10-08  1082 5
    13843      [클래스]  뉴비필독) 계열별 추천 1티어 트리... [16] 오버드라이브 10-03  6724 25
    13842      [아이템]  ★뉴비를 위한 친절한 가이드(2-1)..  [9] Pendoe 10-03  2199 36
    13841      [기타]  그냥 걷기  [4] 유피텔 09-29  1960 15
    13840      [퀘스트]  ★뉴비를 위한 친절한 가이드(1) :..  [7] Pendoe 09-29  4617 47
    13837      [기타]  넥슨, 트오세 서비스 종료(일본서버)  [4] 너뭐하냐 09-25  2938 7
    13836      [퀘스트]   컬렉션] 카드몹을 이용한 저랩 챌린지.. [2] 생각해도무리 09-25  1125 7
    13835      [퀘스트]  컬렉션 공략(6) 아 컬렉션 너무 재..  [6] 몽몽2 09-24  1353 6
    13834      [퀘스트]  컬렉션 공략(5) 대장장이가 되어보자       몽몽2 09-24  647 6
    13833      [퀘스트]  컬렉션 공략(4) 챌린지를 돌자       몽몽2 09-24  692 6
    13832      [퀘스트]  컬렉션 공략(3) 나올 때까지 잡겠다       몽몽2 09-24  633 6
    13831      [퀘스트]  컬렉션 공략(2) 이 정도는 할만하다..  [3] 몽몽2 09-24  1338 14
    13830      [퀘스트]  컬렉션 공략(1) 퀘스트, 기믹으로 ..       몽몽2 09-24  1247 9
    13829      [기타]  스탬프이벤트 업힐 매우어려움  [8] 치킨강탈범 09-22  1611 1
    13828      [기타]  그리모어 이벤트 37종 목록       영쿠미 09-22  1697 1
    13827      [아이템]  스탬프 이벤트 전투1 숙련자 보상 (..      레나시아 09-21  1048 3
    13826      [기타]  (수첩 이벤트) 비교적 쉬운 콜렉션  [6] 멍멍베히모스 09-20  2560 17
    13824      [기타]  (수첩 이벤트) 바카리네 여신상 있는 .. [7] 멍멍베히모스 09-19  1823 15
    13823      [기타]  대장장이 수리 100번하기 [1] 스뎅 09-19  1152 0
    13821      [퀘스트]  스템프 투어 히든! [2] Tb모아 09-19  1365 0
    13820      [아이템]  펫 광방비 템 뉴비분들 보세요.  [1] 왕만두1 09-17  1623 0
    13819      [클래스]  위자드 직업 가이드 part 2 ( .. [6] 바다꼬기 09-12  2014 0
    13818      [클래스]  위자드 직업 가이드 part 1 [17] 바다꼬기 09-09  4045 13
    13816      [기타]  [인챈트 아머] 선호 버프 - 콜로니 ..  [1] 히슬로스 09-08  983 1
    13815      [아이템]  부캐 키우다 알아낸 늒네 이동시 팁      윤팀 09-04  1710 4
    13814      [기타]  짧팁&홍보]길드 마크 제작 추천앱       브로캉 08-25  1157 5
    13813      [기타]  아맞다 숙제 리스트  [10] 종잇짱 08-24  3481 0
    13812      [기타]  아츠 찾는법.  [3] 그린랩소디 08-24  3067 0
    13811      [아이템]  [두줄]짧은 시에라 수급팁 [3] 푸푸파파 08-18  2112 1
    13810      [지역]  [뒷북/레벨업 미세팁]280엔 파마르숲.. [8] 푸푸파파 08-11  2990 5
    13809      [전투]    ★ 머즈루스 간편 공략  [13] rnflah 08-10  5047 14
    13807      [전투]  머즈루스 초미세팁  [1] 잇지i 08-10  1815 8
    13806      [아이템]  모링포니아 무기 장비들.       양산1식 08-09  3696 0
    13805      [기타]  길드 연구소..개창렬..하지마세요. [2] 그린랩소디 08-08  1860 0
    13804      [기타]  바이보라서버 길드 추천 [12] 미모와지성 08-07  3684 13
    13802      [애드온]  (애드온)조이스틱 익스텐더(joyst..  [4] Checasa 07-26  2089 3
    13801      [기타]  뉴비 이벤트 짧팁  [2] 나글파 07-26  6138 6
    13800      [아이템]  초보들 장비선택 19년 7월 기준 -.. [3] 그린랩소디 07-24  8043 15
    13799      [기타]  초보들이 꼭 읽었으면 하는 팁들..19.. [18] 그린랩소디 07-22  10918 29
    13798      [기타]  채팅버그 해결방법 [2] 디노로드 07-19  1094 0
    13793      [기타]  50직보 미세팁 [2] 게이고 07-12  2287 3
    13792      [아이템]  돋보기 가격 부담되시는분 팁(리사이클..  [4] 고도영 07-10  2430 10
    13791      [기타]  고인물들은 알지만 뉴비들은 모르는 돈 ..  [3] 닉네임필없어 07-08  6507 15
    13790      [퀘스트]   환기) 수집형 반복퀘스트 미세팁 #트.. [1] 헬가세르클 06-30  1470 0
    13788      [기타]   뉴비를 위한 자원쟁탈전 입문 (데이터주..  [7] 종잇짱 06-27  2390 25
    13787      [아이템]  레전드 장비 세트옵션 정리 [6] 닉네임필없어 06-20  7339 10
    13784      [퀘스트]  컬렉션 정리 (마지막)  [4] 뻐드렁니 06-09  3702 17
    13782      [클래스]  직업고민중인 늅이라면?? 테섭으로!!  [3] lolo 05-31  7137 12
     1  2  3  4  5  6  7  8  9  10 
    명칭: 주식회사 인벤 | 등록번호: 경기 아51514 | 등록연월일: 2009. 12. 14 | 제호: 인벤(INVEN)
    발행인: 서형준 | 편집인: 강민우 | 발행소: 경기 성남시 분당구 성남대로 331번길 8, 17층
    발행연월일: 2004 11. 11 | 전화번호: 02 - 6393 - 7700 | E-mail: help@inven.co.kr

    인벤의 콘텐츠 및 기사는 저작권법의 보호를 받으므로, 무단 전재, 복사, 배포 등을 금합니다.
    Copyrightⓒ Inven. All rights reserved.