UWSC 指定ウィンドウ上の各コントロールのタイトルとクラスを列挙

22 05 2012

指定したウィンドウの子要素を列挙します
「”タイトル”, “クラス名” 」 で表示してます
インデントは階層構造を示しています
これを元にgetid()なりgetctlhnd()なり

2012/05/28
なおした!27行目とか!

const GW_CHILD     = 5
const GW_HWNDNEXT  = 2
def_dll GetWindow(hwnd, dword):hwnd:user32

id = getIdFromList()
if id > -1 then enumChild(id)

pid = getid(GET_LOGPRINT_WIN)
while status(pid, ST_VISIBLE)
	sleep(0.1)
wend

procedure enumChild(id, indent = 0)
	printControl(id, indent)
	hChild = GetWindow(idtohnd(id), GW_CHILD)
	if hChild then
		enumChild(hndtoid(hChild), indent + 1)
		hNext = GetWindow(hChild, GW_HWNDNEXT)
		while hNext
			enumChild(hndtoid(hNext), indent + 1)
			hNext = GetWindow(hNext, GW_HWNDNEXT)
		wend
	endif
fend

procedure printControl(id, indent = 0)
	indent = format(" ", indent * 4)
	print indent + "<#DBL>" + status(id, ST_TITLE) + "<#DBL>, <#DBL>" + status(id, ST_CLASS) + "<#DBL>"
fend

function getIdFromList()
	hashtbl hashID
	hashcnt = 0
	for i = 0 to getallwin() - 1
		id = ALL_WIN_ID[i]
		ifb status(id, ST_VISIBLE)
			eachtitle =  status(id,ST_TITLE)
			if eachtitle = "" then eachtitle = "(タイトルなし)"
			if lengthb(eachtitle) > 38 then eachtitle = copyb(eachtitle, 1, 38) + "…"
			hashID[id] = eachtitle
		endif
	next
	
	n = slctbox(SLCT_NUM or SLCT_LST, 0, "階層構造を調べたいウィンドウを指定", hashID)
	if n = "" or n = -1 then
		result = -1
	else
		if pos("<#tab>", n) then token("<#tab>", n)
		result = hashID[n, HASH_KEY]
	endif
fend




UWSCで構造体がもうあんまり怖くないmodule

1 05 2012

きっかけはWTSEnumerateSessionsExのWTS_SESSION_INFO_1構造体
肝心のセッション情報がuwscからだと取れない!ファック!みたいな出来事があり
自前の構造体を作る、構造体からデータを読み出す、が出来るモジュールを書いてみた
とりあえずは想定通りに動いてはいるけどそのうちボロが出るぞきっとこれ
まぁでもuwscだって頑張ればこんなことも出来るよって話…てことで、ね

ifb GET_UWSC_NAME = "Module_Struct.uws" then
  try
    try
      print "構造体を作ってデータを格納し、そこらから値を読むテスト"
      print
      
      hashtbl hTestStruct
      Struct.AddMember(hTestStruct, "int", Struct.TYPE_INT, 1234)
      Struct.AddMember(hTestStruct, "long", Struct.TYPE_LONG, 5678)
      Struct.AddMember(hTestStruct, "word", Struct.TYPE_WORD, $FFFF)
      Struct.AddMember(hTestStruct, "byte", Struct.TYPE_BYTE, $FF)
      Struct.AddMember(hTestStruct, "string", Struct.TYPE_STRING, "hello world")
      Struct.AddMember(hTestStruct, "double", Struct.TYPE_DOUBLE, 3.1415)
      Struct.AddMember(hTestStruct, "float", Struct.TYPE_FLOAT, 3.1415)
      
      dim pTestStruct
      testStructSize = Struct.CreateStruct(hTestStruct, pTestStruct)
      if testStructSize then
        print "Address of testStruct: " + pTestStruct
        print "Size of testStruct: " + testStructSize + "byte"
        if Struct.GetStructValues(pTestStruct, hTestStruct) then
          for i = 0 to length(hTestStruct) - 1
            name = hTestStruct[i, HASH_KEY]
            print "pTestStruct." + name + " = " + Struct.GetMember(hTestStruct, name)
          next
        else
          print Struct.GetLastErrorString()
        endif
        Struct.FreeStruct(pTestStruct)
      else
        print Struct.GetLastErrorString()
      endif
      
      print 
      print "構造体を作ってdll関数に渡し、値を読むテスト"
      print
      def_dll GetWindowRect(hwnd, dword):long:user32
      hashtbl hRect
      dim pRect
      Struct.AddMember(hRect, "left", Struct.TYPE_LONG, 0)
      Struct.AddMember(hRect, "top", Struct.TYPE_LONG, 0)
      Struct.AddMember(hRect, "right", Struct.TYPE_LONG, 0)
      Struct.AddMember(hRect, "bottom", Struct.TYPE_LONG, 0)
      
      StructSize = Struct.CreateStruct(hRect, pRect)
      id = exec("notepad")
      GetWindowRect(idtohnd(id), pRect)
      if StructSize > 0 then
        print "Address of pRect: " + pRect
        print "Size of pRect: " + StructSize + "byte"
        if Struct.GetStructValues(pRect, hRect) then
          for i = 0 to length(hRect) - 1
            name = hRect[i, HASH_KEY]
            print "pRect." + name + " = " + Struct.GetMember(hRect, name)
          next
          print
          print "比較用"
          print "status(id, ST_X) = " + status(id, ST_X)
          print "status(id, ST_Y) = " + status(id, ST_Y)
          print "status(id, ST_X) + status(id, ST_WIDTH) = " + (status(id, ST_X) + status(id, ST_WIDTH))
          print "status(id, ST_Y) + status(id, ST_HEIGHT)= " + (status(id, ST_Y) + status(id, ST_HEIGHT))
        else
          print Struct.GetLastErrorString()
        endif
        Struct.FreeStruct(pTestStruct)
      else
        print Struct.GetLastErrorString()
      endif
      ctrlwin(id, close)
      print
      
      print "WTSEnumerateSessionsExに挑戦"
      print "第4引数がWTS_SESSION_INFO_1構造体の配列のアドレスを格納した変数のポインタ"
      print "なので、def_dll宣言時に通常の{ }展開では値が取れない"
      print
      
      def_dll WTSEnumerateSessionsExA(dword, var dword, dword, var dword, var dword):bool:Wtsapi32
      dim PWTS_SESSION_INFO_1, COUNT
      dim pLevel = 1, Filter = 0
      hashtbl hWtsSessionInfoType
      Struct.AddMember(hWtsSessionInfoType, "ExecEnvId", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "State", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "SessionId", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "pSessionName", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "pHostName", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "pUserName", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "pDomainName", Struct.TYPE_DWORD, 0)
      Struct.AddMember(hWtsSessionInfoType, "pFarmName", Struct.TYPE_DWORD, 0)
      
      sizeOfWtsSessionInfoType = Struct.GetSizeOfStruct(hWtsSessionInfoType)
      
      if WTSEnumerateSessionsExA(null, pLevel, Filter, PWTS_SESSION_INFO_1, COUNT) then
        for i = 0 to COUNT - 1
          ptr = PWTS_SESSION_INFO_1 + (i * sizeOfWtsSessionInfoType)
          if Struct.GetStructValues(ptr, hWtsSessionInfoType) then
            for i = 0 to length(hWtsSessionInfoType) - 1
              name = hWtsSessionInfoType[i, HASH_KEY]
              value = Struct.GetMember(hWtsSessionInfoType, name)
              print name + " = " + value
              if pos("p", name) = 1 then   //p*****はstringのポインタなので値も取る
                value = Struct.GetValueFromPointer(value, Struct.TYPE_STRING)
                print "  " + copy(name, 2) + " = " + value
              endif
            next
          endif
          print
        next
      endif
      
      exit
    except
      print TRY_ERRLINE
      print TRY_ERRMSG
    endtry
  finally
    pid = getid(GET_LOGPRINT_WIN)
    while status(pid, ST_VISIBLE)
      sleep(0.1)
    wend
  endtry
endif


module Struct
  
  procedure Struct
    _hashTypeName[TYPE_INT      ] = "TYPE_INT"
    _hashTypeName[TYPE_LONG     ] = "TYPE_LONG"
    _hashTypeName[TYPE_BOOL     ] = "TYPE_BOOL"
    _hashTypeName[TYPE_UINT     ] = "TYPE_UINT"
    _hashTypeName[TYPE_HWND     ] = "TYPE_HWND"
    _hashTypeName[TYPE_STRING   ] = "TYPE_STRING"
    _hashTypeName[TYPE_WSTRING  ] = "TYPE_WSTRING"
    _hashTypeName[TYPE_FLOAT    ] = "TYPE_FLOAT"
    _hashTypeName[TYPE_DOUBLE   ] = "TYPE_DOUBLE"
    _hashTypeName[TYPE_WORD     ] = "TYPE_WORD"
    _hashTypeName[TYPE_DWORD    ] = "TYPE_DWORD"
    _hashTypeName[TYPE_BYTE     ] = "TYPE_BYTE"
    _hashTypeName[TYPE_CHAR     ] = "TYPE_CHAR"
    _hashTypeName[TYPE_PCHAR    ] = "TYPE_PCHAR"
    _hashTypeName[TYPE_WCHAR    ] = "TYPE_WCHAR"
    _hashTypeName[TYPE_PWCHAR   ] = "TYPE_PWCHAR"
    _hashTypeName[TYPE_BOOLEAN  ] = "TYPE_BOOLEAN"
    _hashTypeName[TYPE_LONGLONG ] = "TYPE_LONGLONG"
    _hashTypeName[TYPE_EXTENDED ] = "TYPE_EXTENDED"
    _hashTypeName[TYPE_SAFEARRAY] = "TYPE_SAFEARRAY"
  fend
  
  dim _lastErrorDescription
  hashtbl _hashTypeName

  const TYPE_INT       = 0
  const TYPE_LONG      = 1
  const TYPE_BOOL      = 2
  const TYPE_UINT      = 3
  const TYPE_HWND      = 4
  const TYPE_STRING    = 5
  const TYPE_WSTRING   = 6
  const TYPE_FLOAT     = 7
  const TYPE_DOUBLE    = 8
  const TYPE_WORD      = 9
  const TYPE_DWORD     = 10
  const TYPE_BYTE      = 11
  const TYPE_CHAR      = 12
  const TYPE_PCHAR     = 13
  const TYPE_WCHAR     = 14
  const TYPE_PWCHAR    = 15
  const TYPE_BOOLEAN   = 16
  const TYPE_LONGLONG  = 17
  const TYPE_EXTENDED  = 18
  const TYPE_SAFEARRAY = 19
  
  const MEMBER_TYPE  = 0
  const MEMBER_VALUE = 1
  
  const MEM_COMMIT             = $1000
  const PAGE_READWRITE         = $4
  const PAGE_EXECUTE_READWRITE = $40
  Const MEM_RELEASE            = $8000
  const MEM_DECOMMIT           = $4000

  def_dll VirtualAlloc(dword, dword, dword, dword):dword:kernel32
  def_dll VirtualFree(dword, dword, dword):long:kernel32

  function CreateStruct(hashStruct[], var pStruct)
    structSize = GetSizeOfStruct(hashStruct)
    if structSize then
      result = structSize
      pStruct = VirtualAlloc(null, structSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
      ptr = pStruct
      for i = 0 to length(hashStruct) - 1
        mName = hashStruct[i, HASH_KEY]
        type = GetMember(hashStruct, mName, MEMBER_TYPE)
        value = GetMember(hashStruct, mName, MEMBER_VALUE)
        size = _copyVariableToPointer(ptr, value, type)
        if size then
          ptr = ptr + size
        else
          _setErrorString("CreateStruct: _copyVariableToPointer()が次のエラーを返しました -> " + GetLastErrorString())
          result = 0
          exit
        endif
      next
    else
      _setErrorString("CreateStruct: GetSizeOfStruct()が次のエラーを返しました -> " + GetLastErrorString())
      result = 0
    endif
    
  fend

  function GetStructValues(pStruct,var hashStruct[])
    result = true
    ptr = pStruct
    for i = 0 to length(hashStruct) - 1
      mName = hashStruct[i, HASH_KEY]
      type = GetMember(hashStruct, mName, MEMBER_TYPE)
      value = _getValueFromPointer(ptr, type)
      if value = empty then
        _setErrorString("GetStructValues: _getValueFromPointer()が次のエラーを返しました -> " + GetLastErrorString())
        result = false
        exit
      else
        _setMemberValue(hashStruct, mName, value)
        ptr = ptr + _getSize(type, value)
      endif
    next
  fend
  
  function GetValueFromPointer(pointer, type)
    if pointer then
      result = _getValueFromPointer(pointer, type)
      if result = empty then
        _setErrorString("GetValueFromPointer: _getValueFromPointer()が次のエラーを返しました -> " + GetLastErrorString())
      endif
    else
      _setErrorString("GetValueFromPointer: pointerが0です")
      result = empty
    endif
  fend
  
  function FreeStruct(hStruct, size = 0)
    result = VirtualFree(hStruct, size, MEM_RELEASE)
  fend
  
  function GetLastErrorString()
    result = _lastErrorDescription
  fend
  
  function GetSizeOfStruct(hashStruct[])
    result = 0
    for i = 0 to length(hashStruct) - 1
      mName = hashStruct[i, HASH_KEY]
      type = GetMember(hashStruct, mName, MEMBER_TYPE)
      select type
        case TYPE_STRING
          value = GetMember(hashStruct, mName, MEMBER_VALUE)
          size = _getSize(type, value)
        default
          size = _getSize(type)
      selend
      if size then
        result = result + size
      else
        _setErrorString("GetSizeOfStruct: 未対応の型[" + _hashTypeName[type] + "]")
        result = 0
        break
      endif
    next
  fend
  
  procedure AddMember(var hashStruct[], menberName, memberType, memberValue)
    sa = safearray(0,1)
    sa[MEMBER_TYPE]  = memberType
    sa[MEMBER_VALUE] = memberValue
    hashStruct[menberName] = sa
  fend
  
  function GetMember(hashStruct[], menberName, CONST_MEMBER = MEMBER_VALUE)
    sa = hashStruct[menberName]
    result = sa[CONST_MEMBER]
  fend
  
  procedure _setMemberValue(var hashStruct[], menberName, memberValue)
    sa = hashStruct[menberName]
    sa[MEMBER_VALUE] = memberValue
    hashStruct[menberName] = sa
  fend
  
  function _getSize(type, str = "")
    result = 0
    select type
      case TYPE_INT, TYPE_LONG, TYPE_BOOL, TYPE_UINT, TYPE_HWND, TYPE_DWORD
        result = 4
      case TYPE_STRING   
        result = lengthb(str)
        mod4 = result mod 4
        if mod4 then result = result + (4 - mod4)
    //  case TYPE_WSTRING  
      case TYPE_FLOAT
        result = 4
      case TYPE_DOUBLE
        result = 8
      case TYPE_WORD
        result = 2
      case TYPE_BYTE, TYPE_CHAR, TYPE_BOOLEAN
        result = 1
      case TYPE_PCHAR, TYPE_PWCHAR
        result = 4
    //  case TYPE_WCHAR
      case TYPE_LONGLONG 
        result = 8
    //  case TYPE_EXTENDED 
    //  case TYPE_SAFEARRAY
      default
        result = 0
    selend
  fend
  
  function _copyVariableToPointer(pointer, variable, const_type)

    try
      result = _getSize(const_type, variable)
      if result
        select const_type
          case TYPE_INT
            def_dll RtlMoveMemory(dword, var int, dword):kernel32
          case TYPE_LONG
            def_dll RtlMoveMemory(dword, var LONG, dword):kernel32
          case TYPE_BOOL
            def_dll RtlMoveMemory(dword, var BOOL, dword):kernel32
          case TYPE_UINT
            def_dll RtlMoveMemory(dword, var UINT, dword):kernel32
          case TYPE_HWND
            def_dll RtlMoveMemory(dword, var HWND, dword):kernel32
          case TYPE_STRING
            def_dll RtlMoveMemory(dword, var STRING, dword):kernel32
          case TYPE_WSTRING
            def_dll RtlMoveMemory(dword, var WSTRING, dword):kernel32
          case TYPE_FLOAT
            def_dll RtlMoveMemory(dword, var FLOAT, dword):kernel32
          case TYPE_DOUBLE
            def_dll RtlMoveMemory(dword, var DOUBLE, dword):kernel32
          case TYPE_WORD
            def_dll RtlMoveMemory(dword, var WORD, dword):kernel32
          case TYPE_DWORD
            def_dll RtlMoveMemory(dword, var DWORD, dword):kernel32
          case TYPE_BYTE
            def_dll RtlMoveMemory(dword, var BYTE, dword):kernel32
          case TYPE_CHAR
            def_dll RtlMoveMemory(dword, CHAR, dword):kernel32
          case TYPE_PCHAR
            def_dll RtlMoveMemory(dword, PCHAR, dword):kernel32
          case TYPE_WCHAR
            def_dll RtlMoveMemory(dword, WCHAR, dword):kernel32
          case TYPE_PWCHAR
            def_dll RtlMoveMemory(dword, PWCHAR, dword):kernel32
          case TYPE_BOOLEAN
            def_dll RtlMoveMemory(dword, var BOOLEAN, dword):kernel32
          case TYPE_LONGLONG
            def_dll RtlMoveMemory(dword, var LONGLONG, dword):kernel32
          case TYPE_EXTENDED
            def_dll RtlMoveMemory(dword, var EXTENDED, dword):kernel32
          case TYPE_SAFEARRAY
            def_dll RtlMoveMemory(dword, var SAFEARRAY, dword):kernel32
          default
            _setErrorString("_copyVariableToPointer: 型指定が不正 [" + const_type + "]")
            result = 0
            exit
        selend
        RtlMoveMemory(pointer, variable, result)
      else
        _setErrorString("_copyVariableToPointer: 未対応の型[" + _hashTypeName[const_type] + "]")
      endif
    except
      _setErrorString("_copyVariableToPointer: コピー失敗 - " + TRY_ERRMSG + " " + TRY_ERRLINE)
      result = 0
    endtry
  fend
  
  function _getValueFromPointer(pointer, const_type, buffer = "")
    select const_type
      case TYPE_INT
        def_dll RtlMoveMemory(var int, dword, dword):kernel32
      case TYPE_LONG
        def_dll RtlMoveMemory(var long, dword, dword):kernel32
      case TYPE_BOOL
        def_dll RtlMoveMemory(var bool, dword, dword):kernel32
      case TYPE_UINT
        def_dll RtlMoveMemory(var uint, dword, dword):kernel32
      case TYPE_HWND
        def_dll RtlMoveMemory(var hwnd, dword, dword):kernel32
      case TYPE_STRING
        def_dll RtlMoveMemory(var string, dword, dword):kernel32
        buffer = format(chr(0), 1024)
      case TYPE_WSTRING
        def_dll RtlMoveMemory(var wstring, dword, dword):kernel32
      case TYPE_FLOAT
        def_dll RtlMoveMemory(var float, dword, dword):kernel32
      case TYPE_DOUBLE
        def_dll RtlMoveMemory(var double, dword, dword):kernel32
      case TYPE_WORD
        def_dll RtlMoveMemory(var word, dword, dword):kernel32
      case TYPE_DWORD
        def_dll RtlMoveMemory(var dword, dword, dword):kernel32
      case TYPE_BYTE
        def_dll RtlMoveMemory(var byte, dword, dword):kernel32
      case TYPE_CHAR
        def_dll RtlMoveMemory(char, dword, dword):kernel32
      case TYPE_PCHAR
        def_dll RtlMoveMemory(pchar, dword, dword):kernel32
      case TYPE_WCHAR
        def_dll RtlMoveMemory(wchar, dword, dword):kernel32
      case TYPE_PWCHAR
        def_dll RtlMoveMemory(pwchar, dword, dword):kernel32
      case TYPE_BOOLEAN
        def_dll RtlMoveMemory(var boolean, dword, dword):kernel32
      case TYPE_LONGLONG
        def_dll RtlMoveMemory(var longlong, dword, dword):kernel32
      case TYPE_EXTENDED
        def_dll RtlMoveMemory(var extended, dword, dword):kernel32
      case TYPE_SAFEARRAY
        def_dll RtlMoveMemory(var safearray, dword, dword):kernel32
      default
        _setErrorString("_getValueFromPointer: 型指定が不正 [" + const_type + "]")
        result = 0
        exit
    selend
    try
      if lengthb(buffer) then
        result = buffer
        size = _getSize(const_type, buffer)
      else
        result = empty
        size = _getSize(const_type)
      endif
      if size
        RtlMoveMemory(result, pointer, size)
      else
        _setErrorString("_getValueFromPointer: 未対応の型[" + _hashTypeName[const_type] + "]")
      endif
    except
      _setErrorString("_getValueFromPointer: コピー失敗 - " + TRY_ERRMSG + " " + TRY_ERRLINE)
      result = empty
    endtry
  fend
  
  procedure _setErrorString(str)
    _lastErrorDescription = str
  fend

endmodule




「ファイナル・カウントダウン」が面白い

11 06 2011

つい最近になって存在に気付いたカード

どんくらい面白いかっつうと思わずブログに書きたくなるくらい
よく見たらゲームオリジナルだった

罠・永続
このカードがフィールド上に表側表示で存在する限り、自分は魔法・罠カードを発動できない。相手のエンドフェイズ時に1度、自分のデッキから魔法または罠カード1枚を選択し、お互いに確認して自分の魔法&罠カードゾーンにセットすることが出来る。自分のメインフェイズ時に自分フィールド上に存在するこのカードと、このカードの効果でセットした魔法・罠カードを全て墓地へ送る事で、墓地へ送った数によって以下の数値分のダメージを相手ライフに与える。
●2枚:500ポイント
●3枚:1500ポイント
●4枚:3000ポイント
●5枚:6000ポイント

最大6000の効果ダメージはなんか変な笑いがこぼれるけど当然ダメージ効果なんて狙わないよね
何と言っても任意の魔法・罠をサーチ出来るのが素敵
とは言え普通に使ってると「サーチ効果発動は相手のエンドフェイズ」、「自分は魔法・罠が使えない」というデメリットがあるわけなんだけどそんなのは使い様です
すたんちゃんとこだとスクラップ・ドラゴンと非常に相性が良かったのでスクラップデッキで活躍中

スクラップ・ドラゴンの破壊効果はとても強力だけど自フィールドにもコストとして何かしらカードが必要なので、それの補充が出来るのが良い
セットされたカードは発動出来ないけど、セット状態で破壊されると発動するタイプのカードならその制限を受けないのでそういったカードを主に引っ張ってきたりする(デッキに入ってるのだと荒野の大竜巻とか呪われた棺とか)
後は、今すぐ使いたい魔法・罠を引っ張ってきておいてファイナル・カウントダウンを破壊してしまえば制限がなくなるからサーチしてきたカードが使えるしね
通常この手のカードは自身がフィールドを離れるとと引っ張ってきたカードも道連れにされるもんなんだけど、ファイナル・カウントダウンにはそういった性質がないことを利用している
こういう使い方なら相手エンドフェイズにサーチするのはむしろ利点かも

ついでにスクラップデッキ晒そう

[メイン]

パワー・ジャイアント 2
スクラップ・ゴーレム 2
ギガンテス 3
スクラップ・キマイラ 3
スクラップ・ビースト 3
スクラップ・ハンター 2
スクラップ・ゴブリン 3
巨大ネズミ 1
メタモルポット 1
暗黒界の取引 2
おろかな埋葬 1
死者蘇生 1
スクラップ・エリア 1
スクラップ・スコール 3
盗人の煙玉 2
光の護封剣 1
鎖付き爆弾 2
荒野の大竜巻 2
御前試合 1
聖なるバリア -ミラーフォース- 1
呪われた棺 2
ファイナル・カウントダウン 1

[エクストラ]

スクラップ・ツイン・ドラゴン 3
スクラップ・ドラゴン 3
ブラック・ローズ・ドラゴン 2
ナチュル・ランドオルス 2
ナチュル・パルキオン 2
ナチュル・ビースト 2
ナチュル・エクストリオ 1

ナチュル・エクストリオは是非喚んでみたいが融合入れてないっつう





spモード契約したらtwitter出来ないよー!な件の顛末 #t01c

3 01 2011

spモード契約時にspモードフィルタも(勝手に)契約されていたっつうオチでした
フィルタリングサービスの加入についてはここに書いてあったんだけど

20歳以上の方が新規に「iモード/spモード/ブラックベリーインターネットサービス」をご契約の際、ご利用者が18歳未満であるかどうか確認させていただきます。ご利用者が18歳未満である場合、「ご希望のアクセス制限サービス」または「アクセス制限サービス不要」のお申込みがなければ、「iモードフィルタ/spモードフィルタ/ブラックベリーWebフィルタ」のお申込みとして受け付けを行います。

ってな具合らしいので、うっかりすると勝手に契約させられちゃうことあるのかも
利用者が18歳以上の場合ってどうなるのか一切書いてないからわかんないんだけど、実は要らないって言わない限り原則加入なんじゃないかなこれ
ちなみにヤマダの愚かな店員はこんな確認一切しなかったよ


以下docomoのスマホ買ってspモード契約したらtwitterできない!の解決方法
  1. ブラウザでtwitter.comを開く
  2. docomoっぽい画面で「アクセス制限」てかかれたページに行っちゃったらおそらくspモードフィルタ契約中
  3. spモードフィルタを契約してるかどうかはMy docomoじゃどうにも確認出来ないっぽいので151で問い合わせるかDSで訊く
  4. 契約中だった場合、spモードフィルタの解約はDSでのみ可能なのでDS行く

年明け早々めんどくさかったなぁ





T-01C+アクセス制限=役立たず #t01c

2 01 2011

twitterを始めブログとか価格comとかまぁいろいろアクセスできねーっつう
原因は多分これ

アクセス制限サービス

うんまぁ当然ながらこんなサービス使ってないんだけどね
申込画面行ったら未契約って出るし
でも表示されるブロック画面の内容でぐぐってみるとこれの話しか出てこないんだ

いずれにせよわけわからんアクセス制限のおかげでtwitter関連なんにもできない
F-chat(NXのtwitterウィジェット、多分)は微動だにしない
コネクションで許可出すとこまでは出来てたけどTL取得出来ないしつぶやけないし
要するにどうにもなんない
twitter for Androidはログイン出来ない
コネクションにはいつの間にか許可設定で追加されてたけど
ログイン出来ないってことはその先のことがなんにもできないわけで
要するにどうにもなんない
Twiccaってのも入れてみたけど
これに至っては認証アカウント入力さえできないという
これはなんだ、なんだ
まぁいいやそれは

docomoドメインのメールアドレスあったほうがいいよね
ってな理由でSPモードなんかにするべきではなかった
なんかmoperaだったらこんなことにならなかった気がするよ!

twitterはT-01Bでやるからいいよ
ぷんすか





遊戯王 5D’s ディケイド デュエルズ

4 11 2010

待ちに待ったXBLA版遊戯王
でもこれ劣化タッグフォースだったという

ディケイド デュエルズ(以下DD)はこんな感じで楽しいんだよ!

ゲームモード

シングルプレイヤー予選リーグを勝ち上がったら決勝トーナメント
がんばって勝ってね

というのがメイン
あとはLiveで対戦とか出来る

カード入手方法

勝つとランダムに10枚貰える
相手キャラによってカード種類の傾向があるような気がしたが気のせいだろう

負けても少なくとも1枚は貰える
3枚貰えたこともあるのでどうなってんのかはよくわかんない
この場合レア率が高いような気がする
ただ、だいたい単品で成立しないようなカードなので嬉しくない
追記:獲得ポイント÷20枚貰えるみたい
負けるにしてもポイント稼いでおいたほうがいいよ!

決勝トーナメントはマッチ(=2本先取)なのに10枚しか貰えない
相手は予選より断然強いのにね
割に合わない

ちなみにまだトーナメント勝ててないからご褒美がなんなのかわかんないんだ

デュエル

安心のOCGルール
なので初心者にはやさしくないよ

PSP版のタッグフォースシリーズ(以下TF)を低速化した感じ
爽快感が減りイライラが増した

チュートリアル

と言っても膨大なテキスト読ませるだけなんだけど
TFと比べるとものすごくテキストの量は減ってる
基本ばっかで難しいことは省いてある
難しいとこは実際に直面した際にwikiとか見たらいいよ

キャラデザ

メインキャラはなにか おかしい
モブはひどい
なぜTFと同じにしなかったのか

こんなにかわいいのに

デッキ編集

ここはDDオリジナルだった
劣化TFとは呼ばせない!

オリジナリティ高すぎてまともに編集が出来ないんだけども

◇◇◇

ほら、楽しそうでしょ

というわけで次はもうちょっとつっこんだ話
上に書いた話はまぁまだ許せる範囲
ゲーム版遊戯王やったことある人は気になるであろうことなんかを

設定

音量調整しかない
デュエル関連設定がないとかどうかしてる
すると以下のような感じになる

任意ドローがない

RTかRBでドローさせてくれよ

ダイアログがうるさい

優先権回ってきたときに発動可能なカードがある場合絶対ダイアログが出る
デフォはチェーンや誘発効果が可能なときくらいにしておいてくれよ、と
必要なときはA長押しで割りこむから…

パーミッションデッキ使ってるわけじゃあないんだぜ

◇◇◇

ほら、楽しそうでしょ

あとは、こうなったらいいなぁ、って話だ

上に書いた諸々の改善

アップデートでどうにかして…
ないんだろうけど

勝利時パック選択

勝ったらカテゴライズされたパッケージを選んでその中からランダムに10枚
だったら良かったのに
今のままだと好きなデッキが組めない

日本版カード表示

ぱっと見わかんねーカードとかたまにあるからやめれ

こんなDLCだったら金だすよ

そこそこ強いストラクチャーデッキ
レシピ+収録カード3枚ずつでね

または、カテゴリ別のカードパック
戦士パック1、戦士パック2、戦士パック3、みたいなのを
各カード3枚ずつ50種類とかでもいいから
数種類買ったら好きなデッキ組めるくらいじゃないとやってられないよ!

◇◇◇

ほら、楽しそうでしょ

みんなも買おうぜ





Writerてすと

29 09 2010

てすと投稿です
はずかしい!すぐ消しなよ!








フォロー

Get every new post delivered to your Inbox.

現在88人フォロワーがいます。