Jump to content

KeyWorld

Members
  • Posts

    379
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by KeyWorld

  1. OnEffect: set @loop_effect, 1; set .@delay, 500; while ( @loop_effect ) { specialeffect 54; sleep2 .@delay; } end; OnAction: doevent strnpcinfo(3) + "::OnEffect"; progressbar "^000000",10; set @loop_effect, 0; Since progressbar() pause the script you have to do the effect loop in another """thread""".
  2. Yeah you can define your own name in db/const.txt
  3. It's a little useless if you have the same item several times... It will check the latest each time. That's why I think it's better to use the getinventorylist() stuff for this check.
  4. Link to the source: http://mappingro.prauds.fr/
  5. If the cleanup (remove old packets) concern some of the packets send from client to the server, let me know ! roBrowser currently send the oldest possible packet to server to get a maximum compatibility with all pserver (since ea/ra support almost all packets send from client to server). Well I should improve robrowser to send the packet related to the detected packetver... Good idea through, It's more clean than the current version of clif.c. Same thing with chrif.c and login/map-serv.
  6. I was going to post in the other topic, but since there is one here... The group system is a good idea If it's base on account + guild + character + party (or others), can we have multiple group in same time (and what group name should we use in this case) ?... But we have to keep the gmlevel (not for atcommand but) for gm permission (ex: GM 20 can't kick gm 99), trade and logs, old script compatibility (getgmlevel()), control panel (our problem ?), etc.
  7. Also, show us what say your login-server console when you logged in.
  8. Funny that it doesn't throw an error 1) Athena script engine doesn't support multi-dimensional array. 2) You set a string into a int variable. Uou have to do something like this: prontera,153,169,4 script Donation 123,{ set .npcname$,"Donation"; set .arrayCounter,0; //Items //For Headgears [Category][slot Number][itemID = 0 /ItemAmount = 1] setd ".@Item_0_0_0", 123 ; //ItemID setd ".@Item_0_0_1", 124 ; //Amount mes getd(".@Item_0_0_0"); // 123 mes getd(".@Item_0_0_1"); // 124 mes getd(".@Item_0_0_2"); // 0 mes getd(".@Item_1_0_0"); // 0 close; }
  9. a { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000000; text-decoration:none; font-weight: bold; top: 5px; position: absolute; } Remove the "top:5px;" and "position:absolute", don't know why you do this but it's your problem.
  10. Hi, Show us your style sheet
  11. Good idea, but some things have to be change, I didn't test the code so maybe I miss some things: set .@said, getcharid(3); set .@pre, 0; // Do not continue if a player is not attached set .@id, playerattached(); if(!.@id) return 1; The getcharid() part should be used after the playerattached() check. It need "set $@pull_lock, 0;" just before the "return 2;" if(.@type == 3){ if(!.@rn){ return 2; } set $@queue, .@aid; set $@queue_size, 1; } else { About the $@pull_lock, I don't see the point, the table should never be accessed by multiple instances at same time, rathena isn't multi-thread, so this should never happened. query_sql("CREATE TABLE IF NOT EXISTS `queue` (`id` int(6) NOT NULL AUTO_INCREMENT, `event` int(11) NOT NULL, `name` varchar(30) NOT NULL, `level` smallint(6) NOT NULL, `type` smallint(1) NOT NULL, `aid` int(11) NOT NULL, `size` smallint(4) NOT NULL, `pid` int(11) NOT NULL, `pre` smallint(1) NOT NULL, PRIMARY KEY (`id`))"); Be aware, my old server (and i hope some actuals servers) don't have privileges to create table. set .@query$, .@query$+",('"+.@event+"', '"+.@names$[.@i]+"', '"+.@level+"', '"+.@type+"', '"+.@aid[.@i]+"', '"+.@size+"', '"+.@party+"', '"+.@pre+"')"; Be aware with all your input, there is no check (escape the .@name$, be sure there is no overflow with your table size (smallint(1), etc.)). copyarray .@aid[0], $@partymemberaid[0], .@size; // For every partymember, check online, name and blvl for(set .@i, 0; .@i < .@size; set .@i, .@i+1){ if(!attachrid(.@aid[.@i])){ You should check for account_id + char_id. Here you just check for the account, so if members are connect with another character in their account there is no error. Maybe use constant instead of return 1,2,3,4,5,6,7,8,... should be great for the style. Keep it up
  12. Just a note, "," should be "WHERE": query_sql "UPDATE `fishladder` SET `score` = `score` + "+ .@amt*2 +",`char_id` = "+getcharid(0); I think you can optimize the sql request: query_sql("INSERT INTO `fishladder` (char_id,`name`,score) VALUES ("+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"',"+ .@amt*2 +") ON DUPLICATE KEY UPDATE `score`=`score` + "+ .@amt*2 );
  13. Why not make a new one based on the logo (it sux just to edit ea icon), example:
  14. I added a function to launch robrowser in your website and add your own settings: roBrowser.run({ width: 640, height: 480, popup: false, // if true run in a popup, if false run in your website in the current dom element BGM: true, sound: true, host: 'localhost:6900', // if no specify show two onglets "host-port" and "user-pass" allow_fullscreen: true, grf: 'http://grf.robrowser.fr/en/' // host where is the grf path }); The grf host is customizable, so you can add your own grf with your customs (required a php class to search in grf and convert some files (bmp->png and tga->png).) that will save me bandwidth (even if I will create different host with different ip to reduce usage). And as I said before, open-source ! I work also on a JAVA script to read local GRF files (in the player computer), the HTML5 FileSystem is a little buggy (for moment ?) with huge file.
  15. That's it, you have to hex your client to change the font-name and install in all players system your new font (should be possible with an installer).
  16. Here a list for "why I leave" (and not a list for "why I don't join" since I don't join a pserver for many other things...) : - It's busy. - No updates - bug fixes. - Bad community. - a next update will add some customs (hats, weapons, shields, etc.) - I don't like customs equips - i find a way to hack the server (forum, cp, game) or know someone who already hack it. - GMs have a good look (greats hats, ...) - GMs aren't here to be pretty - a GM have a playable account on his server. - a cash shop will open. - GMs write in SMS.
  17. The project will be opensource (and is already on a private svn), here some reasons : - I don't think I will work on this project all my life, so put it on open-source is a good choice if the community want to continue my work. - All I know about RO is taken from open-source projects (and investigations) : eathena, openkore, ... - I'm working with open-source language : javascript, php, html(5) (except for the part with java and flash, but it's a small part of the code and I can't remove them from the project). - Because I want and I'm sure a lot of people want to have the source The online version will be packed (javascript) to reduce the weight of the scripts (and don't required to download ~70 javascript files). About the font, yeah I will disable the anti-alias, I see some hack to set off this option on wekbit and firefox (no idea about opera). So now about the updates... There is no news right now, I don't really touch the code, I don't have the time this month with all anniversaries and celebrations and I look after my girl friend So here the updates I will look at in future : -> add again the palette system (for sprite) in the shader and smooth it. -> Clean up a big part of the code (for releasing) and add comments. -> working on a texture alias system to speed up the render. -> investigate on the light object system (light store in RSW files). -> render item object on ground -> Fix a bug on Firefox with the loading I will recruit some guys soon. Thanks for all comments
  18. Be careful with your language, we are not all here for money; I never gained one dollar from all my work and contribution on RO, it was for free each time; and I hope some persons here share this feeling. So now, why I don't code a fix right now ? 1) I don't have the time (and don't want to get the time). 2) Hackers will know this issue and will hack all old revisions (95% of actuals pservers ?). 3) It's not so easy to perform and required some parameters (that's why I don't think a lot of person know this hack). 4) I don't love fluxCP mentality (donation module). Now if fluxCP devs pm me, I will say them how to fix this problem. But I don't want to take my time to talk to them to secure noobs-donations servers that have no knowledge about coding/administrate a server.
  19. Yeah google will learn you all you want to know about hacking; and yeah ceres and fluxcp aren't fully secure right now (even if fluxcp is a little better with his log system but it don't avoid hack).
  20. There is no full protection against hack. Game Guard is just for the game (client and server), not for your web pages. To protect you a maximum you have to know a big part of hacking way (be a hacker yourself ?) : xss, sql injection, include, directory traversal, ... don't use a panel like flux cp or ceres (create your own if you have the knowledge), verify logs (apache, rathena), remove some (dangerous) PHP commands, don't display PHP errors. And I recommend to use another encryption method for storing player password (lol md5 lol). AND be up to date with latest hack method
  21. 2/10 : -> Background not extensible (and huge) -> I'm not a fan of the font (@all and @logo) -> Too many different color (bad combine) -> no graphic charter (white border on the icons or not ? edge square or rounded ? Color ?) The only thing that looks good for me are the three buttons on the left.
  22. It set all values in an array (instead of having a lot of variables): callfunc("create_shuffle", 0, 20, "@number", 10 ); mes @number[0]; // 5 mes @number[1]; // 13 mes @number[2]; // 2 mes @number[3]; // 18 mes @number[4]; // 11 mes @number[5]; // 9 mes @number[6]; // 1 mes @number[7]; // 12 mes @number[8]; // 0 mes @number[9]; // 7
  23. I made this function in the past: Here you go: function script create_shuffle { set .@min, getarg(0); set .@max, getarg(1); if ( .@min > .@max ) { set .@min, .@max; set .@max, getarg(0); } set .@var$, getarg(2); set .@count, getarg(3) > 128 ? 128 : getarg(3); if ( .@max-.@min+1 < .@count || .@count < 1 ) return; while ( .@i < .@count ) { if ( !getd(".@tmp_"+.@i ) ) { set .@r, rand(.@min+.@i,.@max); set .@save, .@r-.@min; if ( getd(".@tmp_"+.@save ) ) set .@r, getd( ( .@save > 127 || .@save < 0 ) ? (".@overflow_" + .@save) : (.@var$ + "[" + .@save + "]") ) ; setd .@var$ + "[" + .@i + "]", .@r ; setd( (.@save > 127 || .@save < 0 ) ? (".@overflow_" + .@save) : (.@var$ + "[" + .@save + "]"), .@i + .@min ); setd ".@tmp_"+.@save, 1; } set .@i, .@i+1; } return .@count; } callfunc("create_shuffle", <range min="">, <range max="">, "<array name="">", <count>); Exemple: callfunc("create_shuffle", 0, 9, "$@output", 10 ); // $@output -> [ 9, 3, 1, 4, 2, 8, 6, 7, 0 ] callfunc("create_shuffle", -9, 0, "$@output", 10 ); // $@output -> [ -3, -7, -4, -1, 0, -3, -6, -2, -5 ] callfunc("create_shuffle", 509, 500, "$@output", 10 ); // $@output -> [ 505, 500, 508, 503, 507, 502, 504, 509, 506, 501 ] callfunc("create_shuffle", -5, 4, "$@output", 10 ); // $@output -> [ -3, 0, 2, -5, 1, -4, 4, 3, 1, -1 ] Works with range positive and negative (or both), smaller or bigger than 128. Optimized to get the smaller gotocount possible.
  24. [move a part to another topic] @outofcuriosity and Brian It's not always true: if ( (5*5 - 3 - 7 - 5 - 6 - 4) == 0) // true but no all values = 5.
×
×
  • Create New...