作っちゃ消して作っちゃ消してで何年もやってるとかアホの極みだけど
今回はドワ娘作ってちと継続しようかと、にしてもヴォルフは買うとして
暁露の50まで上げりゃいいかなと。家だよ家。もー屋根裏買っちまった方が
気楽なんだけど土地がねぇwだもんで8x8、1000金だった頃が懐かしいぜ
とはいえ労P消費兼ねてとなるとやっぱ屋根裏かねぇ。
デイリーで会館荷物1個となると川沿いの会館の近く一択なんだよなぁ
ほぼ直線で交易所まで5分かからんし。
むしろ縛り付ける意味で屋根裏買うべきか、悩むねぇ。
クロスが年がら年中平和ならクロスいいんだけどねぇ・・・

巡航船のツール、新(船見るだけ)旧(荷物見る)合わせてtest3zipで
upし直しときましたので状況に合わせて使い分けどぞ

とりあえずこれにて巡航船ネタ終了です。
そもそも時間が無いケースでの使用を想定しているので東人ならツイン飛んで
ガードにかからんように移動して交易所行きゃいいだけだけど西人が辛いのよね
んー、荷運びは内側ルートオンリーだろうからそうでもないか

 exeでやろうと思った当初はタイマーだけ使って時間積み重ねてけばいーんじゃね?と考えたけどスプレッドシートでGASやって配列に取り込んでどうのこうのやってたんでその流れで配列に組み込んでどうたらこうたらで。ライトも配列最初に作ってforで回して時刻を見るってやってるけど更にフェザーでも作ってタイマーのonoffだけでやってみっかなとは思うけどこれ一番厄介かできないかも?中断する時にどっからタイマーの値を?は取れるとしても再開時、何を基準に計算すりゃいいのか?初回の日時を記録して結局次回起動までの間を埋める計算しなきゃならないわけで。この、計算をしたくねーわけだ。
オチとしては
ライトのキャプ使ってスタートの記録、そこからタイマーをそれぞれ値をセットして走らせ、走りながら到達時刻を「配列」にしま・・・・
やる意味ねぇ(笑)どー考えても途中でライトになってるわ。

荷物500個で2型が降ってくるけどそれまでにゴム、必死で生Pを木に変えても50個は無理だぜよ、と。5型にして改造してタイヤ履き替えて荷枠を3個にしない限りはヴォルフでいいしぃ
ぶっちゃけ見た目に反してブーンの性能がいいんで今回は特に気にしてない(強がり
キ、キティ白黒両方2枠にしたしぃ(震え

まだゼロから再開して2か月しかやってねーんだもの、誰よりも貪欲で
「遠い」からやめっかー、と、欲しいから頑張ろうが常に頭の中スクランブルしてるんで
むしろ、前に裕福な(水面下はアレなので疲弊でやめてるが)プレイしてたから
もうああいうのはいいわ、とは思いつつやっぱ5型改はメモリアルとして手元に欲しいね。

あのでかいのは要りません、持ってる事自体はステータス足りえるけど費用対利益が一番悪くてどーにもこーにも。

重かったらごめんちょ、矢印で開くとすぐ見れます
見る価値?ありません。

ハウジングじゃなくてインフラ勢とでも言えばいいのか
こうやるならもちっと豆の木上がるとこにしとけば良かったかなぁ
と思うけど向こう側が見えるなら何でもいいや

 最前面で固定してるけどフルスクリーン、スタート押すと最小化するやつね
には優先度で勝てない仕様になってるので仮想フルスクリーンでしか前に出ません
フルスクじゃないと重くてやってらんねーんだよって方は

\ 諦 め て く ら は い /

世にはそれでもフルスクの上に表示してたりゲームの描画に割り込んで
情報表示したり系の「チート」があるけど
そういうのはそれこそゲームを作れるレベルの人がやってるって話なのと
できたとしてもMODを許可してないarcheでそれやるとBAN喰らいます

以上。

巡航船状況表示 c#
 ソースコード
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Linq;

namespace shipinfo
{
    public partial class Form1 : Form
    {
        private DateTime dat1, dat4;
        private TimeSpan dat2, dat3, wts, s2t, t2s, datA, datB;
        private DateTime[] sts = new DateTime[450];
        private SoftwareBitmap softwareBitmap;
        private int[] rett;
        private string[] s2;
        private string now1;
        private int nv1, nv2;
        private async Task<SoftwareBitmap> GetSoftwareSnapShot(Bitmap snap)
        {
            var folder = Directory.GetCurrentDirectory();
            var imageName = "ScreenCapture.bmp";
            StorageFolder appFolder = await StorageFolder.GetFolderFromPathAsync(@folder);
            snap.Save(imageName, ImageFormat.MemoryBmp);
            var bmpFile = await appFolder.GetFileAsync(imageName);
            using (IRandomAccessStream stream = await bmpFile.OpenAsync(FileAccessMode.Read))
            {
                BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
                softwareBitmap = await decoder.GetSoftwareBitmapAsync();
            }
            File.Delete(folder + "\\" + imageName);
            return softwareBitmap;
        }
        private async Task<OcrResult> RecognizeText(SoftwareBitmap snap)
        {
            OcrEngine ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
            OcrResult ocrResult = await ocrEngine.RecognizeAsync(snap);
            return ocrResult;
        }
        private async void button1_Click(object sender, EventArgs e)
        {
            Bitmap bitmap = new Bitmap(120, 42);
            Graphics g = Graphics.FromImage(bitmap);
            Point p = panel1.PointToScreen(new Point(0, 0));
            g.CopyFromScreen(new Point(p.X, p.Y), new Point(0, 0), bitmap.Size);

            Bitmap bmpOrijinal = new Bitmap(bitmap);
            int scale = 2;
            Bitmap bmpResize = new Bitmap(
                bmpOrijinal,
                bmpOrijinal.Width * scale,
                bmpOrijinal.Height * scale
                );
            pictureBox1.Image = bmpResize;

            SoftwareBitmap y = await GetSoftwareSnapShot(bmpResize);
            OcrResult t = await RecognizeText(y);
            string tt = t.Text;
            rett = Regex.Matches(tt, "[0-9]+")
                 .Cast<Match>()
                 .Select(m => int.Parse(m.Value))
                 .ToArray();
            if (rett.Length > 2)
            {

                textBox2.Text = rett[0].ToString() + ":" + rett[1].ToString() + ":" + rett[2].ToString();
            }
            else
            {
                textBox2.Text = "00:00:00";
            }
            now1 = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            textBox1.Text = now1;
            g.Dispose();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string[] charsToRemove = new string[] { "/", ":", " " };
            foreach (var c in charsToRemove)
            {
                now1 = now1.Replace(c, string.Empty);
            }
            s2[2] = now1;
            dat2 = new TimeSpan(rett[0], rett[1], rett[2]);//荷残
            s2[3] = rett[0].ToString("D2") + rett[1].ToString("D2") + rett[2].ToString("D2");
            writefile();
            re_start();
        }
        private void button3_Click(object sender, EventArgs e)
        {
            dat3 = new TimeSpan(00, nv1, nv2);//調整用
            s2[4] = nv1.ToString("D2") + nv2.ToString("D2");
            writefile();
            re_start();
        }
        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            nv2 = (int)numericUpDown2.Value;
        }
        private void Form1_HelpButtonClicked(object sender, System.ComponentModel.CancelEventArgs e)
        {
            this.Height = 262;
        }
        private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Height = 72;
        }
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            nv1 = (int)numericUpDown1.Value;
        }
        private void Form1_Move(object sender, EventArgs e)
        {
            Bitmap bitmap = new Bitmap(130, 42);
            Graphics g = Graphics.FromImage(bitmap);
            Point p = panel1.PointToScreen(new Point(0, 0));
            g.CopyFromScreen(new Point(p.X, p.Y), new Point(0, 0), bitmap.Size);

            Bitmap bmpOrijinal = new Bitmap(bitmap);

            int scale = 2;
            Bitmap bmpResize = new Bitmap(
                bmpOrijinal,
                bmpOrijinal.Width * scale,
                bmpOrijinal.Height * scale
                );
            pictureBox1.Image = bmpResize;
        }
        public Form1()
        {
            InitializeComponent();
            this.TransparencyKey = Color.Magenta;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            re_start();    
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            writefile();
        }
        private void re_start()
        {
            using (StreamReader sr = new StreamReader(@"data.txt"))
            {
                string s1 = sr.ReadToEnd();
                s1 = s1.Replace(Environment.NewLine, "\r");
                s1 = s1.Trim('\r');
                s2 = s1.Split('\r');
                foreach (string item in s2)
                {
                    if (item == "end") break;
                }
                Console.WriteLine(s2[4]+"303");
            }
            this.SetDesktopLocation(int.Parse(s2[0]), int.Parse(s2[1]));
            Console.WriteLine("606");
            string tmpe = (s2[2].Substring(0, 4) + "/" +
                           s2[2].Substring(4, 2) + "/" +
                           s2[2].Substring(6, 2) + " " +
                           s2[2].Substring(8, 2) + ":" +
                           s2[2].Substring(10, 2) + ":" +
                           s2[2].Substring(12, 2));
            dat1 = DateTime.Parse(tmpe);
            Console.WriteLine("604");
            datA = new TimeSpan(24, 0, 0);
            Console.WriteLine("603");
            dat2 = new TimeSpan(int.Parse(s2[3].Substring(0, 2)), int.Parse(s2[3].Substring(2, 2)), int.Parse(s2[3].Substring(4, 2)));//荷残
            Console.WriteLine("602");

            Console.WriteLine(int.Parse(s2[3].Substring(4, 2)));
            dat3 = new TimeSpan(00, int.Parse(s2[4].Substring(0, 2)), int.Parse(s2[4].Substring(2, 2)));//調整用
            numericUpDown2.Value = int.Parse(s2[4].Substring(2, 2));
            numericUpDown1.Value = int.Parse(s2[4].Substring(0, 2));
            dat4 = dat1 - datA;
            Console.WriteLine(dat3);
            datB = new TimeSpan(0, 10, 16);
            if (s2[4] == "0000")
            {
                dat4 = dat4 + dat2 + datB;
            }
            else
            {
                dat4 = dat4 + dat2 + datB + dat3;
            }
            wts = TimeSpan.Parse("0:20:0.0");
            s2t = TimeSpan.Parse("0:10:21.150");
            t2s = TimeSpan.Parse("0:10:47.200");
            var dat5 = dat4 + wts;//一発目ツイン出航

            sts[0] = dat5;
            DateTime test;
            for (int i = 1; i <= 432; i += 2)
            {
                sts[i] = sts[i - 1] + wts + t2s;
                test = sts[i];
                sts[i + 1] = test + wts + s2t;
            }
        }
        private void writefile()
        {
            using (var writer = new System.IO.StreamWriter(@"data.txt"))
            {
                writer.WriteLine(this.Location.X);
                writer.WriteLine(this.Location.Y);
                writer.WriteLine(s2[2]);
                writer.WriteLine(s2[3]);
                writer.WriteLine(s2[4]);
                writer.Write("end");
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime now = DateTime.Now;
            this.Text = now.ToString("HH : mm : ss MM/dd ");
            for (int ii = 1; ii <= 433; ii++)
            {
                if (ii % 2 == 0)
                {
                    if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)
                    {
                        label1.Text = ("ツインクラウンへ航行中");
                        string fix = (sts[ii] - wts - now).ToString();
                        string fix2 = fix.Substring(3, 5);
                        label2.Text = fix2;
                        string[] charsToRemove = new string[] { ":" };
                        foreach (var c in charsToRemove)
                        {
                            fix2 = fix2.Replace(c, string.Empty);
                        }
                        progressBar1.Minimum = 0;
                        progressBar1.Maximum = 1021;
                        progressBar1.Value = 1021-int.Parse(fix2);
                        break;
                    }
                    if (now > sts[ii] - wts && now < sts[ii])
                    {
                        label1.Text = ("ツインクラウンに停泊中");
                        string fix = (sts[ii] - now).ToString();
                        string fix2 = fix.Substring(3, 5);
                        label2.Text = fix2;
                        string[] charsToRemove = new string[] { ":" };
                        foreach (var c in charsToRemove)
                        {
                            fix2 = fix2.Replace(c, string.Empty);
                        }
                        progressBar1.Minimum = 0;
                        progressBar1.Maximum = 2000;
                        progressBar1.Value = int.Parse(fix2);
                        break;
                    }
                }
                else
                {
                    if (sts[ii] - wts - t2s < now && sts[ii] - wts > now)
                    {
                        label1.Text = ("サンライズ半島へ航行中");
                        string fix = (sts[ii] - wts - now).ToString();
                        string fix2 = fix.Substring(3, 5);
                        label2.Text = fix2;
                        string[] charsToRemove = new string[] { ":" };
                        foreach (var c in charsToRemove)
                        {
                            fix2 = fix2.Replace(c, string.Empty);
                        }
                        progressBar1.Minimum = 0;
                        progressBar1.Maximum = 1047;
                        progressBar1.Value = 1047-int.Parse(fix2);
                        break;
                    }
                    if (now > sts[ii] - wts && now < sts[ii])
                    {
                        label1.Text = ("サンライズ半島に停泊中");
                        string fix = (sts[ii] - now).ToString();
                        string fix2 = fix.Substring(3, 5);
                        label2.Text = fix2;
                        string[] charsToRemove = new string[] { ":" };
                        foreach (var c in charsToRemove)
                        {
                            fix2 = fix2.Replace(c, string.Empty);
                        }
                        progressBar1.Minimum = 0;
                        progressBar1.Maximum = 2000;
                        progressBar1.Value = int.Parse(fix2);
                        break;
                    }
                }
            }
        }
    }
}
ペスっただけじゃ動かなかったのが特にOCR
            SoftwareBitmap y = await GetSoftwareSnapShot(bmpResize);
            OcrResult t = await RecognizeText(y);
dll呼ぶ、ファイルを読んでメモリーにデータを置いてそれを変換してdllにブチ込む
そういう作りなので画像をファイルに書き出してそれをまた読むという無駄の塊で
9.9割がそのコードしか展示してない


クラスというかオブジェクトというか要はサブルーチンだけを
書き出した「知ってるモン同士が冗談で見せ合う憩いの場」的なのが多いので
コピペマンにゃ辛いんですわ(基本やれアホ
欲しいのはGetSoftwareSnapShotの下りのファイル関連を削ってbmpを直接渡す方法

動きゃいい? それで終わってたら頭良くなんねーよ。(矛盾

てか展開折り畳みのタグ、閉じてたり開いてたり落ち着かないねぇ

 datetime、string、int 頭痛い、眠い、ゲームできない(笑)
に比べるとprogressbarはアホかってレベルのイージーさ
                    if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)

                    {
                        label1.Text = ("ツインクラウンへ航行中");
                        string fix = (sts[ii] - wts - now).ToString();
                        string fix2 = fix.Substring(3, 5);
                        label2.Text = fix2;
                        string[] charsToRemove = new string[] { ":" };
                        foreach (var c in charsToRemove)
                        {
                            fix2 = fix2.Replace(c, string.Empty);
                        }
                        progressBar1.Minimum = 0;
                        progressBar1.Maximum = 1021;
                        progressBar1.Value = 1021-int.Parse(fix2);
                        break;
                    }
10:21をそのまま1021にしてカウントダウンするだけというプッツン設計(笑)
これにはズッコけタけど頭でイメージしてるより遥かに簡単だったという。

よくやった!と思う同士は余ってるもんあったらなんかくださいませ(はぁと
麓丸禄 ふもと まる ろく で変換できます、はい(手モミモミ

Htmlでマニュアル作ろうかと思ったけどマジデイリー消化すらままならぬので
?押してフォーム下に伸びてフォームの余白ダブクリで縮む
荷物ねーんだけどって人は
datatxtを
レイナ 20221124142030 195958 0001 グレン 20221124142816 195715 0004
3行コピってペスっとしてグレンは遅延がまだ治らないと思うので 船見てガッツリ合わせましょう。 ちなみにマイナスはできません、自分に需要が無いので。
9割できたかな、後は矛盾探しとtotalvirus次第

デブクリ(ぉい、デブクリ(しつけぇ ダブクリで大小切り替えるのに
            if (n == 0)
            {
                this.Height = 284;
                n = 1;
            }
            else { 
                this.Height = 72;
                n = 0;
            }
と漠然とやってしまったがこりゃ複数のフォーム用やないかいと
奇数偶数で分岐して2で0に戻すしか浮かばない(笑)

 いいから、はよzip寄越せ的なレデェースェーンドズェントルメェーンにおかれましては
https://www.dropbox.com/s/lul6agfebyme28y/test2.zip?dl=0
配列増やしたもんをどうぞ
ですがー

VirusTotal - File - 009cb9e0695e817d634e66fcbb07b65e31e5289087f414d8642c73cf33b3d3c1
見たことも聞いたこともない
セキュが狼煙上げてますので毎度、気になる人は使わない、お約束ね。

フォームドラッグすると余計なもんありますが機能はしてません。

 OCRの下りをコピペパズルしてると
・スクショ取ってファイルにする
・ファイルを読み込む
・bitmapをAPI用のbitmapに変換してOSRに渡す
・OCR本体でファイル読み込んで変換
で非同期処理だか同期処理だかでdebugモードで始めると
本体にデータ渡す前にデータ用意できてなくてnull報告 おいw
releaseでは何事もなかったかのように動くので別にいいんだろうけど
panelを透過させてその矩形範囲だけのbmpデータなんで
ファイルにする必要性ゼロということでパズル崩壊中(笑)
・矩形範囲をコピる
・そのままOCR用データに変換
・本体にブン投げる
たったこれだけのことなんだけど、はぁ

で、APIコールすることでvirustotalで誤検出が出てきてるので
こっちの公開はナシの「予定」
ファイルへの読み書き(txtじゃない)がなくなるとわかんないんで。

大は小を兼ねるってこういう、いやいやいやいやw
元の小さなフォームはそのままダブクリでファームでかくして
普段は隠しとけばえーわな、フォーム追加するのもめんどいし
さてこの文字列から数字を拾うわけだが、って

マジで巡航船乗るしかプレイができましぇん(笑)
とはいえ、言語を玩具代わりに遊ぶのは楽しいなぁ、というか
「終わり」があるんだよね、ゴール地点が
終わりのないネトゲはどっかで飽きるんだよ、それが普通。
アーキは3年くらいかな、MOEに至っては8年やってたしアホだ

さて、私信
彼の人インしてきたんで前回騒々しかったのは謝罪して別に
どうも思てへん、と軽く流されましたが
言っとく、俺は変わらない。
やんわりと言ってはくれたが「別れの言葉」に他ならん。

わーお、
矩形をbmpデータとして変数に格納するとこまではぐぐった(ぉぃ

荷物じゃなくてもメンテの鯖再起動でカウントダウンがリフレッシュ
されるもんがあるならそれでいいのよ
と考えると荷物だけリセットされてんのが実に不思議でこれがあるからこそ
時刻を追うのが出来てるわけで、あたくしわ。

こうやって趣味だの行動だの欲求を「自動化」するのは銀玉鉄砲(笑)持って
友と駆けずり回ってた40年前には想像も出来なかったね、大人達は
そういう空想を求めてたんだろうけど
3Dプリンタ系が超発展を遂げればあらゆる仕事が自動化、趣味としても
「知らなかった」じゃ損する時代、は
来るんかねぇ?
絵本に描かれてた空飛ぶ「車のようなもの」の脇にいた
「宇宙服のようなもの」を着ていた未来人も腰抜かしてうんこ漏らす
そういう進化を地球にいる人類は遂げられるんだろうか。

音楽はほら、DAW、考えられる全てのもんが進化終わってるから
使う人の知識、応用、音楽力だけが求められる次代になってるし
あらゆるジャンル、楽器の演奏方法の吸収とそれの応用
これに関してはまだまだ未来がある文化
これを考えるとRSは未だに神様ですなぁ、ま、それを拾ったHHのが格上だけど。
レイナも遅延の蓄積結構あるけどグレンやばいなー秒どころの騒ぎじゃねーぞぅ
4分以上の誤差とか初めて見たわ
1016とか18とかは計算上そこにないと辻褄が合わない値なんで
それ以外で誤差を加減する仕掛けいるなぁ、とはいえ
今週は木曜まで続くんだよなぁ
どっちゃにしてもここ見て使う物好きいるなら4桁を船に合わせちゃってくだされ
メンテ明けとりあえず今までの平均値でやって結局は船見て1016の秒いじってるんで

レイナは1018グレンは1022でメンテ明け最初の船見て加減して合わせる

当方2窓でやってて空いてるデスクトッピに置いてるから最前面付けてなかったw
これフルスクリーンだと前には出れないのよ、仮想フルスクリーンならOK
って最前面付けてからの話だけど。

±用の変数ひとつ増やして

画像取り込んで文字認識は無理だなぁ、無理か?
スマホのQRみたいな感じで235832だけ解析できればいいんだし

というか
1 船を見た時点でのスタートにしてそっから計算をするだけ
 こりゃ楽、けどどっちの港飛んでも船がなかった場合イラつく(笑)
2 QRで画像解析
 そういうライブラリ探せばありSOってwin10以降にゃOCR機能アリ
 APIコールで使えるそうな(気絶

寝よ

ほとんど同じなんだよね、命令とか宣言とか
 Python
 クリックで展開
import datetime
import tkinter as tk
import csv

f=open('606.csv',"r",encoding='UTF-8')
data=csv.reader(f,delimiter=",",lineterminator="\n")
for row in data:
  a=0
f.close()

def goodbye():
  f=open('606.csv',"w",encoding='UTF-8')
  row[11]=rot.geometry().replace("230x28","")
  writer=csv.writer(f,delimiter=",",lineterminator="\n")
  writer.writerow(row)
  rot.destroy()

dat1=datetime.datetime(int(row[0]),int(row[1]),int(row[2]),int(row[3]),int(row[4]),int(row[5]))#現時
dat2=datetime.datetime.strptime("23:59:59","%H:%M:%S") + datetime.timedelta(seconds=1)#荷残用24時
dat3=datetime.timedelta(hours=int(row[6]),minutes=int(row[7]),seconds=int(row[8]),milliseconds=1)#荷残
dat4=datetime.datetime.strptime("00:"+row[9]+":"+row[10],"%H:%M:%S")#調整用
dat5=dat1 - (dat2 - dat3)#サーバ開始
wts=datetime.timedelta(minutes=20)#停泊20分
s2t=datetime.timedelta(minutes=10,seconds=21,milliseconds=150)#サンからツイン
t2s=datetime.timedelta(minutes=10,seconds=47,milliseconds=200)#ツインからサン
dat6=dat5 + dat4 + wts#一発目ツイン出航
sts=[]
sts.append(dat6 + wts + t2s)
for i in range(0,354,2):
 sts.append(sts[i]+wts+s2t)
 sts.append(sts[i+1]+wts+t2s)
def calc():
  now=datetime.datetime.now()#偶数サン出奇数ツ出
  for i in range(1,355):
    if i%2 == 1 and now > sts[i]-wts-s2t and now < sts[i]-wts:
      txt="ツインクラウンへ航行中"
      tx2=str(sts[i]-wts-now)
      break
    if i%2 == 1 and now > sts[i]-wts and now < sts[i]:
      txt="ツインクラウンに停泊中"
      tx2=str(sts[i]-now)
      break
    if i%2 == 0 and now > sts[i]-wts-t2s and now < sts[i]-wts:
      txt="サンライズ半島へ航行中"
      tx2=str(sts[i]-wts-now)
      break
    if i%2 == 0 and now > sts[i]-wts and now < sts[i]:
      txt="サンライズ半島に停泊中"
      tx2=str(sts[i]-now)
      break
  now2=datetime.datetime.now().time()
  sutp=str(now2)
  rot.title(sutp[0:8])
  label["text"]=txt
  label2["text"]=tx2[2:7]
  rot.after(1000,calc)

txt="whatisthis"
tx2="whatisthis"
rot=tk.Tk()
label=tk.Label(rot,text="( ^^) _旦~~",font=("UD デジタル 教科書体 NK-B",12,""))
label.place(x=5,y=3)
label2=tk.Label(rot,text="麓丸禄",font=("Franklin Gothic",12,"bold"))
label2.place(x=175,y=2)
rot.title("麓丸陸運")
rot.resizable(0,0)
#rot.overrideredirect(True)
#rot.config(bg="white")
#rot.attributes("-transparentcolor", "white")
rot.geometry(str(row[11]))
rot.geometry("230x28")
rot.attributes("-topmost",True)
rot.protocol("WM_DELETE_WINDOW", goodbye)
rot.after(1000,calc)
rot.mainloop()

VBだと無いというか探せなかったというかもっと回り道すりゃあるのかも
 if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)の計算ができない
 C#
 クリックで展開
using System;
using System.IO;
using System.Reflection.Emit;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace shipinfo
{
    public partial class Form1 : Form
    {
        private DateTime dat1, dat4;
        private TimeSpan dat2, dat3, wts, s2t, t2s;
        private DateTime[] sts = new DateTime[355];
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Name = "Form1";

            StreamReader sr = new StreamReader(@"data.txt");
            string s1 = sr.ReadToEnd();
            s1 = s1.Replace(Environment.NewLine, "\r");
            s1 = s1.Trim('\r');
            string[] s2 = s1.Split('\r');
            foreach (string item in s2)
            {
                if (item == "end") break;
                Console.WriteLine(item);
            }
            dat1 = DateTime.Parse(s2[2]);//現時
            TimeSpan datA = new TimeSpan(24, 0, 0);
            dat2 = new TimeSpan(int.Parse(s2[3].Substring(0, 2)),
               int.Parse(s2[3].Substring(2, 2)), int.Parse(s2[3].Substring(4, 2)));//荷残
            dat3 = new TimeSpan
               (00, int.Parse(s2[4].Substring(0, 2)), int.Parse(s2[4].Substring(2, 2)));//調整用
            DateTime dat4 = dat1 - datA;
            dat4 = dat4 + dat2 + dat3;
            wts = TimeSpan.Parse("0:20:0.0");
            s2t = TimeSpan.Parse("0:10:21.150");
            t2s = TimeSpan.Parse("0:10:47.200");
            var dat5 = dat4 + wts;//一発目ツイン出航
            Console.WriteLine(dat5);

            // private DateTime[] sts = new DateTime[355];
            sts[0] = dat5;
            DateTime test;
            for (int i = 1; i <= 354; i += 2)
            {
                sts[i] = sts[i - 1] + wts + t2s;
                test = sts[i];
                sts[i + 1] = test + wts + s2t;
            }
            Console.WriteLine(sts[5] - wts);
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime now = DateTime.Now;
            this.Text = now.ToString("HH : mm : ss . . MM / dd ");
            for (int ii = 1; ii <= 355; ii++)
            {
                Console.WriteLine(ii);

                if (ii % 2 == 0)
                {
                    if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)
                    {
                        label1.Text = ("ツインクラウンへ航行中");
                        string fix = (sts[ii] - wts - now).ToString();
                        label2.Text = fix.Substring(3, 5);
                        break;
                    }
                    if (now > sts[ii] - wts && now < sts[ii])
                    {
                        label1.Text = ("ツインクラウンに停泊中");
                        string fix = (sts[ii] - now).ToString();
                        label2.Text = fix.Substring(3, 5);
                        break;
                    }
                }
                else
                {
                    if (sts[ii] - wts - t2s < now && sts[ii] - wts > now)
                    {
                        label1.Text = ("サンライズ半島へ航行中");
                        string fix = (sts[ii] - wts - now).ToString();
                        label2.Text = fix.Substring(3, 5);
                        break;
                    }
                    if (now > sts[ii] - wts && now < sts[ii])
                    {
                        label1.Text = ("サンライズ半島に停泊中");
                        string fix = (sts[ii] - now).ToString();
                        label2.Text = fix.Substring(3, 5);
                        break;
                    }
                }
            }

        }
    }
}


VBはとどのつまりAPI依存になってむしろめんどくさいし(笑)
さて、virustotalでの 結果 exeとtxt入りのzip exe単体は こちら
まー出してもいーんじゃないかねぇ
つかw
アクセスログ見てもせいぜい2,3人いるかいないかで何が楽しくてやってんだ?
そういう感じだけど

動けば労Pすぐなくなるからやってないけど
動いてないから金が増えてない、当たり前だけど(笑) <水曜やれ水曜に

 C#のは配列に各時刻入れるとこまではできたので後は単にdatetime型で比較できればほぼ完成かな、何せグーグルスプレッドシートから始めてるんで
2022/10/25 22:35:36 - "00:10:47" が簡単にできねぇってのがねw
各言語やってからスプシやれば、ほぅ、ここまで簡素化してるのかと感心したところだけど。
どっちゃにしてもvirustotalでひとつでも判定出たらやめるけどね
とはいえ、
 winセキュリティ、カスペルスキー、スマンテック、トレンドマイクロをクリアなら
別に気にすることもねーかとは思うけど、あとアバストか

dllとか入れてない素の作りかけexeでも

Cynet

Malicious (score: 100)

MaxSecure

Trojan.Malware.300983.susgen

SecureAge

Malicious

だそうで、おそらくデータファイルからのreadを見てこうなるんだろなと
ま、聞いたこともない銘柄だけどvirustotalで検査すると「出る」わけで(笑)
releaseでコンパイルしたフォルダにdata.txtいれてzipで渡すとmaxsecureだけになるけど

ちなみにサクラエディタのver2.4

Antiy-AVL

Trojan/Generic.ASMalwS.3D8F

Gridinsoft (no cloud)

Trojan.Win32.Agent.vb

Jiangmin

Trojan.Generic.hiwbi

VBA32

BScope.Trojan.Agent

Zillya

Trojan.Generic.Win32.1652512

俺どころの騒ぎじゃねーぞ、どーすんだこれw
プラグイン周りで誤検出、だといいけど。

まぁmaxsecureだけなら出すとしますか

おーそらくインストーラを使う形にすりゃ何も出ないとは思うけど
よほど気にってるブランドとか高額でそれを入れてることがステータスな
アプリケーションなら兎も角無料の馬の骨ソフトでインストーラとか
冗談だろ?っていう。

ちなみに寄付も募ってる超メジャーなwinaero

MaxSecure

Trojan.Malware.300983.susgen

Rising

Malware.Generic!8.BA4C (C64:YzY0Oj1kqbExwfge)

VBA32

CIL.HeapOverride.Heur

わーお


家2軒じゃしまらねーけどまぁ、いいかな
googleの審査はそのまま落ちるんじゃね?というか
問題なければ連絡なしでフラグ外れてあればそのまま放置or削除
virustotal入れたらgoogleはdetectになってたし
(笑)、そもそもぐぐるとさーpythonでウィルス作りましょうなんつぅ
記事いくつか堂々とかかるしな、いやはや

c#楽そうなのでフォームとラベルだけのexeをvirustotalで見たら
何も出ないのでc#にコンバートできればまた出そうかな
スプレッドシート、というかスクリプトをトリガーで動かすってのが
ぶっちゃけアテになんないのでやめて
配列にしまいこんだ日時をズラーっとtxtかcsvに吐き出して添付するようにして
それ見るとかでいいんじゃなかろか

コード入れてくとまた変わるんだろうけどなぁ、何もしないとはいえ
データファイルへの読み書きはするんで、しないと動かん(笑)

 勢いで豆の木買ったはいいが普通に置くのつまんないしかといって

チェスは西キャラブっ殺されて(仕様です(笑))プッツンきて全キャラ消した
とこだからなぁ

ホークだとこれが関の山
どのみち消しキャラで有料畑買ってたのでもう買えないから作付面積欲しさに
いずれ買ったであろうとはいえ

なーやーむーぅ
え?サブで畑買え?ごもっともw

シフト増えて胃袋破けそう;;
作業は好きなんだけど効率化を求めてやっつけてしまうので
雇用側が欲出してくるのが糞腹立つが
「ここまでしかできません」で粘って首切られるよりはいいか、と、はぁ
どのみちそれやるとシフト減らされるからこまっちんぐではある(笑)
もどかしいねぇ、こいつはできない使えないっつーレッテル貼られるのも
働くおぢさんとしてはどうなのよと。









ハナっからやっときゃ良かったんだがシロだろうがクロだろうが
結果は載せっからよ、クロならハナっから出すのをやめてたし
シロならシロでどーでもいいわ、二度と出さねぇよ。

ちなみにマーク喰らった版はミスしてて起動してもラベルの初期表示
「 ( ^^) _旦~~ 麓丸禄 」が即CSVから読んだデータを元に計算して
時刻とサンツイの表示に切り替わるんだけどCSVのパス設定を直して
なかったので( ^^) _旦~~ 麓丸禄と表示して時計だけが動いてた
それだけのもの。zipみると何慌ててたんだかreadme入ってないし(汗

 今回はsmartscreenが出ても平気で使う奴らが「俺」のreadme読んだら徹底的に腹が立った程度の話ってこったろ、ケツの穴ちーせぇ、いやでかいよりはいいのか(謎

ナニに使うんだ?(笑) そういうのは頭の中だけにしてくだしゃい

何の為に仮想PCがあると思ってんだ?ゲームの多重用じゃねーぞ
こういうものの挙動を調べるためにあるんだぞ?
クライアントが吐き出す通信データを調べるソフト無料で転がってるから
それを使い、調べろ、何してるか

と戯言はさておきキャラ消すよりゃまだマシだろ、俺も成長したもんだ
前回はリアルが荒れてたってのもあるけど今回はそこまでひどくないんで
まー良かったねと、むしろ俺が(ぉィ

 何がなんでもウィルスとして処理しないとカッコつかないそうです

巡航船がどうのこうのを

ということで配布中止しますねー
googleにマーク付けられたのでpython以外つかってもマーク付きそう(笑)

腹いせに表計算も消しますんで使ってた人ありがと

 驚いたねー、VSでpythonも「統合環境」として取り込んでやんの
確か仮想マシンもどっかの取り込んで放置だよな
とはいえ元々Windowsヽ(^o^)丿な人なんで別にいっか
てーわけであくまでMSCommunityが取り込んだpyinstallerで
コンパイルさせたexeに差し替え。
なんだかんだpythonとMSC2022気に入ったし

こういう最近のトレンドちゃんと見てれば最初から誤検知で騒ぐことも
なかったけどsmartscreenはWindowsの仕様なのでエスケープできません。

それとタイトルバーに現時表示はちとダサいし見にくいけど
このカタチが欲しかったそのものだから、もうやらない(笑)
ただ、本人もやりにくいのでcsvをtxtにして行単位で読むようには
20220222 142202
202202
1020
100
100
しとかないとなぁ、と。

VBでやるのはさすがに中止wほぼできたけどタイマー1個とforひとつ回してるだけの作りなのにCPU使用率1-2%とか笑えないレベル
さすがにpythonはc言語相当にコンパイルするから比べ物にならんし
誤検知にかからないブートローダを用意できたのでそっちもクリアした?し?
何より玩具としていじっててpythonのが楽しいw
pyinstallerがバカでかいからとnuiktaにしたけどpyinstallerでもMSVCをちゃんと
使えるようにすればnuitkaの出力と変わらんサイズ
nuitkaのログでx86だのCLだのが出て結局GCC使うけどこれはコンパイルを
vs2019のx64 Native Tools Command Promptでやればいいだけの話

visualstudioは手軽になったように見えるけど結局メインウェアが馬鹿でかくて
とっとと消したいレベル、って消すけど。

GCC、懐かしいなぁ boland c++ data.grf client.xml(笑)
結局キャストやポインタてのをわからずじまいでやめたけど

 
VB版はこんな感じだなぁ、アーキの画面に乗せた時に
切り替えで透明にして文字に明るい色つける、くらいか
こうなると真下にプログレスバー付けるのがお決まりのコースか

プレ切れ&銭切れでインする気力が湧かないw

コピペで動くようにパズルしてから理解するので時間かかってしゃあない(笑)
 python
dat1=datetime.datetime(int(row[0]),int(row[1]),int(row[2]),int(row[3]),int(row[4]),int(row[5]))#現時
dat2=datetime.datetime.strptime("23:59:59","%H:%M:%S") + datetime.timedelta(seconds=1)#荷残用24時
dat3=datetime.timedelta(hours=int(row[6]),minutes=int(row[7]),seconds=int(row[8]),milliseconds=1)#荷残
dat4=datetime.datetime.strptime("00:"+row[9]+":"+row[10],"%H:%M:%S")#調整用
dat5=dat1 - (dat2 - dat3)#サーバ開始
 VB
Dim dat1 As DateTime = DateTime.Parse(dats(0)) '現時
Dim dat2 As DateTime = DateTime.Parse("23:59:59") '荷残用24時
Dim dat3 As DateTime = DateTime.Parse(dats(1)) '荷残
Dim dat4 As DateTime = DateTime.Parse(dats(2)) '調整用
Dim dat5 As DateTime = dat1.AddSeconds(-1) - (dat2 - dat3) 'サーバ開始
さすがのイージーキング THE VisualBasic

共通してるのは00:00:00と24:00:00でエラーだけど
これは日付込みの計算に持ち込めればどうでもいい問題

 というわけで(何が

VBでexeを出力

私信
DLして展開してみ、smartscreenで詳細情報出るから
visualBASICっていう全世界で使われてるマイクロソフトの
アプリケーションで出力したEXEだけど
「DLした数が少ない、もしくはない」&「MSが知らない」ので
「やめておけ」とWindowsが言うのよ。
pythonと違って全世界から「ウィルスを作るのに便利な糞無料言語」っていう
レッテル貼られてないのでウィルスとしての「検知」は無いけどね
タイトルバー無くしてあれこれやるのにも便利なんでいずれVBで出すけど

ウィルスが検出されました!それ、いつもの誤検出です
悪用する輩が一番悪いがそれを取り締まる側と
頭脳レベルが同じってのが俺ら一般からすれば笑える話

銃さっさと法で取り上げろで騒いでる民を尻目に銃の生産で飯食ってる貴族だらけの国
どこだっけw
「ピストルを持ってなかったから命が奪われた」
そういう国の商品なんだよな、Windowsも。

「WindowsセキュリティをオフにしたのでPCが壊れた、乗っ取られた」
実はベンチマーク取れば業界内では最低ランクの検出率を誇る代物

チンピラがモノホンに喧嘩売れず弱いのに当たり散らしてるレベル

現在のpython 606exeは「Trojan:Win32/Wacatac.B!ml」が出るけど
俺のソース自体は何もしてないけどこのソースを動かすために必要なアクションが
元々「Trojan:Win32/Wacatac.B!ml」として動く悪意と同じで
メモリーにデータを置く、読み取る、そういった過程を
「危険」としてるの
例えば開発言語にもレベルがあって
SSSクラス マシン語、00FF 1A3C とか16進数の羅列
Sクラス C言語 ゲームや速度が必要なアプリケーションで引っ張りだこ
AからDクラス スクリプト一般 ほとんどがC言語に近い形で扱いやすくしたもの
はい、最低ランク (visual)ベーシック 人間がわかりやすいように作るので
 PCが処理するのには重くてアホかという言語
ウィルスで騒いでるのはSクラスとAクラスの言語がほとんどで
開発言語を使って作られる「開発言語」もまた同じクラスになるわけ
python自体はSクラスの言語で作られたベーシックなので
Sクラスということでセキュリティには疎まれ、ベーシックとして
人間がわかりやすい言語としているので「処理が糞トロい」という
バッカじゃねーの?ってレベルの開発ツールなんですよ
そもそも元々「トロイ」んすよ、アホか(笑)

和んだか?
面白い情報をひとつ












これMSの純正の開発ツールなんだけどEdgeは普通にDLするのに対して
ChromeでDLはこう表示される
解釈としては、開発言語なので開発途中でPCを暴走させたり勘違いで
余計な事して自分でPCが使えなくなると、そういう意味で捉えれば
損害を与える可能性はあるとも言える、強引だがw
じゃなんでEdgeでは素通りさせるのか、MSはVS関係のDL数を計測してるわけだよ
で、Googleはそんなこと知ったこっちゃないしMSに天下取られるのも糞なので
故意的にこうしてる可能性もあるわけだ。Edge自体もう中身は単なるChromeなので
Googleが提供している開発言語使えやと。
セキュリティソフトも色々あるが皆同じ物差しで、ある程度共通基準はあるが
やってるわけじゃない、DL数あろうがなかろうが単発の無料言語など
ゴミでしかないわけ、MS自体無料言語を配布してる、がこれ上の画像の
VisualStudioCommunityってのが非商用なら無料でChromeは
害のあるファイルだっつってるわけ、面白いでしょ?

これ使ってVBで書き直そうと思ってるけどVSCが吐き出すexeもまた
「DL数」の実績がどこにもないワケで
smartscreenの詳細情報押さないと起動できないexeになると思われる

悪意のあるウィルスも作られてるよ、このメジャーなデベロップツールで。
アーキでそういうことしたかったらまずBOT、自動操作、もしくはテレポの
座標を偽装して荷物背負ったまま交易所でキャラ表示させずに納品
使う使わないは別としてリスクがねーなら誰もが欲しいだろ?
そういうのがあったらそれこそアカパス100%取られてると思え

mid night talking 606 presents
こうかな
昨日までは何DLしても消されてた=ウィルス入れてた
今日は使えるが消されないようにスリ抜けてきやがった
そう思うならそう思っとけよ
開発ソフト、pythonだけでもないけど無料で使えて「知識」があって
こういうのを改造してハッキングに使えるようにしてアンダーグラウンドで
配布してるのはいるんだよ、現実に。
それで作ってるわけでもなく普通に公開されている素の開発ソフトだ
使って貰いたいってことで何とか「消されない」ように頑張ったが
「わかって(てめぇが知らなくともウィルスが入ってて害がある可能性に目を背け)てやったな?」
と言われた日にゃお手上げだよ、害なんぞどこにもねえよ
それにアンタが楽しんでるアーキエイジに全くそういう悪意が無いと言い切れるのか?
普段使ってるブラウザやアプリが何も盗んでない、見てないと
言い切れるのか?わかってるのか?
そんなあぶねーもん無差別に配るほど根性曲がってねーよ
なんでこうなるかというとMSのvisualbasicくらいは見たことあるだろう
それで作ったアプリでもWindowsセキュリティはアラーム出すんだよ
「MSから見て信用」のないもんだからやめときな?と
使ったpythonって無料開発言語はそのアンダーグラウンド御用達になっちまってて
そのあおり喰らってまとめて害扱いになるんだよ、と書けば腹が立つか?
何でそんなもん使うんだ、と。使いやすくて便利なもんだから使うんだよ
今じゃブラウザで見てるサイトが何やってるかなぞわからんだろ、これ
winセキュリティでも食い止めるけど606exeが引っかかるレベルどころのリスクじゃ
ねーんだぞ?
と、言い訳?は置いといて
そういう風に検知されてしまうがわかってて使っているのは事実で
それが悪意なら仕方ない、俺が悪かった、が
プログラムそのものには悪意がないというのを理解して使う人は使う
それだけのこと

わかんないんだよ、危ないっていって消されるし、何が悪意無いのか
判断できないんだよ、なんでそういうの使うんだよ、なんで今日は使えるんだよ
何したんだよ
ってか
何もしてねーよ、なんでそういうのを使う「事」だけが気になるんだよ

と、ま、606.exeとか如何にも怪しいネーミングではあるけど
ハンドルネームがろくまるろくなんで気にもなりゃしねぇ

表計算は何もないじゃない!
ねーよ、ブラウザで見てるからブラウザが何してるかまでは俺も知らん
クレカの類、ブラウザで使うよね、メールアドレスの迷惑フォルダに
これでもかって数のメールあるよね
606exeはそんなもの見てないし盗んでもいないし、ただこれを動かすのに使ってる
pythonっていう設計図をプログラムに変換するものが「どれだけ使われているか」
の確認にこっそり確認を仕込んでる可能性はあるけどな、それでもpythonで
そういう信用情報を盗むプログラム作らないと盗めないわけで
そんなスキルあったらこんなせせこましいプログラム書かないっての。

今日消されないとしたら、消されない理由として
python関係の開発陣が用意したウィルスと扱われないようにする工夫
を使っただけでこれですらwinセキュリティにかからないようにするだけが精いっぱいで
他のセキュリティソフトではガンガン消されてる
考えてみろよ、アーキの蔵ですら消すセキュリティソフトあるんだぞ
「セキュリティソフト」が消したんだぞ、ゲームしたさにアーキを例外、除外するだろ
それ、セキュリティソフトが危険だつってるのに無視してんだぞ。
親心なのかもな、ネトゲは過剰に人心に影響があるのでやめときなはれ的な?

さて、
悪意もないし、害意もない、そこにあるもの使ったらレッテル貼られた
それだけの話です

 pythonのインデントめんどくせぇ(笑)
性格的には割と好きだけど「ルール」となると反抗モード
「染まる」ってのが嫌なのよね、オレ

他じゃ俺じゃ無理だったが

2022/11/02 14:15:15
20:02:03
10:17:18
00:10:19
10:47:37

import datetime
dat1=datetime.datetime(2022112141515)#現時
dat2=(datetime.datetime.strptime("23:59:59""%H:%M:%S")+datetime.timedelta(seconds=1))#荷残用24時
dat3=datetime.timedelta(hours=20,minutes=2,seconds=3)#荷残
dat4=(datetime.datetime.strptime("00:10:19""%H:%M:%S"))#調整用
dat5=dat1-(dat2-dat3)#サーバ開始
dat6=dat5+dat4#一発目ツイン出航
pythonで実現した♪
 2022-11-02 14:15:15  1900-01-02 00:00:00  20:02:03  44865 days, 10:17:18 daysは計算上無視してくれんなら放置(笑)  2022-11-02 10:27:37
後は配列使って力業!
目途が立って嬉しいし、とりあえず動けばいいやレベルならインターネットの検索と何ムキになってんだか無料の開発言語競争も相まってやりたいことが実現できる
昔、絵本で見た空飛ぶ「車のようなもの」は世に存在しないしスタートレックみたいな制服は着てないけど確実に未来に生きてるんだな、って。
・・・ついでにヒャッハーしてる世紀末アニキも、こりゃいるか(笑)

 オクに前流れてたけど28000とかブッ飛んだ値段だったからなぁ
諦めてたけど価格改定版?をゲットしまして
流してくれた人、確保してくれた盟友に感謝

遊び急いで白黒改とモブンで3種コンプ
ストラダは要らん、改造してバトルするアレならいいんだろうけど貿易ドライブにゃやたら跳ねるわでかさの割に4個しか積めないしガチャに銭突っ込むのもゲーム内金で買うのも費用対効果がクソ過ぎる、前持ってたのでね。マウンテン5号持ってるなら挙動はその感覚

昼冥府待機で騒いでる連中を川に落とすのに便利だけど(笑)