Page 1 sur 1

Erreur de variable=>Briefing memphis

Posté : mer. 16 févr. 2011, 18:40
par =[TTK]= Yourry
Bin tout est dans le titre:
-mon problème est une variable qui ne serrait pas définie
-le hic se trouve dans le briefing que Memphis nous a concocter.

Je vous donne le .rpt:

Code : Tout sélectionner


Switch (_tskobj4_0_old) Do
{
Case "None" :
{
obj>
  Error position: <_tskobj4_0_old) Do
{
Case "None" :
{
obj>
  Error Variable indéfinie dans une expression: _tskobj4_0_old
File E:\Dim\Documents\ArmA 2 Other Profiles\=[TTK]=%20Yourry\missions\Projet_Yourry.Takistan\briefing.sqf, line 35

Et voici l'extrait du brienfing qui déconne

/Briefing (extrait)

//on définit ici autant de variables locales que d'objectifs
_tskObj1_0_old = nil;
_tskobj2_0_old = nil;
_tskobj3_0_old = nil;
_tskobj4_0_old = nil;

// ----- Objectifs -----

//les 3 lignes supplémentaires ici servent à cocher les objectifs de façon approprié
if (!isNil "obj4_0") then {_tskobj4_0_old = taskstate Obj4_0;};
Obj4_0 = player createSimpleTask["Mettre en lieu sûr le scud"];
Obj4_0 setSimpleTaskDescription["Dès que le scud serra en votre possession, il faudra contacter le QG pour demander l'évacuation du scud", "Mettre en lieu sûr le scud", "Mettre en lieu sûr le scud"];


Switch (_tskobj4_0_old) Do //(cette ligne qui déconne)
{
Case "None" :
{
obj4_0 setTaskState "None";
};
Case "Created" :
{
obj4_0 setTaskState "Created";
};
Case "Assigned" :
{
player SetCurrentTask obj4_0;
};
Case "Succeeded" :
{
obj4_0 setTaskState "Succeeded";compteBLUFOR = compteBLUFOR + 3;
};
Case "Failed" :
{
obj4_0 setTaskState "Failed";
};
Case "Canceled" :
{
obj4_0 setTaskState "Canceled";
};
};
Je ne comprend pas pourquoi, il me dit que la variable n'est pas définie alors que juste en haut on dit bien:

Code : Tout sélectionner

	_tskobj4_0_old     = nil;
Merci

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 08:50
par =[TTK]= Freshmeat
_tskobj4_0_old = nil;
Cela ne servirait-il pas justement à supprimer la variable :
Description:Nil value. This value can be used to undefine existing variables
Courage, celui qui maîtrise le briefing passe automatiquement ceinture noire 12ème dan d' Arma scripting.

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 09:27
par =[TTK]= Memphis007
Oui tout a fait Fresh, en fait la question Yourry c'est combien tu as d'objectifs sur cette mission ? si tu n'en a que 3 il faut supprimer la partie liée à cette 4ème variable

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 13:42
par =[TTK]= Freshmeat
Tu voudrais dire que s'il n'y a que 3 objectifs, il ne faut pas en paramétrer 4 ?
Comme c'est bizarre comme c'est étrange ....

Cela dit j'ai aussi bientôt fini mon template de briefing de mon côté :
- il me reste à tester le JIP : cela dit vous pouvez proocéder avec la mission "petrolum Humanum est".
- il me reste à tester le MP : cela dit se sera fait avec la mission RVB.

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 16:09
par =[TTK]= Memphis007
=[TTK]= Freshmeat a écrit :Tu voudrais dire que s'il n'y a que 3 objectifs, il ne faut pas en paramétrer 4 ?
Comme c'est bizarre comme c'est étrange ...
Si je ne te connaissais pas je pourrais croire que tu te fiches de moi :mrgreen:

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 17:25
par =[TTK]= Freshmeat
Non, pas spécifiquement.
Disons que si Yourry n'a que 3 objectifs c'est plus pour lui, mais que s'il en a effectivement au moins 4, c'est plus pour toi :p

Comme ça y a pas de gâchi : vive le recyclage et vive les économies, et en plus tout le monde a sa chance.


Maintenant reste à savoir combien il y a d'objectifs à gérer ... Suspens ...

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 18:01
par =[TTK]= Yourry
Ben si, il y a bien 4 objectifs par camp, donc 4 X 3 cela nous donne 12 objectifs !
Arf là je crois que c'est plus pour Memphis (et pour rappel j'ai pris ton briefing !)


Alors je met quoi ?
Voilà le coupable, bon appétit:

Code : Tout sélectionner

    //on attend que les joueurs prennent possession de leurs corps

    waitUntil { !isNil {player} };
    waitUntil { player == player };
	switch (side player) do 

	
		case WEST: 
	{			
    // ----- Notes -----
	

	player createDiaryRecord ["Diary",["Le général Atom Fission en personne","Vous savez peu de chose sur lui. Ce que l'on sait, c'est qu'il est haut gradé dans l'armée Américaine et interlocuteur privilégié avec la maison blanche. La photo du général:<br/><br/><img image='images\general.jpg' width='240' height='384'/>,<br/> <br/>"]];
	player createDiaryRecord ["Diary",["L'évasion du général","Etant donné, l'importance du personnage, le QG met les moyens ! Il vous suffira de contacter le QG par un appel radio via le canal radio pour informer que vous êtes en présence du général. Dès que vous sauvez la zone sûre, l'extraction peut être demandée. Un important dispositif serra mit en place pour son évacuation, vous devrez alors suivre alors les consignes qui seront données en temps réels. Si l'hélico d'extraction est abattue avant d'avoir embraquer le général, cette tâche est annulée et échouée."]];
	player createDiaryRecord ["Diary",["Le contexte du sud Takistanais","Cette partie du pays, loin de la capitale, n’est pas réellement contrôle par le gouvernement. Une myriade de milices locales y règnent en maître. Cette terre du sud montagneuse et très ensoleillé est propice à l’exploitation de plantes destinnées au trafique de drogue."]];
	player createDiaryRecord ["Diary",["Team TTK","Cette mission vous est proposée par la team des team top !<br/>Mission spécialement conçue pour la rencontre PvP TTK vs OTEA.<br/>Notre site internet<a>www.team-ttk.fr<a/>.<br/>Si lors de la mission, vous avez des bugs, problèmes, etc. N'hésitez pas à faire remonter les infos sur notre forum pour corriger les erreurs.<br/>La team TTK vous souhaite une bonne partie.<br/><br/><img image='images\ecusson.paa' width='192' height='120'/>"]];
	// m ettre le spitch sur l'OTEA
	player createDiaryRecord ["Diary",["Les quelques règles","Quelques règles évidentes sont à rappeller:<br/>Avant tout, de la joie, de la bonne humeur, du respect et pas de conneries (enfin pas trop ;-)  ; surtout pour la TTK) :<br/>-Pas de team kill dans les zones de respawn et interdiction d'y pénétrer pour les adversaires (mort automatique du tireur en cas d'éffraction)<br/>-Interdiction d'aller dans la zone sud de la carte en rouge<br/>-Le score individuel ne compte pas pour la victoire, seul l'équipe ayant réussi tout ses objectifs serra vainqueur.<br/>-Et puis toute les règles de bienséances."]];

    //on définit ici autant de variables locales que d'objectifs
    _tskObj1_0_old     = nil;
    _tskobj2_0_old     = nil;
    _tskobj3_0_old     = nil;
	_tskobj4_0_old     = nil;
	
    // ----- Objectifs -----

    //les 3 lignes supplémentaires ici servent à cocher les objectifs de façon approprié
	    if (!isNil "obj4_0") then {_tskobj4_0_old = taskstate Obj4_0;};
    Obj4_0 = player createSimpleTask["Mettre en lieu sûr le scud"];
    Obj4_0 setSimpleTaskDescription["Dès que le scud serra en votre possession, il faudra contacter le QG pour demander l'évacuation du scud", "Mettre en lieu sûr le scud", "Mettre en lieu sûr le scud"];
   
	
      Switch (_tskobj4_0_old) Do
      {
       Case "None" :
       {
        obj4_0 setTaskState "None";
       };
       Case "Created" :
       {
        obj4_0 setTaskState "Created";
       };
        Case "Assigned" :
       {
        player SetCurrentTask obj4_0;
       };
        Case "Succeeded" :
       {
        obj4_0 setTaskState "Succeeded";compteBLUFOR = compteBLUFOR + 3;
       };
        Case "Failed" :
       {
        obj4_0 setTaskState "Failed";
       };
        Case "Canceled" :
       {
        obj4_0 setTaskState "Canceled";
       };
      };
	
	
	
    if (!isNil "obj2_0") then {_tskobj2_0_old = taskstate Obj2_0;};
    Obj2_0 = player createSimpleTask["Trouver le scud"];
    Obj2_0 setSimpleTaskDescription["Suite à la vente de cette arme nucléaire par le général, vous devez le récuperer et le mettre en lieu sûr.", "Trouver le scud", "Trouver le scud"];
   
	
      Switch (_tskobj2_0_old) Do
      {
       Case "None" :
       {
        obj2_0 setTaskState "None";
       };
       Case "Created" :
       {
        obj2_0 setTaskState "Created";
       };
        Case "Assigned" :
       {
        player SetCurrentTask obj3_0;
       };
        Case "Succeeded" :
       {
        obj2_0 setTaskState "Succeeded";compteBLUFOR = compteBLUFOR + 1;
       };
        Case "Failed" :
       {
        obj2_0 setTaskState "Failed";
       };
        Case "Canceled" :
       {
        obj2_0 setTaskState "Canceled";
       };
      };


    if (!isNil "Obj1_0") then {_tskObj1_0_old = taskstate Obj1_0;};
    obj1_0 = player createSimpleTask["Ramener en vie le général"];
    obj1_0 setSimpleTaskDescription["Si le général est en vie, vous devez le ramener vivant à votre QG afin qu'il soit juger. Il est dans la base indépendante de <marker name='rasman'>Rasman</marker>", "Ramener en vie le général", "Ramener en vie le général"];
    Obj1_0 setSimpleTaskDestination (getMarkerPos "rasman");
    Switch (_tskObj1_0_old) Do
    {
    Case "None" :
    {
      Obj1_0 setTaskState "None";
    };
    Case "Created" :
    {
      Obj1_0 setTaskState "Created";
    };
      Case "Assigned" :
    {
      player SetCurrentTask Obj1_0;
    };
      Case "Succeeded" :
    {
      Obj1_0 setTaskState "Succeeded";compteBLUFOR = compteBLUFOR + 2;
    };
      Case "Failed" :
    {
      Obj1_0 setTaskState "Failed";
    };
      Case "Canceled" :
    {
      Obj1_0 setTaskState "Canceled";
    };
    };	

    // si des objectifs sont déclarés pendant la mission, il faut les rappeler ici (ob2_0=true; publicVariable "ob2_0"; lorsque obj2_0 est réussi)
    if (!isnil "ob2_0") then {
      if (!isNil "obj3_0") then {_tskobj3_0_old = taskstate obj3_0;};
      obj3_0 = player createSimpleTask["Trouver le PC de déverrouillage"];
      obj3_0 setSimpleTaskDescription["Le général vous a indiqué que pour conduire le scud il fallait trouver le code d'accès.<br/>En l'intérogeant ou en le fouillant, il devrait vous donner le code d'accès.<br/>Ensuite, il vous a juste dit d'aller faire un tour <marker name='labas'>là-bas</marker>", "Trouver le PC de déverrouillage", "Trouver le PC de déverrouillage"];
      Switch (_tskobj3_0_old) Do
      {
       Case "None" :
       {
        obj3_0 setTaskState "None";
       };
       Case "Created" :
       {
        obj3_0 setTaskState "Created";
       };
        Case "Assigned" :
       {
        player SetCurrentTask obj3_0;
       };
        Case "Succeeded" :
       {
        obj3_0 setTaskState "Succeeded";
       };
        Case "Failed" :
       {
        obj3_0 setTaskState "Failed";
       };
        Case "Canceled" :
       {
        obj3_0 setTaskState "Canceled";
       };
      };

    };

    //vérifie l'état de l'objectif 1, si il n'est pas réalisé, alors on le définit comme tâche actuelle (ob1=true; publicVariable "ob1"; lorsque Obj1_0 est réussi)
    if (isNil "ob1_0") then {player setcurrenttask Obj1_0;};


	};
	
Le briefing est partiel car il est multi-camp, m'enfin si cela marche pour les west cela devrait aussi pour les autres :mrgreen:

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 17 févr. 2011, 20:00
par =[TTK]= Memphis007
Arf là je crois que c'est plus pour Memphis (et pour rappel j'ai pris ton briefing !)
T'ain c'est la saint Memphis aujourd'hui ?? :Evil:

Alors en fait l'erreur dans le rpt me parait logique, vu que lors du spawn, obj4_0 n'est pas encore définit au moment ou je teste :

Code : Tout sélectionner

if (!isNil "obj4_0") then {_tskobj4_0_old = taskstate Obj4_0;}
donc _tskobj4_0_old est bien indéfinie, normalement au respawn le briefing est renvoyé au joueur avec cette fois la variable correctement définie, et donc à ce moment la variable existe et doit valoir l'état de la tache de Obj4_0 avant le respawn.

Je pense que si tu décale le test de 2 lignes (juste sous la définition de Obj4_0) tu ne devrai plus avoir d'erreur.

Re: Erreur de variable=>Briefing memphis

Posté : mer. 23 févr. 2011, 19:49
par =[TTK]= Yourry
T'ain c'est la saint Memphis aujourd'hui ?? :Evil:
Qu'est ce qui ne va pas ?

Tu boudes ?

Bon aller, ouvre une bière, pose toi, respire paisiblement et tu verras que ça ira mieux !

Je vais testé ta solution, merci ==> Elle fonctionne, MERCI !!! :D

Re: Erreur de variable=>Briefing memphis

Posté : mer. 23 févr. 2011, 20:01
par =[TTK]= Memphis007
Oui en même temps ça ne devait pas empêcher le scmilblick de fonctionner, c'est juste plus propre.

Re: Erreur de variable=>Briefing memphis

Posté : mer. 23 févr. 2011, 21:01
par =[TTK]= Yourry
Effectivement, mais j'ai déjà le .rpt bien chargé, c'est ça de moins !
C'est toujours mieux :mrgreen:

Re: Erreur de variable=>Briefing memphis

Posté : jeu. 24 févr. 2011, 15:53
par =[TTK]= Memphis007
=[TTK]= Yourry El Zekrit a écrit :Elle fonctionne, MERCI !!! :D

Petite précision, c'est quoi qui fonctionne ? tu n'as plus l'erreur mais est-ce que l'état des différents objectifs est bon après respawn ? Si non j'ai une autre solution à proposer