2012年5月28日月曜日

「ゲームアップ」 アメバピーグクリックなしのジャンプ、プラグインなしで実現

繰り返しジャンプをする人見ました?

下記の方法でできます。

パケットスパイでジャンプのパケットを再び送る形です。
ポイントはパケットを見つけるということです。



ゲームアンプ公式サイトはこちら

「ゲームアップ」 アメバピーグ顔文字プラグイン作成方法

お庭とアイランドで顔文字を見せるプラグインです。

効果は下記のようです。


ゲームアンプ公式サイトはこちら

プロジェクトファイルのダウンロードはこちらです。
ダウンロード
binフォルダのプラグインファイルが作成しておきました。


コード
AAMojiPlugin.cs
using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Internal.GameAmp;
using System.Threading;
using AAMoji;

public class AAMojiPlugin : Plugin
{
    public AAMojiPlugin()
        : base(typeof(AAMojiPlugin))
    {
        Enc = Encoding.UTF8;
        Form1 f = new Form1(delegate
        {
            string templ = "\0area.talk:{{\"message\":\"{0}\",\"color\":16711680}}";
            SendMessage(string.Format(templ, "/      \"));
            SendMessage(string.Format(templ, "/  _ノ  ヽ、_  \"));
            SendMessage(string.Format(templ, "/  o゚⌒   ⌒゚o  \ "));
            SendMessage(string.Format(templ, "|     (__人__)    |"));
            SendMessage(string.Format(templ, "\     ` ⌒´     /"));

        EnableChanged += new EnableChangedHandler(delegate(object sender, EnableChangedEventArgs e)
            {
                if (!f.IsDisposed)
                {
                    if (e.Enabled)
                        f.Show();
                    else f.Hide();
                }
            });
    }

    private void SendMessage(string msg)
    {
        Thread.Sleep(500);
        SendBytes(Enc.GetBytes(msg).Concat(new byte[] { 0xff }).ToArray());
    }
}
Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace AAMoji
{
    public partial class Form1 : Form
    {

        public Form1(DoWorkEventHandler dowork)
        {
            InitializeComponent();
            _bgw.DoWork += new DoWorkEventHandler(dowork);
        }
        private BackgroundWorker _bgw = new BackgroundWorker();
        private void _buttonStart_Click(object sender, EventArgs e)
        {
            _bgw.RunWorkerAsync();
        }
    }
}

2012年5月23日水曜日

「ゲームアップ」 アメバピーグお庭自動収穫プラグインの作り方

アメバピーグお庭自動収穫プラグインの作り方を簡単に紹介します。

アメーバピグのお庭に入った後、パケットスパイ画面を見ると「area.enter..」の内容のパケットが見つけます。


パケットを保存して、JSONビュアーで見ます。



こちらのJSONデータは下記の用に利用できます。

        string msg = Enc.GetString(buf);//パケットのバイト列をstringに変換、EncはEncoding.UTF8です。
        var root = ParseCommandJson(msg, "area.enter");//パケットの内容がarea.enter:JSONデータになってますので、後ろの分だけ取ってJSON形式に変換します。
        if (root == null) return;
        if (!root.IsDefined("area")) return;
        if (!root.area.IsDefined("soils")) return;
        dynamic json = root.area.soils;


root.area.soilsの情報を得たら、その情報によって収穫するかおせわするか決まって命令を出します。命令の内容は下記の関数のように作ります。

    string soil_harvest(int x, int y)
    {
        return "\0soil.harvest:{\"y\":" + y + ",\"userX\":" + x +
            ",\"x\":" + x + ",\"userY\":" + y + ",\"userZ\":0}";
    }
    string tree_water(int x, int y)
    {
        return "\0tree.water:{\"y\":" + y +
            ",\"userX\":" + x + ",\"x\":" + x + ",\"userY\":" + y + ",\"userZ\":0}";
    }
    string tree_harvest(int x, int y)
    {
        return "\0tree.harvest:{\"y\":" + y +
            ",\"userX\":" + x + ",\"x\":" + x + ",\"userY\":" + y + ",\"userZ\":0}";
    }
    string soil_help(int x, int y)
    {
        return "\0soil.help:{\"userX\":" + x +
            ",\"y\":" + y + ",\"userY\":" + y + ",\"userZ\":0,\"x\":" + x + "}";
    }


ゲームアンプ公式サイトはこちら

プラグインのダウンロードはこちら
ダウンロード


プロジェクトファイルはこちら
ダウンロード


1.0 ver 機能
1.ルームに入る時、自動収穫、自動お世話。
2.他人のルームに入るとき自動お助け。
3.スタミナが0になると動作を停止して、回復すると自動で動作再開。

2012年5月22日火曜日

「ゲームアンプ」 アメーバピグ スロット自動スピンプラグイン

効果は下記のようです。


ゲームアンプ公式サイトはこちら
アメーバピグ スロット自動化プラグイン作り方。
(プラグインなしの実現は下記の記事を参照してください。)
「ゲームアンプ裏技」アメーバピグスロットでプラグインなしの自動スピン

まずはパケットスパイでスロットスピンのパケットを追跡します。
パケットスパイの画面でデータを全削除して、新しいパケットが見やすくなります。
(追跡の仕方は下記の記事を参考してください。)
パケットスパイでパケット通信追跡

スピン操作のパケットを保存して、HEXビューアで表示します。
( HEXビューア は下記の記事を参考してください。)
JSONデータビュアーとHEXデータビュアーの利用


こちらのバイトを利用してSend_xxxx関数を作成します。


    public void Send_spin(byte[] buf)
    {
        byte[] spin = new byte[]
        {
            0x00, 0x10, 0x08, 0x10, 0x00, 0x00,
            0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x04, 0x73, 0x70, 0x69, 0x6E,
            0x01, 0x00, 0x00, 0x00, 0x14, 0x00,
            0x00, 0x00, 0x05
        };
        while (!IsStoped)//IsStopedはPluginクラスの変数で、終了状態になってるかを表示します。
        {
            Thread.Sleep(500);
            SendBytes(spin);
        }
    }

Send関数が実行されるのはRecv_xxxx関数の戻り値がtrueだった場合ですので、そのRecv関数も書きます。



スロットルームでスピンを始まる前上のようなパケットを受信しましたので、そのバイトでパケットを絞ります。
    public bool Recv_spin(byte[] buf)
    {
        byte[] filter = new byte[]
        { 
           0x73, 0x65, 0x74, 0x50, 
           0x6C, 0x61, 0x79, 0x65, 0x72
        };
        ByteArray ba = new ByteArray(buf);//ByteArrayはPluginに含まれてるbyte[]操作クラスです。
        return ba.IndexOf(new ByteArray(filter)) > 0;
    }



最後にはクラス名を AmebaSlotPluginにしてプラグインを作ります。

public class AmebaSlotPlugin : Plugin
public AmebaSlotPlugin() : base(typeof(AmebaSlotPlugin))
    {
    }



プラグインファイルはこちら
ダウンロード

プロジェクトファイルはこちら
ダウンロード

プラグインの開発は下記のページを参考してください。
ゲームアンププラグインの作り方

ゲームアンプ公式サイトはこちら

2012年5月20日日曜日

「ゲームアンプ裏技」アメーバピグスロットでプラグインなしの自動スピン

ゲームアンプのパケットスパイ画面には隠れてる機能があります。
これを利用すればアメーバピグスロットの自動スピンができます。

まずはパケットスパイ画面を開きます。
もちろんFirefoxでゲームを開きます。
一回「Play」を押してスピンします。
そうするとパケットスパイ画面から下記のようなパケットが見えます。



「カスタマイズ再生」を押します。



送信回数はこのパケットを再生する回数で送信間隔は次の再生までの時間でミリ秒を単位にしています。送信間隔を500にして送信回数を500000にします。
「スタート」を押すと送信がはじめます。

Firefox画面に戻って見るとスロットが自動でスピンしてるのが見えます。


ゲームアンプ公式サイトはこちら
もしわからない場合下記の記事を参考してください。
「ゲームアンプ」ケットスパイでパケット通信の内容をみる
ゲームアンププラグイン作成方法
JSONデータビュアーとHEXデータビュアーの利用

2012年5月15日火曜日

JSONデータビュアーとHEXデータビュアーの利用

1.JSON形式のデータ



DynamicJsonという.NET4.0でしか使えない便利なツールがあります。
* http://dynamicjson.codeplex.com/
実際ゲームアンプのプラグインを作るとき、使えるようになっています。
例:JSONデータを読む時のコード

// Parse (from JsonString to DynamicJson)
var json = DynamicJson.Parse(@"{""foo"":""json"", ""bar"":100, ""nest"":{ ""foobar"":true } }");

var r1 = json.foo; // "json" - dynamic(string)
var r2 = json.bar; // 100 - dynamic(double)
var r3 = json.nest.foobar; // true - dynamic(bool)
var r4 = json["nest"]["foobar"]; // can access indexer

var json = DynamicJson.Parse(@"{""foo"":""json"", ""bar"":100, ""nest"":{ ""foobar"":true } }");

// Check Defined Peroperty
// .name() is shortcut of IsDefined("name")
var b1_1 = json.IsDefined("foo"); // true
var b2_1 = json.IsDefined("foooo"); // false
var b1_2 = json.foo(); // true            
var b2_2 = json.foooo(); // false;

// Add
json.Arr = new string[] { "NOR", "XOR" }; // Add Array
json.Obj1 = new { }; // Add Object
json.Obj2 = new { foo = "abc", bar = 100 }; // Add and Init

// Delete
// ("name") is shortcut of Delete("name")
json.Delete("foo");
json.Arr.Delete(0);
json("bar");
json.Arr(1);

// Replace
json.Obj1 = 5000;

// Create New JsonObject
dynamic newjson = new DynamicJson();
newjson.str = "aaa";
newjson.obj = new { foo = "bar" };

// Serialize(to JSON String)
var jsonstring = newjson.ToString(); // {"str":"aaa","obj":{"foo":"bar"}}
2.HEXデータ


HEXデータはプラグインのRecv_xxxx関数、Send_xxx関数などにくるbyte[ ] 形式のデータをそのままみせます。


byte[] spin = new byte[]
        {
            0x00, 0x61, 0x72, 0x65, 0x61, 0x2E,
            0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x04, 0x73, 0x70, 0x69, 0x6E,
            0x01, 0x00, 0x00, 0x00, 0x14, 0x00,
            0x00, 0x00, 0x05   
        };



ゲームアンプ公式サイトはこちら

2012年5月9日水曜日

パケットスパイでパケット通信追跡


1.ゲームアンプのメイン画面で「スタート」します。


2.「設定」します


3.パケットスパイからパケットの流れが見えます。


■ または「作成ツール」押してもパケットスパイ画面はでますが、まだブラウザと連携ができてない状態になってますので、パケット情報が見られません。

4.必要なパケットを保存して後でも見えるようにします。



■内容が長いパケットは何個ぐらい分けて届いていますが、そのときは一気に保存します。