c++ script errors help! menu

User Tag List

Results 1 to 4 of 4
  1. #1
    wowowns's Avatar Member
    Reputation
    2
    Join Date
    Nov 2008
    Posts
    39
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    c++ script errors help!

    how do i compile a wow script? is it the same way as a normal 1? and i have 2 script, can you check them out, i get a bunch of errors even thouhg i think its fine
    my title vendor, it the titles cost donar tokens btw


    #include "setup.cpp"
    #include "Setup.h"

    class SCRIPT_DECL SexualHarrasmentPandaNPC : public GossipScript
    {
    public:
    void GossipHello( Object * Ob, Player * Plr, bool AutoSend );
    void GossipSelectOption( Object * Ob, Player * Plr, uint32 Id, uint32 IntId, const char * Code );
    void GossipEnd( Object * Ob, Player * Plr );
    void Destroy( )
    {
    delete this;
    }
    };

    void SexualHarrasmentPandaNPC::GossipHello( Object * Ob, Player * Plr, bool AutoSend )
    {
    GossipMenu *Menu;
    objmgr.CreateGossipMenuForPlayer( &Menu, Ob->GetGUID(), 1, Plr );
    if( Plr->GetTeam() == 0 ) // alliance
    {
    Menu->AddItem( 2, "Alliance entries:" );
    Menu->AddItem( 5, "Private", 101 );
    Menu->AddItem( 5, "Corporal", 102 );
    Menu->AddItem( 5, "Seargent", 103 );
    Menu->AddItem( 5, "Master Seargent", 104 );
    Menu->AddItem( 5, "Seargent Major", 105 );
    Menu->AddItem( 5, "Knight", 106 );
    Menu->AddItem( 5, "Knight-Leutenant", 107 );
    Menu->AddItem( 5, "Knight-Captain", 108 );
    Menu->AddItem( 5, "Knight-Champion", 109 );
    Menu->AddItem( 5, "Lieutenant Commander", 110 );
    Menu->AddItem( 5, "Commander", 111 );
    Menu->AddItem( 5, "Marshal", 112 );
    Menu->AddItem( 5, "Field Marshal", 113 );
    Menu->AddItem( 5, "Grand Marshal", 114 );
    } else { // horde
    Menu->AddItem( 2, "Horde entries:" );
    Menu->AddItem( 5, "Scout", 201 );
    Menu->AddItem( 5, "Grunt", 202 );
    Menu->AddItem( 5, "Seargent", 203 );
    Menu->AddItem( 5, "Senior Seargent", 204 );
    Menu->AddItem( 5, "First Seargent", 205 );
    Menu->AddItem( 5, "Stone Guard", 206 );
    Menu->AddItem( 5, "Blood Guard", 207 );
    Menu->AddItem( 5, "Legionnaire", 208 );
    Menu->AddItem( 5, "Centurion", 209 );
    Menu->AddItem( 5, "Champion", 210 );
    Menu->AddItem( 5, "Lieutenant General", 211 );
    Menu->AddItem( 5, "General", 212 );
    Menu->AddItem( 5, "Warlord", 213 );
    Menu->AddItem( 5, "High Worlord", 214 );
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }

    void SexualHarrasmentPandaNPC::GossipSelectOption( Object * Ob, Player * Plr, uint32 Id, uint32 IntId, const char * Code )
    {
    Creature * pCreature = ( Ob->GetTypeId() == TYPEID_UNIT ) ? Ob : NULL;
    if( pCreature == 900122 )
    return;

    GossipMenu * Menu;
    if( IntId == 0 )
    {
    GossipHello( Ob, Plr, true );
    }
    else if( IntId > 100 && IntId < 106 && Plr->GetTeam() == 0 )
    {
    switch( IntId )


    {


    case 101:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 102:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 103:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 104:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 105:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 106:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 107:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 108:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 109:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;




    case 110:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 111:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 112:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;

    case 113:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 114:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;



    }
    }



    else if( IntId > 200 && IntId < 206 && Plr->GetTeam() == 1 )
    {
    switch( IntId )


    {
    case 201:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 202:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 203:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 204:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 205:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 206:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 207:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 208:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 209:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    case 210:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;

    case 211:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;

    case 212:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;

    case 213:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;

    case 214:

    if(plr->getItem 99062() <= 5)

    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    Plr->BroadcastMessage("!!!!Please relog for title to become active!!!!");
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");

    else if(plr->getItem 99062() > 5)

    Plr->BroadcastMessage("Sorry, you do not have enough Donation Tokens...");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }


    break;


    }
    }
    else
    {
    Plr->BroadcastMessage("Error, Either You are not a Horde, or Alliance Faction, or there was an error with the script, please contact a Dev, or GM via ticket, or message");
    }
    if( AutoSend )
    Menu->SendTo( Plr );
    }
    }
    }

    void SexualHarrasmentPandaNPC::GossipEnd( Object * Ob, Player * Plr )
    {
    GossipScript::GossipEnd( Ob, Plr );
    }

    void SetupSexualHarrasmentPandaNPC( ScriptMgr * mgr )
    {
    mgr->register_gossip_script( 0, (GossipScript*) new SexualHarrasmentPandaNPC() );
    }





    and heres my zombinpc wich this i know is fine so im really confused and it pisses me off.

    #include "setup.cpp"
    #include "Setup.h"


    //created by DataStream

    //Boss
    #define Zombie 900099

    // Spells
    #define ZombieExplosion! 56528
    #difine Lurch! 43949
    #difine Retch! 51230
    #difine InfectedWound 48485
    #difine BeckoningGroan 56560


    class ZombieAI : public ArcScriptBossAI
    {
    ARCSCRIPT_FACTORY_FUNCTION(ZombieAI, ArcScriptBossAI);
    ZombieAI(Creature* pCreature) : ArcScriptBossAI(pCreature)

    AddSpell(ZombieExplosion!, Target_Current, 15, 0, 40);
    AddSpell(Lurch!, Target_RandomPlayer, 15, 1.5, 20);
    AddSpell(Retch!, Target_RandomPlayer, 15, 0, 20);
    AddSpell(InfectedWound, Target_ClosestPlayer, 20, 0, 16);
    AddSpell(BeckoningGroan, Target_Current, 10, 0, 2);

    AddEmote(Event_OnCombatStart, "I Hunger for..for......FLESH!", Text_Yell, 10289);
    Addemote(Event_OnCombatStart, TEXTEMOTE_SNARL = 88, Text_Yell 8;
    AddEmote(Event_OnTargetDied, "Spread Like AIDS!", Text_Yell, 11250);
    Addemote(Event_OnTargetDied, TEXTEMOTE_MOAN = 63, Text_yell, 63);
    AddEmote(Event_OnDied, TEXTEMOTE_Groan = 50, Text_Yell, 10291);

    }
    void AIUpdate()


    {
    if(GetHealthPercent()<=20)//phase 1
    {
    AddSpell(27780, Target_SecondMostHated, 90, 0, 20);
    }


    ParentClass::AIUpdate();
    ParentClass::AIUpdate();
    }
    };


    void SetupWorldBoss(ScriptMgr* pScriptMgr)
    {
    pScriptMgr->register_creature_script(Slayer, &ZombieAI::Create);
    }

    c++ script errors help!
  2. #2
    Mr.Ice.Cold's Avatar Active Member
    Reputation
    26
    Join Date
    Apr 2007
    Posts
    166
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    /script PlaySoundFile("Data//patch-Z.MPQ//Custom//Sound//Song1.mp3");
    All those, have to go. What other errors are you getting?

    Edit; You have a lot of errors, let me try and go one by one.


    if(plr->getItem 99062() <= 5)
    Replace ^ with this:

    if(Plr->GetItemInterface()->GetItemCount(990620, false)<=5)
    Replace
    Plr->GetItemInterface()->RemoveItemAmt( 99062, 5 );
    with this:

    Plr->GetItemInterface()->RemoveItemAmt(99062, 5);

    This is a basic layout of what you want I suppose to check to see if a player has an item and to remove it.

    if(Plr->GetItemInterface()->GetItemCount(99062, false)>=5)
    {
    Plr->GetItemInterface()->RemoveItemAmt(99062, 5);
    Plr->BroadcastMessage("Messagehere." );
    }
    else
    {
    Plr->BroadcastMessage("You do not have the required Tokens" );
    }
    Last edited by Mr.Ice.Cold; 07-01-2009 at 12:57 PM.

  3. #3
    mager1794's Avatar Member
    Reputation
    356
    Join Date
    Feb 2008
    Posts
    703
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    i rewrote your script for you on arc already just go check your messages
    Lunar Gaming - Reaching For The Stars

  4. #4
    Kirth's Avatar Active Member
    Reputation
    58
    Join Date
    Nov 2007
    Posts
    274
    Thanks G/R
    2/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Darn, that looks like a mess - you should use a macro/function for all of the repetitive shite.

Similar Threads

  1. [Question] Need help with Lua Script error
    By Rempage in forum WoW Bots Questions & Requests
    Replies: 0
    Last Post: 11-12-2016, 08:06 PM
  2. [Lua] lua script errors - HELP
    By singoe in forum WoW EMU Questions & Requests
    Replies: 2
    Last Post: 04-28-2010, 07:42 AM
  3. LUA Script Error, Help would be appreciated!
    By pachuco55 in forum World of Warcraft Emulator Servers
    Replies: 5
    Last Post: 06-20-2008, 06:03 PM
  4. [Help] LUA boss script error.
    By arthars1 in forum World of Warcraft Emulator Servers
    Replies: 2
    Last Post: 06-09-2008, 08:23 PM
  5. [Help me] Lua script error? please help.
    By Szharz in forum World of Warcraft Emulator Servers
    Replies: 3
    Last Post: 03-22-2008, 12:20 PM
All times are GMT -5. The time now is 02:23 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search