Bonjour, c'est mon tout premier post, je suis un développeur du dimanche autant dire que mon niveau est plutôt bas...
Bref, je programme pour un jeu pas tout récent BF2142 et je voudrais rendre ce bout de script plus digeste, je souhaite au final faire en sorte qu'il ne reste qu'un seul drapeau par équipe et que se soit les 2 plus éloignés (ah oui mon script fonctionne bien...) :
Je sens que je n'ai pas été très clair, mais dur de faire quelques choses de concret et explicite... Je pourrais tenter de m'expliquer autrement si vraiment c'est imbuvable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 g_cP = bf2.objectManager.getObjectsOfType('dice.hfe.world.ObjectTemplate.ControlPoint') #Cette ligne permet d'obtenir tout les drapeaux de la carte appartenant à une des deux équipes ou encore neutre... teamPAC = [] teamUE = [] for flag in g_cP: teamFlag = int(flag.cp_getParam('flag')) #Permet d'obtenir le numéro de l'équipe possédant le drapeau, 0 = neutre, 1 = PAC, 2 = UE if teamFlag == 1: teamPAC.append(flag) #Le 'flag' est un objet contenant qq données tel que ses coordonnées, son appartenance à une équipe... if teamFlag == 2: teamUE.append(flag) if len(teamUE) > 1 or len(teamPAC) > 1: #Sur certaines cartes il n'y a qu'un seul drapeau par équipe au début, donc le pb n'est pas pour ces cartes là. disPosList = [] for flag in teamPAC: pos1 = flag.getPosition() for advFlag in teamUE: disPosList.append([flag,advFlag, getVectorDistance(pos1,advFlag.getPosition())]) #Là j'ajoute dans une liste une autre liste comportant 2 drapeaux adverses et la distance qui les séparent. Je fais ça pour tous les drapeaux. compList = [] for comp in disPosList: compList.append(comp[2]) #Là je crée une autre liste qui ne garde que les distances et ensuite je trie de la plus petites à la plus grande. compList.sort() for comp in disPosList: if compList[-1] in comp: saveThisComp = comp #Je garde seulement la liste contenant les drapeaux adverses les plus éloignés. for flag in g_cP: if flag not in saveThisComp: flag.cp_setParam('team', 0) #Je rends neutre tout les autres drapeaux. flag.cp_setParam('flag', 0)
Si comme moi ça vous amuse de perfectionner des scripts, j'attends vos réponses avec impatience! ^^
Partager