Code:
An eMule Mod based on "eMule ~ DaZZle Mod 'by xpMule'"
------------------------------------------------------
Ver 0.49b quick merge to 0.50a by PuPet
Ver 0.49b another quick merge to 0.49b by Nick75
Ver 0.49a Really quick und dumb merge to eMule 0.49a by Nick75.
Changelog for eMule ~ DaZZle Mod 'by xpMule':
---------------------------------------------
Changelog:
----------
Ver 0.48a Updated by NoXZ
Ver 0.47a (By xpMule) v1.03
- compiled with Netfinity's (Pre XP/SP2) DLL Fix for VS-2003.
- Changed dazzle options tab dialog to mention warning about high cpu / memory usage.
- moved some dazzle code into emule files and removed the now un-needed source files.
- increased "knownClientsMap HashTable" to larger prime number.
- added data type code on many functions to prevent compiler warnings.
- MorphXT 8.5 eMule Visual Studio project files were used as a template for builds. (athlon/p4, beta etc)
- Visual Studio project files have been cleaned of any invalid information.
- 3 Builds have been compiled and tested with out any errors or warnings, Beta, Debug and Release.
Ver 0.47a (By xpMule) v1.02
- added new inverse creditsystem tweak posted by Dazzle.
- compiled with Netfinity's (Pre XP/SP2) DLL Fix for VS-2003.
Ver 0.47a (By xpMule) v1.01
- "Large Files" support fix on one function.
- Added version/name Strings in few dialogs
- minor code changes/improvements
Ver 0.47a (By xpMule) [Test Client]
- Updated core to 0.47a (ported dazzle code to stock 0.47a base files)
- Integrated "Large Files" support into DaZZLE functions/code.
- Minor visual improvement to DaZZle Dialog in options tab ?
- Re-Added speech engine.
Ver 0.47a Official Released
---------------------------
- Dazzle decides to take a break on the mod for a while.
ver 0.46c
- Updated core to 0.46c
- Updated zlib to 1.2.3
- Implemented netfinity's fix. Dazzle mod should now work on pre SP2 systems again However, I'm not able to test it
- The title bar now shows 'DaZZle Emule' instead of Emule
- USS now defaults to off, but if you do not give your connection info, new official code will automatically turn it on
- The installer will now always overwrite any existing binary. Useful when installing dazzle mod on top of a newer version of emule.
- Disabled version checker
ver 0.46a
- Updated core to 0.46a
- Updated zlib to 1.2.2
- Removed speech engine
- Incorporated Wizardofdos's fix of faster endgame code
- Full sharing is now the default sharing mode.
ver 0.45b.r4
- Bugfix in inverse credit system
- Added leecher protection. At least 1MB needs to be uploaded before they'll get a bonus from the inverse CS
- The upload kick @ 1.1mb is now random between 1.0 and 1.1 mb to make future detection more difficult
- A bug in official code caused all blocks to be reserved for download by one source when lowering the number of requests from 3 to 1. This happened when 9.3mb was left to download
- Global server search is now done up to 400 sources
- Chunk download selection algorithm is adapted so that it tries to complete the first chunk asap. This will allow the mod to start sharing faster and improve overall download speed.
- By default, USS is automatically disabled when the internet connection is gone. Removed this unwanted functionality
- There was an issue with the code that kicks clients that do not report QR: When a download finishes, the source has no QR for a while, it was then removed by this code. I changed this so that clients that have transferred data will never be auto-kicked from the download queue
ver 0.45b.r3
- Added custom splash screen and preferences icon (credits to JB)
- fixed: Queue-full sources were incorrectly dropped when not necessary and readded as an 'unknown' status source
- Files with <=50 will no longer drop NNP sources - Only 1 queuefull source is now dropped per second at maximum - Faster endgame: When download is finishing, slower sources will be dropped first instead of the faster ones (official emule behaviour) - Faster endgame: If a file has <> maxglobalsourcecount * 0.9
- NNP and QueueFull sources now only get a bonus of 2x (previously 5x) in the upload queue
- Sources are now kicked from upload if another client has a score 2x higher (previously 3x). This is not for clients who will be kicked at 1.1mb (they will always get their 1.1mb and be kicked once their upload starts).
- Dazzle settings were incorrectly written to the 'peercache' section in the ini file. This has been fixed, but you'll have to reconfigure your dazzle settings (they will be back on default on upgrade).
- When the upload queue is nearly full, clients with a low score will be dropped automatically.
- queuefull and NNP sources are starting to be dropped when sources gathering speed becomes slower.
- Due to the low resolution of the system timer, maxglobalsources got an inaccurate estimation, causing a value that was too high. I changed this so that it'll get a more realistic value
- Fixed a crash caused by adding sources to partfiles that are completing
- Fixed a crash that happened when we are send an invalid peercache packet (official code bug)
- Fixed a semi-freeze-crash that happend when an invalid peercache packet is send to us (again, official code bug)
- Fixed up the dazzle property page. Apply button now finally working correctly
- The auto-adjust setting now increases your settings right away when hitting 'apply', to adjust for the maxsources global count you configured.
- With the new queue cleanup, it's safe to use a 2000 limit queue. This saves a lot of cpu time for calculating the maxclientscore. New default for this setting is 2000
ver 0.44b.r2
- Compiled with unicode support
- Due to an integer division in the expression that calculates the remaining waiting time for sources, the estimate got rounded down and got very unprecise, or even gives an 'unknown' status after a while. This has been fixed. It caused the waiting time optimisation to stop functioning after a few hours.
- Unlimited search results (though you should cancel your search once you found what you have to save server resources)
- Noneeded parts and queue-full sources now get a 50% penalty when calculating score if they are in the upload queue
- Sources with a low expected waiting time are now preferred when uploading to them.
- Default nickname changed to 'Dazzle Mod' (Using a non-default nick will make you undetectable)
- Sources that are being uploaded to are no longer being reasked for a queue score every 10 minutes, but instead immediately after the upload is finished
- A bug in emule caused downloading files that failed to be shared (because sharing is disabled) to be shown in the shared files list anyway. This was only a visual bug. The files were not actually shared.
- The biggest bottleneck with many sources, source addition, is now done async in a delayed fashion. This allows for fast source gathering at the start and slower when it takes more time. Emule will no longer give as many freezes when you increase the number of sources per file.
- Optimized the addition of new sources. Adding sources should take less time and the mod is able to sustain way more global sources then before.
- Added a new 'global' maximum sources count. It works just like maxsourcesperfile, only globally. Since the maximum sources is a global limit you can now increase the max sources per file to 10.000 and let the global limit do the optimisation work instead (all optimisation for removing slow sources also work for the global limit).
- You can set the global max sources count in the dazzle dialog, or let it be adjusted automatically (currently a 'safe' source cap of 2000 is default)
- Estimated waiting time is now updated in real time (however, this makes it seem more accurate then it is. It's really just a rough estimate)
- Moved the 'client removed from download queue due to slow queue progression' to the debug log
- Clients are now kicked from upload if the clients in the upload queue have a score that is at least 3* higher. This should prevent clients how want 9.3mb of data to clog up the upload line for a long time if there are more needy clients waiting.
- Previously, some legacy code of mine prevented clients from getting into upload if the queue was empty. This could cause some unnecessary drops from the uploads. They are now immediately added again (as in the official client).
- Added an 'auto adjust' button to the max sources. It'll automatically adjust max sources to your processor, but also update the following settings: maxsourcesperfile = maxsourcesglobal; maxconnectionsper5secs = maxsourcesglobal / 100; maxconnections = maxconsper5secs * 15.
If your connection can't handle many connections per second, disable auto and use these guidelines:
maxconnections >= 15* maxnewconnections
maxsourcesglobal <= maxconnectionsper5secs * 100 maxsourcesperfile => maxsources global (let the global limit be a cap instead of the file limit)
- default queue size back to original 5000 sources to save cpu usage
- clients from whom we can gain a 10x ratio with 1.1mb will get 10% bonus (to differentiate them from the clients who have uploaded so much that they're back at 1x ratio again). As a side effect, this will give them yellow 'credits' icons. This is an easy way to recognize 'kick at 1.1mb' clients. This also causes your ratio on these clients to show up as '0.9'. This is not correct, it really is 1.0. (but yet another way to recognize them).
- Fixed a crash bug in the official emule source which could cause dropped sources who were readded to be deleted without removing them from the partfile.
- Fixed a bug by me that caused partfiles not to be added to the knownfilelist on completion in downloadonlysharing or nosharing mode and consequently they were not cleaned up on program exit
- global source searches are now only done for files with a sourcecount <> 0.8*filelimit, source that are queue-full or noneeded parts are dropped after two minutes. (this was changed in 0.43b.r2, but I forgot to mention it)
- Fixed a bug when uploading to clients when there's not credits to gain: Clients with 1.1mb upload with be allowed into the upload queue, but immediately got kicked when allowed to download
- New source info in downloadlist under 'remaining' column: Estimation until client will start its upload
- New download optimization: the 20% of sources with a long estimated waiting time until upload will get dropped if the number of sources > 0.9 * filelimit. This will give a speed increase when the number of sources is limited by the hard file limit.
- Sources that do not give queue ranking are dropped when the number of sources > 0.9 * filelimit. This is done because it's not possible to give this source a value and we would prefer a source where it is possible to estimate the waiting time.
ver 0.43b.r2:
- Faster sources finding through source exchange. Will find ALL sources available in shorter time. This will increase initial download speed and overal download speed.
- Disabled SoftMaxSources cap. This means the number of sources you can find is only capped by the HardMaxSources (configurable in the options) and the real number of sources available throughout the network. However, the amount of CPU time emule needs to handle sources increases quadratic with the amount of sources it has. A 10000 hard source limit is my recommended max. More sources will speed up your downloads, but will also slow down your computer. If your computer can't handle the load, downloads will be slower. You will notice this by 100% cpu load and freezes in the emule interface. Lower the max. number of sources to solve this. The default values shouldn't give any problems. This tweak will increase downloadspeed considerably, but only if you don't push it. The slowdowns will result in freezes and hiccups, but after a while, source searching will slow down and should have less of an impact
- Increased speed at which emule removes QueueFull sources when the number of sources is >0.8 * hard sources limit. This will increase the download speed slightly, by removing useless sources quickly so they can be replaced by useful sources.
- A new 'dazzle' settings page
- Share level setting on the settings page: you can now disable sharing, or reenable it (or use partfile sharing only, the old setting)
- You can now specify if you want to share to nonmule clients (because they don't have credit system). This was disabled in previous versions and now enabled by default
- You can now specify if you want to upload to clients with whom you've no credits to gain. This was disabled in previous version, but now enabled by default.
- You can now select if you want to publish files to networks. Publishing helps you spread faster as a source and is required if you want to share files you're not downloading. The chance if being caught sharing is highter though. Your client will still spread on a source for the files you are currently downloading through passive source addition and source exchange on other clients. (this is a process that happens on the network, only thing to prevent this is to completely disable sharing).
- The default settings for fresh installation now have better default settings and USS enabled by default. No tweaking should be necessary after installation (the maximum sources setting has not been tweaked yet, you should do that manually).
ver 0.43b: Merged with official 0.43b
ver 0.43a: Merged with official 0.43a
ver 0.42g:
- Credit system calculates the score you have on another client instead of the score the other client has with you (reverse credit)
- Upload priority is based on client credit score, not on waiting time. Clients we have the least credits with get the highest priority.
- Shows the credits you have on a client under the 'transferred' column
- Will only upload to clients we do not have maximum score with: 1MB for clients that have not uploaded, otherwise uploaded data squared, or 5 times the uploaded data, whichever is more.
- Allows as many friendslots as you want (they are not transient however)
- Only shares files you are currently downloading. Gives better protection against MPAA
- Disables all 10kb upload limits
Bookmarks