Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] Community Edition Season6 Episode3 z-Team

Skilled Illusionist
Joined
Mar 27, 2013
Messages
305
Reaction score
9
who is have file dll or source "notice player online" share me, please, sr bad english.
RacRac - [Development] Community Edition Season6 Episode3 z-Team - RaGEZONE Forums
 
Junior Spellweaver
Joined
Oct 8, 2014
Messages
126
Reaction score
6
np :)

---
ItemRank seems fine too.

Enable Client/Server Side in source code.

Client Side encode ItemRank to ItemRank.z using Encoder and ofc paste to Data/Custom
Server Side create ItemRank.dat and paste to Data/Custom

ItemRank.z/.dat
Code:
//===================================================================================
// zGameServer / zClient
// ----------------------------------------------------------------------------------
// Description: Custom Item Rank (zTeam)
// ----------------------------------------------------------------------------------
// Revision:     23:41 30.07.2014 ~ 4FUNer
//------------------------------------------------------------------------------------------------------------------------------
//--- Opt[0] = Excellent Dmg      | Max HP
//--- Opt[1] = Increase Dmg +Lvl | Max Mana
//--- Opt[2] = Increase Dmg +%   | Damage Decrase
//--- Opt[3] = Increase Speed    | Damage Reflect
//--- Opt[4] = Life Per Monster  | Defense Success Rate
//--- Opt[5] = Mana Per Monster  | Increase Zen
//------------------------------------------------------------------------------------------------------------------------------
//    RankID ~ Opt[0] ~ Opt[1] ~ Opt[2] ~ Opt[3] ~ Opt[4] ~ Opt[5] 
//------------------------------------------------------------------------------------------------------------------------------
0
    1 77 77 77 77 77 77 // all exc options 77 % 
    2 15 15 15 15 15 15 // all exc options 15 %
    3 99 99 99 99 99 99 // all exc options 99 %
    4 50 50 50 50 50 50 // all exc options 50 %
end
//------------------------------------------------------------------------------------------------------------------------------
//    RankID ~ ItemType ~ ItemIndex
//------------------------------------------------------------------------------------------------------------------------------
1
    1 7 1 // Dragon Helm
    2 7 2 // Pad Helm
    3 0 22 // Bone Blade
    4 5 20 // Eternal Wing Stick
end

If you want also support for client of weps opts custom values there is missing few lines

zClient -> Defines.h add inside eItemOption
Code:
IncreaseWizardryDmg = 97,    //-> Increase Wizardry Dmg +2%
LifePerMob        = 99,        //-> Increases acquisition rate of Life after hunting monsters +life/8
ManaPerMob        = 100,        //-> Increases acquisition rate of Mana after hunting monsters +Mana/8

& wep opts cases inside Item.cpp -> Switch OptionID

You can replace full (ofc you can modify text if you wish)
Code:
switch(OptionID)
    {
    case eItemOption::LifeIncrease:
        pSetItemTextLine(Line, "Increase Max HP +%d%%",
            g_ItemRank.GetValue(ItemID, 0));
        break;
    case eItemOption::ExcellentDamage:
        pSetItemTextLine(Line, "Excellent Damage rate +%d%%",
            g_ItemRank.GetValue(ItemID, 0));
        break;
    case eItemOption::ManaIncrease:
        pSetItemTextLine(Line, "Increase Max Mana +%d%%",
            g_ItemRank.GetValue(ItemID, 1));
        break;
    case eItemOption::DamageByLevel    :
        pSetItemTextLine(Line, "Increase Damage +level/%d",
            g_ItemRank.GetValue(ItemID, 1));
        break;
    case eItemOption::IncreaseWizardry:
        pSetItemTextLine(Line, "Increase Wizardry Dmg +level/%d",
            g_ItemRank.GetValue(ItemID, 1));
        break;
    case eItemOption::DamageDecrease:
        pSetItemTextLine(Line, "Damage Decrease +%d%%",
            g_ItemRank.GetValue(ItemID, 2));
        break;
    case eItemOption::IncreaseDamage:
        pSetItemTextLine(Line, "Increase Damage +%d%%",
            g_ItemRank.GetValue(ItemID, 2));
        break;
    case eItemOption::IncreaseWizardryDmg:
        pSetItemTextLine(Line, "Increase Wizardry Dmg +%d%%",
            g_ItemRank.GetValue(ItemID, 2));
        break;
    case eItemOption::Reflect:
        pSetItemTextLine(Line, "Reflect Damage +%d%%",
            g_ItemRank.GetValue(ItemID, 3));
        break;
    case eItemOption::IncreaseSpeed:
        pSetItemTextLine(Line, "Increase Attacking(Wizardy)speed +%d",
            g_ItemRank.GetValue(ItemID, 3));
        break;
    case eItemOption::DefenseSuccess:
        pSetItemTextLine(Line, "Defense success rate +%d%%",
            g_ItemRank.GetValue(ItemID, 4));
        break;
    case eItemOption::LifePerMob:
        pSetItemTextLine(Line, " Increases acquisition rate of Life after hunting monsters +life/%d",
            g_ItemRank.GetValue(ItemID, 4));
        break;
    case eItemOption::IncreaseZen:
        pSetItemTextLine(Line, "Increases acquisition rate of Zen after hunting monsters +%d%%",
            g_ItemRank.GetValue(ItemID, 5));
        break;
    case eItemOption::ManaPerMob:
        pSetItemTextLine(Line, "Increases acquisition rate of Mana after hunting monsters +Mana/%d",
            g_ItemRank.GetValue(ItemID, 5));
        break;

    }

=) HF.

RacRac - [Development] Community Edition Season6 Episode3 z-Team - RaGEZONE Forums



Can not be displayed
 
Junior Spellweaver
Joined
Aug 11, 2013
Messages
112
Reaction score
64
any idea why this:

Use buff Inner:

RacRac - [Development] Community Edition Season6 Episode3 z-Team - RaGEZONE Forums



when it finished the buff inner:

RacRac - [Development] Community Edition Season6 Episode3 z-Team - RaGEZONE Forums
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
who is have file dll or source "notice player online" share me, please, sr bad english.
RacRac - [Development] Community Edition Season6 Episode3 z-Team - RaGEZONE Forums

You dont need dll source , because its not clientside message.

You can make a new message in the GS source like "welcome message", just with the good command
GCServerMsgStringSend(gWelcomeMessage, lpObj->m_Index, 0);

I think you can use the
GCServerMsgStringSend("Welcome on the server", lpObj->m_Index, 0);

I dont remember when I made something like this, but I think if you change the 0 at the end of the row it will be on different position.

Try it and i think it will works.
 
(づ。◕‿‿◕。)
Loyal Member
Joined
Jun 23, 2014
Messages
1,853
Reaction score
423
You dont need dll source , because its not clientside message.

You can make a new message in the GS source like "welcome message", just with the good command
GCServerMsgStringSend(gWelcomeMessage, lpObj->m_Index, 0);

I think you can use the
GCServerMsgStringSend("Welcome on the server", lpObj->m_Index, 0);

I dont remember when I made something like this, but I think if you change the 0 at the end of the row it will be on different position.

Try it and i think it will works.
i did it using the post command function like a global message but you can pretty much use any of the functions to send string messages in the source.

just look in user.cpp for

Code:
if ( (lpMsg->CtlCode & 0x20 ) == 0x20 )    {
        lpObj->Authority = 0x20;
        LogAddC(2, "(%s)(%s) Set Event GM", lpObj->AccountID, lpObj->Name);
        cManager.ManagerAdd(lpObj->Name, lpObj->m_Index); //Season 2.5 add-on
        gObjAddBuffEffect(lpObj, AT_GAMEMASTER_LOGO, 0, 0, 0, 0, -10);
        char szTemp[128];
        sprintf(szTemp, "GameMaster %s is now online!", lpObj->Name);
        AllSendServerMsg(szTemp);
    }

and below it add

Code:
if ((lpMsg->CtlCode & 0x00) == 0x00)             {
            char szTemp[128];
            sprintf(szTemp, "User %s has logged in!", lpObj->Name);
            MessageSendEx2(g_UserNotice, "%s", szTemp);
}

and in that same .cpp search for

Code:
void gObjSetBP(int aIndex)

and add above it

Code:
void MessageSendEx2(int Type, char * Message, ...)
 {
    char szTemp[1024];
    va_list pArguments;
    va_start(pArguments, Message);
    vsprintf(szTemp, Message, pArguments);
    va_end(pArguments);
        // ----
        CHAT_WHISPER_EX pMessage;
        memcpy(pMessage.Message, szTemp, 90);
    pMessage.Type = Type;
    pMessage.Head.set((LPBYTE)&pMessage, 2, sizeof(CHAT_WHISPER_EX));
    DataSendAll((LPBYTE)&pMessage, pMessage.Head.size);
    }
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
i did it using the post command function like a global message but you can pretty much use any of the functions to send string messages in the source.

just look in user.cpp for

Code:
if ( (lpMsg->CtlCode & 0x20 ) == 0x20 )    {
        lpObj->Authority = 0x20;
        LogAddC(2, "(%s)(%s) Set Event GM", lpObj->AccountID, lpObj->Name);
        cManager.ManagerAdd(lpObj->Name, lpObj->m_Index); //Season 2.5 add-on
        gObjAddBuffEffect(lpObj, AT_GAMEMASTER_LOGO, 0, 0, 0, 0, -10);
        char szTemp[128];
        sprintf(szTemp, "GameMaster %s is now online!", lpObj->Name);
        AllSendServerMsg(szTemp);
    }

and below it add

Code:
if ((lpMsg->CtlCode & 0x00) == 0x00)             {
            char szTemp[128];
            sprintf(szTemp, "User %s has logged in!", lpObj->Name);
            MessageSendEx2(g_UserNotice, "%s", szTemp);
}

and in that same .cpp search for

Code:
void gObjSetBP(int aIndex)

and add above it

Code:
void MessageSendEx2(int Type, char * Message, ...)
 {
    char szTemp[1024];
    va_list pArguments;
    va_start(pArguments, Message);
    vsprintf(szTemp, Message, pArguments);
    va_end(pArguments);
        // ----
        CHAT_WHISPER_EX pMessage;
        memcpy(pMessage.Message, szTemp, 90);
    pMessage.Type = Type;
    pMessage.Head.set((LPBYTE)&pMessage, 2, sizeof(CHAT_WHISPER_EX));
    DataSendAll((LPBYTE)&pMessage, pMessage.Head.size);
    }

And why you want to use this epic big source if you can make it with 1 row? wow. :D

If you put it after the global message row and change the position of the text to the left side post side, its just one row in the code and everything is working... .:)
because this text will show just the ->Name, not for veverybody, so you dont need to use the source like in the post... :)
 
(づ。◕‿‿◕。)
Loyal Member
Joined
Jun 23, 2014
Messages
1,853
Reaction score
423
And why you want to use this epic big source if you can make it with 1 row? wow. :D

If you put it after the global message row and change the position of the text to the left side post side, its just one row in the code and everything is working... .:)
i was too lazy to think at that moment so i just lokoed at the gm message and did something similar with the other one, everyone has his moments of stupidty :sleep:

besides the GCServerMsgStringSend("Welcome on the server", lpObj->m_Index, 0); only shows the message to the player that logged in
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
i was too lazy to think at that moment so i just lokoed at the gm message and did something similar with the other one, everyone has his moments of stupidty :sleep:

besides the GCServerMsgStringSend("Welcome on the server", lpObj->m_Index, 0); only shows the message to the player that logged in



I answered to this question.. ::) I dont think or i dont know It need to show to everybody.

I have 100-200 players online with this count of players not a good idea to show everybody "somebody connected" because its useless...

Or i dont know:D But I am using the msgstringsend to show some errors to users.

char Text[256];
ZeroMemory(Text, sizeof(Text));
sprintf(Text, " Welcome back on the server: %s !", lpObj->Name);
AllSendServerMsg(Text);


And there is another way to make this if you want to show it for everybody.

And after you have made it just need to search the AllSendServerMsg copy paste rename it to AllSendWelcomeMsg and change the text position or color or what you want.
 
Initiate Mage
Joined
Feb 21, 2016
Messages
3
Reaction score
0
Can anyone share last zclient source? i use zclient by BlackHorse . I compile file without any errors, but cannot open Main.exe. Or tell me please how to fix :*:
Sorry for my english
 
Newbie Spellweaver
Joined
Jan 22, 2013
Messages
60
Reaction score
1
How to fix Castle Deep, Drop Event source zTeam season 6.3 ?
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
How to fix Castle Deep, Drop Event source zTeam season 6.3 ?


Whats the problem with the Castle Deep event?

Everything okey for me.

Maybe compare with this source


and check the difference... But i think its just a configure problem for you.



Can anyone share last zclient source? i use zclient by BlackHorse . I compile file without any errors, but cannot open Main.exe. Or tell me please how to fix :*:
Sorry for my english

No any error? did you changed anything? It can be a loop in it and thats why its not open up ^^
 
(づ。◕‿‿◕。)
Loyal Member
Joined
Jun 23, 2014
Messages
1,853
Reaction score
423
the problem about the infinitd loop in login screen is because of the xor keys, the solution has been shared around 50 times in the original thread, just take the time to sesrch a little...

PS: ferrarezi source has most of the bugs fixed including the mail system.
 
Junior Spellweaver
Joined
Feb 10, 2014
Messages
179
Reaction score
9
i post source :

// SetOp((LPVOID)0x005B96E8, (LPVOID)this->DrawPartyHP, ASM::CALL);
SetOp((LPVOID)0x005B96E8, (LPVOID)this->DrawSome, ASM::CALL);

void User::DrawSome()
{
VAngle Angle;
int PosX, PosY, LifeProgress;
// ----
lifebar=true;
if (!lifebar)
{
return;
}
else
{
for( int PartySlot = 0; PartySlot < 30; PartySlot++ )
{
lpViewObj lpObj = &*(ObjectPreview*)pGetPreviewStruct(pPreviewThis(), PartySlot);
DWORD CurrentTick = GetTickCount();
DWORD Delay = (CurrentTick - gObjUser.m_TargetUpdateTick);
// ----
if( !lpObj || lpObj->m_Model.ObjectType != emMonster || !lpObj->m_Model.Unknown4 )
{
continue;
}
// ----
PMSG_TARGETDATA_REQ pRequest;
pRequest.h.set((LPBYTE)&pRequest, 0xFB, 7, sizeof(pRequest));
pRequest.aIndex = lpObj->aIndex;
//gObjUser.SetTargetData((PMSG_TARGETDATA_ANS*)pRequest.aIndex);
// ----
if( Delay >= 10 )
{
gProtocol.DataSend((LPBYTE)&pRequest, pRequest.h.size);
}
// ----
Angle.X = lpObj->m_Model.VecPosX;
Angle.Y = lpObj->m_Model.VecPosY;
Angle.Z = lpObj->m_Model.VecPosZ + lpObj->m_Model.Unknown216.Z + 100.0;
// ----

float BarWidth = (64.5f / 100.0f) * gObjUser.m_TargetLifePercent;
float LifeBarWidth = 65.0f;
// ----
pGetPosFromAngle(&Angle, &PosX, &PosY);
PosX -= (int)floor(LifeBarWidth / (double)2.0);
// ----
if(gObjUser.m_TargetLifePercent <= 0.1f)
{
continue;
}
// ----
pDrawColorText(lpObj->Name, PosX -1, PosY - 9, 67, 1, eWhite, 9, 3);
// ----
pDrawGUI(32514, (float)PosX - 1.2, (float)PosY - 1.5, 66.95, 6);
pDrawGUI(32513, (float)PosX, (float)PosY, BarWidth, 3);
// ----
if( (int)(gObjUser.m_TargetLifePercent / 10) > 10 )
{
LifeProgress = 10;
}
else
{
LifeProgress = (int)(gObjUser.m_TargetLifePercent / 10);
}
// ----
pGLSwitch();
}
pGLSwitch();
glColor3f(1.0, 1.0, 1.0);
//}

}

you can start with that and modify to read every monster hp. sorry i dont use this function but did it and dont finish u.u

gObjUser.m_TargetLifePercent

this is your target hp, you need to create a function monlife() to find every monster hp .

sorry poor english


Please help me I can not seem to understand that it is necessary to add to remove this error

1>------ Построение начато: проект: zClient, Конфигурация: Release Win32 ------1>Построение начато 19.10.2016 1:54:28.
1>InitializeBuildStatus:
1> Создание "Release\zClient.unsuccessfulbuild", так как было задано "AlwaysCreate".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> Interface.cpp
1> User.cpp
1>User.cpp(413): error C2065: lifebar: необъявленный идентификатор
1>User.cpp(414): error C2065: lifebar: необъявленный идентификатор
1>User.cpp(479): fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка "{" в "User.cpp(409)"
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.00
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

the problem is in the lines

void User::DrawSome()
{
VAngle Angle;
int PosX, PosY, LifeProgress;
// ----
lifebar=true;
if (!lifebar)
{
return;
}
else
{
for( int PartySlot = 0; PartySlot < 30; PartySlot++ )
 
Back
Top