Noticias:

SMF - Just Installed!

Menú principal

Mensajes recientes

#61
Server Files / Muserver Season 6 Premium (Upd...
Último mensaje por Dakosmu - Abr 03, 2025, 04:39 AM
Muserver Season 6 Premium (Update 31) by louis

Hello everyone

It's been a long time since I've released anything for the community, so here's a belated Christmas present.

Full unlimited premium update 31 for you.


Images:
Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión



Watch videos about all updates on my YouTube channel:
https://www.youtube.com/@louisemulator

CHANGELOG:
UPDATE 12:
JULY 2018
- Custom NPC move
- CustomCommandInfo (v2)
- Custom RankUser OverHead
- Custom Party Icon(s4/s6)
- Trade Value
- Party Disable PK
- New Anti SpeedHack Skill System
- Update TvtEvent new requistes
- Add Auto Heal Skill in /Attack
- Add Global Password System
- Option to show Rankuser in all places
- Option to Hide Reset in Rankuser
- Option to Hide MReset in Rankuser
- Option to Change MReset name in Rankuser
- Disable Party HpBar option
- Increase CustomShops to 100
- Fixes in custom buy vip windows
- Others fixes

UPDATE 13:
AUGUST
- GS and GSCS new interface
- MasterReset remove fixed resets
- Command Start Invasion
- Command Start Custom Arena
- Custom Quest Command (v2)
- Custom EventTime (v2)
- Custom Npc Quest
- Custom Npc Name up to 100
- Custom Pick (v2)
- Add Custom Pick Excelent
- Add Custom Pick Socket
- Add Custom Pick SetItem
- Enable Lucky item trade
- Disable Duel Restore HP
- Disable Duel Restore SD
- Require Reset/MResets to enter in room
- Add Reset/MasterReset Requisite on Create Character
- Fixes in MapServerMove
- Other fixes

UPDATE 14:
SEPTEMBER
- Custom RF Gloves (S6)
- Custom Start Item
- Custom Interdace (S6)
- Speed SkillHack auto bloc account
- Add PK disable shop option
- Add PK disable trade option
- Add SummonMonsterRate in CustomMonster.txt
- Show ping in game option
- Show Fps in game option
- Stop Auto Reset when vip is over
- Fix auto move from Icarus if dinorant/fenrir died
- Fix Custom CommandInfo (S8)
- Fix DL Summon Party Skill (PK)
- Fix Pk Item drop to PkLevel 3 only
- Fix BuyVip + CustomStore
- Fix GuildWareHouse + Lock command
- Fix Reset remove zen
- Fix OffPvp command in Events
- Fix RankUser in GameMaster
- Fix Start event option
- Fix in Disconnect Accounts
- Fix Npc Quest Add Buff

UPDATE 15:
OCTUBER
- Add Duel MaxScore Option
- Add CustomMove to CustomNpcCommand
- Add CustomExchangeCoin to CustomNpcCommand
- Add Pk Drop Item by map Option
- Add Berserker buff(SUM) in Custom Attack
- Auto Reward Online Users System
- Auto Party buff Mana shield in Custom Attack
- Custom Exchange Coin Command
- Custom Duel Bet
- Custom Mix
- Custom disable item glow
- Guils vs Guils Event
- Skill Summon enable PK Move Option
- MapManager.txt updated
- Skill Damage System
- Guild Assistant/Battle Master can get Cs Crown
- Fix S6 Duel Score with Custom Interface S1/S2/S3
- Fix update MasterReset/Reset in rank user
- Fix Master Reset check in Custom Move
- Fix Guild Warehouse Dupe

UPDATE 16:
- Add GVG Event to Client Event Time
- Client Error logs moved to Logs folder (S6)
- Custom Bow/Crossbow (V2)
- Custom Gloves for RF(S8)
- Custom Pets System
- Disable Move List (M) Option
- Disable Set +15 Effect Option
- Increased Set items limite to 255(S6)
- Increased Item color Name(S6)
- Increased Custom Bow limit to 100
- Increased Custom Effects to 5000
- Increased Custom Item Description to 2000(S4)
- Increased Custom NpcName to 200
- Fix mini wing preview
- Fix Swith character when dying
- Fix Kalima ticket gate level
- Fix Set item drop rate
- Fix Party request when dying
- Fix GVG and TVT required item
- Fix Custom Gloves inventory position(S6)
- Fix War score + custom interface(S6)
- Fix Personal Store change item price
- Fix Custom Store close button(s6)

UPDATE 17:
- Add Keep DL command status option
- Add Option CS Reset Accumulated Time when die
- Command OffPvP by Map
- Command Helper by Map
- Command SetParty
- Command Bloc Chat
- Custom Advanced Status
- Custom Increase FPS
- Custom Jewel Bank
- Custom Npc Requirement(VIP NPC)
- Custom Monster Power Table
- Custom Monster Information (Alt+Mouse Over)
- Fix Custom Interface + Crywolf Score(S4/s6)
- Fix Custom Interface + Cs Minimap (S4/s6)
- Fix Custom Interface Dark heaven skill position(S6)
- Fix Custom Item inventory turn on mouse over(S6)
- Fix mob movement when it is dying
- Fix Guild password (removed)
- Fix Ring Starter increase damage and speed attack
- Fix Battle Royale issues
- Fix Lucky Itens Options(S6)
- Fix CS gates damage when open
- Fix CS Statue/Gate attack by defensive guild
- Fix Party Special Experience
- Fix Summon ChaosMix (S8)
- Fix Custom Pet Dinorant type Fly Icarus/Tarkan
- Fix ChaosMachine+Expansion Invent problem(S6)
- Fix Master Scrolls without master level
- Fix Master Scrolls of Battle and Strength
- Increase GameServer performance
- New Resistence Calc System (Ring,Pendant)
- New Custom Pets Options
- Pets & Guardians no descrease life option
- Ranking GvG
- Ranking Battle Royale
- Update Character Damage Calc

UPDATE 18:
- Auto Disable Custtom Attack Command when vip is over
- Auto Disable Custtom Pick Command when vip is over
- Auto Disable Auto Reset Command when vip is over
- Auto Disable OffPvp Command when vips is over
- Allow Mu Helper + Inventory Option(S6/S8)
- Boss Top Hit item drop count System
- Command Set PK
- Custom Npc Quest Reward LevelUpPoint and Zen Option
- Custom Quest Save Monster Count
- Custom Quest Reward LevelUpPoint and Zen Option
- Custom Pet New Moviment (V3)
- Custom Pet New Options (v2)
- Custom Pet Static Effect System
- Custom Pet Dynamic Effect System
- Custom Pet increased to 100
- Disable Die effect Option
- Disable Battle Royale item drop time
- Disable Time to Pick Up a dropped item option
- Disable CashShop Option (X) (S6)
- Disable Command Window (D) Option (S4/S6)
- Disable FullMap (Tab) Option (S6)
- Increased Custom Monster performance
- Increased Death Stab Skill performance
- Increased Mu Helper Max Time(S6/S8)
- JoinServer Updated to disconnect accounts
- Map by AccountLevel(Auto Move when vip is over)
- MonsterSetBase increased to 10000
- Rakilion(selupan) enable pvp option
- Trade By Map option
- Fix Custom Pet Dinorant type Fly Icarus/Tarkan(S6)
- Fix Battle Royale Trade
- Fix Summon Monster with Rank User
- Fix Custom Interface Numbers (S4)
- Fix Custom Interface favorite skill number (S4/S6)
- Fix Battle Royale DL command reset
- Fix Battle Royale Skins reset
- Fix TvtEvent Remove disconnected player
- Fix TvtEvent disable pvp in stand time

UPDATE 19:
- Custom Cloak
- Custom Jewel Updated
- Custom NPC requeriment - Class
- Custom disable ItemGlow/Excellent Effect(S4/S6)
- Custom Disable Systems(S4/S6)
- Custom Pet Glow
- Combo Effect when die
- Command Jewel Pack & UnPack (V2)
- Death Stab Skill hit multiplier option
- ItemMove.txt Updated
- New Menu System (S4/S6)
- Marry Command pk can't move option
- Lock Command bloc cashshop gift
- Fix Plasma Storm Skill decrease defense/durability
- Fix Castle siege Teleport Skill Bugs
- Fix Battle Royale Increase Health Effect
- Fix Custom Pet Dinorant type Height (S6)
- Fix GvG move when get disconnect
- Fix Custom Jewel green slot on mouse over (S6)
- Fix Custom Quest issues
- Fix party byff crash (s8)
- Fix Remedy of love effect
- Fix Guardian Effect

UPDATE 20
- Allow EarthQuake skill in a Custom DarkHorse
- Change Character Delete level option
- Custom Off Attack Auto Resume
- Custom Off Store Auto Resume
- Personal Store save values
- Global Chat show server name
- Custom Item by VIP, Resets, MasterResets
- Increase max invasion to 50
- Custom Font (S4/S6)
- Custom Post Item (S4/S6)
- Server Time
- Message.txt multi-language
- Reflect Damage by class balance
- Server Allow/Disallow Pk enter
- PersonalShop(Bless,Soul,Chaos) works toghether JewelBank
- Fix Cant disable Commands withou requisites
- Fix when Gvg and Tvt starts you can pvp in other maps
- Fix Reload quiz event
- Fix Duel Bet GS Crash (S8)
- Fix Double Goer move party
- Fix chat in russian language
- Fix Custom Jewel ancient apply on non-ancient items
- Fix Item 0,41 repair (S4,S6)
- Fix Summon Party closes the CS Gate
- Fix Switch character in Kalima
- Fix Set Party command issues
- Fix CustomBow auto reload arrow
- Fix Spirit of Guardian descrease damage in Pvp
- Fix PrintScreen in 1366x768 resolution
- Removed MuError.log (S4/S6)

Update 21:
- Add 9 New Maps Slots (Total 18) (S4,S6)
- Increase Max Custom Monsters to 200
- Incresed Max Global Message size
- Show Level+Master level in the status(S4/S6)
- Changed ExpBar in the interface Season 2/8 (S4/S6)
- New Custom Interfaces (S4/S6)
- New Downgrade Options (S4/S6)
- Quest Window
- Reduce Memory use (V2)
- RankUser by quets
- Fix Marry track/trace move in events
- Fix Marlon Auto move
- Fix Hamrmony Itens use 62 ~ 72 (S4)
- Fix Cashshop button with Season 2 interface
- Fix Lugard Window fix text on Wide resolution
- Fix DisableSkillEffect client crashs
- Fix CustomWing max durability
- Fix can trade/party when dying
- Fix update monster power table when reset/mreset
- Fix Rank user vip type to works with multi-lang
- [AntiDupe] Disabled Helper Config window click when use the Chaos maxhine
- [AntiDupe] New System antidupe to show in log the dupes
- [AntiDupe] Disabled CashShop open when have a item in the Chaos
- [AntiDupe] Check Dupes when move item in the Warehouse and inventory
- [AntiDupe] Check Dupes when logout chacter
- [AntiDupe] Check dupes before send a Jewel to Jewel Bank
- [AntiDupe] Check dupes before pack and unpack

Update 22:
- AntiFlood System - Add Dragon Sky Switch ON/OFF
- Custom Attack Skill Control
- Custom Monster Effect
- Custom Monster Glow
- Character Max Rate Settings
- Right Click move item to chaos
- Right Click Equip/Unquip items
- Rank User show level + master level option
- Select Character change interface(map)/char position(S4/S6)
- Select Character show level + master level option
- Select Character show reset/mreset option
- Select character show rank user option
- Select character animations option
- Select server change room names
- Custom Summon Scroll sytem
- Custom Npc quest auto open windown when click in the NPC
- Change min monster level party formula option
- Hack Skill Check New Type
- Disable attack when use teleport skill option
- Reset Keep DL Command Point by Account level
- Elf Buffer Show Quest Window Option (S6/S8)
- Fix chat for russian language (S8)
- Fix max ip connection problem with offattack/store
- Fix stop Sky dragon when invasion ends
- Fix common shop custom value index 256 ~ 512
- Fix SpeedHackSkill type 4 - bloc account
- Fix monster(traps) show rank user
- Fix Pet block stuck
- Fix add basic skill when reset/mreset
- Fix add basic skill when use changeclass command
- Fix Cutom Item Vip
- Fix Custom Pet Dinorant type Height (S4)
- Fix Custom Pet Dinorant type Fly Icarus/Tarkan(S4)
- Fix marry pk trace/track
- Fix two attack at the same time (CustomAttack)
- Fix Excellent items glow (S8)
- Fix Dark Horse look around (S4/S6)
- Fix Custom Monster HP Bar (S8)
- Fix DragonSky in the GSCS
- Fix Personal store open/buy with the lock command enabled
- Fix Mu Rummy cards desappear (S8)
- Fix Show JOH option in the ancient items (S8)
- Fix marry track trace move to/from kanturu
- Fix Blood Castle drop event item loot time
- Fix IllusionTemple drop event item loot time
- Fix show pets damage decrease on advanced status
- Fix Damage PvP 380 item
- Fix new Dupe Type
- Fix Rename less than 4 characters
- Fix QuestWorld count kill monsters in party
- Fix Move from icarus if no use a wing or pet
- Fix Equip transformation rings double change skin (s8)
- Fix Boss Monster no drops
- Fix Reflect Damage (NewDamageCalc = 1)
- Fix Mana shield max Rate
- Fix Greater Life Skill in party

UPDATE 23:
- Added warning message in the Duel bet
- Auction system (max 200 auctions)
- Change Item power system(Dmg,Def)
- Command Rename show global message option (ON/OFF)
- Command Reset add coins reward option
- Command Master Reset add coins reward option
- Guild War improvements
- Increased max customjewel to 50
- Increased max custom monster glow to 400
- Increased Max ItemtooltipLine to 1024(S6/S8)
- Increased Max CustomMix to 32.000
- New GS Interface
- New Store procedure WZ_SetPlayerKiller
- New Store procedure WZ_GetPlayerKiller
- New Store procedure WZ_RankingAll
- Master Skill upgraded (s6)
- Party Level Gap Option
- Pvp championship event
- Fix Battle royale trade
- Fix Battle royale others
- Fix Commands that didn't charge coins
- Fix Client Crashs when use panda ring in Kanturu
- Fix server close withot offilines
- Fix Show +Skill in the drop name
- Fix King of Mu Event
- Fix use teleport skill using CustomAttack
- Fix Master skill issues
- Fix customn quest inventory space
- Fix equip two transformation rings with right click

Update 24:
- Added 5 extra plugins in maininfo
- Anti Speed Hack Movement
- Battle Royale Event Drop itens when die option
- Blood Castle aplly the exp by rate of ExperienceTable
- Chaos Castle aplly the exp by rate of ExperienceTable
- Devil Square aplly the exp by rate of ExperienceTable
- Chaos Castle aplly the exp by rate of ExperienceTable
- Imp.Guardian aplly the exp by rate of ExperienceTable
- Custom Client Icon
- Custom Item Power increased to 1000
- Custom Monster Skill
- Custom Mix (v2)
- Disable Teleport Skill when Immobilized
- New Castle Siege damage rate options
- Disable Twist slash multi skill on cs option
- Item inventory reskin (Ex. Horn of fenrir)
- EventItemBag drops in inventory option
- New Character name style
- AllowWings380Opt (house skype) verificar
- Show Monster name (S4/S6)
- Change monster name color
- Mount Stuck rate option
- Reset Monster Hit damage when player die option
- Kundun boss use OrderOfProtection and Reffil HP
- Promotional Banner when enter in game
- Fix UserHp bar position
- Fix Illusion temple remove effects when enter
- Fix Npc Delgado window (lucky coin)(S8)
- Fix Mount speed s8 (S8)
- Fix Custom Jewel aplly on Arrow/Bolt
- Fix Master Experience after reset
- Fix move when is stuned
- Fix SetItem especial values
- Fix Item tooltip bugs (s6)
- Fix Items Name in the Auction/Customquest systems
- Fix Christmas ring
- Fix Box of Kundun glow (S8)

UPDATE 25:
- Auto resume OffHelper (S4/S8)
- Add Blood Castle allow buff in safe zone option
- Add Blood Castle allow pvp option
- Add Character close time option
- Add Command /Makeall /MakeallMap
- Add Command /DropAll /DropllMap
- Add ExcellentOptionRate.txt
- Add Imperial guardian reward experience option
- Add ItemOptionWing.txt
- Add Kanturu Multi-language system
- Add Russian Roulette Remove Rate option
- Add Status Points by master level option
- Advanced event item bag updated
- Combo with 1 or 2 skills
- Custom Menu Option
- Custom MiniMap type 2
- Custom Name Style (V2) (S4/S6)
- Custom sign by VIP or RankUser
- Event Entry Count Limit
- EventItemBag coins reward option
- GS Monster Drop info system
- Key Ctrl Attack enable/disable
- Main show confirmation messagebox to close option
- Max Game Instances
- Max Master Skill tree points
- Monster health bar updated(S4/S6)
- New MonsterSetBase system
- Npc Invasion option
- PK Zone system
- Fix Blood Castle gm wings
- Fix Blood Castle shows archangel on the back
- Fix Custom Jewel excellent in Wings 2nd
- Fix Custom Jewel excellent remove without using
- Fix Custom Jewel excellent add max options on wings
- Fix Custom Jewel option add random type in wings
- Fix Friend mail + trade zen bug
- Fix Kanturu global message only in kanturu map
- Fix Lock command can buy from a personal store
- Fix Some Skills use on Custom pet
- Fix duel command with command lock activeted
- Fix bottom black bar with Custom Interface(S4/S6)
- Fix turn into pk when kill other pk
- Fix snow lorencia/noria
- Fix Jewel bank + Npc Guardsman
- Fix Black shadow + Npc Guardsman
- Fix Illustion temple ticket right-click
- Fix impale skill with custom mounts pets

UPDATE 26:
- Add ItemLevel in the ItemOption.txt
- Add EventGvGMaxGuildMembers Option
- Custom Flag System
- Custom Pet Damage decrease option
- Disable Guild PK Option
- Gremory Case System
- New DefaultClassStatus.txt file
- New MasterResetTable.txt file
- Reset Reward item
- Master Reset Reward Item
- Online time Reward Item
- Party Search System(S4/S6)
- Store Search System(S4/S6)
- Open Store in Hunt zone Option
- Two Weapons Damage Rate
- Pk Limit Option
- Fix Indulgence item (13,60)
- Fix mastered frozen stab attack speed effetct
- Fix OffHelper items level name
- Fix TopHit Monster coin reward
- Fix Skill Inside Option
- Fix Custom Quest no inventory Space
- Fix Custom Quest LevelUpPoints when reset
- Fix Online time save into database
- Fix CustomRankUser by quest no save
- Fix Gvg Max guild option
- Fix Party Gap in the JoinParty command
- Fix Teleport skill bug with sleep or stun
- Fix Map move bug with sleep or stun effect
- Fix character can't use skill with Ice arrow.
- Fix Can move when use the Summon Skill
- Fix Dark spirit postion in view port (safezone)(créditos rafhael)
- Fix Personal store view port close when die
- Fix white boots when evolve to 3rd class

UPDATE 27:
- Blood Castle event by level/reset/mreset (S4/S6)
- Devil Square event by level/reset/mreset (S4/S6)
- Character Combo Skill Damage Settings to All class
- Character.dat Max Attack Speed Option
- Common shop items with serial
- Command Remaster v2
- Command delay save
- Command delay by vip
- Dropped item tooltip
- CustomPet allow skills in mount option
- CustomNpcRequeriment check if is pk to use option
- Item Option Combination
- Guild Warehouse Message
- Marathon Event
- Improvements to the Item Serial System
- Invasion Manager Updated
- Block pk move in gate.txt option
- New EventBags for marathon and PVP championship
- Block Gens leave option
- Increase Max Buff effects to 32(S6)
- Max Custom Item description increased to 3000 (S4)
- Max Custom gloves incresed to 40 (S6/S8)
- MasterReset required stats points option
- Fix Character creation cards (S6)
- Fix reset monster top hit damage when change/close character
- Fix Master skill table points
- Fix MG skill stop attacking if have a bk using twist slash(ex)
- Fix Twist slash when riding a mount (S6)
- Fix Marry trace/track to vulcanus
- Fix Personal store inventory full block other purchases
- Fix Seach store gameserver crash
- Fix CustomNpcQuest item expire time
- Fix CustomMonster summon respaw
- Fix JewelBank + Duel bet dupe jewels
- Fix Mini map click/walk in the s8 interface(S6)
- Fix Personal Shop Tittle cut (S6)

Update 28:
- Custom Auto Move
- Custom Invasion Information(v2)
- Custom Npc Collector (v2)
- Custom skin system
- Custom stack item
- Custom Item Bank
- Custom Shop v3(S4/S6)
- Custom Chat Interfaces(S4/S6)
- ItemOptionRate.txt Updated
- Reuse removed socket option
- Multiwarehouse interface (S4/S6)
- Fix Summ Attack speed when add status points
- Fix some problems in the marathon event
- Fix Heal and potions when use MuHelper
- Fix Custom add status with some buffs
- Fix CustomAddStatus open chat when press enter
- Fix ConfirmBox open chat when press enter
- Fix Custom Monster Sound problems

Update 29:
- Allow use asan Of Mobility after reset Option
- Allow pet mount in safezone option
- Infinity Arrow option
- Custom buff icon (S4/S6)
- Custom Item Fusion
- Custom Item title color (S6)
- Custom Item Power(v2) (S4/S6)
- Custom Lucky Wheel
- Custom Model effect
- Custom pet pick item (Muun Type)
- Custom PK reward
- Custom reset/master reset button
- New hack movement check options
- MapManager Drop Type
- Quest zyro system (S6/S8)
- Fix Infinity arrow reload when offline
- Fix Master Skill tree rebuild(S4)
- Fix use hack to crash the Gameserver
- Fix Monster name behind the invasion button
- Fix duel buff removed (S6/S8)
- Fix Custom pet mount sit in the game seates

Update 30:
- Allow Guild War by map option
- Allow Marry commands by map option(trace/track)
- Allow Cashshop by map option
- Auto Save Login
- Command Message Box
- Command Reward/Rewardall multilanguage message(S6/S8)
- Create account in game
- Custom Event Time (V2)
- Custom Guild Effect
- Custom Item Description
- Notice multilanguage(S6/S8)
- Max rate of Lesser Damage Skill by class option
- Max rate of Lesser Defense Skill by class option
- Max Coins limit
- Monster invasion amount by online players count
- Incoming Message icon and Warning
- Ice Arrow Skill rate/time option
- Party Master Experience
- Reload Map/Terrain Option
- Reload Message/Notice
- Fix Castle siege after click switch can't move(S6)
- Fix Gift command with Delay
- Fix Marry trace
- Fix MonsterPowerTable by Master level
- Fix Wz_Setcoin with cashshop disabled

Update 31:
- Chaos Mix item log
- Character Start Gate by map
- Command /make /drop updated
- Experience rate option
- Gate/Move check Level+Master level
- Guild Alliance Disable PK Option
- Item plus remove level amount option
- Max Level 65000
- New Admin commands
- Required item level check master level option
- Server log utf-8 option
- Fix remove iron skill when reset master skill tree(S8)
- Fix total points in the skill tree, over 255 (S6)
- Fix Life Stone drop in the common GS
- Fix EventItemBag stack drop
- Fix Castle siege icon change when get the crown
- Fix item info close client in widescreen (S6)
- Fix menu icon type 1 when shows item info window(S6)

Downloads:
Server:
https://www.4shared.com/s/fU1hGrhYuku

Cliente:
https://www.4shared.com/s/fvHuF5Ah7ea (con itens agregados)
https://www.4shared.com/s/fX1yCkRw_ea (limpio)

Mu editor update 31+:
https://www.4shared.com/s/f6ZTuUk1Viq

:beer :beer :beer

Créditos:
  • X-team
  • MuEmu
  • louis
  • Haziel
  • Smiley
  • Mentor
  • Hugo
  • Hinetworks
  • Emershow
  • MyHeart
  • Takumi
  • Adrian(SSEMU)
#62
Skin Mu / Skin Motto Rappi
Último mensaje por Dakosmu - Abr 02, 2025, 12:17 AM
Skin Motto Rappi


Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión


Descargar
https://mega.nz/file/IeEx1ZYJ#Me_PzoGAeM2ipC1NAUJFTVB4XY60aiRI4ZKJP1JnGss

Creditos
hardcore30
#63
Source Mu / Re:Source Monster HP Bar main ...
Último mensaje por Dakosmu - Abr 02, 2025, 12:16 AM
Cita de: bin9xhn2 en Abr 01, 2025, 03:41 PM
Cita de: Dakosmu en Mar 31, 2025, 08:32 PM[h5]Monster HP Bar main 5.2[/url][/h5]

WsClient.cpp

Code: [Select]
case 0xE2:
    GCNewHealthBarRecv((PMSG_NEW_HEALTH_BAR_RECV*)ReceiveBuffer);
    return 1;

.cpp

Code: [Select]
CHealthBar gHealthBar;

CHealthBar::CHealthBar()
{
    ClearNewHealthBar();
}

CHealthBar::~CHealthBar()
{
}

void GCNewHealthBarRecv(PMSG_NEW_HEALTH_BAR_RECV* lpMsg) // OK
{
    gHealthBar.ClearNewHealthBar();

    for (int n = 0; n < lpMsg->count; n++)
    {
        PMSG_NEW_HEALTH_RECV* lpInfo = (PMSG_NEW_HEALTH_RECV*)(((BYTE*)lpMsg) + sizeof(PMSG_NEW_HEALTH_BAR_RECV) + (sizeof(PMSG_NEW_HEALTH_RECV) * n));
        gHealthBar.InsertNewHealthBar(lpInfo->index, lpInfo->type, lpInfo->rate, lpInfo->ViewHP);
    }
}

void CHealthBar::ClearNewHealthBar() // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        gNewHealthBar[n].index = 0xFFFF;
        gNewHealthBar[n].type = 0;
        gNewHealthBar[n].rate = 0;
        gNewHealthBar[n].ViewHP[0] = 0;
        gNewHealthBar[n].ViewHP[1] = 0;
    }
}

void CHealthBar::InsertNewHealthBar(WORD index, BYTE type, BYTE rate, DWORD* ViewHP) // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        if (gNewHealthBar[n].index == 0xFFFF)
        {
            gNewHealthBar[n].index = index;
            gNewHealthBar[n].type = type;
            gNewHealthBar[n].rate = rate;
            gNewHealthBar[n].ViewHP[0] = ViewHP[0];
            gNewHealthBar[n].ViewHP[1] = ViewHP[1];
            return;
        }
    }
}

NEW_HEALTH_BAR* CHealthBar::GetNewHealthBar(WORD index, BYTE type) // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        if (gNewHealthBar[n].index != 0xFFFF)
        {
            if (gNewHealthBar[n].index == index && gNewHealthBar[n].type == type)
            {
                return &gNewHealthBar[n];
            }
        }
    }

    return 0;
}

void CHealthBar::DrawNewHealthBar()
{
    float Width = 85.f;
    char Text[100], Text2[100], Text3[100];
    vec3_t Angle;
    int ScreenX, ScreenY;

    static float LastHP[MAX_MAIN_VIEWPORT] = { 0 };
    static float DamageTimer[MAX_MAIN_VIEWPORT] = { 0 };

    for (int j = 0; j < MAX_MAIN_VIEWPORT; ++j)
    {
        auto ViewportAddress = &CharactersClient[j];

        if (!ViewportAddress) continue;

        NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(ViewportAddress->Key, ViewportAddress->Object.Kind);
        if (lpNewHealthBar == 0) continue;

        Vector(
            ViewportAddress->Object.Position[0],
            ViewportAddress->Object.Position[1],
            ViewportAddress->Object.Position[2] + ViewportAddress->Object.BoundingBoxMax[2] + 100.f,
            Angle);

        if (ViewportAddress->Object.Kind == 2)
        {
            BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
            Projection(Angle, &ScreenX, &ScreenY);
            EndOpengl();

            ScreenX -= (int)(Width / 2);

            // Texto do HP aprimorado
            auto FormatNumber = [](int num) -> std::string {
                char buffer[16];
                if (num >= 1000000000) // 1 bilhão
                    sprintf(buffer, "%.1fKKK", num / 1000000000.0);
                else if (num >= 1000000) //
It seems that this source code is lacking. Can you fix it and indicate the additional part?
ok voy a revisar
#64
Source Mu / Re:Source Monster HP Bar main ...
Último mensaje por bin9xhn2 - Abr 01, 2025, 03:41 PM
Cita de: Dakosmu en Mar 31, 2025, 08:32 PM[h5]Monster HP Bar main 5.2[/url][/h5]

WsClient.cpp

Code: [Select]
case 0xE2:
    GCNewHealthBarRecv((PMSG_NEW_HEALTH_BAR_RECV*)ReceiveBuffer);
    return 1;

.cpp

Code: [Select]
CHealthBar gHealthBar;

CHealthBar::CHealthBar()
{
    ClearNewHealthBar();
}

CHealthBar::~CHealthBar()
{
}

void GCNewHealthBarRecv(PMSG_NEW_HEALTH_BAR_RECV* lpMsg) // OK
{
    gHealthBar.ClearNewHealthBar();

    for (int n = 0; n < lpMsg->count; n++)
    {
        PMSG_NEW_HEALTH_RECV* lpInfo = (PMSG_NEW_HEALTH_RECV*)(((BYTE*)lpMsg) + sizeof(PMSG_NEW_HEALTH_BAR_RECV) + (sizeof(PMSG_NEW_HEALTH_RECV) * n));
        gHealthBar.InsertNewHealthBar(lpInfo->index, lpInfo->type, lpInfo->rate, lpInfo->ViewHP);
    }
}

void CHealthBar::ClearNewHealthBar() // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        gNewHealthBar[n].index = 0xFFFF;
        gNewHealthBar[n].type = 0;
        gNewHealthBar[n].rate = 0;
        gNewHealthBar[n].ViewHP[0] = 0;
        gNewHealthBar[n].ViewHP[1] = 0;
    }
}

void CHealthBar::InsertNewHealthBar(WORD index, BYTE type, BYTE rate, DWORD* ViewHP) // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        if (gNewHealthBar[n].index == 0xFFFF)
        {
            gNewHealthBar[n].index = index;
            gNewHealthBar[n].type = type;
            gNewHealthBar[n].rate = rate;
            gNewHealthBar[n].ViewHP[0] = ViewHP[0];
            gNewHealthBar[n].ViewHP[1] = ViewHP[1];
            return;
        }
    }
}

NEW_HEALTH_BAR* CHealthBar::GetNewHealthBar(WORD index, BYTE type) // OK
{
    for (int n = 0; n < MAX_MAIN_VIEWPORT; n++)
    {
        if (gNewHealthBar[n].index != 0xFFFF)
        {
            if (gNewHealthBar[n].index == index && gNewHealthBar[n].type == type)
            {
                return &gNewHealthBar[n];
            }
        }
    }

    return 0;
}

void CHealthBar::DrawNewHealthBar()
{
    float Width = 85.f;
    char Text[100], Text2[100], Text3[100];
    vec3_t Angle;
    int ScreenX, ScreenY;

    static float LastHP[MAX_MAIN_VIEWPORT] = { 0 };
    static float DamageTimer[MAX_MAIN_VIEWPORT] = { 0 };

    for (int j = 0; j < MAX_MAIN_VIEWPORT; ++j)
    {
        auto ViewportAddress = &CharactersClient[j];

        if (!ViewportAddress) continue;

        NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(ViewportAddress->Key, ViewportAddress->Object.Kind);
        if (lpNewHealthBar == 0) continue;

        Vector(
            ViewportAddress->Object.Position[0],
            ViewportAddress->Object.Position[1],
            ViewportAddress->Object.Position[2] + ViewportAddress->Object.BoundingBoxMax[2] + 100.f,
            Angle);

        if (ViewportAddress->Object.Kind == 2)
        {
            BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
            Projection(Angle, &ScreenX, &ScreenY);
            EndOpengl();

            ScreenX -= (int)(Width / 2);

            // Texto do HP aprimorado
            auto FormatNumber = [](int num) -> std::string {
                char buffer[16];
                if (num >= 1000000000) // 1 bilhão
                    sprintf(buffer, "%.1fKKK", num / 1000000000.0);
                else if (num >= 1000000) //
It seems that this source code is lacking. Can you fix it and indicate the additional part?
#65
Source Mu / Source Monster HP Bar main 5.2
Último mensaje por Dakosmu - Mar 31, 2025, 08:32 PM





O HPBar dos montros tem um efeito "Delay" quando ataca
A Barra de vida do Personagem aperte CTRL e posicione o mouse em cima do personagem

01/04 algumas estruturas do .h que não enviei



WsClient.cpp

case 0xE2:
GCNewHealthBarRecv((PMSG_NEW_HEALTH_BAR_RECV*)ReceiveBuffer);
return 1;
}

.cpp

CHealthBar gHealthBar;

CHealthBar::CHealthBar()
{
ClearNewHealthBar();
}

CHealthBar::~CHealthBar()
{

}

void GCNewHealthBarRecv(PMSG_NEW_HEALTH_BAR_RECV* lpMsg) // OK
{
gHealthBar.ClearNewHealthBar();

for (int n = 0;n < lpMsg->count;n++)
{
PMSG_NEW_HEALTH_RECV* lpInfo = (PMSG_NEW_HEALTH_RECV*)(((BYTE*)lpMsg) + sizeof(PMSG_NEW_HEALTH_BAR_RECV) + (sizeof(PMSG_NEW_HEALTH_RECV) * n));

gHealthBar.InsertNewHealthBar(lpInfo->index, lpInfo->type, lpInfo->rate, lpInfo->ViewHP);
}
}

void CHealthBar::ClearNewHealthBar() // OK
{
for (int n = 0;n < MAX_MAIN_VIEWPORT;n++)
{
gNewHealthBar[n].index = 0xFFFF;
gNewHealthBar[n].type = 0;
gNewHealthBar[n].rate = 0;
gNewHealthBar[n].ViewHP[0] = 0;
gNewHealthBar[n].ViewHP[1] = 0;
}
}

void  CHealthBar::InsertNewHealthBar(WORD index, BYTE type, BYTE rate, DWORD* ViewHP) // OK
{
for (int n = 0;n < MAX_MAIN_VIEWPORT;n++)
{
if (gNewHealthBar[n].index == 0xFFFF)
{
gNewHealthBar[n].index = index;
gNewHealthBar[n].type = type;
gNewHealthBar[n].rate = rate;
gNewHealthBar[n].ViewHP[0] = ViewHP[0];
gNewHealthBar[n].ViewHP[1] = ViewHP[1];

return;
}
}
}

NEW_HEALTH_BAR* CHealthBar::GetNewHealthBar(WORD index, BYTE type) // OK
{
for (int n = 0;n < MAX_MAIN_VIEWPORT;n++)
{
if (gNewHealthBar[n].index != 0xFFFF)
{
if (gNewHealthBar[n].index == index && gNewHealthBar[n].type == type)
{
return &gNewHealthBar[n];
}
}
}

return 0;
}

void CHealthBar::DrawNewHealthBar()
{
float Width = 85.f;
char Text[100], Text2[100], Text3[100];
vec3_t Angle;
int ScreenX, ScreenY;

static float LastHP[MAX_MAIN_VIEWPORT] = { 0 };
static float DamageTimer[MAX_MAIN_VIEWPORT] = { 0 };

for (int j = 0; j < MAX_MAIN_VIEWPORT; ++j)
{
auto ViewportAddress = &CharactersClient[j];

if (!ViewportAddress) continue;

NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(ViewportAddress->Key, ViewportAddress->Object.Kind);
if (lpNewHealthBar == 0) continue;

Vector(
ViewportAddress->Object.Position[0],
ViewportAddress->Object.Position[1],
ViewportAddress->Object.Position[2] + ViewportAddress->Object.BoundingBoxMax[2] + 100.f,

Angle);

if (ViewportAddress->Object.Kind == 2)
{
BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
Projection(Angle, &ScreenX, &ScreenY);
EndOpengl();

ScreenX -= (int)(Width / 2);

// Texto do HP aprimorado
auto FormatNumber = [](int num) -> std::string {
char buffer[16];
if (num >= 1000000000)  // 1 bilhão
sprintf(buffer, "%.1fKKK", num / 1000000000.0);
else if (num >= 1000000) // 1 milhão
sprintf(buffer, "%.1fKK", num / 1000000.0);
else if (num >= 1000)    // 1 mil
sprintf(buffer, "%.1fK", num / 1000.0);
else
sprintf(buffer, "%d", num);
return std::string(buffer);
};

std::string hpCurrent = FormatNumber(lpNewHealthBar->ViewHP[0]);
std::string hpMax = FormatNumber(lpNewHealthBar->ViewHP[1]);

sprintf(Text, "%s / %s (%d%%)", hpCurrent.c_str(), hpMax.c_str(), lpNewHealthBar->rate);

g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetTextColor(255, 255, 255, 255);
g_pRenderText->SetBgColor(0, 0, 0, 128);
g_pRenderText->RenderText(ScreenX + (Width / 2), ScreenY - 8, Text, Width, 0, 8);

sprintf(Text2, "%s", ViewportAddress->ID);
g_pRenderText->RenderText(ScreenX + (Width / 2), ScreenY - 18, Text2, Width, 0, 8);

// Barra de fundo
EnableAlphaTest();
glColor4f(0.2f, 0.2f, 0.2f, 0.8f);
RenderColor((float)(ScreenX), (float)(ScreenY + 2), Width, 6.f);

// Cálculo da porcentagem do HP
float HP_Percentage = (float)lpNewHealthBar->ViewHP[0] / (float)lpNewHealthBar->ViewHP[1];
float HP_Width = Width * HP_Percentage;

// Se a vida diminuiu, inicia o timer e mantém a barra de marcação do dano
if (lpNewHealthBar->ViewHP[0] < LastHP[j]) {
DamageTimer[j] = 2.0f; // Agora dura 1,5 segundos antes de desaparecer
}

// Suaviza a descida da barra de marcação do dano
if (LastHP[j] > lpNewHealthBar->ViewHP[0]) {
LastHP[j] -= ((LastHP[j] - lpNewHealthBar->ViewHP[0]) * 0.05f); // Suavização lenta
}
else {
LastHP[j] = lpNewHealthBar->ViewHP[0];
}

float LastHP_Percentage = (float)LastHP[j] / (float)lpNewHealthBar->ViewHP[1];
float LastHP_Width = min(Width, Width * LastHP_Percentage);

// Reduz gradualmente a transparência da marcação do dano
if (DamageTimer[j] > 0) {
glColor4f(0.8f, 0.0f, 0.0f, DamageTimer[j] * 0.66f); // Mais opaco no início, sumindo devagar
RenderColor((float)(ScreenX + HP_Width), (float)(ScreenY + 3), LastHP_Width - HP_Width, 4.f);
DamageTimer[j] -= 0.008f; // Agora a transparência desaparece mais devagar
}

// Barra de HP principal com gradiente
float Red = 1.0f - HP_Percentage;
float Green = HP_Percentage;
glColor4f(Red, Green, 0.f, 1.f);
RenderColor((float)(ScreenX + 1), (float)(ScreenY + 3), HP_Width - 2, 4.f);

DisableAlphaBlend();
}
else if(ViewportAddress->Object.Kind == 1)
{

BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
Projection(Angle, &ScreenX, &ScreenY);
EndOpengl();
if (CheckMouseIn(ScreenX - 20, ScreenY, 40, 120))
{
if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {

EnableAlphaTest();

glColor4f(0, 0.f, 0.f, 1.f);
RenderColor((float)((GetWindowsX / 2) - 51), (float)(GetWindowsY - 80 - 1), 102, 8.f);

glColor4f(1.f, 0.f, 0.f, 1.f);
RenderColor((float)((GetWindowsX / 2) - 50), (float)(GetWindowsY - 80), lpNewHealthBar->rate, 6.f);

DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);

EnableAlphaBlend();

g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetTextColor(255, 255, 255, 255);
g_pRenderText->SetBgColor(0, 0, 0, 0);

sprintf(Text3, "%d%%", lpNewHealthBar->rate);

g_pRenderText->RenderText((float)((GetWindowsX / 2)), (float)(GetWindowsY - 81), Text3, 100.f, 0, 8);
}
}
}

}
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}


.h
#define MAX_MAIN_VIEWPORT 400

struct NEW_HEALTH_BAR
{
WORD index;
BYTE type;
BYTE rate;
DWORD ViewHP[2];
};


class CHealthBar {
public:
CHealthBar();
~CHealthBar();

void ClearNewHealthBar();
NEW_HEALTH_BAR* GetNewHealthBar(WORD index, BYTE type);
void DrawNewHealthBar();
void InsertNewHealthBar(WORD index, BYTE type, BYTE rate, DWORD* ViewHP);

private:
NEW_HEALTH_BAR gNewHealthBar[MAX_MAIN_VIEWPORT];
};

extern CHealthBar gHealthBar;

Call:
bool SEASON3B::CNewUINameWindow::Render()
{
EnableAlphaTest();
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
RenderName();
    RenderTimes();
    matchEvent::RenderMatchTimes ();
    RenderBooleans();
DrawPersonalShopTitleImp();
DisableAlphaBlend();

if (SceneFlag == MAIN_SCENE)
{
gInterface.m_Lua.Generic_Call("BeforeMainProc", ">");
gHealthBar.DrawNewHealthBar(); //hpbar
g_pReconnect->ReconnectMainProc();
}
return true;
}



struct PMSG_NEW_HEALTH_BAR_RECV
{
PSWMSG_HEAD header; // C2:F3:E2
BYTE count;
};

struct PMSG_NEW_HEALTH_RECV
{
WORD index;
BYTE type;
BYTE rate;
DWORD ViewHP[2];
};

Server Side


Protocol.h

void GCNewHealthBarSend(LPOBJ lpObj) // OK
{
#if(GAMESERVER_EXTRA==1)

#if(GAMESERVER_UPDATE<=603)

if(gServerInfo.m_MonsterHealthBarSwitch == 0)
{
return;
}

BYTE send[4096];

PMSG_NEW_HEALTH_BAR_SEND pMsg;

pMsg.header.set(0xF3,0xE2,0);

int size = sizeof(pMsg);

pMsg.count = 0;

PMSG_NEW_HEALTH_BAR info;

for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer[n].state != VIEWPORT_SEND && lpObj->VpPlayer[n].state != VIEWPORT_WAIT)
{
continue;
}

if (lpObj->VpPlayer[n].type == OBJECT_MONSTER && gServerInfo.m_MonsterHealthBarSwitch == 0)
{
continue;
}

if (lpObj->VpPlayer[n].type == OBJECT_USER && gServerInfo.m_UserHealthBarSwitch == 0)
{
continue;
}

if(OBJECT_RANGE(lpObj->VpPlayer[n].index) == 0)
{
continue;
}

LPOBJ lpTarget = &gObj[lpObj->VpPlayer[n].index];

if(lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || OBJECT_RANGE(lpTarget->SummonIndex) != 0 || CC_MAP_RANGE(lpTarget->Map) != 0)
{
continue;
}

info.index = lpTarget->Index;

info.type = (BYTE)lpTarget->Type;

info.rate = (BYTE)((lpTarget->Life*100)/(lpTarget->MaxLife+lpTarget->AddLife));

info.ViewHP[0] = (DWORD)(lpTarget->Life);

info.ViewHP[1] = (DWORD)(lpTarget->MaxLife);

memcpy(&send[size],&info,sizeof(info));
size += sizeof(info);

pMsg.count++;
}

pMsg.header.size[0] = SET_NUMBERHB(size);

pMsg.header.size[1] = SET_NUMBERLB(size);

memcpy(send,&pMsg,sizeof(pMsg));

DataSend(lpObj->Index,send,size);

#endif

#endif
}


Protocol.h

struct PMSG_NEW_HEALTH_BAR_SEND
{
PSWMSG_HEAD header; // C2:F3:E2
BYTE count;
};


struct PMSG_NEW_HEALTH_BAR
{
WORD index;
BYTE type;
BYTE rate;
DWORD ViewHP[2];
};

Creditos: eu

#66
Source Mu / Source Efectos Armas S4 para S...
Último mensaje por Dakosmu - Mar 31, 2025, 07:27 PM
Source Efectos Armas S4 para S3 (Main 1.04J "1.04.10") - Kapocha


[h5]Source Efectos Armas S4 para S3 (Main 1.04J "1.04.10") - Kapocha[/h5]
Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión


Tienen que añadir en su LoadImage esta textura "Item\soketmagic_stape02.jpg"

Download:

Code: [Select]
CEffect.h
#pragma once
#define ITEM_INTER 649
#define ITEM(x, y) ((x * 512) + y)
#define ITEM2(x, y) ((x * 512) + y + ITEM_INTER)
#define Naked(Function) void __declspec(naked) Function()
#define RenderMesh ((void(__thiscall*)(int This, int a2, int a3, GLfloat alpha, int a5, float a6, float a7, float a8, int a9)) 0x00502F50)
#define sub_49CC70 ((double(__cdecl*)(float a1)) 0x0049CC70)
#define sub_644101 ((double(__cdecl*)(float a1)) 0x00644101)

namespace ASM
{
    enum T
    {
        JMP = 0xE9,
        JE = 0x74,
        JNE = 0x75,
        JGE = 0x7D,
        NOP = 0x90,
        CALL = 0xE8,
        CALLD = 0xFF,
        PUSH = 0x68,
    };
};

void CEffect();

CEffect.cpp
#include "stdafx.h"
#include "CEffect.h"
#include "Util.h"
#include "TMemory.h"

// ----
DWORD dwItemId;
DWORD dwWingThis;
DWORD dwWingStyle;
DWORD dwWingEff;
// ----
DWORD dwCustomItemGlowJmp00 = 0x0061D3CB;
DWORD dwCustomItemGlowJmp01 = 0x0061D3BF;
Naked(CustomItemGlow)
{
 _asm
 {
 // ----
 MOV EAX, DWORD PTR SS:[EBP+0x10]
 MOV dwItemId, EAX
 // ----
 MOV EDX,DWORD PTR SS:[EBP+0x8]
 MOV dwWingThis, EDX
 // ----
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV dwWingStyle, EAX
 // ----
 }
 
 if(dwItemId == ITEM2(0,26)) //Flameberge
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,
 2,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 2,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 *(float *)(dwWingThis + 72) = 1.0;
 *(float *)(dwWingThis + 76) = 0.0;
 *(float *)(dwWingThis + 80) = 0.2;
 RenderMesh(dwWingThis,
 1,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 *(float *)(dwWingThis + 72) = 1.0;
 *(float *)(dwWingThis + 76) = 1.0;
 *(float *)(dwWingThis + 80) = 1.0;
 RenderMesh(dwWingThis,
 1,
 70,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,
 3,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 3,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,     
 4,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 4,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 float v407 = ((int)(timeGetTime() * 0.05) % 16 / 4) * 0.25;
 RenderMesh(dwWingThis,
 5,
 66,
 1.0,
 5,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 v407,
 -1);
 
 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }

 if(dwItemId == ITEM2(0,27)) //Sword Breaker
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,         
 1,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,
 1,
 70,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 
 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }
 
 if(dwItemId == ITEM2(5,31)) //Inberial Staff
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,         
 1,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 float v40 = (int)timeGetTime() * 0.001000000047497451;
 float v41 = sub_49CC70(v40);
 RenderMesh(dwWingThis,         
 0,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 0,
 v41,
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 32401);
 
 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }
 
 if(dwItemId == ITEM2(6,17)) //Crimson Glory
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,         
 1,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,         
 2,
 70,
 *(GLfloat *)(dwWingStyle + 424),
 2,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 
 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }
 
 if(dwItemId == ITEM2(6,19)) //Frost Barrier
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 RenderMesh(dwWingThis,         
 1,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 1,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 float v40 = (int)timeGetTime() * 0.001000000047497451;
 float v41 = sub_49CC70(v40);
 RenderMesh(dwWingThis,         
 2,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 2,
 v41,
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);

 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }
 
 if(dwItemId == ITEM2(6,21)) //Cross Shield
 {
 // ----
 glColor3fv((GLfloat*)(dwWingThis+72));
 // ----
 RenderMesh(dwWingThis,         
 0,
 2,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);
 float v407 = ((int)timeGetTime() % 2000) * 0.25;
 RenderMesh(dwWingThis,         
 1,
 70,
 *(GLfloat *)(dwWingStyle + 424),
 *(DWORD *)(dwWingStyle + 148),
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 v407,
 -1);
 RenderMesh(dwWingThis,         
 2,
 66,
 *(GLfloat *)(dwWingStyle + 424),
 2,
 *(float *)(dwWingStyle + 152),
 *(float *)(dwWingStyle + 156),
 *(float *)(dwWingStyle + 160),
 -1);

 _asm
 {
 //---
 JMP dwCustomItemGlowJmp01
 }
 }
 // ----
 _asm
 {
 //---
 CMP DWORD PTR SS:[EBP+0x10],0x1AAD //Wing of Storm
 JMP dwCustomItemGlowJmp00
 }
}

void __declspec ( naked ) NOGlow1()
{
    static DWORD Return = 0x0062356D;
 static DWORD CALL = 0x005059D2;
 static DWORD JMP = 0x00623674;
    // ----
    _asm
 {
 CMP DWORD PTR SS:[EBP+0x10],0x29E
 JNZ NOGlow1Prop_Label1
 MOV EDX,DWORD PTR SS:[EBP+0x20]
 PUSH EDX
 PUSH 0
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0xA0]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x9C]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x98]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x94]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0x14]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x18]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow1Prop_Label1:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(0,26)//Flameberge
 JNZ NOGlow1Prop_Label2
 MOV EDX,DWORD PTR SS:[EBP+0x20]
 PUSH EDX
 PUSH 5 //<<Grupo de la Textura
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0xA0]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x9C]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x98]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x94]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0x14]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x18]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow1Prop_Label2:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(0,27)//Sword Breaker
 JNZ NOGlow1Prop_Label3
 MOV EDX,DWORD PTR SS:[EBP+0x20]
 PUSH EDX
 PUSH 1 //<<Grupo de la Textura
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0xA0]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x9C]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x98]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x94]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0x14]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x18]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow1Prop_Label3:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(6,19)//Frost Barrier
 JNZ NOGlow1Prop_Label4
 MOV EDX,DWORD PTR SS:[EBP+0x20]
 PUSH EDX
 PUSH 2 //<<Grupo de la Textura
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0xA0]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x9C]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x98]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x94]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0x14]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x18]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow1Prop_Label4:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(6,21)//Cross Shield
 JNZ NOGlow1Prop_Label5
 MOV EDX,DWORD PTR SS:[EBP+0x20]
 PUSH EDX
 PUSH 1 //<<Grupo de la Textura
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0xA0]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x9C]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x98]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x94]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0x14]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x18]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow1Prop_Label5:
 // ----
        NOGlow1Prop_LabelReturn:
        // ----
 JMP Return
 }
}

void __declspec ( naked ) NOGlow2()
{
    static DWORD Return = 0x0062356D;
 static DWORD CALL = 0x005059D2;
 static DWORD JMP = 0x0062392D;
    // ----
    _asm
 {
 CMP DWORD PTR SS:[EBP+0x10],0x29E
 JNZ NOGlow2Prop_Label1
 MOV EAX,DWORD PTR SS:[EBP+0x20]
 PUSH EAX
 PUSH 0
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0xA0]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x9C]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x98]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x94]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x14]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x18]
 PUSH ECX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow2Prop_Label1:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(0,26)//Flameberge
 JNZ NOGlow2Prop_Label2
 MOV EAX,DWORD PTR SS:[EBP+0x20]
 PUSH EAX
 PUSH 5 //<<Grupo de la Textura
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0xA0]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x9C]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x98]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x94]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x14]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x18]
 PUSH ECX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow2Prop_Label2:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(0,27)//Sword Breaker
 JNZ NOGlow2Prop_Label3
 MOV EAX,DWORD PTR SS:[EBP+0x20]
 PUSH EAX
 PUSH 1 //<<Grupo de la Textura
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0xA0]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x9C]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x98]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x94]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x14]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x18]
 PUSH ECX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow2Prop_Label3:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(6,19)//Frost Barrier
 JNZ NOGlow2Prop_Label4
 MOV EAX,DWORD PTR SS:[EBP+0x20]
 PUSH EAX
 PUSH 2 //<<Grupo de la Textura
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0xA0]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x9C]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x98]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x94]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x14]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x18]
 PUSH ECX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow2Prop_Label4:
 // ----
 CMP DWORD PTR SS:[EBP+0x10],ITEM2(6,21)//Cross Shield
 JNZ NOGlow2Prop_Label5
 MOV EAX,DWORD PTR SS:[EBP+0x20]
 PUSH EAX
 PUSH 1 //<<Grupo de la Textura
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0xA0]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0xC]
 MOV ECX,DWORD PTR DS:[EAX+0x9C]
 PUSH ECX
 MOV EDX,DWORD PTR SS:[EBP+0xC]
 MOV EAX,DWORD PTR DS:[EDX+0x98]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0xC]
 MOV EDX,DWORD PTR DS:[ECX+0x94]
 PUSH EDX
 MOV EAX,DWORD PTR SS:[EBP+0x14]
 PUSH EAX
 MOV ECX,DWORD PTR SS:[EBP+0x18]
 PUSH ECX
 MOV ECX,DWORD PTR SS:[EBP+0x8]
 CALL CALL
 JMP JMP
 // ----
        NOGlow2Prop_Label5:
 // ----
        NOGlow2Prop_LabelReturn:
        // ----
 JMP Return
 }
}

void CEffect()
{
 SetCompleteHook(0xE9,0x0061D3C4, &CustomItemGlow);
 SetCompleteHook(0xE9,0x00623521, &NOGlow1);
 SetCompleteHook(0xE9,0x006237B9, &NOGlow2);
}


Creditos
Kapocha33
#67
Source Mu / Fix ranking background Ranking...
Último mensaje por Dakosmu - Mar 31, 2025, 06:12 PM
Fix ranking background Ranking Interface

COMO REPARAR EL FONDO DEL INTERFACE RANKIN EN SSEMU Y MUEMU


replace this code for this in "source main" :
this->BindObject(eRanking_MAIN, 0x7A5A, 222, 200, 205, -1);
COMO CAMBIAR EL FONDE DEL INTERFACE RANKIN MUEMU Y SSEMU

PRIMERA OPCION


    float MainWidth = 230.0;
    float MainHeight = 180.0;
    float StartBody = 80.0;
    float StartY = 80.0;
    float StartX = (MAX_WIN_WIDTH / 2) - (MainWidth / 2);
    float MainCenter = StartX + (MainWidth / 3);
    float ButtonX = MainCenter - (float)(29.0 / 2);
    // ----
    gInterface.DrawGUI(eRanking_MAIN, StartX, StartY + (float)2.0);
    gInterface.DrawGUI(eVip_TITLE, StartX, StartY);
    StartY = gInterface.DrawRepeatGUI(eVip_FRAME, StartX, StartY + (float)5.0, 10);
    gInterface.DrawGUI(eVip_FOOTER, StartX, StartY);
    gInterface.DrawGUI(eRanking_CLOSE, StartX + MainWidth - gInterface.Data[eRanking_CLOSE].Width, StartBody);
    // ----




SEGUNDA OPCION

    float MainWidth = 230.0;
    float MainHeight = 240.0;
    float StartBody = ((MAX_WIN_HEIGHT - 51) / 2) - (MainHeight / 2);
    float StartY = ((MAX_WIN_HEIGHT - 51) / 2) - (MainHeight / 2);
    float StartX = (MAX_WIN_WIDTH / 2) - (MainWidth / 2);
    float MainCenter = StartX + (MainWidth / 3);
    float ButtonX = MainCenter - (float)(29.0 / 2);
    // ----
    gCentral.PrintDropBox(StartX, StartY, MainWidth, MainHeight, 0, 0);





Creditos
T-LEGENDARY
Dakosmu
#68
Web Sites Mu / custom Dias Online MuWeb
Último mensaje por Dakosmu - Mar 31, 2025, 04:04 PM
No es un modulo pero esta bueno para que lo puedan implementar en sus MENU del WEB ENGINE.
Solo deben ir a su SIDEBAR de las estadisticas de su servidor y añadir esto

QUEDARA ASI DEPENDIENDO COMO SEA SU TEMPLATE.

Solo deben modificar el codigo que esta aqui


//NOTA: Cambia en la linea de abajo, el dia desde el que quieres contar el tiempo
countup(2023,06,01)

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión


echo '<tr><td style="width:1%;text-align:center;"><i class="fas fa-shield-alt"></i></td><td>Dias Online</td><td style="color:#00aa00;font-weight:bold;"> <script>

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function countup(yr,m,d){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy
var paststring=montharray[m-1]+" "+d+", "+yr
var difference=(Math.round((Date.parse(todaystring)-Date.parse(paststring))/(24*60*60*1000))*1)
difference+=" días"
document.write(" "+difference+" ")
}
//NOTA: Cambia en la linea de abajo, el dia desde el que quieres contar el tiempo
countup(2023,06,01)

</script></td></tr>';


creditos
Azzlaer

#69
Source Mu / WebEngine | Módulo Mi Cuenta A...
Último mensaje por Dakosmu - Mar 30, 2025, 01:15 AM
WebEngine | Módulo Mi Cuenta Avanzado

Descripción
Hola este módulo está inspirado en el módulo de yhoon, trate de hacerlo lo más sencillo posible, me demore como 2 noches en adaptarlo hahaha, saludos.
Nació de la necesidad de que los usuarios no tengan que ver sus personajes con el módulo de ver perfil ya que eso hacía los perfiles públicos y no quería que vieran cómo tenían distribuido los puntos, entonces decidí hacer esta cosa, para que así los usuarios puedan ver sus personajes desde su panel de mi cuenta y que stats tenían y demás.

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión

Requisitos
- Web Engine 1.2.6 (Es la que tengo actualmente y donde la testie)

- Bootstrap 3.4.1 (Si tienes la 1.2.6 ya tiene esta versión)


Modo de instalación
Copiar y pegar en módulos/usercp/myaccount.php

Actualmente esta como máximo con 32000, pero pueden ajustarlo solo busquen esto en el código /320, si quieren 65000 sería /650


Imágenes
Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión


Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión



myaccount.php
<?php
/**
 * WebEngine CMS
 * https://webenginecms.org/
 * 
 * @version 1.2.6
 * @author Lautaro Angelico <http://lautaroangelico.com/>
 * @copyright (c) 2013-2025 Lautaro Angelico, All Rights Reserved
 * 
 * Licensed under the MIT license
 * http://opensource.org/licenses/MIT
 */

if(!isLoggedIn()) redirect(1,'login');

echo 
'<div class="page-title"><span>'.lang('module_titles_txt_4').'</span></div>';

// module status
if(!mconfig('active')) throw new Exception(lang('error_47'));

// common class
$common = new common();

// Webengine cfg
$webEngineConfig loadConfig();

// Retrieve Account Information
$accountInfo $common->accountInformation($_SESSION['userid']);
if(!
is_array($accountInfo)) throw new Exception(lang('error_12'));

// account last connection
$lastConnection $common->accountMembStat($_SESSION['username']);

// account online status
$onlineStatus = ($common->accountOnline($_SESSION['username']) ? '<span class="label label-success">'.lang('myaccount_txt_9').'</span>' '<span class="label label-danger">'.lang('myaccount_txt_10').'</span>');

// account status
$accountStatus = ($accountInfo[_CLMN_BLOCCODE_] == '<span class="label label-danger">'.lang('myaccount_txt_8').'</span>' '<span class="label label-default">'.lang('myaccount_txt_7').'</span>');

// characters info
$Character = new Character();
$AccountCharacters $Character->AccountCharacter($_SESSION['username']);

// Account Information
echo '<table class="table myaccount-table">';
    echo 
'<tr>';
        echo 
'<td>'.lang('myaccount_txt_1').'</td>';
        echo 
'<td>'.$accountStatus.'</td>';
    echo 
'</tr>';
    
    echo 
'<tr>';
        echo 
'<td>'.lang('myaccount_txt_2').'</td>';
        echo 
'<td>'.$accountInfo[_CLMN_USERNM_].'</td>';
    echo 
'</tr>';
    
    echo 
'<tr>';
        echo 
'<td>'.lang('myaccount_txt_3').'</td>';
        echo 
'<td>'.$accountInfo[_CLMN_EMAIL_].' <a href="'.__BASE_URL__.'usercp/myemail/" class="btn btn-xs btn-primary pull-right">'.lang('myaccount_txt_6').'</a></td>';
    echo 
'</tr>';
    
    echo 
'<tr>';
        echo 
'<td>'.lang('myaccount_txt_4').'</td>';
        echo 
'<td>&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226; <a href="'.__BASE_URL__.'usercp/mypassword/" class="btn btn-xs btn-primary pull-right">'.lang('myaccount_txt_6').'</a></td>';
    echo 
'</tr>';
    
    echo 
'<tr>';
        echo 
'<td>'.lang('myaccount_txt_5').'</td>';
        echo 
'<td>'.$onlineStatus.'</td>';
    echo 
'</tr>';
    
    try {
        
$creditSystem = new CreditSystem();
        
$creditCofigList $creditSystem->showConfigs();
        if(
is_array($creditCofigList)) {
            foreach(
$creditCofigList as $myCredits) {
                if(!
$myCredits['config_display']) continue;
                
                
$creditSystem->setConfigId($myCredits['config_id']);
                switch(
$myCredits['config_user_col_id']) {
                    case 
'userid':
                        
$creditSystem->setIdentifier($accountInfo[_CLMN_MEMBID_]);
                        break;
                    case 
'username':
                        
$creditSystem->setIdentifier($accountInfo[_CLMN_USERNM_]);
                        break;
                    case 
'email':
                        
$creditSystem->setIdentifier($accountInfo[_CLMN_EMAIL_]);
                        break;
                    default:
                        continue 
2;
                }
                
                
$configCredits $creditSystem->getCredits();

                echo 
'<tr>';
                    echo 
'<td>'.$myCredits['config_title'].'</td>';
                    echo 
'<td>'.number_format($configCredits).'</td>';
                echo 
'</tr>';
            }
        }
    } catch(
Exception $ex) {}

    echo 
'<tr>';
        echo 
'<td>Membresía Vip</td>';
        switch(
$accountInfo[_CLMN_VIP_TYPE_]) {
            case 
0:
                echo 
'<td>Humilde</td>';
                break;
            case 
1:
                echo 
'<td>'.lang('vip_title_type_1').'</td>';
                break;
            case 
2:
                echo 
'<td>'.lang('vip_title_type_2').'</td>';
                break;
            case 
3:
                echo 
'<td>'.lang('vip_title_type_3').'</td>';
                break;
        }
    echo 
'</tr>';
    
    if (!empty(
$lastConnection['ConnectTM']) && strtotime($lastConnection['ConnectTM']) !== false) {
        
$dateLastConnection = new DateTime($lastConnection['ConnectTM']);
        
$formattedLastConnection $dateLastConnection->format('d \d\e F \d\e\l Y \@ H:i:s');
    } else {
        
$formattedLastConnection 'Fecha no disponible';
    }
    
    echo 
'<tr>';
        echo 
'<td>Última conexión</td>';
        echo 
'<td>'.$formattedLastConnection.'</td>';
    echo 
'</tr>';
    
    if (
$accountInfo[_CLMN_VIP_TYPE_] > 0) {
        
$dateVipExpire = new DateTime($accountInfo[_CLMN_VIP_DATE_]);
        
$formattedVipExpire $dateVipExpire->format('d \d\e F \d\e\l Y \@ H:i');
        
        echo 
'<tr>';
            echo 
'<td>Vencimiento VIP</td>';
            echo 
'<td>'.$formattedVipExpire.'</td>';
        echo 
'</tr>';
    }

echo 
'</table>';

echo 
'<div class="panel panel-sidebar">';
    echo 
'<div class="panel-heading">';
        echo 
'<h3 class="panel-title">Hola '.$accountInfo[_CLMN_USERNM_].'</h3>';
    echo 
'</div>';
    echo 
'<div class="panel-body">';
        echo 
'<p>Bienvenido nuevamente a '.$webEngineConfig['server_name'].', disfruta de tu estadía.</p>';
    echo 
'</div>';
echo 
'</div>';

setlocale(LC_TIME'es_ES.UTF-8');
setlocale(LC_TIME'spanish');

// Account Characters
echo '<div class="page-title"><span>'.lang('myaccount_txt_15').'</span></div>';
if(
is_array($AccountCharacters)) {
    
$onlineCharacters loadCache('online_characters.cache') ? loadCache('online_characters.cache') : array();
    echo 
'<div class="">';
        foreach(
$AccountCharacters as $characterName) {
            
$characterData $Character->CharacterData($characterName);
            
$FormStr $characterData[_CLMN_CHR_STAT_STR_] / 320;
            
$FormAgi $characterData[_CLMN_CHR_STAT_AGI_] / 320;
            
$FormVit $characterData[_CLMN_CHR_STAT_VIT_] / 320;
            
$FormEne $characterData[_CLMN_CHR_STAT_ENE_] / 320;
            
$FormCom $characterData[_CLMN_CHR_STAT_CMD_] / 320;

            if(!
is_array($characterData)) continue;
            
            if(
defined('_TBL_MASTERLVL_')) {
                if(
_TBL_MASTERLVL_ != _TBL_CHR_) {
                    
$characterMLData $Character->getMasterLevelInfo($characterName);
                    if(
is_array($characterMLData)) {
                        
$characterData[_CLMN_CHR_LVL_] += $characterMLData[_CLMN_ML_LVL_];
                    }
                } else {
                    
$characterData[_CLMN_CHR_LVL_] += $characterData[_CLMN_ML_LVL_];
                }
            }
            
            
$characterClassAvatar getPlayerClassAvatar($characterData[_CLMN_CHR_CLASS_], false);
            
$characterOnlineStatus in_array($characterName$onlineCharacters) ? '<img src="'.__PATH_ONLINE_STATUS__.'" class="online-status-indicator" alt="Online"/>' '<img src="'.__PATH_OFFLINE_STATUS__.'" class="online-status-indicator"/>';
            echo 
'<div class="col-md-12 panel panel-sidebar" style="margin-bottom: 2rem; padding-left: 0; padding-right: 0;">';
                echo 
'<div class="col-md-12 panel-heading">';
                    echo 
'<h3 class="panel-title">Personaje&nbsp; -&nbsp; '.playerProfile($characterName).' <span style="float: right;">Estado '.$characterOnlineStatus.'</span></h3>';
                echo 
'</div>';
                echo 
'<div class="col-md-12 panel-body">';
                    echo 
'<div class="col-md-4 col-lg-4">';
                        echo 
'<img src="'.$characterClassAvatar.'" alt="Avatar" width="70%" height="auto" style="-moz-border-radius: 2%;-webkit-border-radius: 2%;border-radius: 2%;-khtml-border-radius: 2%;border: 4px solid #151515;"/>';
                    echo 
'</div>';
                    echo 
'<div class="col-md-8 col-lg-8">';
                        echo 
'<div class="col-md-4 col-lg-4" style="font-weight: bold; color: #dc3545;">Fuerza:</div>';
                        echo 
'<div class="col-md-8 col-lg-8">';
                            echo 
'<div class="progress" style="background-color: #714f29;">';
                                echo 
'<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'$FormStr .'" aria-valuemin="0" aria-valuemax="32000" style="width: '.$FormStr.'%;min-width:10%;max-width:100%;font-size: 15px;font-weight: 400;font-family: H67, Arial;text-transform: uppercase;">';
                                    echo 
number_format("".$characterData[_CLMN_CHR_STAT_STR_],0,",",".");
                                echo 
'</div>';
                            echo 
'</div>';
                        echo 
'</div>';
                        echo 
'<div class="col-md-4 col-lg-4" style="font-weight: bold; color: #198754;">Agilidad:</div>';
                        echo 
'<div class="col-md-8 col-lg-8">';
                            echo 
'<div class="progress" style="background-color: #714f29;">';
                                echo 
'<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'$FormAgi .'" aria-valuemin="0" aria-valuemax="32000" style="width: '.$FormAgi.'%;min-width:10%;max-width:100%;font-size: 15px;font-weight: 400;font-family: H67, Arial;text-transform: uppercase;">';
                                    echo 
number_format("".$characterData[_CLMN_CHR_STAT_AGI_],0,",",".");
                                echo 
'</div>';
                            echo 
'</div>';
                        echo 
'</div>';
                        echo 
'<div class="col-md-4 col-lg-4" style="font-weight: bold; color: #ffc107;">Vida:</div>';
                        echo 
'<div class="col-md-8 col-lg-8">';
                            echo 
'<div class="progress" style="background-color: #714f29;">';
                                echo 
'<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'$FormVit .'" aria-valuemin="0" aria-valuemax="32000" style="width: '.$FormVit.'%;min-width:10%;max-width:100%;font-size: 15px;font-weight: 400;font-family: H67, Arial;text-transform: uppercase;">';
                                    echo 
number_format("".$characterData[_CLMN_CHR_STAT_VIT_],0,",",".");
                                echo 
'</div>';
                            echo 
'</div>';
                        echo 
'</div>';
                        echo 
'<div class="col-md-4 col-lg-4" style="font-weight: bold; color: #0dcaf0">Energía:</div>';
                        echo 
'<div class="col-md-8 col-lg-8">';
                            echo 
'<div class="progress" style="background-color: #714f29;">';
                                echo 
'<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'$FormEne .'" aria-valuemin="0" aria-valuemax="32000" style="width: '.$FormEne.'%;min-width:10%;max-width:100%;font-size: 15px;font-weight: 400;font-family: H67, Arial;text-transform: uppercase;">';
                                    echo 
number_format("".$characterData[_CLMN_CHR_STAT_ENE_],0,",",".");
                                echo 
'</div>';
                            echo 
'</div>';
                        echo 
'</div>';
                        if(
$characterData[_CLMN_CHR_STAT_CMD_] > 0) {
                            echo 
'<div class="col-md-4 col-lg-4" style="font-weight: bold; color: #0d6efd;">Comando</div>';
                            echo 
'<div class="col-md-8 col-lg-8">';
                                echo 
'<div class="progress" style="background-color: #714f29;">';
                                    echo 
'<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'$FormCom .'" aria-valuemin="0" aria-valuemax="32000" style="width: ' $FormCom '%;min-width:10%;max-width:100%;font-size: 15px;font-weight: 400;font-family: H67, Arial;text-transform: uppercase;">';
                                        echo 
number_format("" $characterData[_CLMN_CHR_STAT_CMD_], 0","".");
                                    echo 
'</div>';
                                echo 
'</div>';
                            echo 
'</div>';
                        }
                    echo 
'</div>';
                echo 
'</div>';
            }
        echo 
'</div>';
    } else {
        
message('warning'lang('error_46'));
    }

// Connection History (IGCN)
if(defined('_TBL_CH_')) {
    echo 
'<div class="page-title"><span>'.lang('myaccount_txt_16').'</span></div>';
    
$me Connection::Database('Me_MuOnline');
    
$connectionHistory $me->query_fetch("SELECT TOP 10 * FROM "._TBL_CH_." WHERE "._CLMN_CH_ACCID_." = ? ORDER BY "._CLMN_CH_ID_." DESC", array($_SESSION['username']));
    if(
is_array($connectionHistory)) {
        echo 
'<table class="table table-condensed general-table-ui">';
            echo 
'<tr>';
                echo 
'<td>'.lang('myaccount_txt_13').'</td>';
                echo 
'<td>'.lang('myaccount_txt_17').'</td>';
                echo 
'<td>'.lang('myaccount_txt_18').'</td>';
                echo 
'<td>'.lang('myaccount_txt_19').'</td>';
            echo 
'</tr>';
            foreach(
$connectionHistory as $row) {
                echo 
'<tr>';
                    echo 
'<td>'.$row[_CLMN_CH_DATE_].'</td>';
                    echo 
'<td>'.$row[_CLMN_CH_SRVNM_].'</td>';
                    echo 
'<td>'.$row[_CLMN_CH_IP_].'</td>';
                    echo 
'<td>'.$row[_CLMN_CH_STATE_].'</td>';
                echo 
'</tr>';
            }
        echo 
'</table>';
    }
}
?>


Créditos
Inspirado por: Yhoon

Creado por: gambasoxd
#70
Web Sites Mu / Template PRIVADO Morpheus Web
Último mensaje por Dakosmu - Mar 30, 2025, 12:28 AM
Template PRIVADO Morpheus Web


Template PRIVADO Morpheus Web


ESTOU DISPONIBILIZANDO ESSA WEBSITE PRIVADO TA COMPLETO COMPREI FAIS UM TEMPO JÁ ESPERO QUE TENHO AJUDADO ALGUEM QUE PRECISA


DESFRUTE DA WEBSITE %100
Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión




Creditos
kevin30
🡱 🡳