eMule MOD - Development Alles zum Thema MOD Entwicklung. Fragen, Wünsche, Ideen zu neuen Features. |
27. February 2005, 00:34
|
#1 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Problem: Programmier-Hilfe benötigt
Hi Leute,
Ich hab mir in den Kopf gesetzt ein wenig eMule zu coden. Bekomme das soweit auch mehr schlecht als recht auf die Reihe. Lerne C++ halt learning by doing. Allerdings stecke ich nun in einem kleinen-großen Problem. Ich habe mir als Grundlage den EastShare Mod genommen. Nun habe ich die Puffergröße erhöht, was ja auch kein Problem darstellt, da es eine reine Code Sache ist. Als nächstes habe ich mich dran gemacht Sivka-Ban einzufügen. Der Code ist soweit nun im Client drin. Doch hier beginnt nun mein Problem. Ich habe keine Ahnung wie ich die Sivka-Ban-Optionen in die GUI integrieren soll. Ich finde leider auch kein geeignetes Tutorial, das es mir erklären könnte.
Wer immer mir in irgendeiner Weise helfen kann, möge sich doch bitte bei mir melden. Mein letzter Versuch eine Mod zu machen ist leider Gottes auch an diesem Problem gescheiert.
Ich danke jedem der mir helfen kann schonmal recht herzlich.
MFG Stulle
EDIT: Ist es eigentlich möglich einen Dialog aus einem Projekt in ein anderes Projekt direkt zu übernehmen¿
PS: Ja, wieder einer der n4ps die einfach erstmal nen Mod machen weil sie glauben sie könnten alles. Nun gut, seh's ja ein, aber es gibt einfach Dinge auf die ich nicht verzichten möchte und darum versuche ich mir halt selbst Abhilfe schaffen.
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop!
Geändert von Stulle (27. February 2005 um 00:51 Uhr)
|
| |
27. February 2005, 00:51
|
#2 | Senior Member
Registriert seit: 06.10.2003
Beiträge: 300
| Hi Stulle,
ungefähr in der Lern-Phase bin ich z. Z. auch. Ist halt schon recht schwierig und braucht auch viel Zeit.
Wenn du den Eastshare 9.0 nimmst, kannst du den ja mal mit dem Morph 6.1 vergleichen, die sind von den Funktionen im Sourcecode her nahezu identisch. Was die Optionen angeht hat der Eastshare nur 2 (glaub ich) Dinge mehr; jeweils ein Optionsfeld für FriendBoost und für ein weiteres Kreditsystem. Da kann man schön in der Source sehen, wie man das als Erweiterung in den Optionsdialog und Ini-Datei schreiben/lesen einbaut.
Ciao
Rumpelzuck |
| |
27. February 2005, 00:55
|
#3 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Programmier-Hilfe benötigt Details jo, das ne gute idee. dann werd ich es mal auf solch eine weise versuchen. danke schonmal für die hilfe.
tut's oder ähnliches hast du allerdings nicht, oder¿
aso und zu meiner frage im edit, kannst du mir dazu vielleicht auch was sagen¿
mfg stulle
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
27. February 2005, 01:16
|
#4 | Senior Member
Registriert seit: 06.10.2003
Beiträge: 300
| Lösung: Programmier-Hilfe benötigt Zitat:
Zitat von Stulle tut's oder ähnliches hast du allerdings nicht, oder¿
aso und zu meiner frage im edit, kannst du mir dazu vielleicht auch was sagen¿ | Nö, da habe ich auch noch nichts. Ich werde in meiner spärlichen Freizeit mich erstmal etwas in den Grundlagen von C++ umsehen und dann mal schaun wie weit ich so komme.
Vielleicht habe die fortgeschritteneren Coder ja noch ein paar Tips für uns ...
Ciao
Rumpelzuck |
| |
27. February 2005, 01:35
|
#5 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Programmier-Hilfe benötigt [gelöst] Au ja, das wäre klasse! *zu Xman schau und lieb guck*
Also, bitte lasst uns/ mich nicht dumm sterben!
MFG Stulle
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
27. February 2005, 10:13
|
#6 | MODder
Registriert seit: 28.03.2003
Beiträge: 5.800
| Leute, seid mir nicht böse, aber das "umcoden" von emule kann man nicht einfach so erklären. Ihr müßt den Code und dessen Funktionsweise selbst studieren. So fing ich auch an und brauchte auch entsprechende Zeit um mich einzuarbeiten. Auch heute noch versteh ich noch nicht alles und lerne ständig dazu.
Lesen - Studieren - Probieren - diesen Zyklus immer wiederholen... und es gehen immer mehr Lichtlein auf.
__________________ |
| |
27. February 2005, 10:38
|
#7 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Jo, so in der Art und Weise mache ich es momentan auch. Wie das visualisieren geht ich nu auch schon zum Teil gerafft. Naja, zumindest wie man es einfügt. Fehlt nur noch das ich dess ding compiled bekomme...
MFG Stulle
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
27. February 2005, 11:07
|
#8 | MODder
Registriert seit: 28.03.2003
Beiträge: 5.800
| @drfreak2004lies mal den Threadtitel
__________________ |
| |
27. February 2005, 11:11
|
#9 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Also nu hassu aber was verplant. Hab das Thema heute Nacht eigenhändig aufgemacht!
@Xman: Hallo nochmal, ich will gerad meine Mod compilen, bekomme aber STÄNDIG die selben Fehlermeldungen. Kannst du mir vielleicht helfen¿ Code: ------ Erstellen gestartet: Projekt: CxImage, Konfiguration: Release Win32 ------
Kompilieren...
ximapng.cpp
d:\C++\eMule0.45b-EastShare_v9-src\srchybrid\CxImage\ximapng.h(25) : fatal error C1083: Include-Datei kann nicht geöffnet werden: '../png/png.h': No such file or directory
ximaenc.cpp
d:\C++\eMule0.45b-EastShare_v9-src\srchybrid\CxImage\ximapng.h(25) : fatal error C1083: Include-Datei kann nicht geöffnet werden: '../png/png.h': No such file or directory
Code wird generiert...
Das Build-Protokoll wurde unter "file://d:\C++\eMule0.45b-EastShare_v9-src\srchybrid\CxImage\Release\BuildLog.htm" gespeichert.
CxImage - 2 Fehler, 0 Warnung(en)
------ Erstellen gestartet: Projekt: emule, Konfiguration: Release Win32 ------
Verknüpfen...
cximage.lib(xImage.obj) : error LNK2005: "public: virtual __thiscall CxImage::~CxImage(void)" (??1CxImage@@UAE@XZ) bereits in TitleMenu.obj definiert
FrameGrabThread.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: void * __thiscall CxImage::GetDIB(void)const " (?GetDIB@CxImage@@QBEPAXXZ)
FrameGrabThread.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: bool __thiscall CxImage::DecreaseBpp(unsigned long,bool,struct tagRGBQUAD *,unsigned long)" (?DecreaseBpp@CxImage@@QAE_NK_NPAUtagRGBQUAD@@K@Z)
AddSourceDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "protected: void __thiscall CResizableDialog::EnableSaveRestore(unsigned short const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPBGH@Z)
ClientDetailDialog.obj : error LNK2001: Nichtaufgelöstes externes Symbol "protected: void __thiscall CResizableSheet::EnableSaveRestore(unsigned short const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPBGHH@Z)
DialogMinTrayBtn.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: __thiscall CResizableDialog::CResizableDialog(unsigned short const *,class CWnd *)" (??0CResizableDialog@@QAE@PBGPAVCWnd@@@Z)
ListViewWalkerPropertySheet.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: __thiscall CResizableSheet::CResizableSheet(unsigned short const *,class CWnd *,unsigned int)" (??0CResizableSheet@@QAE@PBGPAVCWnd@@I@Z)
PreferencesDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: __thiscall CPPgMorph::CPPgMorph(void)" (??0CPPgMorph@@QAE@XZ)
PreferencesDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual __thiscall CPPgMorph::~CPPgMorph(void)" (??1CPPgMorph@@UAE@XZ)
PreferencesDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: void __thiscall CPPgMorph::Localize(void)" (?Localize@CPPgMorph@@QAEXXZ)
TitleMenu.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: bool __thiscall CxImage::Destroy(void)" (?Destroy@CxImage@@QAE_NXZ)
TitleMenu.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: bool __thiscall CxImage::CreateFromHBITMAP(struct HBITMAP__ *,struct HPALETTE__ *)" (?CreateFromHBITMAP@CxImage@@QAE_NPAUHBITMAP__@@PAUHPALETTE__@@@Z)
TitleMenu.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: struct tagRGBQUAD __thiscall CxImage::GetPixelColor(long,long,bool)" (?GetPixelColor@CxImage@@QAE?AUtagRGBQUAD@@JJ_N@Z)
TitleMenu.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: long __thiscall CxImage::Draw(struct HDC__ *,long,long,long,long,struct tagRECT *,bool)" (?Draw@CxImage@@QAEJPAUHDC__@@JJJJPAUtagRECT@@_N@Z)
WapServer.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: static struct tagRGBQUAD __cdecl CxImage::RGBtoRGBQUAD(unsigned long)" (?RGBtoRGBQUAD@CxImage@@SA?AUtagRGBQUAD@@K@Z)
WapServer.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: bool __thiscall CxImage::SetCodecOption(unsigned long,unsigned long)" (?SetCodecOption@CxImage@@QAE_NKK@Z)
.\release/emule.exe : fatal error LNK1120: 15 unaufgelöste externe Verweise
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
27. February 2005, 11:56
|
#10 | MODder
Registriert seit: 28.03.2003
Beiträge: 5.800
| na steht doch schon in Deinem Posting: das Verzeichnis von LibPng ist falsch.
Übrigens... ich saß schon 2 Tage davor, bis ich meinen eigenen Mod so kompiliert bekam wie ich das möchte. Die Arbeit tu ich mir nicht bei fremden Mods auch noch an
__________________ |
| |
27. February 2005, 12:07
|
#11 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| hehe, trotzdessen danke für die Hilfe.
mfg stulle
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
27. February 2005, 12:12
|
#12 | Senior Member
Registriert seit: 06.10.2003
Beiträge: 300
| @stulle,
hast du schon was in dem originalen Eastshare Projekt geändert?
Wenn du es nicht hinkriegst, kann ich dir später noch meine funktionierenden Libs und Einstellungen für den Eastshare 9.0 mal zur Verfügung stellen.
Ciao
Rumpelzuck
PS: Ich glaub nicht, dass das Verzeichnis falsch ist. Der include Befehl ist bei mir genauso, wird aber wegen der davorstehenden Bedingung
#if CXIMAGE_SUPPORT_PNG
extern "C" {
#include "../png/png.h"
}
bei mir wohl nicht benutzt und deshalb klappts bei mir. Vermute ich mal |
| |
27. February 2005, 12:24
|
#13 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Jo, hab schon bissn was verändert, allerdings nur paar Optimierungs Dinge. Der code an besagter Stelle sieht bei mir gleich aus, funktionieren tut er trotzdessen nicht. Immer der selbe Fehler.
Hab echt kA. Werd jetzt mal versuchen den Originalen eastshare zu compilen mit meinen libs.
MFG Stulle
EDIT: OK, hab jetzt mal versucht die CxImage direkt aus dem Src-Paket zu debuggen. Selber Fehler! Mal schauen was passiert wenn ich den Ordner einfach mal mit dem aus meinem Lib-Paket überschreibe...
EDIT2: Nix ist. Bitte schick mir doch mal deine libs, maybe funzt es dann.
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop!
Geändert von Stulle (27. February 2005 um 12:30 Uhr)
|
| |
28. February 2005, 20:57
|
#14 | MODder
Registriert seit: 06.11.2003
Beiträge: 598
| Deine PNG Verzeichnisstruktur muß folgendermaßen aussehnen
d:\C++\eMule0.45b-EastShare_v9-src\png\png.h
dort sollte sich auch der Ordner: crypto51, resizablelib, id3lib und zlib befinden...alle Bibliothelen selbstverständlich vorkompiliert. Besorge dier außerdem die 'libz.lib' und linke sie enstprechend.
Beim Release setze die libcmt.lib auf ignorieren.
Was deine Frage bezüglich der Dialoge betrifft, ziehe dir mal die Sources der Max_v0.1b und schaue dir die PPgMax.cpp ,PPgMax.h,<-diese besonders...sind auch schön einfach Preferences.cpp ,Preferences.h ,PreferencesDlg.cpp, PreferencesDlg.h, Emule.rc und Recource.h genau an. Benutze die 'Suchen' in Dateien Funktion um die IDC's und IDS's nach zu verfolgen. Prinzipiell wäre es auch möglich Dialoge zu kopieren am einfachsten und schnellsten geht das wahrscheinlich mit einem Merge Programm. Wenn allerdings die Sourcen zu verschieden sind macht das manchmal mehr Probleme als die Dialoge einfach neu zu erstellen das erspart unter umständen viel Zeit und Kopfzerbrechen.
Nunja schau erstmal das du mit dem Kompilieren klar kommst und lerne noch ein wenig dazu und dann sprechen wir uns weiter. Glaub mir gerade in der Anfangsphase ist es besser auf manche Sachen selbst zu kommen,weil dann der Aha-Effekt viel größer ist und man viel schneller viel mehr lernt als wenn man alles vorgekaut bekommt.
MfG Max
[EDIT: Du könntest dir natürlich auch den Source von meiner Webcache v0.45b Version besorgen und den mit der Originalen vergleichen..dafür brauchst du aber defintiv ein Merge Programm ist nämlich doch sehr viel. Sämtliche Änderungen zwischen den beiden Versionen rühren nur von Webcache her...ist also sehr informativ. Natürlich beinhaltet das auch den Webcache Dialog. Die Dateien wie oben genannt nur halt PPgWebCache.cpp und PPgWebCache.h....findest du im Webcache Ordner]
__________________
Geändert von MaxUpload (28. February 2005 um 21:05 Uhr)
|
| |
28. February 2005, 21:31
|
#15 | MODder
Registriert seit: 08.04.2004
Beiträge: 7.035
| Danke für die Antwort. Habe nun mit der Hilfe von Rumpelzuck funktionierende Libs. Vorerst habe ich mir einfach mal selbst ne erste alpha gemacht, die nur Änderungen in der Größe des FileBuffers und dem ModName sind.
Habe leider beim 2. Anschalten Probleme festgestellt, darum werde ich vorerst versuchen diese zu fixen und werde dann weiter versuchen mein eigenes kleines Preference Fenster zu erstellen und auf diesem Wege die Implementation von Sivka-Ban versuchen zu beenden.
Zu dem Prob: Es wird bei jedem Starten der Wizard aufgerufen und der Vers.check meint es sei nich die aktuellste Morph version... Na ma schaun.
Danke allen nochmal für ihre Hilfe.
MFG Stulle
__________________ Here comes the Kaiser Von Shizer! Oufweidersehen. with Hanzel und Gretyl Ja, ich bin Misanthrop! |
| |
Forumregeln
| Es ist Ihnen nicht erlaubt, neue Themen zu verfassen. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 Uhr.
|