def parseWormDied(sig): global worms deaderID = int(sig[1]) killerID = int(sig[2]) worms[deaderID].Lives -= 1 worms[deaderID].Alive = False if not cfg.RANKING: return try: rank_file_path = io.getWriteFullFileName(cfg.RANKING_FILE) f = open(rank_file_path, "a") if not killerID in io.getComputerWormList(): try: portalocker.lock(f, portalocker.LOCK_EX) except: pass f.write( time.strftime("%Y-%m-%d %H:%M:%S") + "\t" + worms[deaderID].Name + "\t" + worms[killerID].Name + "\n") f.close() except IOError: io.messageLog( "parseWormDied: Unable to open ranking file: " + cfg.RANKING_FILE + " from path: " + rank_file_path, io.LOG_ERROR) if not killerID in io.getComputerWormList(): if deaderID == killerID: try: ranking.rank[worms[killerID].Name][2] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [ 0, 0, 1, len(ranking.rank) + 1 ] else: try: ranking.rank[worms[killerID].Name][0] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [ 1, 0, 0, len(ranking.rank) + 1 ] if not deaderID in io.getComputerWormList(): try: ranking.rank[worms[deaderID].Name][1] += 1 except KeyError: ranking.rank[worms[deaderID].Name] = [ 0, 1, 0, len(ranking.rank) + 1 ]
def parseWormDied(sig): global worms deaderID = int(sig[1]) killerID = int(sig[2]) worms[deaderID].Lives -= 1 worms[deaderID].Alive = False if not cfg.RANKING: return try: f = open(io.getWriteFullFileName("pwn0meter.txt"), "a") if not killerID in io.getComputerWormList(): try: portalocker.lock(f, portalocker.LOCK_EX) except: pass f.write( time.strftime("%Y-%m-%d %H:%M:%S") + "\t" + worms[deaderID].Name + "\t" + worms[killerID].Name + "\n") f.close() except IOError: io.msg("ERROR: Unable to open pwn0meter.txt") if not killerID in io.getComputerWormList(): if deaderID == killerID: try: ranking.rank[worms[killerID].Name][2] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [ 0, 0, 1, len(ranking.rank) + 1 ] else: try: ranking.rank[worms[killerID].Name][0] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [ 1, 0, 0, len(ranking.rank) + 1 ] if not deaderID in io.getComputerWormList(): try: ranking.rank[worms[deaderID].Name][1] += 1 except KeyError: ranking.rank[worms[deaderID].Name] = [ 0, 1, 0, len(ranking.rank) + 1 ]
def recheckVote(verbose=True): global voteCommand, voteTime, votePoster, voteDescription global kickedUsers if not voteCommand: return voteCount = 0 notVoted = 0 if cfg.VOTING_COUNT_NEGATIVE: for w in hnd.worms.keys(): voteCount += hnd.worms[w].Voted if hnd.worms[w].Voted == 0: notVoted += 1 else: for w in hnd.worms.keys(): if hnd.worms[w].Voted == 1: voteCount += 1 else: notVoted += 1 humanWormCount = len(hnd.worms) - len(io.getComputerWormList()) needVoices = int(math.ceil(humanWormCount * cfg.VOTING_PERCENT / 100.0)) if voteCount >= needVoices or (time.time() - voteTime >= cfg.VOTING_TIME and cfg.VOTING_AUTO_ACCEPT): try: exec(voteCommand) except: io.messageLog(formatExceptionInfo(), io.LOG_ERROR) #Helps to fix errors voteCommand = None voteTime = 0 return if time.time( ) - voteTime >= cfg.VOTING_TIME or needVoices - voteCount > notVoted: voteCommand = None voteTime = 0 io.chatMsg("Vote failed: " + voteDescription) if (votePoster in hnd.worms.keys()) and ( hnd.worms[votePoster].Voted == 1 ): # Check if worm left and another worm joined with same ID hnd.worms[votePoster].FailedVoteTime = time.time() return if verbose: io.chatMsg("Vote: " + voteDescription + ", " + str(needVoices - voteCount) + " voices to go, " + str(int(cfg.VOTING_TIME + voteTime - time.time())) + (" seconds, say %sy or %sn" % (cfg.ADMIN_PREFIX, cfg.ADMIN_PREFIX)))
def parseWormDied(sig): global worms deaderID = int(sig[1]) killerID = int(sig[2]) worms[deaderID].Lives -= 1 worms[deaderID].Alive = False if not cfg.RANKING: return try: f = open(io.getWriteFullFileName("pwn0meter.txt"),"a") if not killerID in io.getComputerWormList(): try: portalocker.lock(f, portalocker.LOCK_EX) except: pass f.write( time.strftime("%Y-%m-%d %H:%M:%S") + "\t" + worms[deaderID].Name + "\t" + worms[killerID].Name + "\n" ) f.close() except IOError: io.msg("ERROR: Unable to open pwn0meter.txt") if not killerID in io.getComputerWormList(): if deaderID == killerID: try: ranking.rank[worms[killerID].Name][2] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [0,0,1,len(ranking.rank)+1] else: try: ranking.rank[worms[killerID].Name][0] += 1 except KeyError: ranking.rank[worms[killerID].Name] = [1,0,0,len(ranking.rank)+1] if not deaderID in io.getComputerWormList(): try: ranking.rank[worms[deaderID].Name][1] += 1 except KeyError: ranking.rank[worms[deaderID].Name] = [0,1,0,len(ranking.rank)+1]
def recheckVote(verbose = True): global voteCommand, voteTime, votePoster, voteDescription global kickedUsers if not voteCommand: return voteCount = 0 notVoted = 0 if cfg.VOTING_COUNT_NEGATIVE: for w in hnd.worms.keys(): voteCount += hnd.worms[w].Voted if hnd.worms[w].Voted == 0: notVoted += 1 else: for w in hnd.worms.keys(): if hnd.worms[w].Voted == 1: voteCount += 1 else: notVoted += 1 humanWormCount = len(hnd.worms) - len(io.getComputerWormList()) needVoices = int( math.ceil( humanWormCount * cfg.VOTING_PERCENT / 100.0 ) ) if voteCount >= needVoices or (time.time() - voteTime >= cfg.VOTING_TIME and cfg.VOTING_AUTO_ACCEPT): try: exec(voteCommand) except: io.messageLog(formatExceptionInfo(),io.LOG_ERROR) #Helps to fix errors voteCommand = None voteTime = 0 return if time.time() - voteTime >= cfg.VOTING_TIME or needVoices - voteCount > notVoted: voteCommand = None voteTime = 0 io.chatMsg("Vote failed: " + voteDescription ) if ( votePoster in hnd.worms.keys() ) and ( hnd.worms[votePoster].Voted == 1 ): # Check if worm left and another worm joined with same ID hnd.worms[votePoster].FailedVoteTime = time.time() return if verbose: io.chatMsg("Vote: " + voteDescription + ", " + str( needVoices - voteCount ) + " voices to go, " + str(int( cfg.VOTING_TIME + voteTime - time.time() )) + ( " seconds, say %sy or %sn" % ( cfg.ADMIN_PREFIX, cfg.ADMIN_PREFIX ) ) )