| Mes premières questions | |
|
|
|
Auteur | Message |
---|
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Mes premières questions Lun 4 Jan 2010 - 22:00 | |
| Bonjour à tous ! Alors voilà, j'ai tâté du steak et ce soft comble entièrement mes attentes ! Après m'être entrainé, j'ai commencé ce soir les premières ébauches manuscrites. Ma première question serait de savoir quel est le script à intégrer sur deux personnages (en gros le héro suit un gars...), afin qu'ils aillent jusqu'à une porte puis qu'ils passent à une autre room. Deuxio, quel est votre truc pour faire interagir deux persos différents lors d'une animation ? Faut-il se casser la tête à faire au millimètre près ou confondre les deux dans une seule animation, ... ? En tout cas, le gros problème réside dans le design. Je suis nul et tiens vraiment à avoir kéchoz de propret et visuellement beau. Pour l'histoire, c'est un univers SF. En fait j'écris un livre et j'ai repris l'histoire d'un des protagonistes à la sauce embranchements C'est un type lambda qui se retrouve dans un monde totalement inconnu dans lequel plusieurs races extraterrestres et robotiques se partage l'univers (brièvement...). Il apprendra vite qu'on l'a capturé pour venir le faire travailler; la suite héhé... J'espère avoir l'énergie de faire ce projet comme j'en ai envie avec les limites que je me suis imposé. Souhaitez moi bon courage : A bientôt |
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Mes premières questions Mar 5 Jan 2010 - 9:24 | |
| Bon courage ! Pour qu'un perso suive l'autre, utilise la fonction Character.FollowCharacter, et personnalise-la avec les paramètres qui indiquent la distance à laquelle ils se tiennent l'un de l'autre, et sa vitesse de réactivité. Pour faire interagir deux persos, il n'y a pas de solution miracle. A toi de voir ce qui te convient le mieux ! Si l'interaction est complexe, une seule animation est plus simple à faire. Sinon, positionne-les au pixel près. |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mar 5 Jan 2010 - 17:30 | |
| Salut, au passage juste pour souhaiter bonne chance et rappeler qu'au moindre problème demande-nous Le seul conseil que je pourrais te donner serait de bien finir ton scénario avant de passer aux graphismes et à la programmation. Bon courage ! _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mar 19 Jan 2010 - 20:02 | |
| Bonsoir à tous,
Le projet avance, mon frère infographiste m'a rejoint dans l'aventure pour le design et l'anim'. J'apprends petit à petit les joies du script et du codage et ça me plait vraiment. Changement d'horizon, étant un grand fan de films de zombi j'ai décidé d'exploiter ce thème, plus abordable à mon goût.
J'ai plein de questions qui me trottent en tête mais je verrai où je bloque pour ne pas en poser pleins sachant peut-être y remédier seul.
A pluch' |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mar 19 Jan 2010 - 20:45 | |
| Ha bé voilà, je bloque totalement sur un ch'tit truc. Quelle fonction faut-il déclarer (?) (j'apprends) pour faire parler le personnage d'entrée de jeu dans une room (ou tout autre action). Merci à vous |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mar 19 Jan 2010 - 21:24 | |
| Reuh, je vous laisse un bout de dialogue pour vous expliquer: @2 cChar:Bon c'est comme ca cChar:JE ME BARRE cChar.Walk(397,316); stop Voilà, je voudrais que une fois le perso arriver aux coordonnées, il disparaisse. Ou alors plus professionnel faire un fondu et qu'il disparaisse durant le fondu (changement de room (la même) mais lui en moins ?). Voilà, j'espère être clair |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mar 19 Jan 2010 - 23:40 | |
| Je laisse les formules de politesse de côté Voilà: comment enclencher une fonction une seule et unique fois. En fait, je fais parler un personnage en passant sur une région et je voudrais bien qu'il dise une seule fois la phrase assignée. Encore et toujours merci d'avance. |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mar 19 Jan 2010 - 23:51 | |
| - Citation :
- Quelle fonction faut-il déclarer (?) (j'apprends) pour faire parler le personnage d'entrée de jeu dans une room (ou tout autre action).
Events => Enters room after fade-in => cPersonnage.Say("Bla bla..."); - Citation :
- Voilà, je voudrais que une fois le perso arrivé aux coordonnées, il disparaisse. Ou alors plus professionnel faire un fondu et qu'il disparaisse durant le fondu (changement de room (la même) mais lui en moins ?).
J'ai pas très bien compris, pour faire disparaître un personnage tu peut utiliser la propriété cPersonnage.Visible = False; mais ça sera instantané. J'essaye en ce moment de voir si on peut faire disparaitre progressivement un personnage, mais je trouve que ça ne fonctionne pas correctement (par exemple si on fait une boucle incrémentale jusqu'à 100 où i est la propriété Transparency du personnage, alors le personnage ne changera pas avant d'atteindre 100 pile, ce qui ne crée pas le dégradé voulu ) - Citation :
- Comment enclencher une fonction une seule et unique fois. En fait, je fais parler un personnage en passant sur une région et je voudrais bien qu'il dise une seule fois la phrase assignée.
Tu crées ta region (déjà fait normalement). Ensuite Events => walk onto region => cPersonnage.Say("Bla bla..."); EDIT : La fonction sera en faite appelée une fois dès que le personnage pénètre dans la zone. S'il quitte la zone et qu'il revient, la fonction sera de nouveau appelée. Si tu veux une seule et unique phrase de tout le jeu, alors tu peut désactiver le region en faisant : - Code:
-
function region1_WalksOnto() { cPersonnage.Say("Bla bla..."); region[1].Enabled = false; } _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 8:38 | |
| - Crazy Legs a écrit:
-
- Citation :
- Voilà, je voudrais que une fois le perso arrivé aux coordonnées, il disparaisse. Ou alors plus professionnel faire un fondu et qu'il disparaisse durant le fondu (changement de room (la même) mais lui en moins ?).
J'ai pas très bien compris, pour faire disparaître un personnage tu peut utiliser la propriété cPersonnage.Visible = False; mais ça sera instantané. J'essaye en ce moment de voir si on peut faire disparaitre progressivement un personnage, mais je trouve que ça ne fonctionne pas correctement (par exemple si on fait une boucle incrémentale jusqu'à 100 où i est la propriété Transparency du personnage, alors le personnage ne changera pas avant d'atteindre 100 pile, ce qui ne crée pas le dégradé voulu ) C'est marqué dans l'aide : - Citation :
- Some rounding is done internally when the transparency is stored -- therefore, if you get the transparency after setting it, the value you get back might be one out. Therefore, using a loop with cEgo.Transparency++; is not recommended as it will probably end too quickly.
Il faut passer par une variable intermediaire comme dans l'exemple : - Code:
-
int trans = cEgo.Transparency; while (trans < 100) { trans++; cEgo.Transparency = trans; Wait(1); } |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 15:01 | |
| C'est pourtant ce que j'ai fait, j'ai vu l'exemple mais j'ai pas fait de boucle. Je sais pas, d'ailleurs j'ai même utilisé ce code et ça fonctionne pas.
J'étais pourtant en 16 bits.
Ça marche chez toi Asraroth ?
PS : BINGO j'ai compris d'où ça venait et j'en suis étonné. En fait il faut utiliser tout simplement le moteur Direct3D 9 (ce qu'ils ne précisent pas dans l'aide ou du moins ils n'empêchent pas l'utilisation de DirectDraw 5) _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 17:01 | |
| Merci je commence à bien comprendre la logique de la programmation.
Je voulais juste savoir si on peut créé daprès les coordonnées d'un perso. Concrètement dans ce cas:
@2 cChar:Bon c'est comme ca cChar:JE ME BARRE cChar.Walk(397,316); stop
-> function (?) cChar.Visible = False;
Ca pourrait marcher ?
Y-a-til une fonction qui "dirait" que une fois cChar aux coordonnées ils disparaissent. |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 17:35 | |
| Tout simplement : - Code:
-
cChar:Bon c'est comme ca cChar:JE ME BARRE cChar.Walk(397,316); cChar.Visible = False; Et si tu veux faire disparaître le personnage en fondu tu peux te créer une fonction : Tu vas dans GlobalScript.ash, tu mets ce prototype de fonction : - Code:
-
// Main header script - this will be included into every script in // the game (local and global). Do not place functions here; rather, // place import definitions and #define names here to be used by all // scripts.
import function FadeOutCharacter(this Character*); Puis dans le GlobalScript.asc tu mets : - Code:
-
// main global script file
function FadeOutCharacter(this Character*) { int trans = this.Transparency;
while(trans < 100) { trans++; this.Transparency = trans; Wait(1); } } Ton code ressemble alors à : - Code:
-
cChar:Bon c'est comme ca cChar:JE ME BARRE cChar.Walk(397,316); cChar.FadeOutCharacter(); Question : Tu mets @2 et stop dans tes posts, ces dialogues se trouveraient-ils dans un dialogue ? _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 17:43 | |
| Oui c'est dans un dialogue. J'ai oublié la tabulation dans les exemples. Je suis désolé de ne pas être très clair, mais je n'ai jamais réellement touché à la programmation. Sur ce je m'amuse très fort (surtout avec les dialogues ) et avance bien dans mon entrainement quotidien à AGS. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 18:46 | |
| Tazaamm nouvelle question function cChar_Talk() { dDialog0.Start(); } Voilà je voudrais qu'après avoir lancé le dialogue, la prochaine fois que je cliquerai sur cChar, il me dise un truc du genre "je t'ai tout dit". Merci |
|
| |
Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 21:23 | |
| une méthode : - déclare une variable booléenne "dejatoutdit" à false : - Code:
-
bool dejatoutdit = false; - quand le dialogue est lancé, on passe la variable à "true"... mais on ne lance le dialogue que si la variable est à "false" (donc la 1ère fois) - Code:
-
function cChar_Talk() { if (dejatoutdit) { cChar.say("Je t'ai tout dit."); } else { dejatoutdit = true; dDialog0.Start(); } }
|
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 21:31 | |
| Eh bien pour faire simple tu peux toujours essayer de télécharger mon module (qui en faite n'est plus téléchargeable ). Voici le code du module : - Code:
-
function HasBeenAlreadyExecuted(this Dialog*) { bool AlreadyExecuted = false; int i = 1; while(i <= this.OptionCount) { if(this.HasOptionBeenChosen(i)) { AlreadyExecuted = true; } i++;
} return AlreadyExecuted;
} Tu mets ça dans le GlobalScript.asc et le prototype qui suit dans GlobalScript.ash : - Code:
-
// new module header
import function HasBeenAlreadyExecuted(this Dialog*); La méthode d' Asra est plus simple mais l'avantage de la mienne c'est qu'elle est réutilisable et qu'elle n'utilise pas de variable (niak niak ). - Spoiler:
Ouais et puis zut hein, faut bien donner une utilité à mon prétentieux module : : Ton code ressemblerait donc à ça : - Code:
-
function cChar_Talk() { if(dDialog0.HasBeenAlreadyExecuted()) cChar.Say("Prout prout !!!"); else dDialog0.Start(); } _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 21:36 | |
| Je comprends !!! GENIAL ! merci mille fois. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 21:40 | |
| Merci Crazy Legs, serait-ce abuser de te demander de m'expliquer plus ou moins ligne par ligne la signification des "lignes de code" (dites moi si je dis n'importe quoi) de ton module. J'aime bien comprendre et apprendre et pas mettre directement. |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 22:40 | |
| Ah mais avec plaisir. Donc d'abord petite précision pour les fonctions, car tu l'auras sûrement deviné, mais en faite mon module c'est juste une fonction comme la fonction Say ou Display que tu dois connaître je pense. Cette fonction ne nécessite pas d'argument, mais une structure, ici cette structure c'est Dialog, on écrit donc le prototype de la fonction comme ceci : - Code:
-
import // Permet de rendre la fonction global, plus exactement de la rendre accessible hors script d'écrit, donc dans tous les Edit Room, le GlobalScript, etc.
function // Permet de déclarer une fonction
HasBeenAlreadyExecuted // Nom de la fonction
this *Dialog // Structure de la fonction, cette dernière ne sera appelable que via cette structure, this sera remplacé par la variable de type Dialog. L'astérisque devant Dialog signifie qu'on prend un pointeur sur Dialog (notion compliquée attention).
import function HasBeenAlreadyExecuted(this Dialog*); Pourquoi et qu'est-ce qu'un prototype : C'est une déclaration qui permet d'éviter par exemple qu' AGS rencontre un appel de cette fonction et qu'elle ne sache pas quoi en faire. En mettant un prototype dans un fichier fait pour recevoir des prototypes (. ash), cela permet de prévenir AGS : "Eh Roger, n'oublie qu'il y a cette fonction qui existe, qu'elle a tels arguments et telle structure !!!". Voilà, si tu n'as pas compris ça c'est pas grave c'était trop bref. [PUB]Dans ma signature j'ai fait un tuto bien mieux expliqué[/PUB] Venons-en à la fonction. Ici on veut savoir si un dialogue a été ou non déjà lancé. Certaines propriétés relatives aux Dialog (je parle de la structure attention) évidemment, vont nous intéresser :
- Dialog.HasOptionBeenChosen(int Option),
- Dialog.OptionCount,
Le premier permet de savoir si une option a été déjà choisie (si c'est le cas la fonction renvoie 1, sinon 0). Le deuxième est une propriété statique, elle contient le nombre total d'options que compose le Dialog. En sachant tout, ça tu peux très bien en déduire que :Si on vérifie toutes les options d'un Dialog et que l'une d'entre elle au moins a déjà été lancée, alors c'est que le dialogue aussi l'a été. Donc on fait une boucle incrémentale qui dépendra du nombre d'option du Dialog : - Code:
-
int i; // Cette variable permet d'identifier chaque option (i = index[UK]/indice[FR])
while(i <= this.OptionCount) // Cette boucle s'exécutera tant que l'on a pas vérifier toutes les options. {
i++; // On incrémente (on ajoute 1) à la variable pour passer à l'option d'indice supérieur. } J'ai mis ça pour pas trop charger, mais tu l'auras vu, elle est encore incomplète cette boucle, maintenant que va-t-on vérifier OptionCount fois ? ... On va vérifier si l'option a été choisie : - Code:
-
int i;
while(i <= this.OptionCount) {
if(this.HasOptionBeenChosen(i))
i++; } this reprend bien la structure Dialog pour pouvoir l'affecter "a distance" puisque cette structure est un pointeur (pas évident à comprendre je te l'avoue ). En fait tu dois juste comprendre que quand tu fais par exemple : dDialogSam.HasBeenAlreadyExecuted()this est remplacé par dDialogSam, tout simplement... Si HasOptionBeenChosen() renvoie 1, alors on arrête la fonction puisqu'on sait tout de suite qu'il y a au moins une option d'active et on renvoie 1 également pour dire que le dialogue a bien été déjà exécuté. Si après CountOption fois, HasOptionBeenChosen() aura renvoyé 0, alors on sort de la boucle et on arrête à nouveau la fonction mais en renvoyant 0 pour dire que le dialogue n'a jamais été exécuté. - Code:
-
function HasBeenAlreadyExecuted(this Dialog*) {
int i;
while(i <= this.OptionCount) {
if(this.HasOptionBeenChosen(i)) return 1;
i++; }
return 0; // Les returns sont des types qui permettent de contrôler le déroulement d'une fonction, un return lu stoppe net la fonction même s'il y avait encore des lignes de codes à lire. } Et bien c'est tout, c'est fini, la fonction est utilisable et même réutilisable, en plus elle ne pollue pas J'espère t'avoir bien aidé et n'hésite pas à visiter mon tuto pour apprendre plus pas à pas la programmation. N'hésite pas je suis payer pour ça _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 23:40 | |
| HHHAAAAA mais c'est toi l'instigateur du tuto sur le site du zéro ! Je te remercie doublement alors car il m'est très utile, je l'ai même imprimé et classé dans une farde (d'ailleurs faudrait en faire une version imprimable ) Si de plus, c'est toi qui a fait les vidéos de tuto sur Dailymotion, bah alors triple merci ! héhé Super communauté en tout cas, ça me motive ! |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 23:45 | |
| Petite question:
Je fais marcher le perso. principale via la fonction Walk. Cependant, alors qu'il marche vers la destination, il s'arrête si je clique à n'importe quel endroit. Peut-on interdire le joueur d'interagir durant une période ? |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Mer 20 Jan 2010 - 23:48 | |
| Vive le dossier HELP ! J'ai trouvé suffit de rajouter 'eBlock' dans les "arguments" (c'est bien ça entre les parenthèses ?). |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Jeu 21 Jan 2010 - 0:52 | |
| Comment stopper la fonction Character.Follow etc etc, car le personnage qui me suit, apparait et me suit même quand je change de room :s |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: Re: Mes premières questions Jeu 21 Jan 2010 - 7:58 | |
| Essaye avec la fonction cChar.StopMoving() Pas sûr que ça marche mais sait-on jamais... _________________ VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO ! Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien. |
|
| |
Spootchy C'est quoi la Tasse Bleue ?
Nombre de messages : 37
Age : 37
Localisation : Louf' - Belchik'
Date d'inscription : 30/12/2009
| Sujet: Re: Mes premières questions Jeu 21 Jan 2010 - 11:51 | |
| Non déjà essayé hier soir Je l'ai personnaliser en mettant une abcisse à laquelle le perso. doit s'arrêter mais il en est rien... |
|
| |
Contenu sponsorisé
| Sujet: Re: Mes premières questions | |
| |
|
| |
| Mes premières questions | |
|