fc2ブログ

ミッドナイト♥SA:MP

みなさん こんばんは。

元気に過ごせていますか?


結構変なタイトルですが、比較的正常な精神状態で書いてます。


先日のことですが、すごく暇してまして、

視察のつもりでSA:MPをプレイしてきました。

最初は、本当に15分だけのつもりだったんです。。。
証拠 -> http://twitter.com/ALMEIDA216/status/11429522560

終了はなんと。。。
http://twitter.com/ALMEIDA216/status/11441299826

合計で4時間以上やってる結果に。


どうしてこうなったのでしょうか?

続きに。

最初は本当に15分で切り上げるつもりでしたが、

途中でKRさんやmimiさんが来てくれてテンションが上がってしまい、

さらには続々とメンバーが増えていくではないか。

image20100404-midnightsamp001.jpg

最初は謎のホットドッグ商人のmimiさんと

空からの客人のM&BさんとTottoさんと謎の動きをしてました。謎。


それからまもなく・・・


image20100404-midnightsamp002.jpg

空前の電車ブームがきました!

電車が電車を貫通したりもう何が何か分からない状態を楽しんでました。


自分は電車へ飛行機から飛び降りることに何故か執着して

気づけばそればっかりやってました。。。w


時刻はあっという間に過ぎ・・・


15分計画を破壊してくれた張本人を LOCK ON!

image20100404-midnightsamp003.jpg

くそっ、反応がない!

いわずもがな、彼の責任にするのはお門違いですがw


その後、彼はそっと消えました。


で、ですね。


これだけのMPなら記事にしませんが、

なかなか豪華なメンツが深夜まで揃ってたのもあり、

大胆な会話が飛び出します。

プログラマー関係に強い人が多く、どうしてもそっちよりになりますが、

私は楽しめました。


自分は遊びつつ思ったことを1つ提案しました。

MPサーバー関係者の力を合わせればどんなに素晴らしいサーバーができるかな、と。

他の方々は全く乗り気には見えませんでしたがw


良い所もあればそうでない所も見えそうですが、

個人的にはサーバー間の連携、協力というのはアリだと思います。


野望がでかすぎますか?w


話題は日本のサーバーのみを抽出して表示するTottoさんのプログラム

Hostfinderの話題へ。

指定したホストが初期から追加されたらいいなー by 自分
できたらいいなー by Tottoさん

人の多い順にソートができればいいなー by M&Bさん
できたらいいなー by Tottoさん

(#*^o^*)

特に後者の人数はUDPのパケットが絡むという話になり、

一個思い出しました。

0.2からサーバーの設定でqueryって増えまして、

それを用いたphpスクリプトなんてのがあるんですよ。


※ どうでもいいプログラムネタが続きます。正常な方はスキップ推奨。


C++だのVBだの自分は全くよくわかりませんが、

WEB周りの言語だけは少々かじってたのでこれなら、と思いました。


ちょっとだけ作業記録を書いておきます。

需要はないと思いますが、同じことをしたい人がいらっしゃればどうぞ参考に。


概要: SA:MPの公式サイトのサーバーリストから日本サーバーを抽出してみる。

リスト自体は http://server.sa-mp.com/0.3.0/servers ここにアクセスすれば見れます。

ただし、UAでチェックされてるらしく、一般のブラウザ等では127.0.0.1と返って来るでしょう。

まずはそういうところから対策を練りました。


// UserAgentを設定します。
ini_set('user_agent', "SA:MP");


phpでの外部アクセスでのUA偽装の方法です、あまり知られてない手法かも?

これでアクセスが可能になり、IP:Portがいっぱい表示されます。

だた、おびただしい数字が並んでるだけ、の状態ではあります。


MPのPawnスクリプトでもお馴染みのstrtokがここでも大活躍です。


まずキャッシュを作成します。

キャッシュがあればIPが同じであれば公式サーバーが落ちても使えますし便利でしょう。


// SA:MPのサーバーリストにアクセスを試みます。
$web = file_get_contents('http://server.sa-mp.com/0.3.0/servers');

// 処理の返り値から処理を決定します。
if (is_bool($web) && $web == false)
{
// 失敗
echo 'Unknown Error!';
}
else
{
// 成功処理
$fname = './serverlist.txt';

if (file_exists($fname))
{
// ファイルが既に存在していれば削除
unlink($fname);
}

// ファイルに書き込む
$fp = fopen($fname,"a");
fwrite($fp, $web);
fclose($fp);
}


キャッシュファイルから読み込みさせる。


if(is_file($fname))
{
$iplist = file_get_contents($fname);
$tok = strtok($iplist, " \n\t");

$i = 0;
$ip;

while ($tok !== false)
{
$i++;
$tok = strtok(" \n\t");

$ip[i] = $tok;

$ipaddress = explode(":", $ip[i]);

if (strlen($ipaddress[0]) == 0 && strlen($ipaddress[1]) == 0)
{
// NULL
}
else
{
// 成功処理
echo "$i\t$ipaddress[0]\t-\t$ipaddress[1]\t
\n";
}
}
}


これだけでした。

あとはIPを参照して国を判定するだけ。

ip2countryがphpでは有名なのかもしれませんが、

hostfinderと同じGeoIPでトライ。


if(is_file($fname))
{
$iplist = file_get_contents($fname);
$tok = strtok($iplist, " \n\t");

$i = 0;
$ip;

while ($tok !== false)
{
$i++;
$tok = strtok(" \n\t");

$ip[i] = $tok;

$ipaddress = explode(":", $ip[i]);

if (strlen($ipaddress[0]) == 0 && strlen($ipaddress[1]) == 0)
{
// NULL
}
else
{
$country = geoip_country_code_by_addr( $gi, $ipaddress[0] );

if(!strcmp("JP", $country))
{
// 成功処理
echo "$i\t$country\t$ipaddress[0]\t-\t$ipaddress[1]\t\n";
}
}
}
}


まさかこんなにあっけなく膨大な数字群から

日本のサーバーのみを抽出できるとは。

PHPとGeoIPさまさまですね。

ここからさらに各種サーバーにUDPパケットを送受信して、

サーバーの名前とか情報を取得した物もありますが・・・

UDPでの複数のサーバーの同時取得はものすごく不安定になるようです。

元はローカルでの運用を目的としてたPHPスクリプトでしょうし、

こういう扱いは想定外っぽいです。

UDPの内容もキャッシュ化するべきでしょうね。

大概のところはキャッシュをしてるようですし。
(有名所ではここもそうかなと。 http://www.game-monitor.com/search.php?game=sa-mp&public=&pg=1)

ネットワーク周りは今度暇があればじっくり・・・コトコト煮込んだスープ♪


実際どんな感じのファイルか知りたい方は昨日の私のツイログを参照してくださいな。
ただ、見たところでどうしようもないですが。
自家用サーバーが動いてる間は閲覧可能です。3タイプほど作ってると思います。



ただ、safariだと samp://IP:PORT/ にアクセスできない。

chromeもだめっぽい。

こういう面でwebkitは弱いのかっ?!
(管理人絶賛webkit推し safari Lover.)


しかし、あれですね、PHPは全然触ったことありませんが、

C言語等の基本文法がわかってたら結構簡単にできますね。

その点Pawnと通じるものがあると思います。。。

Pawnで苦手なファイル関係の処理がPHPだと楽勝過ぎてなんか泣けます。



なんか今記事を見直したら殆どがphp絡みの話題でどっちが本当に記事かよく解らんw

久しぶりにSA:MPでガッツり遊んだなーという感じでした。

えと・・・、そんな感じですw


あ、左側に美人時計を付けました!

iPhoneのアプリでも話題になってて、見た瞬間一目惚れですw

もちろんアプリに、ですよ、ハハッ。

もし、良い時間があれば教えてくださいね。


それとエイプリルフールネタ、やりたかったんですが、

どうしても多忙が続き用意することができずでした。

やりたかったぁ・・・。

お詫びではないですが、Firefox、Safari、Choromeでサイトを見た場合、

若干立体的に、モダンな表示にしました。

IEで見直すとひらべったくて違いがよくわかります。


えと、こんな感じです。

エイプリルフールという格好のネタを逃した4月の初更新は

よくワケの分からないスタートとなりました☆


ではでは

アデミッドナイト☆

さらばだ^^

コメントの投稿

Private :

確かにみんなが力をあわせて サーバーを立てたら日本人のユーザーが集まってくるし
とてもおもしろそうですね^^ 

つまり…俺が入っても同じ現象が…起きるわけないか('A`)

今考えてみるとcjsnake氏の9時に開園11時に閉園は偉大だった気がする

仕事を始めて気づいたおおおお

合作鯖、一度やってみたいですね。
こう見えて自分は乗り気ですよ~w

HostFinderの改良案は参考になりました。
何日後になるかわかりませんが、実装してみたいと思いまする。
ついでにキャッシュネタもパクrもとい参考にしたい。

MP鯖をPHPで組めたらな~と思った。

合作鯖、やってみたい物ですなw
機会があれば乗り気ですぞっ
(難しいのは共通のテーマを決めることかも?)

キャッシュGJ。
公開するとなるとAL鯖のアクセス数が大変なことになりかねないから、取得の最短間隔とかあるといいかも。(5分以内のアクセスは同じキャッシュ使うとか)
そして、ここにMP界のPHP神が生まれようとしているのですな…w

取得リストから「今日のピックアップ鯖」みたいな、ランダムで1つ選び出す機能があったらおもしろそう。(いろんな鯖にも回れるようになるし)

横から失礼します > Totto8492殿
既存のUSERDATA.DATを読込んで、後にHostFinderの結果をくっつけるのはいかがでしょう?(間に水平線モドキでも挟んで。)

意見多数で長々失礼しました。。

合作鯖楽しみです^q^
ブログがCSS3で結構変わっていてくりびつしました

Re:

@sdnhwsさん
今サーバーが過剰供給な時代ですので、すごく気は引けます・・・。
さらに過疎して、原因はお前だ!なんて言われないようにしないとっ。
まだどうなるかも決まってませんが、実現したい気持ちはあります!


@BOさん
あれは真似できないですね。
それに今では考えられないほど短い時間に充実した遊びが・・・。
サーバーって管理者の色が、結構重要だなーって今でも思います。
同時期にMPを初めた某サーバー管理人がそう行ってたのを思い出しましたw


@Totto8492さん
もし実現に向けてプロジェクトを進めるとしたらリーダーはあなたにお任せしますw
なんて冗談ですが、本当にこういうのもやってみたいなーってw

Hostfinderの件、なんか注文ばかりで申し訳(ry
キャッシュネタを参考・・・!?むしろ、IPデータベースのキャッシュという形ですでにやっているではないかw

MP鯖をC++で、みたいなやつは過去ありましたなーw


@M&Bさん
合作鯖をやる時が来たら、レース、チュートリアルを練ってもらおうかな(ry
共通のテーマを決めるっていうのが確かに難しい・・・。

キャッシュはphpを触った瞬間にやらないと、って思いました。
後にキャッシュではなくアクセス用HTMLを作成したら、という意見をもらうわけですが・・・w
phpに限らず一つを極めるつもりはない性格なので、神にはなれませんw

SA:MPのサーバーブラウザーにはない機能なんてのを沢山作れるのが魅力w

きっと神もいろんな意見を聞いてhostfinderが大きく変わりそう。
それこそ既存のUSERDATA.dat互換のHostfinderGUIなんてのができたりして(ry


@wobiwanさん
まだ何も決まってないませんw
でも できたらいいなー な感じですw
CSS3は覚えるためにも以前から使いたかったんです。
その為にもIE6 no moreを少し前から使って変更を促してみたり・・・w

ぶえへっへbねいうっへえbj


さすがALMさん^p^   私を記事にだしてくれるとわ。。。。

あなたわまるでグランドファーザー!!!

かめはめはああjskjjd

Re:

@krさん
デスクトップ晒し指名したからこんどやってね。
インフォメーション
- 新着 -

- カテゴリー -

- アーカイブ -

- RSSフィード -

- サイト内検索 -

当サイトはLink Freeなので、Linkは どちらでもどなたでも自由にどうぞ。 feel my soul
Utility
Xbox360/PS3 GamerTag

ALMEIDA216


Twitter

Counter

ユニークアクセス :
オンライン :
PVアクセス :
リンク
このページのトップへ