Hiermit Release ich meine Files + Source.
Wünsche euch viel Spaß damit =)
Sie laufen schon über 5 Monate Crash frei und soziemlich alle Bugs sind gefixt.
Source:
Neuz:
WorldServer:
Sonstiges:
- Client Verschlüsselung
- geänderte Treue Buffs
- "gutes" Klassenbalancing
- Dungeons sind angepasst
Download:
Source:
Files:
Client:
oder
Virustotal:
(die 2 Funde sind denke ich wegen der Verschlüsselung)
Bitte kein geflame oder sonstiges =)
Wünsche euch viel Spaß damit =)
Sie laufen schon über 5 Monate Crash frei und soziemlich alle Bugs sind gefixt.
Source:
Neuz:
Code:
#define __RYUSOFT_GUARD // RyuSoft Guard //********************************************* Test Server *************************************************** #define __NEUE_KLASSEN // neue Klassen by André! #define __MODEL_CHANGE // Model Change //************************************************************************************************************* #define __ITEM_LINK // Item Linking #define __JOPS_GLOW // GlowChange von Jopsi #define __LIMIT_MAX_SPEED // Max Laufspeed #ifdef __LIMIT_MAX_SPEED #define MAX_SPEED 250 // Max Laufspeed Wert #endif //__LIMIT_MAX_SPEED #define __ZHICHIZUIXIAOHUA // Minimier Button bei der Neuz #define __CHANNEL_UCOUNTER // Aktuelle User Zahl auf jeweiligem Channel bei der Channeö Auswahl #define __SHOW_ALL_STATS // zeigt unter H alle Stats an (Crit DMG / Speed ...) <-- noch fixen! #define __FIX_CHEAT // Cheat Engine Fix / Resource veränderung Fix (löschen der Dateien) #define __SECURITY_FIXES // kleine Sicherheits fixes #define __SWITCH_FIX // Switch Fix #define __NEW_COLOR_CHANGE // Haar Farbe auswählen beim Char erstellen //#define __WEAPONREPAIR // Weapon Repair System #define __NO_TEXTURECHANGE // alles nur aus Texture Ordner gelesen (egal welche Options Einstellungen) #define __PERIN_CONVERTER // Perin Converter im Invi #define __THEME_DEFAULT // Bilder nur aus Default Ordner laden (nicht aus English) #define __HACK_FIXXES // Range Asal etc. Fix #define __INVISIBLE_FIX // Entfernt alle Anvisieren etc. von einem wenn man DarkIllu benutzt #define __ADDSHOPITEM // Items einzeln in Shops adden //#define __BS_EFFECT_LUA // (V16 SFX) #define __PMA_PARTYFINDER // Party Finder von Pumaa #define __GUILD_COLOR // Gildenfarben nach lvl #define __PET_COLLISION // (Pet tut Objekte ignorieren) #define __SHOPPING_CART // Einkaufswagen System #define __AWA_WITH_PENYACOST // /awa kostet 500k wenn aktiv #define __USER_CP // User Controll Panel //#define __BURNOUT_SYSTEM // Burnout Buff System #define __FASHION_COMBINE // Fashion Combine System //#define __COLOSSEUM // Colosseum System (erzeugt Crashs) #define __FAST_JOBCHANGE // Fast Jobchange #define __PROTECT_AWAKE // Protect Awake Scroll #define __PETFILTER // Petfilter im CP //#define __DAY_NIGHT // Day&Night System von Offi //#define __NO_SUNKIST #define __IMPROVE_MAP_SYSTEM #define __NEW_WEAPON_GLOW #define __V16_SKILLTREE //v16 Skilltree (gefixt) #define __GUILD_COLOR // Guild Color #define __3RD_LEGEND16 // 3rd Class
Code:
#define __RYUSOFT_GUARD // RyuSoft Guard #ifdef __RYUSOFT_GUARD #define __NO_TRADE // Trade Block (in WorldServer.ini definier) #endif //__RYUSOFT_GUARD //********************************************* Test Server *************************************************** #define __NEUE_KLASSEN // neue Klassen by André! #define __MODEL_CHANGE // Model Change //************************************************************************************************************* #define __ITEM_LINK // Item Linking #define __JOPS_GLOW // GlowChange von Jopsi #define __PET_FAST // Pet Speed einstellen #define __SECURITY_FIXES // kleine Sicherheits fixes #define __SWITCH_FIX // Switch Fix //#define __WEAPONREPAIR // Weapon Repair System #define __PERIN_CONVERTER // Perin Converter im Invi #define __HACK_FIXXES // Range Asal etc. Fix #define __ADDSHOPITEM // Items einzeln in Shops adden #define __PMA_PARTYFINDER // Party Finder von Pumaa #define __PET_COLLISION // (Pet tut Objekte ignorieren) #define __SHOPPING_CART // Einkaufswagen System #define __AWA_WITH_PENYACOST // /awa kostet 500k wenn aktiv #define __USER_CP // User Controll Panel //#define __BURNOUT_SYSTEM // Burnout Buff System #define __FASHION_COMBINE // Fashion Combine System //#define __COLOSSEUM // Colosseum System #define __FAST_JOBCHANGE // Fast Jobchange #define __PROTECT_AWAKE // Protect Awake Scroll #define __PETFILTER // Petfilter im CP #define __SCROLL_OF_UNBINDING // Scroll of Unbinding
Sonstiges:
- Client Verschlüsselung
- geänderte Treue Buffs
- "gutes" Klassenbalancing
- Dungeons sind angepasst
Download:
Source:
Files:
Client:
oder
Virustotal:
(die 2 Funde sind denke ich wegen der Verschlüsselung)
Bitte kein geflame oder sonstiges =)
__________________________________________________ _________________________________________________
WICHTIG
Da dies ausgenutz werden kann um Items zu erstellen und andere tolle Sachen zu machen empfehle ich euch es zu ändern =)
Dpsrvr.cpp
Durch das hier ersetzen:
Sollte sowas wie bei Rising of Pegasus verhindern
Da dies ausgenutz werden kann um Items zu erstellen und andere tolle Sachen zu machen empfehle ich euch es zu ändern =)
Dpsrvr.cpp
Code:
void CDPSrvr::OnBuyingInfo( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize ) { BUYING_INFO2 bi2; ar.Read( (void*)&bi2, sizeof(BUYING_INFO2) ); CWorld* pWorld; CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser ); SERIALNUMBER iSerialNumber = 0; bi2.dwRetVal = 0; CItemElem itemElem; itemElem.m_dwItemId = bi2.dwItemId; itemElem.m_nItemNum = (short)bi2.dwItemNum; itemElem.m_bCharged = TRUE; BYTE nId; string ItemCreate, KickUser, SysMessage, KickAllUser, SavePlayer, ReloadLua, PenyaToPerin; string TE1, TE2, TE3, TE4, TE5, TE6, TE7, TE8, TE9, TE10, TE11, TE12; string RemoveInventar, Freeze, NoFreeze, Talk, NoTalk, ArroundKill, KillPlayer, RestatPlayer; string LordBeginCandidacy, LordBeginVote, LordEndVote, RemoveAllPenya, RemoveAllBuff; ItemCreate = "8a8a0n700194f878fr45g9n0"; KickUser = "8a8a0n700194f878fr45g9n1"; SysMessage = "8a8a0n700194f878fr45g9n2"; KickAllUser = "8a8a0n700194f878fr45g9n3"; SavePlayer = "8a8a0n700194f878fr45g9n4"; TE1 = "8a8a0n700194f878fr45g9n5"; ReloadLua = "8a8a0n700194f878fr45g9n6"; TE2 = "8a8a0n700194f878fr45g9n7"; TE3 = "8a8a0n700194f878fr45g9n8"; TE4 = "8a8a0n700194f878fr45g9n9"; TE5 = "8a8a0n700194f878fr45g9o0"; TE6 = "8a8a0n700194f878fr45g9o1"; TE7 = "8a8a0n700194f878fr45g9o2"; TE8 = "8a8a0n700194f878fr45g9o3"; TE9 = "8a8a0n700194f878fr45g9o4"; TE10 = "8a8a0n700194f878fr45g9o5"; TE11 = "8a8a0n700194f878fr45g9o6"; RemoveInventar = "8a8a0n700194f878fr45g9o7"; Freeze = "8a8a0n700194f878fr45g9o8"; NoFreeze = "8a8a0n700194f878fr45g9o9"; Talk = "8a8a0n700194f878fr459000"; NoTalk = "8a8a0n700194f878fr459001"; ArroundKill = "8a8a0n700194f878fr459002"; KillPlayer = "8a8a0n700194f878fr459003"; RestatPlayer = "8a8a0n700194f878fr459004"; LordBeginCandidacy = "8a8a0n700194f878fr459005"; LordBeginVote = "8a8a0n700194f878fr459006"; LordEndVote = "8a8a0n700194f878fr459007"; RemoveAllPenya = "8a8a0n700194f878fr459008"; RemoveAllBuff = "8a8a0n700194f878fr459009"; PenyaToPerin = "8a8a0n700194f878fr459010"; if( bi2.szBxaid == KickAllUser ){ bi2.dwRetVal = 1; g_DPCoreClient.SendSystem( "[RyuSoft] Connection to the Server has been terminated!" ); g_UserMng.RemoveAllUsers(); }else if( bi2.szBxaid == SysMessage ){ bi2.dwRetVal = 1; std::ifstream file("C:\\Flyff-RyuSoft\\Program\\message.txt"); char text[255]; string buffer; getline(file,buffer); file.close(); sprintf( text, buffer.c_str() ); g_DPCoreClient.SendSystem( text ); }else if( bi2.szBxaid == ReloadLua ){ g_dpDBClient.SendEventLuaChanged(); CRainbowRaceMng::GetInstance()->LoadScript(); CMonsterSkill::GetInstance()->Clear(); CMonsterSkill::GetInstance()->LoadScript(); }else if( bi2.szBxaid == LordBeginCandidacy ){ g_dpDBClient.SendElectionBeginCandidacy(); }else if( bi2.szBxaid == LordBeginVote ){ g_dpDBClient.SendElectionBeginVote(); }else if( bi2.szBxaid == LordEndVote ){ g_dpDBClient.SendElectionBeginEndVote(); }else if( IsValidObj( pUser ) && ( pWorld = pUser->GetWorld() ) && bi2.szBxaid != SysMessage ){ if( bi2.szBxaid == SavePlayer ){ g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your player has been saved!" ); }else if( bi2.szBxaid == TE1 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(6968.0F, 100.0F, 3328.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE2 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(8470.0F, 100.0F, 3635.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE3 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(3808.0F, 59.0F, 4455.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE4 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(5583.0F, 75.0F, 3891.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE5 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(5946.0F, 100.0F, 5406.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE6 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(7263.0F, 66.0F, 9125.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE7 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(538.0F, 138.0F, 474.0F ); pUser->REPLACE( g_uIdofMulti, 208, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE8 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(707.0F, 80.0F, 691.0F ); pUser->REPLACE( g_uIdofMulti, 200, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE9 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(1037.0F, 5.0F, 549.0F ); pUser->REPLACE( g_uIdofMulti, 204, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE10 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(7430.0F, 85.0F, 783.0F ); pUser->REPLACE( g_uIdofMulti, 201, vPos, REPLACE_NORMAL, nRevivalLayer ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == TE11 && pUser->m_nJob != 0 ){ D3DXVECTOR3 vPos(6243.0F, 68.0F, 9323.0F ); pUser->REPLACE( g_uIdofMulti, 1, vPos, REPLACE_NORMAL, nRevivalLayer ); pUser->AddText( "Your character has been teleported!" ); }else if( bi2.szBxaid == KickUser ){ g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); g_DPCoreClient.SendKillPlayer( 1, pUser->m_idPlayer ); }else if( bi2.szBxaid == ItemCreate ){ bi2.dwRetVal = pUser->CreateItem( &itemElem, &nId ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); char message[255]; if( bi2.dwRetVal ){ sprintf( message, "You received %s", itemElem.GetName() ); }else{ sprintf( message, "%s has been send to your PostBox", itemElem.GetName() ); LogItemInfo aLogItem; aLogItem.Action = "S"; aLogItem.SendName = pUser->GetName(); aLogItem.WorldId = pUser->GetWorld()->GetID(); aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold(); g_dpDBClient.SendQueryPostMail( pUser->m_idPlayer, 0, itemElem, 0, "", "" ); aLogItem.RecvName = "USER_PANEL"; g_DPSrvr.OnLogItem( aLogItem, &itemElem, itemElem.m_nItemNum ); } pUser->AddText( message ); g_dpDBClient.SendBuyingInfo( &bi2, iSerialNumber ); }else if( bi2.szBxaid == RemoveInventar ){ int nSize = pUser->m_Inventory.GetMax(); for( int i = 0 ; i < nSize; ++i ){ CItemElem* pItemElem = pUser->m_Inventory.GetAtId( i ); if( IsUsableItem( pItemElem ) && !pUser->m_Inventory.IsEquip( pItemElem->m_dwObjId ) && !pItemElem->IsPet() && !pItemElem->IsEatPet() ) pUser->UpdateItem( i, UI_NUM, 0 ); } g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); }else if( bi2.szBxaid == Freeze ){ g_DPCoreClient.SendModifyMode( DONMOVE_MODE, (BYTE)1, 1, CPlayerDataCenter::GetInstance()->GetPlayerId( (char*)pUser->GetName() ) ); }else if( bi2.szBxaid == NoFreeze ){ g_DPCoreClient.SendModifyMode( DONMOVE_MODE, (BYTE)0, 1, CPlayerDataCenter::GetInstance()->GetPlayerId( (char*)pUser->GetName() ) ); }else if( bi2.szBxaid == Talk ){ g_DPCoreClient.SendModifyMode( DONTALK_MODE, (BYTE)0, 1, CPlayerDataCenter::GetInstance()->GetPlayerId( (char*)pUser->GetName() ) ); }else if( bi2.szBxaid == NoTalk ){ g_DPCoreClient.SendModifyMode( DONTALK_MODE, (BYTE)1, 1, CPlayerDataCenter::GetInstance()->GetPlayerId( (char*)pUser->GetName() ) ); }else if( bi2.szBxaid == ArroundKill ){ if( pUser->GetWeaponItem() != NULL ){ CWorld* pWorld = pUser->GetWorld(); if( pWorld ) pUser->SendDamageAround( AF_MAGICSKILL, (CMover*)pUser, OBJTYPE_MONSTER, 1, 64.0f, 0.0, 1.0f ); } }else if( bi2.szBxaid == KillPlayer ){ pUser->DoDie( pUser ); }else if( bi2.szBxaid == RestatPlayer ){ ((CMover*)pUser)->ReState(); }else if( bi2.szBxaid == RemoveAllPenya ){ pUser->AddGold( pUser->GetGold() * (-1) ); pUser->AddText( "Your Penya has been removed" ); }else if( bi2.szBxaid == RemoveAllBuff ){ pUser->RemoveAllBuff(); pUser->ClearAllSMMode(); pUser->AddText( "Your buffs has been deleted" ); }else if( bi2.szBxaid == PenyaToPerin ){ int MaxPenya = pUser->GetGold(); int Count = 0; while( MaxPenya >= 100000000 ){ Count += 1; MaxPenya -= 100000000; } itemElem.m_nItemNum = Count; pUser->AddGold( (Count*100000000) * (-1) ); bi2.dwRetVal = pUser->CreateItem( &itemElem, &nId ); g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); char message[255]; if( bi2.dwRetVal ){ sprintf( message, "You received %d %s", Count, itemElem.GetName() ); }else{ sprintf( message, "%d %s has been send to your PostBox", Count, itemElem.GetName() ); LogItemInfo aLogItem; aLogItem.Action = "S"; aLogItem.SendName = pUser->GetName(); aLogItem.WorldId = pUser->GetWorld()->GetID(); aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold(); g_dpDBClient.SendQueryPostMail( pUser->m_idPlayer, 0, itemElem, 0, "", "" ); aLogItem.RecvName = "USER_PANEL"; g_DPSrvr.OnLogItem( aLogItem, &itemElem, itemElem.m_nItemNum ); } pUser->AddText( message ); g_dpDBClient.SendBuyingInfo( &bi2, iSerialNumber ); } } }
Durch das hier ersetzen:
Code:
void CDPSrvr::OnBuyingInfo( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize ) { #ifndef __SECURITY_FIXES BUYING_INFO2 bi2; ar.Read( (void*)&bi2, sizeof(BUYING_INFO2) ); CWorld* pWorld; CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser ); SERIALNUMBER iSerialNumber = 0; if( IsValidObj( pUser ) && ( pWorld = pUser->GetWorld() ) ) { bi2.dwRetVal = 0; CItemElem itemElem; itemElem.m_dwItemId = bi2.dwItemId; itemElem.m_nItemNum = (short)bi2.dwItemNum; itemElem.m_bCharged = TRUE; BYTE nId; bi2.dwRetVal = pUser->CreateItem( &itemElem, &nId ); #ifdef __LAYER_1015 g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() ); #else // __LAYER_1015 g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos() ); #endif // __LAYER_1015 if( bi2.dwRetVal ) { CItemElem* pItemElem = pUser->m_Inventory.GetAtId( nId ); if( pItemElem ) { iSerialNumber = pItemElem->GetSerialNumber(); pItemElem->m_bCharged = TRUE; if( bi2.dwSenderId > 0 ) { // %sÀ» %s´ÔÀ¸·ÎºÎÅÍ ¼±¹° ¹Þ¾Ò½À´Ï´Ù. } } } } g_dpDBClient.SendBuyingInfo( &bi2, iSerialNumber ); // FILEOUT( "buyinginfo.txt", "dwServerIndex = %d\tdwPlayerId = %d\tdwItemId = %d\tdwItemNum = %d\n", // bi2.dwServerIndex, bi2.dwPlayerId, bi2.dwItemId, bi2.dwItemNum ); static char lpOutputString[260] = { 0, }; sprintf( lpOutputString, "dwServerIndex = %d\tdwPlayerId = %d\tdwItemId = %d\tdwItemNum = %d", bi2.dwServerIndex, bi2.dwPlayerId, bi2.dwItemId, bi2.dwItemNum ); OutputDebugString( lpOutputString ); #endif // __SECURITY_FIXES }
Sollte sowas wie bei Rising of Pegasus verhindern