Вы чего? Давно есть в SD2 (я руссифицировал), стоят НПС в Шторме и Оргри:
PHP код:
/*######
## npc_experience_eliminator
######*/
#define GOSSIP_ITEM_STOP_XP_GAIN "Я не хочу больше получать очки опыта."
#define GOSSIP_CONFIRM_STOP_XP_GAIN "Вы уверены что больше не хотите получать очки опыта?"
#define GOSSIP_ITEM_START_XP_GAIN "Я хочу снова получать очки опыта."
#define GOSSIP_CONFIRM_START_XP_GAIN "Вы уверены что хотите снова получать очки опыта?"
bool GossipHello_npc_experience_eliminator(Player* pPlayer, Creature* pCreature)
{
pPlayer->ADD_GOSSIP_ITEM_EXTENDED(
GOSSIP_ICON_CHAT,
pPlayer->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED) ? GOSSIP_ITEM_START_XP_GAIN : GOSSIP_ITEM_STOP_XP_GAIN,
GOSSIP_SENDER_MAIN,
GOSSIP_ACTION_INFO_DEF+1,
pPlayer->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED) ? GOSSIP_CONFIRM_START_XP_GAIN : GOSSIP_CONFIRM_STOP_XP_GAIN,
100000,
false
);
pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID());
return true;
}
bool GossipSelect_npc_experience_eliminator(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
if(uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
// cheater(?) passed through client limitations
if(pPlayer->GetMoney() < 100000)
return true;
pPlayer->ModifyMoney(-100000);
if(pPlayer->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED))
pPlayer->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
else
pPlayer->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
void AddSC_npcs_special()
{
Script* newscript;
newscript = new Script;
newscript->Name = "npc_experience_eliminator";
newscript->pGossipHello = &GossipHello_npc_experience_eliminator;
newscript->pGossipSelect = &GossipSelect_npc_experience_eliminator;
newscript->RegisterSelf();
}
Опс, а бревно то и не заметил
PHP код:
if(HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED))
return;