Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форумы Боевого Народа _ Форум администраторов _ AAS

Автор: ROOL 3.1.2007, 12:04

сабж, пробывал дабавить в этот мод другие карты, ни чего не получилось. раунд не стартовал... кто нить пробывал это осуществить ?

Автор: TDA 3.1.2007, 15:06

Может стоит начать с описания мода желательно с линками ;)

знаю много модов но про этот не слышал хотя как показывает практита - у одного омда порой несколько названий..

Автор: ROOL 3.1.2007, 15:55

mods\bf2\python\game\gamemodes\gpm_cq.py

landot AAS mod for BF2 conquest mode

меняется файл на "не родной", и на сервере точки начинают захватываться в строго определенной последовательности, на моем сервере народ тащится по некоторым не офф картам, а мод есстественно на них не работает, вот я его уже и так и так, а всеравно не работает. :(

ну в торопях нашел страничку с этим модом, не сочтите за рекламу...
http://landot.org:8080/landot/aas/

Автор: uks_serg 5.1.2007, 9:07

Странно, у меня и с родными картами не стартует, если баланс поставить false стартует, но флаги вообще не захватываются, пробовал на версии 1 и 1.4, 1.12 как там рекомендуют патча нету. может кто посоветует в чем причина?

Автор: TERROR_rus 8.7.2007, 9:21

Комрады, никто не нашел способ впихнуть в этот мод новые карты?Он прекрасно работает на 1.41 у нас в локале,но хотелось бы добавить несколько новых карт,Джал например rolleyes.gif

Автор: Unicornio 13.7.2007, 21:43

где можно взять этот мод ?

Автор: TERROR_rus 17.7.2007, 9:49

Цитата(Unicornio @ Пятница, 13 Июля 2007, 21:43:54) *
где можно взять этот мод ?

Создать текстовый файл,вставить всю ету хрень, переименовать файл в gpm_cq.py и заменить им родной gpm_cq.py в папке C:\Program Files\EA GAMES\Battlefield 2\mods\bf2\python\game\gamemodes,желательно оставить копию родного,а то вдруг не понравиться rolleyes.gif

#
# landot AAS mod for BF2 conquest mode
#
# Version 1.7
#
# The following copyright only applies to pieces of code added or changed
# in this file compared to the original gpm_cq.py included with BF2 1.02.
# Any other code is copyright of the copyright owner of that particular code.
#
# Copyright © 2005, Jarkko Santala <santala@landot.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Contributors:
#
# Letranger, Men Dake, Nordstern, Dark Angel
#
# Thanks to everyone for great help in testing, flag order and new ideas!
#
# Please check SETTINGS below.
#

TAKEOVERTYPE_CAPTURE = 1
TAKEOVERTYPE_NEUTRALIZE = 2

SCORE_CAPTURE = 2
SCORE_NEUTRALIZE = 2
SCORE_CAPTUREASSIST = 1
SCORE_NEUTRALIZEASSIST = 1
SCORE_DEFEND = 1

Top = 0
Middle = 1
Bottom = 2

import host
import bf2
import math
from game.scoringCommon import addScore, RPL
from bf2 import g_debug

g_controlPoints = [] # cache, as this map won't change

global aasTip
global aasLast
global aasNextCp
global aasRadius
global aasVehicleCap
global aasCpBalance
global aasDebug
global aasL10n
global aasL10nCp
global aasL10nText

###############################################################################
#
# landot AAS mod - SETTINGS
#
#
# The CP area sizes will be calculated using the following formula:
#
# Original CP Radius * ( Max Number Of Players / aasRadius )
#
# If you set the aasRadius to 0 the CP area sizes will stay normal.
# With default setting 10: 10 players = the same, 30 players = 3 times bigger
#
aasRadius = 10
#
# Choose localization by setting the variable aasL10n
#
# 0 = English
# 1 = French
# 2 = German
#
aasL10n = 0
#
# Enable/disable Commander
#
# 1 = Enable
# 0 = Disable
#
aasCommander = 0
#
# Using the following setting you can choose whether CPs per team will
# be balanced at the start of each map. Enabling this setting means that
# the battle will always start in the middle of the map.
#
# True = Balance number of CPs per team at map start
# False = Don't balance, use default CP ownerships
#
aasCpBalance = True
#
# No user serviceable parts below this point!
#
###############################################################################

aasDebug = 0
aasLast = [ 0, 0, 0 ]
aasNextCp = [ 0, 0, 0 ]

aasTip = " * AAS * "

aasL10nCp = { "abandonedhuts" : [ "Abandoned Huts" , "Baraquements dйsaffectйs", "Verlassene Hьtten" ] ,
"abandonedvillage" : [ "Abandoned Village" , "Village abandonnй", "Verlassenes Dorf" ] ,
"airfield" : [ "Airfield" , "Aйrodrome", "Flugplatz" ] ,
"airfieldbase" : [ "Airfield Base" , "Base de l aйrodrome", "Basis am Flugplatz" ] ,
"airfieldcamp" : [ "Airfield Camp" , "Camp de l aйrodrome", "Lager am Flugplatz" ] ,
"alley" : [ "Alley" , "Rue", "Gasse" ] ,
"alleyway" : [ "Alleyway" , "Ruelle", "Durchgang" ] ,
"ammodepot" : [ "Ammo Depot" , "Dйpфt de munitions", "Munitionslager" ] ,
"backyard" : [ "Backyard" , "Arriиre-cour", "Hinterhof" ] ,
"beach" : [ "Beach" , "Plage", "Strand" ] ,
"beachhouse" : [ "Beach House" , "Maison cфtiиre", "Strandhaus" ] ,
"bridge" : [ "Bridge" , "Pont", "Brьcke" ] ,
"bridgebase" : [ "Bridge Base" , "Base du pont", "Brьckenbasis" ] ,
"bridgecamp" : [ "Bridge Camp" , "Camp du pont", "Brьckenlager" ] ,
"canyonguardpost" : [ "Canyon Guard Post" , "Poste de garde du dйfilй", "Wachposten an der Schlucht" ] ,
"cementfactory" : [ "Cement Factory" , "Cimenterie", "Zementfabrik" ] ,
"centralfront" : [ "Central Front" , "Front central", "Zentrale Front" ] ,
"centralisland" : [ "Central Island" , "Ile centrale", "Zentrale Insel" ] ,
"chineseairfield" : [ "Chinese Airfield" , "Aйrodrome chinois", "Flugplatz (China)" ] ,
"chinesebase" : [ "Chinese Base" , "Base chinoise", "Basis (China)" ] ,
"chinesehq" : [ "Chinese HQ" , "PC chinois", "HQ (China)" ] ,
"city" : [ "City" , "Ville", "Stadt" ] ,
"city_entrance" : [ "City Entrance" , "Entrйe de la ville", "Stadt-Eingang" ] ,
"citypark" : [ "City Park" , "Parc", "Stadtpark" ] ,
"clubhouse" : [ "Club House" , "Pavillon", "Klubhaus" ] ,
"communicationcentral" : [ "Communication Central" , "Central de communication", "Kommunikationszentrale" ] ,
"constructionsite" : [ "Construction Site" , "Chantier", "Baustelle" ] ,
"containerstorage" : [ "Container Storage" , "Zone de stockage", "Lagerhaus" ] ,
"controlcenter" : [ "Control Center" , "Centre de contrфle", "Kontrollzentrum" ] ,
"convoy" : [ "Convoy" , "Convoi", "Konvoi" ] ,
"docks" : [ "Docks" , "Quais", "Docks" ] ,
"eastoilfield" : [ "East Oilfield" , "Champ pйtrolifиre Est", "Цstliches Цlfeld" ] ,
"emineentrance" : [ "East Mine Entrance" , "Entrйe Est de la mine", "Eingang zur цstlichen Mine" ] ,
"factory" : [ "Factory" , "Usine", "Fabrik" ] ,
"farm" : [ "Farm" , "Ferme", "Bauernhof" ] ,
"fishfactory" : [ "Fish Factory" , "Conserverie de poisson", "Fischfabrik" ] ,
"fortification" : [ "Fortification" , "Fortification", "Befestigungsanlage" ] ,
"gasstation" : [ "Gas Station" , "Station-service", "Tankstelle" ] ,
"gatehouse" : [ "Gatehouse" , "Maison de gardien", "Pfцrtnerhaus" ] ,
"harbor" : [ "Harbor" , "Port", "Hafen" ] ,
"hill" : [ "Hill" , "Colline", "Hьgel" ] ,
"hillvillage" : [ "Hill Village" , "Village sur la colline", "Bergdorf" ] ,
"hotel" : [ "Hotel" , "Hфtel", "Hotel" ] ,
"industrialarea" : [ "Industrial Area" , "Zone industrielle", "Industriegebiet" ] ,
"intake" : [ "Intake" , "Cheminйe", "Einlaufturm" ] ,
"island" : [ "Island" , "Ile", "Insel" ] ,
"islandfarmhouse" : [ "Island Farmhouse" , "Ferme insulaire", "Insel-Bauernhaus" ] ,
"lowerdam" : [ "Lower Dam" , "Pied du barrage", "Unterer Damm" ] ,
"mainentrance" : [ "Main Entrance" , "Entrйe principale", "Haupteingang" ] ,
"maintenancebuilding" : [ "Maintenance Buildings" , "Locaux d entretien", "Wartungsgebдude" ] ,
"market" : [ "Market Place" , "Marchй", "Marktplatz" ] ,
"marketplace" : [ "Market Place" , "Place du marchй", "Marktplatz" ] ,
"materialstation" : [ "Material Station" , "Dйpфt de matйriel", "Materialstation" ] ,
"mecairfield" : [ "MEC Airfield" , "Aйrodrome CMO", "Flugplatz (MEC)" ] ,
"mecbase" : [ "MEC Base" , "Base CMO", "Basis (MEC)" ] ,
"mosque" : [ "Mosque", "Mosquйe", "Mosque" ] ,
"mountainlookout" : [ "Mountain Lookout" , "Poste de guet", "Beobachtungsposten auf dem Berg" ] ,
"naturalgasstation" : [ "Natural Gas Station" , "Exploitation de gaz naturel", "Erdgas-Werk" ] ,
"ngasstation" : [ "North Gas Station" , "Station-service Nord", "Nцrdliche Tankstelle" ] ,
"northbeach" : [ "North Beach" , "Plage Nord", "Nцrdlicher Strand" ] ,
"northdocks" : [ "North Docks" , "Quais Nord", "Nцrdliche Docks" ] ,
"northfront" : [ "North Front" , "Front Nord", "Nцrdliche Front" ] ,
"northisland" : [ "North Island" , "Ile septentrionale", "Nцrdliche Insel" ] ,
"northperimeter" : [ "North Perimeter" , "Nord du pйrimиtre", "Randstellung Nord" ] ,
"officebuildings" : [ "Office Buildings" , "Bureaux", "Bьrogebдude" ] ,
"oilcisterns" : [ "Oil Cisterns" , "Citernes d essence", "Цl-Zisternen" ] ,
"oilfieldcheckpoint" : [ "Oilfield Checkpoint" , "Point de contrфle champ pйtrol.", "Checkpoint Цlfeld" ] ,
"oldcity" : [ "Old City" , "Vieille ville", "Alte Stadt" ] ,
"olivefort" : [ "Olive Hill Fortification" , "Fortif. colline des oliviers", "Olivenberg-Befestigung" ] ,
"outpost" : [ "Outpost" , "Avant-poste", "Vorposten" ] ,
"outskirts" : [ "Outskirts" , "Faubourgs", "AuЯenbezirke" ] ,
"powerplant" : [ "Power Plant" , "Centrale йlectrique", "Elektrizitдtswerk" ] ,
"powerstation" : [ "Power Station" , "Centrale йlectrique", "Kraftwerk" ] ,
"reactors" : [ "Reactor Towers" , "Cheminйes", "Reaktoren" ] ,
"refinery" : [ "Refinery" , "Raffinerie", "Raffinerie" ] ,
"refineryentrance" : [ "Refinery Entrance" , "Entrйe de la raffinerie", "Eingang zur Raffinerie" ] ,
"refuellingstation" : [ "Refueling Station" , "Poste de ravitaillement", "Tankstation" ] ,
"riverfort" : [ "River Fortification" , "Fortification fluviale", "Fluss-Befestigung" ] ,
"rivervillage" : [ "River Village" , "Village en bord de riviиre", "Dorf am Fluss" ] ,
"roadblock" : [ "Road Block" , "Barrage routier", "StraЯensperre" ] ,
"roadconstruct" : [ "Road Construction" , "Route en travaux", "StraЯenbaustelle" ] ,
"rockfort" : [ "Rock Fortification" , "Fortification du rocher", "Fels-Befestigung" ] ,
"securityhq" : [ "Security Headquarters" , "QG de la sйcuritй", "Sicherheits-Hauptquartier" ] ,
"sgasstation" : [ "South Gas Station" , "Station-service Sud", "Sьdliche Tankstelle" ] ,
"smallairstrip" : [ "Small Airstrip" , "Petite piste d aviation", "Kleines Flugfeld" ] ,
"southbeach" : [ "South Beach" , "Plage Sud", "Sьdlicher Strand" ] ,
"southblock" : [ "South Block" , "Pвtй de maisons Sud", "Sьdlicher Block" ] ,
"southdocks" : [ "South Docks" , "Quais Sud", "Sьdliche Docks" ] ,
"southfront" : [ "South Front" , "Front Sud", "Sьdliche Front" ] ,
"southisland" : [ "South Island" , "Ile mйridionale", "Sьdliche Insel" ] ,
"southperimeter" : [ "South Perimeter" , "Sud du pйrimиtre", "Randstellung Sьd" ] ,
"square" : [ "Square" , "Place", "Platz" ] ,
"suburb" : [ "Suburb" , "Banlieue", "Vorort" ] ,
"supervisorbase" : [ "Supervisor Base" , "Base de surveillance", "Basis (Aufseher)" ] ,
"surveillancepost" : [ "Surveillance Post" , "Poste de surveillance", "Kontrollposten" ] ,
"temple" : [ "Temple" , "Temple", "Tempel" ] ,
"trainaccident" : [ "Train Accident" , "Accident ferroviaire", "Zugunglьck" ] ,
"tvstation" : [ "TV Station" , "Station TV", "Fernsehsender" ] ,
"uppercamp" : [ "Upper Camp" , "Camp supйrieur", "Oberes Lager" ] ,
"upperdam" : [ "Upper Dam" , "Sommet du barrage", "Oberer Damm" ] ,
"usairfield" : [ "US Airfield" , "Aйrodrome amйricain", "Flugplatz (US)" ] ,
"uscarrier" : [ "US Carrier" , "Porte-avions amйricain", "Flugzeugtrдger (US)" ] ,
"ustown" : [ "US Town" , "Ville amйricaine", "Stadt (US)" ] ,
"village" : [ "Village" , "Village", "Verlassenes Dorf" ] ,
"villagefort" : [ "Village Fortification" , "Fortification du village", "Dorf-Befestigung" ] ,
"vistapoint" : [ "Vista Point" , "Point de vue", "Aussichtspunkt" ] ,
"warehouse" : [ "Warehouse" , "Entrepфt", "Lagerhaus" ] ,
"waterfall" : [ "Dam" , "Barrage", "Damm" ] ,
"westoilfield" : [ "West Oilfield" , "Champ pйtrolifиre Ouest", "Westliches Цlfeld" ] ,
"westperimeter" : [ "West Perimeter" , "Ouest du pйrimиtre", "Randstellung West" ] ,
"wmineentrance" : [ "West Mine Entrance" , "Entrйe Ouest de la mine", "Eingang zur westlichen Mine" ] ,
"woodyard" : [ "Wood Yard" , "Parc а bois", "Holzlagerplatz" ] }

aasL10nTexts = [ [ "Flags must be captured in correct order!", "You have entered the ", " must be captured before the ", "Proceed to the " ] ,
[ "Capturez les points dans le bon ordre!", "Vous кtes au point : ", " : doit кtre capturй avant : ", "Capturez : " ] ,
[ "Die Flaggen mьssen in einer bestimmten Reihenfolge erobert werden!", "Gerade erobert: ", " muss zuerst erobert werden vor ", "Nдchster Eroberungspunkt: " ] ]

aasL10nText = aasL10nTexts[aasL10n]

def aasSetNextCp(aasTeam, aasInit):

aasMaps = { "16" :
{ "dalian_plant" :
[ "cpname_dp_16_powerplant", "cpname_dp_16_mainentrance", "cpname_dp_16_constructionsite", "cpname_dp_16_reactors" ] ,
"daqing_oilfields" :
[ "cpname_do_16_oldcity", "cpname_do_16_oilcisterns", "cpname_do_16_refinery" ] ,
"dragon_valley" :
[ "cpname_dv_16_refinery", "cpname_dv_16_powerstation", "cpname_dv_16_hillvillage" , "cpname_dv_16_woodyard" ] ,
"fushe_pass" :
[ "cpname_gp_16_wmineentrance", "cpname_gp_16_island", "cpname_gp_16_emineentrance" ] ,
"gulf_of_oman" :
[ "cpname_go_16_constructionsite", "cpname_go_16_city", "cpname_go_16_village", "cpname_go_16_beach" ] ,
"kubra_dam" :
[ "cpname_kd_16_powerstation", "cpname_kd_16_lowerdam", "cpname_kd_16_upperdam", "cpname_kd_16_constructionsite" ] ,
"mashtuur_city" :
[ "cpname_mc_16_hotel", "cpname_mc_16_northbridge", "cpname_mc_16_roadconstruct", "cpname_mc_16_southblock" ] ,
"operation_clean_sweep":
[ "cpname_oc_16_smallairstrip", "cpname_oc_16_refuellingstation", "cpname_oc_16_controlcenter", "cpname_oc_16_airfield" ] ,
"sharqi_peninsula" :
[ "cpname_sp_16_hotel", "cpname_sp_16_constructionsite", "cpname_sp_16_officebuildings", "cpname_sp_16_tvstation" ] ,
"songhua_stalemate" :
[ "cpname_ss_16_centralfront", "cpname_ss_16_northisland", "cpname_ss_16_temple", "cpname_ss_16_westperimeter" ] ,
"strike_at_karkand" :
[ "cpname_sk_16_market", "cpname_sk_16_square", "cpname_sk_16_hotel", "cpname_sk_16_gasstation" ] ,
"zatar_wetlands" :
[ "cpname_zw_16_naturalgasstation", "cpname_zw_16_centralisland", "cpname_zw_16_factory" ] } ,
"32" :
{ "dalian_plant" :
[ "cpname_dp_32_airfield", "cpname_dp_32_mainentrance", "cpname_dp_32_maintenancebuilding", "cpname_dp_32_southdocks", "cpname_dp_32_reactors", "cpname_dp_32_uscarrier" ] ,
"daqing_oilfields" :
[ "cpname_do_32_chinesebase", "cpname_do_32_oldcity", "cpname_do_32_powerstation", "cpname_do_32_oilcisterns", "cpname_do_32_gasstation", "cpname_do_32_refinery", "cpname_do_32_ustown"] ,
"dragon_valley" :
[ "cpname_dv_32_refinery", "cpname_dv_32_powerstation", "cpname_dv_32_hillvillage", "cpname_dv_32_woodyard", "cpname_dv_32_islandfarmhouse", "cpname_dv_32_marketplace"] ,
"fushe_pass" :
[ "cpname_gp_32_uppercamp", "cpname_gp_32_bridgecamp", "cpname_gp_32_wmineentrance", "cpname_gp_32_emineentrance", "cpname_gp_32_securityhq", "cpname_gp_32_powerplant" ] ,
"gulf_of_oman" :
[ "cpname_go_32_airfieldbase", "cpname_go_32_constructionsite", "cpname_go_32_hotel", "cpname_go_32_rockfort", "cpname_go_32_olivefort", "cpname_go_32_riverfort", "cpname_go_32_uscarrier" ] ,
"kubra_dam" :
[ "cpname_kd_32_intake", "cpname_kd_32_constructionsite", "cpname_kd_32_powerstation", "cpname_kd_32_lowerdam", "cpname_kd_32_materialstation", "cpname_kd_32_refuellingstation", "cpname_kd_32_bridgebase", "cpname_kd_32_abandonedhuts" ] ,
"mashtuur_city" :
[ "cpname_mc_32_hotel", "cpname_mc_32_powerplant", "cpname_mc_32_mosque", "cpname_mc_32_backyard", "cpname_mc_32_hill" ] ,
"operation_clean_sweep" :
[ "cpname_oc_32_communicationcentral", "cpname_oc_32_abandonedvillage", "cpname_oc_32_smallairstrip", "cpname_oc_32_refuellingstation", "cpname_oc_32_controlcenter", "cpname_oc_32_airfield" ] ,
"sharqi_peninsula" :
[ "cpname_sp_32_beachhouse", "cpname_sp_32_clubhouse", "cpname_sp_32_outskirts", "cpname_sp_32_city_entrance", "cpname_sp_32_surveillancepost", "cpname_sp_32_hotel", "cpname_sp_32_constructionsite", "cpname_sp_32_tvstation" ] ,
"songhua_stalemate" :
[ "cpname_ss_32_chinesehq", "cpname_ss_32_centralfront", "cpname_ss_32_northisland", "cpname_ss_32_southisland", "cpname_ss_32_westperimeter", "cpname_ss_32_fishfactory" ] ,
"strike_at_karkand" :
[ "cpname_sk_32_gatehouse", "cpname_sk_32_trainaccident", "cpname_sk_32_market", "cpname_sk_32_suburb", "cpname_sk_32_square", "cpname_sk_32_hotel", "cpname_sk_32_gasstation" ] ,
"zatar_wetlands" :
[ "cpname_zw_32_mecbase", "cpname_zw_32_farm", "cpname_zw_32_naturalgasstation", "cpname_zw_32_centralisland", "cpname_zw_32_factory", "cpname_zw_32_village", "cpname_zw_32_airfield" ] } ,
"64" :
{ "dalian_plant" :
[ "cpname_dp_64_airfield", "cpname_dp_64_mainentrance", "cpname_dp_64_maintenancebuilding", "cpname_dp_64_southdocks", "cpname_dp_64_reactors", "cpname_dp_64_warehouse", "cpname_dp_64_northdocks", "cpname_dp_64_uscarrier" ] ,
"daqing_oilfields" :
[ "cpname_do_64_chinesebase", "cpname_do_64_powerstation", "cpname_do_64_westoilfield", "cpname_do_64_refinery", "cpname_do_64_oilcisterns", "cpname_do_64_oldcity", "cpname_do_64_eastoilfield", "cpname_do_64_gasstation", "cpname_do_64_ustown" ] ,
"dragon_valley" :
[ "cpname_dv_64_refinery", "cpname_dv_64_powerstation", "cpname_dv_64_hillvillage", "cpname_dv_64_woodyard", "cpname_dv_64_islandfarmhouse", "cpname_dv_64_marketplace", "cpname_dv_64_temple", "cpname_dv_64_rivervillage", "cpname_dv_64_vistapoint", "cpname_dv_64_docks", "cpname_dv_64_uscarrier" ] ,
"fushe_pass" :
[ "cpname_gp_64_chineseairfield", "cpname_gp_64_canyonguardpost", "cpname_gp_64_uppercamp", "cpname_gp_64_bridgecamp", "cpname_gp_64_wmineentrance", "cpname_gp_64_securityhq", "cpname_gp_64_powerplant", "cpname_gp_64_emineentrance", "cpname_gp_64_mountainlookout", "cpname_gp_64_usairfield" ] ,
"gulf_of_oman" :
[ "cpname_go_64_airfieldbase", "cpname_go_64_village", "cpname_go_64_constructionsite", "cpname_go_64_hotel", "cpname_go_64_villagefort", "cpname_go_64_rockfort", "cpname_go_64_olivefort", "cpname_go_64_riverfort", "cpname_go_64_uscarrier" ] ,
"kubra_dam" :
[ "cpname_kd_64_intake", "cpname_kd_64_constructionsite", "cpname_kd_64_powerstation", "cpname_kd_64_lowerdam", "cpname_kd_32_refuellingstation", "cpname_kd_64_materialstation", "cpname_kd_64_supervisorbase", "cpname_kd_64_bridgebase", "cpname_kd_64_abandonedhuts" ] ,
"mashtuur_city" :
[ "cpname_mc_64_ngasstation", "cpname_mc_64_hotel", "cpname_mc_64_powerplant", "cpname_mc_64_mosque", "cpname_mc_64_backyard", "cpname_mc_64_hill", "cpname_mc_64_sgasstation" ] ,
"operation_clean_sweep" :
[ "cpname_oc_64_mecairfield", "cpname_oc_64_harbor", "cpname_oc_64_communicationcentral", "cpname_oc_64_abandonedvillage", "cpname_oc_64_smallairstrip", "cpname_oc_64_refuellingstation", "cpname_oc_64_controlcenter", "cpname_oc_64_airfield" ] ,
"sharqi_peninsula" :
[ "cpname_sp_64_beachhouse", "cpname_sp_64_clubhouse", "cpname_sp_64_outskirts", "cpname_sp_64_city_entrance", "cpname_sp_64_surveillancepost", "cpname_sp_64_alley", "cpname_sp_64_constructionsite", "cpname_sp_64_hotel", "cpname_sp_64_tvstation" ] ,
"songhua_stalemate" :
[ "cpname_ss_64_chinesehq", "cpname_ss_64_centralfront", "cpname_ss_64_southfront", "cpname_ss_64_southisland", "cpname_ss_64_northisland", "cpname_ss_64_westperimeter", "cpname_ss_64_fishfactory", "cpname_ss_64_northperimeter" ] ,
"strike_at_karkand" :
[ "cpname_sk_64_factory", "cpname_sk_64_warehouse", "cpname_sk_64_cementfactory", "cpname_sk_64_gatehouse", "cpname_sk_64_trainaccident", "cpname_sk_64_suburb", "cpname_sk_64_square", "cpname_sk_64_hotel", "cpname_sk_64_gasstation" ] ,
"zatar_wetlands" :
[ "cpname_zw_64_mecbase", "cpname_zw_64_farm", "cpname_zw_64_naturalgasstation", "cpname_zw_64_centralisland", "cpname_zw_64_factory", "cpname_zw_64_village", "cpname_zw_64_airfield", "cpname_zw_64_beach", "cpname_zw_64_uscarrier" ] } }


aasCps = False
for obj in bf2.objectManager.getObjectsOfType('dice.hfe.world.ObjectTemplate.ControlPoint'):
obj = obj.templateName
aasMapSize = obj[10:12]
break
aasMapsOfSize = aasMaps[aasMapSize]
aasCps = aasMapsOfSize[bf2.gameLogic.getMapName()]

aasTeam2 = 2
if aasCps:
if aasTeam == 2:
aasTeam2 = 1
aasCps.reverse()
for aasCnt in range(0,len(aasCps)):
aasNumOfCps = 0
aasTeamCps = 0
for obj in bf2.objectManager.getObjectsOfType('dice.hfe.world.ObjectTemplate.ControlPoint'):
aasNumOfCps += 1
if obj.cp_getParam('team') == aasTeam:
aasTeamCps += 1
if obj.templateName.lower() == aasCps[aasCnt]:
aasCpId = obj
elif obj.templateName.lower() == aasCps[aasCnt-1]:
aasPrevCpId = obj
if aasInit:
if aasTeamCps < int(aasNumOfCps / 2):
aasCpId.cp_setParam('flag', aasTeam)
aasCpId.cp_setParam('team', aasTeam)
aasCpId.cp_setParam('takeOverChangePerSecond', 100)
elif aasCpId.cp_getParam('team') != aasTeam:
if aasCnt == 0 or aasPrevCpId.cp_getParam('team') == aasTeam:
aasNextCp[aasTeam] = aasCps[aasCnt]
break

def aasCpName(aasCp):
aasCp = aasCp.lower()
aasCp = aasL10nCp[aasCp[13:]]
aasCp = aasCp[aasL10n]
return aasCp


def init():
# events hook
host.registerGameStatusHandler(onGameStatusChanged)
if host.sgl_getIsAIGame() == 1:
host.sh_setEnableCommander(aasCommander)
else:
host.sh_setEnableCommander(aasCommander)

host.registerHandler('TimeLimitReached', onTimeLimitReached, 1)

if g_debug: print "gpm_cq.py initialized"



def deinit():
bf2.triggerManager.destroyAllTriggers()
global g_controlPoints
g_controlPoints = []
host.unregisterGameStatusHandler(onGameStatusChanged)
if g_debug: print "gpm_cq.py uninitialized"



def onGameStatusChanged(status):

global g_controlPoints
if status == bf2.GameStatus.Playing:

if aasCpBalance:
aasSetNextCp(1, 1)
aasSetNextCp(2, 1)

# add control point triggers
g_controlPoints = bf2.objectManager.getObjectsOfType('dice.hfe.world.ObjectTemplate.ControlPoint')
for obj in g_controlPoints:
radius = float(obj.getTemplateProperty('radius'))
isHemi = int(obj.cp_getParam('isHemisphere'))

if aasRadius > 0:
aasRadiusFactor = float(host.ss_getParam('maxPlayers')) / aasRadius
if aasRadiusFactor > 1:
radius = round(radius * aasRadiusFactor)

if isHemi != 0:
id = bf2.triggerManager.createHemiSphericalTrigger(obj, onCPTrigger, '<<PCO>>', radius, (1, 2, 3))
else:
id = bf2.triggerManager.createRadiusTrigger(obj, onCPTrigger, '<<PCO>>', radius, (1, 2, 3))
obj.triggerId = id
obj.lastAttackingTeam = 0
if obj.cp_getParam('team') > 0:
obj.flagPosition = Top
else:
obj.flagPosition = Bottom

host.registerHandler('ControlPointChangedOwner', onCPStatusChange)

# setup ticket system
ticketsTeam1 = calcStartTickets(bf2.gameLogic.getDefaultTickets(1))
ticketsTeam2 = calcStartTickets(bf2.gameLogic.getDefaultTickets(2))

bf2.gameLogic.setTickets(1, ticketsTeam1)
bf2.gameLogic.setTickets(2, ticketsTeam2)

bf2.gameLogic.setTicketState(1, 0)
bf2.gameLogic.setTicketState(2, 0)

bf2.gameLogic.setTicketLimit(1, 1, 0)
bf2.gameLogic.setTicketLimit(2, 1, 0)
bf2.gameLogic.setTicketLimit(1, 2, 10)
bf2.gameLogic.setTicketLimit(2, 2, 10)
bf2.gameLogic.setTicketLimit(1, 3, int(ticketsTeam1*0.1))
bf2.gameLogic.setTicketLimit(2, 3, int(ticketsTeam2*0.1))
bf2.gameLogic.setTicketLimit(1, 4, int(ticketsTeam1*0.2))
bf2.gameLogic.setTicketLimit(2, 4, int(ticketsTeam1*0.2))

host.registerHandler('TicketLimitReached', onTicketLimitReached)
updateTicketLoss()

# player events
host.registerHandler('PlayerDeath', onPlayerDeathCQ)
host.registerHandler('PlayerKilled', onPlayerKilledCQ)
host.registerHandler('PlayerRevived', onPlayerRevived)
host.registerHandler('PlayerSpawn', onPlayerSpawn)
host.registerHandler('EnterVehicle', onEnterVehicle)
host.registerHandler('ExitVehicle', onExitVehicle)

if g_debug: print "Conquest gamemode initialized."
else:
bf2.triggerManager.destroyAllTriggers()
g_controlPoints = []



def calcStartTickets(mapDefaultTickets):
return int(mapDefaultTickets * (bf2.serverSettings.getTicketRatio() / 100.0))



def onTimeLimitReached(value):
team1tickets = bf2.gameLogic.getTickets(1)
team2tickets = bf2.gameLogic.getTickets(2)

winner = 0
victoryType = 0
if team1tickets > team2tickets:
winner = 1
victoryType = 3
elif team2tickets > team1tickets:
winner = 2
victoryType = 3


host.sgl_endGame(winner, victoryType)



# update ticket system
def updateTicketLoss():
areaValueTeam1 = 0
areaValueTeam2 = 0
totalAreaValue = 0
numCpsTeam0 = 0
numCpsTeam1 = 0
numCpsTeam2 = 0

# calculate control point area value for each team
for obj in g_controlPoints:
team = obj.cp_getParam('team')
if team == 1:
areaValueTeam1 += obj.cp_getParam('areaValue', team)
totalAreaValue += areaValueTeam1
numCpsTeam1 += 1
elif team == 2:
areaValueTeam2 += obj.cp_getParam('areaValue', team)
totalAreaValue += areaValueTeam2
numCpsTeam2 += 1
else:
numCpsTeam0 += 1
totalAreaValue += 0

# check if a team has no control points
if numCpsTeam1 == 0 or numCpsTeam2 == 0:
if numCpsTeam1 == 0:
losingTeam = 1
winningTeam = 2
else:
losingTeam = 2
winningTeam = 1

# check if there is anyone alive
foundLivingPlayer = False
for p in bf2.playerManager.getPlayers():
if p.getTeam() == losingTeam and p.isAlive():
foundLivingPlayer = True
break

if not foundLivingPlayer:

# drop tickets
ticketLossPerSecond = bf2.gameLogic.getDefaultTicketLossAtEndPerMin()
bf2.gameLogic.setTicketChangePerSecond(losingTeam, -ticketLossPerSecond)
bf2.gameLogic.setTicketChangePerSecond(winningTeam, 0)

return


# update ticket loss
team1AreaOverweight = areaValueTeam1 - areaValueTeam2
percentualOverweight = 1.0
if totalAreaValue != 0:
percentualOverweight = abs(team1AreaOverweight / totalAreaValue)

ticketLossPerSecTeam1 = calcTicketLossForTeam(1, areaValueTeam2, -team1AreaOverweight)
ticketLossPerSecTeam2 = calcTicketLossForTeam(2, areaValueTeam1, team1AreaOverweight)
bf2.gameLogic.setTicketChangePerSecond(1, -ticketLossPerSecTeam1)
bf2.gameLogic.setTicketChangePerSecond(2, -ticketLossPerSecTeam2)



# actual ticket loss calculation function
def calcTicketLossForTeam(team, otherTeamAreaValue, otherTeamAreaOverweight):
if otherTeamAreaValue >= 100 and otherTeamAreaOverweight > 0:
ticketLossPerSecond = (bf2.gameLogic.getDefaultTicketLossPerMin(team) / 60.0) * (otherTeamAreaOverweight / 100.0)
return ticketLossPerSecond
else:
return 0



DOWNWARDS = -1
UPWARDS = 1

# called when tickets reach a predetermined limit (negativ value means that the tickets have become less than the limit)
def onTicketLimitReached(team, limitId):
if (limitId == -1):
if (team == 1):
winner = 2

elif (team == 2):
winner = 1

bf2.gameLogic.setTicketState(1, 0)
bf2.gameLogic.setTicketState(2, 0)

host.sgl_endGame(winner, 3)

# update ticket state
else:
updateTicketWarning(team, limitId)



# called when the ticket state should be updated (for triggering messages and sounds based on tickets left)
def updateTicketWarning(team, limitId):

oldTicketState = bf2.gameLogic.getTicketState(team)
newTicketState = 0

if (oldTicketState >= 10):
newTicketState = 10

if (limitId == -2):
newTicketState = 10

elif (limitId == 2):
newTicketState = 0

elif (limitId == -3):
newTicketState += 2

elif (limitId == -4):
newTicketState += 1

if (oldTicketState != newTicketState):
bf2.gameLogic.setTicketState(team, newTicketState)



# called when someone enters or exits cp radius
def onCPTrigger(triggerId, cp, vehicle, enter, userData):
if not cp.isValid(): return

if vehicle and vehicle.getParent(): return

# can this cp be captured at all?
if cp.cp_getParam('unableToChangeTeam') != 0:
return

playersInVehicle = None
if vehicle:
playersInVehicle = vehicle.getOccupyingPlayers()

if enter:
for p in playersInVehicle:
cp = getOccupyingCP(p)
if cp != None:
if not p.getIsInsideCP():
if g_debug: print "Resetting enterPctAt for player ", p.getName()
p.enterCpAt = host.timer_getWallTime()

if vehicle:
for p in playersInVehicle:
# only count first player in a vehicle
if p == playersInVehicle[0]:
print p.index, " is in radius. v=", vehicle.templateName
p.setIsInsideCP(enter)
else:
p.setIsInsideCP(0)
if enter == 1:
bf2.gameLogic.sendHudEvent(p, 66, 49) #66 = HEEnableHelpMessage, 49 = VHMExitToCaptureFlag;

# count people in radius
team1Occupants = 0
team2Occupants = 0

pcos = bf2.triggerManager.getObjects(cp.triggerId)
for o in pcos:
if not o: continue # you can get None in the result tuple when the host can't figure out what object left the trigger
if o.getParent(): continue # getOccupyingPlayers returns all players downwards in the hierarchy, so dont count them twice
occupyingPlayers = o.getOccupyingPlayers()
for p in occupyingPlayers:

# only count first player in a vehicle
if p != occupyingPlayers[0]:
continue

if p.isAlive() and not p.isManDown():

if not p.killed:
if p.getTeam() == 1:
team1Occupants += 1
elif p.getTeam() == 2:
team2Occupants += 1


# determine who is taking control
team1OverWeight = team1Occupants - team2Occupants
attackOverWeight = 0

if team1OverWeight > 0:
attackingTeam = 1
elif team1OverWeight < 0:
attackingTeam = 2
else:
attackingTeam = 0


if team1Occupants == 0 and team2Occupants == 0:

# nobody here, slowly go back to owning team
if cp.cp_getParam('team') == 0:
attackOverWeight = -0.5
else:
attackOverWeight = 0.5

timeToChangeControl = cp.cp_getParam('timeToLoseControl')

else:

aasTeam = attackingTeam

aasSetNextCp(aasTeam, 0)

if cp.cp_getParam('team') != aasTeam:
if aasNextCp[aasTeam] != cp.templateName.lower():
aasMsg = 'game.sayTeam ' + str(aasTeam) + ' "' + aasTip + aasCpName(aasNextCp[aasTeam]) + aasL10nText[2] + aasCpName(cp.templateName) + aasTip + '"'
if aasMsg != aasLast[aasTeam]:
aasLast[aasTeam] = aasMsg
host.rcon_invoke(aasMsg)
return

# raise flag if already ours, or at bottom and neutral. Otherwise lower first.
if cp.cp_getParam('flag') == attackingTeam or (cp.flagPosition == Bottom and cp.cp_getParam('team') == 0):

# our flag, raise
attackOverWeight = abs(team1OverWeight)
timeToChangeControl = cp.cp_getParam('timeToGetControl')
else:

# other team raised flag, lower first
attackOverWeight = - abs(team1OverWeight)
timeToChangeControl = cp.cp_getParam('timeToLoseControl')


if cp.cp_getParam('onlyTakeableByTeam') != 0 and cp.cp_getParam('onlyTakeableByTeam') != attackingTeam:
return


# flag can only be changed when at bottom
if cp.flagPosition == Bottom:
cp.cp_setParam('flag', attackingTeam)


# calculate flag raising/lowering speed
if timeToChangeControl > 0:
takeOverChangePerSecond = 1.0 * attackOverWeight / timeToChangeControl
else:
takeOverChangePerSecond = 0.0

if (cp.flagPosition == Top and takeOverChangePerSecond > 0) or (cp.flagPosition == Bottom and takeOverChangePerSecond < 0):
takeOverChangePerSecond = 0.0

if abs(takeOverChangePerSecond) > 0:
cp.flagPosition = Middle

cp.cp_setParam('takeOverChangePerSecond', takeOverChangePerSecond)



# called when a control point flag reached top or bottom
def onCPStatusChange(cp, top):

playerId = -1
takeoverType = -1
newTeam = -1
scoringTeam = -1

if top: cp.flagPosition = Top
else: cp.flagPosition = Bottom

# determine capture / neutralize / defend
if cp.cp_getParam('team') != 0:

if top:
# regained flag, do nothing
pass

else:
# neutralize
newTeam = 0
if cp.cp_getParam('team') == 1:
scoringTeam = 2
else:
scoringTeam = 1

takeoverType = TAKEOVERTYPE_NEUTRALIZE

else:

if top:
# capture
newTeam = cp.cp_getParam('flag')
scoringTeam = newTeam
takeoverType = TAKEOVERTYPE_CAPTURE

else:
# hit bottom, but still neutral
pass


# scoring
if takeoverType > 0:
pcos = bf2.triggerManager.getObjects(cp.triggerId)

# count number of players
scoringPlayers = []
firstPlayers = []
for o in pcos:
if o.getParent(): continue

occupyingPlayers = o.getOccupyingPlayers()
for p in occupyingPlayers:

# only count first player in a vehicle
if p != occupyingPlayers[0]:
continue

if p.isAlive() and not p.isManDown() and p.getTeam() == scoringTeam:
if len(firstPlayers) == 0 or p.enterCpAt < firstPlayers[0].enterCpAt:
firstPlayers = [p]
elif p.enterCpAt == firstPlayers[0].enterCpAt:
firstPlayers += [p]

if not p in scoringPlayers:
scoringPlayers += [p]

# deal score
for p in scoringPlayers:
oldScore = p.score.score;
if takeoverType == TAKEOVERTYPE_CAPTURE:
if p in firstPlayers:
p.score.cpCaptures += 1
addScore(p, SCORE_CAPTURE, RPL)
bf2.gameLogic.sendGameEvent(p, 12, 0) #12 = Conquest, 0 = Capture
playerId = p.index
else:
p.score.cpAssists += 1
addScore(p, SCORE_CAPTUREASSIST, RPL)
bf2.gameLogic.sendGameEvent(p, 12, 2) #12 = Conquest, 2 = Assist


elif takeoverType == TAKEOVERTYPE_NEUTRALIZE:
if p in firstPlayers:
p.score.cpNeutralizes += 1
addScore(p, SCORE_NEUTRALIZE, RPL)
bf2.gameLogic.sendGameEvent(p, 12, 3) #12 = Conquest, 3 = Neutralize
else:
p.score.cpNeutralizeAssists += 1
addScore(p, SCORE_NEUTRALIZEASSIST, RPL)
bf2.gameLogic.sendGameEvent(p, 12, 4) #12 = Conquest, 4 = Neutralize assist



# immediate ticket loss for opposite team
enemyTicketLossInstant = cp.cp_getParam('enemyTicketLossWhenCaptured')
if enemyTicketLossInstant > 0 and newTeam > 0:

if newTeam == 1:
punishedTeam = 2
elif newTeam == 2:
punishedTeam = 1

tickets = bf2.gameLogic.getTickets(punishedTeam)
tickets -= enemyTicketLossInstant
bf2.gameLogic.setTickets(punishedTeam, tickets)


# update control point
cp.cp_setParam('playerId', playerId) #always set player first
if newTeam != -1 and cp.cp_getParam('team') != newTeam:
cp.cp_setParam('team', newTeam)
onCPTrigger(cp.triggerId, cp, 0, 0, 0)
updateTicketLoss()

for aasTeam in [ 1, 2 ]:
aasSetNextCp(aasTeam, 0)
aasMsg = 'game.sayTeam ' + str(aasTeam) + ' "' + aasTip + aasL10nText[3] + aasCpName(aasNextCp[aasTeam]) + aasTip + '"'
if aasMsg != aasLast[aasTeam]:
aasLast[aasTeam] = aasMsg
host.rcon_invoke(aasMsg)


def onPlayerDeathCQ(victim, vehicle):

# punish team with one ticket
if victim != None:
team = victim.getTeam()
teamTickets = bf2.gameLogic.getTickets(team)
teamTickets -= 1
bf2.gameLogic.setTickets(team, teamTickets)

# check if it was the last player
foundLivingPlayer = False
for p in bf2.playerManager.getPlayers():
if p != victim and p.getTeam() == victim.getTeam() and p.isAlive():
foundLivingPlayer = True

if not foundLivingPlayer:
updateTicketLoss()



def onPlayerKilledCQ(victim, attacker, weapon, assists, object):
if not victim:
return

victim.killed = True

# update flag takeover status if victim was in a CP radius
cp = getOccupyingCP(victim)
if cp != None:
onCPTrigger(-1, cp, victim.getVehicle(), False, None)

# give defend score if killing enemy within cp radius
if attacker != None and attacker.getTeam() != victim.getTeam()\
and cp.cp_getParam('unableToChangeTeam') == 0 and cp.cp_getParam('onlyTakeableByTeam') == 0:

if cp != None and cp.cp_getParam('team') == attacker.getTeam():
attacker.score.cpDefends += 1
addScore(attacker, SCORE_DEFEND, RPL)
bf2.gameLogic.sendGameEvent(attacker, 12, 1) #12 = Conquest, 1 = Defend



def onPlayerRevived(victim, attacker):

# update flag takeover status if victim was in a CP radius
victim.killed = False

cp = getOccupyingCP(victim)
if cp != None:
onCPTrigger(-1, cp, victim.getVehicle(), True, None)



def onPlayerSpawn(player, soldier):
player.killed = False

aasTeam = player.getTeam()

aasMsg = 'game.sayTeam ' + str(aasTeam) + ' "' + aasTip + aasL10nText[0] + aasTip + '"'
if aasMsg != aasLast[aasTeam]:
aasLast[aasTeam] = aasMsg
host.rcon_invoke(aasMsg)

aasSetNextCp(aasTeam, 0)

aasMsg = 'game.sayTeam ' + str(aasTeam) + ' "' + aasTip + aasL10nText[3] + aasCpName(aasNextCp[aasTeam]) + aasTip + '"'
if aasMsg != aasLast[aasTeam]:
aasLast[aasTeam] = aasMsg
host.rcon_invoke(aasMsg)


def onEnterVehicle(player, vehicle, freeSoldier = False):
updateCaptureStatus(vehicle)


def onExitVehicle(player, vehicle):

# update flag takeover status if player in a CP radius

print "Player exiting ", player.getName()
cp = getOccupyingCP(player)

# can this cp be captured at all?
player.setIsInsideCP(cp != None and cp.cp_getParam('unableToChangeTeam') == 0)

updateCaptureStatus(vehicle)


#Update cp capture status on players in vehicle
def updateCaptureStatus(vehicle):

rootVehicle = bf2.objectManager.getRootParent(vehicle)
playersInVehicle = rootVehicle.getOccupyingPlayers()

# set the player in the topmost pco as inside - others outside
for p in playersInVehicle:
print "Players in vehicle ", p.getName()
cp = getOccupyingCP(p)
p.setIsInsideCP(cp != None and cp.cp_getParam('unableToChangeTeam') == 0 and p == playersInVehicle[0])


# find cp that player is occupying, if any
def getOccupyingCP(player):
vehicle = player.getVehicle()
playerPos = vehicle.getPosition()

# find closest CP
closestCP = None
if len(g_controlPoints) == 0: return None
for obj in g_controlPoints:
distanceTo = getVectorDistance(playerPos, obj.getPosition())
if closestCP == None or distanceTo < closestCPdist:
closestCP = obj
closestCPdist = distanceTo

# is the player in radius?
pcos = bf2.triggerManager.getObjects(closestCP.triggerId)
for o in pcos:
if o == player.getDefaultVehicle():
# Player is DEFAULT vehicle - this is needed when called from onEnterVehicle
return closestCP
else:
for p in o.getOccupyingPlayers():
if p == player:
return closestCP

return None



# get distance between two positions
def getVectorDistance(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])

Автор: REW.BMW 26.7.2007, 17:43

TERROR_rus, твой "файл" работать не будет - потеряна табуляция.

ROOL, TERROR_rus, если еще актуально, то http://rew.by/bf2/gpm_cq.py моя обновленная версия. Поддерживается Road to Jalalabad и Wake Island 2007.

To ALL.
Вкратце, что нужно, чтобы добавить свои новые карты:
1. Вписать названия карт и точек в массив aasMaps, причем названия точек (брать из server.zip/GameModes/gpm_cq/XX/GamePlayObjects.con - внизу, перед CombatAreaManager) должны быть в определенном порядке: от неамериканцев до американцев в порядке их захватывания.
2. В строке 358 (я беру http://rew.by/bf2/gpm_cq.py файл) скрипт определяет размер карты (16/32/64) путем просмотра значения позиции 10:12. Для новых карт пришлось добавить 2 проверки (строки 359 и 361). Если в вашей карте названия точек не содержать размера карты, то включить AAS режим можно одним способом: вручную отредактировать все файлы внутри server.zip.
3. В строке 395 задается значения "красивого" названия точек (массив aasL10nCp), поэтому в этот массив (aasL10nCp) в качестве первого параметра надо добавить название точки с 14 символа. Именно поэтому вы можете увидеть точки "el_0". smile.gif

Вроде все...

Автор: niknk 27.7.2007, 16:08

REW.BMW
твой файл тоже не работает; после выбора точки респауна ничего не происходит, респауна нет, билетов у обеих команд - 0.
Проверял на Dalian_plant gpm_cq 64 и на Dalian_plant gpm_cq 32.

Автор: TERROR_rus 28.7.2007, 10:28

REW.BMW, вот красавчег :+: :+: :+: ,всё отлично завелось и Вейк и ДжаЛ(Далай Плант тоже работает smile.gif )Огромное тебе спасибо комрад... ;) Жаль постов не хватает,чтоб дать тебе + в репу :( ,выручил ты нас :D

Автор: niknk 28.7.2007, 10:49

Нашёл такой же скрипт для "Special Forces", всё замечательно работает совместно с "modmanager"ом.
Подскажите, плз, возможную причину, почему у меня с вашим скриптом BF2 не стартует (проверял на стандартных картах)?

о сервере:
OS WinXP
BF2 v1.41 + AF + EF
bf2statistics
"modmanager" ("mm_tk_punish", "mm_mapautosizer", "mm_kicker" , "mm_antibaserape", "mm_announcer", "mm_bf2cc", "mm_autobalance")

Автор: niknk 28.7.2007, 15:01

Вопрос снят, разобрался

Автор: TDA 28.7.2007, 16:57

Цитата(niknk @ Суббота, 28 Июля 2007, 10:49:18) *
Нашёл такой же скрипт для "Special Forces", всё замечательно работает совместно с "modmanager"ом.


скрипт выложи пожалуйста..

Автор: niknk 30.7.2007, 4:47

Цитата(TDA @ Суббота, 28 Июля 2007, 20:57:45) *
скрипт выложи пожалуйста..


http://dl4.rapidshare.ru/357074/83413/aas_bf2_special_forces_1.0.zip

Автор: mazut 31.7.2007, 1:49

кстати! с этим модом ни у кого проблем с администрировнием не возникает???
если нет подскажите как сделать автобаланс и смену сторон после раунда

Автор: niknk 31.7.2007, 6:15

Цитата(mazut @ Вторник, 31 Июля 2007, 05:49:53) *
кстати! с этим модом ни у кого проблем с администрировнием не возникает???
если нет подскажите как сделать автобаланс и смену сторон после раунда

AAS на администрирование, автобаланс и смену сторон ни как не влияет.

Автор: niknk 31.7.2007, 6:47

REW.BMW
По работе скрипта.
У меня он ни в какую не хотел работать, до тех пор, пока (каково было моё удивление после нескольких часов поиска причины eek.gif ) не прописал в маплисте все карты только в нижнем ригистре ( eek.gif скрипт чувствителен к ригистру eek.gif ).

По добавлению новых карт.
Попробывал добавить карту Strait_of_Hormuz, изменил в server.zip названия точек (в них не было размера), добавил всё что нужно в массивы aasL10nCp и aasMaps - результат отрицательный (делал всё по твоей инструкции). Во-первых игра не стартует, во-вторых, в игре при просмотре карты названия точек остались преждние, хотя в массиве aasL10nCp я им прописал "красивые" названия.
В чём может быть проблема?

Автор: mazut 1.8.2007, 17:43


у меня такая ошибка вылезает, делал всё по инструкции,
карта highway tampa
названия там содержат размер карты на техже местах что и стандартные, подскажите что делать плиз!!!

Автор: niknk 2.8.2007, 4:27

"failed to initialize gamemode"
ты во время добавления новой карты нарушил код скрипта, у тебя серв его (скрипт) не воспринимает, а где ты его нарушил, это только тебе может быть известно.

У кого-нить есть положительный опыт добавления новых карт (с редактированием server.zip самой карты)? Отпишитесь плз.

Автор: mazut 2.8.2007, 9:43

Цитата(niknk @ Четверг, 2 Августа 2007, 04:27:43) *
"failed to initialize gamemode"
ты во время добавления новой карты нарушил код скрипта, у тебя серв его (скрипт) не воспринимает, а где ты его нарушил, это только тебе может быть известно.

У кого-нить есть положительный опыт добавления новых карт (с редактированием server.zip самой карты)? Отпишитесь плз.

это разобрался, надо ведь в алфавитном порядке карты ставить, другая проблема, теперь в том чтобы точки както распределить между командами, ато получаеццо что заходиш а половина точек ужа захвачена, причём както даже не по порядку :(
осюда вопрос, как обозначать принадлежность точки к команде в начале раунда???

Автор: niknk 2.8.2007, 13:24

Цитата
названия точек (брать из server.zip/GameModes/gpm_cq/XX/GamePlayObjects.con - внизу, перед CombatAreaManager) должны быть в определенном порядке: от неамериканцев до американцев в порядке их захватывания

Автор: mazut 2.8.2007, 20:25

ну так и есть!!! я так и делал!
впринципи там веть даже не важно главное чтоб главная начальная mec была первой а америкосовская главная начальная последней.....

Автор: niknk 6.8.2007, 11:09

У кого-нить есть положительный опыт добавления новых карт (с редактированием server.zip самой карты)? Отпишитесь плз.

Автор: REW.BMW 21.8.2007, 19:18

niknk, IMHO для Strait_of_Hormuz не нужен AAS мод, но если просто карта нужна в ротации - вышли мне на rewa sobaka mail ru твой исправленный GamePlayObjects.con - я посмотрю где собака порылась.

mazut, то должен сохранять табуляцию в скрипте. Т.е. если перед конструкцией if...else стоит 2 таба, то внутри конструкции код должен идти уже после 3-х табов.

Автор: niknk 24.8.2007, 8:23

REW.BMW
Отправил тебе на мыло измененный server.zip

Автор: niknk 29.8.2007, 16:18

REW.BMW
Всё, разобрался, была банальная ошибка с табуляцией. Ещё раз сенкс за инструкцию к скрипту.

Автор: Unicornio 22.9.2007, 19:09

а для режима coop такой скрипт существует ?

Автор: TDA 23.9.2007, 7:12

Unicornio хм - ты это как представляешь привитие ботам сиго режима??

Автор: mazut 5.10.2007, 23:01

вобщем такая проблема, занёс карту правленую, указал порядок захвата точек, проверяю - точки захватывает, всё нормально, только порядок почемуто другой....помогите, в чём может быть проблема???

Автор: niknk 7.10.2007, 14:46

Цитата(mazut @ Суббота, 6 Октября 2007, 03:01:31) *
вобщем такая проблема, занёс карту правленую, указал порядок захвата точек, проверяю - точки захватывает, всё нормально, только порядок почемуто другой....помогите, в чём может быть проблема???

Случаем не о карте Strike_at_Karkand_2 идёт речь? Если так, то в ней изначально перепутаны команды (т.е. Team 1 "US", Team 2 "MEC", а должно быть наоборот). В таком случае в скрипте точки нужно прописывать в обратной последовательности, т.е. не от "MEC" к "US", а от "US" к "MEC".

Автор: mazut 7.10.2007, 22:52

Цитата(niknk @ Воскресенье, 7 Октября 2007, 14:46:33) *
Цитата(mazut @ Суббота, 6 Октября 2007, 03:01:31) *

вобщем такая проблема, занёс карту правленую, указал порядок захвата точек, проверяю - точки захватывает, всё нормально, только порядок почемуто другой....помогите, в чём может быть проблема???

Случаем не о карте Strike_at_Karkand_2 идёт речь? Если так, то в ней изначально перепутаны команды (т.е. Team 1 "US", Team 2 "MEC", а должно быть наоборот). В таком случае в скрипте точки нужно прописывать в обратной последовательности, т.е. не от "MEC" к "US", а от "US" к "MEC".

случайно о ней=))) спасибо попробую=))

Автор: mazut 8.10.2007, 18:35

ещё один вопрос, где что надо исправить в скриптах карты чтобы название точки показывалось не cpname_cr_32_ch3_2 а например china_base???

Автор: Unicornio 11.10.2007, 20:35

поделитесь плиз AAS скриптами под неродные карты

Автор: mazut 12.10.2007, 14:08

я переделал 4 карты strike at karkend 2, mahoni island, corse of the river и highway tampa
из них первая и последняя проще ксего т.к. в сервер.зип->objects.con есть размер карты
кстати там пораньше написано как деалть самому, советую попробовать....
могу выложить собсно....

Автор: Aladar 23.10.2007, 14:58

народ кто нибуть пробовал написать подобный скрипт под карты БФ2+СФ+ЕФ+АФ?

niknk будь добр обнови ссылку на АСС для СФ, иль народ успевший скачать его поделитесь пожалуйста.

Автор: Aladar 26.10.2007, 21:25

Народ возможно ли через аас изменить радиус захвата точки, и если можно, то где?

Автор: REW.BMW 28.10.2007, 4:37

Цитата(Aladar @ Пятница, 26 Октября 2007, 20:25:11) *
Народ возможно ли через аас изменить радиус захвата точки, и если можно, то где?

Здесь:
Код
aasRadius = ...

Автор: Aladar 28.10.2007, 5:25

REW.BMW премного благодарен, а то флаги можно захватить за километр, если не два...

Автор: tony 10.11.2007, 22:16

У каго нибудь есть готовые карты

Автор: mazut 11.11.2007, 11:43

отписывал выше......

Автор: tony 26.2.2008, 20:15

Цитата(mazut @ Воскресенье, 11 Ноября 2007, 11:43:08) *
отписывал выше......


mazut ты можешь прислать мне на емейл пару карт

Автор: orionWP 27.2.2008, 10:14

Цитата(mazut @ Понедельник, 8 Октября 2007, 18:35:57) *
ещё один вопрос, где что надо исправить в скриптах карты чтобы название точки показывалось не cpname_cr_32_ch3_2 а например china_base???

Покопайся в файликах папки /mods/bf2/Localization/English. Там можно это исправить и не только это, а еще кучу всего. yes.gif

Автор: mazut 3.4.2008, 22:27

Цитата(orionWP @ Среда, 27 Февраля 2008, 10:14:55) *
Цитата(mazut @ Понедельник, 8 Октября 2007, 18:35:57) *

ещё один вопрос, где что надо исправить в скриптах карты чтобы название точки показывалось не cpname_cr_32_ch3_2 а например china_base???

Покопайся в файликах папки /mods/bf2/Localization/English. Там можно это исправить и не только это, а еще кучу всего. yes.gif

хы, я думал в настройках карты все делаО_о, просто ведь когда карту правиш до и после разные названия=), туды лазил, думал можно там сделать русский чат, только чат, но так и не допёр как, а полный русский перевед меня не оч радует=)

Автор: Ganny 7.5.2008, 12:10

REW.BMW честь тебе и слава!

Автор: Ganny 12.5.2008, 14:28

Народ чет автобаланс перестал работать кто знает в чем проблема?

Автор: Ganny 2.7.2008, 7:59

Нароооод!

Автор: madb 10.12.2008, 16:44

вот в PoE2 бьоты сами всегда точки по очереди захватывают, можно какнить к кооп режиму прикрутить AAS??

Автор: orionWP 2.1.2009, 10:32

Никто не пытался побороть одновременное снятие разными командами разных флагов? К примеру, почему бы после того как команда первой нейтрализует флаг, у второй команды ее флаг поднимается вверх, и не опускается уже, а не как обычно - тоже его можно забелить.

Автор: Vitaliy_35 2.2.2009, 14:12

Помогите! Хотелось бы на свой сервак поставить скрипт переброса игоков в другую команду после завершения раунда, а найти не могу. И ещё скрипт который мапы переключает от количетва народу с 16 на 32 и т.д. и т.п.

Автор: ludo 2.2.2009, 23:29

http://landot.org:8080/landot/aas/1.7-coop-16-players-only/
вот с ботами ;)

Автор: Vitaliy_35 4.2.2009, 11:51

Цитата(ludo @ Понедельник, 2 Февраля 2009, 23:29:23) *
http://landot.org:8080/landot/aas/1.7-coop-16-players-only/
вот с ботами ;)

Что это такое?

Автор: ludo 4.2.2009, 21:15

ссылка на скрипт

Автор: *Vitalik* 10.2.2009, 9:42

Да весьма интересно! :+:
Вот скачал от сюда скрипт http://landot.org:8080/landot/aas/1.7/gpm_cq.py
Посмотрел, все работает!
Вот только есть такая проблема:
1)Как сделать чтоб захват точек был по стандарту карты(так скажем по дефолту) а не неизвесно откуда?
2)Можно ли сделать этот скрипт так, чтоб он работал на размерах 16 и не на всех картах?

з.ы.
Плиз помогите, заранее спасибо
Если можно выложите готовый скрипт с таким методом его работы на примере дефолтных карт!

Автор: Nsaber 11.2.2009, 21:56

привет
Народ
можете поделится файлом server.zip карты Strike_at_Karkand_2

и самим файлом gpm_cq.py

чтобы захватывало попорядку - а то уже 5 раз переделывал - ни одно точка не берется :((((

на kot_phg@mail.ru

что самое интересное другие карты переделывал все работает :-\

Автор: GreSdn 16.2.2009, 8:27

Подскажите пожалуста, возможно ли сделать чтоб в спорных местах,
можно было брать любую из двух точек???

Автор: Daimon_ 19.2.2009, 12:33

Цитата(Nsaber @ Среда, 11 Февраля 2009, 21:56:37) *
привет
Народ
можете поделится файлом server.zip карты Strike_at_Karkand_2

и самим файлом gpm_cq.py

чтобы захватывало попорядку - а то уже 5 раз переделывал - ни одно точка не берется :((((

на kot_phg@mail.ru

что самое интересное другие карты переделывал все работает :-\

на этой карте перепутаны стороны MEC и US. у меня в файле gpm_cq.py порядок точек такой:
Код
"strike_at_karkand_2" :
              [ "32_usmc_cp_tvstation", "32_usmc_cp_servicestation", "32_usmc_cp_gas_station_factory", "32_usmc_cp_western_river_front", "32_usmc_cp_eastern_river_front", "32_usmc_cp_mosque", "32_mec_cp_mountainbase" ] ,

на 16 и 64 не делал. играем только на 32. на сервере установлен вот этот мод http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?s=&showtopic=40267&view=findpost&p=685173
карты вперемешку бф2, бустеров и спешала. в файл \Battlefield 2 Server\mods\xpack\python\game\gamemodes\gpm_cq.py добавлены карты спешала и несколько карт из маппаков.
массив с точками:
Код
    aasMaps = { "16" :
            { "boat_wars" :
              [ "cpname_bw_16_island_0" ] ,  
              "dalian_plant" :
              [ "cpname_dp_16_powerplant", "cpname_dp_16_mainentrance", "cpname_dp_16_constructionsite", "cpname_dp_16_reactors" ] ,
              "daqing_oilfields" :
              [ "cpname_do_16_oldcity", "cpname_do_16_oilcisterns", "cpname_do_16_refinery" ] ,
              "highway_tampa" :
              [ "cpname_ht_16_checkpointsouth", "cpname_ht_16_villageofkuhlaz", "cpname_ht_16_refinery", "cpname_ht_16_shahrurmia" ] ,
              "dragon_valley" :
              [ "cpname_dv_16_refinery", "cpname_dv_16_powerstation", "cpname_dv_16_hillvillage" , "cpname_dv_16_woodyard" ] ,
              "fushe_pass" :
              [ "cpname_gp_16_wmineentrance", "cpname_gp_16_island", "cpname_gp_16_emineentrance" ] ,
              "gulf_of_oman" :
              [ "cpname_go_16_constructionsite", "cpname_go_16_city", "cpname_go_16_village", "cpname_go_16_beach" ] ,
              "kubra_dam" :
              [ "cpname_kd_16_powerstation", "cpname_kd_16_lowerdam", "cpname_kd_16_upperdam", "cpname_kd_16_constructionsite" ] ,
              "mashtuur_city" :
              [ "cpname_mc_16_hotel", "cpname_mc_16_northbridge", "cpname_mc_16_roadconstruct", "cpname_mc_16_southblock" ] ,
              "operation_clean_sweep":
              [ "cpname_oc_16_smallairstrip", "cpname_oc_16_refuellingstation", "cpname_oc_16_controlcenter", "cpname_oc_16_airfield" ] ,
              "road_to_jalalabad" :
              [ "cp_16_rtj_mosque", "cp_16_rtj_market", "cp_16_rtj_hotel", "cp_16_rtj_junkyard" ] ,
              "sharqi_peninsula" :
              [ "cpname_sp_16_hotel", "cpname_sp_16_constructionsite", "cpname_sp_16_officebuildings", "cpname_sp_16_tvstation" ] ,
              "songhua_stalemate" :
              [ "cpname_ss_16_centralfront", "cpname_ss_16_northisland", "cpname_ss_16_temple", "cpname_ss_16_westperimeter" ] ,
              "street" :
              [ "16_cp_str_mec_roadblock", "16_cp_str_market", "16_cp_str_gas_station_0", "16_cp_str_us_roadblock" ] ,
              "street_aas" :
              [ "16_cp_str_mec_roadblock", "16_cp_str_market", "16_cp_str_gas_station_0", "16_cp_str_us_roadblock" ] ,
              "strike_at_karkand" :
              [ "cpname_sk_16_market", "cpname_sk_16_square", "cpname_sk_16_hotel", "cpname_sk_16_gasstation" ] ,
              "tank_master" :
              [ "16_cp_tm_china_base", "16_cp_tm_center_base", "16_cp_tm_us_base" ] ,
              "last_stand" :
              [ "cpname_16_ch_mountain_base", "cpname_16_down_town", "cpname_16_tv_station", "cpname_16_chung_shan_hotel", "cpname_16_back_yard", "cpname_16_ch_front_line" ] ,
              "zatar_wetlands" :
              [ "cpname_zw_16_naturalgasstation", "cpname_zw_16_centralisland", "cpname_zw_16_factory" ] ,
              "devils_perch" :
              [ "cp_16p_dp_asylum", "cp_16p_dp_gated_entrance", "cp_16p_dp_church", "cp_16p_dp_uppervillage" ] ,
              "ghost_town" :
              [ "cp_16p_gt_suburbs", "cp_16p_gt_centralsquare", "cp_16p_gt_convoy", "cp_16p_gt_waterstation" ] ,
              "iron_gator" :
              [ "cp_16p_ms_engine_room", "cp_16p_ms_bunks", "cp_16p_ms_hanger_bay_fore", "cp_16p_ms_mess_hall" ] ,
              "leviathan" :
              [ "cp_16p_lev_beach", "cp_16p_lev_powerstation", "cp_16p_lev_supplypier", "cp_16p_lev_commbuilding" ] ,
              "mass_destruction" :
              [ "cp_16p_md_shore", "cp_16p_md_facility", "cp_16p_md_yard", "cp_16p_md_scrapyard" ] ,
              "night_flight" :
              [ "cp_16p_nf_cargodepot", "cp_16p_nf_cargoplane", "cp_16p_nf_terminalcomplex" ] ,
              "surge" :
              [ "cp_16p_surge_commandbunker", "cp_16p_surge_launchpad", "cp_16p_surge_baseentrance" ] ,
              "greatwall_ef" :
              [ "cp_16_gw_compoundmainvillage", "cp_16_gw_compoundgatevillage", "cp_16_gw_quantower", "cp_16_gw_quantemple", "cp_16_gw_fortressvillage", "cp_16_gw_euairdrop"] ,
              "warlord" :
              [ "cp_16p_wl_palacegardens", "cp_16p_wl_vault", "cp_16p_wl_conferenceroom", "cp_16p_wl_securityoffice" ] } ,
            "32" :
            { "atom" :
              [ "cpname_at_32_airfield", "cpname_at_32_airfield_entrance", "cpname_at_32_headquarters", "cpname_at_32_level_one", "cpname_at_32_camp_beta", "cpname_at_32_camp_alpha", "cpname_at_32_beach_camp", "cpname_at_32_carrier" ] ,
              "boat_wars" :
              [ "cpname_bw_32_island_0" ] ,
              "course_of_the_river" :
              [ "cpname_cr_32_ch_outpost_a_32", "cpname_cr_32_outpost_32", "cpname_cr_32_border_32", "cpname_cr_32_helicopter_32", "cpname_cr_32_us_outpost_32" ] ,
              "dalian_plant" :
              [ "cpname_dp_32_airfield", "cpname_dp_32_mainentrance", "cpname_dp_32_maintenancebuilding", "cpname_dp_32_southdocks", "cpname_dp_32_reactors", "cpname_dp_32_uscarrier" ] ,
              "daqing_oilfields" :
              [ "cpname_do_32_chinesebase", "cpname_do_32_oldcity", "cpname_do_32_powerstation", "cpname_do_32_oilcisterns", "cpname_do_32_gasstation", "cpname_do_32_refinery", "cpname_do_32_ustown"] ,
              "dragon_valley" :
              [ "cpname_dv_32_refinery", "cpname_dv_32_powerstation", "cpname_dv_32_hillvillage", "cpname_dv_32_woodyard", "cpname_dv_32_islandfarmhouse", "cpname_dv_32_marketplace"] ,
              "greatwall_ef" :
              [ "cp_32_gw_camyin", "cp_32_gw_laosenghill", "cp_32_gw_quancompound", "cp_32_gw_quanfortress", "cp_32_gw_laotianyeroad", "cp_32_gw_huangvillage"] ,
              "highway_tampa" :
              [ "cpname_ht_32_airfield", "cpname_ht_32_villageofbuhifum", "cpname_ht_32_gasstation", "cpname_ht_32_refinery", "cpname_ht_32_villageofkuhlaz", "cpname_ht_32_shahrurmia"] ,
              "fushe_pass" :
              [ "cpname_gp_32_uppercamp", "cpname_gp_32_bridgecamp", "cpname_gp_32_wmineentrance", "cpname_gp_32_emineentrance", "cpname_gp_32_securityhq", "cpname_gp_32_powerplant" ] ,
              "gulf_of_oman" :
              [ "cpname_go_32_airfieldbase", "cpname_go_32_constructionsite", "cpname_go_32_hotel", "cpname_go_32_rockfort", "cpname_go_32_olivefort", "cpname_go_32_riverfort", "cpname_go_32_uscarrier" ] ,
              "kubra_dam" :
              [ "cpname_kd_32_intake", "cpname_kd_32_constructionsite", "cpname_kd_32_powerstation", "cpname_kd_32_lowerdam", "cpname_kd_32_materialstation", "cpname_kd_32_refuellingstation", "cpname_kd_32_bridgebase", "cpname_kd_32_abandonedhuts" ] ,
              "mahoni_island" :
              [ "cpname_mi_32_volcano", "cpname_mi_32_mahoni_island", "cpname_mi_32_rock", "cpname_mi_32_us_boat" ] ,
              "marauders_at_midnight" :
              [ "cpname_mm_32_mec_cave", "cpname_mm_32_bunkers", "cpname_mm_32_ch_cave" ] ,
              "mashtuur_city" :
              [ "cpname_mc_32_hotel", "cpname_mc_32_powerplant", "cpname_mc_32_mosque", "cpname_mc_32_backyard", "cpname_mc_32_hill" ] ,
              "midnight_sun_af" :
              [ "cp_32p_ms_rverairbase", "cp_32p_ms_valdez", "cp_32p_ms_gasstation", "cp_32p_ms_pipelinevalve", "cp_32p_ms_pumpingstation", "cp_32p_ms_salmonpass"] ,
              "operation_clean_sweep" :
              [ "cpname_oc_32_communicationcentral", "cpname_oc_32_abandonedvillage", "cpname_oc_32_smallairstrip", "cpname_oc_32_refuellingstation", "cpname_oc_32_controlcenter", "cpname_oc_32_airfield" ] ,
              "operationharvest_af" :
              [ "cp_32p_oh_mecfieldcamp", "cp_32p_oh_dairyfarm", "cp_32p_oh_grainelevator", "cp_32p_oh_mecscoutpost", "cp_32p_oh_checkpointbarndoor", "cp_32p_oh_fieldequipmentbarn", "cp_32p_oh_largeproducefarm", "cp_32p_oh_appleciderfarm"] ,
              "operationroadrage_af" :
              [ "cp_32p_rr_southernoildepot", "cp_32p_rr_truckstop", "cp_32p_rr_mall", "cp_32p_rr_overpass", "cp_32p_rr_junkyard", "cp_32p_rr_gasstation", "cp_32p_rr_farmhouse" ] ,
              "operationsmokescreen_ef" :
              [ "cp_32p_oss_oasis", "cp_32p_oss_village", "cp_32p_oss_oilplant", "cp_32p_oss_hillshed", "cp_32p_oss_garage", "cp_32p_oss_refineryoutpost" ] ,
              "road_to_jalalabad" :
              [ "cp_32_rtj_mosque", "cp_32_rtj_market", "cp_32_rtj_hotel", "cp_32_rtj_junkyard", "cp_32_rtj_fountain", "cp_32_rtj_outpost", "cp_32_rtj_usbase" ] ,
              "sharqi_peninsula" :
              [ "cpname_sp_32_beachhouse", "cpname_sp_32_clubhouse", "cpname_sp_32_outskirts", "cpname_sp_32_city_entrance", "cpname_sp_32_surveillancepost", "cpname_sp_32_hotel", "cpname_sp_32_constructionsite", "cpname_sp_32_tvstation" ] ,
              "songhua_stalemate" :
              [ "cpname_ss_32_chinesehq", "cpname_ss_32_centralfront", "cpname_ss_32_northisland", "cpname_ss_32_southisland", "cpname_ss_32_westperimeter", "cpname_ss_32_fishfactory" ] ,
              "strait_of_hormuz" :
              [ "cpname_sh_32_mec_mainbase", "cpname_sh_32_forrest", "cpname_sh_32_radiostation", "cpname_sh_32_alpha", "cpname_sh_32_bravo", "cpname_sh_32_seaside_hotel", "cpname_sh_32_tv_station", "cpname_sh_32_harbour", "cpname_sh_32_gasstation", "cpname_sh_32_beachhouse", "cpname_sh_32_aa_site", "cpname_sh_32_boathouse_0", "cpname_sh_32_riverhut", "cpname_sh_32_usmc_mainbase" ] ,
              "strike_at_karkand" :
              [ "cpname_sk_32_gatehouse", "cpname_sk_32_trainaccident", "cpname_sk_32_market", "cpname_sk_32_suburb", "cpname_sk_32_square", "cpname_sk_32_hotel", "cpname_sk_32_gasstation" ] ,
              "strike_at_karkand_2" :
              [ "32_usmc_cp_tvstation", "32_usmc_cp_servicestation", "32_usmc_cp_gas_station_factory", "32_usmc_cp_western_river_front", "32_usmc_cp_eastern_river_front", "32_usmc_cp_mosque", "32_mec_cp_mountainbase" ] ,
              "street" :
              [ "32_cp_str_mec_roadblock", "32_cp_str_market", "32_cp_str_gas_station_0", "32_cp_str_us_roadblock" ] ,
              "street_aas" :
              [ "32_cp_str_mec_roadblock", "32_cp_str_market", "32_cp_str_gas_station_0", "32_cp_str_us_roadblock" ] ,
              "taraba_quarry_ef" :
              [ "cp_3264p_taraba_tarabaguardhq", "cp_3264p_taraba_freightrailyard", "cp_3264p_taraba_heavyequipmentstorage", "cp_3264p_taraba_farmcommunity", "cp_3264p_taraba_engineeringcompound", "cp_3264p_taraba_eucampspearhead"] ,
              "tank_master" :
              [ "32_cp_tm_china_base", "32_cp_tm_center_base", "32_cp_tm_us_base" ] ,
              "last_stand" :
              [ "cpname_32_ch_mountain_base", "cpname_32_down_town", "cpname_32_tv_station", "cpname_32_chung_shan_hotel", "cpname_32_back_yard", "cpname_32_ch_front_line", "cpname_32_us_base" ] ,  
              "insurgency_on_alcatraz_island" :
              [ "cpname_ai_32_courtyard", "cpname_ai_32_power_plant", "cpname_ai_32_bunkers", "cpname_ai_32_boat_dock_storage", "cpname_ai_32_beach_head", "cpname_ai_32_abandoned_bunker" ] ,
              "goods_station" :
              [ "cpname_gs_32_storehouse", "cpname_gs_32_office", "cpname_gs_32_depot", "cpname_gs_32_depot_acces" ] ,
              "zatar_wetlands" :
              [ "cpname_zw_32_mecbase", "cpname_zw_32_farm", "cpname_zw_32_naturalgasstation", "cpname_zw_32_centralisland", "cpname_zw_32_factory", "cpname_zw_32_village", "cpname_zw_32_airfield" ] ,
              "devils_perch" :
              [ "cp_32p_dp_asylum", "cp_32p_dp_church", "cp_32p_dp_hilltop", "cp_32p_dp_uptown", "cp_32p_dp_lowtown" ] ,
              "ghost_town" :
              [ "cp_32p_gt_waterfront", "cp_32p_gt_uppernorthside", "cp_32p_gt_uppersouthside", "cp_32p_gt_convoy", "cp_32p_gt_waterstation" ] ,
              "iron_gator" :
              [ "cp_32p_ms_welldeck", "cp_32p_ms_mess_hall", "cp_32p_ms_hanger_bay_fore", "cp_32p_ms_hanger_bay_aft", "cp_32p_ms_controltower", "cp_32p_ms_controltowerexterior" ] ,
              "leviathan" :
              [ "cp_32p_lev_fueldepot", "cp_32p_lev_supplydepot", "cp_32p_lev_supplypier_south", "cp_32p_lev_subpenleft", "cp_32p_lev_subpenright", "cp_32p_lev_armory"] ,
              "mass_destruction" :
              [ "cp_32p_md_scrapyard", "cp_32p_md_coolingstation", "cp_32p_md_yard", "cp_32p_md_facility", "cp_32p_md_shore" ] ,
              "night_flight" :
              [ "cp_32p_nf_aircontroltower", "cp_32p_nf_cargodepot", "cp_32p_nf_cargoplane", "cp_32p_nf_terminalcomplex" ] ,
              "surge" :
              [ "cp_32p_surge_supplydepot", "cp_32p_surge_commandbunker", "cp_32p_surge_launchpad", "cp_32p_surge_baseentrance", "cp_32p_surge_innerridge" ] ,
              "warlord" :
              [ "cp_32p_wl_vault", "cp_32p_wl_conferenceroom", "cp_32p_wl_stationplaza", "cp_32p_wl_securityoffice", "cp_32p_wl_insurgenthideout", "cp_32p_wl_stationplaza",  "cp_32p_wl_parkinggarage"] } ,
            "64" :
            { "dalian_plant" :
              [ "cpname_dp_64_airfield", "cpname_dp_64_mainentrance", "cpname_dp_64_maintenancebuilding", "cpname_dp_64_southdocks", "cpname_dp_64_reactors", "cpname_dp_64_warehouse", "cpname_dp_64_northdocks", "cpname_dp_64_uscarrier" ] ,
              "daqing_oilfields" :
              [ "cpname_do_64_chinesebase", "cpname_do_64_powerstation", "cpname_do_64_westoilfield", "cpname_do_64_refinery", "cpname_do_64_oilcisterns", "cpname_do_64_oldcity", "cpname_do_64_eastoilfield", "cpname_do_64_gasstation", "cpname_do_64_ustown" ] ,
              "dragon_valley" :
              [ "cpname_dv_64_refinery", "cpname_dv_64_powerstation", "cpname_dv_64_hillvillage", "cpname_dv_64_woodyard", "cpname_dv_64_islandfarmhouse", "cpname_dv_64_marketplace", "cpname_dv_64_temple", "cpname_dv_64_rivervillage", "cpname_dv_64_vistapoint", "cpname_dv_64_docks", "cpname_dv_64_uscarrier" ] ,
              "highway_tampa" :
              [ "cpname_ht_64_airfield", "cpname_ht_64_villageofbuhifum", "cpname_ht_64_checkpointwest", "cpname_ht_64_checkpointsouth", "cpname_ht_64_gasstation", "cpname_ht_64_refinery", "cpname_ht_64_villageofkuhlaz", "cpname_ht_64_shahrurmia" ] ,
              "fushe_pass" :
              [ "cpname_gp_64_chineseairfield", "cpname_gp_64_canyonguardpost", "cpname_gp_64_uppercamp", "cpname_gp_64_bridgecamp", "cpname_gp_64_wmineentrance", "cpname_gp_64_securityhq", "cpname_gp_64_powerplant", "cpname_gp_64_emineentrance", "cpname_gp_64_mountainlookout", "cpname_gp_64_usairfield" ] ,
              "gulf_of_oman" :
              [ "cpname_go_64_airfieldbase", "cpname_go_64_village", "cpname_go_64_constructionsite", "cpname_go_64_hotel", "cpname_go_64_villagefort", "cpname_go_64_rockfort", "cpname_go_64_olivefort", "cpname_go_64_riverfort", "cpname_go_64_uscarrier" ] ,
              "kubra_dam" :
              [ "cpname_kd_64_intake", "cpname_kd_64_constructionsite", "cpname_kd_64_powerstation", "cpname_kd_64_lowerdam", "cpname_kd_32_refuellingstation", "cpname_kd_64_materialstation", "cpname_kd_64_supervisorbase", "cpname_kd_64_bridgebase", "cpname_kd_64_abandonedhuts" ] ,
              "mashtuur_city" :
              [ "cpname_mc_64_ngasstation", "cpname_mc_64_hotel", "cpname_mc_64_powerplant", "cpname_mc_64_mosque", "cpname_mc_64_backyard", "cpname_mc_64_hill", "cpname_mc_64_sgasstation" ] ,
              "operation_clean_sweep" :
              [ "cpname_oc_64_mecairfield", "cpname_oc_64_harbor", "cpname_oc_64_communicationcentral", "cpname_oc_64_abandonedvillage", "cpname_oc_64_smallairstrip", "cpname_oc_64_refuellingstation", "cpname_oc_64_controlcenter", "cpname_oc_64_airfield" ] ,
              "road_to_jalalabad" :
              [ "cp_64_rtj_mosque_0", "cp_64_rtj_market_0", "cp_64_rtj_hotel_0", "cp_64_rtj_junkyard_0", "cp_64_rtj_fountain_0", "cp_64_rtj_outpost_0", "cp_64_rtj_lake", "cp_64_rtj_usbase_0" ] ,
              "sharqi_peninsula" :
              [ "cpname_sp_64_beachhouse", "cpname_sp_64_clubhouse", "cpname_sp_64_outskirts", "cpname_sp_64_city_entrance", "cpname_sp_64_surveillancepost", "cpname_sp_64_alley", "cpname_sp_64_constructionsite", "cpname_sp_64_hotel", "cpname_sp_64_tvstation" ] ,
              "songhua_stalemate" :
              [ "cpname_ss_64_chinesehq", "cpname_ss_64_centralfront", "cpname_ss_64_southfront", "cpname_ss_64_southisland", "cpname_ss_64_northisland", "cpname_ss_64_westperimeter", "cpname_ss_64_fishfactory", "cpname_ss_64_northperimeter" ] ,
              "strike_at_karkand" :
              [ "cpname_sk_64_factory", "cpname_sk_64_warehouse", "cpname_sk_64_cementfactory", "cpname_sk_64_gatehouse", "cpname_sk_64_trainaccident", "cpname_sk_64_suburb", "cpname_sk_64_square", "cpname_sk_64_hotel", "cpname_sk_64_gasstation" ] ,
              "wake_island_2007" :
              [ "64_ch_cp_southbase", "64_ch_cp_beach", "64_ch_cp_airfield", "64_ch_cp_northbase", "64_ch_cp_northvillage", "64_us_cp_carrier" ] ,
              "zatar_wetlands" :
              [ "cpname_zw_64_mecbase", "cpname_zw_64_farm", "cpname_zw_64_naturalgasstation", "cpname_zw_64_centralisland", "cpname_zw_64_factory", "cpname_zw_64_village", "cpname_zw_64_airfield", "cpname_zw_64_beach", "cpname_zw_64_uscarrier" ] ,
              "devils_perch" :
              [ "cp_64p_dp_waterfront", "cp_64p_dp_church", "cp_64p_dp_hilltop", "cp_64p_dp_uptown", "cp_64p_dp_lowtown", "cp_64p_dp_powerstation", "cp_64p_dp_causeway", "cp_64p_dp_marketsquare", "cp_64p_dp_portfactory" ] ,
              "ghost_town" :
              [ "cp_64p_gt_waterfront", "cp_64p_gt_uppernorthside", "cp_64p_gt_uppersouthside", "cp_64p_gt_convoy", "cp_64p_gt_waterstation", "cp_64p_gt_beachstreet", "cp_64p_gt_oilplatform", "cp_64p_gt_oilfield" ] ,
              "iron_gator" :
              [ "cp_64p_ms_controltower", "cp_64p_ms_welldeck", "cp_64p_ms_hanger_bay_aft", "cp_64p_ms_controltowerexterior", "cp_64p_ms_mess_hall", "cp_64p_ms_hanger_bay_fore" ] ,
              "leviathan" :
              [ "cp_64p_lev_beach", "cp_64p_lev_powerstation", "cp_64p_lev_commbuilding", "cp_64p_lev_subpen02", "cp_64p_lev_subpen01", "cp_642p_lev_armory",  "cp_64p_lev_supply_depot", "cp_64p_lev_fuel_depot"] ,
              "mass_destruction" :
              [ "cp_64p_md_island", "cp_64p_md_scrapyard", "cp_64p_md_coolingstation", "cp_64p_md_yard", "cp_64p_md_facility", "cp_64p_md_shore" ] ,
              "night_flight" :
              [ "cp_64p_nf_aircontroltower", "cp_64p_nf_cargodepot", "cp_64p_nf_cargpolane", "cp_64p_nf_terminalcomplex", "cp_64p_nf_helipad" ] ,
              "surge" :
              [ "cp_64p_surge_commandbunker", "cp_64p_surge_fueldepot", "cp_64p_surge_launchpad", "cp_64p_surge_supplydepot", "cp_64p_surge_innerridge", "cp_64p_surge_outerridge", "cp_64p_surge_checkpoint", "cp_64p_surge_outerridge" ] ,
              "warlord" :
              [ "cp_64p_wl_vault", "cp_64p_wl_conferenceroom", "cp_64p_wl_securityoffice", "cp_64p_wl_mosque", "cp_64p_wl_insurgenthideout", "cp_64p_wl_stationplaza", "cp_64p_wl_parkinggarage" ] } }

Автор: GreSdn 21.3.2009, 12:13

Цитата(GreSdn @ Понедельник, 16 Февраля 2009, 10:27:45) *
Подскажите пожалуста, возможно ли сделать чтоб в спорных местах,
можно было брать любую из двух точек???

Хотелось бы услышать хоть один вариант!

Автор: _Sergey_ 24.3.2009, 16:04

Что-то я не пойму, как сделать чтоб после взятия точки писалось какую нужно следующую брать. На стандартных работает а на тех которые сам добавил не пишет какую следующую брать.
По подробней пожалуйста объясните.

Автор: _Sergey_ 28.3.2009, 13:29

Ну что не кто не ответит на мой вопрос предыдущий.

Автор: Ganny 3.9.2009, 7:56

Народ а кто в курсе после установки патча 1.5 на картах из бустерпаков будут работать последовательный захват точек?

Автор: Daimon_ 19.11.2009, 17:09

сейчас пытаюсь прилепить Push Mode из Forgotten Hope 2 к серверу BF2 1.50. мои познания в питоне минимальны, поэтому результат непредсказуем.
что делал: скопировал папку \mods\fh2\python\game\ в \mods\bf2\python\game\
отключил ненужные(а может нужные?) плагины в файле \mods\bf2\python\game\plugins\__init__.py
содержимое:

Раскрывающийся текст
#from randomiseSpawner import randomiseSpawner
#from aiFixups import aiFixups
from pyShell import pyShell
#from tankDisable import tankDisable
#from commanderChair import commanderChair
#from ingameEditor import ingameEditor
#from limitKit import limitKit, limitKitNCO
from destroyObjective import destroyObjective
from push import push
from linkCPs import linkCPs
#from artilleryReload import artilleryReload
#from betaTest import betaTest
#from artillery import artillery
#from testing import testing
from mapLint import mapLint
from chooseNSpawns import chooseNSpawns
#from parachute import parachute
#from deployables import deployables
#from fragalyzer import fragalyzer
#from awards import awards

def plugin(plg, **kwargs):
return (plg, kwargs)


в файле \mods\bf2\python\game\gameplayPlugin.py исправил строку
Код
standard = 'tankDisable aiFixups limitKitNCO artillery commanderChair artilleryReload parachute awards deployables'.split()

на
Код
standard = ' '.split()


эксперименты решил проводить на карте Dalian_Plant на 32 каски. в папку с картой закинул файл mapdata.py со следующим содержимым:
Раскрывающийся текст
Код
from game.plugins import plugin, linkCPs, push
linkCPs_32 = [
    plugin(linkCPs, target = 'cpname_dp_32_airfield', source = 'cpname_dp_32_mainentrance'),
    plugin(linkCPs, target = 'cpname_dp_32_mainentrance', source = ['cpname_dp_32_maintenancebuilding', 'cpname_dp_32_reactors'], invert = True),
    plugin(linkCPs, target = 'cpname_dp_32_maintenancebuilding', source = 'cpname_dp_32_southdocks', invert = True),
]

push_32 = [
    plugin(push, source = 'cpname_dp_32_airfield', target = 'cpname_dp_32_mainentrance', attacker = 1),
    plugin(push, source = 'cpname_dp_32_mainentrance', target = 'cpname_dp_32_maintenancebuilding', attacker = 1),
    plugin(push, source = 'cpname_dp_32_mainentrance', target = 'cpname_dp_32_reactors', attacker = 1),
    plugin(push, source = 'cpname_dp_32_maintenancebuilding', target = 'cpname_dp_32_southdocks', attacker = 1),
]      

gpm_cq = {
  #64: push_64 + linkCPs_64,

  #16: linkCPs_16,

  32: push_32 + linkCPs_32,
}


работает коряво. если китайцы берут точки на побережье, то предыдущие китайские точки становятся американскими. буду копать дальше. так-же пока не ясно, как вывести стрелки на карту/миникарту клиента, как в Forgotten Hope 2.
спросите, а зачем это нужно? а вот зачем. порядок захвата точек можно сделать любой. причем индивидуально для каждой карты. все прописывается в файле mapdata.py, который лежит в папке с картой.

p.s.
а может кто-то уже делал это? надеюсь на помощь.

Автор: Daimon_ 21.11.2009, 11:26

всетаки мне удалось прилепить push mode из Forgotten Hope 2 к Battlefield 2 Server 1.50 + bf2statistics 1.4.2
было одобрено лучшими соба... батлеводами на моем сервере.
преимущества по сравнению с AAS:
push mode можно включить выборочно на любой карте в том числе и на нестандартной.
можно прописать одновременный захват нескольких точек.

недостатки:
ничего не выводится на экран о том, какую точку брать следующую.
ни текста как в AAS, ни стрелок на карте как в Forgotten Hope 2.

выкладываю то, что получилось. порядок захвата прописан только для 5 карт. кому надо, пропишите остальные. принцип тот-же, что и в AAS. точки прописываются в порядке от не америкосов к америкосам.
перед установкой сделайте резервную копию папки Battlefield 2 Server\mods\bf2\python\game\
установка: распаковать архив в папку с сервером.

http://depositfiles.com/files/3l0u72z4k

Автор: Daimon_ 21.11.2009, 21:49

ещё один вариант mapdata.py для карты Strike_at_Karkand. точка suburb будет взята автоматом в случае взятия точки market

Раскрывающийся текст
Код
#Strike_at_Karkand
from game.plugins import plugin, push, linkCPs

links_32 = [
   plugin(linkCPs, target = 'cpname_sk_32_suburb', source = 'cpname_sk_32_market', invert = False),
]

push_32 = [
    plugin(push, source = 'cpname_sk_32_gatehouse', target = 'cpname_sk_32_trainaccident', attacker = 1),
    plugin(push, source = 'cpname_sk_32_trainaccident', target = 'cpname_sk_32_market', attacker = 1),
    plugin(push, source = 'cpname_sk_32_trainaccident', target = 'cpname_sk_32_suburb', attacker = 1),
    plugin(push, source = 'cpname_sk_32_market', target = 'cpname_sk_32_square', attacker = 1),
    plugin(push, source = 'cpname_sk_32_suburb', target = 'cpname_sk_32_square', attacker = 1),
    plugin(push, source = 'cpname_sk_32_square', target = 'cpname_sk_32_hotel', attacker = 1),
]      

gpm_cq = {
  32: push_32 + links_32,
}

Автор: PanGolin 19.1.2010, 18:05

mapdata.py - этот файло на серверной части где?

Автор: Daimon_ 20.1.2010, 8:49

Цитата(PanGolin @ Вторник, 19 Января 2010, 18:05:55) *
mapdata.py - этот файло на серверной части где?

на сервере в папке с картой. клиенту он не нужен.
и он бесполезен без скриптов в \Battlefield 2 Server\mods\bf2\python\game\

ссылка на депозит умерла. если надо, перезалью.

Автор: PanGolin 20.1.2010, 17:05

Daimon_ , выкладывай всё что надо.Перелей плз

Автор: Daimon_ 21.1.2010, 8:43

перезалил. http://depositfiles.com/files/l55v06saw

порядок захвата прописан для 19 карт. кому надо, пропишите остальные. принцип тот-же, что и в AAS. точки прописываются в порядке от не америкосов к америкосам.
перед установкой сделайте резервную копию папки Battlefield 2 Server\mods\bf2\python\game\
установка: распаковать архив в папку с сервером.

Автор: DossJ 28.3.2010, 12:00

У когото есть этот скрипт под сервер с патч 1,5(под стандартные карты). Скрипт с поста выше не работает.

Автор: Daimon_ 29.3.2010, 8:32

у меня эта система работает с начала января без проблем. нашлась одна ошибка: карта Road_To_Jalalabad файл mapdata.py в строке 17 удалить скобку.

немного пояснений, как это работает. плагин грузится после загрузки карты и если в папке с картой есть файл mapdata.py, то он выполняется. в этом самом файле и прописан порядок захвата точек. причем прописывать надо порядок отдельно для каждого режима (16, 32, 64). ниже пример файла mapdata.py карты Sharqi_Peninsula на 16 и 32 касок (на 64 плагин загружен не будет):

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

Код
#Sharqi_Peninsula
from game.plugins import plugin, push

push_16 = [
    plugin(push, source = 'cpname_sp_16_hotel', target = 'cpname_sp_16_constructionsite', attacker = 1),
    plugin(push, source = 'cpname_sp_16_constructionsite', target = 'cpname_sp_16_officebuildings', attacker = 1),
    plugin(push, source = 'cpname_sp_16_officebuildings', target = 'cpname_sp_16_tvstation', attacker = 1),
]

push_32 = [
    plugin(push, source = 'cpname_sp_32_outskirts', target = 'cpname_sp_32_city_entrance', attacker = 1),
    plugin(push, source = 'cpname_sp_32_city_entrance', target = 'cpname_sp_32_surveillancepost', attacker = 1),
    plugin(push, source = 'cpname_sp_32_surveillancepost', target = 'cpname_sp_32_constructionsite', attacker = 1),    
    plugin(push, source = 'cpname_sp_32_constructionsite', target = 'cpname_sp_32_tvstation', attacker = 1),
    
    plugin(push, source = 'cpname_sp_32_beachhouse', target = 'cpname_sp_32_hotel', attacker = 1),
    plugin(push, source = 'cpname_sp_32_hotel', target = 'cpname_sp_32_tvstation', attacker = 1),

]      

gpm_cq = {

  16: push_16,

  32: push_32,
}


после загрузки карты в логах должно присутствовать сообщение, что плагины загружены (с какой карты лог, не знаю. выцепил первое попавшееся сообщение):
Раскрывающийся текст
Код
PreGame plugin bf2_init <game.gameplayPlugin.pluginsystem instance at 0x02B41E40>
gameplayPlugin: pluginsystem.bf2_init
(<class 'game.plugins.push.push'>, {'source': '32_cp_str_mec_roadblock', 'target': '32_cp_str_market', 'attacker': 1})
(<class 'game.plugins.push.push'>, {'source': '32_cp_str_market', 'target': '32_cp_str_gas_station_0', 'attacker': 1})
(<class 'game.plugins.push.push'>, {'source': '32_cp_str_gas_station_0', 'target': '32_cp_str_us_roadblock', 'attacker': 1})
gameplayPlugin: loaded 3 plugins


установка: распаковать архив в папку с сервером С ЗАМЕНОЙ ФАЙЛОВ!
перед установкой сделайте резервную копию папки Battlefield 2 Server\mods\bf2\python\game\

p.s. не кидайтесь тапками и не задавайте глупых вопросов. я не программер и сам не знаю как это работает.

Автор: equilibrium07 27.10.2010, 21:56

Daimon_ мм столкнулись с проблемой, после выхода нового патча под FH (2.33) fbf вырубился... сидим ломаем голову что можно сделать... сейчас попробуем mapdata.py поможет - значит гут)

Автор: Daimon_ 28.10.2010, 7:16

fbf вырубился в бф2? а что использовали?

Автор: accent-30 28.10.2010, 10:53

не в бф2, а в фх2. Что значит, что использовали?

Автор: Daimon_ 28.10.2010, 17:09

ну тогда не знаю. новый FH (2.33) не пробовал еще.

Автор: DeniM_FAGoT 20.2.2011, 14:57

дайте ссылочку на мод для battlefield 2/ plz ;)

Автор: Daimon_ 20.2.2011, 15:45

ссылка сдохла. вечером или завтра перезалью.

Автор: DeniM_FAGoT 20.2.2011, 19:58

Daimon_ заранее спасибо :+:

Автор: Daimon_ 21.2.2011, 8:30

mod AAS. файл \Battlefield 2 Server\mods\bf2\python\game\gamemodes\gpm_cq.py
http://depositfiles.com/files/x4nin29vl

Автор: sh@rk 22.10.2011, 5:23

http://bf2.novgames.ru/files/gpm_cq.py - Рабочий! *долга искал, с трудом нашёл где скачать можно*
не кто не в курсе как решить проблему с точками..., проблема в том что на карте канкард почему та точка у американцев, как это можно переправить обратно на мек?

Автор: uks_serg 22.10.2011, 6:55

не могу скачать выложи пожалуйста куданить в другое место, все ссылки умерли...

Автор: sh@rk 22.10.2011, 8:36

Зеркало http://bf.mxc.ru/uploads/gpm_cq.py - вот!
по первой ссылки там глюк какой та со сетью, потому потух пока...

Автор: pomanbi4b 7.4.2015, 18:55

перезалейте пожалуйста!

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)