スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

31)GL_2.cs (GTA4_script)

初めてGTA4のMODを作りました。

■.netscripthookが使用できるようにする。
■scriptsフォルダに入れる。
■武器を装備した状態で、Aim+Actionを押す。
■左手からレンガが飛び出して、着弾したら爆発。

とりあえずの晒し。



using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using GTA;

public class GL : Script
{
//メンバ変数はここで定義
const float PI = 3.14159265f;
const double TO_RADIAN = 0.017453292519943295;
const int STONENUM = 12;
Model ObjModel = "CJ_PROC_BRICK4";//"CJ_DART_1";//"CJ_RPG_ROCKET";
GTA.Object dart;
Vector3 hand_pos;//手の座標?
Vector3 target;
Vector3 vel;
Vector3 hand_vec;

List objList;
List timerList;
int timer;
int droptimer;

public GL()
{
//コンストラクタ
//ここに初期化処理を書く
droptimer = int.MaxValue;

Interval = 0;
this.Tick += new EventHandler(this.GL_Tick);
}
private void GL_Tick(object sender, EventArgs e)
{
//ここに処理を書く
if (Player.Character.Weapons.Current != Weapon.Unarmed && Game.isGameKeyPressed(GTA.GameKey.Aim) && Game.isGameKeyPressed(GTA.GameKey.Action))
{
hand_pos = Player.Character.GetBonePosition(Bone.LeftHand);
dart = World.CreateObject(ObjModel, Vector3.Zero);
if (Exists(dart) == true)
{
//dart.AttachToPed(Player.Character, Bone.LeftHand, Vector3.Zero, Vector3.Zero);
//dart.Detach();
dart.Position = hand_pos;

dart.Visible = true;
dart.Collision = true;
GTA.Native.Function.Call("SET_OBJECT_RECORDS_COLLISIONS", dart, true);


double rotX = Game.CurrentCamera.Rotation.X;// * TO_RADIAN;
double rotZ = Game.CurrentCamera.Rotation.Z;// * TO_RADIAN;
dart.Rotation = new Vector3((float)rotX + 90.0f, 0.0f, (float)rotZ);

//Vector3 hand_vec = GetStartVelocity(3.0f);
//hand_pos.X = hand_pos.X + hand_vec.X;
//hand_pos.Y = hand_pos.Y + hand_vec.Y;
//hand_pos.Z = hand_pos.Z + hand_vec.Z;
//dart.Position = hand_pos;

Vector3 vel = /*Player.Character.Velocity +*/ GetStartVelocity(30.0f);
dart.ApplyForce(vel);
dart.Velocity = vel;
//dart.NoLongerNeeded();
droptimer = Game.GameTime;
//dart = null;
//Wait(2000);
//Player.Character.Animation.Play(new AnimationSet("gun@shotgun"), "reload", 1000.0f, AnimationFlags.Unknown01);
//Player.Character.Task.Reload();

while (Exists(dart) == true)
{
if (Game.GameTime - droptimer > 2000)
{
dart.NoLongerNeeded();
}
if (Game.GameTime - timer > 50)
{
vel.Z = vel.Z - 0.49f;
timer = Game.GameTime;
}
dart.ApplyForce(vel);
dart.Velocity = vel;
target = dart.Position;
if (GTA.Native.Function.Call("HAS_OBJECT_COLLIDED_WITH_ANYTHING", dart) == true)
{
if (Player.Character.isTouching(dart) == false)
{
target = dart.Position;
dart.Delete();
break;
}
}
Wait(0);
}
World.AddExplosion(new Vector3(target.X, target.Y, target.Z), ExplosionType.Molotov, 100.0f);
Wait(100);
World.AddExplosion(new Vector3(target.X, target.Y, target.Z));
}
}
}


Vector3 GetStartPosition()
{
double rotX = Game.CurrentCamera.Rotation.X * TO_RADIAN;
double rotZ = Game.CurrentCamera.Rotation.Z * TO_RADIAN;
return Player.Character.GetBonePosition(Bone.LeftHand) + new Vector3((float)(Math.Sin(-rotZ) * Math.Cos(rotX)), (float)(Math.Cos(rotZ) * Math.Cos(rotX)), (float)Math.Sin(rotX) + 0.1f);
}

Vector3 GetStartVelocity(float vel)
{
double rotX = Game.CurrentCamera.Rotation.X * TO_RADIAN;
double rotZ = Game.CurrentCamera.Rotation.Z * TO_RADIAN;
return Game.CurrentCamera.Position + new Vector3((float)(Math.Sin(-rotZ) * Math.Cos(rotX)), (float)(Math.Cos(rotZ) * Math.Cos(rotX)), (float)Math.Sin(rotX)) * vel - GetStartPosition();
}
}

スポンサーサイト

コメントの投稿

非公開コメント

No title

ryosuke氏のサーバーにあります。

No title

申し訳ありません、saiaKUNs_cleoの中に入っている24)missile.csに必要なmininuke.csはもう配布されてないのでしょうか?

やるからには車種ごとに設定変えたいな~(独り言)

No title

どうも初めまして。
saiaKUNさんのバックファイアcs気に入りました^^
そこでコレの左仕様を作っていただけないでしょうか?
できればでいいのでよろしくおねがいします。
プロフィール

saiaKUN

Author:saiaKUN
GTASAはイイですよ。
うっぷん晴らしできるし。
MOD入れてSS撮るのも楽しい。
動画とってアップするのも良いし。
古いから軽いし。
私のcleoMODはリンクの一番上からgo。

最新記事
最新コメント
カテゴリ
FC2カウンター
フリーエリア
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
月別アーカイブ
リンク
見つけたら追加。みたいな?
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。