mangos zone
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


core emulateur mangos sql patch
 
AccueilDernières imagesRechercherS'enregistrerConnexion
Le Deal du moment : -14%
Apple MacBook Air (2020) 13,3″ Puce Apple M1 ...
Voir le deal
799 €

 

 Changement de race Goblin

Aller en bas 
2 participants
AuteurMessage
dorian




Messages : 5
Date d'inscription : 17/02/2011

Changement de race Goblin Empty
MessageSujet: Changement de race Goblin   Changement de race Goblin EmptyVen 18 Fév - 19:22

Ce script permet le changement de race en Gobelin.( + Broken Ones, Fel Orcs)

Adaptation : Dorian
Sources : Wow-ressources


Code:

/*Adapter par Dorian*/

#include "ScriptPCH.h"
#include <stdio.h>
#include <stdlib.h>

extern CharacterDatabaseWorkerPool CharacterDatabase;

#define BROKEN_LEVEL                    80
#define BROKEN_DRAENEIONLY      true
#define BROKEN_PRICE                    5000

#define FELORC_LEVEL                    80
#define FELORC_ORCONLY              true
#define FELORC_PRICE                    5000

#define GOBLIN_LEVEL                    80
#define GOBLIN_PRICE                    5000

void ChooseRace(Player *pPlayer, Creature *pCreature)
{
        if (pPlayer->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID) != 21105 && pPlayer->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID) && 21267
                && pPlayer->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID) != 20582 && pPlayer->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID) != 20583)
        {
                char broken[255];
                sprintf(broken, "Switch race pour Broken  %ug", BROKEN_PRICE);

                char felorc[255];
                sprintf(felorc, "Switch race pour Fel Orc  %ug", FELORC_PRICE);

                char goblin[255];
                sprintf(goblin, "Switch race pour Goblin  %ug", GOBLIN_PRICE);

                if (BROKEN_DRAENEIONLY)
                {
                        if (pPlayer->getRace() == RACE_DRAENEI && pPlayer->getGender() == GENDER_MALE && pPlayer->getLevel() >= BROKEN_LEVEL)
                        {
                                pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, broken,
                                        GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                        }
                }
                else
                {
                        if (pPlayer->getGender() == GENDER_MALE && pPlayer->getLevel() >= BROKEN_LEVEL)
                        {
                                pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, broken,
                                        GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                        }
                }

                if (FELORC_ORCONLY)
                {
                        if (pPlayer->getRace() == RACE_ORC && pPlayer->getGender() == GENDER_MALE && pPlayer->getLevel() >= FELORC_LEVEL)
                        {
                                pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, felorc,
                                        GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                        }
                }
                else
                {
                        if (pPlayer->getGender() == GENDER_MALE && pPlayer->getLevel() >= FELORC_LEVEL)
                        {
                                pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, felorc,
                                        GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                        }
                }

                if (pPlayer->getGender() == GENDER_MALE && pPlayer->getLevel() >= GOBLIN_LEVEL)
                {
                        pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, goblin,
                                GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                }
                else if (pPlayer->getGender() == GENDER_FEMALE && pPlayer->getLevel() >= GOBLIN_LEVEL)
                {
                        pPlayer->PlayerTalkClass->GetGossipMenu().AddMenuItem(GOSSIP_ICON_MONEY_BAG, goblin,
                                GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4, "Tapez 'SWITCH', sans les guillemets. ceci sera permanent.", 0, true);
                }

                pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Good bye.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
                pPlayer->SEND_GOSSIP_MENU(14, pCreature->GetGUID());
        }

}

class npc_race_switch : public CreatureScript
{
public:
    npc_race_switch() : CreatureScript("npc_race_switch") { }

bool  OnGossipHello(Player *pPlayer, Creature *pCreature)
{
        ChooseRace(pPlayer, pCreature);
        return true;
}


bool OnGossipSelect(Player *pPlayer, Creature *pCreature, uint32 sender, uint32 action )
{
            pPlayer->PlayerTalkClass->ClearMenus();
        if (sender != GOSSIP_SENDER_MAIN)
                return false;

        switch (action)
        {
                case GOSSIP_ACTION_INFO_DEF + 5:
                        pPlayer->PlayerTalkClass->CloseGossip();
                        break;
                default:
                        break;
        }
       
        return true;
}

bool Pay(int money, Player *pPlayer, Creature *pCreature)
{
        if (pPlayer->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID) == pPlayer->GetUInt32Value(UNIT_FIELD_DISPLAYID))
        {
                if (pPlayer->GetMoney() >= money * 10000)
                {
                        pPlayer->ModifyMoney(-(money * 10000));
                        pCreature->MonsterWhisper("Felicitation! Transformation avec succes!", pPlayer->GetGUID(), false);
                        return true;
                }
                else
                {
                        pCreature->MonsterWhisper("Pas assez de money.", pPlayer->GetGUID(), false);
                        return false;
                }
        }
        else
        {
                pCreature->MonsterWhisper("Vous devez demorph premier!", pPlayer->GetGUID(), false);
                return false;
        }

}

bool OnGossipSelectCode( Player *pPlayer, Creature *pCreature,
                                                                          uint32 sender, uint32 action, const char* sCode )
{
    if(sender == GOSSIP_SENDER_MAIN)
    {
                int i = -1;
                try
                {
                        if (strlen(sCode) + 1 == sizeof "SWITCH")
                                i = strcmp("SWITCH", sCode);

                } catch(char *str) {sLog.outError(str);}

                if (i == 0)
                {

                        if(action == GOSSIP_ACTION_INFO_DEF + 1)  //Draenei male
                        {
                                if (Pay(BROKEN_PRICE, pPlayer, pCreature))
                                {
                                        CharacterDatabase.PExecute("REPLACE INTO character_overrides (guid, modelOverride) VALUES ('%u', '%u')", pPlayer->GetGUIDLow(), 21105);
                                        pPlayer->SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, 21105);
                                        pPlayer->DeMorph();
                                        pPlayer->PlayerTalkClass->CloseGossip();
                                }
                                else
                                        ChooseRace(pPlayer, pCreature);
                        }
                        else if(action == GOSSIP_ACTION_INFO_DEF + 2)  //Fel orc male
                        {
                                if (Pay(FELORC_PRICE, pPlayer, pCreature))
                                {
                                        CharacterDatabase.PExecute("REPLACE INTO character_overrides (guid, modelOverride) VALUES ('%u', '%u')", pPlayer->GetGUIDLow(), 21267);
                                        pPlayer->SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, 21267);
                                        pPlayer->DeMorph();
                                        pPlayer->PlayerTalkClass->CloseGossip();
                                }
                                else
                                        ChooseRace(pPlayer, pCreature);
                        }
                        else if(action == GOSSIP_ACTION_INFO_DEF + 3)  //Goblin male
                        {
                                if (Pay(GOBLIN_PRICE, pPlayer, pCreature))
                                {
                                        CharacterDatabase.PExecute("REPLACE INTO character_overrides (guid, modelOverride) VALUES ('%u', '%u')", pPlayer->GetGUIDLow(), 20582); 
                                        pPlayer->SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, 20582);
                                        pPlayer->DeMorph();
                                        pPlayer->PlayerTalkClass->CloseGossip();
                                }
                                else
                                        ChooseRace(pPlayer, pCreature);
                        }
                        else if(action == GOSSIP_ACTION_INFO_DEF + 4)  //Goblin female
                        {
                                if (Pay(GOBLIN_PRICE, pPlayer, pCreature))
                                {
                                        CharacterDatabase.PExecute("REPLACE INTO character_overrides (guid, modelOverride) VALUES ('%u', '%u')", pPlayer->GetGUIDLow(), 20583);
                                        pPlayer->SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, 20583);
                                        pPlayer->DeMorph();
                                        pPlayer->PlayerTalkClass->CloseGossip();
                                }
                                else
                                        ChooseRace(pPlayer, pCreature);
                        }
                }
                else
                {
                        pCreature->MonsterWhisper("Wrong code entered!", pPlayer->GetGUID(), false);
                        ChooseRace(pPlayer, pCreature);
                }
    }
        return true;
}

};

void AddSC_npc_race_switch()
{
    new npc_race_switch;
}


Code:
-- ----------------------------
-- Table structure for `character_overrides`
-- ----------------------------
DROP TABLE IF EXISTS `character_overrides`;
CREATE TABLE `character_overrides` (
  `guid` int(11) NOT NULL default '0',
  `modelOverride` int(11) default NULL,
  PRIMARY KEY  (`guid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Code:
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `lang1`, `prob1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `lang2`, `prob2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `lang3`, `prob3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `lang4`, `prob4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `lang5`, `prob5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `lang6`, `prob6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `lang7`, `prob7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `WDBVerified`) VALUES (14, NULL, 'Hello, $N.$BI am Race Switcher, I can change Your race into something special.$B$BEvery race (without class, level or gender restrictions) can be transformed into Goblins (I have got both models, male and female). Transformation costs 5000 gold.$BDraenei males of level 60 can be transformed into Broken ones. Cost is 5000g.$BOrc males of level 60 can be transformed into Fel Orcs. Cost is 5000g.$B$BThis change is permanent. Disadvantage is that you will be unable to use barbershop or character customization.', 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 1);
Revenir en haut Aller en bas
Hirador




Messages : 8
Date d'inscription : 27/02/2011

Changement de race Goblin Empty
MessageSujet: Re: Changement de race Goblin   Changement de race Goblin EmptyDim 27 Fév - 21:09

Premier patch que je trouve et qui fonctionne en 3 semaines de recherches ! Bravo à vous et merci de ce partage !
Revenir en haut Aller en bas
 
Changement de race Goblin
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
mangos zone :: EMULATEUR :: Patch C++ :: Trinity-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser