Version du patch:
Base de donnés UDB
version client Wow 3.3.5a
Je vien vous présenter mon nouveau patch que j'ai nommer MJ_Started.
Celui-ci a pour but d'apprendre tous les sorts de MJ et ainsi le stuff MJ de départ et le level 255 pour les nouveaux GM arrivant sur votre serveur.
Remarques:
Pnj invisible aux joueurs biensur, un simple ".gm on" et hop celui-ci apparait.
Screen:
http://download-appli.no-ip.org/maitre.png
http://download-appli.no-ip.org/maitre1.png
Le script c++ :
Citation : #include "precompiled.h"
#define LIMIT_GMSORT 102
uint32 m_gmsort[]=
{
35354, 7033, 37808, 42459, 8737, 10665, 35912, 42340, 30878,
17624, 27572, 46568, 45729,40158, 26898,9116,
33338,33339, 33340,41601,36563,33341,264,2567,37851,
46661, 42584, 196,19693,35874,35912,36001,38734,45813,
33678,36624,9077,35466,34091,30638,197,750,46681,36812,
41084,20733,198,199,200,201,202,203,30452,37805,37810,
11027, 11397,37807,44016,45215,40890,34873,37208,43113,
39872,28783,39089,46367,43343,18209,18210,44639,
41251,39089, 19630,41431,40733,40506,35354,24742,
37897,26029,22856,11,5,17743,22735,45209,27741,42755,
15851,29388,7355, 43114,34580,40930,40928,10092,27882,
42333, 44655,38897,
};
bool GossipHello_teste_mj(Player* pPlayer, Creature* pCreature)
{
if(pPlayer->GetSession()->GetSecurity() >= SEC_GAMEMASTER)
{
pPlayer->ADD_GOSSIP_ITEM( 3, "Mes sorts MJ " , GOSSIP_SENDER_MAIN, 7000);
pPlayer->ADD_GOSSIP_ITEM( 1, "Mes equipements " , GOSSIP_SENDER_MAIN, 7001);
pPlayer->ADD_GOSSIP_ITEM( 3, "Mes Levels" , GOSSIP_SENDER_MAIN, 7002);
pPlayer->ADD_GOSSIP_ITEM( 0, "Au revoir !" , GOSSIP_SENDER_MAIN, 1058);
}
else{
pCreature->MonsterWhisper("Mes objets et competences requierts un grade GameMaster", pPlayer);
}
pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetObjectGuid());
return true;
}
void SendDefaultMenu_teste_mj(Player* pPlayer, Creature* pCreature, uint32 uiAction)
{
if (pPlayer->isInCombat())
{
pPlayer->CLOSE_GOSSIP_MENU();
pCreature->MonsterSay("Vous etes en combat!", LANG_UNIVERSAL, NULL);
return;
}
switch(uiAction)
{
case 7000/ Au revoir !
for(uint32 i = 0 ; i < LIMIT_GMSORT ; i++)
{
pPlayer->learnSpell(m_gmsort[i],false);
}
pPlayer->CLOSE_GOSSIP_MENU();
pCreature->MonsterWhisper("Au revoir, aventurier !",pPlayer);
break;
case 7001:
pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid());
break;
case 7002:
if (pPlayer->getLevel() == 255)
{
pCreature->MonsterWhisper("Tu est deja level 255 !",pPlayer); //You are already 80
pPlayer->CLOSE_GOSSIP_MENU();
}
else
{
pPlayer->GiveLevel(pPlayer->getLevel()+(255 - (pPlayer->getLevel())));
pPlayer->CLOSE_GOSSIP_MENU();
}
pCreature->MonsterWhisper("Au revoir, aventurier !",pPlayer);
break;
case 1058/ Au revoir !
pPlayer->CLOSE_GOSSIP_MENU();
pCreature->MonsterWhisper("Au revoir, aventurier !",pPlayer);
break;
}
}
bool GossipSelect_teste_mj(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
if (uiSender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_teste_mj(pPlayer, pCreature, uiAction);
return true;
}
void AddSC_teste_mj()
{
Script *newscript;
newscript = new Script;
newscript->Name = "mj_started";
newscript->pGossipHello = &GossipHello_teste_mj;
newscript->pGossipSelect = &GossipSelect_teste_mj;
newscript->RegisterSelf();
}
Le script sql:
Citation :DELETE FROM `creature_template` WHERE `entry` = 60008;
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `vehicle_id`, `equipment_id`, `trainer_id`, `vendor_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (60008, 0, 0, 0, 0, 0, 28193, 28193, 28193, 28193, 'Maitre des MJ', 'Apprentissage', '', 0, 75, 75, 15952, 15952, 0, 0, 8219, 35, 35, 129, 1, 1.14286, 1, 0, 342, 485, 0, 392, 1, 2000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 295, 438, 68, 7, 0, 0, 3296, 0, 0, 0, 0, 0, 0, 0, 40505, 8599, 0, 0, 0, 0, 0, '', 0, 1, 1.5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 295, 0, 0, 0, 1, 'mj_started');
DELETE FROM `npc_vendor` WHERE (`entry`=60008);
INSERT INTO `npc_vendor` (entry, item, maxcount, incrtime, ExtendedCost) VALUES
(60008, 2586, 0, 0, 0),
(60008, 11508, 0, 0, 0),
(60008, 12064, 0, 0, 0);
Télécharger les patchs :
Script C++ / Sql
voila pour le script ou les liens.
SI les liens sont mort n'hésiter pas je les mettrai sur Megaupload.
Post Réediter:
Rajout du Menu Mes levels.
N'hesiter pas à me faire remonter la moindre erreure, je corrigerai celle-ci très rapidement.
Post editer :
Changement de if (pPlayer->IsGameMaster()) en if(pPlayer->GetSession()->GetSecurity() >= SEC_GAMEMASTER)
Flag_extra du fichiers sql remis en 1 au lieu de 130
PNJ visible par tous le monde maintenant mais requiert le grade de gamemaster pour voir le menu.
Cordialement Tøxic