如何使用GTA5的Scripthookvdotnet在C#中每秒刷新变量的值



所以我有5个变量

string name, int health, bool alarm, float someFloat, int dirt

空区(void VehicleInfo()(

如何使这些变量每秒刷新一次?我找了好几天的答案都找不到。。

void VehicleInfo(){

string name = Game.Player.Character.CurrentVehicle.DisplayName;
int health = Game.Player.Character.CurrentVehicle.Health;
bool alarm = Game.Player.Character.CurrentVehicle.AlarmActive;
float someFloat = Game.Player.Character.CurrentVehicle.DirtLevel;
int dirt = (int)Math.Round(someFloat);

UIMenu VehInfo = modMenuPool.AddSubMenu(mainMenu, "Vehicle Info");
UIMenuItem Name;
UIMenuItem Health;
UIMenuItem Dirt;
UIMenuItem Alarm;
Name = new UIMenuItem("Vehicle Name: " + name);
VehInfo.AddItem(Name);

Health = new UIMenuItem("Vehicle Health: " + health);
VehInfo.AddItem(Health);
Dirt = new UIMenuItem("Vehicle Dirt Level: " + dirt);
VehInfo.AddItem(Dirt);
Alarm = new UIMenuItem("Does This Vehicle Have Alarm: " + alarm);
VehInfo.AddItem(Alarm);`

我需要刷新来自游戏值的变量

看看github 上的例子

您可以从Script继承

然后在构造函数中指定一个时间间隔(每X毫秒(和一个事件处理程序,用于标记发生的时间。

public YourClass()
{
Tick += OnTick;
Interval = 1000; // Every Second 
}
// This method is called every 1 second, based on the Interval
private void OnTick(object sender, EventArgs e)
{
string name = Game.Player.Character.CurrentVehicle.DisplayName;
int health = Game.Player.Character.CurrentVehicle.Health;
bool alarm = Game.Player.Character.CurrentVehicle.AlarmActive;
float someFloat = Game.Player.Character.CurrentVehicle.DirtLevel;
int dirt = (int)Math.Round(someFloat);
// The rest of your code
}

请参阅脚本类的源代码以获得更好的理解。

最新更新