EasyAirdrops

balu92

Retired Staff
Retired Staff
Trusted Member
Jul 11, 2014
338
75
28
34
I did not see an airdrop caused by this plugin, but when I did the manually (not recommended if running Pluton), I did see 3 cases fall of the plane/sky, and they were loaded each with same amount of ammo, ressources and one gun each.
Now you can call from the game, like "event.run", it will call our airdrop instead the vanilla one
 

Balsca

New Member
Member
Oct 10, 2014
2
0
1
44
event.run seems to spawn a plane under the world, and cant get rid, even with a reboot :/
 

[KR]teledong

New Member
Member
Oct 13, 2014
6
0
1
37
Parts Unknown
For Error Fix:
Python:
    def On_PlayerConnected(self, player):
        ini = self.easyairdropsini()
        # req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players >= Server.Players.Count:
            DataStore.Remove("airdrop", "call")
            DataStore.Add("airdrop", "call", True)
            # Server.Broadcast("AirDrops are now being called for!")  # debug
            # Player.Message("Required Players=" + Req_Players); //debug
It's DataStore Set True if lower than 3. If exceed 3, It will be not triggered True.
So It should be

Python:
def On_PlayerConnected(self, player):
        ini = self.easyairdropsini()
        # req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players <= Server.Players.Count:
            DataStore.Remove("airdrop", "call")
            DataStore.Add("airdrop", "call", True)
            # Server.Broadcast("AirDrops are now being called for!")  # debug
            # Player.Message("Required Players=" + Req_Players); //debug
also, On_Player DisConnected is wrong.

Bef :
Python:
def On_PlayerDisconnected(self, player):
        ini = self.easyairdropsini()
        # req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players < Server.Players.Count:
            DataStore.Remove("airdrop", "call")
            DataStore.Add("airdrop", "call", False)
        # Server.Broadcast("Not enough people online to call airdrops!")  # debug
Changed :
Python:
def On_PlayerDisconnected(self, player):
        ini = self.easyairdropsini()
        # req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players > Server.Players.Count:
            DataStore.Remove("airdrop", "call")
            DataStore.Add("airdrop", "call", False)
        # Server.Broadcast("Not enough people online to call airdrops!")  # debug
 

CorrosionX

Plugin Developer
Plugin Developer
Sep 3, 2014
212
85
18
California
Thank you for your suggestion, I have already updated my version with the adjustments, still not dropping, timer is executing tho. Here is my latest w/debugs in place:

Python:
__author__ = 'CorrosionX'
__name__ = 'EasyAirdrops'
__version__ = '1.2.3'
import clr
import sys
clr.AddReferenceByPartialName("UnityEngine")
clr.AddReferenceByPartialName("Pluton")
import UnityEngine
import Pluton


class EasyAirdrops:
    def On_PluginInit(self):
        if not Plugin.IniExists("EasyAirdrops"):
            setini = Plugin.CreateIni("EasyAirdrops")
            setini.AddSetting("Settings", "PlayersRequired", "3")  # Default
            setini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
            setini.AddSetting("Settings", "DropDuring", "anytime")  # (default) - Can be day/night/anytime
            setini.Save()
            drop_time1 = 3600000
            DataStore.Add("airdrop", "call", False)
            Plugin.CreateTimer("AirDropTimer", drop_time1).Start()
        else:
             # If config exists, make sure each setting is set, else add what is missing
            ini = self.easyairdropsini()
            if ini.GetSetting("Settings", "PlayersRequired") is None:
                ini.AddSetting("Settings", "PlayersRequired", "3")  # Default
            if ini.GetSetting("Settings", "DropFrequency") is None:
                ini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
            if ini.GetSetting("Settings", "DropDuring") is None:
                ini.AddSetting("Settings", "DropDuring", "anytime")
            ini.Save()

    def On_PlayerConnected(self, player):
        ini = self.easyairdropsini()
        req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players <= Server.Players.Count:
            DataStore.Add("airdrop", "call", True)
            Server.Broadcast("AirDrops are now being called for!")  # debug
            player.Message("Required Players= " + str(req_players))  # //debug
            # drop_time2 = 0
            try:
                drop_time2 = int(ini.GetSetting("Settings", "DropFrequency"))*1000
            except:
                drop_time2 = 3600000   # default if not set properly
            timer = Plugin.GetTimer("airdroptimer")
            Server.Broadcast(str(drop_time2))
            if timer is None:
                Plugin.CreateTimer("airdroptimer", drop_time2).Start()

    def On_PlayerDisconnected(self, unused):
        ini = self.easyairdropsini()
        req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players > Server.Players.Count:
            DataStore.Add("airdrop", "call", False)
            Server.Broadcast("Not enough people online to call airdrops!")  # debug
            timer = Plugin.GetTimer("airdroptimer")
            if timer is not None:
                Plugin.KillTimer("airdroptimer")

    def airdroptimerCallback(self, timer):
        ini = self.easyairdropsini()
        drop_time = 0
        try:
            drop_time = int(ini.GetSetting("Settings", "DropFrequency"))*1000
        except:
            drop_time = 3600000  # Default time if number not set.
        Server.Broadcast("Timer Completed. Drop Frequency =" + str(drop_time))  # debug
        time = DataStore.Get("airdrop", "call")
        if time:
            drop_during = str(ini.GetSetting("Settings", "DropDuring"))
            if drop_during == "night" and 17.5 < World.Time < 5.5:
                World.Airdrop()
            elif drop_during == "day" and 17.5 > World.Time > 5.5:
                World.Airdrop()
            else:
                World.Airdrop()
            Server.Broadcast("AirDrop on its way!")
        Plugin.CreateTimer("airdroptimer", drop_time).Start()

    def easyairdropsini(self):
        return Plugin.GetIni("EasyAirdrops")
 

[KR]teledong

New Member
Member
Oct 13, 2014
6
0
1
37
Parts Unknown
Thank you for your suggestion, I have already updated my version with the adjustments, still not dropping, timer is executing tho. Here is my latest w/debugs in place:

Python:
__author__ = 'CorrosionX'
__name__ = 'EasyAirdrops'
__version__ = '1.2.3'
import clr
import sys
clr.AddReferenceByPartialName("UnityEngine")
clr.AddReferenceByPartialName("Pluton")
import UnityEngine
import Pluton


class EasyAirdrops:
    def On_PluginInit(self):
        if not Plugin.IniExists("EasyAirdrops"):
            setini = Plugin.CreateIni("EasyAirdrops")
            setini.AddSetting("Settings", "PlayersRequired", "3")  # Default
            setini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
            setini.AddSetting("Settings", "DropDuring", "anytime")  # (default) - Can be day/night/anytime
            setini.Save()
            drop_time1 = 3600000
            DataStore.Add("airdrop", "call", False)
            Plugin.CreateTimer("AirDropTimer", drop_time1).Start()
        else:
             # If config exists, make sure each setting is set, else add what is missing
            ini = self.easyairdropsini()
            if ini.GetSetting("Settings", "PlayersRequired") is None:
                ini.AddSetting("Settings", "PlayersRequired", "3")  # Default
            if ini.GetSetting("Settings", "DropFrequency") is None:
                ini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
            if ini.GetSetting("Settings", "DropDuring") is None:
                ini.AddSetting("Settings", "DropDuring", "anytime")
            ini.Save()

    def On_PlayerConnected(self, player):
        ini = self.easyairdropsini()
        req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players <= Server.Players.Count:
            DataStore.Add("airdrop", "call", True)
            Server.Broadcast("AirDrops are now being called for!")  # debug
            player.Message("Required Players= " + str(req_players))  # //debug
            # drop_time2 = 0
            try:
                drop_time2 = int(ini.GetSetting("Settings", "DropFrequency"))*1000
            except:
                drop_time2 = 3600000   # default if not set properly
            timer = Plugin.GetTimer("airdroptimer")
            Server.Broadcast(str(drop_time2))
            if timer is None:
                Plugin.CreateTimer("airdroptimer", drop_time2).Start()

    def On_PlayerDisconnected(self, unused):
        ini = self.easyairdropsini()
        req_players = 0
        try:
            req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
        except:
            req_players = 3  # Default if incorrectly set in config
        if req_players > Server.Players.Count:
            DataStore.Add("airdrop", "call", False)
            Server.Broadcast("Not enough people online to call airdrops!")  # debug
            timer = Plugin.GetTimer("airdroptimer")
            if timer is not None:
                Plugin.KillTimer("airdroptimer")

    def airdroptimerCallback(self, timer):
        ini = self.easyairdropsini()
        drop_time = 0
        try:
            drop_time = int(ini.GetSetting("Settings", "DropFrequency"))*1000
        except:
            drop_time = 3600000  # Default time if number not set.
        Server.Broadcast("Timer Completed. Drop Frequency =" + str(drop_time))  # debug
        time = DataStore.Get("airdrop", "call")
        if time:
            drop_during = str(ini.GetSetting("Settings", "DropDuring"))
            if drop_during == "night" and 17.5 < World.Time < 5.5:
                World.Airdrop()
            elif drop_during == "day" and 17.5 > World.Time > 5.5:
                World.Airdrop()
            else:
                World.Airdrop()
            Server.Broadcast("AirDrop on its way!")
        Plugin.CreateTimer("airdroptimer", drop_time).Start()

    def easyairdropsini(self):
        return Plugin.GetIni("EasyAirdrops")
May be your Callback Function name.
When plugin init, Plugin.CreateTimer("AirDropTimer", drop_time1).Start() is called.

but you are GetTimer, you called timer = Plugin.GetTimer("airdroptimer")

and also, callback function Plugin.CreateTimer("airdroptimer", drop_time).Start()

I think Timer name is Case Sensitive.

I have to go. so when i returned, i will check error carefully :)
 

CorrosionX

Plugin Developer
Plugin Developer
Sep 3, 2014
212
85
18
California
Python:
time = DataStore.Get("airdrop", "call")
was the problem...

Python:
time = bool(DataStore.Get("airdrop", "call"))
that should fix it. :)

Haven't tested it, but should work now.

Python:
__author__ = 'CorrosionX'
__name__ = 'EasyAirdrops'
__version__ = '1.2.3'
import clr
import sys
clr.AddReferenceByPartialName("UnityEngine")
clr.AddReferenceByPartialName("Pluton")
import UnityEngine
import Pluton


class EasyAirdrops:
  def On_PluginInit(self):
  if not Plugin.IniExists("EasyAirdrops"):
  setini = Plugin.CreateIni("EasyAirdrops")
  setini.AddSetting("Settings", "PlayersRequired", "3")  # Default
  setini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
  setini.AddSetting("Settings", "DropDuring", "anytime")  # (default) - Can be day/night/anytime
  setini.Save()
  else:
  # If config exists, make sure each setting is set, else add what is missing
  ini = self.easyairdropsini()
  if ini.GetSetting("Settings", "PlayersRequired") is None:
  ini.AddSetting("Settings", "PlayersRequired", "3")  # Default
  if ini.GetSetting("Settings", "DropFrequency") is None:
  ini.AddSetting("Settings", "DropFrequency", "3600")  # In Seconds! 1 hour
  if ini.GetSetting("Settings", "DropDuring") is None:
  ini.AddSetting("Settings", "DropDuring", "anytime")
  ini.Save()

  def On_PlayerConnected(self, player):
  ini = self.easyairdropsini()
  # req_players = 0
  try:
  req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
  except:
  req_players = 3  # Default if incorrectly set in config
  if req_players <= Server.Players.Count:
  DataStore.Add("airdrop", "call", True)
  Server.Broadcast("AirDrops are now being called for!")  # debug
  # player.Message("Required Players= " + str(req_players))  # //debug
  # drop_time2 = 0
  try:
  drop_time2 = int(ini.GetSetting("Settings", "DropFrequency"))*1000
  except:
  drop_time2 = 3600000  # default if not set properly
  timer = Plugin.GetTimer("airdroptimer")
  # Server.Broadcast(str(drop_time2)) # debug
  if timer is None or 0:
  Plugin.CreateTimer("airdroptimer", drop_time2).Start()

  def On_PlayerDisconnected(self, unused):
  ini = self.easyairdropsini()
  # req_players = 0
  try:
  req_players = int(ini.GetSetting("Settings", "PlayersRequired"))
  except:
  req_players = 3  # Default if incorrectly set in config
  if req_players > Server.Players.Count:
  DataStore.Add("airdrop", "call", False)
  # Server.Broadcast("Not enough people online to call airdrops!")  # debug
  timer = Plugin.GetTimer("airdroptimer")
  if timer is not None or 0:
  Plugin.KillTimer("airdroptimer")

  def airdroptimerCallback(self, timer):
  ini = self.easyairdropsini()
  # drop_time = 0
  try:
  drop_time = int(ini.GetSetting("Settings", "DropFrequency"))*1000
  except:
  drop_time = 3600000  # Default time if number not set.
  # Server.Broadcast("Timer Completed. Drop Frequency =" + str(drop_time))  # debug
  time = bool(DataStore.Get("airdrop", "call"))
  if time:
  drop_during = str(ini.GetSetting("Settings", "DropDuring"))
  if drop_during == "night" and 17.5 < World.Time < 5.5:
  World.Airdrop()
  elif drop_during == "day" and 17.5 > World.Time > 5.5:
  World.Airdrop()
  else:
  World.Airdrop()
  Server.Broadcast("AirDrop on its way!")
  Plugin.CreateTimer("airdroptimer", drop_time).Start()

  def easyairdropsini(self):
  return Plugin.GetIni("EasyAirdrops")
 
Last edited:

maddyn99

New Member
Member
Oct 17, 2014
7
1
3
57
Seems to start an air drop whenever a new player joins after the minimum required is met.