• 06 Juin 2026, 04:41:08


Auteur Sujet: Chargement objet par base de donnée  (Lu 2603 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
Chargement objet par base de donnée
« le: 15 Janvier 2011, 08:47:23 »
Bonjour, je voudrais créer un système de chargement objet par BDD.

J'ai essayé de créer plusieurs code avec des boucles mais rien ne fonctionne aucun objet ne charge.
Je ne sait pas si il faut que je fasse une requête par objet ou un requête pour tout les objets que je veux utiliser.
Voici avant tout la structure de ma table 'objets'

Code: (sql) [Sélectionner]
CREATE TABLE IF NOT EXISTS `objets` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Id unique de l'objet',
  `mapid` int(11) NOT NULL, COMMENT 'Id de la map au quelle appartient objets',
  `modelid` int(11) NOT NULL DEFAULT '-1',
  `FloatX` float NOT NULL DEFAULT '0',
  `FloatY` float NOT NULL DEFAULT '0',
  `FloatZ` float NOT NULL DEFAULT '0',
  `FloatrX` float NOT NULL DEFAULT '0',
  `FloatrY` float NOT NULL DEFAULT '0',
  `FloatrZ` float NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;


Est voici le code pawn que j'ai trouvez pour chargez les objets par boucle mais le probleme c'est que je ne veux pas utilisez 'sscanf' ou un truc du genre donc j'avais essayé de le modifié mais je nage COMPLETEMENT  :wall  :blink

http://pastebin.com/uhviMbqD

Merci en tout cas pour l'aide que vous pourrez m'apportez.

Vince

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #1 le: 15 Janvier 2011, 17:14:09 »
Deja pour ta sécurité je supprimerais tes nom de table !


Tu doit faire une requete SQL pour les charger.


SELECT * FROM NOMDETATABLE
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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #2 le: 15 Janvier 2011, 20:14:49 »
Salut, ce n'est pas cela mon problème, mon problème c'est que je veux chargez les objets mais je ne voit pas comment faire la boucle.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #4 le: 15 Janvier 2011, 22:11:16 »
J'utilise while moi :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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #5 le: 16 Janvier 2011, 15:04:38 »
Bonjour voici le code actuel le problème c'est que il n'y a que le premier objet qui charge correctement !


public LoadObject(mapid)
{
    new DataString[128];
    new modele;
new Float:SpawnX;
new Float:SpawnY;
new Float:SpawnZ;
new Float:SpawnRotX;
new Float:SpawnRotY;
new Float:SpawnRotZ;
new idx = 1;
new query[75];
    format(query, sizeof(query), "SELECT * FROM `objets` WHERE `mapid` = '%d'",idx);
    mysql_query(query);
    mysql_store_result();
    for(new i = 0; i< mysql_num_rows(); i++)
{
mysql_fetch_field("modelid", DataString);
modele = strval(DataString);

mysql_fetch_field("FloatX", DataString);
SpawnX = floatstr(DataString);

mysql_fetch_field("FloatY", DataString);
SpawnY = floatstr(DataString);

mysql_fetch_field("FloatZ", DataString);
SpawnZ = floatstr(DataString);

mysql_fetch_field("FloatrX", DataString);
SpawnRotX = floatstr(DataString);

mysql_fetch_field("FloatrY", DataString);
SpawnRotY = floatstr(DataString);

mysql_fetch_field("FloatrZ", DataString);
SpawnRotZ = floatstr(DataString);

CreateObject(modele,SpawnX,SpawnY,SpawnZ,SpawnRotX,SpawnRotY,SpawnRotZ);
printf("%d,%f,%f,%f,%f,%f,%f mapid: %d",modele,SpawnX,SpawnY,SpawnZ,SpawnRotX,SpawnRotY,SpawnRotZ,mapid);
idx ++;
}
mysql_free_result();
}



merci  :-\ :(

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #6 le: 16 Janvier 2011, 15:12:53 »
Écoute regarde comment je charge mes biz, ça peux t'aider

new query[715],string[256],idbiz[512],innutile;
format(query, sizeof(query), "SELECT COUNT(*) FROM `TABLEBIZ`");
mysql_query(query);
mysql_store_result(MySQL_Handle);
mysql_fetch_row(idbiz);
TotalBizs = strval(idbiz);
mysql_free_result(MySQL_Handle);
for (new biz = 1; biz <= TotalBizs; biz++)
{
    format(query, sizeof(query), "SELECT * FROM `TABLEBIZ` WHERE `COLONE-ID` = %d", biz);
mysql_query(query);
mysql_store_result(MySQL_Handle);
while(mysql_fetch_row_format(query, "|"))
{
sscanf(query, "p<|>ddddffffffddds[52]s[52]s[68]iiiiddi",
                        mes infos du biz,
                        ...);
                 }
         }
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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #7 le: 16 Janvier 2011, 16:26:04 »
Ok merci mais moi je voudrais me passez de sscanf en plus je ne comprend pas comment il fonctionne.
Merci


J'ai modifié un code trouvez dans un roleplay basique qui charge par sql le voici:

new totalobj = 0;

public LoadObject(mapid)
{
    new objects[7][64];
new sql[80];
new row[512];
format(sql, sizeof(sql), "SELECT COUNT(*) FROM objets");
mysql_query(sql);
mysql_store_result();
mysql_fetch_row(row);
totalobj = strval(row);
mysql_free_result();
for (new idx=0; idx < totalobj; idx++)
{
    format(sql, sizeof(sql), "SELECT * FROM objets WHERE id = %d", idx);
    mysql_query(sql);
    mysql_store_result();
    if (mysql_num_rows() > 0)
    {
mysql_fetch_row(row);
split(row, objects, '|');
mysql_free_result();
ObjetInfo[idx][omodelid] = strval(objects[0]);
ObjetInfo[idx][oFloatX] = floatstr(objects[1]);
ObjetInfo[idx][oFloatY] = floatstr(objects[2]);
ObjetInfo[idx][oFloatZ] = floatstr(objects[3]);
ObjetInfo[idx][oFloatrX] = floatstr(objects[4]);
ObjetInfo[idx][oFloatrY] = floatstr(objects[5]);
ObjetInfo[idx][oFloatrZ] = floatstr(objects[6]);
CreateObject(ObjetInfo[idx][omodelid],ObjetInfo[idx][oFloatX],ObjetInfo[idx][oFloatY],ObjetInfo[idx][oFloatZ],ObjetInfo[idx][oFloatrX],ObjetInfo[idx][oFloatrY],ObjetInfo[idx][oFloatrZ]);
printf("%d,%f,%f,%f,%f,%f,%f id: %d",ObjetInfo[idx][omodelid],ObjetInfo[idx][oFloatX],ObjetInfo[idx][oFloatY],ObjetInfo[idx][oFloatZ],ObjetInfo[idx][oFloatrX],ObjetInfo[idx][oFloatrY],ObjetInfo[idx][oFloatrZ],idx);
}
}
mysql_free_result();
printf("%d objet chargé de la BDD.", totalobj);
return 1;
}

Le probleme cet que les lignes chargé sont completement n'importe quoi un exemple:


[17:57:19] 1266,0.000000,8172.000000,1997.319946,503.236999,58.380001,0.000000 id: 1
[17:57:19] 2266,0.000000,8172.000000,1841.329956,511.398010,85.260002,340.536987 id: 2
[17:57:19] 385,0.000000,8172.000000,2152.659912,492.680999,85.260002,340.527008 id: 3
[17:57:19] 4265,0.000000,7017.000000,2229.469970,490.730987,112.013000,275.657989 id: 4
[17:57:19] 5265,0.000000,7017.000000,2233.750000,490.619995,112.013000,275.657989 id: 5
[17:57:19] 687,0.000000,7017.000000,1764.910034,512.416015,111.777999,278.903015 id: 6
[17:57:19] 787,0.000000,7017.000000,1764.910034,512.416015,111.777999,278.898986 id: 7
[17:57:19] 8358,0.000000,8172.000000,2000.410034,409.937011,85.260002,340.527008 id: 8
[17:57:19] 9177,0.000000,8172.000000,2005.119995,598.598022,85.260002,340.527008 id: 9
[17:57:19] 10,0.000000,7017.000000,1760.670043,512.729003,111.777999,278.898986 id: 10
ect ... Jusqu'a la ligne 128 (nombre d'enregistrement dans ma table.

[17:57:20] 128 objet chargé de la BDD.

Voila donc si vous pouviez m'aidez ca serait vraiment simpa car la je patauge complet !  :wall

Vince
« Modifié: 16 Janvier 2011, 18:02:16 par vardanega »

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #8 le: 16 Janvier 2011, 18:34:03 »
Tu utilise le plugin G-Stylezz?
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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #9 le: 16 Janvier 2011, 18:42:04 »

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #10 le: 16 Janvier 2011, 18:47:07 »
Pour ma part, je te conseillerais celui la.

http://forum.sa-mp.com/showthread.php?t=56564


Si non, je ne sias pas bien comment le tien fonctionne, alors met

mysql_log(LOG_ALL);

dans ton ongamemodeinit

J'espere que s'ets ça car je trouve pas la doc nécéssaire.

Demarre ton serveur et donne le mysql_log.txt a la racine de ton serveur
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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #11 le: 16 Janvier 2011, 18:54:47 »
Voila le fichier et ici:

http://pastebin.com/eUxB4yuJ

Encore merci

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #12 le: 16 Janvier 2011, 19:41:44 »
Tu as mis une colone "id" dans ta table objet?
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 vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Chargement objet par base de donnée
« Réponse #13 le: 16 Janvier 2011, 19:50:56 »
Oui il y a une colonne id en auto incremente

Double post
Bon alors j'ai réussi les objets charge mais il n'en charge que 13 ! pas plus !
 Évite le double post et va lire les règles ..
« Modifié: 17 Janvier 2011, 12:13:05 par vardanega »