Advertisement
Guest User

Untitled

a guest
Feb 9th, 2012
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. function gadget:GetInfo()
  2. return {
  3. name = "DirectControl",
  4. desc = "Block direct control (FPS) for all units",
  5. author = "knorke",
  6. date = "Feb 2012",
  7. license = "GNU GPL, v2 or later",
  8. layer = 0,
  9. enabled = true -- loaded by default?
  10. }
  11. end
  12.  
  13. local GetSpectatingState=Spring.GetSpectatingState
  14. local GetLocalTeamID=Spring.GetLocalTeamID
  15. local GetGameFrame=Spring.GetGameFrame
  16. local GetPlayerList=Spring.GetPlayerList
  17. local GetPlayerInfo=Spring.GetPlayerInfo
  18. local SendMessageToAllyTeam=Spring.SendMessageToAllyTeam
  19.  
  20. local function Toggle(_,enable,playerId)
  21. if (playerId == Spring.GetMyPlayerID()) then
  22. if enable then
  23. enabled = true
  24. else
  25. enabled = false
  26. end
  27. end
  28. end
  29.  
  30. local function checkWeapons (wd)
  31. for _,ud in pairs({weapons}) do
  32. -- add the custom weapons based parameters
  33. ud.hasShield = false
  34. ud.canParalyze = false
  35. ud.canStockpile = false
  36. ud.canAttackWater = false --workaround for mantis 2857
  37. for _,wt in ipairs(ud.weapons) do
  38. local wd = WeaponDefs[wt.weaponDef]
  39. Toggle (not enable, unitID)
  40. if (wd) then
  41. if (wd.isShield) then ud.hasShield = true end
  42. if (wd.paralyzer) then ud.canParalyze = true end
  43. if (wd.stockpile) then ud.canStockpile = true end
  44. if (wd.waterWeapon) then ud.canAttackWater = true end
  45. end
  46. end
  47. end
  48. return not wd
  49. end
  50. function gadget:AllowDirectUnitControl(unitID, unitDefID, unitTeam, playerID)
  51. return checkWeapons (true)
  52. end
  53.  
  54. function SMerge(seq1, seq2)
  55. local head1, head2 = seq1.head, seq2.head
  56. local step
  57. if head1 < head2 then
  58. function step() return SMerge(seq1.tail, seq2) end
  59. elseif head2 < head1 then
  60. function step() return SMerge(seq1, seq2.tail) end
  61. head1 = head2
  62. else
  63. function step() return SMerge(seq1.tail, seq2.tail) end
  64. end
  65. return Seq(head1, step)
  66. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement