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

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

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

 
Ответить в данную темуНачать новую тему
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
Регистрация: --
Пользователь №:



the script does not work as there yourself?

here similar script, here see =)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 8.9.2012, 4:25
Сообщение #3





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



yeps im copying from you but it doesnt work frown.gif im trying again if doesnt work i'll post again here.
I want this script work for infant and vehicle cry.gif

Сообщение отредактировал seanman - 8.9.2012, 4:44
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

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

 



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