Добро пожаловать на форумы Боевого Народа (бывший форум Live.CNews.ru)!

ВАЖНЫЕ ТЕМЫ: FAQ по переезду и восстановлению учеток | Ошибки и глюки форума.
О проблемах с учетными записями писать СЮДА.
Commander Kick Script - Форумы Боевого Народа
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Commander Kick Script, For air vehicle only and more than 24players
сообщение 22.9.2012, 20:32
Сообщение #1





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



here's the code

Раскрывающийся текст

CODE
# -*- coding: cp1252 -*-
# Commander Kill System

# Module: comdis.py
# Buat Nendang COmmander yg naik heli/jet
# Author: REW 1.0
# Version: 1.1
# modded by : watdezig
# credit thx to REW, i just mod the anti commander and using aircraft script
# kick commander if going inside vehicle if more than 24players  and sorry for my english

import bf2
import host
import mm_utils
from bf2.stats.constants import *
from bf2 import g_debug

#debug flag
sks_debug = False # for verbose server console messages

#variable settings; intervals are in seconds
minP = 24 # max players for 'no commanders' mode
killInterval = 5 # time before a commander is killed
msgInterval = 90 # time between warning messages

#timers
msgTimer = None

#queue lists
killList = []

__version__ = 1.0

__required_modules__ = {
    'modmanager': 1.2
}

__supports_reload__ = True

__description__ = "ModManager Commander Killer v%s" % __version__

RequiredTypes = [VEHICLE_TYPE_HELICOPTER, VEHICLE_TYPE_AVIATOR]

class ComDis( object ):

    def __init__( self, modManager ):
        # ModManager reference
        self.mm = modManager
        self.__state = 0
        
    # Initialize the kill system i.e. register game hooks.
    def init( self ):
        if 0 == self.__state:
            #host.registerHandler('PlayerSpawn', self.onPlayerSpawn, 1)
            host.registerHandler('EnterVehicle', self.onEnterVehicle, 1)
            #host.registerHandler('ChangedCommander', self.onChangedCommander, 1)
            host.registerGameStatusHandler(self.onGameStatusChanged)
        self.__state = 1

    #def onChangedCommander(self, team, oldCmd, newCmd):
    #    self.CheckForCommander()
        
    # On spawn, checks if the player is a commander.
    # Player is added to kill list if player is a commander.
    #def onPlayerSpawn(self, p, vehicle):
    #    self.CheckForCommander()
    
    # On enter vehicle, checks if the any player is a commander.
    # Player is added to kill list if player is a commander.
    def onEnterVehicle( self, player, vehicle, freeSoldier):
        #if self.__state == 1:
        if (not player.isAIPlayer()):
        vehicleType = getVehicleType(vehicle.templateName)
        try:
                    parentVehicle = vehicle.getParent()
                    parentType = getVehicleType(parentVehicle.templateName)
        except:
                    parentType = 12
        if ( vehicleType in RequiredTypes ) | ( parentType in RequiredTypes ):
                    self.CheckForCommander()

                    #if player.updateTimer:
            #self.ResetPlayer( player )
        #else:
                #    if not player.updateTimer:
                #        self.StartTimer( player )

            
      

    def CheckForCommander( self ):
        global sks_debug
        global killList, killInterval, minP
        players = bf2.playerManager.getPlayers()
        numP = bf2.playerManager.getNumberOfPlayers()
        for pl in players:
            if pl.isCommander() and numP >= minP:
                # Add the player if not in kill list
                if killList.count(pl.index) == 0:
                    killList.append(pl.index)
                    
                    # Set timer for kill
                    bf2.Timer(self.onKillTimer, killInterval, 1)
                
                # Issue kill warning
                mm_utils.msg_server( "§3 §C1001bla bla bla%s?§C1001 bla bla bla §C1001u§C1001  §C1001%s§C1001 sec!" % ( pl.getName(), killInterval ))

        
    # Sends out warning messages
    def onMsgTimer(self, data):
        global sks_debug
        global minP
        numP = bf2.playerManager.getNumberOfPlayers()
        commander1 = bf2.playerManager.getCommander(1)
        commander2 = bf2.playerManager.getCommander(2)
        #if ((commander1 != None) or (commander2 != None)) and (numP <= minP):
        #if (numP <= minP):
        #    mm_utils.msg_server( "= SCRIPT: §C1001NO COMMANDERS§C1001 or you will §C1001DIE§C1001! Players: §C1001%s§C1001<§C1001%s§C1001 =" % ( numP, minP+1 ) )
        
    # Processes the kill list queue. The next player in queue
    # is checked again and killed if a commander.
    def onKillTimer(self, data):
        global sks_debug
        global killList
        global minP
        
        # Process the next player in queue.
        p = bf2.playerManager.getPlayerByIndex(killList.pop(0))
        numP = bf2.playerManager.getNumberOfPlayers()
        # Player is still a commander, kill him.
        if p.isCommander() and p.isValid() and p.isAlive(): #and (numP <= minP):
            host.rcon_invoke("admin.kickPlayer " + str(p.index))
            p.score.score = p.score.score - 2
            mm_utils.msg_server( "§3 bla bla bla §C1001%s§C1001 bla bla bla!! " % ( p.getName() ) )
            #vehicle = p.getVehicle()
            #rootVehicle = getRootParent(vehicle)
            #if getVehicleType(rootVehicle.templateName) == VEHICLE_TYPE_SOLDIER:
             #   rootVehicle.setDamage(0)
                # This should kill them !
            #else:
            #if ((getVehicleType(rootVehicle.templateName) == VEHICLE_TYPE_AVIATOR) and (getVehicleType(rootVehicle.templateName) == VEHICLE_TYPE_HELICOPTER)) :
             #   host.rcon_invoke("admin.kickPlayer " + str(p.index))
                #rootVehicle.setDamage(0.09)
                # a vehicle will likely explode within 0.3 sec killing entire crew,
                # not so sure about base defenses though
            

    # Handles clean up and initialization between rounds.
    def onGameStatusChanged(self, status):
        global killList
        global msgInterval, msgTimer
        
        if status == bf2.GameStatus.Playing:
            
            # Set the warning timer.
            msgTimer = bf2.Timer(self.onMsgTimer, msgInterval, 1)
            msgTimer.setRecurring(msgInterval)
            
        elif status == bf2.GameStatus.PreGame:
            
            # Destroy any timers
            msgTimer.destroy()
            msgTimer = None
            
            # Blank the list.
            killList = []
        
        elif status == bf2.GameStatus.EndGame:
            pass


    def shutdown( self ):
        """Shutdown and stop processing."""
        
        # Unregister our handlers
        host.unregisterGameStatusHandler( self.onGameStatusChanged )
        
        # Unregister our game handlers
        # Flag as shutdown as there is currently way to do this
        self.__state = 2

def mm_load( modManager ):
    """Creates your object."""
    return ComDis( modManager )


CMIIW biggrin.gif i really need help
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 23.9.2012, 2:36
Сообщение #2





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



here see http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?s=&am...t&p=1502940
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.4.2024, 18:02
Консультации адвоката по уголовным делам. Бесплатно. По всей России