Показать сообщение отдельно
Старый 11.06.2010, 03:36   #10
xex
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 47
Сказал(а) спасибо: 45
Поблагодарили 29 раз(а) в 13 сообщениях
xex На верном пути
По умолчанию

Вы чего? Давно есть в 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(PlayerpPlayerCreaturepCreature)
{
    
pPlayer->ADD_GOSSIP_ITEM_EXTENDED(
        
GOSSIP_ICON_CHAT,
        
pPlayer->HasFlag(PLAYER_FLAGSPLAYER_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_FLAGSPLAYER_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(PlayerpPlayerCreaturepCreatureuint32 uiSenderuint32 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_FLAGSPLAYER_FLAGS_XP_USER_DISABLED))
            
pPlayer->RemoveFlag(PLAYER_FLAGSPLAYER_FLAGS_XP_USER_DISABLED);
        else
            
pPlayer->SetFlag(PLAYER_FLAGSPLAYER_FLAGS_XP_USER_DISABLED);

        
pPlayer->CLOSE_GOSSIP_MENU();
        return 
true;
    }
    
pPlayer->CLOSE_GOSSIP_MENU();
    return 
true;
}

void AddSC_npcs_special()
{
    
Scriptnewscript;

    
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_FLAGSPLAYER_FLAGS_XP_USER_DISABLED))
        return; 

Последний раз редактировалось xex; 11.06.2010 в 03:51.
xex вне форума   Ответить с цитированием