• 19 Avril 2025, 11:29:03


Auteur Sujet: [Demande Aide] Programmation IA  (Lu 4988 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #15 le: 15 Janvier 2014, 23:07:21 »
Salut,

désolé, j'ai pas eu trop le temps de tester et réfléchir à tout ça :p

je me suis informer un peu sur les fichiers tout ça, puis j'ai trouvé le moyen comme tu dis de lire donc avec fblockread, je rentre le nombre de cells là lire c'est à dire 8 ( 1 cells = 4 bits non ? ) puis je change l'index grâce à fseek

est-ce que tu pourrais me dire le format d'enregistrement enfin la forme du fichier stp ?


A+, Sam.
:cheers:

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #16 le: 15 Janvier 2014, 23:48:04 »
Salut, un cell correspond à 4 octets et non 4 bits ^^

Et pour la structure du fichier à toi de créer celle qui te convient le mieux.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #17 le: 16 Janvier 2014, 08:13:54 »
Salut, ah merde, j'étais persuadé du contraire :p

D'accord, oui mais Xartrick a dit justement de pas utiliser de X= etc..

j'avais pensé à une structure genre :

<Sector 1>
          0.0 0.0 0.0
          0.0 0.0 0.0
</sector 1>

comme ça je lis ligne par ligne, et je sais quand est la fin, et le début, ainsi que le numéro du secteur
vous en pensez quoi ?

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #18 le: 16 Janvier 2014, 11:04:41 »
Tu peux utiliser une structure de ce genre dans ce cas.


Code: (pawn) [Sélectionner]
enum e_Sector
{
i_SectorId,
Float:f_X,
Float:f_Y,
Float:f_Z
};

new Sector[e_Sector];




Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #19 le: 16 Janvier 2014, 15:11:38 »
Je parlais dans le fichier même :p

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #20 le: 16 Janvier 2014, 17:30:56 »
Oui, la structure sera la même dans le fichier ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #21 le: 16 Janvier 2014, 17:59:55 »
C'est à dire :

Sector 1

     0.0
     0.0
     0.0

     0.0
     0.0
     0.0


etc..

Sector 2

(...)


c'est ça ? xD

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #22 le: 16 Janvier 2014, 19:10:54 »
Tu galère un peu :P, je t'ai fait ça pour que tu puisse comprendre :

[spoiler]
Code: (pawn) [Sélectionner]
#include <a_samp>



enum e_Sector
{
        i_SectorId,
        Float:f_X,
        Float:f_Y,
        Float:f_Z
};
 


GetSectorCount(a_File[])
{
new File:l_file;
new Sector[e_Sector];
new l_count;

l_file = fopen(a_File, io_read);
l_count = 0;

if(l_file != File:0)
{
l_count = flength(l_file) / (sizeof(Sector) * 4/*sizeof(cell)*/);
fclose(l_file);
}
return l_count;
}

CreateSector(a_File[], a_SectorId, Float:a_X, Float:a_Y, Float:a_Z)
{
new File:l_file;
new Sector[e_Sector];

l_file = fopen(a_File, io_append);

if(l_file != File:0)
{
Sector[i_SectorId] = a_SectorId;
Sector[f_X] = a_X;
Sector[f_Y] = a_Y;
Sector[f_Z] = a_Z;

fblockwrite(l_file, Sector, sizeof(Sector));
fclose(l_file);
}
}

GetSector(a_File[], a_SectorId, &Float:a_X, &Float:a_Y, &Float:a_Z)
{
new File:l_file;
new Sector[e_Sector];
new i;

l_file = fopen(a_File, io_read);

if(l_file != File:0)
{
i = GetSectorCount(a_File);

while(i > 0)
{
fblockread(l_file, Sector, sizeof(Sector));

if(Sector[i_SectorId] == a_SectorId)
{
a_X = Sector[f_X];
a_Y = Sector[f_Y];
a_Z = Sector[f_Z];
i = 0;
}
i --;
}

fblockwrite(l_file, Sector, sizeof(Sector));
fclose(l_file);
}
}



public OnFilterScriptInit()
{
new Float:l_X, Float:l_Y, Float:l_Z;
new l_count;

CreateSector("s_001.sec", 0, 10.0, 0.0, 0.0);
CreateSector("s_001.sec", 1, 10.0, 10.0, 0.0);
CreateSector("s_001.sec", 2, 10.0, 10.0, 10.0);
CreateSector("s_001.sec", 3, 10.0, 10.0, 15.0);
l_count = GetSectorCount("s_001.sec");
printf("Sector count %d", l_count);

l_count --;

while(l_count >= 0)
{
GetSector("s_001.sec", l_count, l_X, l_Y, l_Z);
printf("ID %d X : %f Y : %f Z : %f", l_count, l_X, l_Y, l_Z);
l_count--;
}

}
[/spoiler]

Alors par contre tu as du le comprendre, il n'y a pas de formatage donc si on l'ouvre avec un éditeur hexadécimal ça donne ça.




Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #23 le: 16 Janvier 2014, 19:37:46 »
Ouais je galere, parce que vous dites rien d'explicite xD


Enfaite, j'ai regarder ton code, ça n'a rien a voir par rapport à ceux que je pensais Oo xD

Chez moi ton code ne fonctionne pas, tu n'a pas du le faire sur pwn si ? Puisque rien qu'à ta manière de définir : new Sector[e_Sector]; sachant que ça me met un warning comme quoi il n'est pas utilisés, donc je l'ai mis en dessous de l'enum, ça compile et là bad entry point dans ma console : "invalid index parameters", donc ça vient de ton array,

new Sector[e_Sector]; il faudrait genre new Sector[10][e_Sector];

tu vois ce que je veux dire ? C'est pour ça aussi, que je partais dans un autre raisonnement, j'me suis battu a essayer plein de façon avec les arrays mais on est vite limité, puisqu'ils sont pas dynamique ( la raison pour laquelle je parlais de vecteur.)

:cheers:
« Modifié: 16 Janvier 2014, 20:05:33 par chneubeul »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #24 le: 16 Janvier 2014, 23:27:06 »
Le code comme je l'ai donné fonctionne parfaitement, je l'ai testé ^^

Par contre je n'ai pas compris ce que tu voulais.

PS : Mon code n'est qu'un exemple de structure, tu peux en faire une meilleure.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #25 le: 17 Janvier 2014, 10:35:17 »
(124) : warning 204: symbol is assigned a value that is never used: "Sector"

    GetSectorCount(a_File[])
    {
            new File:l_file;
            new Sector[e_Sector];  <-- ligne 124




Tu as des warnings toi ? et même avec le warning ça marche pas non plus.. :p

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #26 le: 17 Janvier 2014, 11:37:30 »
Pour eleminer le warning, mets cette fonction à la place.


Code: (pawn) [Sélectionner]
GetSectorCount(a_File[])
{
new File:l_file;
new Sector[e_Sector];
new l_count;

l_file = fopen(a_File, io_read);
l_count = 0;

Sector[i_SectorId] = 0;

if(l_file != File:0)
{
l_count = flength(l_file) / (sizeof(Sector) * 4/*sizeof(cell)*/);
fclose(l_file);
}
return l_count;
}


Et oui, ça marche très bien chez moi :

Sector count 4
ID 3 X : 10.000000 Y : 10.000000 Z : 15.000000
ID 2 X : 10.000000 Y : 10.000000 Z : 10.000000
ID 1 X : 10.000000 Y : 10.000000 Z : 0.000000
ID 0 X : 10.000000 Y : 0.000000 Z : 0.000000
  Filterscript 'sector.amx' loaded.




Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #27 le: 17 Janvier 2014, 13:28:40 »
Voilà, là ca marche on est d'accord :D

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #28 le: 17 Janvier 2014, 13:38:32 »
Ça a toujours marché :P

Le warning était juste la pour dire que la variable sector n'était pas utilisée.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Programmation IA
« Réponse #29 le: 17 Janvier 2014, 18:14:45 »
Ouais, mais juste que là tu le met à 0 avant, alors que c'étais quand même utiliser parce que quand tu l'enlever pawno péter un plomb parce que c'étais pas définis xD
Bref, j'ai rien compris sur cet histoire là, j'vais voir la semaine prochaine pour faire quelque chose qui tient debout grâce à ton code, j'vais m'en inspirer.. j'commence à comprendre ton raisonnement, parce que je pensais pas du tout du tout ça, je comptais travailler sur un array, pour dijkstra après ça serait plus simple :p


Edit :  J'ai trouvé un peu de temps pour t'annoncer mon idée, enfaite, tu m'a donné une idée et les moyens de le faire, grâce à ton système et à ce que vous m'avez appris et ceux sur quoi je me suis renseigner (système de fichier etc.. :p ).

Enfaite je vais enregistrer toutes les données des positions où le npc pourra allez, puis lorsqu'il spawn, je vais chercher toutes les positions autour de lui, afin de les mettre dans un array, pour que ce soit plus pratique et plus rapide à travailler, parce que dijkstra sur un fichier, j'crois pas c'est une très bonne idée par rapport à l'optimisation du système :D

Voili Voilou, bref, au faite je n'ai pas dit, mais si vous connaissez des apprentis développeur qui souhaite apprendre, des petites astuces ou développer avec moi, je peux donner un coup, j'ai des tas d'idées et système à faire, afin de réaliser un petit projet pour s'amuser et apprendre :)
« Modifié: 17 Janvier 2014, 22:19:34 par chneubeul »