• 07 Juillet 2025, 04:13:16


Auteur Sujet: [Question Curiosité] Système Map Andreas  (Lu 1719 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
[Question Curiosité] Système Map Andreas
« le: 16 Novembre 2010, 19:13:39 »
Bonsoir, j'ai soif d'apprendre :)
J'aimerais savoir comment par exemple je pourrais faire pour reproduire le plugin map andreas..
J'ai pensé à utiliser un bot dont je téléporterais à un rythme plus ou moins soutenu, cela dépend du temps que je dispose pour le relevage des points ^^
puis par exemple de balayer tous les coordonnées X  > X = 0.01 > X = 0.02 puis je mettrais une zone, qui désignerais la map. Si le joueur est en dehors de la map. Je remettrais X à 0 puis Y = 0.01 etc..etc.. Compris ?

Comment je pourrais faire ça ?
En téléportant un bot avec SetPlayerPosFindZ puis je prendrais sa positions et l'enregistrais.

Pourquoi cette étude ? J'ai le projet de l'effectuer pour GTA Anderius ( j'en aurais besoin peut être ), et pourquoi GTA United si j'ai le script autant faire profiter ^^ Puis ce système m'intriguer, j'ai envie de comprendre son fonctionnement.. :)

Question :

Pourquoi utiliser un plugin ? Alors qu'il suffiraient de stocker dans un fichier et de comparer une position si je voudrais une position ?

Merci de votre aide.
Sam.  :cheers

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #1 le: 17 Novembre 2010, 04:35:24 »
Salut,

tu pourrais le faire, mais ne récupère pas la position avec une précision de 0.01, il te faudrait approximativement 500 000 * 500 000 mesures.... donc ce serait TRÈS long. Le plugin MapAndreas utilise une approximations à 1 unité près, encore là, on parle d'environ 25 000 000 de mesures...
Surtout si tu doit laisser le bot tomber (s'il le peut, sinon tu peut te connecter et laisser le processus s'effectuer, bref laisser ton pc allumer à faire ça avec sa-mp ouvert, en espérant qu'il n'y ait pas de crash).
Tu peut laisser plus ou moins de temps entre la téléportation et la mesure. Si tu es prêt à prendre plus de temps, en laissant le personnage tomber d'un peu plus haut avec suffisamment de temps, tu obtiendrait des mesures plus précises, sinon, tu peut simplement avoir les mêmes données que le SetPlayerPosFindZ, il te faudrait alors attendre la mise à jour de la position du joueur.

Recommandation: faites ceci en local avec le lanmode activé, le minimum de script en exécution et en ne permettant à personne d'autre de se connecter (maxplayers = 1 ^^)

ensuite, je te recommanderais d'utiliser un fblockwrite, fblockread pour faire ton fichier. En utilisant un ordre précis dans les données, tu peut réduire la taille du fichier à 4 octets par donnée (voir moins si tu combine + d'une valeur en utilisant des opérations binaires), ce qui veut dire au total un fichier d'environ ... 100 mo.

Si tu veut plus de détails sur la façon de procéder, suffit de demander.

PS. si tu prend 50 ms pour chaque mesure, tu en as pour 1 250 000 secondes soit 347 heures 13 minutes et 20 secondes

++Sim++





Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #2 le: 17 Novembre 2010, 10:58:56 »
Bonne chance vu le temps que ça va te prendre :D
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 chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #3 le: 17 Novembre 2010, 13:34:45 »
Salut,

Scott je te remercie, mais ces résultats sont faux.. Les vraies sont encore pire  :) Comme la map d'anderius est beaucoup plus grande que celle de san andreas :(

Sim, si je laissais tomber le bot, je mettrais ENORMEMENT de temps ^^ puis la mesure serais fausse, puisqu'une fois tombé.. le bot avance d'un pas généralement. SetPlayerPosFindZ, s'éxécute en 1ms j'vien de faire un test. :)
Je pensé, dommage qu'il n'y ai pas de SetObjectPosFindZ :(

J'vais commander une petite session exon ( retirer exon si c'est d'la pub :( ) pas très fameux, mais au moins je serais pas bloquer avec mon pc (en mousse :D ) pendant environ.. 2 semaines Oo x'D

Donc quand j'enregistre la position,

X|Y|Z suffit ? Et comme on peut arrondir, j'vais arrondir par exemple à
0.1|0.1|0.1

Cela suffirait amplement non ?

Une petite question, après les 100mo de nombre, comment je vais pouvoir ouvrir le fichier pour controler qu'il ne m'affiche pas plein de 0 ^^ ? Pawno ?

Sur la manière de procédé..
Je pense à définir une zone. Puis à chaque mesure je check si la mesure veut sortir du rectangle, je reviens à la ligne X de départ et Y je rajoute 1
Mais, X, Y sont centré, donc si je suis dans du négatif et que mon X je lui rajoute, alors là mesure va aller dans le sens contraire.
En claire les mesures ne vont jamais se rapprocher du milieu :(
Comment contourner ça ?

Autres petite question, si il y a 1ms pour téléporter mon bot, si ensuite je réserve 10 ms pour la mesure, puis autres 10 autres ms pour sauvegarder. ça serais correct soit 21ms au lieu de 50 :)


Merci de ton aide.
Sam.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #4 le: 17 Novembre 2010, 14:41:13 »
Normalement ça ne fonctionnera pas le SetPlayerPosFindZ ne fonctionnera pas sur les bots vu qu'il à besoin d'un client ( le jeu ) pour trouver la position Z ^^



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 : [Question Curiosité] Système Map Andreas
« Réponse #5 le: 17 Novembre 2010, 14:43:29 »
Ah ouais, pas con..
Comment faire alors ? huuhuu
Il n'y pas de SetObjectPosFindZ :(
Dans ce cas, je vais devoir être obliger de le faire moi même...
« Modifié: 17 Novembre 2010, 14:54:20 par chneubeul »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #6 le: 17 Novembre 2010, 21:13:18 »
Salut,

le mieux à faire c'est comme je te disais, tu ouvre ton sa-mp, et avec une commande tu lance le processus qui se fera avec ton personnage. Il te faudra mesurer le délai pour que la position soit mise à jour côté serveur pour faire un script acceptable. Bien sur, ça prendra un bon moment...Le mieux ce serait d'utiliser un pc dont tu n'as pas besoin.

++Sim++





Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #7 le: 17 Novembre 2010, 21:26:40 »
Soir',
Oui voila je vais m'arranger avec un collègue pour qu'il laisse tourner gta sur son pc serveur :)

Une question me tracasse..
La lecture des données lors que la fonction pour obtenir Z va être appeler, comment je vais pouvoir chercher dans toutes ces lignes ? Oo
une boucle va faire un big lag nan ?

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #8 le: 17 Novembre 2010, 23:44:14 »
salut,

ça ne devrait pas être un très gros problème, cherche dans les sujets concernant mapAndreas sur le forum officiel, il y a déjà eu des codes pour l'utiliser sans avoir le plugin (via fopen, fblockread, ...)
Si tu veut éviter les lags, te faudra pratiquement charger toutes les données dans des variables et y accéder dans les variables.

++Sim++





Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #9 le: 18 Novembre 2010, 19:50:50 »
Salut, effectivement, j'vien de trouver l'include :D

J'ai repérer mon petit soucis pour la capture de pos, il faut commencer en bas à gauche, je suis bête ^^

Je vais préparer un script ce soir ou demain, et je vais le poster pour l'optimiser un maximun..

A+, sam.

Edit : Et ben dans l'cul la balayette ! -_- Quand j'm'endors j'pense au script ça me permet de réfléchir à ça pendant la nuit et le matin j'me réveille avec une idée de script déjà toute faite :D Bref, là j'ai penser a Kye, c'est lui qui à fait mapandreas, et comme par hasard il est devellopeur pour sa:mp.. rien d'étrange jusque là.. mais j'me suis dit, et si la fonction SetPlayerPosFindZ avait un rapport avec ça, et ben oui ! :(
J'ai essayer sous anderius cette fonction sert à quedal :( alors que j'avais essayer sur andreas elle fonctionner parfaitement..
Comment faire alors ? x'D
« Modifié: 18 Novembre 2010, 21:09:25 par chneubeul »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [Question Curiosité] Système Map Andreas
« Réponse #10 le: 18 Novembre 2010, 21:40:57 »
Salut,

Et ben dans l'cul la balayette ! -_- Quand j'm'endors j'pense au script ça me permet de réfléchir à ça pendant la nuit et le matin j'me réveille avec une idée de script déjà toute faite :D Bref, là j'ai penser a Kye, c'est lui qui à fait mapandreas, et comme par hasard il est devellopeur pour sa:mp.. rien d'étrange jusque là.. mais j'me suis dit, et si la fonction SetPlayerPosFindZ avait un rapport avec ça, et ben oui ! :(
J'ai essayer sous anderius cette fonction sert à quedal :( alors que j'avais essayer sur andreas elle fonctionner parfaitement..
Comment faire alors ? x'D

tu veut dire que la fonction SetPlayerPosZ ne place pas à la bonne hauteur avec Anderius?
Si c'est bien ça, tu peut toujours trouver la position la plus haute de la map, tu n'aura qu'à téléporter le joueur à cette hauteur puis le laisser tomber (je ne sais pas si tu pourrais l'aider à aller plus vite avec un SetPlayerVelocity. Il te faudrait par contre rendre le joueur invulnérable pour qu'il ne meure pas en tombant. Utilise une valeur d'au moins 1 000 000 et remet la vie pour être sur, assure toi aussi que le perso n'ait jamais de parachute. Toutefois, il faudra attendre quelques secondes à chaque position...donc la tâche est beaucoup trop longue.

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #11 le: 19 Novembre 2010, 11:56:00 »
Idée d'optimisation pour la méthode dont vous avez discuté :
- Si le perso en question est dans un véhicule, il tombera plus vite (et on résout le problème de la vie du perso)
- Après avoir calculer le Z pour le premier point, on peut s'en servir pour positionner le véhicule (ou le perso) pour le point suivant (ne marchera pas si on est au pied d'un building)

Autre méthode (assez moyenne mais certainement plus rapide) :
Positionné un véhicule et le faire avancer avec SetVehicleVelocity. Le véhicule va suivre les courbes du terrain sur lequel il est et donc un GetVehiclePos devrait donner un Z correct.
Le problème de cette solution c'est que le véhicule se bloquera contre le moindre obstacle.
On peut peut-être mixer cette solution avec la votre pour essayer d'optimiser.

Sinon, comme ce genre de truc a déjà été fait pour la map se San Andreas, il faudrait peut-être essayer de savoir comment ils s'y sont pris.

++
Syg
Courtesy of GtaManiac

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Question Curiosité] Système Map Andreas
« Réponse #12 le: 19 Novembre 2010, 18:48:26 »
Merci syg d'intervenir.. :)
Le problème d'anderius, c'est qu'il n'y pas énormément de plaine.. donc setvehiclevelocity ou quoi c'est impossible.
Sachant qu'il y a des espaces ayant des autoroutes qui passe au dessus, il faudrait en plus checker les zones précisément avec un Z inférieur ou égale à la hauteur moyenne de l'autoroute :(avoir d
Sinon, comme là dit Syg, il faudrait avoir des informations sur la réalisation de ce plugin..

A+, Sam.

Edit : Petit bug de cette fonction, lorsqu'on se téléporte à une certaine distance cette fonction ne trouve pas.. Mais j'ai tester d'abord de téléporter le mec à 10 unités devant lui ça fonctionne, mais parfois je tomber dans l'eau. Là j'ai tester avec 1.0 ça fonctionne mieux, mais lorsque que je me met au pied des bâtiments je me retrouve à l'intérieur.. :(
« Modifié: 20 Novembre 2010, 20:44:34 par chneubeul »