[Sammelthread][Hilfetread] Datenbank und C++-Scripts

03/28/2014 13:13 Kaev <3#1
Hiho,

da ich in letzter Zeit immer mehr Fragen per PN und Skype kriege und es in anderen Bereichen und Foren auch solche Threads gibt, habe ich mir überlegt, einen solchen zu starten.

Wenn ihr Fragen zur Datenbank und C++-Scripts habt, könnt ihr diese in diesem Thread stellen.
Das erhöht nicht nur die Übersichtlichkeit des Bereiches, sondern vereint unser gemeinsames Wissen auf einen Thread.

Meine eigene Erfahrung beläuft sich hierbei auf fortgeschrittene C++-Script- und mittelmäßige Datenbankerfahrung.
[Only registered and activated users can see links. Click Here To Register...] hat meines Wissens nach sehr gute Datenbankkentnisse und wird bestimmt auch öfters mal vorbei schauen und das ein oder andere Problem lösen können. :)

Ich bin mal auf eure Probleme gespannt.

~Kaev
03/28/2014 17:35 °"Crazy"°#2
Quote:
Originally Posted by Kaev <3 View Post
[Only registered and activated users can see links. Click Here To Register...] hat meines Wissens nach sehr gute Datenbankkentnisse und wird bestimmt auch öfters mal vorbei schauen und das ein oder andere Problem lösen können. :)
Das denkst auch nur du. :P Derzeit verwalte ich nebenbei einige Linuxroots und kann auch dabei Fragen beantworten.

MfG
04/01/2014 20:19 DEV-Explo.IT#3
Guten Abend Community..

Wollte vorhin anfangen ein paar "Customscripts" (C++) auf meinen Server zu packen.
Bin nach diesem Tutorial vorgegangen (für Linux):
[Only registered and activated users can see links. Click Here To Register...]

Sprich in die ScriptLoader.cpp eingefügt:
Code:
#ifdef SCRIPTS
/* This is where custom scripts' loading functions should be declared. */
void AddSC_professions_npc();
void AddSC_kill_streak();
#endif

void AddCustomScripts(){
#ifdef SCRIPTS
    /* This is where custom scripts should be added. */
    AddSC_professions_npc();
    AddSC_kill_streak();
#endif
}
Im Verzeichnis ../Custom die beiden C++ Scripts eingefügt.
Und auch im selben Verzeichnis die CMakeLists.txt bearbeitet:
Code:
set(scripts_STAT_SRCS
  ${scripts_STAT_SRCS}
Custom/professions_npc.cpp
Custom/kill_streak.cpp
)

message("  -> Prepared: Custom")
Dann ins Verzeichnis ../TrinityCore/build gewechselt und compiliert.
Code:
cmake ../ -DPREFIX=/home/trinity/server -DWITH_WARNINGS=1

make
Dann trat folgender Fehler auf:
Code:
../game/libgame.a(ScriptLoader.cpp.o): In function `AddScripts()':
ScriptLoader.cpp:(.text+0xee1): undefined reference to `AddSC_professions_npc()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddCustomScripts()':
ScriptLoader.cpp:(.text+0xf75): undefined reference to `AddSC_professions_npc()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddScripts()':
ScriptLoader.cpp:(.text+0xeea): undefined reference to `AddSC_kill_streak()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddCustomScripts()':
ScriptLoader.cpp:(.text+0xf7e): undefined reference to `AddSC_kill_streak()'
collect2: error: ld returned 1 exit status
make[2]: *** [src/server/worldserver/worldserver] Fehler 1
make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Fehler 2
make: *** [all] Fehler 2


Weiß jemand Rat? Habe vieles Ausprobiert, es lief aber immer auf den selben Fehler zurück!
04/01/2014 20:20 Kaev <3#4
Quote:
Originally Posted by Sorce Fox View Post
Guten Abend Community..

Wollte vorhin anfangen ein paar "Customscripts" (C++) auf meinen Server zu packen.
Bin nach diesem Tutorial vorgegangen (für Linux):
[Only registered and activated users can see links. Click Here To Register...]

Sprich in die ScriptLoader.cpp eingefügt:
Code:
#ifdef SCRIPTS
/* This is where custom scripts' loading functions should be declared. */
void AddSC_professions_npc();
void AddSC_kill_streak();
#endif

void AddCustomScripts(){
#ifdef SCRIPTS
    /* This is where custom scripts should be added. */
    AddSC_professions_npc();
    AddSC_kill_streak();
#endif
}
Im Verzeichnis ../Custom die beiden C++ Scripts eingefügt.
Und auch im selben Verzeichnis die CMakeLists.txt bearbeitet:
Code:
set(scripts_STAT_SRCS
  ${scripts_STAT_SRCS}
Custom/professions_npc.cpp
Custom/kill_streak.cpp
)

message("  -> Prepared: Custom")
Dann ins Verzeichnis ../TrinityCore/build gewechselt und compiliert.
Code:
cmake ../ -DPREFIX=/home/trinity/server -DWITH_WARNINGS=1

make
Dann trat folgender Fehler auf:
Code:
../game/libgame.a(ScriptLoader.cpp.o): In function `AddScripts()':
ScriptLoader.cpp:(.text+0xee1): undefined reference to `AddSC_professions_npc()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddCustomScripts()':
ScriptLoader.cpp:(.text+0xf75): undefined reference to `AddSC_professions_npc()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddScripts()':
ScriptLoader.cpp:(.text+0xeea): undefined reference to `AddSC_kill_streak()'
../game/libgame.a(ScriptLoader.cpp.o): In function `AddCustomScripts()':
ScriptLoader.cpp:(.text+0xf7e): undefined reference to `AddSC_kill_streak()'
collect2: error: ld returned 1 exit status
make[2]: *** [src/server/worldserver/worldserver] Fehler 1
make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Fehler 2
make: *** [all] Fehler 2


Weiß jemand Rat? Habe vieles Ausprobiert, es lief aber immer auf den selben Fehler zurück!
Fehler behoben, Script lag in einem Unterordner (z.B. Custom/MeinScript/Meinscript.cpp statt Custom/Meinscript.cpp).
04/01/2014 20:59 DEV-Explo.IT#5
Also ich benutze dieses Script: [Only registered and activated users can see links. Click Here To Register...]


Habe es nun erfolgreich in die TrinityCore compiliert und wollte es einem NPC hinzufügen:
Code:
insert into `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) values
('100001','0','0','0','0','0','22163','0','0','0','Alex Walker','Professions',NULL,'0','80','80','0','35','35','1','1','1.14286','1','3','0','0','0','0','1','0','0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3','1','1','1','0','0','0','0','0','0','0','0','1','0','0','Professions_NPC','0');
Ingame kann ich den NPC zwar ansprechen, aber es kommt nur "Greetings <Name>"

Was mache ich falsch? :-/
04/03/2014 17:18 Kaev <3#6
Quote:
Originally Posted by Sorce Fox View Post
Also ich benutze dieses Script: [Only registered and activated users can see links. Click Here To Register...]


Habe es nun erfolgreich in die TrinityCore compiliert und wollte es einem NPC hinzufügen:
Code:
insert into `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) values
('100001','0','0','0','0','0','22163','0','0','0','Alex Walker','Professions',NULL,'0','80','80','0','35','35','1','1','1.14286','1','3','0','0','0','0','1','0','0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','3','1','1','1','0','0','0','0','0','0','0','0','1','0','0','Professions_NPC','0');
Ingame kann ich den NPC zwar ansprechen, aber es kommt nur "Greetings <Name>"

Was mache ich falsch? :-/
Bei mir funktioniert das Script, du musst es wohl falsch oder gar nicht eingebunden haben.
Schreib mir mal den Inhalt deiner ScriptLoader.cpp.
04/17/2014 21:58 Kaev <3#7
#push