無料Playの範囲でオンクレを最大限遊んでみた
先日、オンラインクレーンゲームというものがあるというのを初めて知って、配送無料とかいうのがあるらしいと目にしたので、どういうこと??と思って始めてみました。
はじめに言っておきたいこととしては、微課金した方が特典も多いし、あともう一回…というのに対処ができるので、満足度も高くて良いと思います!重課金にならないよう気を付けつつ…。
オンクレ自体については、キュリオス.INFOさんや、毎日がクレーンゲームパーティーさんがとても参考になるのでそちらを見ると良いと思います。
※自分は、クレーンゲーム(リアル)の累計課金額1〜2万程度の人なのでそのくらいの前提で読んでください。
そして約50日経った現時点での結果… 。
22個 ゲットすることができています🎉 (ノベルティ、配送チケット除く)
そしてちゃんと配送される。すごい。普通にやると課金は必須だなって感じになって流れで課金するからこれで成り立つのだろうなと思う。
海外の謎アプリでもゲットできたけど配送怖いのでやめたやつもある(獲得数に含めてない)。
↓獲得品の写真(配送中除く)。ちゃんと大物も獲れている。22個は、多分かなり成績は良いはず。

ルールとしては、
- 配送も含めて課金なしでやる
- ポイ活は、インストール・起動のみ系や、無料会員登録、ゲームのチュートリアル等の作業時間10分を超えない程度のもののみ(お試し登録系は手を出さない)
くらいです。
これでプレイすると、一定遊べるけど結構制約が厳しい(プレイチケット対象景品・遊び方がほぼない、連続プレイを前提としている、など)ので、ちゃんとサービス設計された上での配送無料とかなんだなというのをとても感じられます。単純に楽しみたい場合は素直に課金しましょう…。
獲得品内訳:
次に各オンクレでのプレイ状況・感想について書きます。
基本的には以下のような考え方でやっています。
- 1発ゲットの可能性がある台だけ選ぶ(3本爪、たこ焼き等の玉入れ系)
- 無理して橋渡しでバランスキャッチとかは狙わない
- 但し、たこ焼きはプレイチケット対象外が殆ど
- たこ焼きをやる場合は、ある程度ポイント貯めれる場合は貯める。そして、放置台を探す(ハイエナと呼ばれてるやつ)
- 放置されてるので気にせずやればいいと思う。並ぶ時はほどほどに。
- 基本的に20〜30回くらい投げないと当たらないことが多いのでそもそも積み重ねされる前提だと思う
- ポイント台は基本やらない(一部除く)
- 1/2〜1/3以下になる期待値だと思います。
- ポイントが余って期限が来てしまうという時のみ。
各サービスの所感:
PowerShellから各種ブラウザで開いているURLを取得する (Windows10+Chrome編)
概要
Chrome編です。Chromeは開いているページのURL全部取れないこともないっぽいんですけど、一個あたり1〜2秒くらいかかるので用途によっては厳しい。なんとか減らせないかな?ってTreeWalkerでやってみたけど最短経路で到達しても同じくらいの時間がかかる…。
適当に取れる範囲絞ってとるといいと思う。
ターゲットは「アドレス検索バー」。今回は、ControlTypePropertyで取ってみる。

コード
$chorome_csharp = @"
using System;
using System.Windows.Automation;
using System.Diagnostics;
using System.Collections.Generic;
namespace UIAutomationChrome {
public class Program {
public static List<String> GetURLList() {
List<String> urlList = new List<String>();
AutomationElementCollection tests = AutomationElement.RootElement.FindAll(TreeScope.Element | TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Pane));
foreach (AutomationElement testElement in tests){
AutomationElement test1 = testElement.FindFirst(TreeScope.Element | TreeScope.Children, new PropertyCondition(AutomationElement.ClassNameProperty, "Chrome_WidgetWin_1"));
if (test1 == null) {continue;}
AutomationElement test2 = test1.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit));
if (test2 == null ) {continue;}
ValuePattern v = (ValuePattern)test2.GetCurrentPattern(ValuePattern.Pattern);
if (v.Current.Value != null && v.Current.Value != "") {
Console.WriteLine("URL:" + v.Current.Value);
urlList.Add(v.Current.Value);
}
}
return urlList;
}
}
}
"@
Add-Type -TypeDefinition $chorome_csharp -ReferencedAssemblies("UIAutomationClient", "UIAutomationTypes");
foreach ($url in [UIAutomationChromes.Program]::GetURLList()) {
$url
}

PowerShellから各種ブラウザで開いているURLを取得する (Windows10+IE編)
概要
IEからも取るよ。難しいことは不要
コード
$shell = New-Object -ComObject Shell.Application
$ie_list = @($shell.Windows() | where { $_.Name -match "Internet Explorer" })
$ie = @($ie_list | select LocationURL)
$ie

PowerShellから各種ブラウザで開いているURLを取得する (Windows10+Microsoft Edge編)
概要
AuntomationのConditionで絞って特定の属性を持つノードをInspectorでとってくる(前の記事参照)。
悲しいことにMSEdgeはActiveになっていないタブのURLは取れない。ので、アドレスバーからとる。タブにフォーカスを順に当ててけばできると思うけど、ここでは秘密裏にユーザ操作に影響を与えず取得することを目的とするため、そういうことはせず、一個とるだけで我慢する。
目標はURL入ってるこれ。ControlTypeでも取れると思うが、Nameの「アドレスと検索バー」からとる。当然、言語が違えば表現が変わるので注意。

コード
$edge_csharp = @"
using System;
using System.Windows.Automation;
using System.Diagnostics;
namespace UIAutomationEdge {
public class Program {
public static string GetURL(Process process) {
AutomationElementCollection roots = AutomationElement.RootElement.FindAll(TreeScope.Element | TreeScope.Children, new AndCondition(new PropertyCondition(AutomationElement.ProcessIdProperty, process.Id), new PropertyCondition(AutomationElement.ClassNameProperty, "Chrome_WidgetWin_1")));
foreach (AutomationElement rootElement in roots){
AutomationElement address = rootElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "アドレスと検索バー"));
if (address == null) {continue;}
ValuePattern v = (ValuePattern)address.GetCurrentPattern(ValuePattern.Pattern);
if (v.Current.Value != null && v.Current.Value != "") {
Console.WriteLine("URL:" + v.Current.Value);
return v.Current.Value;
}
}
return "";
}
}
}
"@
Add-Type -TypeDefinition $edge_csharp -ReferencedAssemblies("UIAutomationClient", "UIAutomationTypes");
$msedges = (Get-Process -name msedge)
foreach ($msedge in $msedges) {
$url = [UIAutomationEdge.Program]::GetURL($msedge);
if ($url) {
$url
}
}

PowerShellから各種ブラウザで開いているURLを取得する (Windows10+FireFox編)
概要
色々Webを調べたんだけど、うまくばしっと取れるやつがなかったので自分で調べて作った。困ってる人もいそうな気がしなくもないので?書いておく。あとでIE編(超簡単)、Chrome編、MSEdge編も書く。
まず、AuntomationのConditionで絞って特定の属性を持つノードをとってくる、というのがわかってないと何をやってるのかさっぱりわからないので、とりあえずインストールしましょう。とりあえず、気軽に取れるのかな?って思って調べ始めたときは、「これで取れます!」って言っているコードが何を元にプロパティ名・値を指定しているのかさっぱりわからず迷宮入りした。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64 とかそういう感じのところに入ってます。
Windows SDK アーカイブ - Windows アプリ開発
こんな感じ。URLを持ってそうなやつがいますね。

あとは、愚直に取ります。TreeScope.Descendants+FindAllするとコード的には簡単に取れますが、20秒くらい時間かかりました。開いてるタブ多いともっとかかりそう。あと、LocalizedControlTypeはLocalizedなので環境によって違う可能性があるので、利用する環境に合わせてInspectorでとってきた方が良さそう。
コード
$firefox_csharp = @"
using System;
using System.Windows.Automation;
using System.Diagnostics;
using System.Collections.Generic;
namespace UIAutomationFirefox {
public class Program {
public static List<String> GetURLList(Process process) {
AutomationElementCollection roots = AutomationElement.RootElement.FindAll(TreeScope.Element | TreeScope.Children, new AndCondition(new PropertyCondition(AutomationElement.ProcessIdProperty, process.Id), new PropertyCondition(AutomationElement.ClassNameProperty, "MozillaWindowClass")));
List<String> urlList = new List<String>();
foreach (AutomationElement rootElement in roots){
AutomationElementCollection groupElements = rootElement.FindAll(TreeScope.Element | TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, ""));
foreach (AutomationElement groupElement in groupElements){
if (groupElement.Current.ControlType.LocalizedControlType == "メニュー") {continue;}
AutomationElementCollection children1 = groupElement.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, ""));
foreach (AutomationElement child1 in children1){
AutomationElementCollection children2 = child1.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, ""));
foreach (AutomationElement child2 in children2){
AutomationElementCollection docElements = child2.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.LocalizedControlTypeProperty, "ドキュメント"));
foreach (AutomationElement docElement in docElements){
ValuePattern v = (ValuePattern)docElement.GetCurrentPattern(ValuePattern.Pattern);
Console.WriteLine("URL:" + v.Current.Value);
urlList.Add(v.Current.Value);
}
}
}
}
}
return urlList;
}
}
}
"@
Add-Type -TypeDefinition $firefox_csharp -ReferencedAssemblies("UIAutomationClient", "UIAutomationTypes");
$firefoxes = (Get-Process -name firefox)
foreach ($firefox in $firefoxes) {
foreach ($url in [UIAutomationFirefox.Program]::GetURLList($firefox)) {
$url
}
}

ひさびさに 見に来てみたら 2年前
最後に書いたの2年前くらいだった。
はてなに出てくる広告でも(というかGoogleAdがいけないのか)「Download」とかの偽装バナーのやつがいるのですね。あれ、AdWareとかうっかりダウンロードする人がいるので悪質だからやめてほしい。。。
そして、また、広告を消したいので書くべ、って思ったら、消えない説??
出てもいいけど、悪質な奴は出ないでほしい。
そして、消せたけどこれ怒られるパターンかな?今時はどこに移住するのが流行なのだろうか。
広告が かなり邪魔だよ 消したいよ
それだけなのですけれど。消したいのです。
消えたぜ!!