Jump to content

FragFrog

Members
  • Posts

    159
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by FragFrog

  1. I think your estimate for the PS3 is a bit low - I find sources indicating it's more like 400GFLOPs. However, AMD's HemlockXT 5970 GPU for example rates about 4TFLOPS, roughly ten times as fast. But I very much doubt you can use any of that power with Mangos' current design, even if you could get it to run. Might be interesting to see if it can be optimized for CUDA though, too bad none of our servers have a decent GPU
  2. Mangos: s0096 SD2: 1767 TBCDB: 0.2.2 Getting a lot of crashes at the moment - about once every half hour at the moment. Crash log is rather empty though: Revision: * * 0096 * Date 8:8:2010. Time 9:21 //===================================================== *** Hardware *** Processor: Intel(R) Core(TM)2 CPU E8400 @ 3.00GHz Number Of Processors: 2 Physical Memory: 4181744 KB (Available: 1037760 KB) Commit Charge Limit: 4194303 KB *** Operation System *** Microsoft Windows Server 2003 Standard Edition Service Pack 2 (Version 5.2, Build 3790) //===================================================== Exception code: C0000005 ACCESS_VIOLATION Any ideas / fixes would be most helpfull.
  3. Seeing a lot of these, all the same. Could be custom patch related though - mangos 0.12 branch, just before s0001. Revision: * * 8569 181ae079809eb3c9fc919931834ed2b929c00bbd Date 5:8:2010. Time 14:13 //===================================================== *** Hardware *** Processor: Intel(R) Core(TM)2 CPU E8400 @ 3.00GHz Number Of Processors: 2 Physical Memory: 4181744 KB (Available: 1587804 KB) Commit Charge Limit: 4194303 KB *** Operation System *** Microsoft Windows Server 2003 Standard Edition Service Pack 2 (Version 5.2, Build 3790) //===================================================== Exception code: C0000005 ACCESS_VIOLATION Fault address: 004EB6F2 01:000EA6F2 C:\\MaNGOS\\mangosd.exe Registers: EAX:0792BA40 EBX:B83470B0 ECX:94420100 EDX:00000000 ESI:00000000 EDI:0086BB30 CS:EIP:001B:004EB6F2 SS:ESP:0023:0792B910 EBP:0792BA78 DS:0023 ES:0023 FS:003B GS:0000 Flags:00010246 Call stack: Address Frame Function SourceFile 004EB6F2 00000000 ?SendObjectUpdates@Map@@AAEXXZ+D2 004E0F77 00000000 ?Update@Map@@UAEXABI@Z+657 004E78D3 00000000 ?Update@InstanceMap@@UAEXABI@Z+13 00806E9E 00000000 ?HandleGMSurveySubmit@WorldSession@@QAEXAAVWorldPacket@@@Z+58E 00673368 00000000 ?GetEmotesTextStore@@YAPBV?$DBCStorage@UEmotesTextEntry@@@@XZ+2C188 0061E452 00000000 ??0CreatureEventAI@@QAE@ABV0@@Z+5392 00455D7E 00000000 ?getSource@?$Reference@V?$GridRefManager@VCorpse@@@@VCorpse@@@@QBEPAVCorpse@@XZ+3B44E 0086BB49 00000000 ?GetFloatDefault@Config@@QAEMPBDM@Z+E09 00291864 00000000 ?invoke@ACE_OS_Thread_Adapter@@UAEKXZ+74 78543433 00000000 _endthreadex+44 785434C7 00000000 _endthreadex+D8 77E6482F 00000000 GetModuleHandleA+DF
  4. If it helps: I'm currently testing one of the latest pre-tbc-revision cores, haven't had a crash in the past few days yet on our testserver running a 32bit windows compile. Of course, that is only with a dozen testers, a full server might be a bit less stable.
  5. More even, I believe they have special BG servers as well and independant instance servers also. I have worked with MuOnline, a very old MMO, for a few years - it had 12 seperate programs to run to get a server up, almost all of them could be on a seperate machine. A bit more work to setup, but the advantage was pretty clear: a crash in one part just meant a few people got kicked out of an instance, not a whole server having to restart. Quite helped with multithreading as well. AH slowness is as far as I know related to the way item search used to be implemented. Has not been an issue for us lately, I would guess the problem is solved. At any rate moving the AH won't help much, you'd have to move the database to another server (or of course use a seperate database for AH, that might work and is probably fairly easy to accomplish).
  6. I am not sure, but I think you cannot compile VC++ projects with Netbeans. There is however a linux build included in the source as well, so you can probably import the makefile or w/e it uses, get Cygwin / MinGW or alike for a compiler and see where it goes from there. Really though, if you are working under windows, Visual Studio Express edition is free and in my opinion a lot better than Netbeans (which I work with for my JAVA apps). Not to mention the linux builds tend to break from time to time. VS is fairly easy to get the hang off, and since Mangos does not sport a GUI anyway you won't have to worry about GUI editing (which I admit Netbeans does rather well).
  7. As far as I know only those from the console. No commands that would require a selected character (like .levelup, .modify, etcetera) are enabled through SOAP, and those are the same you cannot use through the console. If you don't know whether you need it, as a rule of thumb, you probably don't.
  8. What I meant was you could try/catch the entire function whenever you call it. Catching directly after the error is thrown and then sending an error as return value really is a bit superflous
  9. You could use the SOAP interface to do a .pdump write / .character delete / .pdump load. That would effectively recreate the character, though what you hope to achieve by this is beyond me.
  10. A tip for future reference: $f = fopen("soaperror.log", "a+"); fwrite($f, $errorstring); fclose($f); This can be rewritten in a single statement using the file_put_contents method: file_put_contents('soaperror.log', $errorstring, FILE_APPEND); However, limit your file-writes to a minimum. I strongly suggest disabling file-logging as well with debug off, imagine a bigger script with a dozen methods like this, even a simple pageview would mean a dozen (slow!) filewrites - you don't want that. You're better off building a logging method (or using a framework with one) that writes out all log entries at the end of a script in one call. Also, be careful with underscores in front of your function names. A double underscore is used for magic methods (like __get(), __construct(), etcetera), using a single underscore is a bug waiting to happen. Last but not least, why put the try / catch inside the function? What you're doing now is catching an error if it occurs, and then manually add an error to your output - so why do this at all? Just let the exception propogate and let calling methods deal with it. That way you can always simply return the SOAPresult string without having to worry about boolean return types Overall though there is already a good example of how to use procedural PHP code to deal with the SOAP interface in the source (/contrib/soap/example.php). If you want to add to that, an object oriented example would be a lot more useful in my opinion.
  11. http://github.com/mangos/mangos/commit/2bc93d6583492513f0cf4e64e88b2c0faf8a08ef Just tested, the update fixes it. Thanks Vladimir!
  12. To be honest, I am not sure what I do is the best way, but patches tend to be easier for me then making a new branch and all that (of course, I primarily use SVN, experienced GiT users will probably find branching and merging easier). To make a patch (I always use the command line for this, and this assumes you already have a local copy checked out): First, after modifying the core I check the status: Z:\\Mangos\\TBC\\mangos-10160-sd2-1737>git status # On branch 243 # Your branch is ahead of 'origin/mangos-0.12' by 1 commit. # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: src/shared/ServiceWin32.cpp # modified: src/shared/ServiceWin32.h # no changes added to commit (use "git add" and/or "git commit -a") This is from my current development repository. As you can see, there are a few changed files. I add those to the next commit: Z:\\Mangos\\TBC\\mangos-10160-sd2-1737>git add src/shared/ServiceWin32.cpp Z:\\Mangos\\TBC\\mangos-10160-sd2-1737>git add src/shared/ServiceWin32.h Now I can commit the files I just added. The -m modifier allows me to enter a message for this commit, which will be used as name for the patch file. Z:\\Mangos\\TBC\\mangos-10160-sd2-1737>git commit -m "Allow custom service name" [243]: created 14ad865: "Allow custom service name" 2 files changed, 28 insertions(+), 0 deletions(-) Allright, files are added, committed, now all we need to do is make a patch file out of them: Z:\\Mangos\\TBC\\mangos-10160-sd2-1737>git format-patch -1 0001-Allow-custom-service-name.patch Et voila, I now have a file '0001-Allow-custom-service-name.patch' with the changes required. To apply it on a clean checkout I can just hit 'git apply [filename]' and it will apply this patch. As said, this is what works for me, but I do believe GiT is more commonly used in a branching / merging fashion where you create a (local) repository with your own changes and simply merge updates from the official repositories into it. This is probably easier as well, although it might be a bit tricky when you want to exclude a patch at some point (for example, when something gets fixed that you used to have a hacky patch for, you'll not want your hack but the official fix). I am sure one of the more experienced GiT users can explain that in more detail
  13. In that case you can either create your own local branch and merge it with the official repositories, or create patches and reapply those after updating. That's how I do it, I generally spend a few hours after each update applying patches, compiling, testing and adjusting patches where necessary. Most tend to go allright, but with over a dozen patches there's generally one or two that break with any major update. Once we get a good working version on test it's comitted to an SVN repository with binaries, so on the live server we can simply do an update to get the latest version. We have used FTP in the past, but it's generally not a bad idea to be able to rollback the core to a previous state without having to recompile and all that. It's also the reason we don't update more often than once a month or so, preparing and testing an update simply takes too much time to do it every week
  14. That is only possible if you create a virtual private network and bind mangos to the local IP of that network. Binding means selecting which IP to use locally, it does not mean only that IP can connect to it! You can of course use a firewall to limit access to only that address, otherwise no dice.
  15. You can't. The only thing updated is the source. To run source you have to compile it. Ergo, to update your server you must first update your source, then compile it and then copy the new core to your server. Of course, alternatively you can use binary server packs, there's a few repo's around for those. Use at your own risk though.
  16. I can confirm this bug in 0.12 branch 10160. Lifebloom stacks as 1 -> 3 -> 4 -> 4 -> 4 (etc). Should be 1 -> 2 -> 3 -> 3 -> (etc). Not a huge problem as its a visual bug only, but I'd guess the solution would be fairly simple?
  17. Don't pay any attention to that: TBCDB will work with the very latest Mangos core (I am currently running the TBC equivalent of mangos 10160 on our testserver, using TBCDB 0.2.2). Note that the very latest SD2 version is not entirely compatible with the latest Mangos always, I maintain an SVN repository of our win32 binaries (here) and as you can see my latest compile uses SD2 revision 1737. It's usually a matter of simply trying what works, or if a particular script fails to compile, revert to a version just before that (or fix the error - I mostly had to adjust some target selection code for SD2 to work with older scripts). As Vladimir of course pointed out, after you install TBCDB it will be hopelessly outdated so you need to apply SQL patches from the Mangos/sql/updates folder starting with the next one you don't have. If your DB mentions 076_8702, this means you need to apply 077_8728_01_realmd_account.sql, 078_8749_01_mangos_mail_loot_template.sql, etcetera all the way up to the very latest update in your git checkout (138_7056_01_mangos_spell_proc_event.sql for mangos 10160). There are actually tools to help you apply the correct patches around, just search for them!
  18. Could you give more details on this? The server shouldn't crash if you input the correct IP address. Of course, as with the regular ports, you should only enter the IP of the local server (as antiroot explained quite well). If the server is behind a firewall, router or other form of NAT you should use the internal IP address (such as 192.168.1.50), not the external one. However I suspect you are running several Mangos servers at the same time, or another program is using the port - in that case, try changing port numbers (most applications that require SOAP, like GaME, allow you to configure a different port as well - so be sure to change the port in all applications that use it).
  19. I did just a clean checkout & compile from the current TBC core and still got the error. I saw you already backported the commit Vladimir (here), any chance something might have gone wrong there? Or should I just try recompiling? //Edit Nevermind, updated the ConfVersion field and it works again. Will see if that was it (in that case the error message could be clearer, but no problem).
  20. There is also a PHP example in the /contrib/soap/example.php file - should be fairly clear how to use it As for keeping a list of commands, I suggest you store the replies somewhere (either a flatfile or a database would be best I think) and for each pageview you load in the past replies - there is, to my knowledge, no easy way to get a history of console commands directly from MaNGOS. Alternatively you could use AJAX for your console, that way you would not need to refresh the page for each command and you could simply keep track of past commands and replies with javascript.
  21. Update Added some more functionality recently, including ticket handling & more character edit options. Also rewrote a great deal of the underlying communication protocol (now mostly uses serialized java objects instead of data strings), should fix most random lockup bugs but might have introduced a few new ones so any feedback is of course still welcome ^^
  22. Changing a faction, in and of itself, is not extremely hard - it would require you to simply set an alternate race for the character and be done. But that is only where the trouble starts. Characters of a certain faction will have reputation with their home areas. Not all areas are interchangable, some are mutual, others very much supposed to be exclusive. And if you did change factions, what would you do about for example mounts? Someone could level up a night elf, get a nice darnassus saber, switch to blood elf and suddenly also get a silvermoon mount? And what about spells, racial abilities - these don't just magically change along, you'd have to replace skills and points in certain skills with their other-faction equivalents, for all possible classes. Same goes for guilds, weapons, open auctions, titles, achievements, flightpaths, etc etc etc. There is so much data to change if you want to do it right that I usually just tell my testers it's not possible - though if you really want to I suppose you could get a basic working script done with not too much effort. Making it perfect will be one heck of a bother though.
  23. Any decent webserver will maintain a connection pool of opened MySQL connections anyway and if it does not PHP will close the connection at termination, so it matters very little. In fact, opening and closing connections continously costs more resources than reusing an existing connection - for precisely this reason does PHP also support persistent connection methods (mysql_pconnect) and does Apache keep a connection pool in the first place (if properly configured for high-load situations anyway). If you really, really have to limit the number of connections to your database (which is very unlikely as Mangos only uses 3 and PHP/Apache will usually create less than a dozen for a heavy load website) you can use the mysql.max_persistent directive in your PHP.ini. Again, you really should never have to. As I cannot stress this enough: unclosed connections are generally a good thing - they decrease CPU load & latency, not increase it! MySQL is these days set to 151 maximum connections by default (documentation) and can generally handle 500 ~ 1000 open connections with no problems. I very much doubt you'll see more than ~ 20 or so connections in a normal mangos + website scenario. Just about the only reason you should ever want to use mysql_close is if you are running your database on a shared hosting account limited to 1 or 2 connections - but I very much doubt you could or want to do that with your Mangos database.
  24. item_instance If you want to send mails with items, your best bet is probably to use the .send items command
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use