Demande de différents SCRIPTS

Toutes vos idées pour créer des mods.
Avatar du membre
Plik
Moddeur aspirant
Moddeur aspirant
Messages : 175

Demande de différents SCRIPTS

Message par Plik »

Bonjour tout le monde, tout est dis dans le titre. Je cherche un script pour faire un ascenseur avec plusieurs étages :pensif: comme celui du GOMORRAH ou du LUCKY 38...
Si un moddeur (Comme Prechan :siffle: ) connaît ce script et si il veut le faire passer se serai super cool :top:
Vous pouvez aussi retrouver tout les scripts que je modifie à ma guise, tout est expliqué :P
--> MasterMind --> SCRIPTS <--

Merci à ceux qui prendront le temps de me répondre :bye:



-PLIK-
Modifié en dernier par Plik le 06 juil. 2011, 15:44, modifié 2 fois.
Plik :bye:
Avatar du membre
T!TER
Confrère
Messages : 3933

Re: Script de l'ascenseur à multi étage

Message par T!TER »

C'est assez simple en fait.
1) Tout d'abord il faut créer un message "MonMenu" avec tous les étages possibles.

2) Ensuite, il faut mettre des conditions sur chaque choix, afin que le joueur ne puisse pas aller vers là où il est déjà (sinon c'est un peu couillon :mrgreen: ). Pour cela, sélectionne chaque choix un par un, clique droit sur la liste en-dessous et créez une nouvelle condition.La fonction c'est IsInInterior, la variable c'est le nom de l'intérieur en question, "run on : subject", puis il faut mettre == 0. Concrètement, pour le bouton "1er étage", il faut mettre comme condition IsInInterior Etage1 == 0.

3) Il est temps de placer des XMarker au niveau des portes d’ascenseur de chaque étage. Pense à leur donner une Reference ID (du genre "Marker0" pour le rez de chaussée, "Marker2" pour le 2e étage, etc...)

4) Le scripting est en marche ! Créez un nouveau script, puis place ce code dans le script (en considérant que tu ais 3 étage, en plus de rez de chaussée)

Code : Tout sélectionner

scn MonScript
short Choix
short Next

BEGIN ONACTIVATE
 ShowMessage MonMenu
 Set Next to 1

 If Next == 1
  Set Choix to GetButtonPressed
  If Choix == -1
   Return
 ElseIf Choix == 0 ; rez de chaussée
   Set Next to 0
   Player.MoveTo Marker0
 ElseIf Choix == 1 ; 1er étage
   Set Next to 0
   Player.MoveTo Marker1
 ElseIf Choix == 2 ; 2e
   Set Next to 0
   Player.MoveTo Marker2
 ElseIf Choix == 0 ; 3e
   Set Next to 0
   Player.MoveTo Marker3
  EndIf
 EndIf
END
5) Il est temps de créer ton activateur. Pour cela, duplique un activateur bouton d’ascenseur, et renomme-le (par exemple "MonBouton"). Il faut que tu lies le script avec cet activateur. Ensuite, il suffit de le placer à chaque porte d’ascenseur.

Voili voilou, j'espère que tu arriveras à te retrouver dans mon charabia, et que mon script n'est pas bugué. :langue3:
Bon courage pour ton mod. ^^
"Prends la vie avec légèreté, il y aura moins d'obésité..."
de Moi-même, Copyright T!TER 2012
Avatar du membre
Plik
Moddeur aspirant
Moddeur aspirant
Messages : 175

Re: Script de l'ascenseur à multi étage

Message par Plik »

Rololo j'étais pas loin !
Je vais vérifié ça :)
Je te remercie :P


-Plik-
Plik :bye:
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Script de l'ascenseur à multi étage

Message par Prechan »

C'est exactement ce que j'aurais dis ! Parfait !
Avatar du membre
T!TER
Confrère
Messages : 3933

Re: Script de l'ascenseur à multi étage

Message par T!TER »

Un nouveau script un poil plus court, parce que les lignes c'est le mal !

Code : Tout sélectionner

scn MonScript
short Choix
short Next

BEGIN ONACTIVATE
 ShowMessage MonMenu
 Set Next to 1

 If Next == 1
  Set Choix to GetButtonPressed
  If Choix >= 0
   Set Next to 0
   If Choix == 0 ; rez de chaussée
    Player.MoveTo Marker0
   ElseIf Choix == 1 ; 1er étage
    Player.MoveTo Marker1
   ElseIf Choix == 2 ; 2e
    Player.MoveTo Marker2
   ElseIf Choix == 0 ; 3e
    Player.MoveTo Marker3
   EndIf
  Else
   Return
  EndIf
 EndIf
END
Merci pour ta remarque Prechan, ça fait chaud au coeur ! ^^
"Prends la vie avec légèreté, il y aura moins d'obésité..."
de Moi-même, Copyright T!TER 2012
Avatar du membre
Plik
Moddeur aspirant
Moddeur aspirant
Messages : 175

Re: Script de l'ascenseur à multi étage

Message par Plik »

Les scripts sont faux ! :'(
Shadows She-Wolf de Wiwiland m'a donné des conseils pour celui du Gomorah (Qui fonctionne nettement mieux sorry :/ ).
Rends toi ici T!Ter pour savoir ton erreur :)
--> Wiwiland - Script de l'ascenseur à multi étage

Voilà le Script

Code : Tout sélectionner

scn *nom du script*SCRIPT

int Button

begin OnActivate
        ref reffer
        set reffer to GetActionRef
        if GetActionRef == player
                showmessage *nom du message*
        else
                if reffer.GetPlayerTeammate == 1
                        reffer.moveto player
                endif
        endif
end

begin GameMode
        set Button to GetButtonPressed
        ref rMarker
        if Button == #; "#" correspond au n° du bouton
                player.MoveTo *nom du Xmarqueur01*
                set rMarker to *nom du Xmarqueur01*
                Autosave
        elseif Button == #; "#" correspond au n° du bouton
                player.MoveTo *nom du Xmarqueur02*
                set rMarker to *nom du Xmarqueur02*
                Autosave
        elseif Button == #; "#" correspond au n° du bouton
                player.MoveTo *nom du Xmarqueur03*
                set rMarker to *nom du Xmarqueur03*
                Autosave
        elseif Button == #; "#" correspond au n° du bouton
                player.MoveTo *nom du Xmarqueur04*
                set rMarker to *nom du Xmarqueur04*
                Autosave
        endif
end
Apluche :)


-PLIK-
Plik :bye:
Avatar du membre
T!TER
Confrère
Messages : 3933

Re: Script de l'ascenseur à multi étage

Message par T!TER »

Ah j'étais pas loin, j'ai juste oublié de mettre un bloc GameMode (je suis pas sûr qu'il est une réelle utilité...). Sinon, à part quelques rajouts par ci par là, c'est exactement le même fonctionnement. ^^
Je trouve même l'utilisation de rMarker un peu lourde, autant mettre directement le nom de marker après MoveTo, ça te fait gagner pas mal de lignes.
Et puis la vérification de l'utilisateur de l'activateur (je sais ça fait beaucoup de "eur" :mrgreen: ) ne sert pas à grand chose, car à part le player personne ne peut activer l’ascenseur, même pas les PNJ. ;)
"Prends la vie avec légèreté, il y aura moins d'obésité..."
de Moi-même, Copyright T!TER 2012
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Script de l'ascenseur à multi étage

Message par Shadow she-wolf »

Coucou...

T!TER...
As-tu eu la curiosité de regarder mes messages sur le lien vers wiwiland là...?
Car j'explique pourquoi on a besoin du GameMode...
De même, le rMarker est conservé, car on en a besoin pour gérer les compagnons, comme c'est fait sur le script du Gomorrah...
Plik a modifié le script du Gomorrah pour en faire un générique pour le présenter sur son site, il n'y a donc pas la gestion des compagnons... Du coup conserver le rMarker n'y est pas trop utile... Dans les faits, c'est utile si tu as besoin de gérer les compagnons...

Quant à la vérification de l'utilisateur de l'activateur, c'est utile...
Car le script du Gomorrah est appliqué sur une porte, que tout à chacun peut activer...
De même, les packages IA des PNJ (d'un mod par exemple) peuvent être foireux, et un PNJ pourra activer un activateur au hasard, se sont des choses qui arrivent...
Quand on commence à faire de la sécurité, on prend toujours les situations pire cas...
Plus accessoirement, ça permet dans notre cas aux compagnons des mods de suivre le PJ, puisque quand le joueur va utiliser la porte/ascenseur, le PNJ compagnon venant d'un mod va lui aussi activer cette porte...
Il faut bien le téléporter au niveau du joueur, histoire de s'assurer qu'il aille bien dans la même cellule...



Sinon, par rapport à ton optimisation...
Il ne faut pas se fier au nombre de lignes, comme chaque langage, ça dépend du compilateur qu'il y a derrière, pas forcément de l'écriture du code lui-même d'un point de vue algorithmique...
C'est assez courant que lorsque l'on essaie d’optimiser un code, et qu'on le fait en réduisant le plus possible les lignes, que le temps d'exécution s'en trouve rallongé, car les compilateurs ont leur propres routines d'optimisations pour optimiser les cas les plus courant... Écrire en version très raccourcie a tendance à nous faire sortir de ces cas courant, et donc les routines d'optimisation du compilateur ne s'appliquent plus...

Si tu veux faire dans la véritable optimisation, tu peux regarder ici...
Pour illustrer mes histoires d'optimisation, cet exemple est parfait...

Code : Tout sélectionner

if bTemp == 0
        set bTemp to 1
endif
; vs
set bTemp to 1
La seconde écriture est plus rapide... ça semble logique...
Pourtant, si on regarde su le wiki d'Oblivion, ça dépend de la façon dont c'est écrit...


Incidemment, ton second script est "drastiquement" plus long à l'exécution que ton premier...
En effet, quand le jeu tombe sur un return, ceci provoque un point de sortie du script, le script reprend donc dès le début...
J'imagine que tu voulais utiliser ton return pour créer une boucle sur le bloc, c'est à priori logique* mais comme le return fait sortir du bloc courant en coupant tout, ça ne fonctionne pas...
Or dans ton premier script, tu fais le return dès le début, et comme expliqué ici, le système de script va lire le script jusqu'au premier return (à priori il y en a automatiquement un à la fin de chaque script), même quand il ne l'exécute pas...
Il vaut donc mieux placer le return aussi haut que possible dans le script...


*C'est certes logique, mais dangereux...
Comme je l'ai dit sur Wiwiland, le bloc OnActivate n'est joué que sur une unique frame...
Si on fait une boucle dans un tel bloc, bonjour le freeze du jeu...
Warhead
Confrère
Messages : 18

Re: Demande de différents SCRIPTS

Message par Warhead »

Ça c'est une femme ! Laisse tomber je veux la même chez moi !
Avatar du membre
T!TER
Confrère
Messages : 3933

Re: Demande de différents SCRIPTS

Message par T!TER »

Merci pour tous tes conseils, et désolé de ne pas avoir lu tout le message jusqu'au bout, j'étais allé un peu à la va-vite. ^^
Je te remercie également pour le lien vers les tests de performance des scripts, ça permet de bien voir comment optimiser les mods ! Ca risque de m'être utile pour mes prochains mods (classés top-secret dans une armoire blindée avec 20 mètres de plomb et fermée par une dizaine de cadenas à 50 chiffres doublés d'une triple protection en titane et en kevlar transparent... :mrgreen: )
"Prends la vie avec légèreté, il y aura moins d'obésité..."
de Moi-même, Copyright T!TER 2012
Répondre

Retourner vers « Idées »