1 |
An hour of copy pasting and I've made a functional script that marks trolls.
|
1 |
An hour of copy pasting and I've made a functional script that marks trolls.
|
2 |
\n
|
2 |
\n
|
3 |
{{{function widget:GetInfo()
|
3 |
{{{function widget:GetInfo()
|
4 |
return {
|
4 |
return {
|
5 |
name = "Ally Troll Reclaim Alert",
|
5 |
name = "Ally Troll Reclaim Alert",
|
6 |
desc = "",
|
6 |
desc = "",
|
7 |
author = "",
|
7 |
author = "",
|
8 |
date = "",
|
8 |
date = "",
|
9 |
license = "",
|
9 |
license = "",
|
10 |
layer = 20,
|
10 |
layer = 20,
|
11 |
enabled = true
|
11 |
enabled = true
|
12 |
}
|
12 |
}
|
13 |
end
|
13 |
end
|
14 |
\n
|
14 |
\n
|
15 |
local gameID_to_playerName
|
15 |
local gameID_to_playerName
|
16 |
\n
|
16 |
\n
|
17 |
function widget:Initialize()
|
17 |
function widget:Initialize()
|
18 |
gameID_to_playerName = {}
|
18 |
gameID_to_playerName = {}
|
19 |
local teamList = Spring.GetTeamList() --//check teamIDlist for AI
|
19 |
local teamList = Spring.GetTeamList() --//check teamIDlist for AI
|
20 |
for j= 1, #teamList do
|
20 |
for j= 1, #teamList do
|
21 |
local teamID = teamList[j]
|
21 |
local teamID = teamList[j]
|
22 |
local _,playerID, _, isAI = Spring.GetTeamInfo(teamID, false)
|
22 |
local _,playerID, _, isAI = Spring.GetTeamInfo(teamID, false)
|
23 |
if isAI then
|
23 |
if isAI then
|
24 |
local _, aiName = Spring.GetAIInfo(teamID)
|
24 |
local _, aiName = Spring.GetAIInfo(teamID)
|
25 |
gameID_to_playerName[teamID] = "[AI]"..aiName
|
25 |
gameID_to_playerName[teamID] = "[AI]"..aiName
|
26 |
elseif not isAI then
|
26 |
elseif not isAI then
|
27 |
local playerName = Spring.GetPlayerInfo(playerID, false)
|
27 |
local playerName = Spring.GetPlayerInfo(playerID, false)
|
28 |
gameID_to_playerName[teamID] = playerName or "Gaia"
|
28 |
gameID_to_playerName[teamID] = playerName or "Gaia"
|
29 |
end
|
29 |
end
|
30 |
end
|
30 |
end
|
31 |
end
|
31 |
end
|
32 |
\n
|
32 |
\n
|
33 |
function widget:UnitCommand(unitID, unitDefID, unitTeam, cmdID, cmdParams, cmdOpts, cmdTag)
|
33 |
function widget:UnitCommand(unitID, unitDefID, unitTeam, cmdID, cmdParams, cmdOpts, cmdTag)
|
34 |
if (not Spring.ValidUnitID(unitID)) then
|
34 |
if (not Spring.ValidUnitID(unitID)) then
|
35 |
return --invalid unit ID
|
35 |
return --invalid unit ID
|
36 |
end
|
36 |
end
|
37 |
\n
|
37 |
\n
|
38 |
if (cmdID ~= 90) then
|
38 |
if (cmdID ~= 90) then
|
39 |
return --not reclaim command
|
39 |
return --not reclaim command
|
40 |
end
|
40 |
end
|
41 |
|
41 |
|
42 |
if (type(cmdParams) ~= "table") then
|
42 |
if (type(cmdParams) ~= "table") then
|
43 |
return --corrupted command parameters
|
43 |
return --corrupted command parameters
|
44 |
end
|
44 |
end
|
45 |
|
45 |
|
|
|
46 |
if (cmdParams[2]) then
|
|
|
47 |
return --more than 1 param: not targetID but actually X,Y,Z position for area-reclaim
|
|
|
48 |
end
|
|
|
49 |
|
46 |
local targetUnitID = cmdParams[1]
|
50 |
local targetUnitID = cmdParams[1]
|
47 |
if ((type(cmdParams[1]) ~= "number") or (not Spring.ValidUnitID(targetUnitID))) then
|
51 |
if ((type(cmdParams[1]) ~= "number") or (not Spring.ValidUnitID(targetUnitID))) then
|
48 |
return --invalid unit ID
|
52 |
return --invalid unit ID
|
49 |
end
|
|
|
50 |
|
|
|
51 |
if (cmdParams[2]) then
|
|
|
52 |
return --more than 1 param: not targetID but actually X,Y,Z position for area-reclaim
|
|
|
53 |
end
|
53 |
end
|
54 |
|
54 |
|
55 |
local targetUnitTeamID = Spring.GetUnitTeam(targetUnitID)
|
55 |
local targetUnitTeamID = Spring.GetUnitTeam(targetUnitID)
|
56 |
if (targetUnitTeamID == unitTeam) then
|
56 |
if (targetUnitTeamID == unitTeam) then
|
57 |
return --target is on origin team
|
57 |
return --target is on origin team
|
58 |
end
|
58 |
end
|
59 |
|
59 |
|
60 |
local health,maxHealth,paralyzeDamage,captureProgress,buildProgress = Spring.GetUnitHealth(targetUnitID)
|
60 |
local health,maxHealth,paralyzeDamage,captureProgress,buildProgress = Spring.GetUnitHealth(targetUnitID)
|
61 |
if ((type(buildProgress) ~= "number") or (buildProgress >= 1)) then
|
61 |
if ((type(buildProgress) ~= "number") or (buildProgress >= 1)) then
|
62 |
return --not a unit frame
|
62 |
return --not a unit frame
|
63 |
end
|
63 |
end
|
64 |
|
64 |
|
65 |
local originAllyTeamID = Spring.GetUnitAllyTeam(unitID)
|
65 |
local originAllyTeamID = Spring.GetUnitAllyTeam(unitID)
|
66 |
local targetUnitAllyTeamID = Spring.GetUnitAllyTeam(targetUnitID)
|
66 |
local targetUnitAllyTeamID = Spring.GetUnitAllyTeam(targetUnitID)
|
67 |
|
67 |
|
68 |
if (originAllyTeamID ~= targetUnitAllyTeamID) then
|
68 |
if (originAllyTeamID ~= targetUnitAllyTeamID) then
|
69 |
return --not allied
|
69 |
return --not allied
|
70 |
end
|
70 |
end
|
71 |
|
71 |
|
72 |
local perpetratorName = gameID_to_playerName[unitTeam]
|
72 |
local perpetratorName = gameID_to_playerName[unitTeam]
|
73 |
local victimName = gameID_to_playerName[targetUnitTeamID]
|
73 |
local victimName = gameID_to_playerName[targetUnitTeamID]
|
74 |
|
74 |
|
75 |
local message = "ALERT: '"..perpetratorName.."' is attempting to reclaim property of '"..victimName.."'"
|
75 |
local message = "ALERT: '"..perpetratorName.."' is attempting to reclaim property of '"..victimName.."'"
|
76 |
|
76 |
|
77 |
local x,y,z = Spring.GetUnitPosition(unitID)
|
77 |
local x,y,z = Spring.GetUnitPosition(unitID)
|
78 |
Spring.MarkerAddPoint(x,y,z,perpetratorName,true)
|
78 |
Spring.MarkerAddPoint(x,y,z,perpetratorName,true)
|
79 |
Spring.MarkerErasePosition(x,y,z)
|
79 |
Spring.MarkerErasePosition(x,y,z)
|
80 |
|
80 |
|
81 |
x,y,z = Spring.GetUnitPosition(targetUnitID)
|
81 |
x,y,z = Spring.GetUnitPosition(targetUnitID)
|
82 |
Spring.MarkerAddPoint(x,y,z,message,true)
|
82 |
Spring.MarkerAddPoint(x,y,z,message,true)
|
83 |
Spring.MarkerErasePosition(x,y,z)
|
83 |
Spring.MarkerErasePosition(x,y,z)
|
84 |
end}}}
|
84 |
end}}}
|