Marik
-
Posts
28 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by Marik
-
-
If not resurected You have to talk to the npc again and the counter starts from the beginning, this problem occurs pretty often.
Yes, this is really frustrating.
I thought about reviving in three (or so) sequential frames.
What do you think about this?
Marik
-
I remember we had (or still have) a similar bug on our server.
The user told me, that if someone equipp more than 3 of these special gems, their wow crashes.
How many gems did you equip?
Marik
-
That would be very nice.
I've tried the patch on the last revision, but there are way to many conflicts
Marik
-
That was a joke.
Anyway, now it works properly again.
Thanks
-
An error was encountered
Error: Page Not found (Error 404): The requested page /wiki/ could not be found..
---
Maybe you've deleted too much
-
I'am now using rsa patch (https://github.com/rsa/mangos/commit/e8b1a653d07801fdfea81de2e0352594fefea5fd).
Untill now it works fine.
I can summon totems everywhere (also in instances) and in a first test my scriptdev2 script doesn't crash.
Further tests will be needed, but for now it looks pretty nice.
Maybe we can apply this patch @ Mangos?
-
Hi Folks,
I've investigated my Problem.
Pls correct me, if i am wrong.
#if PLATFORM == PLATFORM_WINDOWS inline uint32 getMSTime() { return GetTickCount(); } #else inline uint32 getMSTime() { struct timeval tv; struct timezone tz; gettimeofday( &tv, &tz ); return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); } #endif
Let's start with windows.
It is called the GetTickCount() method from the WinAPI. (http://msdn.microsoft.com/en-us/library/ms724408(VS.85).aspx)
Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days.So in the case of my windows computer the Value was in the test something like 5000 0000 --> apr. 5000 seconds --> 83 minutes. 5000 0000 is a relative small number and fits in a unit32 without problems.
So now Linux.
gettimeofday( &tv, &tz ); return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
gettimeofday( &tv, &tz ); Calculates the seconds (and milliseconds) from the 1.1.1970.
Let's Calculate.
Appr. more than 40 Years = 40 * 365 days * 24 hour * 3600 seconds = 1.261.440.000
Ok this wouldn't overflow an uint32 (2^32 = 0-4.294.967.295)
But you return:
return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
Ok, it makes sense, because we want the milliseconds, but now it ist 1.261.440.000 * 1.000 = 1.261.440.000.000 what definitively overflows the uint32 (2^32 = 0-4.294.967.295).
The result from getMSTime() is used for the Updates in the world since this commit. That's new.
Why I am telling you?
I just want my totems back @ linux
I don't now whether I am right.
And even if all the points, I mentioned are correct, I do not know how it could falsify the system. I mean, so what? the milliseconds overflows the data bounds, but there would be some kind of modulo operation. Timeimillisec % 2^32, would'n it?
The easiest way, would be, that some please test this commit @ a platform which is not windows.
Thus, nobody seams to have my totem Problem, I think all my considerations are void
Anyway, Good night Everybody!
Marik
Small Addition: With this Commit I had very weird crashes in some scripts. In one script its crashed at three different Codelines (Play sound A, Play sound B, change flag --> Easy stuff). Before this commit I haven't got problems with this crash. And now, I am on one Commit before this, I've tested the same script and no crashes. I don't now whether it is all linked together, but it is problably.
-
On my debian Server anywhere.
EDIT: Does anybody has also problems to summon totems on a linux distribution? Otherwise I would invest more time, to check, whether it is my fault. But as I said, the same Commit does work at windows properly.
-
Unfortunately I cannot summon any totems anymore with this commit @ my dedicated debian server.
On Windows everything works fine.
RSA, mentioned some doubts in a comment @ Github.
Greetz Marik
-
fix only related use "bind to account items" in part ignore reputation req at use.
But you still need required level for use.
I assumed that.
First Char bought the Item, because this char has enough reputation.
Second Char is at level 80, but have not enough reputation.
Now i thought, the fix, solves this Problem.
I mean, that my second character can use (enchant) the item despite of his missing reputation.
Where is my error in reasoning?
By the way: I dont now why Blizzard has exactly two items of one enchant. Maybe the item which is sold, is the one with the reputation. And after sending the item via mail, or even earlier, after you buy it, it will transform to the item without reputation. That would make sense.
-
Hm. The Item, you have postet, has no reputation requirements. If I let a NPC sell it, every player (doesn't matter if he has a char with needed reputation) can buy this item.
Am I wrong?
-
Hi,
how it is supposed to work?
I've pulled the current Mangos version and bought me with a char http://www.wowhead.com/item=50335 (this char has max reputation).
The Sending to another char (reputation hatefull) on my account works, but the reputation font is still read and right klick on the item tells me, that i cannot use this item.
Is there some kind of flag, I've forgotten to set @ Database?
Thanks in Advice
Marik
-
diff --git a/src/game/Item.h b/src/game/Item.h index 6b87604..b470564 100644 --- a/src/game/Item.h +++ b/src/game/Item.h @@ -359,6 +359,7 @@ class MANGOS_DLL_SPEC Item : public Object void SetLootState(ItemLootUpdateState state); bool HasGeneratedLoot() const { return m_lootState != ITEM_LOOT_NONE && m_lootState != ITEM_LOOT_REMOVED; } bool HasSavedLoot() const { return m_lootState != ITEM_LOOT_NONE && m_lootState != ITEM_LOOT_NEW && m_lootState != ITEM_LOOT_TEMPORARY; } + bool IsTemporaryLoot() const { return m_lootState == ITEM_LOOT_TEMPORARY; } // Update States ItemUpdateState GetState() const { return uState; } diff --git a/src/game/LootHandler.cpp b/src/game/LootHandler.cpp diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 1daeabd..c92bf9f 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -7900,7 +7900,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type) loot = &item->loot; - if (!item->HasGeneratedLoot()) + if (!item->HasGeneratedLoot() || item->IsTemporaryLoot()) { item->loot.clear();
That would fix the problem. I've tested it.
Whether it is good code style, you have to decide.
Maybe you prefer to combinte this two method calls to one new: !item->HasGeneratedLoot() || item->IsTemporaryLoot()
Thats implementation details.
I hope, I could help.
Marik
-
I think the problem lies in hier:
if (!item->HasGeneratedLoot()) { item->loot.clear(); switch(loot_type) { case LOOT_DISENCHANTING: loot->FillLoot(item->GetProto()->DisenchantID, LootTemplates_Disenchant, this,true); item->SetLootState(ITEM_LOOT_TEMPORARY); break; case LOOT_PROSPECTING: loot->FillLoot(item->GetEntry(), LootTemplates_Prospecting, this,true); item->SetLootState(ITEM_LOOT_TEMPORARY); break; case LOOT_MILLING: loot->FillLoot(item->GetEntry(), LootTemplates_Milling, this,true); item->SetLootState(ITEM_LOOT_TEMPORARY); break; default: loot->FillLoot(item->GetEntry(), LootTemplates_Item, this,true); loot->generateMoneyLoot(item->GetProto()->MinMoneyLoot,item->GetProto()->MaxMoneyLoot); item->SetLootState(ITEM_LOOT_CHANGED); break; } } break; }
In the first round u can fullfill if (!item->HasGeneratedLoot()).
But then you set item->SetLootState(ITEM_LOOT_TEMPORARY);
Now item->HasGeneratedLoot() returns true and if (!item->HasGeneratedLoot()) is false.
Therefore the programm does not acces the above code and does not create the new loot.
Greetz Marik
-
Addition: It depends on the Stack. So if i have a 20 Stack of an ore just the first has a loot.
But, if there is another Stack, again the first has loot.
Addition2: After Prospecting two different Stacks it is not possible to stack items together, anymore. (So i Can not stack two different Stacks with each 10 Ores)
-
Mangos Version: [10675]
Custom Patches: None
SD2 Version: None
Database Name and Version: Current PSMDB
The Problem: Since the implementation of partly item looting (http://github.com/mangos/mangos/commit/be120e8800e7b090fbe450bb9c7dabb8c5ba640d), it is not possible to get some loot from Miling and Prospecting.
I.E.: First time i mile or prospect i get a loot. The next x-times the loot is empty
Greetz Marik
-
Hello,
Since the new ACE version http://github.com/mangos/mangos/commit/3c0f8c0efca896fd900adc7bc4cce6ec6360086c my server crashes really often:
Core was generated by `./mangos-worldd'.Program terminated with signal 11, Segmentation fault.
[New process 14287]
[New process 14271]
[New process 14286]
[New process 14285]
[New process 14284]
[New process 14283]
[New process 14282]
[New process 14281]
[New process 14280]
[New process 14279]
[New process 14278]
[New process 14277]
[New process 14276]
[New process 14274]
[New process 14273]
[New process 14272]
#0 0x00007f09243349bc in ACE_Message_Block::total_size_and_length (
this=0x7f08ea26d0d0, mb_size=@0x4780ce40, mb_length=@0x4780ce38)
at ../../../../dep/ACE_wrappers/ace/Message_Block.cpp:264
264 mb_size += i->size ();
#0 0x00007f09243349bc in ACE_Message_Block::total_size_and_length (
this=0x7f08ea26d0d0, mb_size=@0x4780ce40, mb_length=@0x4780ce38)
at ../../../../dep/ACE_wrappers/ace/Message_Block.cpp:264
i = (const ACE_Message_Block *) 0x7f08ea26d0d0
#1 0x00000000005189af in ACE_Message_Queue<ACE_NULL_SYNCH>::dequeue_head_i (
this=0x7f08f3917ba0, first_item=@0x4780cea0)
at ../../../dep/ACE_wrappers/ace/Message_Queue_T.cpp:1461
mb_bytes = 0
mb_length = 0
#2 0x0000000000517ffc in ACE_Message_Queue<ACE_NULL_SYNCH>::dequeue_head (
this=0x7f08f3917ba0, first_item=@0x4780cea0, timeout=<value optimized out>)
at ../../../dep/ACE_wrappers/ace/Message_Queue_T.cpp:1941
ace_mon = {<No data fields>}
#3 0x000000000081f1bb in WorldSocket::handle_output_queue (
this=0x7f08f3935d00, g=@0x4780ced0)
at ../../../src/game/WorldSocket.cpp:375
mblk = <value optimized out>
send_len = <value optimized out>
n = <value optimized out>
#4 0x000000000081fa22 in WorldSocket::handle_output (this=0x7f08f3935d00)
at ../../../src/game/WorldSocket.cpp:362
Guard = {lock_ = 0x7f08f3936020, owner_ = 0}
send_len = 0
n = 4294967295
#5 0x00007f0924318fbf in ACE_Dev_Poll_Reactor::dispatch_io_event (
this=0x7f08f3a90a00, guard=@0x4780cfe0)
at ../../../../dep/ACE_wrappers/ace/Dev_Poll_Reactor.inl:86
eh_guard = {eh_ = 0x7f08f3935d00, refcounted_ = true}
info = <value optimized out>
disp_mask = 2
eh = (class ACE_Event_Handler *) 0x7f08f3935d00
status = 2
handle = 32
revents = <value optimized out>
#6 0x00007f09243197ce in ACE_Dev_Poll_Reactor::handle_events (
this=0x7f08f3a90a00, max_wait_time=0x4780e090)
at ../../../../dep/ACE_wrappers/ace/Dev_Poll_Reactor.cpp:1015
countdown = {<ACE_Copy_Disabled> = {<No data fields>},
max_wait_time_ = 0x4780e090, start_time_ = {static zero = {
static zero = <same as static member of an already seen type>,
static max_time = {
static zero = <same as static member of an already seen type>,
static max_time = <same as static member of an already seen type>,
tv_ = {tv_sec = 9223372036854775807, tv_usec = 999999}}, tv_ = {
tv_sec = 0, tv_usec = 0}},
static max_time = <same as static member of an already seen type>, tv_ = {
tv_sec = 1288385317, tv_usec = 361021}}, stopped_ = false}
guard = {token_ = @0x7f08f3a90a78, owner_ = 0}
result = -1
#7 0x00007f092437023d in ACE_Reactor::run_reactor_event_loop (
this=0x7f091ee21900, tv=@0x4780e090, eh=0)
at ../../../../dep/ACE_wrappers/ace/Reactor.cpp:267
result = -206437520
#8 0x0000000000824fa1 in ReactorRunnable::svc (this=0x7f08f3b202c0)
at ../../../src/game/WorldSocketMgr.cpp:167
interval = {static zero = {
static zero = <same as static member of an already seen type>,
static max_time = {
static zero = <same as static member of an already seen type>,
static max_time = <same as static member of an already seen type>,
tv_ = {tv_sec = 9223372036854775807, tv_usec = 999999}}, tv_ = {
tv_sec = 0, tv_usec = 0}},
static max_time = <same as static member of an already seen type>, tv_ = {
tv_sec = 0, tv_usec = 10000}}
__FUNCTION__ = "svc"
__PRETTY_FUNCTION__ = "virtual int ReactorRunnable::svc()"
#9 0x00007f0924395207 in ACE_Task_Base::svc_run (args=<value optimized out>)
at ../../../../dep/ACE_wrappers/ace/Task.cpp:271
t = (ACE_Task_Base *) 0x7f08f3b202c0
svc_status = <value optimized out>
#10 0x00007f09243968b5 in ACE_Thread_Adapter::invoke (this=0x7f08f3acce80)
at ../../../../dep/ACE_wrappers/ace/Thread_Adapter.cpp:94
exit_hook_instance = <value optimized out>
exit_hook_maybe = {instance_ = 0x0}
exit_hook_ptr = <value optimized out>
#11 0x00007f0922a16fc7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#12 0x00007f0921fe659d in clone () from /lib/libc.so.6
No symbol table info available.
#13 0x0000000000000000 in ?? ()
No symbol table info available.
-
Hi,
I've a small aesthetic thing. It's not so bad I hope.
Anyway, I get sometimes an Database Error:
SQL: DELETE FROM creature_respawn WHERE guid = '113185' AND instance = '0&2010-10-27 01:43:28 SQL ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0&' at line 1
The only function in the code, which creates such a SQL Query is the follow:
void ObjectMgr::SaveCreatureRespawnTime(uint32 loguid, uint32 instance, time_t t){
mCreatureRespawnTimes[MAKE_PAIR64(loguid,instance)] = t;
CharacterDatabase.PExecute("DELETE FROM creature_respawn WHERE guid = '%u' AND instance = '%u'", loguid, instance);
if(t)
CharacterDatabase.PExecute("INSERT INTO creature_respawn VALUES
( '%u', '" UI64FMTD "', '%u' )", loguid, uint64(t), instance);
}
Does somebody have an idea how it comes, that the uint32 in combination with the %u flag can be "0&"?
Isn't that mysterious somehow?
Greeting Marik
-
I've taken the liberty of creating a patch for your typo an add another.
diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index b326354..235b42a 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -953,8 +953,8 @@ ListenRange.Yell = 300 # Chat protection from creating fake messages using a lot spaces (other invisible symbols), # not applied to addon language messages, but can prevent working old addons # that use normal languages for sending data to another clients. -# Default: 0 (disible fake messages preventing) -# 1 (enabled fake messages preventing) +# Default: 0 (disable fake messages preventing) +# 1 (enable fake messages preventing) # # ChatStrictLinkChecking.Severity # Check chat messages for ingame links to spells, items, quests, achievements etc.
-
Hi,
now i've changed the wait_timeout system variable (in my mysqlserver) from 8 houts to 7 Days.
I guess that will prevent my "server gone away" problem.
Thanks
-
So, whats the solution to let the mysql server "come back" ?
I Mean what code can I use too test it and thus reconnect the mysql server with the gameserver?
I would add this code beforce every Query.
-
Hi folks,
I've tried the modified ScriptDev2 from RSA (http://github.com/rsa/scriptdev2/commits/master), where the spells are saved in a table.
The framework loads all spellentrys at runtime.
Unfortunatelly, sometimes (i cannot find some kind of order, it just happens sometimes [maybe the server runs for a too long time?]) i get an mysql error:
2010-10-11 11:16:39 SQL: SELECT entry, spellID_N10, spellID_N25, spellID_H10, spellID_H25, timerMin_N10, timerMin_N25, timerMin_H10, timerMin_H25, timerMax_N10, timerMax_N25, timerMax_H10, timerMax_H25, data1, data2, data3, data4, locData_x, locData_y, locData_z, varData, StageMask_N, StageMask_H, CastType, isVisualEffect, isBugged, textEntry FROM `boss_spell_table` WHERE entry = 34796;2010-10-11 11:16:39 query ERROR: MySQL server has gone away
The server runs without other errors.
If i type the query in a mysql console (e.g. navicat), the query works fine.
The reason, why i've created a thread in this forum, is because the framework from RSA uses the standard database access from mangos. So I expect the error in the mangos software not in the scriptdev framework.
Maybe someone has an Idea.
Thanks in Advice
Marik
Edit: I Use the standard Mangos Core with some Modification to run rsa's sd2:
-
Before I try to teleport to someone in an instance (.goname playername) I always delete all my IDs with .instance unbind all.
Unfortunatelly that doesn't end this "anomaly".
-
Hello,
i am not sure, whether it is truly a bug or just some caching problem or something like that.
Anyway, I sometimes cannot teleport to players in an Instance. To be exact no Gamemaster can.
If you try, you will be portet to the nearest graveyard.
However, the problem is not appearing always.
For instance there are two groups with different IDs, it is possible to teleport to one group whereas the other group reveals the bug.
Thanks in Advice
Marik(23)
Crashlog with 0 Bytes
in OldGeneral discussion
Posted
Hi,
my mangos server is running on an debian 64-bit dedicated server.
To start my process I use this script:
Which calles:
Anyway, this was pretty nice untill i reinstalled my server (the whole debian server, not just mangos ).
Now I get with every crash an 0 Byte Crashlog.
First, I thought it was because of missing rights, but I granted the logs folder all rights.
Notice that the process creates the crashlogs corectly, but does not write anything to the file.
Does somebody has an idea?
Thanks in advice
Marik