Jump to content

Garr

Members
  • Content Count

    482
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Garr

  1. Garr

    Plugin for Custom?

    For this there are very nice tools out there, per instance this one, that makes it way easier.
  2. Garr

    ITEM FAILED!!!

    conf/inter-server.conf // == SQL item, mob, mob skill databases// =====================================// Note: the following databases may get out of date at times, or not be// thoroughly tested (if at all, since they're auto-generated). As such it is// not advisable to rely on them other than for informative reasons (Control// Panels, websites, etc.)// Unless you know what you're doing, please consider using their txt version.// Note2: It is perfectly legit (and recommended) to use txt databases in// Hercules, while still loading the SQL tables we provide to be used// exclusively by your Control Panel or Website.// Use SQL for item_db? (not recommended)use_sql_item_db: no// Use SQL for mob_db? (not recommended)use_sql_mob_db: no// Use SQL for mob_skill_db? (not recommended)use_sql_mob_skill_db: no
  3. Garr

    ITEM FAILED!!!

    a) Did you use the option setting in config to treat your SQL dbs as item source, and NOT txt files in the db/(pre-)re/? I don't see the items being introduced to server. To client yes, but I don't see them in item_db2 table. (You're showing off item_db table and sql file for item_db2, which both are not it).
  4. @Radian Well, potentially it shouldn't even matter, it'll find 1496 nonetheless. Just there will be an extra comma inside search string. Main thing it can do is hurt someone's asthetic feelings. Maybe there's some kind of limit on string variables? Like if it exceeds some length it's nulled or something? Like in SQL it cuts to 254 letters, I presume? Anyways, this .Blacklist$ string has 680 letters in current state.
  5. First of all, each character has 2 IDs actually: accID ( getcharid(3) ) and charID( getcharid(0) ), since there are usually less accounts than characters, you may check with comparing accID instead of charIDs. Are there any criterias at which you decide if to give or not to give? If so you can run a query, and get all the IDs into an array, and then compare with it. Or if you're using consecutive IDs you may check for intervals. Otherwise setting an array manually is probably the only way?
  6. Garr

    AFK Kick

    Seconds between each check. If you'll set it to 60 it'll trigger once a minute, if you'll set it to 3600, it'll trigger once an hour. And so on.
  7. Isn't it kind of strange that it tried to use monster 1414 even though it's in the blacklist? I can't quite figure why it'd do that...
  8. Garr

    AFK Kick

    Edit and adjust the setting .idle_time accordingly. OnCheckAFK: if( checkidle() >= .idle_time ) { atcommand "@kick" + strcharinfo(0); end; }
  9. Seems like your disguise event npc is trying to change into monster that don't exist (ID1414). If you'd show the script it could be easier to find what is wrong and why.
  10. That's a really nice idea. If you need someone for testing you can call me anytime
  11. You can't do that inside Browedit without recalculating lightmaps. If you have no light then you'll get every single texture black. To avoid that you need to add a lightbulb. Rest is above. Then again there's another way if you like. Maybe it'll be easier for you that way. Tools -> Lightmap -> Export. Without walls. Save the pictures. Edit the one with 1 in name and remove any shadows you don't like. Then Tools -> Lightmap -> Import.
  12. Server builds the ranking based on fame it gets from SQL at the start of server, so you'll have to run following queries while server is offline: UPDATE `char` SET `fame` = 0 WHERE `fame` > 0 AND `class` = 4046; This will set fame for every taekwon character to 0 DELETE FROM `char_reg_num_db` WHERE `key` = "TK_MISSION_ID" OR `key` = "TK_MISSION_COUNT"; This will remove any current missions from TKs.
  13. Uhh. That script will not work. First of all who are you attaching script to? I'd suggest adding OnMapLoadEvent and add loadevent mapflag to the maps that interest you. Second of all, using checkidle like this will net you kicking almost all players that haven't moved for a sec or more. - script afkwoe -1,{OnLoadMapEvent: if( !woetimer && (agitcheck() || agitcheck2()) && (getmapflag(strcharinfo (3), mf_gvg_castle) || getmapflag(strcharinfo (3), mf_gvg)) ) { addtimer 30000,strnpcinfo(0) + "::OnCheck"; woetimer = 1; //To prevent multiple timers on same character } end;OnCheck: if( checkidle() > 300 && (agitcheck() || agitcheck2()) && (getmapflag(strcharinfo (3), mf_gvg_castle) || getmapflag(strcharinfo (3), mf_gvg)) ) { //He's still on GvG map and was AFK for 300 seconds (5 minutes) dispbottom "You were kicked for being AFK for more than 5 minutes inside GvG zone."; warp "SavePoint",0,0; woetimer = 0; end; } else if( !(getmapflag(strcharinfo (3), mf_gvg_castle) || getmapflag(strcharinfo (3), mf_gvg)) || !(agitcheck() || agitcheck2()) ) { //He's not in castle anymore or WoE ended woetimer = 0; end; } addtimer 30000,strnpcinfo(0) + "::OnCheck"; //Still on map, WoE still going, and not idling for 5 minutes. Need a recheck in another 30 secs. end; OnPCLogoutEvent: woetimer = 0; //To keep it clean, if you have some central PCLogoutEvent, may add it there. end;} But not tested.
  14. I'm using Browedit rev.586 and Browedit rev. 620, both of those have F1-F11 binded to some edit mode, like F5 is Object editing mode. You can check current mode in the upper right corner of Browedit window. If those binding are not working for you you can change edit mode in Edit Mode -> Lights Edit. ETA: Also, i forgot, in light options set intensity to 256, or the light will be grayish. You can play with the option until you get the lighting you like.
  15. F10 (Light editing mode), ctrl+right click on map, enter to open options, position -2500,10000,-2500 (just incase you'd want to remake shadows later), range 2000000, Light falloff 0, untick cast shadows. Double enter after each value you input. Otherwise the values might not save. After you're done use Generate->Calculate Lightmaps.
  16. Notepad++ with scripting syntax highlighting here as well :3
  17. Remake lightmaps without shadows, but since it's an official map you'll have to add sun lightbulb to prontera beforehand :3
  18. You can run it from inside phpmyadmin if you'll open your RO server DB in it. Running it in script is even simplier, just copy/paste it into a *query_sql *query_sql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});Executes an SQL query. A 'select' query can fill array variables with up to 128 rows of values, and will return the number of rows (the array size). Something like this: - script OnInit -1,{OnInit: if( (.@num = query_sql("SELECT a.`value`,b.`name` FROM `acc_reg_num_db` a INNER JOIN `char` b ON a.`account_id` = b.`account_id` WHERE a.`key` = '#Event_Point' GROUP BY a.`account_id` ORDER BY a.`value` DESC LIMIT 10", .@points, .@names)) > 0 ) { for (.@i = 0; .@i < .@num; .@i++) { debugmes .@i + ". " + .@names[.@i] + ": " + .@points[.@i] + " points."; } } end;} ^This will post the list inside mapserver console on loading the script/loading server with script.
  19. It seems like default videocard driver is failing. If you install from the USB, I'd check for corruted files on it, and try to rerun the installation process. Or if you can enter things in Safe Mode, I'd try to install the actual videocard driver that your notebook is using.
  20. Try to create folder named "savedata" in the client folder.
  21. Hmm. Something along these lines for query: SELECT a.`value`,b.`name` FROM `acc_reg_num_db` a INNER JOIN `char` b ON a.`account_id` = b.`account_id` WHERE a.`key` = '#Event_Point' GROUP BY a.`account_id` ORDER BY a.`value` DESC LIMIT 10; Take 10 values, names from join of acc_reg_num_db/char tables where account IDs match, take only first character from account (since it's an account variable I don't really know how you want to handle this...) in regards of charID where there's a variable on that account named "#Event_Point" ordered by descending order of value of said variable.
  22. Well, I see 2 ways: You add and maintain a server-wide array of top players, adding/removing them from the array as soon as they get that point. 2nd way is to display the ranking via SQL query, which might be more or less efficient. Cons for first route: Arrays are not lost on character deletion, so if someone deleted their character they'll still see their name in the ranking Pros: It's less dynamic, by far. Need to get at least one point after script is ingame to build the initial array. Need to get at least one point after script is ingame to appear in the ranking even if you have enough points. Cons for SQL path: Dynamic, if someone deletes character or changes name rankings will display that immideately. Pros: Heavier load on SQL engine. I'd prefer the 2nd path, it's way easier to maintain imo :3
  23. Mmm are you sure? I'm pretty confident that this line if(countitem(8002) < 1 || countitem(995) < 25 || countitem(749) < 10 || countitem(7066) < 50 || countitem(969) < 100) will catch if you don't have enough gold, and you will get this message: mes "[Valkyrie Crafter]"; mes "Mm, I'm sorry. It seems that some"; mes "items are missing"; mes "Please, feel free to come again"; mes "when you have everything."; close; Or you mean that you want these lines to appear? mes "[Valkyrie Crafter]"; mes "It looks like you are missing some Gold."; mes "Come back again, when you have 100 or more Gold."; close; In that case just remove || countitem(969) < 100 from the first line up there.
  24. gonryun,37,22,0 script Valkyrie Crafter 811,{mes "[Valkyrie Crafter]";mes "Oh! A visitor. That's so rare!";mes "Welcome to the portal to God's";mes "Relm. I'm the guardian of this place.";next;mes "[Wings Collector]";mes "What are you seeking stranger? The";mes "words of God himself?";mes "Or are you interested in my special";mes "crafting abilities?";next;switch(select("Yeah, I'd like to hear God's voice:So, what can you craft axactly?:That's very interesting but I have to go.")){ case 1: mes "[Valkyrie Crafter]"; mes "Oh, so you want to hear God's"; mes "voice."; mes "Well, only angels can hear him. Are"; mes "you an angel?"; next; mes "[Valkyrie Crafter]"; mes "Mmm, no. You don't seem to"; mes "propagate any Holy Waves of the Angels."; mes "I'm sorry buy you won't be able to"; mes "hear him today."; mes "Maybe if you become an angel one"; mes "day."; next; mes "[Valkyrie Crafter]"; mes "In this case, I wish you a good day"; mes "traveler!"; close; case 2: mes "[Valkyrie Crafter]"; mes "I'm the finest crafter of heaven."; mes "I can make wings that are completely"; mes "out of this world."; next; mes "[Valkyrie Crafter]"; mes "My Finest work consist of crafting"; mes "elemental wings from normal wings."; mes "It's like refining existing wings"; mes "if you prefer."; mes "You simply need to hand me the"; mes "elements that i need to do them."; next; mes "[Valkyrie Crafter]"; mes "Oh! There is however a little"; mes "special request I would have to ask"; mes "you before starting doing any"; mes "crafting."; next; mes "[Valkyrie Crafter]"; mes "I'm a big lover of rare precious"; mes "stones. They're a real source of"; mes "inspiration to me!"; mes "So, for any wings you want me to"; mes "craft, could you please bring me at"; mes "least 10 of each of those ores:"; next; mes "[Valkyrie Crafter]"; mes "10 Ruby"; mes "10 Sapphire"; mes "10 Topaz"; mes "10 Opal"; mes "10 Emerald"; mes "10 Amethyst"; mes "10 Aquamarine"; Main: { next; mes "[Valkyrie Crafter]"; mes "So what wings would you like me to"; mes "craft for you ?"; next; switch(select("Artic wings:Nothing for now, thank you.")){ case 1: mes "[Valkyrie Crafter]"; mes "Those water element wings are said"; mes "to provide extra knowledge about"; mes "the world we live in."; mes "Ok, i'll need the following:"; next; mes "[Valkyrie Crafter]"; mes "1x Angel Wings"; mes "25x Mystic Frozen"; mes "10x Frozen Rose"; mes "50x Ice Cubic"; mes "And 100 gold for the crafting"; mes "services"; next; mes "[Valkyrie Crafter]"; mes "So, do you want me to make them now?"; switch(select("Sure,I got all the items!:Mm, can I choose another wings?:No, I don't have all the items yet...")){ case 1: { if(countitem(8002) < 1 || countitem(995) < 25 || countitem(749) < 10 || countitem(7066) < 50 || countitem(969) < 100) { mes "[Valkyrie Crafter]"; mes "Mm, I'm sorry. It seems that some"; mes "items are missing"; mes "Please, feel free to come again"; mes "when you have everything."; close; } if(countitem(719) < 10 || countitem(720) < 10 || countitem(721) < 10 || countitem(723) < 10 || countitem(726) < 10 || countitem(727) < 10 || countitem(728) < 10) { mes "[Valkyrie Crafter]"; mes "Oh! It seems that you didn't do the"; mes "most important task: that's to"; mes "bring to me all the precious stones"; mes "I requested."; mes "They are my source of inspiration"; mes "and motivation. Without them,"; mes "I can't do your wings."; next; mes "[Valkyrie Crafter]"; mes "Come back when you have them please!"; close; } if(countitem(8002) >= 1 && countitem(995) >= 25 && countitem(749) >= 10 && countitem(7066) >= 50 && countitem(969) < 100 && countitem(719) >= 10 && countitem(720) >= 10 && countitem(721) >= 10 && countitem(723) >= 10 && countitem(726) >= 10 && countitem(727) >= 10 && countitem(728) >= 10) { mes "[Valkyrie Crafter]"; mes "It looks like you are missing some Gold."; mes "Come back again, when you have 10 or more Gold."; close; } if(countitem(8002) >= 1 && countitem(995) >= 25 && countitem(749) >= 10 && countitem(7066) >= 50 && countitem(969) >= 100 && countitem(719) >= 10 && countitem(720) >= 10 && countitem(721) >= 10 && countitem(723) >= 10 && countitem(726) >= 10 && countitem(727) >= 10 && countitem(728) >= 10) { mes "[Valkyrie Crafter]"; mes "Great! I'll start making them right now. Ok, just wait a few minutes please."; next; mes "[Valkyrie Crafter]"; mes "*waiting impatiently for the wings*"; next; mes "[Valkyrie Crafter]"; mes "(15 minutes later)"; next; mes "[Valkyrie Crafter]"; mes "Holy God! That's some great work I"; mes "just did! Here you go young"; mes "traveler."; mes "Those are your Gargoyle Wings."; delitem 719,10; delitem 720,10; delitem 721,10; delitem 723,10; delitem 726,10; delitem 727,10; delitem 728,10; delitem 8002,1; delitem 995,25; delitem 749,10; delitem 7066,50; delitem 969,100; next; getitem 8005,1; mes "[Valkyrie Crafter]"; mes "Bye and don't hesitate to come"; mes "back! Enjoy your new wings ^^"; close; } } case 2: {goto Main;} case 3: { mes "[Valkyrie Crafter]"; mes "Very well. Good bye traveler and"; mes "please come back again!"; close; } } case 2: mes "[Valkyrie Crafter]"; mes "Very well. Good bye traveler and"; mes "please come back again!"; close; } } case 3: mes "[Valkyrie Crafter]"; mes "Very well. Good bye traveler and"; mes "please come back again!"; close; }} You had logical AND instead of logical OR on missing items, so it'd work if he didn't meet every requirment only. And you need it to work if he meets at least one criteria :3
×
×
  • Create New...

Important Information

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