Donate to the B3 fund!

"even a small donation helps!"
Donate with PayPal!
The creator of these plugins has not shown activity in a while. Posting in this board may not result in a fast reply or a reply at all. [ Read the full Support Disclaimer here ]
Most of the plugins here are made by B3 users and the authors may not visit frequently. If you need support for plugins or if questions remain unanswered, you will have to contact the author directly. Read the full Support Disclaimer here

NOTE: Do not attach plugins to your forumtopics! Attachements are periodically removed by maintenance tasks. Upload your plugins to our Downloads section instead!

Author Topic: Voting Plugin  (Read 39038 times)

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #45 on: January 24, 2010, 02:19:34 PM »
@Ismael
Yep I got still the same problem.
JoinMyServer.com
Call of Duty 4 Game Servers

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #46 on: February 10, 2010, 08:04:35 PM »
The problem is still NOT solved with this vote plugin!  :'(

I'm waiting about almost 3 months!  :o

Quote
From: Bakes
December 27, 2009, 05:57:24 AM
I'm writing my own mapvote plugin at the moment, which works differently. Should be done tonight, I'm writing it around that bug.
:-\
« Last Edit: February 10, 2010, 08:09:00 PM by danger89 »
JoinMyServer.com
Call of Duty 4 Game Servers

Offline Bakes

  • B3 Contrib/Support
  • Hero Member
  • *
  • Posts: 1226
Re: Voting Plugin
« Reply #47 on: February 10, 2010, 10:29:26 PM »
Fine, have this. It should still be regarded as a beta, I haven't looked at it for a while and certainly haven't bugtested it much. Config options should be pretty obvious.

Usage: player types 'rtv' (note, not a bot command), once enough players have said 'rtv' a vote is started with four random maps contained in maps.txt, the map gets rotated onto the map with the plurality. Hopefully it will work for you, I haven't edited the plugin since the 20th December. You might need to do a few modifications.

It is licensed under the GPLv2.

rtv.py
Code: python [Select]


__version__ = '1.0'
__author__  = 'Bakes'

import b3, re
import b3.events
import threading
import random
import time
#--------------------------------------------------------------------------------------------------
class RtvPlugin(b3.plugin.Plugin):
    _adminPlugin = None
    _voteActive = False
    _voteLastActive = None
    activeclients = {}
    voteallowed = True
    maps = []
    randomizedmaps = {}
    votedclients = {}

    def onStartup(self):
      self.registerEvent(b3.events.EVT_CLIENT_SAY)
      self.registerEvent(b3.events.EVT_GAME_ROUND_START)
      """\
      Initialize plugin settings
      """
      file = open(self.config.get('settings', 'maplist'), 'r')
      for line in file:
        self.maps.append(line)

   # get the admin plugin so we can register commands
      self._adminPlugin = self.console.getPlugin('admin')
      if not self._adminPlugin:
      # something is wrong, can't start without admin plugin
        self.error('Could not find admin plugin')
        return False
   
      self.debug('Started')


    def onEvent(self, event):
        if event.type == b3.events.EVT_CLIENT_SAY:
           self.debug(self._adminPlugin.parseUserCmd(event.data)[0])
           if self._adminPlugin.parseUserCmd(event.data)[0].startswith('rtv'):
             if event.client.maxLevel > self.config.getint('settings', 'minlevel'):
             
              if self.voteallowed:
               try:
                failed = True
                self.debug('failed set to false')
                if not self.activeclients[event.client.id]:
                  self.debug('This was not meant to happen')
               except KeyError:
                  self.debug('failed set to true')
                  failed = False
               if failed == False:
                 self.debug('Rocking the Vote?')
                 self.rockthevote(event.client, event.data)
               else:
                  event.client.message('You have already voted')
                  return False
           else:
               event.client.message('You do not have permission to use rockthevote')
        elif event.type == b3.events.EVT_GAME_ROUND_START:
           self.debug('Round Started')
    def allowvote(self):
        self.voteallowed = True

    def rockthevote(self, client, data):
        if not self._voteActive:
          self.activeclients[client.id] = True
          if (float(len(self.activeclients))/float(len(self.console.clients.getList()))) > float(self.config.getint('settings', 'rtv_threshold_percent')/100):
             self.console.say('The vote is being rocked!')
             self.activeclients = {}
             self.randomizedmaps = {}
             random.shuffle(self.maps)
             i = 0
             for map in self.maps:
               map = map.strip()
               if i > 4:
                 break
               else:
                 self.randomizedmaps[map] = 0
               i = i + 1
             self.console.say('Vote for a new map! The choices are:')
             for map in self.randomizedmaps:
                self.console.say('^1'+map)
             self._voteActive = True
             timer = threading.Timer(self.config.getint('settings', 'time_to_vote'), self.activatemap)
             timer.start()
             self.console.say('Please type ^1rtv ^2mapname ^7to vote for a new map! You have %s seconds' % self.config.get('settings', 'time_to_vote'))
        else:
          self.activeclients[client.id] = True
          mapname = self._adminPlugin.parseUserCmd(data)[1]
          if not mapname:
             client.message('You must specify a mapname when voting!')
          else:
             try:
              self.debug(mapname)
              if self.randomizedmaps[mapname]:
                 self.debug('Client entered an acceptable map')
             except KeyError:
              #else: 
               string = ''
               client.message('You must select a valid map, the options are:')
               for map in self.randomizedmaps:
                  string = string+map+', '
               client.message(string)
               return False
             self.randomizedmaps[mapname] = self.randomizedmaps[mapname] + 1
             client.message('Your vote was ^2successful')
    def activatemap(self):
        self.debug('map activating')
        best = 0
        bestmap = None
        for map in self.randomizedmaps:
           if self.randomizedmaps[map] > best:
               best = self.randomizedmaps[map]
               bestmap = map
        self._voteActive = False
        self.activeclients = {}
        if best > 0:
          self.console.say('New map has been selected! Rotating to %s' % bestmap)
          time.sleep(3)
          self.console.write('map %s' % bestmap)
          self.debug('Map Change, so setting vote allowed false until map has been played for a bit')
          self.voteallowed = False
          t = threading.Timer(self.config.getint('settings','time_before_rtv'), self.allowvote)
          t.start()
        else:
          self.console.say('Noone voted!')
          self._voteActive = False


plugin_rtv.xml
Code: xml [Select]

<configuration plugin="rtv">
  <settings name="settings">
    <set name="maplist">b3/extplugins/conf/maplist.txt</set>
    <set name="time_before_rtv">15</set>
    <set name="time_to_vote">15</set>
    <set name="minlevel">1</set>
    <set name="rtv_threshold_percent">50</set>
  </settings>
</configuration>


maplist.txt
Code: [Select]
mp_crash
mp_strike
mp_backlot
mp_bog
mp_crossfire
mp_crash_snow
mp_showdown

A small tip for you, demanding will get you nowhere in life. Developers may work hard to improve your experience, but it should not be demanded of us. We don't get anything out of b3 except for satisfaction, we have no salary, we get no money, and for myself at least, b3 is a big timesink (strange as it may seem, I don't run any gameservers, so get absolutely nothing out of b3), we have other things to do. I have been working flat out since the beginning of January, I assume Ismael has also had too much time to do any b3 work.
Sorry that it's a bit late (it's actually only two months, not three), but you shouldn't expect anything of me, even if I do give a deadline, because I only do b3 when I want to work on improving my python.

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #48 on: February 19, 2010, 04:55:17 PM »
Thank you very much!  ;D I will test it...

Sorry to be so blunt, that was not my intention. I know you work hard for it and B3 is just a hobby for you all ;) Forgive me  :'(


EDIT:
Indeed its a Beta version, this equal to !map, so without any voting possibility. I think I need to wait a little bit longer untill you finished it...
« Last Edit: February 19, 2010, 05:52:49 PM by danger89 »
JoinMyServer.com
Call of Duty 4 Game Servers

Offline Unknow Soldier

  • Jr. Member
  • **
  • Posts: 40
Re: Voting Plugin
« Reply #49 on: March 08, 2010, 06:17:14 PM »
Hey,

there is a some trouble if u have some similar map names.

i.e. u have in the maplist
Code: [Select]
mp_tojane
mp_tojane_night

so u cant call a vote for mp_tojane. U will get the message: "More than one map matches the name, be more specific"

I found the source, but I dont know how to fix it. Line 315-321
Code: [Select]
		for map in self._mapList:
if s in map:
self._map  = map
if matched:
client.message('^7More than one map matches the name, be more specific')
return False
matched = True

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #50 on: March 31, 2010, 09:50:40 PM »
Is there some news about a good/working vote plugin? Or need I to go to manuadmin?
JoinMyServer.com
Call of Duty 4 Game Servers

Offline garbitos

  • Jr. Member
  • **
  • Posts: 21
Re: Voting Plugin
« Reply #51 on: June 13, 2010, 11:30:52 PM »
Is this working for bfbc2? I think I saw it in game...anyone suggestions?

Offline garbitos

  • Jr. Member
  • **
  • Posts: 21
Re: Voting Plugin
« Reply #52 on: June 15, 2010, 08:51:32 PM »
This plugin works in bfbc2, i am just not sure how to populate the "maplist.txt" with bfbc2 maps...therefore the vote map feature is not working.

Offline Padinn

  • Jr. Member
  • **
  • Posts: 44
Re: Voting Plugin
« Reply #53 on: July 07, 2010, 09:29:15 PM »
Something seems to be acting oddly. 2 people voted to kick someone and he was kicked for the server, but I thought I had set it much higher (to require at least 12 votes.) What did I do wrong?


These are my settings:
<configuration plugin="votekick">
   <settings name="settings">
      <set name="min_level_vote">0</set>
      
      <set name="vote_times">5</set>
      <set name="vote_interval">3</set>
   </settings>
   
   <settings name="votekick">
      <set name="min_level_kick">0</set>
      
      <set name="tempban_minvotes">12</set>
      <set name="tempban_interval">5</set>
      <set name="tempban_percent">60</set>
   </settings>   
   
   <settings name="votemap">
      <set name="min_level_map">2</set>      
      <set name="mapfile">@b3/extplugins/conf/maplist.txt</set>
   </settings>
</configuration>


Offline Spoon

  • Sr. Member
  • ****
  • Posts: 255
    • EHD Gaming
Re: Voting Plugin
« Reply #54 on: July 07, 2010, 10:00:44 PM »
if 2 poeple vote yes kick and 1 person votes no stay the person will get kicked.

Offline Blueeyes

  • Jr. Member
  • **
  • Posts: 22
    • eXec
Re: Voting Plugin
« Reply #55 on: November 20, 2010, 12:44:46 AM »
I just get the error "A vote is already in progress"...


Found an error:
Code: [Select]
101119 23:30:39	ERROR	Error executing crontab <bound method VotingPlugin.end_vote of <voting.VotingPlugin instance at 0x8a077ec>>: float division
[('/home/b3isnipe/b3/b3/b3/cron.py', 270, 'run', 'c.run()'), ('/home/b3isnipe/b3/b3/b3/cron.py', 64, 'run', 'self.command()'), ('/home/b3isnipe/b3/b3/b3/extplugins/voting.py', 171, 'end_vote', 'self._currentVote.end_vote_yes(self._yes,  self._no)'), ('/home/b3isnipe/b3/b3/b3/extplugins/voting.py', 271, 'end_vote_yes', 'if self._tempban_interval and (yes*100.0 / no) > self._tempban_percent and yes > self._tempban_minvotes:')]
« Last Edit: November 20, 2010, 12:49:39 AM by Blueeyes »

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #56 on: December 15, 2010, 07:23:31 PM »
I just get the error "A vote is already in progress"...


Found an error:
Code: [Select]
101119 23:30:39	ERROR	Error executing crontab <bound method VotingPlugin.end_vote of <voting.VotingPlugin instance at 0x8a077ec>>: float division
[('/home/b3isnipe/b3/b3/b3/cron.py', 270, 'run', 'c.run()'), ('/home/b3isnipe/b3/b3/b3/cron.py', 64, 'run', 'self.command()'), ('/home/b3isnipe/b3/b3/b3/extplugins/voting.py', 171, 'end_vote', 'self._currentVote.end_vote_yes(self._yes,  self._no)'), ('/home/b3isnipe/b3/b3/b3/extplugins/voting.py', 271, 'end_vote_yes', 'if self._tempban_interval and (yes*100.0 / no) > self._tempban_percent and yes > self._tempban_minvotes:')]

Me too, still the same problems...
JoinMyServer.com
Call of Duty 4 Game Servers

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #57 on: January 11, 2011, 06:55:37 PM »
Found a bug:

voting.py
Find:
Code: python [Select]
if s is map:
replace to
Code: python [Select]
if s == map:
.
JoinMyServer.com
Call of Duty 4 Game Servers

Offline danger89

  • Full Member
  • ***
  • Posts: 129
    • JoinMyServer - Game Servers
Re: Voting Plugin
« Reply #58 on: January 15, 2011, 12:13:49 AM »
Since this plugin has not shown any activity in a while and it still got some bugs and features missing. I refer you to my own remake of this plugin, you can find it here!!

All the bugs mentioned above are fixed in my version 1.7.
« Last Edit: January 17, 2011, 09:42:46 PM by danger89 »
JoinMyServer.com
Call of Duty 4 Game Servers

Offline gabarram

  • Sr. Member
  • ****
  • Posts: 186
Re: Voting Plugin
« Reply #59 on: February 04, 2011, 05:11:32 AM »

 


Rate this page +1 at Google Search

anything