- 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.
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!who is have file dll or source "notice player online" share me, please, sr bad english.
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.
Can not be displayed
Inbox me, ^^ i help you , no public codeUp, please help me
who is have file dll or source "notice player online" share me, please, sr bad english.
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.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.
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);
}
if ((lpMsg->CtlCode & 0x00) == 0x00) {
char szTemp[128];
sprintf(szTemp, "User %s has logged in!", lpObj->Name);
MessageSendEx2(g_UserNotice, "%s", szTemp);
}
void gObjSetBP(int aIndex)
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);
}
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); }
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 stupidtyAnd why you want to use this epic big source if you can make it with 1 row? wow.
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
besides the GCServerMsgStringSend("Welcome on the server", lpObj->m_Index, 0); only shows the message to the player that logged in
How to fix Castle Deep, Drop Event source zTeam season 6.3 ?
Can anyone share last zclient source? i use zclient by BlackHorseYou must be registered to see links. I compile file without any errors, but cannot open Main.exe. Or tell me please how to fix :*:
Sorry for my english
i post source :
// SetOp((LPVOID)0x005B96E8, (LPVOID)this->DrawPartyHP, ASM::CALL);
SetOp((LPVOID)0x005B96E8, (LPVOID)this->DrawSome, ASM::CALL);
void User:rawSome()
{
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
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 ==========