Exemple #1
0
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 ) ) )