Jump to content

Peec

Members
  • Posts

    13
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Peec

  1. * Added item tooltips to news and all kind of strings easy implementation. This uses WoW official api so it's very reliable, it also checks against the mangos world database for existence of item. Usage: [item]Itemname OR itemid[/item] Uploaded with ImageShack.us
  2. Okay, ( I get it working on both linux (Centos) and windows ), but here is what you can try: Go into gnomewow/controller/Captcha.php replace all the contents with this: <?php namespace wow\\controller; class Captcha extends \\gnomephp\\captcha\\CaptchaController{ public function index($name, $width, $height){ ini_set("gd.jpeg_ignore_warning", 1); error_reporting(0); parent::index($name, $width, $height); } } Now try again, to see if image works, please tell if it works, i will post changes in svn in this case : ) Thanks! Oh and btw: Update the latest version of gnomephp and gnomewow, we're now only supporting MaNGOS core, much fixes was added - i didn't have time to test well - but now only ManGOS is supported.
  3. Hi. The captcha should be working. try go to /index.php/captcha/captchaReg/300/75 , see if u get any errors. make sure you have PHP GD extension installed and enabled. also, in gnomewow/config/routes.conf, make sure this line of code is there ( its there by default ): {extend=core/captcha}
  4. Thanks, hope you will test! Just make sure to read the Install guide on the wiki page! Post bug reports / features wanted such as: * more customization on specific things * new features * etc. -- * Version 1.0A officially released. * Support for UDB * Added Player start item modification. Easily edit / remove player starting items with simple Itemid:amount or just itemId to the list, save and it will add items for the specific class in all races that are applicable. Uploaded with ImageShack.us * Admin Panel revamped, more structure, better help texts and system for extending the ACP. * XHTML validation. * Commands page for admins with nice layout. Uploaded with ImageShack.us
  5. Thanks, i'm sure we will need testing and if bugs - remove these asap, i try to bugtest as good as possible but i have not unit tested gnomewow yet - but that is the plan before i release 1.0A. For update: - News system ( including support for comments added ) - About page , dynamic from db. - more.
  6. [h]GnomeWoW[/h] GnomeWoW is a total solution for private server website, it supports only the MaNGOS core. It's created from scratch, and features is popping up every day. Easy install, easy upgrade. News 11.11.2011 Added a complete PayPal donation system with automatic item mailer / gold mailer depending on the donation package you create in the admin GUI. Really, really flexible and bullet proof, tested in paypal sandbox and working properly! [h]Nerd features:[/h] Super flexible MVC ( Model view controller design pattern ) Nice urls ( eg. example.com/login ) Based on a framework ( GnomePHP ) Doctrine ORM for neat database handling. Great support for many servers ( MaNGOS , trinity, Skyfire ... ) Super XSS and SQL Injection secure ( it's not possible to hack, everything is blocked on the framework level ) Inline editing for GM's logged in. .. and so much more .. [h]End user features:[/h] Register With option to send thank you email With option to lock account until verified by a email that gets automatically sent. [*]Login [*]Account management [*]Forgot password feature [*]Server list [*]News sytem ( with commenting feature ) [*]Statistics Top 10 Arena teams Top 10 PvP Characters online Uptime [*]About page [*]Great admin panel! [*]Easy modifications by config files [*]Easy to modify design More to come .. [h]Installing[/h] http://code.google.com/p/gnomewow/wiki/Installation [h]Project page[/h] http://code.google.com/p/gnomewow/ [h]Update[/h] http://code.google.com/p/gnomewow/wiki/Updating [h]Need more good devs[/h] We are always in need of good developers that have experience with MVC model and Doctrine library. If you want to join, send me a email to [email protected], tell about yourself and your coding skills! Hope you enjoy! [h]Screenshots (early stages)[/h]
  7. I couldn't find the source. Anyway i would like to fix this, some parts of this script is so easy but the specific parts i dont understand. (its proberly not complicated for a good C++ programmer).
  8. I was surfing around trying to find a source for a DBCtoCSV extractor. I found this source, it works... Usage: main.exe DBCfile.dbc It will print the DBC as CSV to the commandline... However, it doesn't support STRINGS in the DBC file, it outputs everything as an integer. Anyone know how to fix this? I also wanted to rewrite this to PHP version, but my knowledge of streams and working with bytes and files is limited in PHP. But for now i will use exec("main.exe", $op) ... Example error: It outputs : Instead of exampleways: Here's the C++ script. Compilable on windows atleast: #include <cassert> #include <cstdio> #include <string> #include <fstream> #include <iostream> using namespace std; const int MAXFIELDS = 256; char DELIMITER = ','; struct header { char id[4]; size_t nRecords, nFields, recordSize, textSize; }; union field { float fval; int ival; }; enum types { T_INT, T_FLOAT, T_STR }; int gInt[MAXFIELDS], gFloat[MAXFIELDS], gStr[MAXFIELDS]; void analyzeRow(header &h, FILE *f, char *text) { field x; for (int i=0; i<h.nFields; i++) { fread(&x, 4, 1, f); if ((x.fval<-0.1f && x.fval > -10000.0f) || (x.fval>0.1f && x.fval < 10000.0f)) { gFloat[i]++; } else { if ((x.ival>10) && (x.ival<h.textSize) && (text[x.ival-1]==0)) { gStr[i]+=5; } else { gInt[i]++; } } } } int types[MAXFIELDS]; void printTypes(header &h) { for (int i=0; i<h.nFields; i++) { if (i!=0) cout << DELIMITER; string s; switch (types[i]) { case T_INT: s = "INT"; break; case T_FLOAT: s = "FLOAT"; break; case T_STR: s = "STRING"; break; } cout << s; } cout << endl; } void printRow(header &h, FILE *f, char *text) { field x[MAXFIELDS]; fread(&x, h.nFields, 4, f); for (int i=0; i<h.nFields; i++) { if (i!=0) cout << DELIMITER; string s; switch (types[i]) { case T_INT: cout << x[i].ival; break; case T_FLOAT: cout << x[i].fval; break; case T_STR: s = string(text + x[i].ival); bool delim = false; for (int k=0; k<s.length(); k++) { if (s[k]==DELIMITER) { delim = true; break; } } if (delim) cout << "\\""; cout << s; if (delim) cout << "\\""; break; } } cout << endl; } void convert(const char *fname) { string fn = fname; int l = fn.length(); if (l<5) return; fn[l-4] = '.'; fn[l-3] = 'c'; fn[l-2] = 's'; fn[l-1] = 'v'; FILE *f = fopen(fname, "r"); header h; fread(&h, 5, 4, f); assert(h.nFields <= MAXFIELDS); char *text; text = new char[h.textSize]; fseek(f, h.nRecords * h.recordSize, SEEK_CUR); fread(text, h.textSize, 1, f); fseek(f, 0x14, SEEK_SET); // analyze first 300 or so rows int nr = 300; if (nr > h.nRecords) nr = h.nRecords; for (int i=0; i<MAXFIELDS; i++) gInt[i] = gFloat[i] = gStr[i] = 0; for (int i=0; i<nr; i++) analyzeRow(h, f, text); int val[MAXFIELDS]; for (int i=0; i<MAXFIELDS; i++) { types[i] = T_INT; val[i] = gInt[i]; if (gFloat[i] > val[i]) { types[i] = T_FLOAT; val[i] = gFloat[i]; } if (gStr[i] > val[i]) { types[i] = T_STR; } } // output fseek(f, 0x14, SEEK_SET); printTypes(h); for (int i=0; i<h.nRecords; i++) { printRow(h, f, text); } delete[] text; } int main(int argc, char *argv[]) { for (int i=1; i<argc; i++) { if (!strcmp(argv[i],"-d") && i<argc-2) { DELIMITER = argv[i+1][0]; } convert(argv[i]); } return 0; }
  9. Thanks for the constructive comments to this case freghar & Vladimir! I'm actually working on a object oriented installer for mangos (php commandline based), so that's why i needed to find out how these revision numbers are generated. I will do a parse to find the revision number, actually i found that this command: git --no-pager log --max-count=1 --pretty="oneline" Will be the best to parse from , because it Generates a post like this:837017e8f4a723843ff7e6bc2b2d8fceb5b61834 [8526] Added upper limit for cell search radius, affect max visibility and AOE spell range. Set to 333 yards. Just require explode(' ', $s) and str_replace Simple and easy. I'm not a fan of parsing strings that is not 100% sure to be in correct format but i guess its Ok
  10. Mangos is now ported to git wich is really nice by the way! I was wondering: We have a revision number right now, example: [root@mangos mangos]# git --no-pager log --max-count=1 commit 837017e8f4a723843ff7e6bc2b2d8fceb5b61834 Author: Ambal <[email protected]> Date: Tue Sep 22 00:23:41 2009 +0300 [8526] Added upper limit for cell search radius, affect max visibility and AOE spell range. Set to 333 yards. You see the [8526] , is this revision a manual job for the developers? SVN was based on these revision numbers, but does git support this, or do developers add it like manually to the title and add sql updates with the titles number? So if i want to create an automatic process to fetch the "Revision number" of MaNGOS, i would have to parse the information i get from "git --no-pager log --max-count=1" , and find the number between the [ and ] tags ?
  11. Its not possible for it to be abused. Only if the people get access to your playercreate_item table...
  12. I just set up mangos again. I have added alot of items in `playercreateinfo_item`... Currently mangos will not add more than the first bag. This patch sends the items that could not be added in mailbox. I dont know if this is offical or not, but it is very handy. Btw: msg = CanStoreNewItem( NULL_BAG, NULL_SLOT, sDest, titem_id, titem_amount ); was an uneeded change. Index: src/game/Player.cpp =================================================================== --- src/game/Player.cpp (revision 6572) +++ src/game/Player.cpp (working copy) @@ -637,15 +637,29 @@ // attempt store ItemPosCountVec sDest; // store in main bag to simplify second pass (special bags can be not equipped yet at this moment) - msg = CanStoreNewItem( INVENTORY_SLOT_BAG_0, NULL_SLOT, sDest, titem_id, titem_amount ); + msg = CanStoreNewItem( NULL_BAG, NULL_SLOT, sDest, titem_id, titem_amount ); if( msg == EQUIP_ERR_OK ) { StoreNewItem( sDest, titem_id, true, Item::GenerateItemRandomPropertyId(titem_id) ); continue; // stored, to next } + // Peec edit.. + // Yah.. Send the item in mail to the player.. + + MailItemsInfo mi; // item list preparing + + if(Item* item = Item::CreateItem(item_id_itr->item_id,item_id_itr->item_amount,this)) + { + item->SaveToDB(); // save for prevent lost at next mail load, if send fail then item will deleted + mi.AddItem(item->GetGUIDLow(), item->GetEntry(), item); + } + std::string subject = GetSession()->GetMangosString(LANG_NOT_EQUIPPED_ITEM); + WorldSession::SendMailTo(this, MAIL_NORMAL, MAIL_STATIONERY_NORMAL, GetGUIDLow(), GetGUIDLow(), subject, 0, &mi, 0, 0, NOT_READ); + // End peec EDIT + // item can't be added - sLog.outError("STORAGE: Can't equip or store initial item %u for race %u class %u , error msg = %u",titem_id,race,class_,msg); + sLog.outError("STORAGE: Can't equip or store initial item %u for race %u class %u , error msg = %u. However, the item was sent to player in-mail.",titem_id,race,class_,msg); } // bags and main-hand weapon must equipped at this moment
×
×
  • 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