/*----------------------------------------------------------------------------*- ============================ Easy Car Streamer ============================ **Published Version** Coded by Aqua_Marine YSI等でオブジェクトの自動ストリームは可能だったものの、車の自動ストリームの できるスクリプトが少なかったので試験的に作ってみました。 ベータ版故に、確実に全く問題なく動作するという保証はありません…。 バージョン: 0,3β 更新履歴: 2009/5/28:ver0.3β 車をストリームするかしないかの判断基準を修正 2009/5/25:ver0.1β 超適当にスクリプトを走り書きしてなんとか完成 備考欄: AddStreamVehicle関数を使用して設置された車は自動的にストリームされる ようになります。デフォルトの状態で設置できる最大車両数は700、 最大車種数は127ですが、このスクリプトを使用してストリームすると 最大車両数は5120、最大車種数は212にまで増やすことができます。 変数VehicleInfoの配列数を変えることによりストリームできる車の量を 増やすことができますが、これ以上増やすことは動作が不安定になる場合もあるので、 極端な数値を入力することは避けたほうが無難です。 このスクリプトで設置される車はあくまでも静的に設置される車と同じ扱いになります。 そのため、SetVehiclePos等で車を動かすことは不可能です。 このスクリプトはコンソールにてloadfs/unloadfsによりスクリプトを ロード/アンロードされることは全く考慮されていないため、 このスクリプトを起動/再起動する場合、サーバーごと再起動する必要があります。 -*----------------------------------------------------------------------------*/ //インクルードファイル #include //プロトタイプ宣言 forward CheckShouldStreamVehicle(void); //列挙型変数 enum vInfo{ model, Float:x_spawn, Float:y_spawn, Float:z_spawn, Float:za_spawn, color_1, color_2, spawned, idnum, }; //グローバル変数 new modelcount[212]; new vehcount=0; new streamcount=0; new vehused[65]; new VehicleInfo[5120][vInfo]; // ----------------------------------------------------------------------------- public OnFilterScriptInit(){ //ここにAddStreamVehicle関数で車を設置 //使い方:AddStreamVehicle(modelid, X座標, Y座標, Z座標, 角度, Color1, Color2); //例:AddStreamVehicle(451,2040.0520,1319.2799,10.3779,183.2439,16,16); //ここから車設置 //ここまで車設置 SetTimer("CheckShouldStreamVehicle",1000,1); print("-----------------------------------------------------------------"); print("Aqua's Vehicle Streamer has loaded."); printf("%d vehicles has spawned althrough this script...",vehcount); print("-----------------------------------------------------------------"); return 1; } // ----------------------------------------------------------------------------- public OnVehicleDeath(vehicleid,killerid){ SetTimerEx("DeactivateStreamedVehicle",6000,0,"x",vehicleid); return 1; } // ----------------------------------------------------------------------------- public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger){ vehused[vehicleid]=1; return 1; } //関数ここから /*----------------------------------------------------------------------------*- 関数名: CheckShouldStreamVehicle 引数: なし 戻り値: なし 機能等: 車をストリームすべきかどうかを調べる関数です。 プレーヤーが近くにいて、ストリーム済み車数が上限に達していなければ 車をストリームし、条件を満たしていない場合は削除します。 -*----------------------------------------------------------------------------*/ public CheckShouldStreamVehicle(void){ for(new i=1;i=floatsub(VehicleInfo[streamid][x_spawn],MAX)&&PPos[0]<=floatadd(VehicleInfo[streamid][x_spawn],MAX) && PPos[1]>=floatsub(VehicleInfo[streamid][y_spawn],MAX)&&PPos[1]<=floatadd(VehicleInfo[streamid][y_spawn],MAX) && PPos[2]>=floatsub(VehicleInfo[streamid][z_spawn],MAX)&&PPos[2]<=floatadd(VehicleInfo[streamid][z_spawn],MAX)){ return 1; } } return 0; }