【发布时间】:2017-03-08 03:29:39
【问题描述】:
我正在为一款读取所有敌人信息(位置、健康状况等)并将其相应地存储在列表视图中的游戏进行 hack。我目前正在使用这种方法:
listView1.Items.Clear();
string[] arr = new string[6];
ListViewItem item;
for (int i = 0; i < engine.maxPlayers; i++)
{
engine.enemy[i].readInfo(i);
arr[0] = i.ToString()
arr[1] = engine.enemy[i].name.ToString();
arr[2] = engine.enemy[i].getRank(csgo.enemy[i].compRank);
arr[3] = engine.enemy[i].Wins.ToString();
arr[4] = engine.enemy[i].health.ToString();
arr[5] = engine.enemy[i].armor.ToString();
item = new ListViewItem(arr);
listView2.Items.Add(item);
}
每 200 毫秒执行一次,以确保实时信息。 这在一定程度上有效。它确实正确显示了所有内容。但是,它有两个大缺陷。 1:清零改写数据时常闪烁。 2:如果我的列表视图只有 10 列长并且我需要读取 20 位玩家的数据,我无法向下滚动查看最后 10 位玩家,因为每次清除时,它都会重置滚动条位置。
那么是否可以只更新特定文本的文本?假设我只想更新敌人 [3] 的健康状况并留下其余部分。这可以做到吗?我不需要重新绘制胜利和排名等信息,因为它们在游戏中不会改变。
【问题讨论】:
-
listView2.Items[row].SubItems[column].Text -
有什么办法防止闪烁?
-
你可以尝试设置 DoubleBuffered stackoverflow.com/questions/442817/…
-
engine.maxPlayers 在游戏过程中发生变化?