GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chneubeul le 18 Août 2012, 16:10:03

Titre: [Résolu] Lecture d'un gros array
Posté par: chneubeul le 18 Août 2012, 16:10:03
Bonjour  :)

J'aimerais créé un p'tit système ou le joueur aurait un permis de poser une maison et il la place à l'endroit ou
il souhaite c'est à dire qu'il choisis sa maison. J'ai donc récuperer des données de maison de je sais plus qui
et ca contient enfaite 2250 un peu partout dans san andreas. J'ai donc par un système de fichier lu et "traduit"
les données pour les mettres sous formes d'un array, mais comment lire les données ?
Devrais-je stocker les données dans une table SQL et parcourir par lecture ligne par ligne les positions ?

Sachant que je viens de faire un p'tit test pour lire dans l'array, la console me renvoie une erreur "Out of memory" X'D

Merci, Sam.  :cheers
Titre: Re : [En cours] Lecture d'un gros array
Posté par: Ssk le 18 Août 2012, 20:39:48
Tu fais un query pour sélectionner toute les maisons, ensuite tu fetch ligne par ligne.
Titre: Re : [En cours] Lecture d'un gros array
Posté par: chneubeul le 19 Août 2012, 11:45:38
Merci vieux :p j'vais faire ca et tester en combien de temps il exécute et j'te dis quoi :p
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: Myk3L le 19 Août 2012, 15:46:02
OPTIMISATION!
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: chneubeul le 20 Août 2012, 00:15:52
Yoooo :D Alors après un test et un script parfaitement fonctionnel avec un système de fichier XML. Nous trouvons la position la plus proche en environ 60-70ms. C'est très satisfaisant, vive l'XML et l'optimisation.. MDRR
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: Myk3L le 20 Août 2012, 02:13:51
Avec une bonne optimisation des bool, ça devrait aller plus loin que le string, et filer dans l'array
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: Ssk le 20 Août 2012, 10:39:28
Tu fais une lecture du fichier xml à chaque fois ? ou bien une lecture au début en stockant le tout dans un array ?
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: chneubeul le 20 Août 2012, 15:32:20
Une lecture à chaque fois, pourquoi ? Mais c'est pas tous les minutes qu'un joueur va poser sa maison x)
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: S!m le 22 Août 2012, 00:49:58
Salut,

mais considérant que tu dois connaitre les positions de tes maisons etc... de temps en temps pour que le joueur interagisse avec les maisons, il est plus rapide de charger une fois, faire les modifications (ajouts, déplacement de maison etc...) directement dans ta mémoire vive et de temps en temps sauvegarder (sur commande peut-être?),.
Sinon en régularisant les sauvegardes tu obtiendras un système plus constant, plus stable. Même si tu fais plein de changements tu n'augmente pas considérablement la charge du serveur....c'est plus fiable en théorie.
60 - 70 ms pendant lesquelles ton serveur ne fait plus rien c'est pas idéal, vaut mieux limiter ce genre de trucs au démarrage (même si la sauvegarde par timer dont je viens de parler entraine le même problème...rien n'est parfait)

++Sim++
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: chneubeul le 22 Août 2012, 23:32:43
Yop Sim, ca faisait longtemps :p Ben enfaite les maisons je vais pas les modifier, puisque je vais juste vérifier l'endroit ou le joueur met sa maison. Mais en y réfléchissant. Je pourrais intégrer le tout dans un array, et poser un icone à l'endroit de la maison avec une distance très faible, comme ça quand le joueur rentre dessus je n'ai pas à parcourir l'array. Qu'en penses tu ?
Titre: Re : [Résolu] Lecture d'un gros array
Posté par: S!m le 25 Août 2012, 23:59:32
Salut,

pour le gain de temps et de processing, met tes maisons dans un array (la mémoire que ça représente ne devrait pas atteindre 1 mo sauf si t'as beaucoup de texte associé à chaque maison, alors...)

De plus, si tu met des systèmes quelconques sur tes maisons par la suite, tu aura en tout temps accès facilement à toutes les données de tes maisons....

Je n'ai pas très bien compris ce que tu voulais dire par "des icones avec une distance très faible" qu'ils apparaissent seulement quand le joueur est proche? Je ne me rappelle plus très bien les limites du système de pick-ups mais ce serait très bien pour entrer dans les maisons. Tu peut même couper toute la phase de recherche ainsi...

++Sim++