ソラマメブログ

2008年01月15日

SLMap API ハック

Web-APIとしてのSLMap APIの、ちょっとイレギュラーな利用方法

公開されているJavaScriptを参照
http://slurl.com/slmapapi.js

■SIM名からSIM座標を得る
https://cap.secondlife.com/cap/0/d661249b-2b5a-4436-966a-3d3b8d7a574f?var=slRegionPos_result&sim_name=Akiba
これで以下の値が帰ってくる
var slRegionPos_result = {'x' : 885, 'y' : 1187 };
これは、SIMの座標です

■SIM画像を得る
上記のx,yを利用して
x = そのまま
y = 1279 - x
として
http://secondlife.com/apps/mapapi/grid/map_image/885-92-1-0.jpg
が得られる

■SIM座標からSIM名を得る
x,yをSIM座標とし、
https://cap.secondlife.com/cap/0/b713fe80-283b-4585-af4d-a3b7d9a32492?var=slRegionName&grid_x=885&grid_y=1187
とすると
var slRegionName='Akiba';
と帰ってくる

  

2008年01月09日

llEscapeURLの文字数制限

ちょっと懐かしめの題材だけど、忘れんように...

llEscapeURLは変換できる文字数に制限があるけど、
文字を分割して変換し、連結すればうまいことできる
下は関数化したもの

string largeEscapeURL(string s){
string ret = "";
integer i;
for(i=0; i ret = ret + llEscapeURL(llGetSubString(s, i*12, i*12+11));
}
return ret;
}  
タグ :文字化け

2007年07月21日

最近なにしてんのさ...ちゅうことで

今更ながらFlexの練習をしてたりします...
BlogHUD

個人的に愛用している「BlogHUD」のRSSリーダです。
なぜだかFireFoxではうごかんなぁ...
  

2007年04月19日

PHPからベーシック認証を通す

Twitterなどを外部(SL)から利用する際、
あるいはGoogle API群などを利用する場合にはベーシック認証が避けられない。

よく考えたらPHPからベーシック認証を通したことが無かったのでちょいと調査。
PearのHTTP_Requestでお手軽に実装可能でした。

下記はサンプルコード


$url='http://twitter.com/statuses/friends_timeline.xml';

// 必要ならば
$path = 'インクルードパス';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

require_once('HTTP/Request.php');


$req=& new HTTP_Request($url);

$req->setBasicAuth("id", "password");
$req->sendRequest();

/*
foreach ($req->getResponseHeader() as $name => $value) {
echo $name . " = " . $value . "\n";
}
*/

echo $req->getResponseHeader("status");  

2007年04月16日

llHTTPRequesで外部通信

llHTTPRequesで外部通信...についてまとめました(PHP)

http://create.artstaff.co.jp/sl/MailLoger.htm

ちょっとマニアックかも知れませんし、見てみてまったく理解不能って方は
無理してPHPを設置するべきではありません(セキュリティとか怖い!)

でも、やってみたいなぁって方は、質問どうぞ!  

2007年04月04日

httpでシムのMap画像を取得する

だいたいできた

キャッシュしてないので遅いですが
お試しあれ

http://www.yambal.net/sl/RegMap.php  

2007年04月04日

httpでシムのグローバル座標を取得する(PHP)

概要
PHPで、Second Life Map APIからシムの座標情報を配列に格納します。
この行為が規約的にどうかは調べていません。
各個人の責任と判断でご使用ください。

動作サンプル
http://www.yambal.net/sl/RegList.php



$SLMapAPIJS = "http://secondlife.com/apps/mapapi/";
$MatchP = "/rlh\[\"[0-9]*-[0-9]*\"\]=\"[^\"]*\";/im";

$src = file_get_contents($SLMapAPIJS);

if(preg_match_all($MatchP,$src,$match)){
$match = $match[0];

$RegionIndex = array();
while($Row = each($match)){
$Row = split("=",$Row['value']);
if(count($Row)==2){
$match_n = trim(str_replace(array('rlh[',']','"'),"",$Row[0]));
//$Global = split("-",$match_n);
//$Gx = (integer)$Global[0];
//$Gy = (integer)$Global[1];
$match_r = trim(str_replace(array('"','"',';'),"",$Row[1]));

$RegionIndex[$match_r] = $match_n;
};
};

// Test
echo "Region=".count($RegionIndex)."
";
var_dump($RegionIndex);

}else{
echo "Error";
}


レスポンスはSecond Life Map APIに強く依存するから、頻繁に使用する場合はキャッシュしたほうがいいのかもしれない。

ここから
えんやこらっとMap画像を呼び出したいのだが...  

2007年04月03日

Second Life Map APIを紐解く

Second Life Map APIのスクリプトを読んでみた。

その成果としてはMapの直読みの見当がついた
ちなみにワシのおうち、AkibaのMapは...

ソコまで読んでみて、はてこの画像のIDはどうやって取得するのだろうかなと・・・
座標には違いないのだが、(Akibaの例では)X軸以外はLSLで取得できる変数と関連が見えにくい・・・

で、APIにもどって
SLPoint()
について、もう一度ソースを呼んでみる。

むは!

驚愕のスクリプトだ。
なんと、スクリプト中に配列で座標を持っていた・・・
例えば
o=new Object();
o.x=970;
o.y=1078;
lh["akiba"]=o;
rlh["970-1078"]="akiba";
みたいなかんじだ
これがSIM分列挙だ!

実際には、この["970-1078"]から[970-201]を導く関数が延々と続く...
読むのめんどくさいなぁ...  
続きを読む