base rape my script where's my false |
|
Здравствуйте, гость ( Вход | Регистрация )
base rape my script where's my false |
7.9.2012, 21:42
Сообщение
#1
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Hi guys i want ask here.. it's the most active forum about bf2 mod. And im not from russia
i want ask my code about anti base rape can you tell me, why my mod doesnt works? here's my code Раскрывающийся текст # ------------------------------------------------------------------------ # Module: AntiBaseRape.py # Author: SHAnders # Port to bf2cc/mm: graag42 # # Version 1.11 # # Changes: # v1.1 -> 1.11 # Fixed the timer to only be started once # v1.0 -> 1.1 # Implemted a baseRapeWarning attribute on players to count safe base kills # Implemted allowed amount of safe base kills (3) # up to this amount player only loses kill points + 1 score pr baseRapeWarning # over this amount player is allso killed # Implemtes a timer for removing 1 baseRapeWarning every 2 minutes # # Description: # Server side only admin script # # This script will punish players who kill enemy within the area of a safe base # # Requirements: # None. # # Installation as Admin script: # 1: Save this script as 'AntiBaseRape.py' in your <bf2>/admin/standard_admin directory. # 2: Add the lines 'import AntiBaseRape' and 'AntiBaseRape.init()' to the file # '<bf2>/admin/standard_admin/__init__.py'. # # TODO: # Since not all maps are alike, the requirements for base rape protiction # should be able to be altered individualy for each control point. # # Thanks to: # Battlefield.no for inspiration from their pingkick.py script # # ------------------------------------------------------------------------ import host import bf2 import math import mm_utils from bf2.stats.constants import * from bf2 import g_debug # Set the version of your module here __version__ = 1.11 # Set the required module versions here __required_modules__ = { 'modmanager': 1.0 } # Does this module support reload ( are all its reference closed on shutdown? ) __supports_reload__ = True # Set the description of your module here __description__ = "AntiBaseRape v%s" % __version__ # ------------------------------------------------------------------------ # Constants # ------------------------------------------------------------------------ DEFAULT_SAFEBASE_RADIUS = 100 # Default safe area radius (normal commandpoint radius = 10) ALLOWED_SAFEBASEKILLS = 0 SAFEBASEKILL_TIMER_INTERVAL = 300 # Intervals between removing a point from players.baseRapeWarning # ------------------------------------------------------------------------ # Variables # ------------------------------------------------------------------------ WarnReduceTimer = None # Timer that reduces the warnings at intervals # ------------------------------------------------------------------------ # Init # ------------------------------------------------------------------------ class BaseRape( object ) : def __init__( self, modManager ): # ModManager reference self.mm = modManager # Internal shutdown state self.__state = 0 def init( self ): if g_debug: print "AntiBaseRape init" if 0 == self.__state: host.registerHandler('PlayerConnect', self.onPlayerConnect, 1) host.registerHandler('PlayerKilled', self.onPlayerKilled) # Update to the running state self.__state = 1 # Start the timer that reduces warnings on the SAFEBASEKILL_TIMER_INTERVAL WarnReduceTimer = bf2.Timer(self.onSafeBaseKillTimer, SAFEBASEKILL_TIMER_INTERVAL, 1) WarnReduceTimer.setRecurring(SAFEBASEKILL_TIMER_INTERVAL) # Connect already connected players if reinitializing for p in bf2.playerManager.getPlayers(): self.onPlayerConnect(p) # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # onPlayerConnect # ------------------------------------------------------------------------ def onPlayerConnect(self, player): self.resetPlayer(player) # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # onPlayerKilled # ------------------------------------------------------------------------ def onPlayerKilled(self, victim, attacker, weapon, assists, object): # killed by self if attacker == victim: pass # killed by enemy elif attacker != None and attacker.getTeam() != victim.getTeam(): self.checkForSafeBase(attacker, victim) # ------------------------------------------------------------------------ def shutdown( self ): """Shutdown and stop processing.""" # Unregister game handlers and do any other # other actions to ensure your module no longer affects # the game in anyway if WarnReduceTimer: WarnReduceTimer.destroy() WarnReduceTimer = None # Flag as shutdown as there is currently way to: # host.unregisterHandler self.__state = 2 # ------------------------------------------------------------------------ # Reset the number of warnings # ------------------------------------------------------------------------ def resetPlayer(self, player): player.baseRapeWarning = 0 # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Check if victim was killed within safebase area # ------------------------------------------------------------------------ def checkForSafeBase(self, attacker, victim): currentmap = bf2.gameLogic.getMapName() if currentmap == "dalian_plant" and victim.getTeam() == 1: DEFAULT_SAFEBASE_RADIUS = 130 if currentmap == "dalian_plant" and victim.getTeam() == 2: DEFAULT_SAFEBASE_RADIUS = 35 if currentmap == "daqing_oilfields" and victim.getTeam() == 1: DEFAULT_SAFEBASE_RADIUS = 151 if currentmap == "daqing_oilfields" and victim.getTeam() == 2: DEFAULT_SAFEBASE_RADIUS = 70 if currentmap == "dragon_valley": DEFAULT_SAFEBASE_RADIUS = 94 if currentmap == "fushe_pass" and victim.getTeam() == 1: DEFAULT_SAFEBASE_RADIUS = 75 if currentmap == "fushe_pass" and victim.getTeam() == 2: DEFAULT_SAFEBASE_RADIUS = 54 if currentmap == "gulf_of_oman": DEFAULT_SAFEBASE_RADIUS = 94 if currentmap == "kubra_dam": DEFAULT_SAFEBASE_RADIUS = 83 if currentmap == "operation_blue_pearl": DEFAULT_SAFEBASE_RADIUS = 200 if currentmap == "operation_clean_sweep": DEFAULT_SAFEBASE_RADIUS = 100 if currentmap == "road_to_jalalabad": DEFAULT_SAFEBASE_RADIUS = 50 if currentmap == "sharqi_peninsula": DEFAULT_SAFEBASE_RADIUS = 27 if currentmap == "strike_at_karkand": DEFAULT_SAFEBASE_RADIUS = 155 if currentmap == "wake_island_2007": DEFAULT_SAFEBASE_RADIUS = 150 if currentmap == "zatar_wetlands" and victim.getTeam() == 1: DEFAULT_SAFEBASE_RADIUS = 90 if currentmap == "zatar_wetlands" and victim.getTeam() == 2: DEFAULT_SAFEBASE_RADIUS = 94 if currentmap == "mass_destruction": DEFAULT_SAFEBASE_RADIUS = 23 if currentmap == "warlord": DEFAULT_SAFEBASE_RADIUS = 55 if currentmap == "highway_tampa": DEFAULT_SAFEBASE_RADIUS = 130 if currentmap == "greatwall": DEFAULT_SAFEBASE_RADIUS = 55 if currentmap == "insurgency_on_alcatraz_island": DEFAULT_SAFEBASE_RADIUS = 20 if currentmap == "iron_gator": DEFAULT_SAFEBASE_RADIUS = 55 if currentmap == "midnight_sun": DEFAULT_SAFEBASE_RADIUS = 108 if currentmap == "atom": DEFAULT_SAFEBASE_RADIUS = 130 if currentmap == "leviathan": DEFAULT_SAFEBASE_RADIUS = 55 if currentmap == "night_flight": DEFAULT_SAFEBASE_RADIUS = 30 if currentmap == "operationharvest": DEFAULT_SAFEBASE_RADIUS = 100 if currentmap == "operationroadrage": DEFAULT_SAFEBASE_RADIUS = 100 if currentmap == "operationsmokescreen": DEFAULT_SAFEBASE_RADIUS = 100 if currentmap == "taraba_quarry": DEFAULT_SAFEBASE_RADIUS = 130 victimVehicle = victim.getVehicle() controlPoints = bf2.objectManager.getObjectsOfType('dice.hfe.world.ObjectTemplate.ControlPoint') for cp in controlPoints: if cp.cp_getParam('unableToChangeTeam') != 0 and cp.cp_getParam('team') != attacker.getTeam(): distanceTo = self.getVectorDistance(victimVehicle.getPosition(), cp.getPosition()) if DEFAULT_SAFEBASE_RADIUS > float(distanceTo): self.justify(attacker, victim, cp, distanceTo) # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Punish attacker, give victim life back and inform all # ------------------------------------------------------------------------ def justify(self, attacker, victim, controlPoint, distanceTo): victim.score.deaths += -1 attacker.score.kills += -2 attacker.score.score += -4 - attacker.baseRapeWarning attacker.baseRapeWarning += 1 self.sendWarning(attacker, controlPoint, distanceTo) if attacker.baseRapeWarning > ALLOWED_SAFEBASEKILLS: attacker.score.TKs += 1 if attacker.isAlive(): vehicle = attacker.getVehicle() rootVehicle = getRootParent(vehicle) if getVehicleType(rootVehicle.templateName) == VEHICLE_TYPE_SOLDIER: rootVehicle.setDamage(0) # This should kill them ! else: rootVehicle.setDamage(1) # a vehicle will likely explode within 1 sec killing entire crew, # not so sure about base defenses though # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Send Warning # ------------------------------------------------------------------------ def sendWarning(self, player, controlPoint, distanceTo): mapName = bf2.gameLogic.getMapName() if player.baseRapeWarning > ALLOWED_SAFEBASEKILLS: mm_utils.msg_server(" Akang " + player.getName() + " Ngapain kang?? ") else: mm_utils.msg_server(player.getName() + " kasar deh " + str(player.baseRapeWarning) + " Kacian deh akang") # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # remove baseRapeWarnings over time # ------------------------------------------------------------------------ def onSafeBaseKillTimer(self, data): for p in bf2.playerManager.getPlayers(): if p.baseRapeWarning <= 0: p.baseRapeWarning = 0 else: p.baseRapeWarning += -1 # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # get distance between two positions # ------------------------------------------------------------------------ def getVectorDistance(self, pos1, pos2): diffVec = [0.0, 0.0, 0.0] diffVec[0] = math.fabs(pos1[0] - pos2[0]) diffVec[1] = math.fabs(pos1[1] - pos2[1]) diffVec[2] = math.fabs(pos1[2] - pos2[2]) return math.sqrt(diffVec[0] * diffVec[0] + diffVec[1] * diffVec[1] + diffVec[2] * diffVec[2]) # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # ModManager Init # ------------------------------------------------------------------------ def mm_load( modManager ): """Creates and returns your object.""" return BaseRape( modManager ) i want it works for infantry and vehicles too. thx so much if you help me Сообщение отредактировал seanman - 7.9.2012, 21:44 |
|
|
7.9.2012, 22:05
Сообщение
#2
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
8.9.2012, 4:25
Сообщение
#3
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
yeps im copying from you but it doesnt work im trying again if doesnt work i'll post again here.
I want this script work for infant and vehicle Сообщение отредактировал seanman - 8.9.2012, 4:44 |
|
|
Текстовая версия | Сейчас: 26.9.2024, 13:27 |