Danke, habs gelöst.
Sollte jemand mal das selbe Problem haben gerne per PN an mich.
Beiträge von Knuspy
-
-
So, habe die Fehler raus, Distribute Exe wird nun ebenfalls wieder wie gewohnt gebaut.
Dennoch habe ich das Problem das sich der Client nach dem anmelden mit Username und Password schließt.
Client syserr ist leer, serverseitig finde ich ebenfalls nichts.
Im VS19 Ouput Fenster habe ich einige Warnings.Code- 16>LINK : warning LNK4286: symbol '___stdio_common_vsprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libjpeg-9dMT.lib(jerror.obj)'
- 16>LINK : warning LNK4286: symbol '___stdio_common_vfprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libjpeg-9dMT.lib(jerror.obj)'
- 16>LINK : warning LNK4286: symbol '___acrt_iob_func' defined in 'libucrt.lib(_file.obj)' is imported by 'libjpeg-9dMT.lib(jerror.obj)'
- 16>LINK : warning LNK4286: symbol '_exit' defined in 'libucrt.lib(exit.obj)' is imported by 'libjpeg-9dMT.lib(jerror.obj)'
- 16>LINK : warning LNK4286: symbol '_fread' defined in 'libucrt.lib(fread.obj)' is imported by 'libjpeg-9dMT.lib(jdatasrc.obj)'
- 16>LINK : warning LNK4286: symbol '_getenv' defined in 'libucrt.lib(getenv.obj)' is imported by 'libjpeg-9dMT.lib(jmemmgr.obj)'
- 16>LINK : warning LNK4286: symbol '___stdio_common_vsscanf' defined in 'libucrt.lib(input.obj)' is imported by 'libjpeg-9dMT.lib(jmemmgr.obj)'
- 16>LINK : warning LNK4286: symbol '_strncpy' defined in 'libucrt.lib(strncpy.obj)' is imported by 'libjpeg-9dMT.lib(jdmarker.obj)'
- 16>LINK : warning LNK4286: symbol '_malloc' defined in 'libucrt.lib(malloc.obj)' is imported by 'libjpeg-9dMT.lib(jmemnobs.obj)'
- 16>LINK : warning LNK4286: symbol '_free' defined in 'libucrt.lib(free.obj)' is imported by 'libjpeg-9dMT.lib(jmemnobs.obj)'
- 16>lzo-2.03MT.lib(lzo1x_9x.obj) : warning LNK4099: PDB 'lzo-2.03mt.pdb' was not found with 'lzo-2.03MT.lib(lzo1x_9x.obj)' or at 'C:\Users\Chris\Desktop\Binary Source Reworked V2.1\vs_files\UserInterface\Distribute\lzo-2.03mt.pdb'; linking object as if no debug info
- 16>lzo-2.03MT.lib(lzo1x_d1.obj) : warning LNK4099: PDB 'lzo-2.03mt.pdb' was not found with 'lzo-2.03MT.lib(lzo1x_d1.obj)' or at 'C:\Users\Chris\Desktop\Binary Source Reworked V2.1\vs_files\UserInterface\Distribute\lzo-2.03mt.pdb'; linking object as if no debug info
- 16>lzo-2.03MT.lib(lzo1x_d2.obj) : warning LNK4099: PDB 'lzo-2.03mt.pdb' was not found with 'lzo-2.03MT.lib(lzo1x_d2.obj)' or at 'C:\Users\Chris\Desktop\Binary Source Reworked V2.1\vs_files\UserInterface\Distribute\lzo-2.03mt.pdb'; linking object as if no debug info
- 16>lzo-2.03MT.lib(lzo_init.obj) : warning LNK4099: PDB 'lzo-2.03mt.pdb' was not found with 'lzo-2.03MT.lib(lzo_init.obj)' or at 'C:\Users\Chris\Desktop\Binary Source Reworked V2.1\vs_files\UserInterface\Distribute\lzo-2.03mt.pdb'; linking object as if no debug info
Jemand ne Ahnung wie ich herausfinde wieso der Client crasht ?
-
Nabend,
ich nutze die Fliege V2 Files und den Reworked V2.1 Clienten.
Ich habe mithilfe des Update Client-Source to VS2019 Tutorial die Source geupdatet und problemlos die Source in VS19 Enterprise bauen können.
Jetzt habe ich gestern, nachdem der Stress mit Doku und schriftliche Prüfung weg ist, mal wieder etwas umsetzen wollen und habe vorher VS19 geupdatet und ein paar andere SDK zusätzlich installiert.
Seitdem lässt sich der Client Source im Release und Debug zwar bauen, doch der Client schließt sich nach dem Anmeldefenster.
Keine Fehler Client- oder Serverseitig, syserr im Client wird zB. erstellt aber hat keinen Inhalt.Ich habe keine Änderungen am Code vorgenommen.
Eine alte exe, die ich erstellt habe bevor dem VS19 Update und aus 1 zu 1 dem selbe Code erstellt worde, lässt mich ins Spiel.
Während des Distribution Builds kommt es zu zwei Arten von Fehlern, welche sich auf über 1000 Ereignisse summieren.
Code- InstanceBaseTransform.obj : error LNK2001: unresolved external symbol "public: void __thiscall CActorInstance::LookAt(class CActorInstance *)" (?LookAt@CActorInstance@@QAEXPAV1@@Z)
- 16>MarkImage.obj : error LNK2001: unresolved external symbol _lzo1x_decompress_safe
- 16>MarkImage.obj : error LNK2001: unresolved external symbol "public: unsigned char * __thiscall CLZO::GetWorkMemory(void)" (?GetWorkMemory@CLZO@@QAEPAEXZ)
- 16>MarkImage.obj : error LNK2001: unresolved external symbol "unsigned long __cdecl GetCRC32(char const *,unsigned int)" (?GetCRC32@@YAKPBDI@Z)
- 16>MarkImage.obj : error LNK2001: unresolved external symbol _lzo1x_999_compress
- 16>MovieMan.obj : error LNK2001: unresolved external symbol "public: struct HWND__ * __thiscall CMSWindow::GetWindowHandle(void)" (?GetWindowHandle@CMSWindow@@QAEPAUHWND__@@XZ)
- 16>MovieMan.obj : error LNK2001: unresolved external symbol "void __cdecl GetFileExtension(char const *,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (?GetFileExtension@@YAXPBDHPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
- 16>NetworkActorManager.obj : error LNK2001: unresolved external symbol "public: __thiscall CReferenceObject::CReferenceObject(void)" (??0CReferenceObject@@QAE@XZ)
- 16>NetworkActorManager.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CReferenceObject::~CReferenceObject(void)" (??1CReferenceObject@@UAE@XZ)
- 16>NetworkActorManager.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CReferenceObject::OnConstruct(void)" (?OnConstruct@CReferenceObject@@MAEXXZ)
- 16>NetworkActorManager.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CReferenceObject::OnSelfDestruct(void)" (?OnSelfDestruct@CReferenceObject@@MAEXXZ)
- 16>ProcessCRC.obj : error LNK2001: unresolved external symbol "void __cdecl GetExcutedFileName(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?GetExcutedFileName@@YAXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
- 16>ProcessScanner.obj : error LNK2001: unresolved external symbol "void __cdecl LogBox(char const *,char const *,struct HWND__ *)" (?LogBox@@YAXPBD0PAUHWND__@@@Z)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CMSApplication::CMSApplication(void)" (??0CMSApplication@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CMSApplication::~CMSApplication(void)" (??1CMSApplication@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CInputKeyboard::CInputKeyboard(void)" (??0CInputKeyboard@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CInputKeyboard::~CInputKeyboard(void)" (??1CInputKeyboard@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CTimer::~CTimer(void)" (??1CTimer@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CLightManager::CLightManager(void)" (??0CLightManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CLightManager::~CLightManager(void)" (??1CLightManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CSoundManager::CSoundManager(void)" (??0CSoundManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CSoundManager::~CSoundManager(void)" (??1CSoundManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CFlyingManager::CFlyingManager(void)" (??0CFlyingManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CFlyingManager::~CFlyingManager(void)" (??1CFlyingManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CRaceManager::CRaceManager(void)" (??0CRaceManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CRaceManager::~CRaceManager(void)" (??1CRaceManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CGameEventManager::CGameEventManager(void)" (??0CGameEventManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CGameEventManager::~CGameEventManager(void)" (??1CGameEventManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CItemManager::CItemManager(void)" (??0CItemManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CItemManager::~CItemManager(void)" (??1CItemManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall UI::CWindowManager::CWindowManager(void)" (??0CWindowManager@UI@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall UI::CWindowManager::~CWindowManager(void)" (??1CWindowManager@UI@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CEffectManager::CEffectManager(void)" (??0CEffectManager@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CEffectManager::~CEffectManager(void)" (??1CEffectManager@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CPythonGraphic::CPythonGraphic(void)" (??0CPythonGraphic@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CPythonGraphic::~CPythonGraphic(void)" (??1CPythonGraphic@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CPythonResource::CPythonResource(void)" (??0CPythonResource@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CPythonResource::~CPythonResource(void)" (??1CPythonResource@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CGraphicDevice::CGraphicDevice(void)" (??0CGraphicDevice@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CGraphicDevice::~CGraphicDevice(void)" (??1CGraphicDevice@@UAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall CNetworkDevice::CNetworkDevice(void)" (??0CNetworkDevice@@QAE@XZ)
- 16>PythonApplication.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CNetworkDevice::~CNetworkDevice(void)" (??1CNetworkDevice@@UAE@XZ)
- Severity Code Description Project File Line Suppression State
- Error LNK1561 entry point must be defined EterLocale G:\M2 Zeugs\Arbeits Versionen\Fliege Files v2\Binary Source Reworked V2.1\vs_files\EterLocale\LINK 1
- Severity Code Description Project File Line Suppression State
- Error LNK2001 unresolved external symbol "public: bool __thiscall CNetworkStream::Connect(char const *,int,int)" (?Connect@CNetworkStream@@QAE_NPBDHH@Z) UserInterface G:\M2 Zeugs\Arbeits Versionen\Fliege Files v2\Binary Source Reworked V2.1\vs_files\UserInterface\AccountConnector.obj 1
Soweit ich es laut Google verstanden habe rafft der Linker nicht wo die Libraries sind um die Referenzen zu den Symbolen auflösen zu können.
In den Eigenschaften habe ich nachträglich nochmal unter Additional Library Directories auf die Libraries verwiesen.
Eine andere Möglichkeit laut Google wären Unterschiede in der verwendeteten Compiler Version.
Muss ich eventuell alle libs in meiner aktuellen Version mal neu bauen ??Falls ja, wo bekomme ich die Source zu denen her ?
Aktuell genutzt in VS19, Platform Toolset v142, C++ Language ISO C++ 14, Windows SDK 10.0, MSVC Toolset Version default(14.2930133).
Wäre dankbar wenn ihr mir ein paar Tritte in die richtige Richtung geben oder ein paar Ideen in den Raum werfen könntet. -
Check mal, ob die DT Run Quest sauber geschrieben ist. Eventuell hast du Timer, welche in einem Timer gestartet werden oder irgendeine Endlosschleife produzieren. Hatte das Problem bei den Fliege Files auch permanent.
Schau dir sonst auch mal die game.core Datei mit gdb an.
Hatte bisher keinen Schimmer das man die game.core debuggen kann und habe mich in den FreeBSD gdb eingelesen und hier dann auch einige Tutorials gefunden.
Mit Hilfe dessen konnte ich herausfinden das der item_manager Pfeile als drop erstellt hat und dann mit einer 20% Wahrscheinlichkeit versuchte einen Bonus auf dieses Item zu bringen. Dies erklärt wieso die crashes immer zu unterschiedlichen Zeitpunkten passierte.
Ich habe die Wahrscheinlichkeit eines Bonus auf 100% geändert und konnte so den core crash bei jedem Drop eines Pfeils provozieren.
Habe im Source dann einfach ne Prüfung hinzugefügt, welche dafür sorgt das keine Boni zu dem Item hinzugefügt werden wenn es Type 1 und SubType 6 ist.
Danke.
-
Check mal, ob die DT Run Quest sauber geschrieben ist. Eventuell hast du Timer, welche in einem Timer gestartet werden oder irgendeine Endlosschleife produzieren. Hatte das Problem bei den Fliege Files auch permanent.
Schau dir sonst auch mal die game.core Datei mit gdb an.
Habe die Quest bisher nur auf eventuell nicht vorhandene Mobs/Items geprüft.
Ich werde mir die Quest nochmal genauer ansehen und vielleicht komplett selber schreiben, brauche da eh noch etwas Übung.
Jemanden dem ich vor kurzem geholfen habe, hatte auch das Problem und es lag an zu wenig ram aufm Server. Aber wenn du magst kannst mich ja mal auf Discord adden und ich kann es mir mal anschauen.
Habe 8 GB zugewiesen.
Wäre natürlich die einfachste Lösung wenn ich nur mehr RAM zuweisen müsste.
-
Nabend,
folgendendes Problemchen ärgert mich nun seit einiger Zeit:
Während Dt Runs kommt es in gefühlt 95% der Fällen früher oder später zu einem Core Crash (segmentation fault (core dumped)), alle Clients welche sich im DT befanden werden gekickt.
Clients auf anderen Maps im selben Channel bleiben verbunden.
Das kuriose ist das ich kein Muster erkenne, syserr und logs des Channels sind für mich unauffällig.
Die crashes passieren random, ich habe keinen Weg gefunden diese zu provozieren.
Ich bin, um dies auszuschließen, alle regen.txt und die entsprechende Quest durchgegangen und habe sichergestellt das kein Item/Mob gespawnt oder entfernt wird welches nicht existiert.
Channel_1 Kern_1 log und err
Code- syslog:
- Mar 15 21:34:15 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1062)
- Mar 15 21:34:15 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1002)
- Mar 15 21:34:19 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1062)
- Mar 15 21:34:19 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1002)
- Mar 15 21:34:19 :: AddAffect Gemeiner Bogenschütze type 210 apply 0 0 flag 6 duration 4
- Mar 15 21:34:20 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1004)
- Mar 15 21:34:20 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1003)
- Mar 15 21:34:20 :: Gemeiner Geist Schütze DUNGEON set to 0x3d333a40, PARTY is 0x0
- Mar 15 21:34:20 :: MonsterCount 29
- Mar 15 21:34:20 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1032)
- Mar 15 21:34:20 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1063)
- Mar 15 21:34:21 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1062)
- Mar 15 21:34:23 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1002)
- Mar 15 21:34:24 :: AddAffect Gemeiner Bogenschütze type 210 apply 0 0 flag 6 duration 4
- Mar 15 21:34:24 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1064)
- Mar 15 21:34:25 :: Gemeiner Geist Schütze DUNGEON set to 0x3d333a40, PARTY is 0x0
- Mar 15 21:34:25 :: MonsterCount 25
- Mar 15 21:34:25 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1032)
- Mar 15 21:34:26 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1062)
- Mar 15 21:34:26 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=48, npc=1062)
- SYSERR: Mar 15 21:34:39 :: pid_init:
- Start of pid: 1115
- Mar 15 21:34:39 :: SYSTEM: BINDING TCP PORT ON [13031] (fd 12)
- Mar 15 21:34:39 :: SYSTEM: BINDING TCP PORT ON [14031] (fd 13)
- Mar 15 21:34:39 :: SYSTEM: Trying to connect to localhost:26842
- Mar 15 21:34:39 :: SYSTEM: connected to server (fd 14, ptr 0x28cbc400)
- Mar 15 21:34:39 :: DB_SETUP current user 0 size 154
- Mar 15 21:34:39 :: PARTY Enable
- Mar 15 21:34:39 :: AddGotoInfo(name=a1, empire=0, mapIndex=1, pos=(4693, 9642))
- Mar 15 21:34:39 :: AddGotoInfo(name=a3, empire=0, mapIndex=3, pos=(3608, 8776))
- Mar 15 21:34:39 :: AddGotoInfo(name=b1, empire=0, mapIndex=21, pos=(557, 1579))
- Mar 15 21:34:39 :: AddGotoInfo(name=b3, empire=0, mapIndex=23, pos=(1385, 2349))
- Mar 15 21:34:39 :: AddGotoInfo(name=c1, empire=0, mapIndex=41, pos=(9696, 2784))
- Mar 15 21:34:39 :: AddGotoInfo(name=c3, empire=0, mapIndex=43, pos=(8731, 2426))
- Mar 15 21:34:39 :: AddGotoInfo(name=snow, empire=1, mapIndex=61, pos=(4342, 2906))
- Mar 15 21:34:39 :: AddGotoInfo(name=snow, empire=2, mapIndex=61, pos=(3752, 1749))
- syserr:
- SYSERR: Mar 15 21:32:49 :: IsUniqueDead: Unknown Key or Dead : real
- SYSERR: Mar 15 21:34:39 :: pid_init:
- Start of pid: 1115
Jemand ne Idee oder nen Vorschlag was ich sonst mal prüfen sollte ??
-
Hallo zusammen,
ich habe das lesen von Büchern wie Führung, Verwandlung, Bergbau etc in entsprechende Quests ausgelagert.
Hierbei haben MeisterFbs eine höhere Erfolgswahrscheinlichkeit als normale Counterparts.
Nun stehe ich vor dem Problem die Techstufen von Fertigkeits-/Meisterbüchern zu Synchronisieren wenn ich normale Fbs und Zwischendurch Meister Fbs lese.
Derzeit tracke ich per Questfile wie viele erfolgreiche Fbs auf dem Skill gelesen wurden.
Normale Fbs werden aber nicht getrackt, da diese außerhalb der Quest agieren.
Nun habe ich versucht normale Fbs mit in die entsprechende Quest aufzunehmen
Wenn ein normales Fb geklickt wird, wollte ich die Skill Id oder den kompletten Namen des Fbs bekommen.
Meine Hoffnung war das eine der folgenden Funktionen mir etwas brauchbares liefert, leider war dies nicht der Fall.
Nun meine Frage ob jemand ne Idee hat wie ich innerhalb der Quest an die Skill Id oder den vollen Namen des geklickten Fbs komme.
-
Hallo zusammen,
ich fand im Netz hierzu kein Tutorial und habe mich dann ran gemacht dies für mich um zu setzen.
Alles was ihr braucht ist die uitooltip.py aus der root des Clienten.
Sucht nach der Funktion und erweitert diese:
Anschließend sucht die Funktion
In dieser Funktion solltet ihr folgende Variablen zuweisung finden und type als parameter für GetAttributeColor übergeben:
Soweit sogut.
Nun könnt ihr folgendes tun:
In meinem Beispiel:
Ist mein 6 oder 7 Boni Dss checke ich die Höhe des Wertes und setze demnach die Farbe des Bonus im Tooltip der Waffe.
Code- def __GetAttributeColor(self, index, value, type):
- if value > 0:
- # 6/7 Boni fangen hier an
- if index >= 5:
- # type ist der index des Bonus den ihr in der item_attr_rare angegeben habt
- # den index des Bonus findet ihr in EApplyTypes der Datei ItemData.h in eurem Source
- # in meinem Beispiel Dss -> NORMAL_HIT_DAMAGE_BONUS index 72
- # Habt ihr zB als rare Bonus Max_Hp wäre dies index 1
- if type == 72:
- # Wert bzw. Höhe des Bonus
- if value == 3:
- # Farben wie folgt ( Rot, Grün, Blau, Deckkraft glaub ich)
- # Wenn ihr eine bestimmte Farbe möchtet, sucht euch den passenden RGB Wert und rechnet ihn um
- # Euer Wert / 255 = x,xx -> nehmt nur 2 nach Kommastellen, rundet wie euch beliebt
- # Beispiel light coral - 240 128 128 -> 0.94 0.50 0.50 1.0
- self.SPECIAL_POSITIVE_COLOR2 = grp.GenerateColor(0, 1, 1, 1.0) # Gelb
- return self.SPECIAL_POSITIVE_COLOR2
- # Wert bzw. Höhe des Bonus
- elif value == 5:
- self.SPECIAL_POSITIVE_COLOR2 = grp.GenerateColor(0, 0, 1, 1.0) # Blau
- return self.SPECIAL_POSITIVE_COLOR2
- # Wert bzw. Höhe des Bonus
- elif value == 8:
- self.SPECIAL_POSITIVE_COLOR2 = grp.GenerateColor(1, 0, 0, 1.0) # Rot
- return self.SPECIAL_POSITIVE_COLOR2
- else:
- return self.SPECIAL_POSITIVE_COLOR
- else:
- return self.SPECIAL_POSITIVE_COLOR
- elif value == 0:
- return self.NORMAL_COLOR
- else:
- return self.NEGATIVE_COLOR
Ich hoffe der ein oder andere findet seinen nutzen damit.
Ps: Das Stark gegen Monster bei mir in der Waffe blau ist, kommt daher das ich mehrere Gruppen habe welche unterschiedliche min/max Werte haben.
Das ist kein Fehler, sondern Absicht.
-
Hallo zusammen,
der in 2015 releaste Ingame Channel Switcher ist in den Fliege Files schon vorhanden gewesen.
Mir fehlte in meinem Client der gegenpart dazu welchen ich hinzugefügt habe.
Die berechnung der Ports habe ich angepasst.
Ch1 13031 - 13041 - 13051
Ch2 15031 - 15041 - 15051
Ch3 17031 - 17041 - 17051
Ch4 19031 - 19041 - 19051
Mein Problem ist nun, ich öffne Ingame das Channel Wechseln Fenster und beim drücken der Channel Buttons bekomme ich nur Chat Infos ausgegeben.
Ansonsten passiert nichts.
Er ruft also erfolgreich die jeweilige Funktion __1, __2 etc in uichannel.py auf woraufhin die Funktion __OnChangeChannel(ch) mit dem jeweiligem Channel aufgerufen wird.
uichannel.py
Python- import ui
- import net
- import app
- import chat
- import math
- import wndMgr
- import serverInfo
- import background
- import ServerStateChecker
- import snd
- import constInfo
- Channel_window = "uiscript/channel.py"
- class ChannelChanger(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def Show(self):
- self.__LoadWindow()
- ui.ScriptWindow.Show(self)
- def __LoadWindow(self):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, Channel_window)
- except:
- import exception
- exception.Abort("PetWindow.LoadWindow.LoadObject")
- #buttons
- self.TitleBar = self.GetChild("TitleBar")
- self.channel1 = self.GetChild("Channel_1")
- self.channel2 = self.GetChild("Channel_2")
- self.channel3 = self.GetChild("Channel_3")
- self.channel4 = self.GetChild("Channel_4")
- #event buttons
- self.TitleBar.SetCloseEvent(ui.__mem_func__(self.Close))
- self.channel1.SetEvent(ui.__mem_func__(self.___1))
- self.channel2.SetEvent(ui.__mem_func__(self.___2))
- self.channel3.SetEvent(ui.__mem_func__(self.___3))
- self.channel4.SetEvent(ui.__mem_func__(self.___4))
- def ___1(self):
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Channel 1 gewählt !")
- snd.PlaySound("sound/ui/click.wav")
- ch = "1"
- self.__OnChangeChannel(ch)
- def ___2(self):
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Channel 2 gewählt !")
- snd.PlaySound("sound/ui/click.wav")
- ch = "2"
- self.__OnChangeChannel(ch)
- def ___3(self):
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Channel 3 gewählt !")
- snd.PlaySound("sound/ui/click.wav")
- ch = "3"
- self.__OnChangeChannel(ch)
- def ___4(self):
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Channel 4 gewählt !")
- snd.PlaySound("sound/ui/click.wav")
- ch = "4"
- self.__OnChangeChannel(ch)
- def __IsSpecialMap(self):
- dis_maps = [
- "season1/metin2_map_oxevent",
- "season2/metin2_map_guild_inside01",
- "season2/metin2_map_empirewar01",
- "season2/metin2_map_empirewar02",
- "season2/metin2_map_empirewar03",
- "metin2_map_dragon_timeattack_01",
- "metin2_map_dragon_timeattack_02",
- "metin2_map_dragon_timeattack_03",
- "metin2_map_skipia_dungeon_boss",
- "metin2_map_skipia_dungeon_boss2",
- "metin2_map_devilsCatacomb",
- "metin2_map_deviltower1",
- "metin2_map_t1",
- "metin2_map_t2",
- "metin2_map_t3",
- "metin2_map_t4",
- "metin2_map_t5",
- "metin2_map_wedding_01",
- "metin2_map_duel",
- "metin2_map_orclabyrinth",
- "metin2_map_n_flame_dungeon_01",
- "metin2_map_n_snow_dungeon_01"
- ]
- if str(background.GetCurrentMapName()) in dis_maps:
- return TRUE
- return FALSE
- def __OnChangeChannel(self, ch):
- ServerStateChecker.Update()
- channel = net.GetServerInfo()[-1]
- # channelnum = filter(str.isdigit, channel)
- if ch == channel:
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Du bist schon in diesem Channel !")
- return
- if self.__IsSpecialMap():
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Du kannst auf dieser Map nicht den Channel wechseln !")
- return
- net.SendChatPacket("/channel "+ str(ch))
- self.Close()
- def Close(self):
- constInfo.channel = 0
- self.Hide()
- return TRUE
- def OnPressEscapeKey(self):
- constInfo.channel = 0
- self.Hide()
- return TRUE
Syserr Server und ClientSide sind leer.
Ich kenne mich mit dem Ablauf nicht wirklich aus, ich vermute es fehlt die Verbindung Client zu Source ?
-
Versuche das Client Side Pickup zum laufen zu bekommen.
Nach der Char Auswahl bleibt das Fenster hängen.
Welche Datei lädt er denn bei File "uiSystem.py", line 42, in __LoadSystemMenu_Default?
Habs gerade hin bekommen.
Habe den help_button in locale/xx/ui/systemdialog.py und uiscript\systemdialog.py ersetzt.
In der uisystem.py hat er self.GetChild("help_button").SAFE_SetEvent(self.__ClickHelpButton) aufgerufen...
Hab die Zeile einfach auskommentiert.
War gestern offensichtlich zu lange wach.
Pickup funktioniert problemlos, danke.
-
Versuche das Client Side Pickup zum laufen zu bekommen.
Nach der Char Auswahl bleibt das Fenster hängen.
Code- 0930 22:02:15285 :: Traceback (most recent call last):
- 0930 22:02:15285 :: File "networkModule.py", line 247, in SetGamePhase
- 0930 22:02:15285 :: File "game.py", line 99, in __init__
- 0930 22:02:15285 :: File "interfaceModule.py", line 288, in MakeInterface
- 0930 22:02:15285 :: File "interfaceModule.py", line 223, in __MakeDialogs
- 0930 22:02:15285 :: File "uiSystem.py", line 37, in LoadDialog
- 0930 22:02:15286 :: File "uiSystem.py", line 42, in __LoadSystemMenu_Default
- 0930 22:02:15286 :: File "ui.py", line 2704, in GetChild
- 0930 22:02:15286 :: KeyError
- 0930 22:02:15286 :: :
- 0930 22:02:15286 :: 'pickup_options_button'
- 0930 22:02:15286 ::
Habe den Server Side Fix versucht, in der locale/xx/ui/systemdialog.py aber folgendes eingefügt:
Code- "children" :
- (
- {
- "name" : "pickup_options_button",
- "type" : "button",
- "x" : 10,
- "y" : 27, #REPLACE IT AS YOU WANT!!!
- "text" : uiScriptLocale.EXTENDED_PICKUP_TITLE,
- "default_image" : ROOT + "XLarge_Button_01.sub",
- "over_image" : ROOT + "XLarge_Button_02.sub",
- "down_image" : ROOT + "XLarge_Button_03.sub",
- },
uiscript\systemdialog.py
Code- "children" :
- (
- {
- "name" : "pickup_options_button",
- "type" : "button",
- "x" : 10,
- "y" : 17, #REPLACE IT AS YOU WANT!!!
- "text" : uiScriptLocale.EXTENDED_PICKUP_TITLE,
- "default_image" : ROOT + "XLarge_Button_01.sub",
- "over_image" : ROOT + "XLarge_Button_02.sub",
- "down_image" : ROOT + "XLarge_Button_03.sub",
- },
Immernoch selber Fehler, jemand ne Idee ?
-
Eine neue Race Flag über mob_proto -> designTable -> setRaceFLag - Values hinzuzufügen funktioniert nicht.
Rechtsklick auf die Tabelle, Design Table, Passenden Wert ergänzen
Werd ich später nach der Arbeit nochmal probieren und melde mich dann, danke.Hat sich erledigt, habe in MYSQL die Race Flags identisch zu den RaceFlags in length.h anordnen müssen.
Weiß grad jemand ob der Mob Dmg sonst noch irgendwo beeinflusst wird ?
Mit 50% Blitzdef, anstatt 50% Dmg zu reduzieren, macht der Mob ~ 65-66% Dmg weniger.
Also mit 0% Def = 1666 Dmg, mit 50% Def = 569 Dmg anstatt der erwarteten 833 Dmg.
battle.cpp
-
Guten Morgen,
ich habe nun durch ausprobieren einen Weg gefunden wie ich folgenden Code, mitwelchen man Mob DMG reduzieren kann wenn diese die passende Race Flag haben, zu nutzen.
Mein Problem ist nun das es auf den Race FLag ATT_ELEC prüfen soll, diesen habe ich in der Mob_proto in MYSQL aber nicht als Race Flag zur Auswahl.
Eine neue Race Flag über mob_proto -> designTable -> setRaceFLag - Values hinzuzufügen funktioniert nicht.
Wenn ich eine der folgenden in MYSQL auswählbaren Race Flags in die if abfrage setze funktioniert es wie erwartet.
'ANIMAL','UNDEAD','DEVIL','HUMAN','ORC','MILGYO','INSECT','FIRE','ICE','DESERT'
Wie kann ich neue Race Flags zB. ATT_ELEC in die Mob_proto einfügen ?
-
Zweiter Push.
Habe im Fliege Source rumgestochert und soweit ich dies verstehe sind die Elementdeffs und die jeweiligen Race Flags dort schon definiert.
Bleibt die Frage ob jemand weiß wie ich diversen Mobs eine zweite Race Flag geben kann.
Somit sollte der Dmg dieser Mobs durch die Widerstandsboni gesenkt werden oder nicht ?
Battle.cpp
Code- //[ mob -> PC ] 원소 속성 방어 적용
- //2013/01/17
- //몬스터 속성공격 데미지의 30%에 해당하는 수치에만 저항이 적용됨.
- if (pkAttacker->IsNPC() && pkVictim->IsPC())
- {
- if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_ELEC))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_ELEC)) / 10000;
- else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_FIRE))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_FIRE)) / 10000;
- else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_ICE))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_ICE)) / 10000;
- else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_WIND))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_WIND)) / 10000;
- else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_EARTH))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_EARTH)) / 10000;
- else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_DARK))
- iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_DARK)) / 10000;
- }
- return iAtk;
- }
Protoreader.cpp
Code- int get_Mob_RaceFlag_Value(string inputString)
- {
- string arRaceFlag[] = {"ANIMAL","UNDEAD","DEVIL","HUMAN","ORC","MILGYO","INSECT","FIRE","ICE","DESERT","TREE",
- "ATT_ELEC","ATT_FIRE","ATT_ICE","ATT_WIND","ATT_EARTH","ATT_DARK"};
- int retValue = 0;
- string* arInputString = StringSplit(inputString, ","); //프로토 정보 내용을 단어별로 쪼갠 배열.
- for(int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++) {
- string tempString = arRaceFlag[i];
- for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
- {
- string tempString2 = arInputString[j];
- if (tempString2.compare(tempString)==0) { //일치하는지 확인.
- retValue = retValue + pow((float)2,(float)i);
- }
- if(tempString2.compare("") == 0)
- break;
- }
- }
- delete []arInputString;
- //cout << "Race Flag : " << raceFlagStr << " -> " << retValue << endl;
- return retValue;
- }
lenght.h
Code- enum ERaceFlags
- {
- RACE_FLAG_ANIMAL = (1 << 0),
- RACE_FLAG_UNDEAD = (1 << 1),
- RACE_FLAG_DEVIL = (1 << 2),
- RACE_FLAG_HUMAN = (1 << 3),
- RACE_FLAG_ORC = (1 << 4),
- RACE_FLAG_MILGYO = (1 << 5),
- RACE_FLAG_INSECT = (1 << 6),
- RACE_FLAG_FIRE = (1 << 7),
- RACE_FLAG_ICE = (1 << 8),
- RACE_FLAG_DESERT = (1 << 9),
- RACE_FLAG_TREE = (1 << 10),
- RACE_FLAG_ATT_ELEC = (1 << 11),
- RACE_FLAG_ATT_FIRE = (1 << 12),
- RACE_FLAG_ATT_ICE = (1 << 13),
- RACE_FLAG_ATT_WIND = (1 << 14),
- RACE_FLAG_ATT_EARTH = (1 << 15),
- RACE_FLAG_ATT_DARK = (1 << 16),
- };
-
Ich push hier mal.
Könnte ich nicht einfach diverse von mir gewünschte Mobs als neue Rasse definieren ?
Im Endeffekt stelle ich mir das dann so wie bei den 61er Schildern vor.
Wo sind diese Boni definiert ? Müsste irgendwo im Source rumfliegen oder ?
Also wo finde ich die Dateien welche Mobs als Teufel, Dämonen, Orks etc. deklarieren ?
Vielleicht kann ich mir so selber etwas basteln um die Elementdeffs wirksam zu machen.
Lieben Gruß
-
Tach zusammen,
hierzu gab es in den vergangenen zwei Jahren schonmal zwei Themen welche leider keine wirkliche Antwort enthielten, Google hilft auch nicht weiter.
Da die beiden Personen welche die selbe Frage stellten schon seit mehr als einem Jahr nicht mehr hier anwesend waren, stelle ich die Frage nochmal.
Und zwar möchte ich die schon vorhandenen Boni Blitz, Feuer und Windwiderstand wirksam machen.
Diese haben momentan keinen Effekt.
In der Mob_proto stelle ich zwar ein wieviel widerstand ein Mob gegenüber zB. Einhandwaffen hat doch wie geht es anders herum ?
Wie stelle ich ein das Blitzdef als Beispiel den Dmg von Mobs, welche ich im bestem Fall aussuchen kann, prozentual reduziert ?
-
Auf .de gibt es einen gemodelten Eingang zu Grotte, derzeit ist bei mir an selber Stelle nur eine Sackgasse mit einem in der Luft schwebenden Portal.
Dies würde ich wie gesagt gerne ändern.
Eine dazugehörige Quest mit Blutstein bei NPC abgeben -> Warp in Grotte ist kein Problem.
Wenn ich später zuhause bin kann ich mal Bilder zum besserem Verständnis machen.
Edit:
So hier die Bilder wie es momentan aussieht und wie ich es gerne hätte.
Wäre super falls mir jemand sagen könnte wie ich dies ändern kann.
-
Guten Morgen,
zurzeit habe ich die Reworked Fliege Files mit neustem Source am laufen.
Leider ist der Zugang zur Grotte nur ein Portal in welches man hinein läuft.
Ich hätte aber gerne, wie auf De, dass man einen Blutstein bei einem NPC abgibt und in die Grotte transportiert wird.
Einen NPC platzieren und die entsprechende Quest zu schreiben ist kein Problem, doch wie bekomme ich den Eingang zu Grotte hin ?
Brauche ich eine andere Orktal Map und falls ja hätte die jemand ?
Zudem müsste ich dann das derzeite Portal entfernen, richtig ?
Lieben Dank
-
Hi,
game/share/locale/germany/translate.lua
Die stehen da !
Kannst die da ändern oder du schreibst einfach..
say_title("Dein Text")
Dank dir,
habe mir die Translate.lua grad angesehen und wie du sagtest werde den Text direkt in die Quest schreiben.
Dort kann ich den Text mit Absätzen besser gestalten.
Lieben Dank nochmal.
-
Hallo zusammen,
ich würde gerne die Dinge die der Biologe zu jemandem sagt ändern, doch in den Questfiles sieht es so aus:
Meine Frage ist nun, wo finde ich diese Dateien gameforge.collect_herb_lv10._50_sayTitle usw. ?
Habe per Filezilla alle Questordner abgeklappert und im Source find ich auf anhieb leider auch nichts...
Schönes WE !