Jump to content

Gepard

Community Contributors
  • Content Count

    91
  • Joined

  • Days Won

    5

Posts posted by Gepard


  1. Well then, if pros and cons have to be studied, then go study first, and only then come here and share your wisdom. Cause right now you're talking some totally general stuff about how cool would it be to do this and that, but you are not willing to discuss any specific issues related to FluxCP, which this topic happens to be about.

     

    I'm not discrediting anything you say, I'm just pointing that what you're saying isn't really useful for further FluxCP development, so in fact irreleveant. I don't see the point in discussing "why FluxCP isn't so awesome as I'd like it to be" or similarly abstract stuff, but unfortunately that's exactly what you're trying to "discuss" here. 

     

    It's you who started the bashing without giving any reasonable points and it's you who first came to weird conclusions ("this topic is fluxcp ad"). If you claim that some app has "conception fails and critical exploits" you must have something to back up your words. That's what I expect from a serious discussion.

     

    That being said, I'm waiting for a PM with details about the exploit you mentioned.

     

    Last but not least, I'm sorry for being so straightforward. This is just how I am, and I'm not really hostile towards you or anything like that. 


  2. Not every new technology or design pattern is worth following or being used. Software doesn't need to be state-of-the-art to be a good piece of software. You seem to be focused too much on internal aspects of the control panel, and forgetting that first and foremost it is a tool, an utility. It has to work and work properly most of the time - that is what is expected from a program. Then, it should be easy to maintain and develop. (BTW, using latest technologies is great way to create a steep learning curve for anyone who'd like to contribute to the project, so it can have exactly opposite effect) And only then it should be beautiful (code-wise, internal design-wise, not talking about appearance here). If you have too much free time nobody is holding you from using all kind of latest technology and writing your own state-of-the-art control panel for ragnarok server.

     

    Also, if you realized there are some real exploits in current code of FluxCP, you should just fix it or at least report it, instead of complaining. Otherwise, I can't take what you're saying seriously. I respect you having great deal of knowledge about webcoding, but sometimes you need get off your high horse and help less experienced people or you just start to sound like a prick. Now I have the feeling that it's you advertising yourself in this topic, trying to make an impression how good you are at things, and how cool would be the control panel you could write. Please refrain from it, showcase/bragging topics belong to other sections.

     

    Once again, point to any bug/exploit in current fluxcp, or at least justify using any of the stuff you mention with real use-case examples, instead of making general remarks about webcoding. All input is appreciated, but it has to be more specific. "FluxCP is not using latest technologies" is NOT a useful suggestion. Useful one would be: in file foo.php, we could use new feature from foolib ver. 1234 so that we can simplify the code in file bar.php and make it easier to create new foobars for baz module.  


  3. Re-writing this pieces of software allow to get better performance, cleaner code, maintainable code, knowing what can be avoid or optimized, using latest technologies features for better experiences or speed up the process, remove deprecated element...

    If we followed that logic, the very first piece of software that should be thrown into the trash bin and rewritten from scratch is athena/hercules. FluxCP has actually a well structured and documented code, quite easy to understand, follow and maintain. Did you even take a look at its source? You're talking about using latest technologies.... which one do you exactly think could be used in a new, better control panel, that isn't present in flux? Just asking, cause all your arguments are valid but you haven't show us yet how they apply to fluxcp.


  4. I don't really see problems with piece of software being few years old. If there are issues with it, they can be fixed, code can be improved etc. Writing new application from scratch doesn't guarantee it would be better. More likely there will be some new bugs in it, and it will take time to find and fix them all. FluxCP is matured enough, and as far as I know, there haven't been any major problems with it, despite it being used in hundreds of servers.


  5. I noticed that my addons are not working with emphaino theme but its working with the default theme..

     

    In each of your addon's folder there is `themes` folder which contains views for all themes. Just make a copy of `default` folder and rename it to `emphaino`. You should be able to use your addons with new theme then. If it doesn't look good you'll have to make some edits (but it should be good enough).


  6. `item_db2` table has the same name in pre-RE and RE setups, but different layout. If your Hercules server is using pre-RE configuration, you need to import `item_db.sql` and `item_db2.sql` from `sql-files`. If it's Renewal server, import `item_db_re.sql` and `item_db2_re.sql`.

     

    If you modified `config/servers.php` and changed from 'Renewal' => true to false, you need to re-import `item_db2.sql` script, so table `item_db2` has the pre-RE layout.

     

    Currently it's impossible to have both pre-RE and RE item tables in the same database.


  7. Nice one

     

    EDIT

     

    Warning: array_key_exists() expects parameter 2 to be array, string given in /home/lumin/www/cpanel/lib/Flux/Config.php on line 113 

    Got this when try to install it -.-

     

    It's already been fixed. Thank you for your report.

     

    Will pre-existing themes work with this release?

     

    The only pre-existing theme that was supplied with previous versions of FluxCP was 'default' theme. And it of course is also included in Hercules FluxCP and works as usual.

     

    If you want to use a custom-made theme, it should work without major problems. Compared to most recent revision of fluxcp-ra, the only updated module is item database, so you might need to make appropriate changes in this part of your theme. Other than that, it will be also missing theme selector (only relevant if you want to use other themes as well). You can copy appropriate snippets of code from default theme. I will also post detailed explanation how to do this soon.

     

    If you have any custom modules (like for example, additional ranking) and want to make them available with new emphaino theme, they should work without problems as well, since most pages are 99% identical with default theme, it's all css magic. So just copy missing views into themes/emphaino (or addons/youraddon/themes/emphaino) and they should become visible in new theme as well.


  8. //this is the item choicessetarray .@beadID[1],4739,4709,4749,4729,4759,4719,4790,4794,4763,4799,4802,4825,4831,4841,4844,4849,4848,4852,4868;for( set .@n,1; .@n <= 3; set .@n, .@n+1 ) {set .@BeadMenu$,"";//loop for menufor( set .@i,1; .@i < getarraysize( .@beadID ); set .@i,.@i + 1 ){   if ( .@beadID[.@i] != 0 ) {       set .@BeadMenu$,.@BeadMenu$ + getitemname( .@beadID[.@i] )+":";   } else {       set .@BeadMenu$,.@BeadMenu$ + ":";   }}//makes a selection of what item you wantset .@s, select( .@BeadMenu$ );set .@BeadChoices[.@n], .@beadID[.@s];set .@beadID[.@s], 0;}

     


  9. Suggestion:

     

    Make the command return opaqueness level of the emblem, for example if 30% of pixels in the image is magenta (transparent), return 70 (70% is opaque). If it's all transparent return 0, and also return 0 if there is no emblem. 

    This way you can set your own threshold in scripts, and allow some transparency.


  10. The main problem its not reload all or reload only a thing, it's keeping the respawn times alive when you need to refresh functions or labels. If every mvp has his timer, it could be saved into the db and match the time when you reload the server. Maybe we can create a list in the db folder with the mobs that you want to keep dead (for main purposes for everyone).

     

    Yeah, it shouldn't be used in production servers but what can you do when you need to refresh a function or call the OnInit labels again without duplicate the npc's? Massive Npc's that uses a main function can't be refreshed one by one due the main function is alive in the deepest code. It's @reloadnpc or do a shutdown on the server. (In my case, a lot of variables are temporal in order to avoid consuming a lot of memory in permanent variables)

    That's exactly my point.

     

    You want to make @reloadnpc save some part of what it reloads, because you don't want it to reload everything, but there's no other way. The correct solution in such case is to provide extra commands to unload just right things. 

     

    As for things you mentioned, you can refresh a custom function just by loading an updated version of it with @loadnpc. You can also call OnInit label from another temporarily loaded script. Or you can use an NPC tthat would take your input (via inputbox) and call that event, like this one:

    // NPC to trigger other NPC events manually// To "click" this NPC, whisper to NPC::donpcevent as you would// to any other player.-	script	donpcevent	-1,{	end;OnWhisperGlobal:	if (getgmlevel() >= 99)	{		while (1) {			mes "Please enter eventname in";			mes "^0000FFNPCName::Event^000000 format.";			mes "Enter ^FF00000^000000 to cancel.";			next;			input .@event$;			if (.@event$ != "" && compare(.@event$, "::"))				break;			if (.@event$ == "0")				close;		}		mes "Triggered event:";		mes "^0000FF" + .@event$ + "^000000.";		donpcevent .@event$;		close;	}	end;}

  11. @reloadscript should not be used in production servers, at least not too often.

     

    The real problem lies elsewhere. It's currently not possible to not use this command at all, because there is no way to unload mob spawns. If this was fixed, you could easily unload anything you want: mob spawnsets (with new command), scripts (NPCs, warps) and user functions (with @unloadnpc). I think it covers all that we have in /npc/ folder. 


  12. From my experience, whole trade is logged as two consecutive rows (ids) in picklog, so if you found one part, you only need to check previous/next row in table.

     

    Also, every item put into the trade is logged separately. Zeny trades are logged to zenylog table.

     

    Basically there is an algorithm on what to query to get the whole image of trades. It should be quite easy to translate it into PHP for example. However, querying picklog is a performance killer. If you intend to do it on regular basis, I strongly recommend putting picklog on a seperate physical drive (I/O lag) and adding some indexes to the table (full table scans).


  13. Unfeature.

     

    The way I see this done:

    Create a atcommand to "attach" yourself or another character to console output, so that everything that goes to console is additionaly sent to that player's chatbox. Simple, effective and not limited to any particular action like reloading scripts.

    Possible improvement could involve desired log level, so that for example only Error or Warning messages are being shown in chat.

     

    KISS: if you want to see errors in console without checking console, make them appear in-game.


  14. 1. Is there any particular reason for not using C reserved words in SQL? I agree on more descriptive column names, but this should be done carefully, because many tools, like control panels, will break.

     

    2. Branch log is used, see pc.c:pc_isUseitem, very end of function

    	//Dead Branch & Bloody Branch & Porings Box	// FIXME: outdated, use constants or database	if( nameid == 604 || nameid == 12103 || nameid == 12109 )		logs->branch(sd);

    3. I agree on that. Picklog doesn't seem to be very useful either, because usually one row is just half of the "action", for example trades consists of two rows.

    I'd suggest to rework picklog so it has about double the number of columns it has now and tracks both ends of the action involved. There should be "from" part and "to" part. Each part should include: type (monster, player, npc etc), id (char_id, npc_id, mob_id), location, datetime. And there should be "item" part with all relevant item data, (zeny amount if merged with zenylog) and action type (trade, pickup, monster drop, etc). Items dropped on the floor should be logged when they disappear or are picked up, and "from" data could be saved in server's memory until it's added to sql log, or inserted immediately with just row_id to update stored in memory.

     

    4. Agree, even if it's just for consistency sake. Log tables should be in log database.


  15. These are game client limitations, and have nothing to do with server.

     

    You have 2 options:

    • add more transparent background to the sides of images so they are not placed in usual spot; you will have to check how it works in different resolutions though
    • modify client (involves disassembling/hexing) - most likely not even worth it


  16. It's working as intended.

     

    Item entries with high chance are put into struct item_groupdb[group_id] multiple times. See itemdb_read_itemgroup_sub

    		k = atoi(str[2]);		if (itemgroup_db[groupid].qty+k >= MAX_RANDITEM) {			ShowWarning("itemdb_read_itemgroup: Group %d is full (%d entries) in %s:%dn", groupid, MAX_RANDITEM, filename, ln);			continue;		}		for(j=0;j<k;j++)			itemgroup_db[groupid].nameid[itemgroup_db[groupid].qty++] = nameid;
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.