Passer level 60 ?
Bonjour,
j'essaie de savoir si cela est possible de créer un PNJ avec une quête, qui après l'avoir validée donne "x" points d'xp pour faire passer direct un level 1 au level 60.

Y a t-il un tel champ dispo dans la table quest_template ou autre part ?
Et quoi y insérer ?

Merci d'avance.
Mangosd.conf
StartPlayerLevel = 1 remplace par 60
StartHeroicPlayerLevel = 55 remplace par 60 aussi
Merci de ta réponse, mais je connais la manip du mangosd.conf

Justement,
je veux une quête pour laisser le choix au joueur s'il veux passer 60 ou commencer niveau 1 Clin

Je ne sais juste comment pas utiliser "RewOrReqMoney" dans la table quest_template Pleure
[code=cpp]
#include "precompiled.h"

#define MENU_1 "Je souhaiterais passer niveau 60"
#define MENU_2 "Au revoir !"
#define TEXTE_1 "Je ne m'occuperais pas de vous tant que vous combattrez !"
#define TEXTE_2 "Au revoir, aventurier !"
#define TEXTE_3 "Vous voilà de niveau 60 !"

bool GossipHello_macwarrior_lvl60(Player *player, Creature *_Creature)
{
player->ADD_GOSSIP_ITEM( 4, MENU_1, GOSSIP_SENDER_MAIN, 1000);
player->ADD_GOSSIP_ITEM( 11, MENU_2, GOSSIP_SENDER_MAIN, 1001);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID());
return true;
}

void SendDefaultMenu_macwarrior_lvl60(Player *player, Creature *_Creature, uint32 action )
{
if(!player->getAttackers().empty())
{
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay(TEXTE_1, LANG_UNIVERSAL, NULL);
return;
}

switch(action)
{

case 1000: // Je souhaiterais passer niveau 60
player->CLOSE_GOSSIP_MENU();
player->SetLevel(60);
_Creature->MonsterSay(TEXTE_3, LANG_UNIVERSAL, NULL);
player->resetTalents(true);
player->SendTalentsInfoData(false);
player->InitStatsForLevel(true);
player->InitGlyphsForLevel();
player->SaveToDB();
break;
case 1001: // Au revoir !
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_2,player);
break;

}
}

bool GossipSelect_macwarrior_lvl60(Player *player, Creature *_Creature, uint32 sender, uint32 action )
{
// Main menu
if (sender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_macwarrior_lvl60(player, _Creature, action);
return true;
}

void AddSC_macwarrior_lvl60()
{
Script *newscript;

newscript = new Script;
newscript->Name = "macwarrior_lvl60";
newscript->pGossipHello = &GossipHello_macwarrior_lvl60;
newscript->pGossipSelect = &GossipSelect_macwarrior_lvl60;
newscript->RegisterSelf();
}[/code]

Voilà, J'ai remplacer le level 30 par 60.
Scripte de MacWarrior
(09-03-2011 01:44)Kaios a écrit :  [code=cpp]
#include "precompiled.h"

#define MENU_1 "Je souhaiterais passer niveau 60"
#define MENU_2 "Au revoir !"
#define TEXTE_1 "Je ne m'occuperais pas de vous tant que vous combattrez !"
#define TEXTE_2 "Au revoir, aventurier !"
#define TEXTE_3 "Vous voilà de niveau 60 !"

bool GossipHello_macwarrior_lvl60(Player *player, Creature *_Creature)
{
player->ADD_GOSSIP_ITEM( 4, MENU_1, GOSSIP_SENDER_MAIN, 1000);
player->ADD_GOSSIP_ITEM( 11, MENU_2, GOSSIP_SENDER_MAIN, 1001);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID());
return true;
}

void SendDefaultMenu_macwarrior_lvl60(Player *player, Creature *_Creature, uint32 action )
{
if(!player->getAttackers().empty())
{
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay(TEXTE_1, LANG_UNIVERSAL, NULL);
return;
}

switch(action)
{

case 1000Etonne/ Je souhaiterais passer niveau 60
player->CLOSE_GOSSIP_MENU();
player->SetLevel(60);
_Creature->MonsterSay(TEXTE_3, LANG_UNIVERSAL, NULL);
player->resetTalents(true);
player->SendTalentsInfoData(false);
player->InitStatsForLevel(true);
player->InitGlyphsForLevel();
player->SaveToDB();
break;
case 1001Etonne/ Au revoir !
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_2,player);
break;

}
}

bool GossipSelect_macwarrior_lvl60(Player *player, Creature *_Creature, uint32 sender, uint32 action )
{
// Main menu
if (sender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_macwarrior_lvl60(player, _Creature, action);
return true;
}

void AddSC_macwarrior_lvl60()
{
Script *newscript;

newscript = new Script;
newscript->Name = "macwarrior_lvl60";
newscript->pGossipHello = &GossipHello_macwarrior_lvl60;
newscript->pGossipSelect = &GossipSelect_macwarrior_lvl60;
newscript->RegisterSelf();
}[/code]

Voilà, J'ai remplacer le level 30 par 60.
Scripte de MacWarrior

J'allais faire la même chose, mais avec 8h de décalage Langue

Cordialement,
MacWarrior.
LoL super les gars merci !
Ça c'est la méthode pour ajouter aux sources et compiler Heureux on est d'accord ?

Je demande simplement si c'est possible par une quête SQL ;-)
Je me suis mal exprimé dès le début désolé.

Merci en tout cas pour vos réponses!
Oui c'est cette méthode, c'est possible en SQL mais c'est assez laid... fait une recherche google tu devrais trouver toute ce qu'il te faut
J'ai bien évidement cherché sur google avant de poster un message Heureux
J'ai essayé avec nWolrd sans succès,
le champ RewOrReqMoney sans succès ..
j'avoue je cherche mais je bloque.
Bonjour,
Il faut que tu utilises le champ "RewMoneyMaxLevel". Cela peut paraître étrange, mais mangos utilise ce champ aussi pour l'XP que doit donner la quête.
Il faut que tu te bases sur cette formule :
Citation :The formula for calculating XP from the value in this field:
QuestLevel >= 65: XP = RewMoneyMaxLevel / 6.0
QuestLevel == 64: XP = RewMoneyMaxLevel / 4.8
QuestLevel == 63: XP = RewMoneyMaxLevel / 3.6
QuestLevel == 62: XP = RewMoneyMaxLevel / 2.4
QuestLevel == 61: XP = RewMoneyMaxLevel / 1.2
QuestLevel <= 60: XP = RewMoneyMaxLevel / 0.6
Tiré du Wiki de Mangos
Le niveau de ta quête (QuestLevel) donne une indication sur le niveau que devrait avoir le joueur pour réussir cette quête. Par contre, le joueur recevra la totalité de l'XP que peut fournir la quête seulement si le niveau du joueur est inférieur ou équivalent au niveau de la quête + 5.
Citation :Player recieves full experience amount only if their level is less than or equal to QuestLevel+5
Exemple :
QuestLevel = 45
Ton joueur est niveau 49. Il recevra donc la totalité de l'XP disponible car 45+5>49.

On va donc maintenant s'occuper de l'XP nécessaire pour aller du niveau 1 à 60. Je ne peux pas t'aider là dessus car je ne suis pas chez moi. Fais des tests en tâtonnant au pire Clin
Une fois cette valeur d'XP connue, on va partir sur la formule tirée de la première citation :
Citation :QuestLevel <= 60: XP = RewMoneyMaxLevel / 0.6
Donc XP*0,6 = RewMoneyMaxLevel. Tu devras donc dans ce champ mettre le résultat de ce calcul (XP étant la valeur pour atteindre le niveau 60 depuis le niveau 1).
Normalement, cela devrait fonctionner.
Toutefois et comme Kaios te l'a déjà dit, par SQL, ce n'est pas très élégant de le faire Clin
Ca faisait un moment que je cherchais un script du genre.

Merci beaucoup Smile

Retourner en haut Accueil