• 06 Juin 2026, 16:16:32


Auteur Sujet: Problème de Boucle ou de fonction ?  (Lu 2462 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Problème de Boucle ou de fonction ?
« le: 05 Mai 2011, 21:45:21 »
Bonsoir, j'ai créer un système de tp particulier, bref quand on veux ouvrir un menu il faut etre a coté d'un objet.  J'utilise un boucle For  pour voir si le joueur est a coté d'un de ses objets.

Voici le code:


<?php
for(new 0sizeof(InfoBorne); i++)
{
    printf("'i' est egal a: %d",i);
    printf("Valeur de test: %f, %f, %f",InfoBorne[i][PosX],InfoBorne[i][PosY],InfoBorne[i][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[1][PosX],InfoBorne[1][PosY],InfoBorne[1][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[3][PosX],InfoBorne[3][PosY],InfoBorne[3][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[5][PosX],InfoBorne[5][PosY],InfoBorne[5][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[7][PosX],InfoBorne[7][PosY],InfoBorne[7][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[11][PosX],InfoBorne[11][PosY],InfoBorne[11][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[9][PosX],InfoBorne[9][PosY],InfoBorne[9][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[6][PosX],InfoBorne[6][PosY],InfoBorne[6][PosZ]);
    printf("Valeur de test: %f, %f, %f",InfoBorne[3][PosX],InfoBorne[3][PosY],InfoBorne[3][PosZ]);
if(IsPlayerInRangeOfPoint(playerid5InfoBorne[i][PosX],InfoBorne[i][PosY],InfoBorne[i][PosZ]))
{
    if(IsPlayerConnected(playerid))
{
      PlayerPlaySound(playerid10540.00.00.0);
         ShowPlayerDialog(playerid,MENUPR,DIALOG_STYLE_LIST,"MON DIALOG","Ok""Retour");
return 1;
}
}
else
{
     SendClientMessage(playerid0x00D269FF,"Vous n'ete pas a coté de objet!");
     return 1;
}
}
?>

Avec mes valeur de test sa fonctionne bien mais sinon 'i' me renvoie toujours '0' .

J'ai déjà eu il y a plusieurs année ce type de problème mais qui n'a jamais été résolu.

Merci pour votre éventuelle aide.

Vince.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #1 le: 05 Mai 2011, 21:49:21 »
peut t'on voir a quoi coorespond exactement InfoBorne
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #2 le: 05 Mai 2011, 21:51:24 »
<?php
enum BorneSystem
{
Id,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:RotX,
Float:RotY,
Float:RotZ
}
new 
InfoBorne[40][BorneSystem];
?>


Voila, merci.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #3 le: 05 Mai 2011, 21:56:56 »
grosso modo quand tu creer une tu ajoute bien +1 a l'id?
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #4 le: 05 Mai 2011, 22:00:34 »
Oui oui tout les objets de tp on un ID auto-incrémenté, je ne comprend pas d'ou vient le problème ?


Vince.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #5 le: 05 Mai 2011, 22:04:51 »
fais comme cela donc

for(new i = 0; i < 40; i++)
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #6 le: 05 Mai 2011, 22:19:01 »
Toujours le même problème.


Vince.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #7 le: 06 Mai 2011, 00:02:08 »
1 - As-tu un warning à la compilation ?

2 - Combien de messages < 'i' est egal a: > sont présents dans le log du serveur ?

De plus, indépendamment du bug dont tu parles, ton code est à revoir :
Voici le pseudo-code de ton bout de script
Boucle sur le tableau
   Si joueur à côté objet
      Afficher Boite de Dialogue
   Sinon
      Afficher message d'erreur <- Si le joueur est à côté du dernier objet du tableau, ce message sera affiche 39 fois au joueur !!
   Finsi
FinBoucle


Et le test sur IsPlayerConnected est absolument inutile puisque j'imagine que ce code est dans une commande (et si le joueur fait la commande c'est qu'il est connecté).
Courtesy of GtaManiac

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Re : Problème de Boucle ou de fonction ?
« Réponse #8 le: 06 Mai 2011, 00:37:05 »
1 - As-tu un warning à la compilation ?

2 - Combien de messages < 'i' est egal a: > sont présents dans le log du serveur ?

De plus, indépendamment du bug dont tu parles, ton code est à revoir :
Voici le pseudo-code de ton bout de script
Boucle sur le tableau
   Si joueur à côté objet
      Afficher Boite de Dialogue
   Sinon
      Afficher message d'erreur <- Si le joueur est à côté du dernier objet du tableau, ce message sera affiche 39 fois au joueur !!
   Finsi
FinBoucle


Et le test sur IsPlayerConnected est absolument inutile puisque j'imagine que ce code est dans une commande (et si le joueur fait la commande c'est qu'il est connecté).

Bonsoir, aucun Warning a la compilation, quand au message il ne s'affichent qu'une seule fois.

Merci.

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #9 le: 06 Mai 2011, 12:40:02 »
Difficile d’être plus clair que sim

if(IsPlayerInRangeOfPoint(playerid, 5, InfoBorne[i][PosX],InfoBorne[i][PosY],InfoBorne[i][PosZ]))
{
    if(IsPlayerConnected(playerid))
{
    PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
        ShowPlayerDialog(playerid,MENUPR,DIALOG_STYLE_LIST,"MON DIALOG","Ok", "Retour");
return 1;
}
}
else
{
    SendClientMessage(playerid, 0x00D269FF,"Vous n'ete pas a coté de objet!");
    return 1;
}

tes return 1; sont tout simplement mal placé
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Re : Problème de Boucle ou de fonction ?
« Réponse #10 le: 06 Mai 2011, 12:41:41 »
Difficile d’être plus clair que sim syg  :P
apparement tu les confond souvent^^
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Re : Problème de Boucle ou de fonction ?
« Réponse #11 le: 06 Mai 2011, 18:07:20 »
Difficile d’être plus clair que sim

if(IsPlayerInRangeOfPoint(playerid, 5, InfoBorne[i][PosX],InfoBorne[i][PosY],InfoBorne[i][PosZ]))
{
    if(IsPlayerConnected(playerid))
{
    PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
        ShowPlayerDialog(playerid,MENUPR,DIALOG_STYLE_LIST,"MON DIALOG","Ok", "Retour");
return 1;
}
}
else
{
    SendClientMessage(playerid, 0x00D269FF,"Vous n'ete pas a coté de objet!");
    return 1;
}

tes return 1; sont tout simplement mal placé

Merci 'scott1'

Vince.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème de Boucle ou de fonction ?
« Réponse #12 le: 06 Mai 2011, 22:52:49 »
Bonsoir, aucun Warning a la compilation, quand au message il ne s'affichent qu'une seule fois.
De la façon dont ta boucle est faite, il est normal qu'elle ne soit exécutée qu'une seule fois car tu passes forcément par un des deux return dès le premier "tour" de la boucle.

Donc, non scott1, les return ne sont pas "mal placés", ils sont tout simplement en trop.
C'est tout le bout de script qu'il faut revoir.

Voici la façon dont j'aurais fait cette boucle :
new Trouve=0;

/* Ceci n'est qu'une boucle de recherche, elle ne fait aucun traitement */
for(new i=0 ;  i<sizeof(InfoBorne), Trouve==0 ; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5, InfoBorne[i][PosX],InfoBorne[i][PosY],InfoBorne[i][PosZ]))
{
Trouve = 1; // Un objet a été trouvé, on termine donc la boucle et i contient l'index de l'objet trouvé
}
}

/* Si un objet a été trouvé */
if (Trouve == 1)
{
/* Ici, on peut se servir de i pour savoir quel objet a été trouvé */
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
ShowPlayerDialog(playerid,MENUPR,DIALOG_STYLE_LIST,"MON DIALOG","Ok", "Retour");
}

/* Aucun objet trouvé */
else
{
SendClientMessage(playerid, 0x00D269FF,"Vous n'êtes pas a côté d'un objet!");
}

++
Syg
Courtesy of GtaManiac