This site is for P2P development and test software ONLY!

eMule v.49b UltiMatic v4.0


---------->27.03.09
ADDED: Active Permission = remove clients from Upload & Waiting queue after Permission change THX [morph4u]
ADDED: PowerShare via Webinterface
ADDED: Auto remove AntiCommUpBan clients from upload (exklude PBF >is Enable)
CHANGED: UBT for Clientdatarate ->don't remove spare trickle slot of
---------->16.12.08
+CHANGE: Punish for Non SUI Clients from max. *0.8 to -> *0.2/*0.1/Upload bann
---------->14.12.08
+ADDED: High resulution speedmeter on toolbar [Stulle]
---------->08.12.08
+ADDED: Advanced Transfer Window Layout [Stulle]
+CHANGE: Punish only for QR-Full Clients
---------->06.12.08
+ADDED: PBF for Partfiles
+ADDED: Share Permission - Hide/Community/Friend
+ADDED: Unlimited Slot *Adjust max client upload time
+ADDED: Adjust max client upload time (for blocked clients 5-300 Minutes Standard 60')
+ADDED: Clear Banlist [pP] - in UploadList/QueueList/DownloadClient
+ADDED: Don't Ban Friends [KTS]
+ADDED: Max Chunks Transfer Limiter [KTS] -> remove client from upload if complete chunk transfered (9.28MB)
+ADDED: Manual Ask SRV & XS for new Sources [LSD]
+ADDED: Maximum Segment Size (MSS 1300-1480) [KTS]
+ADDED: Multiple Chunks Transfer (1-10) [mL]
+CHANGE: AntiCommunityName from [256] to [512]
+CHANGE: Color lightgrey for Anticommunity User & Diesable PS for Anticomm, Leecher Users darkgrey
+ADDED: Auto Unban when Friend to add is a banned client
+ADDED: Show IP (ClientDetailDialog) [kts]
+CHANGE: Slotfocus in UploadList
+ADDED: Limit PowerShare by amount of data uploaded - per File/Global [Stulle]
+ADDED: Private Anti-Mod Detection
+ADDED: Punish for QR-Full/NNS Clients (faktor 1=aus, 2=50%, 3 1/3 ->reduze score, 100=0 Score+waiting time)
+ADDED: Anti Community Punish
+ADDED: 0 Score for Anti-Community User = Angel Argos Upload Bann
+ADDED: Diesable PowerShare for Anti-Community User
+CHANGE: Client Ban-Time [0-24H]
+ADDED: Colored Clients LowID=yellow, Community=Green, Anticommunity=grey ,Friend=Blue, Leecher=grey, QueueFull=lightgrey
+CHANGE: New eMule icons
+ADDED: Sivka File Settings - Source limit/drop adjustable per File [Sivka/Stulle]
+ADDED: Customized source dropping with auto drop immunity [Sivka/Stulle]
+ADDED: Show # of dropped sources per file in DownloadList [Stulle]
+ADDED: Automatic shared files updater (ASFU v3.2) - [MoNKi]
+UPDATED:German language file
+ADDED: TBH Mini-Mule with SendModname on Title
+ADDED: More Infos in Copy stats (Avarage Cpu Usage/Compression/OS-Vista recognition...)
+ADDED: Copy Stats - extended
+CHANGE: Push Rare Files ->(4-40)
+CHANGE: Push by Radio Files ->(2-40)
+ADDED: Push part files [Spe64]
+ADDED: Push finished files [Spe64]
+ADDED: Switchable Friendboost ->(1-200)
+ADDED: Switchable Community-boost ->(1-200)
+ADDED: PowerRelease + Switchable Releaseboost ->(2-40)
+CHANGE: Reask Time ->(20-57)
+ADDED: Show CUR-AVG CPU/MEM usage in Stats
+ADDED: Switchable CPU/Ram Infos (eMule/Global) [Stulle/Sicks]
+ADDED: Choosable modstring with ModaddOnNick [Spe64] + feedback with SendModname
+ADDED: Send modname on Title/Systray&prefs/MyniMule&prefs/WebServer
+ADDED: Upload priority from Transfer Wimdows
+ADDED: Upload only to eMule Clients
+ADDED: Reask single Clients in Transfer Windows
+ADDED: Drop Client in Transfer Windows (to another File)
+ADDED: Whois-Client Provider Info
+ADDED: GeoIP-IP Location Finder
+ADDED: Push to Upload from QueueList
+ADDED: Kick All Upload Slots
+ADDED: Kick from Upload
+ADDED: Kick from Upload and add to IP-Filter.dat
+ADDED: Cleint-BAN from Upload - Transfer & Queue List
+CHANGE: Slot Limiter ->(1-255)
+ADDED: See onuploadqueue & feedback
+ADDED: New Feedback format
+CHANGE: PowerShare restrictions for partfile or finished files to 800 src.
+CHANGE: Remove PoweShare restrictions
+CHANGE: Remove Friends restrictions
+CHANGE: New Leecher icon
+ADDED: RatDvd = Video
+ADDED: Old AppleJuice Community Detection [Xman]
+CHANGE: Xtreme v35 & MA v5 DLP's ,-removed some Release/Bad Mods
+community userhash check
+corrupt userhash check
+more AJ modstrings
+Spam-Message check
+antileecher v4 from XRAY

下载Download

eMule 0.49c beba v2.50


- merged: eMule 0.49c

- added: Payback First [WiZaRd]

- improved: added even more file types [Tuxman]
- improved: added hidden TxtEditor setting [Tuxman]
- improved: beba's first start information is now displayed separately [Tuxman]
- improved: better randomizer on creating first user hash [bscabral]
- improved: clear message field when closing a chat tab [Tuxman]
- improved: major overhaul of beba's Drop Buttons code [Tuxman, thx to WiZaRd]
* fixes a strange display bug
- improved: merged add/remove friend menu entries into a single one [Tuxman]
- improved: Modeless Dialogs used in more dialogs now :-) [SLUGFILLER/Xanatos]
- improved: readded "clear ban list" to queue context menu [Tuxman]
- improved: removed hover tracking in TransferWnd.cpp [SLUGFILLER]
- improved: removed server advertisements [CiccioBastardo]
- improved: some internal SlotFocus code improvements [Tuxman]

- fix (o): AddFileLinkToDownload checks if the file is actually known [Avi3k]
- fix (o): double-click behaviour in SearchListCtrl [WiZaRd]
- fix (b): full chunk transfer should work right now [Tuxman]
- fix (o): perform inverse sorting in queue list [moloko+]
- fix (o): possible crash (minor issue) in SharedFilesWnd.cpp [WiZaRd]
- fix (b): small Client Analyzer display fixes [Tuxman]
- fix (b): some Vista-related stuff [Tuxman]
- fix (o): splitter positioning in server wnd [moloko+]
- fix (o): StringLimit now returns the correct value [Avi3k]
- fix (o): use a pointer list when setting a server's priority [moloko+]
- fix (b): WebService menu had a weird structure [Tuxman]

- changed: beba now has eMule's default application icon (yet) [Tuxman]
* been too lazy to paste the old one, cough ..
- changed: FDC has a better indicator icon [Tuxman]
- changed: several default preferences [Tuxman]

- removed: removed some tweaks due to the codebase upgrade [Tuxman]
- removed: Tooltip delay option [Tuxman]
* always 1 second now :)

- updated: updated miniupnpc library to v1.2 [Thomas Bernard]

绿色包BIN
源码包SRC

Adding own tabs

Show additional client-based info in an own tab. In this example a new tab showing the modversion
is added to QueueListCtrl.cpp. You can use it for any other ListCtrl aswell, you just have to adapt
the column number defined at the end of the file.


Open QueueListCtrl.cpp:

Right after the #include "" block at the beginning add the following line:
[php]#define COL_MODVER (10) // pp show ModString[/php]
In QueueListCTRL there are already 9 existing columns. If you edit another ListCtrl you have to change the
counter to the first free number. You can check this in the following code part - add the last line at the end:
[php]
void CQueueListCtrl::Init()
{
[...]
InsertColumn(6,GetResString(IDS_LASTSEEN),LVCFMT_LEFT,110,6);
InsertColumn(7,GetResString(IDS_ENTERQUEUE),LVCFMT_LEFT,110,7);
InsertColumn(8,GetResString(IDS_BANNED),LVCFMT_LEFT,60,8);
InsertColumn(9,GetResString(IDS_UPSTATUS),LVCFMT_LEFT,100,9);

// pp
InsertColumn(COL_MODVER, GetResString(IDS_CD_CSOFT), LVCFMT_LEFT, 100, COL_MODVER); // pp show modstring
[/php]

Now we localize the tab name to your language:
[php]
void CQueueListCtrl::Localize()
{
CHeaderCtrl* pHeaderCtrl = GetHeaderCtrl();
HDITEM hdi;
hdi.mask = HDI_TEXT;

if(pHeaderCtrl->GetItemCount() != 0) {
CString strRes;

[...]

strRes = GetResString(IDS_UPSTATUS);
hdi.pszText = strRes.GetBuffer();
pHeaderCtrl->SetItem(9, &hdi);
strRes.ReleaseBuffer();

// pp show modstring
strRes = GetResString(IDS_CD_CSOFT);
strRes.Remove(_T(':'));
hdi.pszText = strRes.GetBuffer();
pHeaderCtrl->SetItem(COL_MODVER, &hdi);
strRes.ReleaseBuffer();
// pp end
}
}
[/php]

Now for what will be shown in the column. You can show nearly anything here. The content of sBuffer
will your output, if you want to shown something else you have to edit it, just remember to return it
formatted as string:
[php]
void CQueueListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
[...]

case 9:
if( client->GetUpPartCount()){
cur_rec.bottom--;
cur_rec.top++;
client->DrawUpStatusBar(dc,&cur_rec,false,thePrefs.UseFlatBar());
cur_rec.bottom++;
cur_rec.top--;
}
break;

// pp show modstring
case COL_MODVER:
Sbuffer = client->DbgGetFullClientSoftVer();
if (Sbuffer.IsEmpty())
Sbuffer = GetResString(IDS_UNKNOWN);
break;
// pp end

[...]
[/php]

Finally the sorting. Emule does not support sorting of stringsm so we have to add an additional later:
[php]
int CQueueListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
[...]

case 9:
iResult=item1->GetUpPartCount() - item2->GetUpPartCount();
break;
case 109:
iResult=item2->GetUpPartCount() - item1->GetUpPartCount();
break;

// pp show modstring
case COL_MODVER:
iResult=Mod_Version_Sort_by_String(item1,item2);
break;
case COL_MODVER+100:
iResult=Mod_Version_Sort_by_String(item2,item1);
break;
// pp end

[...]
[/php]

Now for the string sorting. This has to be added to OtherFunctions.cpp/.p

At the end of OtherFunctions.cpp add this function (from Pawcio mod):
[php]
// pp show modstring
int Mod_Version_Sort_by_String(const CUpDownClient* client1, const CUpDownClient* client2){
if(client1->GetClientSoft() == client2->GetClientSoft()){
if(client2->GetVersion() == client1->GetVersion() &&
client1->GetClientSoft() == SO_EMULE)
return _tcscmp(client2->GetClientModVer(), client1->GetClientModVer());
else
return client2->GetVersion() - client1->GetVersion();
}
else
return client1->GetClientSoft() - client2->GetClientSoft();
}
[/php]

Finally, define the function at the end of OtherFunctions.h:
[php]
// pp show modstring
int Mod_Version_Sort_by_String(const CUpDownClient* client1, const CUpDownClient* client2);
[/php]

Create a random Modstring

It's placed in Preferences.cpp/.h so it can be called from nearly everwhere when needed.

Preferences.cpp

CString CPreferences::m_strSessionModstring;
CString CPreferences::GetSessionModString()
{
if (!m_strSessionModstring.IsEmpty())
return m_strSessionModstring;
//
// Create the Modname
int i, maxchar;
m_strSessionModstring.Empty();

maxchar = 4+(rand()%9); // min length == 4 chars, max length (4+9-1) == 12 chars
i = 0;
while (i < maxchar) { int iRand = rand()%3; switch(iRand){ case 0: m_strSessionModstring.AppendFormat(_T("%c"), _T('A')+rand()%26); // Capitals case 1: m_strSessionModstring.AppendFormat(_T("%c"), _T('0')+rand()%10); // Numbers case 2: default: m_strSessionModstring.AppendFormat(_T("%c"), _T('a')+rand()%26); // lower case } i++; if (m_strSessionModstring.GetLength() >= maxchar)
break;
}
//
// Add a prefix to the version number
i = rand()%5;
switch (i){
case 0: m_strSessionModstring.Append(_T(" V")); break;
case 1: m_strSessionModstring.Append(_T(" v")); break;
case 2: m_strSessionModstring.Append(_T(" r")); break;
case 3: m_strSessionModstring.Append(_T(" R")); break;
default:
case 4: m_strSessionModstring.Append(_T(" ")); break;
}
//
// Add the version number
m_strSessionModstring.AppendFormat(_T("%c.%c%c"), _T('0')+rand()%10, _T('0')+rand()%10, (rand()%2 ? _T('0')+rand()%10 : _T('a')+rand()%7));
//
// This will return a ModID consisting of ModVersion + 1.00 or 1.0a
return m_strSessionModstring;
}

Preferences.h

static CString m_strSessionModstring;
static CString GetSessionModString();

Nickthief

void CUpDownClient::SendHelloTypePacket(CSafeMemFile* data)
{
data->WriteHash16(thePrefs.GetUserHash());
uint32 clientid;
clientid = theApp.GetID();

data->WriteUInt32(clientid);
data->WriteUInt16(thePrefs.GetPort());

uint32 tagcount = 6;

if( theApp.clientlist->GetBuddy() && theApp.IsFirewalled() )
tagcount += 2;

data->WriteUInt32(tagcount);

// eD2K Name

// TODO implement multi language website which informs users of the effects of bad mods
CTag tagName(CT_NAME, (m_pszUsername) ? m_pszUsername : thePrefs.GetUserNick()); // NickThief
//CTag tagName(CT_NAME, (!m_bGPLEvildoer) ? thePrefs.GetUserNick() : _T("Please use a GPL-conform version of eMule") );
tagName.WriteTagToFile(data, utf8strRaw);

// eD2K Version
CTag tagVersion(CT_VERSION,EDONKEYVERSION);
tagVersion.WriteTagToFile(data);
[...]

Manual Chunk Selection

Here's the code for the Manual Chunk Selection.

//BG Manual Chunk Selection
//BG Specify a string of chunks... every number must be followed by a comma
//BG Examples: 1, or 3,4,5, etc...

CString strManualChunks = thePrefs.GetCommunityName();
strManualChunks = strManualChunks.MakeReverse(); // 1,2,3, = ,3,2,1
int pos;

while (strManualChunks != _T("")) {

pos = strManualChunks.Find(_T(","));

CString strChunk = strManualChunks.Mid(pos+1,1);
uint32 iChunk = _wtoi(strChunk)-1;

if (sender->IsPartAvailable(iChunk) && GetNextEmptyBlockInPart(iChunk, 0))
chunk_list.AddHead(iChunk);

strManualChunks = strManualChunks.Right(strManualChunks.GetLength()-2);
}
//BG End


Put near the end of bool CPartFile::GetNextRequestedBlock(CUpDownClient* sender, Requested_Block_Struct** newblocks, uint16* count)


Here's the Left to Right code:

/*
Get Chunks Left to Right.
If the file is an AVI/ASF/WMV, get the last chunk after the first chunk.
Version 2 of this will try and just get the last 180KB for AVI files instead of the whole chunk for previewing
Need to rip apart the GetNextEmptyBlockInPart function.
*/
//BG
bool CPartFile::GetNextRequestedBlock_BGVideoPreview(CUpDownClient* sender, Requested_Block_Struct** newblocks, uint16* count) {

uint16 LastPartAsked;
const uint16 partCount = GetPartCount();

//Find File Extension
CString ext = GetFileName();
ext.MakeLower();
int pos = ext.ReverseFind(_T('.'));
if (pos > -1)
ext = ext.Mid(pos);

//Get First Chunk
if (sender->IsPartAvailable(0) && GetNextEmptyBlockInPart(0, NULL) ) {
LastPartAsked = 0;
}
//If AVI/ASF/WMV Get Last Chunk
else if ((ext == _T(".avi") || ext == _T(".asf") || ext == _T(".wmv")) &&
sender->IsPartAvailable(partCount - 1) && GetNextEmptyBlockInPart(partCount - 1, NULL) ) {
LastPartAsked = partCount - 1;
}
//Get All other chunks Left to Right
else {
for (uint16 i = 1; i < partCount; i++) if (sender->IsPartAvailable(i) && GetNextEmptyBlockInPart(i, NULL) ) {
LastPartAsked = i;
break;
}
}


//Build Requested Block List

uint16 requestedCount = *count;
uint16 newblockcount = 0;
do{
Requested_Block_Struct* block = new Requested_Block_Struct;
if (GetNextEmptyBlockInPart(LastPartAsked,block)) {
requestedblocks_list.AddTail(block);
newblocks[newblockcount] = block;
AddDebugLogLine( false, _T("BG-VideoPreview: Block: -%u- Start: -%u- End: -%u- Trans: -%u-"),(uint16)newblockcount,block->StartOffset,block->EndOffset,block->transferred);
newblockcount++;
}
else {
delete block;
break;
}
} while (newblockcount != requestedCount);
*count = newblockcount;
sender->m_lastPartAsked = LastPartAsked;

return true;

} //BG End GetNextRequestedBlock_BGVideoPreview

Adding an own Prefs Page

Effect:
Get your own space in the Prefs to place controls etc

Difficulty:
fairly easy

Files to modify:
PreferencesDlg.cpp
PreferencesDlg.h
OwnPrefs.cpp
OwnPrefs.h

Notes:
Look for the posted codeblock and add the new lines at the end. The changes are all tagged.
I gonna post 2 lines of official code before the changes.
[hr]


We start with PreferencesDlg.cpp:
[php]
CPreferencesDlg::CPreferencesDlg()
{
[...]
m_wndScheduler.m_psp.dwFlags &= ~PSH_HASHELP;
m_wndProxy.m_psp.dwFlags &= ~PSH_HASHELP;

// Own Prefs
m_wndOwnPrefs.m_psp.dwFlags &= ~PSH_HASHELP;

[...]
CTreePropSheet::SetPageIcon(&m_wndTweaks, _T("TWEAK"));
#if defined(_DEBUG) || defined(USE_DEBUG_DEVICE)
CTreePropSheet::SetPageIcon(&m_wndDebug, _T("Preferences"));
#endif

// Own Prefs
CTreePropSheet::SetPageIcon(&m_wndOwnPrefs, _T("TWEAK"));

[...]
AddPage(&m_wndWebServer);
AddPage(&m_wndTweaks);

// Own Prefs
AddPage(&m_wndOwnPrefs);

[/php]


Next function:
[php]
void CPreferencesDlg::Localize()
{
[...]
m_wndScheduler.Localize();
m_wndProxy.Localize();

// pp
m_wndOwnPrefs.Localize();

[...]
CTreeCtrl* pTree = GetPageTreeControl();
if (pTree)
{
[...]
pTree->SetItemText(GetPageTreeItem(12), RemoveAmbersand(GetResString(IDS_PW_WS)));
pTree->SetItemText(GetPageTreeItem(13), RemoveAmbersand(GetResString(IDS_PW_TWEAK)));

// Own Prefs
pTree->SetItemText(GetPageTreeItem(14), RemoveAmbersand(_T("Own Prefs")));

// change 14 -> 15 here
#if defined(_DEBUG) || defined(USE_DEBUG_DEVICE)
pTree->SetItemText(GetPageTreeItem(15), _T("Debug"));
#endif
}
[...]
[/php]
[hr]


Now for PreferencesDlg.h:
[php]
[...]
#include "otherfunctions.h"
#include "TreePropSheet.h"

// Own Prefs
#include "ppgOwnPrefs.h"

[...]
public:
CPreferencesDlg();
virtual ~CPreferencesDlg();

// Own Prefs
CPPgOwnPrefs m_wndOwnPrefs;
[...]
[/php]

That's it.
[hr]


The next steps are to be done in the IDE. First download this archive [60 kB] and extract the files into your srchybrid folder. It also contains all other files named above with all changes done. If you prefer you can simply merge the changes file to file. The files & tut have been tested and they compile w/o errors under VS.2k3.

Prefs are interface files, so the have to be added to the sections "interface source" (.cpp) and "interface header" (.h):

1. In your "Project Explorer" right-click on "Interface Source"
2. click "add" -> "Existing Element"
3. select "PPgOwnPrefs.cpp" & OK
4. Same for the .h file in "Interface Header"

Both files should appear at the end of the sections now.

Now create the empty dialog. Change to Rescource view and:

1. select "emule.rc" -> "Dialogs".
2. Right-click on "Dialog" and choose "Add" -> "Add Rescource" -> "New".
3. A new & empty dialog opens up. Delete the two buttons.
4. Size the dialog to 227x246 pixel (size is shown in the status bar).
5. Give it the ID "IDD_PPG_OWNPREFS" (Properties) and save.

eMule 0.49c eChanblard v16.1


Nous sommes heureux de vous proposer un Mod (modification) d’eMule à part entière, non dérivé d’un autre Mod.
Cette version 100% eChanblard (versions 8 et supérieures) n’est pas comme les précèdentes un dérivé de Sivka, Pawcio ou encore MorphXT.

Dans le but de vous aider à mieux comprendre les options proposées et ainsi de mieux utiliser votre mule, l'équipe eChanblard s'est mobilisée pour vous présenter un guide explicatif clair et compréhensible par tous!
Les captures d'écran présentes sur ce guide ne sont que des exemples pour vous permettre de vous repérer plus facilement. En aucun cas, ils font l'objet de configuration type applicable à votre connexion.

Si vous êtes un nouvel utilisateur des réseaux de peer-to-peer (P2P), nous vous invitons à lire cette page qui permet d'introduire les concepts de base de ce système.
Si vous utilisez pour la première fois eChanblard, nous vous conseillons de passer par l'onglet Transfert, afin de paramétrer votre mule selon la configuration type liée à votre connexion internet.

Nous vous remercions d'avoir choisi le Mod eChanblard dans sa dernière version et nous vous souhaitons de bons upload et download.

Aujourd'hui sort une nouvelle version de eChanblard. Cette version intègre de nouvelles fonctionnalités qui permettent de :

- Limiter les LowID (notamment grâce à l'UPnP)
- Améliorer les téléchargements (via un upload plus ciblé)

De plus les réglages par défaut ont été revus pour obtenir un logiciel "prêt à utiliser".

Pour vous mettre à jour, redémarrez eChanblard.

http://www.echanblardnext.org

eMule v0.49b Applejuice 3.1.3 by Ekliptor


----------------------------------------------------------------------
eMule Applejuice Main Features which give you more SPEED and SECURITY:
----------------------------------------------------------------------
- Applejuice Community with many Community Clients advanced Community Features
- Applejuice Creditsystem: you can "buy" download Slots from other Community Clients with Applejuice you get for your Upload
- Community Topfile List: Search and Find the Files with most Community Clients
- advanced Upload Managament, Upload Protection and Boost Clients
- many Hacks, Community Fakes and Client Emulations
- security Features like 'no complete Files' and 'Filename Obfuscation'
- AES (256 bit) encrypted File-Transfers for more Security
- many other useful Features
- all eMule Xtreme Features

Changelog eMule v0.49b Applejuice v3.1.3:
-----------------------------------------
March, 18. 2009

FEATURES:
Partners:
- added searches for http://www.titanshare.to/ and http://www.titantorrent.to/ in search window
- changed zoozle search links

Other:
- changed homepage and forum links to http://www.applejuice-community.eu/
- some minor fixes

Download下载

eMule v0.49b -XdP- EdiTioN v4.1 HOTFIX



Changelog:

FIXED : a heavy Bug on DropSystem (umeK)
FIXED : a Problem on Source Management (umeK)
CHANGED/FIXED : few code around the mod... (umeK)

ADD : Colored Upload (umeK)
FIXED : a Problem on IPFilterupdate (umeK)
FIXED : a Bug on Kadsearch (umeK)
FIXED : a Bug on Checkfortimeover (umeK)
FIXED : ConChecker (taz)
FIXED : Reask sources after IPChange (umeK)
FIXED : a Bug on IP2Country (umeK)
CHANGED : few things on -XdP- PPG's (umeK)
CHANGED : don't search new generated clients in lists (Xman/WiZaRd)
CHANGED : few stuff from BadGuy Detection (umeK)
CHANGED : Random Modstring (umeK)
CHANGED/OPTIMIZED : some things from Community (umeK)
OPTIMIZED : some things on expanded Credits (umeK)
CLEANED : the Source and removed some old buggy/unused stuff... (umeK)

DD : minRQR (WiZarD)
ADD : LeecherLog (umeK)
ADD : ClientAnalyzer (WiZarD)
ADD : BadGuy Detection (umeK)
ADD : additional Punishment (umeK)
ADD : some Optimizations,Fixes from various Mods....
CHANGED : eXtended Kick-System (umeK)
CHANGED : few default options (umeK)
CHANGED : Prefspages (umeK)
CHANGED : Smart RQR-Boost (umek)
CHANGED : few things on opcodes.h...(umeK)
OPTIMIZED : Fake eChanblard (umeK)
FIXED : some things around the Mod (umeK)
REMOVED : old AntiLeech System (umeK)
REMOVED : some unused stuff.... (umeK)
many many other changes.....

欧洲吸血驴中不错的一个,很快的下载速度,但缺乏一些功能,发布能力差。

Download下载

eMule v.49c MagicAngel v3.8 alpha


Changelog for eMule v.49c [Magic Angel v3.8]

IMPROVED: save some cycles with an empty Queue[pP]
IMPROVED: Optimations ,Fixes[WiZaRd/Xman/JvA]
ADDED: Don’t accept too short filters - unfair![WiZaRd]
ADDED: First Start Maximized[WiZaRd]
ADDED: Faster Upload Timer[WiZaRd]
IMPROVED: SafeTagSending[WiZaRd]
IMPROVED: Moved some Functions inline[netfinity]
IMPROVED: Some Optimations and Fixes[WiZaRd]
IMPROVED: Code (CPU load)[Maella]
IMPROVED: Optimized speedBarShader[netfinity]
IMPROVED: FillSolidRect[Xray]
IMPROVED: banncheck[sivka]
IMPROVED: quick fix/possible crashfix[XMan]
IMPROVED: Save converting dwIP from uint32 to a CStringT to ASCII then back to uint32[bluesonicboy]
MERGED: to MorphXT v11.3 thx to Stulle & Morph Team
REMOVED: open a default website when nodesurl is invalid[ZZ00fly]


Changelog for eMule v.49b [Magic Angel v3.7]

CHANGED: AntiModThief to old code
CHANGED: Removed some entries from MagicAntiLeech (entries are in DLP too)
FIXED: Vagaa Detection - forgotten to change some code during merging was commented out in source
FIXED: Leecher Icon in downloading Clients Lists

主页Homepage

Better Speed Display

Search in otherfunctions.cpp for:

if( isPerSec )
{
if (count < 1024.0)
buffer.Format(_T("%.0f %s"), count, GetResString(IDS_BYTESPERSEC));
else if (count < 1024000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1024.0, GetResString(IDS_KBYTESPERSEC));
else if (count < 1048576000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1048576.0, GetResString(IDS_MBYTESPERSEC));
else if (count < 1073741824000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1073741824.0, GetResString(IDS_GBYTESPERSEC));
else
buffer.Format(_T("%.*f %s"), decimal, count/1099511627776.0, GetResString(IDS_TBYTESPERSEC));
}
else
{
if (count < 1024.0)
buffer.Format(_T("%.0f %s"), count, GetResString(IDS_BYTES));
else if (count < 1024000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1024.0, GetResString(IDS_KBYTES));
else if (count < 1048576000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1048576.0, GetResString(IDS_MBYTES));
else if (count < 1073741824000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1073741824.0, GetResString(IDS_GBYTES));
else
buffer.Format(_T("%.*f %s"), decimal, count/1099511627776.0, GetResString(IDS_TBYTES));
}

and replace it with this:

if( isPerSec )
{
if(decimal==2/*99*/)
{
if (count < 1024000.0)
buffer.Format(_T("%.1f %s"), count/1024.0, GetResString(IDS_KBYTESPERSEC));
else if (count < 1048576000.0)
buffer.Format(_T("%.2f %s"), count/1048576.0, GetResString(IDS_MBYTESPERSEC));
else
buffer.Format(_T("%.3f %s"), count/1073741824.0, GetResString(IDS_GBYTESPERSEC));
}
else
{
if (count < 1024.0)
buffer.Format(_T("%.0f %s"), count, GetResString(IDS_BYTESPERSEC));
else if (count < 1024000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1024.0, GetResString(IDS_KBYTESPERSEC));
else if (count < 1048576000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1048576.0, GetResString(IDS_MBYTESPERSEC));
else if (count < 1073741824000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1073741824.0, GetResString(IDS_GBYTESPERSEC));
else
buffer.Format(_T("%.*f %s"), decimal, count/1099511627776.0, GetResString(IDS_TBYTESPERSEC));
}
}
else
{
if(decimal==99)
{
if (count < 1024)
buffer.Format(_T("%.0f %s"),count, GetResString(IDS_BYTES));
else if (count < 1048576)
buffer.Format(_T("%.0f %s"),count/1024.0f, GetResString(IDS_KBYTES));
else if (count < 1073741824)
buffer.Format(_T("%.2f %s"),count/1048576.0f, GetResString(IDS_MBYTES));
else if (count < 1099511627776)
buffer.Format(_T("%.2f %s"),count/1073741824.0f, GetResString(IDS_GBYTES));
else
buffer.Format(_T("%.3f %s"),count/1099511627776.0f, GetResString(IDS_TBYTES));
}
else
{
if (count < 1024.0)
buffer.Format(_T("%.0f %s"), count, GetResString(IDS_BYTES));
else if (count < 1024000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1024.0, GetResString(IDS_KBYTES));
else if (count < 1048576000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1048576.0, GetResString(IDS_MBYTES));
else if (count < 1073741824000.0)
buffer.Format(_T("%.*f %s"), decimal, count/1073741824.0, GetResString(IDS_GBYTES));
else
buffer.Format(_T("%.*f %s"), decimal, count/1099511627776.0, GetResString(IDS_TBYTES));
}
}

Queuesize Changing (100-10000)

PPgTweeks.cpp

serch after:

BOOL CPPgTweaks::OnInitDialog()


look after this code:


m_ctlQueueSize.SetRange(20, 100, TRUE);


change it:

m_ctlQueueSize.SetRange(1, 100, TRUE);

Unlimited search results

SearchResultsWnd.cpp


Search after "LocalEd2kSearchEnd" and edit that part.


void CSearchResultsWnd::LocalEd2kSearchEnd(UINT /*count*/, bool bMoreResultsAvailable)
{
// local server has answered, kill the timeout timer
if (m_uTimerLocalServer) {
VERIFY( KillTimer(m_uTimerLocalServer) );
m_uTimerLocalServer = 0;
}
/*if (!canceld && count > MAX_RESULTS)
CancelEd2kSearch();*/
if (!canceld) {
if (!globsearch)
SearchCanceled(m_nEd2kSearchID);
else
VERIFY( (global_search_timer = SetTimer(TimerGlobalSearch, 750, 0)) != NULL );
}
m_pwndParams->m_ctlMore.EnableWindow(bMoreResultsAvailable && m_iSentMoreReq < MAX_MORE_SEARCH_REQ);
}


Search after "AddGlobalEd2kSearchResults" and edit it.


void CSearchResultsWnd::AddGlobalEd2kSearchResults(UINT /*count*/)
{
/*if (!canceld && count > MAX_RESULTS)
CancelEd2kSearch();*/
}

No Ratio

references.cpp


search after:

uint64 CPreferences::GetMaxDownloadInBytesPerSec(bool dynamic)


look after this part:

if%u28 maxup < 4*1024 %u29
return %u28%u28%u28maxup < 10*1024%u29 && %u28%u28uint64%u29maxup*3 < maxdownload*1024%u29%u29 ? %u28uint64%u29maxup*3 %u3a maxdownload*1024%u29;
return %u28%u28%u28maxup < 10*1024%u29 && %u28%u28uint64%u29maxup*4 < maxdownload*1024%u29%u29 ? %u28uint64%u29maxup*4 %u3a maxdownload*1024%u29;

change it:
return %u28maxdownload*1024%u29;

PPgConnection.cpp


search after:

void CPPgConnection: nHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)


look after this part and remove it:
if %u28pScrollBar->GetSafeHwnd%u28%u29 == m_ctlMaxUp.m_hWnd%u29
%u7b
uint32 maxup = m_ctlMaxUp.GetPos%u28%u29;
uint32 maxdown = m_ctlMaxDown.GetPos%u28%u29;
if%u28 maxup < 4 && maxup*3 < maxdown%u29
%u7b
m_ctlMaxDown.SetPos%u28maxup*3%u29;
%u7d
if%u28 maxup < 10 && maxup*4 < maxdown%u29
%u7b
m_ctlMaxDown.SetPos%u28maxup*4%u29;
%u7d
%u7d
else if %u28pScrollBar->GetSafeHwnd%u28%u29 == m_ctlMaxDown.m_hWnd%u29
%u7b
uint32 maxup = m_ctlMaxUp.GetPos%u28%u29;
uint32 maxdown = m_ctlMaxDown.GetPos%u28%u29;
if%u28 maxdown < 13 && maxup*3 < maxdown%u29
%u7b
m_ctlMaxUp.SetPos%u28%u28int%u29ceil%u28%u28double%u29maxdown/3%u29%u29;
%u7d
if%u28 maxdown < 41 && maxup*4 < maxdown%u29
%u7b
m_ctlMaxUp.SetPos%u28%u28int%u29ceil%u28%u28double%u29maxdown/4%u29%u29;
%u7d
%u7d

Wizard.cpp

search for:

thePrefs.maxGraphDownloadRate = download;
thePrefs.maxGraphUploadRate = upload;

if (upload > 0 && download > 0)
{
thePrefs.maxupload = (uint16)((upload * 4L) / 5);
if (upload < 4 && download > upload*3) {
thePrefs.maxdownload = thePrefs.maxupload * 3;
download = upload * 3;
}

if (upload < 10 && download > upload*4) {
thePrefs.maxdownload = thePrefs.maxupload * 4;
download = upload * 4;
}
else
thePrefs.maxdownload = (uint16)((download * 9L) / 10);

change it to:

thePrefs.maxGraphDownloadRate = download;
thePrefs.maxGraphUploadRate = upload;

if (upload > 0 && download > 0)
{
//umek::No Ratio
/*
thePrefs.maxupload = (uint16)((upload * 4L) / 5);
if (upload < 4 && download > upload*3) {
thePrefs.maxdownload = thePrefs.maxupload * 3;
download = upload * 3;
}

if (upload < 10 && download > upload*4) {
thePrefs.maxdownload = thePrefs.maxupload * 4;
download = upload * 4;
}
else
*/
//umek::No Ratio end
thePrefs.maxdownload = (uint16)((download * 9L) / 10);

Kick and Ban

Öffne UploadListCtrl.cpp und suche:

ClientMenu.AppendMenu(MF_STRING | (GetItemCount() > 0 ? MF_ENABLED : MF_GRAYED), MP_FIND, GetResString(IDS_FIND), _T("Search"));



Füge drunter:

ClientMenu.AppendMenu(MF_STRING | ((client && client->IsEd2kClient()) ? MF_ENABLED : MF_GRAYED), MP_KICKUSER, _T("Kick User"), _T("LISTREMOVE"));
ClientMenu.AppendMenu(MF_STRING | ((client && client->IsEd2kClient()) ? MF_ENABLED : MF_GRAYED), MP_BANUSER, _T("Ban User"), _T("CLEARCOMPLETE"));



suche weiter:

case MP_BOOT:
if (client->GetKadPort())
Kademlia::CKademlia::Bootstrap(ntohl(client->GetIP()), client->GetKadPort());
break;



füge drunter:

case MP_KICKUSER:
theApp.uploadqueue->RemoveFromUploadQueue(client);
break;
case MP_BANUSER:
theApp.uploadqueue->RemoveFromWaitingQueue(client);
client->Ban();
//theApp.uploadqueue->RemoveFromUploadQueue(client, _T("You were kicked."), true);
break;



Speicher die Datei und öffne MenuCmds.h füge ganz unten einfach:

#define MP_BANUSER 12650
#define MP_KICKUSER 12750

Clear Banlist Button

UploadListCtrl.cpp

add this code:

#include "Clientlist.h"




search after:

void CUploadListCtrl::OnContextMenu(CWnd* /*pWnd*/, CPoint point)



look after this code:

ClientMenu.AppendMenu(MF_STRING | (GetItemCount() > 0 ? MF_ENABLED : MF_GRAYED), MP_FIND, GetResString(IDS_FIND), _T("Search"));



add under it:

ClientMenu.AppendMenu(MF_STRING | (client ? MF_ENABLED : MF_GRAYED), MP_CLEARBANS, _T("Clear Banlist"),_T("STOP"));




search after:

BOOL CUploadListCtrl::OnCommand(WPARAM wParam, LPARAM /*lParam*/)



look after this code:

case MP_BOOT:
if (client->GetKadPort())
Kademlia::CKademlia::Bootstrap(ntohl(client->GetIP()), client->GetKadPort());
break;



add under it:

case MP_CLEARBANS:
theApp.clientlist->ClearBanList(); theApp.emuledlg->transferwnd->ShowQueueCount(theApp.uploadqueue->GetWaitingUserCount());
break;



MenuCmds.h


add at the end of the defines:

#define MP_CLEARBANS 15000




ClientList.cpp

add this code at end of file:

void CClientList::ClearBanList()
{
int i=0;
POSITION pos = m_bannedList.GetStartPosition();
uint32 nKey;
uint32 dwBantime;
while (pos != NULL)
{
m_bannedList.GetNextAssoc( pos, nKey, dwBantime );
RemoveBannedClient(nKey);
i++;
}
}



ClientList.h

Search after:

void DeleteAll();



add under it:

void ClearBanList();

Save-Load Sources

emule.vcproj------------------------------------------


search:




add under:




search:




add under:





Partfile.cpp--------------------------------------------------------------------


search:


CPartFile::CPartFile(UINT ucat)

add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
: m_sourcesaver(this)
//b4 Xman end

search:


CPartFile::CPartFile(CSearchFile* searchresult, UINT cat)


add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
: m_sourcesaver(this)
//b4 Xman end


search:

CPartFile::CPartFile(CString edonkeylink, UINT cat)

add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
: m_sourcesaver(this)
//b4 Xman end


search:

CPartFile::CPartFile(CED2KFileLink* fileLink, UINT cat)

add under:

//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
: m_sourcesaver(this)
//b4 Xman end

search:



cur_src->socket->SetDownloadLimit(limit);
if (cur_src->IsDownloadingFromPeerCache() && cur_src->m_pPCDownSocket && cur_src->m_pPCDownSocket->IsConnected())
cur_src->m_pPCDownSocket->SetDownloadLimit(limit);
}
}
}
}
}
else
{



//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
m_sourcesaver.Process();
//b4 Xman end


search:


while (PathFileExists(strTestName));
strNewname = strTestName;
}
free(newfilename);


add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
m_sourcesaver.DeleteFile();
//b4 Xman end



search:


CString BAKName(m_fullname);
BAKName.Append(PARTMET_BAK_EXT);
if (_taccess(BAKName, 0) == 0 && !::DeleteFile(BAKName))
LogError(LOG_STATUSBAR, GetResString(IDS_ERR_DELETE) + _T(" - ") + GetErrorMessage(GetLastError()), BAKName);

add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
m_sourcesaver.DeleteFile();
//b4 Xman end



Partfile.h------------------------------------------------------------------


search:

#include "CorruptionBlackBox.h"

add under:


#include "SourceSaver.h" //b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)


search:



uint32 m_random_update_wait;
volatile EPartFileOp m_eFileOp;
volatile UINT m_uFileOpProgress;


add under:


//b4 Xman -New Save/load Sources- enkeyDEV(Ottavio84)
CSourceSaver m_sourcesaver;
//b4 Xman end



ClientStateDefs.h----------------------------------------------------------------------------------


search:


SF_LINK = 4,

add under:


SF_SLS = 5 //Xman SLS



DownloadClientsCtrl.cpp---------------------------------------------------------------------------


search:

case SF_LINK:
Sbuffer = GetResString(IDS_SW_LINK);
break;

add under:

//b4 Xman SLS
case SF_SLS:
Sbuffer = _T("SLS");
break;
//b4 Xman end


DownloadListCtrl.cpp-----------------------------------------------------------------------------


search:

case SF_LINK:
buffer = GetResString(IDS_SW_LINK);
break;


add under:


//b4 Xman SLS
case SF_SLS:
buffer = _T("SLS");
break;
//b4 Xman end


End--------------------------------------------------------------------------------------------------

Kick all LowID from Queue

UploadQueue.cpp

CUpDownClient* CUploadQueue::KickAllLowID(){
POSITION pos = waitinglist.GetHeadPosition();
while(pos != NULL){
CUpDownClient* cur_client = waitinglist.GetNext(pos);
if(cur_client->HasLowID())
{
theApp.uploadqueue->RemoveFromWaitingQueue(cur_client);
}
}
return NULL;
}


UploadQueue.h

public:
CUpDownClient* CUploadQueue::KickAllLowID();


QueueListCtrl.cpp

c
ase MP_KICKLOWID:
{
AddModLogLine(LOG_ORANGE,_T("[Kick all] All LowID Clients from Queue removed..."));
theApp.uploadqueue->KickAllLowID();
theApp.emuledlg->transferwnd->ShowQueueCount(theApp.uploadqueue->GetWaitingUserCount());
break;
}

MenuCmds.h

#define MP_KICKLOWID 15031

Emulate Community Nick Addons

无法查看这则摘要。请 点击此处查看博文。

Show progress of hashing files

in knownfile.cpp add to the includes

#include "MuleStatusBarCtrl.h"

and search for

if (theApp.emuledlg==NULL || !theApp.emuledlg->IsRunning()){ // in case of shutdown while still hashing
fclose(file);
delete[] newhash;
return false;
}

and add under it

if(theApp.emuledlg->statusbar->m_hWnd && GetPartCount() > 0){ //just to be sure
CString strPercent;
strPercent.Format(_T("Hashing :%d%% - %s"), (hashcount+1)*100/GetPartCount(), in_filename);
theApp.emuledlg->statusbar->SetText(strPercent, 0, 0);
}

search
// Add filetags
UpdateMetaDataTags();

and add under it
AddLogLine(true,_T("Hashing done: %s"), GetFilePath());

Dont's Share incoming (on-off)

emule.rc

search :


CONTROL "Use UPnP to setup portforwardings",IDC_PREF_UPNPONSTART,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,116,208,10

add under:


CONTROL "Don´t Share incoming",IDC_NEVERINC,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,141,85,78,10



Preferences.cpp-----------------------------------------------------------------


search :

bool CPreferences::m_bStoreSearches;


add under :

//b4
bool CPreferences::m_neverinc;
//b4


search :


ini.WriteInt(L"PCPort", m_nPeerCachePort);


add under :


ini.WriteBool(_T("neverinc"), m_neverinc);


search:


m_bPeerCacheShow = ini.GetBool(L"Show", false);


add under:


m_neverinc=ini.GetBool(_T("neverinc"),true);



Preferences.h------------------------------------------------------------

search:

static bool m_bStoreSearches;


add under:


//b4
static bool m_neverinc;
//b4


PPgConnection.cpp-------------------------------------------------------


search :


ON_BN_CLICKED(IDC_PREF_UPNPONSTART, OnSettingsChange)

add under:


//b4
ON_BN_CLICKED(IDC_NEVERINC, OnBnClickedneverinc)
//b4



search:


CPropertyPage::OnInitDialog();


add under:


//b4
if (thePrefs.m_neverinc)
CheckDlgButton(IDC_NEVERINC,1);
//b4


search:


if (bRestartApp)
AfxMessageBox(GetResString(IDS_NOPORTCHANGEPOSSIBLE));

OnEnChangePorts(2);



add under:


//b4
if(IsDlgButtonChecked(IDC_NEVERINC))
thePrefs.m_neverinc = true;
else
thePrefs.m_neverinc = false;
//b4



search:


// TODO: actually we could offer the user to remove existing rules
AfxMessageBox(GetResString(IDS_FO_PREF_EXISTED), MB_ICONINFORMATION | MB_OK);
}
else
AfxMessageBox(GetResString(IDS_FO_PREF_FAILED), MB_ICONSTOP | MB_OK);
}


add under:


//b4
void CPPgConnection::OnBnClickedneverinc()
{
SetModified();
}
//b4



PPgConnection.h---------------------------------------------------------


search:


void Localize(void);
void LoadSettings(void);



add under:

//b4
afx_msg void OnBnClickedneverinc();
//b4



resource.h--------------------------------------------------------------


search:


#define IDC_EDITCOMMENTFILTER 2995
#define IDC_WIZZARDOBFUSCATION 2996

add under:

#define IDC_NEVERINC 2997



SharedFileList.cpp-----------------------------------------------------



search:


// khaos::kmod+ Fix: Shared files loaded multiple times.
CStringList l_sAdded;
CString tempDir;
CString ltempDir;
tempDir = thePrefs.GetMuleDirectory(EMULE_INCOMINGDIR);
if (tempDir.Right(1)!=_T("\\"))
tempDir+=_T("\\");

add under:

//B4n$h33 no share incoming
if (thePrefs.m_neverinc == 0)
{


search:

if( l_sAdded.Find( ltempDir ) ==NULL ) {
l_sAdded.AddHead( ltempDir );
AddFilesFromDirectory(tempDir);
}

add under:

} //b4 end


search:


if( l_sAdded.Find( ltempDir ) ==NULL ) {
l_sAdded.AddHead( ltempDir );
AddFilesFromDirectory(tempDir);
}
}
// khaos::kmod-


add under:


//B4n$h33 no share incoming
if (thePrefs.m_neverinc == 0)
{



search:


AddLogLine(false,GetResString(IDS_SHAREDFOUNDHASHING), m_Files_map.GetCount(), waitingforhash_list.GetCount());

HashNextFile();
}


add under:


}
// B4n$h33 end



emule.h--------------------------------------------------------------


searc:


class CemuleApp : public CWinApp
{
public:
CemuleApp(LPCTSTR lpszAppName = NULL);

// ZZ:UploadSpeedSense -->
UploadBandwidthThrottler* uploadBandwidthThrottler;
LastCommonRouteFinder* lastCommonRouteFinder;
// ZZ:UploadSpeedSense <-- add under: //b4 static bool m_neverinc; //b4 PartFile.cpp--------------------------------------------------------- search: SetStatus(PS_COMPLETE); // (set status and) update status-modification related GUI elements theApp.knownfiles->SafeAddKFile(this);

add under:


//b4 dazzle - remove downloaded file from share if file is not in a shared directory
if (thePrefs.m_neverinc !=0)
{

bool keepshared = false;
for (POSITION pos = thePrefs.shareddir_list.GetHeadPosition();pos != 0 ; )
{
CString tempDir = thePrefs.shareddir_list.GetNext(pos);
CString fileDir = GetFilePath();
fileDir = fileDir.Left(fileDir.ReverseFind('\\'));
if (tempDir.Right(1)!=_T("\\"))
tempDir+=_T("\\");
if (fileDir.Right(1)!=_T("\\"))
fileDir+=_T("\\");
if (!fileDir.CompareNoCase(tempDir)) keepshared = true;
}
//remove file from share if..
if (!keepshared) theApp.sharedfiles->RemoveFile(this);
}
//end



search:



// Criterion 3. Request state (downloading in process from other source(s))
//const bool critRequested = IsAlreadyRequested(uStart, uEnd);
bool critRequested = false; // <--- This is set as a part of the second critCompletion loop below add under: //b4 - dazzle - if part files are shared (share level <=1) then, if the part file is not in the shared //file list yet, try to complete a chunk as soon as possible. once the file is shared, normal chunk selection is good enough bool critRequested; if (thePrefs.m_neverinc <=1 && !theApp.m_neverinc->IsFilePtrInList(this))
critRequested = false; // <--- This is set as a part of the second critCompletion loop below else critRequested = cur_chunk.frequency > veryRareBound && // => CPU load
IsAlreadyRequested(uStart, uEnd);
//end

For auto reload shared files just add this in partfile.cpp

theApp.sharedfiles->Reload(); // g_m : auto reload share files


after

// 05-Jän-2004 [bc]: ed2k and Kad are already full of totally wrong and/or not properly attached meta data. Take
// the chance to clean any available meta data tags and provide only tags which were determined by us.
UpdateMetaDataTags();

Simple partfile push

In uploadclient.cpp
at the end of
int CUpDownClient::GetFilePrioAsNumber()

if(currequpfile->IsPartFile() &&
thePrefs.GetUpData_File() > (thePrefs.GetUpData_Partfile()*2) &&
thePrefs.GetUpSessionClientData() > thePrefs.GetDownSessionClientData())
filepriority *= 3;
return filepriority;

Push clients to upload

In UploadQueue.cpp search this part

InsertInUploadingList(cur_client);
}

theApp.uploadBandwidthThrottler->Pause(false);
}
}
and add

//Start Push
void CUploadQueue::AddUpload(CUpDownClient* client){
RemoveFromWaitingQueue(client, true);
theApp.emuledlg->transferwnd->ShowQueueCount(waitinglist.GetCount());
AddUpNextClient(_T("Push2Upload"),client);
}
// End Push

In UploadQueue.h search

bool IsDownloading(CUpDownClient* client) const {return (uploadinglist.Find(client) != 0);}
and add

void AddUpload(CUpDownClient* client); // Push

In QueueListCtrl.cpp search

ClientMenu.AppendMenu(MF_STRING | ((client && client->IsEd2kClient() && !client->IsFriend()) ? MF_ENABLED : MF_GRAYED), MP_ADDFRIEND, GetResString(IDS_ADDFRIEND), _T("ADDFRIEND"));
and add

//Start Push
ClientMenu.AppendMenu(MF_SEPARATOR);
ClientMenu.AppendMenu(MF_STRING | (client ? MF_ENABLED : MF_GRAYED), MP_ADDUPLOAD, _T("Push2Upload"), _T("WPUSH"));
//End Push

still QueueListCtrl.cpp search

case MP_BOOT:
if (client && client->GetKadPort())
Kademlia::CKademlia::bootstrap(ntohl(client->GetIP()), client->GetKadPort());
break;
and add

//Start Push
case MP_ADDUPLOAD:{
theApp.uploadqueue->AddUpload(client);
break;
}
//End Push

at the end of MenuCmds.h add

#define MP_ADDUPLOAD 999999 // Push //Note: choose instead of 999999 the next free value

Connected Server in Blue/bold/greyout

erverListCtrl.cpp:

search:

COLORREF crOldTextColor = dc.SetTextColor(m_crWindowText);


add under this:

//Xman our server in blubold
//+
//grey out dead servers (BlueSonic/TK4)
LOGFONT lfFont = {0};
CFont fontCustom;
if(theApp.serverconnect->IsConnected()
&& (cur_srv = theApp.serverconnect->GetCurrentServer()) != NULL
&& cur_srv->GetPort() == server->GetPort()
//&& cur_srv->GetConnPort() == server->GetConnPort()//Morph - added by AndCycle, aux Ports, by lugdunummaster
&& _tcsicmp(cur_srv->GetAddress(), server->GetAddress()) == 0)
{
//it's our server
GetFont()->GetLogFont(&lfFont);
lfFont.lfWeight = FW_BOLD;
fontCustom.CreateFontIndirect(&lfFont);

dc.SelectObject(&fontCustom);
dc->SetTextColor(RGB(0,0,192));
}
else //TK4 Mod grey out Filtered servers or Dead servers
if(server->GetFailedCount() >= thePrefs.GetDeadServerRetries() || theApp.ipfilter->IsFiltered(server->GetIP()))
{
GetFont()->GetLogFont(&lfFont);
fontCustom.CreateFontIndirect(&lfFont);
dc.SelectObject(&fontCustom);
dc->SetTextColor(RGB(192,192,192));
} else if(server->GetFailedCount() >= 2)
{ //unreliable servers
GetFont()->GetLogFont(&lfFont);
fontCustom.CreateFontIndirect(&lfFont);
dc.SelectObject(&fontCustom);
dc->SetTextColor(RGB(128,128,128));
}
//Xman end

Fakerank

Replace the sendrankinginfo() with this:

void CUpDownClient::SendRankingInfo(){
if (!ExtProtocolAvailable())
return;
UINT nRank = theApp.uploadqueue->GetWaitingPosition(this);

if (!nRank){
nRank = 500;
}
if (m_nOldFakeRank && !theApp.uploadqueue->GetWaitingPosition(this)){
int diffQR = rand()%10+1;
nRank = m_nOldFakeRank - diffQR;
//nRank = m_nOldFakeRank;
ModLog(true, _T("[FakeRank]Send Fakerank tu User '%s': Rank '%i', Previous Rank '%i'"), this->GetUserName(), nRank, m_nOldFakeRank);
m_nOldFakeRank = nRank;
}
else{
m_nOldFakeRank = 500;
}

if (theApp.uploadqueue->GetWaitingPosition(this)){
nRank = theApp.uploadqueue->GetWaitingPosition(this);
if (!nRank)
return;
}
Packet* packet = new Packet(OP_QUEUERANKING,12,OP_EMULEPROT);
PokeUInt16(packet->pBuffer+0, (uint16)nRank);
memset(packet->pBuffer+2, 0, 10);
if (thePrefs.GetDebugClientTCPLevel() > 0)
DebugSend("OP__QueueRank", this);
theStats.AddUpDataOverheadFileRequest(packet->size);
socket->SendPacket(packet,true,true);
}


This sends the fakerank only to users not in queue to change delte thise lines:

if (theApp.uploadqueue->GetWaitingPosition(this)){
nRank = theApp.uploadqueue->GetWaitingPosition(this);
if (!nRank)
return;
}

Bad Modstring Scheme

search:

return bIsMule;
}

void CUpDownClient::SendHelloPacket(){


add up all code on ----> return bIsMule;



//WiZaRd Bad Modstring Scheme
if( m_strModVersion.IsEmpty() ||
(m_strModVersion.Find(_T("CHN "))==0 && m_strModVersion.GetLength() > 7) ||
(m_strModVersion.Find(_T("Al!as"))==0) ||
(m_strModVersion.Find(_T("Apollo"))==0) ||
(m_strModVersion.Find(_T("Bowlfish"))==0) ||
(m_strModVersion.Find(_T("eChanblardNext"))==0) ||
(m_strModVersion.Find(_T("koizo"))==0) ||
(m_strModVersion.Find(_T("FRTK-EvoStar"))==0) ||
(m_strModVersion.Find(_T("ZZ-R"))==0) || //morph4u
(m_strModVersion.Find(_T("Neo-R"))==0) || //morph4u
(m_strModVersion.Find(_T("R-Mod"))==0) ||
(m_strModVersion.Find(_T("sivka"))==0) ||
(m_strModVersion.Find(_T("TK4 V"))==0) ||
(m_strModVersion.Find(_T("VeryCD easyMule"))==0) ||
(m_strModVersion.Find(_T("Xtreme 5."))==0 && m_strModVersion.GetLength() > 10)
)
{
;//do nothing
}
else
{
int iNumberFound = -1;
_TINT ch;
bool bBad = false;
for(int i = 0; i < bbad ="="" ch =" m_strModVersion.GetAt(i);" ch ="="" ch ="="" ch ="="" ch ="="" ch ="="" ch ="="">' || ch == L'(' ||
ch == L')' || ch == L'=' || ch == L'Ð' ||
ch == L'×' || ch == L'¾' || ch == L'½' ||
ch == L'Ü' || ch == L'Ü' || ch == L'$' ||
ch == L'ø' || ch == L'Ø' || ch == L'Ö' ||
ch == L'Ô' || ch == L'Ò' || ch == L'Õ' ||
ch == L'Ó' || ch == L'Ò' || ch == L'Ø' ||
ch == L'ö' || ch == L'ø' || ch == L'ü' ||
ch == L'Ú' || ch == L'Ù' || ch == L'Ü' ||
ch == L'Ü' || ch == L'Þ' || ch == L'Æ' ||
ch == L'ß' || ch == L'#' || ch == L'!' ||
ch == L'?' || ch == L'Ñ'
//fincan and others stranges strings end
)
{
iNumberFound = -1; //this is a simple hack to not punish mods like TK4 or Spike2 Smiley
continue; //skip "legal" chars
}
if( _istpunct(ch) || _istspace(ch))
bBad = true; //illegal punctuation or whitespace character
else if(_istcntrl(ch))
bBad = true; //control character in modstring!?
else
{
if(_istdigit(ch))
iNumberFound = i;
else if(iNumberFound != -1)
bBad = true; //that is: number out of row, e.g. not MorphXT v11.9 but Morph11XT.9
//if(_istalpha)
}
}
if(bBad)
Ban(L"[Bad ModString Scheme]");
}
//WiZaRd Bad Modstring Scheme end

Client Percentage in Download List

search:

void CDownloadListCtrl::DrawFileItem

add under:

CString buffer;


search:


RECT rec_status;
rec_status.left = 0;
rec_status.top = 0;
rec_status.bottom = iHeight;
rec_status.right = iWidth;
pClient->DrawStatusBar(&cdcStatus, &rec_status,(pCtrlItem->type == UNAVAILABLE_SOURCE), thePrefs.UseFlatBar());

add under:

//b4 Client percentage Start
if (pClient->GetPartStatus() && pCtrlItem->type == AVAILABLE_SOURCE)
{
float percent = (float)pClient->GetAvailablePartCount() / (float)pClient->GetPartCount()* 100.0f;
if (percent > 0.05f)
{

COLORREF oldclr = cdcStatus.SetTextColor(RGB(0,0,0));
int iOMode = cdcStatus.SetBkMode(TRANSPARENT);
buffer.Format(_T("%.1f%%"), percent);
CFont *pOldFont = cdcStatus.SelectObject(&m_fontBold);
#define DrawClientPercentText cdcStatus.DrawText(buffer, buffer.GetLength(),&rec_status, ((DLC_DT_TEXT | DT_RIGHT) & ~DT_LEFT) | DT_CENTER)
rec_status.top-=1;rec_status.bottom-=1;
DrawClientPercentText;rec_status.left+=1;rec_status.right+=1;
DrawClientPercentText;rec_status.left+=1;rec_status.right+=1;
DrawClientPercentText;rec_status.top+=1;rec_status.bottom+=1;
DrawClientPercentText;rec_status.top+=1;rec_status.bottom+=1;
DrawClientPercentText;rec_status.left-=1;rec_status.right-=1;
DrawClientPercentText;rec_status.left-=1;rec_status.right-=1;
DrawClientPercentText;rec_status.top-=1;rec_status.bottom-=1;
DrawClientPercentText;rec_status.left++;rec_status.right++;
cdcStatus.SetTextColor(RGB(255,255,255));
DrawClientPercentText;
cdcStatus.SelectObject(pOldFont);
cdcStatus.SetBkMode(iOMode);
cdcStatus.SetTextColor(oldclr);

}
}
//b4 Client percentage End

Detect Random and Custom ModString

This code is dangerous because it's ban all client with modstring that have not this in nick "«" to the exclusion of these mods VeryCD, Neo Mule, X-Ray, ZZUL, AcKroNiC, AdunanzA, sivka. i must only add this in my nick and i am allowed. The code is shit!

search it in BaseClient.cpp


return bIsMule;
}

void CUpDownClient::SendHelloPacket(){
if (socket == NULL){
ASSERT(0);
return;
}

add up this :

if(!m_strModVersion.IsEmpty()
&& _tcsrchr(m_pszUsername, _T('«')) == NULL
&& (_tcsstr(m_strClientSoftware,_T("eMule v0.49")) || _tcsstr(m_strClientSoftware,_T("eMule v0.48")))
&& !_tcsstr(m_strModVersion,_T("AcKroNiC"))
&& !_tcsstr(m_strModVersion,_T("AdunanzA"))
&& !_tcsstr(m_strModVersion,_T("Al!as"))
&& !_tcsstr(m_strModVersion,_T("AnalyZZUL"))
&& !_tcsstr(m_strModVersion,_T("beba"))
&& !_tcsstr(m_strModVersion,_T("eChanblardNext"))
&& !_tcsstr(m_strModVersion,_T("eMuleFuture"))
&& !_tcsstr(m_strModVersion,_T("Magic Angel"))
&& !_tcsstr(m_strModVersion,_T("NetF WARP"))
&& !_tcsstr(m_strModVersion,_T("Neo Mule"))
&& !_tcsstr(m_strModVersion,_T("R-Mod"))
&& !_tcsstr(m_strModVersion,_T("RaJiL"))
&& !_tcsstr(m_strModVersion,_T("sivka"))
&& !_tcsstr(m_strModVersion,_T("SharkX"))
&& !_tcsstr(m_strModVersion,_T("SilverSurfer"))
&& !_tcsstr(m_strModVersion,_T("Spike2"))
&& !_tcsstr(m_strModVersion,_T("TK4"))
&& !_tcsstr(m_strModVersion,_T("VeryCD"))
&& !_tcsstr(m_strModVersion,_T("X-Ray"))
&& !_tcsstr(m_strModVersion,_T("ZZUL"))
){
theApp.QueueLogLineEx(LOG_ERROR, L"Random Modstring Ban - %s", DbgGetClientInfo());
Ban();
}

eMule 0.49c StulleMule v6.2


eMule v0.49c StulleMule v6.2:
------------------------
- 26.04.2009 -
-------------------------------------------------------------------------------
based on eMule 0.49c MorphXT 11.3 compiled with vs2005 SP1

Added: (Design Settings) Shareable file style for SharedFilesCtrl [Stulle]
Added: Make NT Service strings changeable [Stulle]
Added: Option to use ASFU for folders including single shared files [Stulle]
Added: Option for time between automatic reloads [Stulle]
Added: First awesome StulleMule Installer [leuk_he/MorphXT]
Added: Turkish translation (partially) [omeringen]

Changed: Only check "Control download priority" code every tenth cycle [Stulle]
Changed: Updated Design Settings for new code (also improves implementation [Stulle]
Changed: Min small files push size to 1 kB [Stulle]
Changed: Small files push size slider kB based (makes keyboard input usable) [Stulle]
Changed: Introduced pre-processor definitions for various features [Stulle]
Changed: Global SysInfo RAM stats will support usage of more than 4GB [Stulle]
Changed: Write FileSettings.ini sequentially (faster) [Stulle]
Changed: Always wait 5 sec after sending save req before saving file settings [Stulle]
Changed: Only reset ASFU when needed [Stulle]
Changed: ASFU uses special bWatchSubtree flag for share with subdir [Stulle]
Changed: ASFU only checks top most shared with subdir folder On Device Changed [Stulle]
Changed: ASFU only monitors dirs that exist on reset/init [Stulle]

Updated: Anti-Leecher-Lists (DLP v37) [zz_fly/more]
Updated: Following language files: French [Nicholas_FR]; Spanish [guijarrelson];
Italian [v-x-vendetta]; German [Stulle]; Chinese (P.R.C.) [zz_fly]

Fixed: (Design Settings) Only display if we got score remotely for DL clients [Stulle]
Fixed: Save known and FileSettings threads were not terminated properly [Stulle]
Fixed: Default color for source graph [Stulle]
Fixed: Changing the small files push size reset changes in the Tree options [Stulle]
Fixed: ASFU endlessly reloaded when monitored directory disappeared [Stulle]

eMule v0.49b StulleMule v6.1:
------------------------
- 17.09.2008 -
-------------------------------------------------------------------------------
based on eMule 0.49b MorphXT 11.1 compiled with vs2005 SP1

Added: PowerShare support for WebInterface [Stulle]
+not for light, use the new WebInterface files
Added: Color selection for sub heading text (internal) [Stulle]

Changed: Localize Source Graph group box [Stulle/thx pennyliu123]
Changed: Localize Push Small Files label above slider [Stulle/thx pennyliu123]
Changed: Localize TBH: MM group item [Stulle/thx pennyliu123]
Changed: Localize "12h" string for Release Bonus [Stulle/thx pennyliu123]

Changed: Made Compat clients stats code prettier [WiZaRd]
Changed: Improved resizing of cats tab in SearchResultWnd [Stulle]
Changed: Using official code for proper background of Icons with text [Officials]
Changed: (Morph) Display NNS in UploadListCtrl [Diabolo111]

Updated: Bad Nick List (DLP v33) [zz_fly/JvA/DLarge]

Fixed: Anti-XS-Exploit (v2 answers) [fafner]
Fixed: ATWL: (minor) not working split button after starting unsplitted [fafner]
+ ATWL = Advanced Transfer Window Layout
Fixed: ATWL: (minor) list count for upper splitted lists did not update [fafner]
Fixed: ATWL: (minor) non-downloads lists changed height between split/unsplit [fafner]
+ running with 120 dpi fonts and using odd screen sizes
Fixed: Readded TextToSpeech support for notifies [Stulle]
Fixed: Anti-Uploader-Ban case 2 and 3 (horribly old...) [Stulle]
Fixed: Wrong friendslot tag (used 0x66 like in the alpha phase) [Stulle]
+ importing friendslots when upgrading from v6.0
Fixed: Missed some files when merging [Stulle]
Fixed: (minor) Wrong check mark for A4AF in DownloadList File menu [Stulle/thx erdem444]
Fixed: (Morph) Corrupted userhash ban [taz-me]


eMule v0.49a StulleMule v6.0:
------------------------
- 20.05.2008 -
-------------------------------------------------------------------------------
based on eMule 0.49a MorphXT 11.0 compiled with vs2005 SP1

Added: MenuXP Sub Heading [fafner/Stulle]
Added: Advanced Transfer Window Layout [Stulle/ideas from fafner]
Added: Threaded File Settings Saving [Stulle]
+ keeps the GUI responsive while saving
Added: Threaded Known Files Saving [Stulle]
+ keeps the GUI responsive while saving
Added: DirectX (Preview feature) support for VS05 [eMF]

Changed: Save file settings when changing FollowTheMajority setting [Stulle]
Changed: Save file settings when new file added [Stulle]
Changed: File settings save thread waits 5 seconds before launching [Stulle]
Changed: Context menu Sidebars show mod version [Stulle]
Changed: Context menu title shown as sub heading [Stulle]
Changed: Creation of TBH: MiniMule (won't show up on startup now) [Stulle]
Changed: Maintain splitter state on change TransferWnd toolbar settings [Stulle]

Updated: Anti-Leecher-Lists (DLP v32-pre) [Xman/Myth/JvA/DLarge]

Fixed: Some memleak fixes and other fixes [fafner]
Fixed: Memleak fixes for System info [WiZaRd]
Fixed: (minor) Permission context menu in DownloadListCtrl [Stulle]
Fixed: (minor) On/Off button for Server design settings [Stulle]

Advanced Transfer Window Layout:
+ Any two lists can be viewed at the same time
+ Downloading file list can only be viewed in the upper part
+ If list shown in the upper half is already in the lower half the lower
list changes to next list
+ To disable/ enable press the split button/ item

StulleMule主页下载

ECB Mod 0.8 by TrOnYx


Changelog v0.8:
ADDED: Upmanagment[Tr0nYx](isn´t used for PS & community)
ADDED: send real modversion to community[Tr0nYx]
ADDED: Community[Tr0nYx]
ADDED: Community to designsettings[Tr0nYx]
ADDED: Fakerank[Tr0nYx](only for clients not in queue)
CHANGED: Boost usefull clients[Tr0nYx]
FIXED: sorting bug in downloadlist[Tr0nYx]
ADDED: remove useless clients in waitingqueue, except those are no PS or Community-Clients[Tr0nYx]
CHANGED: some Bitmaps to those from Seven2Up ;) [Tr0nYx]
ADDED: Friend Note[MorphXT]

Changelog v0.7:
REMOVED: IPFILTER
ADDED: ED2K Updates [???]
ADDED: Retry failed connection Attempts [Xman]
FIXED: Some things around CommunityList [Tr0nYx]

Changelog v0.6:
CHANGED: SLS from Xmans to X-Ray´s
ADDED: Sourcecache[X-Ray]
ADDED: UpdateNodesDatFrequently[Avi3K]
ADDED: AutomaticKademliaFirewalledRecheck[Wizard]
ADDED: PartCompletionSpeedUp[BlueSonicBoy]
ADDED: Variable Compression[Xman/NetF]
ADDED: Show Compression[Tarod/MorphXT]
ADDED: DoubleLucas[Slugfiller]
ADDED: HashProgress[O2/Xtreme]
ADDED: CollectionHalted
ADDED: StandbyDL[Xanatos]
ADDED: SuspendCollecting[Xanatos]
ADDED: FIleStatusIcons[JvA]
ADDED: OnlyDownloadCompleteFile[shadow]
ADDED: ModIDInfo[Xanatos]
ADDED: BetterSpeedDisplay[Xanatos]
FIXED: Bug in Modthiefdetection (Morph4u???)[Tr0nYx]
ADDED: TBHMM[taken from StulleMule]
ADDED: Community List[Tr0nYx]
CHANGED: Some things @ FileFeedback(if you choose copy feedback for forum it´s colored;))[Tr0nYx]
ADDED: Mod Icons[taken from StulleMulle]
ADDED: Speedgraph[Myth88]
ADDED: Manual Source Handling[Xanatos]
ADDED: Code improvments[Xanatos]
FIXED: CleanUpClientList Fix[Xanatos]
FIXED: XsInconsistency Fix[Xanatos]
FIXED: lastPublishED2KFlag Fix[Xman]
FIXED: DestroyMenu Fix[Xanatos]
ADDED: HideOS & Share only the Need[Slugfiller/ MorphXT]
ADDED: Don´t HideOS for community[Tr0nYx]
ADDED: Spread Bars[Slugfiller/ MorphXT]
ADDED: See chunk that we hide[SiRoB]
FIXED: Never punish community[Tr0nYx]
FIXED: MultiSort[SlugFiller]
FIXED: possible Appshutdown Bug around argos[Tr0nYx]
ADDED: powershare for partfiles[Tr0nYx]
ADDED: DLULPrioExtension[taken from X-Ray]
CHANGED: PrefSliderColors[Tr0nYx]
REMOVED: Unused AICH-Hashes[Xman]
FIXED: don't overwrite bak files if last sessions crashed[Xman]
REMOVED: extended Upkick[umeK]
ADDED: automatic uploadprotection calculator[Tr0nYx](have to test it)

Changelog v0.5:
ADDED: MissingPrefs[NeoMule]
ADDED: PrefSlider[X-Ray](changed Color)
ADDED: Dont draw uploadcolor for powershareFiles[Tr0nYx(thx to MarioHH)]
FIXED: Costum SlotSpeedSettings[Tr0nYx]
FIXED: Some things @ ModPrefpage[Tr0nYx(thx to MarioHH)]
ADDED: Some Strings to antileech.ddl & some things to leechers.dat
ADDED: Vagaa Detection[zz_fly]
ADDED: Drop Leecher @ drop Bad(drops only leecher you´re not downloading from[Tr0nYx]
FIXED: Bug in QuickStart[Tr0nYx]
ADDED: DropSources[Xanatos]
ADDED: Auto Hard Limit[Wizard]
ADDED: IpFilter AutoComplete[Shadow2004]
ADDED: Ed2K-Updates[Shadow2004]
ADDED: ManualSourceDrop[Xanatos]
ADDED: Clipstat[Wizard]
ADDED: Remote Queue Satus[Yun.SF]
ADDED: Total up/Down in uploadlist[Xman]
ADDED: Powershare[Wizard]
ADDED: ReleaseSlot Managment[Xanatos]
ADDED: Mark community in lightblue[Tr0nYx]
ADDED: Mark powershare Files in red[Tr0nYx]
ADDED: QuickStart[Xanatos]
ADDED: Reask on IDCHange[Xanatos]
ADDED: FileFeedback[Xanatos(Little Fix Tr0nYx)]
ADDED: some Fixes & Optimations from X-Ray
ADDED: SplashscreenEx[NeoMule]
ADDED: Clientpercentage[Fafner/Slaham]
CHANGED: Some things around creditsystem[Tr0nYx]
ADDED: eChanblard Fake[umek/updated Tr0nYx]
ADDED:emulate Community Nickaddons[MagicAngel]
merged Bandwidthcontrol & uploadbandwidththrottler to the newest one
from NeoMule[Tr0nYx]
Added: CommunitySlotSettings[Tr0nYx]
Fixed: Added Argos fixes from Morph4u(thank u)
Changed: Credistsystem(based on Xman´s(simply modified by me)

Added: Bandwidthcontrol[Pawcio/Taken from NeoMule]
Added: Uploadbandwidththrottler[NeoMule]
Added: European community[Tr0nYx/Nightsky10]
++Sharelevel(only partfile, nothing, all(to community is always shared))[umek]
++CommunityMemberCounter[Nightsky10]
Added: accurate speed measure[Xanatos]
Added: Diffqr[X-Ray]
Added: Uploadcolors[??]
Added: NAFC[Xman/Xanatos]
Added: Pinger[Xanatos]
Added: NeoFile-ScoreSystem[Xanatos]
Added: fixes from xray
Added: SLS[Xman/enkeyDev]
Added: Ip2Country File Origin[Wizard]
Added: Kick-System[umeK]
FIXED: Destroy downloadqueue before knownfiles to prevent crash[Dazzle]
many many thx to my Betatesters MarioHH, system28 and B@nsh€€ & to umeK 4 the sharelevels
Based upon emule 0.49b Argos Edition 1.0[morph4u](thx for this great work)

绿色包BIN

Shareaza 2.4.0.0 SBI-Leecher 1.0.0


v1.0
+ SBI-Leecher option page
+ No upload (separated options for torrent, ed2k, Gnutella)
+ No Share / No publish files to network (ed2k, Gnutella)
+ Upload only partial files (ed2k, Gnutella)
+ eMule 0.49b emulation on ed2k network
+ Spoof BitTornado clients id
+ No send completed flag on download completed (torrent)
+ Settable number of peers requested on tracker update
+ Fake Tracker reports: fake ratio
+ Fake Tracker reports: fake upload multiplier
+ Fake Tracker reports: report 0 upload and 0 download
+ Fake Tracker reports: report only upload (shown as a seeder)
- Ed2k Ratio
- Setting limitations
* Tweaked some base options
* Some images (Manas)

eMule 0.49c SBI Leecher v1.9 by Butcho


v1.9
-add multi server connect and reask [switchable]
-add auto ask after sources [switchable]
-add auto drop NNS/FQ/TM sources [switchable]
-add ask after sources time [switchable]
-add NNS/FQ/TM drop times [switchable]
-add no queue [switchable]
-add queue only for friends [switchable]
-set default upload rule to hidden/friends [switchable]
-set default queue rule to hidden/friends [switchable]
-add upload rules per file [transferwindow | sharedfiles]
-add queue rules per file [transferwindow | sharedfiles]
-add hide emule[switchable]
-add filename disparity check[switchable]
-some other code changes
-update code to 0.49c

v1.8
-add "generate new rsa key" button [downloadlist] {thx sarutobi}
-add auto generate new rsa key [switchable]* {thx sarutobi}
-add emulate community nick addons [switchable]*
-add no share partfiles [switchable]*
-add shut down emule when downloads complete [switchable]*
-add shut down pc when downloads complete [switchable]*
-add fake check (searchwindow)
-add update function for fakes.dat [updatemenue]
-add ban/server rotation/rsa key generate time [switchable]*
-add xs/kad/srv/srv-udp reask times [switchable]*
-add control settings menue (preferences)
-changed max queue / max filebuffer size [advanced options]*
-changed some icons
-some other code changes

v1.7
-add auto server rotation [swichable]* {thx g_m}
-add uploadslotcontrol [connection preferences]
-add "drop ranking QR > 3000" buttons [transferwindow | downloadlist]
-add "drop NNS/FQ/TM sources" buttons [transferwindow | downloadlist]
-add "push client" button (Waitingqueue)
-add download in color[switchable]*
-show Total/ED2K/KAD/XS source statistics [transferwindow]
-show NNS/FQ/TM source statistics [transferwindow]
-changed sidebanner {thx Manas}
-some other code changes
-updated code to 0.49b

v 1.6
-upload only to friends [switchable] *
-disable [XS] send [switchable] *
-add "load/save sources" button [transferwindow | downloadlist]
-add "ask after new sources" button [transferwindow | downloadlist]
-add "Update" menue for ipfilter and ip2country (options)
-add ip2country (fix coded)
-add sidebannder [options]
-show cpu/mem/server [transferwindow]
-show splash on exit (fix coded)
-changed fake rank code {thx g_m}
-some other code changes...

v 1.5
-emulate other clientsoftware (switchable) *
-don't send complete file status (switchable)*
-fake rank (switchable)* {thx g_m}
-auto reload shared files if download is complete (fix coded) {thx g_m}
-no upload (switchable)*
-no share any files (switchable)*
-no share the incoming folder (switchable)*
-don't send filelist to server (switchable)*
-don't publish filelist in KAD (switchable)*
-add no ratio (fix coded)
-add unlimited search results (fix coded)
-reask client for download (downloadqueue)
-kick all Peers Button (uploadqueue) **
-kick & bann buttons (uploadqueue | downloadqueue | waitingqueue)
-clear banlist buttons (Uploadqueue | downloadqueue | waitingqueue)
-add block spammers (switchable)*
-add "SBI" menue" (preferences)
-add forum link button (maincontrollbar)
-add new splashscreen {thx Manas}
-changed min queue size(advanced options)
-based on emule 0.49a


如果按照最小值进行文件reask,那么不知道该有多么疯狂!

eMule 0.49c X-Mod 1.5.0.1 by Dolphin


eMule X Mod, based on eMule Xtreme

X Mod have removed code for Win9x compatibility. It will be only running on Windows 2000 or higher, and will as far as possible to support Wine.

X Mod is not a Mod with many unique features. The project is to improve all aspects of eMule's details and to enhance the user experience.
In addition to the possession of all the features of Xtreme 6.1, there are some features from other Mods.

X Mod has an sub-project eMule Lite. If you care about the memory usage, you can try it.

X Mod mainly enhanced the following features of eMule Xtreme:
+ download cache settings
+ file type recognition
+ text and type filter in download history
+ shared files control
+ speed up eMule's loading

Changelog:

Fixed:
issue in DoSwap
Statistics issues in old X-Mod
Often reload sharedfiles when file not found
Scroll bar context menu issues of mulelist
Wrong Folder Icon in directory tree ctrl
memleak when serverconnection fail
Small Bug in Zipfile.cpp (WiZaRd)

Added:
Remember Transfer Cat Tab
Anti-Random Modstring
official UPnP lib conditional compile

Changed:
Improved ClientCreditsList and ACAT optimization
Improved CDownloadListCtrl::AddSource
skip downloading source when A4AF to other
Don't remember AICH when it is not referenced by knownfile
Improved Add and Remove UPNP
Don't force to share files in Incoming or Cat Incoming when it is not known
Update Integrated DLP to v37
vectors call reserve() first, and replace clear() with std::vector().swap()
Only exclude file if it was not single shared (Stulle)

code from Xtreme 7.2

* - change: change default user dir mode to ApplicationDir
* - add: support Ctrl+C and Delete handling in downloaded history list (Stulle)
Copy ed2k links into clipboard using Ctrl+C and Delete files on hitting the del key.
* - fixed: fix crash in downloading sources handling (Enig123)
* - fixed: fix possible overflow in processing of upload queue and download queue
* - fixed: fix crash at shutdown (MorphXT)
* - fixed: minor issue in case of shutdown while still hashing (WiZaRd)
* - fixed: minor issue with friends handling (WiZaRd)
* - restore: Xman's improved socket closing
Althought it use more memory(10~20MB), but it is necessary to some kind of user.


Homepage: http://emulex.sourceforge.net.nyud.net/?en-us

源码包SRC: http://voxel.dl.sourceforge.net/sourceforge/emulex/eMule0.49c-X-Mod1.5.0.1-sources.7z
绿色包Bin 32 bit: http://voxel.dl.sourceforge.net/sourceforge/emulex/eMule0.49c-X-Mod1.5.0.1-x86-bin-only.7z
绿色包64 bit: http://voxel.dl.sourceforge.net/sourceforge/emulex/eMule0.49c-X-Mod1.5.0.1-x64-bin-only.7z

X-Mod是第一个能封禁以色列AppleJuice Community(随机版本号)的驴。

eMule 0.49c Xtreme 7.2 Custom XtraSky


SouRs Code: zz_fly (C++ 7.1 VS 2003 compatible)

Changed: solution, project for latest C++ 9 Compiler
Updated: Done src compatible for VS 2008 SP1 (C++ 9.0)
Removed: Droped Win 95 support (compatible from windows 2000 SP4 - windows 7 rc)
Removed: compiler debug
Updated: emule default Libs, WMFSDK9
Updated: miniupnp from version 1.60 2008/02/21 to version 1.80 2009/04/17 http://miniupnp.free.fr/files/changelog.php?file=miniupnpc-1.3.tar.gz
Some libs and compile tweaks to reduce output filesize to 5,24 MB (5.499.904 bytes)
electro Mule could be Xtreme castrated of 1 MB less filesize weight as the elephant Mule.
Improved: removed open websites for updates // works without visit links
Improved: DynamicAntiLeech ProTection DLL: added some Chinese GPL/GNU Breaker Leecher MOds without SRC or fake dl links to src, removed GPL/GNU conform Mods with SRC such as Spee64's HardStyle XL,... and harmless mods like Wizzard's Flowerpower, mods without hardcoded comm (boost)
Feature: manual remove single source in download list // In Ban Funktion, if DLP failed in some cases can't detect leechers!
Feature: manual Removing client from upload in known Clientlist // manual Stop Uploading to Single Client if state is uploading
Fixed: old ban code use in queuelist to make unban from queue possible
Fix: twice vista icon in Mule.ico removed, it's in Mule_Vista.ico get added by // ReplaceVistaIcon
Improved: Powershare Downloading Files (Partfiles)

立即下载