dorian
Messages : 5 Date d'inscription : 17/02/2011
| Sujet: Changement de race Goblin Ven 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); | |
|