krofna / warrior-of-dreamworld Goto Github PK
View Code? Open in Web Editor NEWWarrior of Dreamworld is 2D Massivly Multiplayer Online Role Playing Game with Real-time combat
License: GNU General Public License v2.0
Warrior of Dreamworld is 2D Massivly Multiplayer Online Role Playing Game with Real-time combat
License: GNU General Public License v2.0
Please?:)
Reproducing this bug:
Backtrace from gdb:
0x0812599e in Pathfinder::CheckNode (this=0x81ac8e8, pCurrent=0x81b7fe0, x=1, y=1, Cost=14)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/AI/Pathfinder.cpp:211
211 if(!(*pTileGrid)[pCurrent->Position.y+y][pCurrent->Position.x+x])
(gdb) bt
#0 0x0812599e in Pathfinder::CheckNode (this=0x81ac8e8, pCurrent=0x81b7fe0, x=1, y=1, Cost=14)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/AI/Pathfinder.cpp:211
#1 0x0812581e in Pathfinder::GeneratePath (this=0x81ac8e8)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/AI/Pathfinder.cpp:195
#2 0x0812530a in Pathfinder::Update (this=0x81ac8e8, diff=50)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/AI/Pathfinder.cpp:82
#3 0x081334a4 in Creature::Update (this=0x81ac4e0, diff=50)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/Entities/WorldObject/Creature.cpp:54
#4 0x08137fd4 in Map::UnitUpdate (this=0x81ab948, pUnit=0x81ac4e0, diff=50)
at /home/ryan/Documents/Développement/Projets/C++/Games/Warrior-of-Dreamworld/branch_master/server/Map/Map.cpp:113
No, seriously. We totally should. I just wasted whole saturday...
Too much data read from packet? Assert in WorldPacket fails.
You know what it is.
Use placeholder graphics and/or console output(testing only).
Tested with branch working (last commit) Ubuntu 12.04 - g++ 4.6.3
Log is here:
Guessing screen resolution [FIXME]: Select configuration in game and save it in Config.conf
My guess is: 1680x1050
Sending Packet: MSG_LOGIN,
Successful!
Got packet, size: 12
Received Packet: MSG_LOGIN,
Packet is good!
Got packet, size: 43
Received Packet: MSG_ADD_OBJECT,
Packet is good!
Got packet, size: 58
Received Packet: MSG_ADD_OBJECT,
Packet is good!
Got packet, size: 39
Received Packet: MSG_ADD_OBJECT,
Packet is good!
EXCEPTION occured: vector::_M_fill_insert
Got packet, size: 39
Failed to receive packet
I'm using gdb to find the source, but this is (very) hard.
EDIT: Seems that is not related to MSG_ADD_OBJECT but World::Load ?
EDIT 2: Found, it'(s threw when WorldObject::WorldObject is called, but why ?!
EDIT 3: WorldObject::WorldObject() is not the problem... WTF.
EDIT 4: A lots of class using ObjID are uint32 -_-", I'm fixing them, and I'll check if that correct the problem.
EDIT 5: Nothing was corrected (except server-side SQL exception :D)
EDIT 6: There is only 2 std::vector client-side, in Animation.hpp and MessageChatArea.hpp.
EDIT 7: Is there other container using vector in internal ? Seems to be a length_error.
EDIT 8: GOTCHA :D In World::Load, sf::VertexArray::resize.
EDIT 9: map0.map is damaged :D
EDIT 10: Fixed, I'll push the fix in 30 minutes.
Make client side of Logout smoother (It sort of works, but code is ugly)
Pathfinding not works anymore for 2 NPCs
Try to attack FullMetal-Alchimist and Krofnica.
One of them would not move.
[Could not generate path]
/server/ has 40+ files... We should group them in subfolders. Would this also break cmake build?
@FullMetal-Alchimist
==23467== HEAP SUMMARY:
==23467== in use at exit: 45,244 bytes in 102 blocks
==23467== total heap usage: 3,178 allocs, 3,076 frees, 628,727 bytes allocated
==23467==
==23467== LEAK SUMMARY:
==23467== definitely lost: 680 bytes in 11 blocks
==23467== indirectly lost: 44,564 bytes in 91 blocks
==23467== possibly lost: 0 bytes in 0 blocks
==23467== still reachable: 0 bytes in 0 blocks
==23467== suppressed: 0 bytes in 0 blocks
I just finished rewriting ugly parts of client and its now ready for SFGUI. I'm a big fan of WoW GUI, but if you have better ideas post drafts here!
@FullMetal-Alchimist /poke
Test every possible scenario to see if there is still a way to crash the server.
Ubuntu 12.04 - g++ 4.6.3
This crash happen after 5 seconds of playing.
Backtrace here:
#0 0x0812fad8 in ?? ()
#1 0x080c7050 in std::mem_fun1_t<void, Map, boost::shared_ptr >::operator()(Map*, boost::shared_ptr) const ()
#2 0x080c64a3 in std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > >::operator()(boost::shared_ptr const&) const ()
#3 0x080c5715 in std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > > std::for_each<__gnu_cxx::_normal_iteratorboost::shared_ptr<Player, std::vectorboost::shared_ptr<Player, std::allocatorboost::shared_ptr > >, std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > > >(__gnu_cxx::_normal_iteratorboost::shared_ptr<Player, std::vectorboost::shared_ptr<Player, std::allocatorboost::shared_ptr > >, __gnu_cxx::__normal_iteratorboost::shared_ptr<Player*, std::vectorboost::shared_ptr<Player, std::allocatorboost::shared_ptr > >, std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > >) ()
#4 0x080c46e3 in Map::Update(int) ()
#5 0x080c9645 in World::Update() ()
#6 0x080adb52 in boost::_mfi::mf0<void, World>::operator()(World*) const ()
#7 0x080d15e0 in void boost::_bi::list1boost::_bi::value<World* >::operator()<boost::_mfi::mf0<void, World>, boost::_bi::list1<boost::system::error_code const&> >(boost::_bi::type, boost::_mfi::mf0<void, World>&, boost::_bi::list1<boost::system::error_code const&>&, int) ()
#8 0x080d1545 in void boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >::operator()boost::system::error_code(boost::system::error_code const&) ()
#9 0x080d149f in boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>::operator()() ()
#10 0x080d1365 in void boost::asio::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code> >(boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>, ...) ()
#11 0x080d115a in void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>, boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > > >(boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>&, boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >&) ()
#12 0x080d0d42 in boost::asio::detail::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::bi::list1boost::bi::value<World* > > >::do_complete(boost::asio::detail::task_io_service, boost::asio::detail::task_io_service_operation, boost::system::error_code const&, unsigned int)
()
#13 0x080b2c3f in boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned int) ()
#14 0x080ca615 in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lockboost::asio::detail::posix_mutex&, boost::asio::detail::task_io_service::thread_info&, boost::asio::detail::op_queueboost::asio::detail::task_io_service_operation&, boost::system::error_code const&) ()
#15 0x080ca3bf in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#16 0x080ca758 in boost::asio::io_service::run() ()
#17 0x080c93ff in World::Run() ()
#18 0x080a83b5 in main ()
After more tests, a new backtrace is available:
#0 0x00000081 in ?? ()
#1 0x080bded5 in boost::checked_delete (x=0x811d548)
at /usr/local/include/boost/checked_delete.hpp:34
#2 0x080bdf3e in boost::detail::sp_counted_impl_p::dispose (this=0x812fa58)
at /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:78
#3 0x080a9d1a in boost::detail::sp_counted_base::release (this=0x812fa58)
at /usr/local/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:145
#4 0x080a9db0 in boost::detail::shared_count::~shared_count (this=0xbfffecdc,
__in_chrg=<optimized out>) at /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:305
#5 0x080b22ce in boost::shared_ptr::~shared_ptr (this=0xbfffecd8, __in_chrg=)
at /usr/local/include/boost/smart_ptr/shared_ptr.hpp:164
#6 0x080c7a80 in boost::shared_ptr::operator=(boost::shared_ptr&&) (this=0x811fadc,
r=...) at /usr/local/include/boost/smart_ptr/shared_ptr.hpp:377
#7 0x080c7536 in SpellBox::operator=(SpellBox&&) (this=0x811fad8)
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/SpellBox.hpp:28
#8 0x080c7ee5 in std::__copy_move<true, false, std::random_access_iterator_tag>::__copy_m<SpellBox*, SpellBox*> (__first=0x811fb00, __last=0x811fce0, __result=0x811fad8)
at /usr/include/c++/4.6/bits/stl_algobase.h:348
#9 0x080c79ce in std::__copy_move_a<true, SpellBox*, SpellBox*> (__first=0x811fb00,
__last=0x811fce0, __result=0x811fad8) at /usr/include/c++/4.6/bits/stl_algobase.h:384
#10 0x080c70d7 in std::__copy_move_a2<true, __gnu_cxx::__normal_iterator<SpellBox*, std::vector<SpellBox, std::allocator > >, __gnu_cxx::__normal_iterator<SpellBox*, std::vector<SpellBox, std::allocator > > > (__first=..., __last=..., __result=...)
at /usr/include/c++/4.6/bits/stl_algobase.h:422
#11 0x080c65a2 in std::move<__gnu_cxx::__normal_iterator<SpellBox*, std::vector<SpellBox, std::allocator > >, __gnu_cxx::__normal_iterator<SpellBox*, std::vector<SpellBox, std::allocator > > > (__first=..., __last=..., __result=...) at /usr/include/c++/4.6/bits/stl_algobase.h:486
#12 0x080c594a in std::vector<SpellBox, std::allocator >::erase (this=0x8104f54,
__position=...) at /usr/include/c++/4.6/bits/vector.tcc:139
#13 0x080c4877 in Map::UnitUpdate (this=0x8104f38, pUnit=...)
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/Map.cpp:81
#14 0x080c7050 in std::mem_fun1_t<void, Map, boost::shared_ptr >::operator() (this=0xbfffeeec,
__p=0x8104f38, __x=...) at /usr/include/c++/4.6/bits/stl_function.h:623
#15 0x080c64a3 in std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > >::operator() (
this=0xbfffeeec, __x=...) at /usr/include/c++/4.6/backward/binders.h:115
#16 0x080c57fd in std::for_each<__gnu_cxx::__normal_iteratorboost::shared_ptr<Creature*, std::vectorboost::shared_ptr<Creature, std::allocatorboost::shared_ptr > >, std::binder1st<std::mem_fun1_t<void, Map, boost::shared_ptr > > > (__first=..., __last=..., __f=...)
at /usr/include/c++/4.6/bits/stl_algo.h:4379
#17 0x080c4786 in Map::Update (this=0x8104f38, diff=50)
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/Map.cpp:70
#18 0x080c9645 in World::Update (this=0x81016b0)
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/World.cpp:128
#19 0x080adb52 in boost::_mfi::mf0<void, World>::operator() (this=0xbffff090, p=0x81016b0)
at /usr/local/include/boost/bind/mem_fn_template.hpp:49
#20 0x080d15e0 in boost::_bi::list1boost::_bi::value<World* >::operator()<boost::_mfi::mf0<void, World>, boost::_bi::list1<boost::system::error_code const&> > (this=0xbffff098, f=..., a=...)
at /usr/local/include/boost/bind/bind.hpp:253
#21 0x080d1545 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >::operator()boost::system::error_code (this=0xbffff090, a1=...)
at /usr/local/include/boost/bind/bind_template.hpp:47
#22 0x080d149f in boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>::operator() (
---Type to continue, or q to quit---
this=0xbffff090) at /usr/local/include/boost/asio/detail/bind_handler.hpp:46
#23 0x080d1365 in boost::asio::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code> > (function=...) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:64
#24 0x080d115a in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > >, boost::system::error_code>, boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > > > (function=..., context=...)
at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:39
#25 0x080d0d42 in boost::asio::detail::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf0<void, World>, boost::_bi::list1boost::_bi::value<World* > > >::do_complete (owner=0x8101650, base=0x811e290)
at /usr/local/include/boost/asio/detail/wait_handler.hpp:69
#26 0x080b2c3f in boost::asio::detail::task_io_service_operation::complete (this=0x811e290,
owner=..., ec=..., bytes_transferred=0)
at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:37
#27 0x080ca615 in boost::asio::detail::task_io_service::do_run_one (this=0x8101650, lock=...,
this_thread=..., private_op_queue=..., ec=...)
at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:394
#28 0x080ca3bf in boost::asio::detail::task_io_service::run (this=0x8101650, ec=...)
at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:146
#29 0x080ca758 in boost::asio::io_service::run (this=0xbffff2b8)
at /usr/local/include/boost/asio/impl/io_service.ipp:59
#30 0x080c93ff in World::Run (this=0x81016b0)
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/World.cpp:93
#31 0x080a83b5 in main ()
at /home/ryan/Documents/Développement/Projets/Warrior-of-Dreamworld/branch_thread/server/main.cpp:39
I think that this is due to the NPC, but I'm not sure yet.
Not tested with last branch thread (Maybe corrected with the series of asio_x correction ?)
I think title explains it.
Instead of world_edit, implement live world editing into client, and allow only admins to do that.
AI are overpowered, they can cast a lot of spells in one tick, and teleports to you !?
I think that this is due to the new diff time system (boost::chrono)
Hahahaha, 140047k of diff :D
Fixed in last commit of Working branch
HELP!!
Client doesnt like server shutdown.
All data from templates should be available to client.
So, the title explains all.
Two players can't connect at the same time to server.
Also, one player can't connect to a external server (I mean with 82...** IP)
Need confirmation also that it's not my firewall who blocks data.
Player-Player collision would be abusable (path blocking).
Player-Creature/Object collision is needed for interaction (quests/vendors/random objects), and nicer melee attack.
For some reason, I am getting massive mem leaks whenever we bind &operator delete to std::for_each. I am unable to reproduce this on simple programs...
==4057==
==4057== HEAP SUMMARY:
==4057== in use at exit: 7,322 bytes in 46 blocks
==4057== total heap usage: 825 allocs, 779 frees, 569,958 bytes allocated
==4057==
==4057== 16 bytes in 1 blocks are definitely lost in loss record 1 of 13
==4057== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4057== by 0x5056C6: GetScript_map_test_map(Map_) (map_test_map.cpp:37)
==4057== by 0x4D889E: AIFactory::CreateMapScript(std::string const&, Map_) (AIFactory.cpp:63)
==4057== by 0x4CCD21: CreateScript(std::string const&, Map_) (MapScript.cpp:25)
==4057== by 0x4C490E: Map::Map(MapTemplate_, unsigned int) (Map.cpp:37)
==4057== by 0x4DC82F: World::Load() (World.cpp:104)
==4057== by 0x4D1B81: main (main.cpp:31)
==4057==
==4057== 29 bytes in 1 blocks are definitely lost in loss record 3 of 13
==4057== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4057== by 0x58273B8: std::string::Rep::S_create(unsigned long, unsigned long, std::allocator const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x5828D94: char* std::string::S_construct<char const*>(char const, char const, std::allocator const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x5828EAC: std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, unsigned long, std::allocator const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x54D55F8: sql::SQLString::SQLString(char const_, unsigned long) (in /usr/lib/libmysqlcppconn.so.5.1.1.0)
==4057== by 0x5518DE4: sql::mysql::MySQL_Prepared_ResultSet::getString(unsigned int) const (in /usr/lib/libmysqlcppconn.so.5.1.1.0)
==4057== by 0x4F87C4: ObjectMgr::LoadPlayersLoginInfo() (ObjectMgr.cpp:221)
==4057== by 0x4DC5B7: World::Load() (World.cpp:86)
==4057== by 0x4D1B81: main (main.cpp:31)
==4057==
==4057== 29 bytes in 1 blocks are definitely lost in loss record 4 of 13
==4057== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4057== by 0x58273B8: std::string::Rep::S_create(unsigned long, unsigned long, std::allocator const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x5828D94: char* std::string::S_construct<char const*>(char const, char const, std::allocator const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x5828EAC: std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, unsigned long, std::allocator const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==4057== by 0x54D55F8: sql::SQLString::SQLString(char const_, unsigned long) (in /usr/lib/libmysqlcppconn.so.5.1.1.0)
==4057== by 0x5518DE4: sql::mysql::MySQL_Prepared_ResultSet::getString(unsigned int) const (in /usr/lib/libmysqlcppconn.so.5.1.1.0)
==4057== by 0x4F880D: ObjectMgr::LoadPlayersLoginInfo() (ObjectMgr.cpp:221)
==4057== by 0x4DC5B7: World::Load() (World.cpp:86)
==4057== by 0x4D1B81: main (main.cpp:31)
==4057==
==4057== 48 (24 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 6 of 13
==4057== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4057== by 0x4CAE24: __gnu_cxx::new_allocatorstd::List_node<Creature* >::allocate(unsigned long, void const) (new_allocator.h:94)
==4057== by 0x4CA353: std::List_base<Creature, std::allocator<Creature*> >::_M_get_node() (stl_list.h:335)
==4057== by 0x4C93EC: std::_List_node<Creature*>* std::list<Creature*, std::allocator<Creature*> >::_M_create_node<Creature* const&>(Creature* const&&&) (stl_list.h:500)
==4057== by 0x4C7F41: void std::list<Creature*, std::allocator<Creature*> >::M_insert<Creature* const&>(std::List_iterator<Creature*>, Creature* const&&&) (stl_list.h:1533)
==4057== by 0x4C6BCF: std::list<Creature*, std::allocator<Creature*> >::push_back(Creature* const&) (stl_list.h:997)
==4057== by 0x4C4FBE: Map::Load() (Map.cpp:75)
==4057== by 0x4DC83F: World::Load() (World.cpp:105)
==4057== by 0x4D1B81: main (main.cpp:31)
==4057==
==4057== 7,200 (720 direct, 6,480 indirect) bytes in 1 blocks are definitely lost in loss record 13 of 13
==4057== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4057== by 0x4CAC66: _gnu_cxx::new_allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > >::allocate(unsigned long, void const) (new_allocator.h:94)
==4057== by 0x4CA06C: std::Vector_base<std::vector<WorldObject, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > >::M_allocate(unsigned long) (in /home/krofna/Dev/Warrior-of-Dreamworld/build/bin/Server/Debug/Server)
==4057== by 0x4C8F50: std::vector<std::vector<WorldObject*, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > >::M_fill_insert(__gnu_cxx::__normal_iterator<std::vector<WorldObject*, std::allocator<WorldObject*> >, std::vector<std::vector<WorldObject, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > > >, unsigned long, std::vector<WorldObject*, std::allocator<WorldObject*> > const&) (vector.tcc:481)
==4057== by 0x4C7B59: std::vector<std::vector<WorldObject*, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > >::insert(__gnu_cxx::__normal_iterator<std::vector<WorldObject*, std::allocator<WorldObject*> >, std::vector<std::vector<WorldObject, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > > >, unsigned long, std::vector<WorldObject*, std::allocator<WorldObject*> > const&) (stl_vector.h:1004)
==4057== by 0x4C661A: std::vector<std::vector<WorldObject*, std::allocator<WorldObject*> >, std::allocator<std::vector<WorldObject*, std::allocator<WorldObject*> > > >::resize(unsigned long, std::vector<WorldObject*, std::allocator<WorldObject*> > const&) (stl_vector.h:667)
==4057== by 0x4C496E: Map::Map(MapTemplate*, unsigned int) (Map.cpp:38)
==4057== by 0x4DC82F: World::Load() (World.cpp:104)
==4057== by 0x4D1B81: main (main.cpp:31)
==4057==
==4057== LEAK SUMMARY:
==4057== definitely lost: 818 bytes in 5 blocks
==4057== indirectly lost: 6,504 bytes in 41 blocks
==4057== possibly lost: 0 bytes in 0 blocks
==4057== still reachable: 0 bytes in 0 blocks
==4057== suppressed: 0 bytes in 0 blocks
==4057==
==4057== For counts of detected and suppressed errors, rerun with: -v
==4057== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 2 from 2)
If I change the window size (For example to 1024x768) angle of spell bolts shot by player (mouse click) gets incorrect.
They are also not synced on client/server sides, since packets do not say when was the spell shot.
They are also never cleaned on server side, wasting memory and CPU.
This bug occur when we try to use a command.
Try in chat : ".help teleport at"
You will have two times the same message.
It seems that it can't be debugged easily because, when I try to make a step by step debugging, this bug not occur... Strange.
I'm working on.
Intuition: Something with OnChat and Say player-side ? Broken by emotes ?
My intuitions are always true :D
Fixed in 7f18055
Currently, when we disconnect from server and we were in combat mode, the agro still because unit pointer is still allocated, so when we reconnect, the creatures still attack us. This should be handle it.
Method for making this bug:
Finish Ubuntu/Debian compile tutorial. Fix bad engrish.
Write Windows compile tutorial (Related to #22)
Offer prebuilt binaries, and tutorial for setup.
Program received signal SIGSEGV, Segmentation fault.
0x00000000004aca32 in WorldObject::GetPosition (this=0x0)
at /home/krofna/Dev/Warrior-of-Dreamworld/client/WorldObject.cpp:67
67 return ObjectSprite.getPosition();
In 0.02.
There are 2 issues.
Seriously? Thats pretty nasty hack, ryan.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.