Commande .gob add
Bonsoir , voila avant de vous expliquer je vous montre un "schéma" que j'ai fait vraiment à la vite fait Confused Tongue

[Image: 900336Sanstitre.png]

Donc j'explique, le joueur fait un .gob add xxxx, une fois que le gob a été ajouter, dans notre DB dans la table GameObject on ajoute l'ID du compte de la personne qui a fait se .gob add.
La colonne Account et bien sûr crée juste avant dans la table Game object.
Donc dans la table GameObject nous auront le GUID, ID, la position x y z puis le reste mais nous auront aussi l'ID de l'account du joueur.

Voilà je vous re-merci pour votre aide.
Bonne soirée.
Sa se passe au niveau du C++, c'est assez simple dans la théorie. Tu dois repérer deux choses :

1) L'endroit ou est située la requête qui ajoute l'objet en base de données. (via la commande)
2) Repérer comment récupérer l'id du compte (quel objet, quel accesseur)

Une fois ces éléments en ta possession il te suffira simplement de modifier la requête SQL, sans oublier de modifier la structure de la table gameobject bien sur Wink
Merci de votre aide , voila j'ai chercher dans mes sources puis je suis tomber sur sa :
//spawn go
    static bool HandleGameObjectAddCommand(ChatHandler* handler, char const* args)
    {
        if (!*args)
            return false;

        // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
        char* id = handler->extractKeyFromLink((char*)args, "Hgameobject_entry");
        if (!id)
            return false;

        uint32 objectId = atol(id);
        if (!objectId)
            return false;

        char* spawntimeSecs = strtok(NULL, " ");

        const GameObjectTemplate* objectInfo = sObjectMgr->GetGameObjectTemplate(objectId);

        if (!objectInfo)
        {
            handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST, objectId);
            handler->SetSentErrorMessage(true);
            return false;
        }

        if (objectInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(objectInfo->displayId))
        {
            // report to DB errors log as in loading case
            TC_LOG_ERROR("sql.sql", "Gameobject (Entry %u GoType: %u) have invalid displayId (%u), not spawned.", objectId, objectInfo->type, objectInfo->displayId);
            handler->PSendSysMessage(LANG_GAMEOBJECT_HAVE_INVALID_DATA, objectId);
            handler->SetSentErrorMessage(true);
            return false;
        }

        Player* player = handler->GetSession()->GetPlayer();
        float x = float(player->GetPositionX());
        float y = float(player->GetPositionY());
        float z = float(player->GetPositionZ());
        float o = float(player->GetOrientation());
        Map* map = player->GetMap();

        GameObject* object = new GameObject;
        uint32 guidLow = sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT);

        if (!object->Create(guidLow, objectInfo->entry, map, player->GetPhaseMgr().GetPhaseMaskForSpawn(), x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
        {
            delete object;
            return false;
        }

        if (spawntimeSecs)
        {
            uint32 value = atoi((char*)spawntimeSecs);
            object->SetRespawnTime(value);
        }

        // fill the gameobject data and save to the db
        object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMgr().GetPhaseMaskForSpawn());
        // delete the old object and do a clean load from DB with a fresh new GameObject instance.
        // this is required to avoid weird behavior and memory leaks
        delete object;

        object = new GameObject();
        // this will generate a new guid if the object is in an instance
        if (!object->LoadGameObjectFromDB(guidLow, map))
        {
            delete object;
            return false;
        }

        /// @todo is it really necessary to add both the real and DB table guid here ?
        sObjectMgr->AddGameobjectToGrid(guidLow, sObjectMgr->GetGOData(guidLow));

        handler->PSendSysMessage(LANG_GAMEOBJECT_ADD, objectId, objectInfo->name.c_str(), guidLow, x, y, z);
        return true;
    }

C'est de sa que tu parler Galathil ?
Oui, c'est bien, tu progresses, à toi de regarder comment fonctionnent les diverses fonctions et les adapter à tes besoins... Le code est suffisamment clair et documenté Wink
J'ai pas de connaissance en C++ mais après avoir regarder le code je pense que la modification doit se faire à la ligne 59 , il dit qu'il sauvegarde en DB mais je ne comprend pas pourquoi se n'est pas une requête comme à la ligne 30.

Merci pour ton aide Big Grin
Je déplace dans la section d'aide Smile
Avant de commencer a vouloir faire de telles modifications il te faut absolument des compétences dans les domaines concernés ! Ici, le C++ et le SQL. Sans quoi, inutile d'aller plus loin. Il n'est pas nécessaire de connaitre le langage C++ à fond, d'ailleurs si tu as déjà programmé dans un autre langage, la logique est la même, seules les syntaxes changent (en plus des spécifications de chaque langage).

Ligne 59 : c'est bien une fonction qui est appellée et comme son nom l'indique, fait une sauvegarde en base de données.
Ligne 30 : C'est pas une requête ! C'est juste la génération d'un log -_-"

Sincèrement je te conseille de commencer par le commencement ou de t'attaquer à des choses plus simples pour commencer...
Merci Galathil, oui je pense commencer à apprendre le C++.

Mais peut tu juste m'aider a finir se petit script , au moin je vais voir comment j'aurez du faire.
Merci de ton aide Big Grin
Ahah oui oui, c'est pas au vieux hibou que l'on apprend à faire la grimace Wink

Nop :
1) Je n'ai pas le temps.
2) Si je faisais un tel script (compte tenu de mes récentes mises à jour de mes conditions générales de moi même, de mon éthique ou appelle cela comme tu veux Tongue) ce script serait partagé avec le reste de la planète Wink
3) En plus je crois avoir déjà vu une telle demande sur la toile, une petite recherche t’éviterait peut-être même de coder Wink
Comme sur feriale en faite ?

Retourner en haut WoW-Emu