L'atelier des scripto-rameurs

Tout sur les scripts et les mods pour X², X³, X³TC et X³AP.

Moderator: Modérateurs pour les forum Français

User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde »

Ah je me disais bien que c'était louche ce truc!
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Voilà, enfin (je viens de passer sous Vista, ya des trucs que je comprends pas complètement avec sa gestion des xmls ...)

Code: Select all

001   $nx = get max sectors in x direction
002   $ny = get max sectors in y direction
003   $cx = 0
004   while $cx < $nx
005    $cy = 0
006    while $cy < $ny
007     $sector = get sector from universe index: x=$cx, y=$cy
008     if $sector != null
009      $shipArray = $sector -> get ship array from sector/ship/station
010      $nbvaisseaux =  size of array $shipArray
011      $nvsx = 0
012      while $nvsx < $nbvaisseaux
013       $vsx = $shipArray[$nvsx]
014       $vsx -> ignore collisions: [TRUE]
015       inc $nvsx = 
016      end
017 @    = wait 200 ms
018      play sample 924
019      write to player logbook $sector
020     end
021     inc $cy = 
022    end
023    inc $cx = 
024   end
025   return null
Ce script va enlever la collision pour tous les vaisseaux dans l'univers, avec un bip pour chaque secteurs traité. Après, le problème va être il me semble que les vaisseaux ne passe plus les portails, et les nouveaux vaisseaux créés auront toujours la collision activée. A toi de l'adapter à tes besoins.
leyo
Posts: 757
Joined: Tue, 26. Feb 08, 16:24

Post by leyo »

Grand merci !!! je m'en vais le tester ce midi (je suis sous xp espérons que ça passe)

Petite précision pour les portails : il faut donner l'ordre de voler vers le secteur et là il le prend en compte normalement.

Je comprends pas pourquoi le:

Code: Select all

"ship ->get ship array of Race null type null
ship = [THIS] 
[THIS] : ignore collision : [TRUE]
ne fonctionne pas chez vous, c'est la seule partie du script que j'ai testé, re-testé dix mille fois et ça marche chez moi, m'enfin bon. M'en vais appliquer ton script à la lettre Prizz merci encore. je vous tiens au jus.
*fervent défenseur du Down sacré*
*a défoncé les toilettes privées du forum français*
*Patient préféré des infirmières du Doc *
*Comité de lutte pour une meilleur fluidité du jeu*
PrizzZ wrote: il vaut mieux prévenir que taper ... enfin non, guérir
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

en fait avec le [THIS] -> ignore collisions: [TRUE] tu desactives les collisions sur l'objet [THIS], donc si tu démarres le script sur ton vaisseau, [THIS] devient ton vaisseau, ce qui expliquais que ca pouvait marcher sur ton vaisseau.
leyo
Posts: 757
Joined: Tue, 26. Feb 08, 16:24

Post by leyo »

Oui et je t'assure que j'ai testé de changer de vaisseau, cela marchait sur le nouveau vaisseau sans que je réactive le script. J'en ai déduit que c'est grâce au ship->get ship array of Race null type null.

Ces deux petites lignes de code marchait à merveille tant que je restais dans le secteur. Je ne remet pas en doute tes affirmations mais plutôt mon éditeur de script... :gruebel:

J'ai pas eu le temps de tester ton script, ce sera fait ce soir donc pas de nouvelle avant lundi.
*fervent défenseur du Down sacré*
*a défoncé les toilettes privées du forum français*
*Patient préféré des infirmières du Doc *
*Comité de lutte pour une meilleur fluidité du jeu*
PrizzZ wrote: il vaut mieux prévenir que taper ... enfin non, guérir
User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde »

Comme je l'avais déjà dis, je voyais effectivement plus un traitement vaisseaux par vaisseaux comme dans ta boucle (je sais pas pourquoi j'avais la flemme de la faire lol)

Code: Select all

009      $shipArray = $sector -> get ship array from sector/ship/station
010      $nbvaisseaux =  size of array $shipArray
011      $nvsx = 0
012      while $nvsx < $nbvaisseaux
013       $vsx = $shipArray[$nvsx]
014       $vsx -> ignore collisions: [TRUE]
015       inc $nvsx =
016      end 
Mais il y a un truc qui me chiffonne. C'est juste de la logique. Et d'ailleurs ça s'applique également au "mien" de script:
Pour les vaisseaux OOS, les collisions sont déjà désactivées. Donc c'est inutile de traiter tout l'univers.
En partant de cette observation un vaisseaux qui avait ses collisions désactivées dans le secteur voisin et qui entre dans le secteur du joueur devrait (par un script d'Egosoft) activer automatiquement ses collisions.
Je pense que quelque soit le script (traitement local ou de l'univers) on devrais s'attendre à ce que les vaisseaux créés IS et les vaisseaux rentrant dans le secteur ai leur collisions activées.
Si c'est le cas, le dernier script n'ayant pas de boucle "générale" si le joueur change de secteur, tout les vaisseaux du nouveau secteur auront leurs C. activées.
leyo wrote:J'ai déjà essayé tout ce que tu me dis (pour les = notament)
Est-ce qu'un mouchard te donne bien que les valeurs sont les même juste après cette commande?

Bon avec cette histoire de nouveaux vaisseaux dans le secteur c'est plutôt énervant, car en fait on va devoir appliquer la boucle sans arrêt. Je voie pas sur quoi on pourrais poser un test pour prendre en compte que les nouveaux vaisseaux voire la déclencher que lorsqu'un nouveau vaisseau entre dans le secteur

Bon nouvelle proposition, traite tout les vaisseaux du secteur du joueur toutes les deux secondes. Il n'y a pas d'amélioration pour "désactiver" la fonction temporairement et économiser des temps machines, donc les même vaisseaux présent dans le secteurs sont traités toutes les 2 secondes :

Code: Select all

001 $test=1
002
003 * Boucle de désactivation (lancée toute les 2 secondes):
004 while $test=1
005    $vsx -> get player ship
006    $sector -> $vsx get sector
007    $shipArray = $sector -> get ship array from sector/ship/station
008    $nbvaisseaux =  size of array $shipArray
009    $nvsx = 0
010    while $nvsx < $nbvaisseaux
011       $vsx = $shipArray[$nvsx]
012       $vsx -> ignore collisions: [TRUE]
013       inc $nvsx =
014    end
015    wait 2000ms
016 end
013
014 *sortie de la boucle == Bug :lol:
015 return null 
Avec ça on devrait être certain que ça fonctionne. Tu as une base qui peux ensuite être améliorée si on trouve quels paramètres peuvent la désactiver/réactiver pour économiser du cpu.

Note: au cas ou tu me poserais la question, le fait d'assigner $vsx au vaisseau du joueur ou aux vaisseaux à désactiver n'entre pas en conflit, une fois le secteur du joueur obtenu, on peut réutiliser la variable pour autre chose.

Je pense à ça à l'instant...
Tu as fait des réinit script cache? Ou stoppé les scripts d'essais? car s'ils continu à tourner et qu'ils sont pas valides ça te bouffe du cpu pour rien...
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07
leyo
Posts: 757
Joined: Tue, 26. Feb 08, 16:24

Post by leyo »

LE réinit script cache est mon ami. oui j'ai viré les scripts d'essais.


Il y a une remarque que tu as faite: les vaisseaux OOS voient leur collision activée lorsqu'ils arrivent dans le secteur du joueur... Cela j'imagine, par script non accessible?? et se pourrait-il que qu'il y ait une forme de "hiérarchie" entre les scripts "non accessibles" (comme les scripts de base du jeu) et les scripts que l'on peut modifier ?

Beaucoup de question mais pour résumer, il y aurait un script plus puissant et non modifiable qui active automatiquement les collisions des vaisseaux entrant dans le secteur ? si c'est le cas... on atteint un niveau trop évolué pour moi cela va être difficile.

En tout cas, je garde vos scripts et vos posts pour bosser dessus ce week end, c'est le dernier échelon vers la finalisation de mod perso. Merci beaucoup pour vos efforts.
*fervent défenseur du Down sacré*
*a défoncé les toilettes privées du forum français*
*Patient préféré des infirmières du Doc *
*Comité de lutte pour une meilleur fluidité du jeu*
PrizzZ wrote: il vaut mieux prévenir que taper ... enfin non, guérir
User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde »

il y a une sorte de hiérarchie... moui... si on veut.
En fait on peut leur donner une priorité mais là ça dépasse encore mes capacité de scripting actuel.

Cela dit puisque les scripts qu'on t'a proposé change les particularités du vaisseaux une fois rentré dans le secteur, c'est comme si la commande d'égosoft avait été écrasée.

Mais je ne pense pas que ça soit a proprement parler un script d'égosoft qui gère ça. A mon avis ça doit être carrément Hard-codé et par conséquent non modifiable car non accessible. Mais sait-on jamais, ils ont bien également des scripts qui sont accessible....
C'est vrai que supprimer la commande $vsx->ignore collision: [false] (ou changer son flag) dans le script originel serait le top dans ton cas.
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07
leyo
Posts: 757
Joined: Tue, 26. Feb 08, 16:24

Post by leyo »

Ah là là là là là là.

Messieurs j'ai eu des soucis. Vos scripts recopiés tels quels provoquent des crash et retour sous windows. J'en suis navré, cela vient peut-être de l'état de mon jeu ou je sais pas, en tout cas je ne suis pas arrivé à les faire fonctionner.

Mais il y a pire encore. Ayant encore poussé les tests sur la simple commande "ignore collisions", j'ai pu m'apercevoir que... les lasers de vos ennemis vous passent à travers -> vous êtes invincibles :shock: .

Ô Tout puissant, accepte mon âme en tant que sacrifice pour soulager ta colère. :(
*fervent défenseur du Down sacré*
*a défoncé les toilettes privées du forum français*
*Patient préféré des infirmières du Doc *
*Comité de lutte pour une meilleur fluidité du jeu*
PrizzZ wrote: il vaut mieux prévenir que taper ... enfin non, guérir
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

C'est possible que le contact des lasers sont géré par les collisions, dans ce cas ca risque d'être compliqué pour ton mod !
leyo
Posts: 757
Joined: Tue, 26. Feb 08, 16:24

Post by leyo »

n'est-ce pas? :shock:

Tant pis, je trouverai bien une solution pour gérer les collisions sur mon mod, au pire je fous les hypérions de côtés, et j'envoie que du M3, (en moyenne deux M3 détruits par collision, pour une station Paranide détruite :) ), quant aux M1 je les surveillerai.

Quoi qu'il en soit, hors de question que je retourne à la vitesse normale. 8)

Je vais juste renommer mes groupes : "Kamikazes 1", "Kamikazes 2",...

Me la jouer envahisseur Japonais... :wink:

Merci pour votre aide encore une fois, dommage pour le flop, mais l'important n'est pas la destination, c'est le voyage.
*fervent défenseur du Down sacré*
*a défoncé les toilettes privées du forum français*
*Patient préféré des infirmières du Doc *
*Comité de lutte pour une meilleur fluidité du jeu*
PrizzZ wrote: il vaut mieux prévenir que taper ... enfin non, guérir
moranester
Posts: 5
Joined: Sun, 30. Nov 08, 17:42

Post by moranester »

Salut,

J'ai créé un script qui me permet de transférer des marchandises d'une usine à une autre, sans les acheter.

Pour pouvoir vérifier si toutes les étapes étaient bien respectées j'envoyait des messages dans mon journal.

J'ai ensuite remodifier mon script et sauvegarder sans ces envoies.

En rechargeant ma sauvegarde, je me suis rendu compte que mon ancienne version de script tournait encore... càd que je recevait toujours des messages (ce qui a d'ailleur fait planter mon jeux car j'en avait plusieurs milliers).

Mon script dépend d'une commande. Il semble qu'il faille arrêter la commande et la relancer pour que la nouvelle version du script soit prise en compte.

Comment peut on gérer proprement les changements de version de script ???

Avez-vous des suggestions ?

Merci d'avance.

Return to “Script et Modding pour la Trilogie X”