Garr
Members-
Content Count
482 -
Joined
-
Last visited
-
Days Won
8
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Garr
-
You should address that question to gravity. You can edit the attribute fix via db/pre-re/attr_fix.txt, but it should be known widely as it'll change the machanic some bit. Also changing just lvl 1 shouldn't pass as lvl2 Earth lowers Earth damage by just 50%, when other elements completely block it.
-
Might be the case if you're using pre-renewal. Haru gave link only to renewal element table. Here's the pre-re one. As you can see, in pre-renewal it only lowers wind element damage.
-
Have you ever looked at the elemental property tables concerning level 1 earth property? It literally lowers only wind damage by 50%. It's considered the weakest of all element cards for a reason.
-
And why do you think it's not working?
-
how to create server side and client side ?
Garr replied to unrealking's question in General Server Support
If I understood the message right it tells you that the configured password for root user is incorrect (SQL refused the connection). Double check that the root user password and the password you configured in inter-server.conf match. Also check that you don't have any imported settings that overwrite the password you used.- 5 replies
-
- server setup
- client-side setup
-
(and 4 more)
Tagged with:
-
Treasure chest randomization for SE castles
Garr replied to Anisotropic Defixation's question in Script Support
Oh, I missed that somehow. Ofc it's simple. Just change both (.@i%2)?.@treasurebox:1324 to just 1324 in the code I gave above. And then you can delete the .@treasurebox setting inside ifs, or if you like it that much replace it with .@rand() setting. -
In Browedit it's identified as effect 358.
-
Treasure chest randomization for SE castles
Garr replied to Anisotropic Defixation's question in Script Support
a) If all your random treasure ID arrays are same for each castle, you'd do a better job setting them once, instead of setting them in every if. Are you fine with the fact that the chests will be spawned on each other? c) Chests spawned are changing between 1934 for even numbered chests (0,2,4) and castle-specific chest for odd numbered(1,2,5), so I wouldn't change the .@treasurebox setting. Try this one: OnClock0001: // Spawn Treasure Chests based on castle economy. if (strnpcinfo(2) == "template") end; if (!getcastledata(strnpcinfo(2),1)) end; killmonster strnpcinfo(2),strnpcinfo(0)+"::OnTreasureDied"; if (getcastledata(strnpcinfo(2),4)) { .@Economy = getcastledata(strnpcinfo(2),2); setcastledata strnpcinfo(2),2,.@Economy+getcastledata(strnpcinfo(2),4)+(rand(2) && getgdskilllv(getcastledata(strnpcinfo(2),1),10014)); if (getcastledata(strnpcinfo(2),2) > 100) setcastledata strnpcinfo(2),2,100; setcastledata strnpcinfo(2),4,0; } if (getcastledata(strnpcinfo(2),5)) { .@defence = getcastledata(strnpcinfo(2),3); setcastledata strnpcinfo(2),3,.@defence+getcastledata(strnpcinfo(2),5); if (getcastledata(strnpcinfo(2),3) > 100) setcastledata strnpcinfo(2),3,100; setcastledata strnpcinfo(2),5,0; } .@Treasure = getcastledata(strnpcinfo(2),2)/5+4; if (!.@Treasure) end; freeloop(1); if (compare(strnpcinfo(2),"arug")) { if (strnpcinfo(2) == "arug_cas01") { .@treasurebox = 1943; setarray .@treasurex[0],251,252,253,254,255,256,257,258,251,252,253,254,255,256,257,258,251,252,253,254,255,256,257,258; setarray .@treasurey[0],369,369,369,369,368,368,368,368,367,367,367,367,366,366,366,366,365,365,365,365,364,364,364,364; } else if (strnpcinfo(2) == "arug_cas02") { .@treasurebox = 1944; setarray .@treasurex[0],382,383,384,385,386,387,384,385,386,387,388,389,382,383,384,385,386,387,384,385,386,387,388,389; setarray .@treasurey[0],231,231,231,231,231,231,230,230,230,230,230,230,225,225,225,225,225,225,224,224,224,224,224,224; } else { // Castles 3,4,5 are identical, except 4's treasure. .@treasurebox = (strnpcinfo(2) == "arug_cas04")?1946:1945; setarray .@treasurex[0],291,292,293,294,295,296,293,294,295,296,297,298,291,292,293,294,295,296,293,294,295,296,297,298; setarray .@treasurey[0],276,276,276,276,276,276,274,274,274,274,274,274,272,272,272,272,272,272,269,269,269,269,269,269; } } else { if (strnpcinfo(2) == "schg_cas02") { .@treasurebox = 1939; setarray .@treasurex[0],249,250,251,252,253,246,247,248,249,250,250,251,252,253,246,247,248,249,250,249,250,251,252,253; setarray .@treasurey[0],378,378,378,378,378,376,376,376,376,376,374,374,374,374,372,372,372,372,372,370,370,370,370,370; } else if (strnpcinfo(2) == "schg_cas03") { .@treasurebox = 1940; setarray .@treasurex[0],189,190,191,192,193,194,189,190,191,192,193,194,189,190,191,192,193,194,189,190,191,192,193,194; setarray .@treasurey[0], 21, 21, 21, 21, 21, 21, 19, 19, 19, 19, 19, 19, 17, 17, 17, 17, 17, 17, 15, 15, 15, 15, 15, 15; } else { // Castles 1,4,5 are identical, except treasures. if (strnpcinfo(2) == "schg_cas01") .@treasurebox = 1938; else if (strnpcinfo(2) == "schg_cas04") .@treasurebox = 1941; else .@treasurebox = 1942; setarray .@treasurex[0],388,388,388,387,386,385,384,384,384,384,384,384,385,386,387,388,389,390,390,390,389,388,387,386; setarray .@treasurey[0],388,389,390,390,390,390,389,388,387,386,385,384,384,384,384,384,384,384,385,386,386,386,386,386; } } setarray .@rand[0],1938,1939,1940; //array of custom treasure chests; for(.@i = 0; .@i<4; ++.@i) monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",(.@i%2)?.@treasurebox:1324,1,strnpcinfo(0)+"::OnTreasureDied"; monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",.@rand[rand(getarraysize(.@rand))],1,strnpcinfo(0)+"::OnTreasureDied"; //we get random chest number from array, here it will randomize via rand, with current array the ID is equal to .@rand[rand(3)] for(.@i = 4; .@i<24; ++.@i) { if (.@Treasure < .@i+1) break; monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",(.@i%2)?.@treasurebox:1324,1,strnpcinfo(0)+"::OnTreasureDied"; monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",.@rand[rand(getarraysize(.@rand))],1,strnpcinfo(0)+"::OnTreasureDied"; } freeloop(0); end;OnTreasureDied: end;} -
*npcspeed <speed value>;*npcwalkto <x>,<y>;*npcstop;These commands will make the NPC object in question move around the map. As they currently are, they are a bit buggy and are not useful for much more than making an NPC move randomly around the map.'npcspeed' will set the NPCs walking speed to a specified value. As in the @speed GM command, 200 is the slowest possible speed while 0 is the fastest possible (instant motion). 100 is the default character walking speed.'npcwalkto' will start the NPC sprite moving towards the specified coordinates on the same map as it is currently on. The script proceeds immediately after the NPC begins moving.'npcstop' will stop the motion.While in transit, the NPC will be clickable, but invoking it will cause it to stop moving, which will make it's coordinates different from what the client computed based on the speed and motion coordinates. The effect is rather unnerving.Only a few NPC sprites have walking animations, and those that do, do not get the animation invoked when moving the NPC, due to the problem in the NPC walking code, which looks a bit silly. You might have better success by defining a job-sprite based sprite id in 'db/mob_avail.txt' with this.
-
If it's etc/usable items, you mostly should be able to do that. For gears you'd need to rethink scripts and stats, like def in renewal and pre-renewal play a very different role.
-
I don't think that people can help you without first seeing the site itself, even on test platform, or at least CSS/HTML relations on those objects.
-
how I can add new gm command to my server
Garr replied to Kid BaKa's question in General Server Support
First, you need to add the actual code inside src/map/atcommand.c, along with adding command to the list in the bottom of it. Plugin is a good (and even better imo) alternative to editing src files. Then you recompile (or compile and activate plugin), and edit conf/groups.conf to make the command accessible by players/GMs. That's pretty much it. -
I remember reading about such an issue in old clients. It was somewhere in the bug tracker... Anyway, if you'll post what date your client is, I think someone might help you out faster.
-
As far as I know you can dodge that skill using bathory or ED armor as well.
-
Can you check the logs, does it say something about that character reconnecting? Maybe some errors? I'm talking about the char server log. And 0 is without @at limit.
-
Oldest client date Hercules can support?
Garr replied to zackdreaver's question in General Server Support
2009-10-13 here, everything is showing up fine. Had to tweak few things I made a report of, but otherwise everything went well enough. -
@Dastgir 1) Yes, client reads data.ini and custom grf since the textures are applied. 2) My GRF comes as #1, data and rdata are #3 and 4 respectively. 3) Maps are normal, I checked the overview from GRF editor, and all 3 files are there. Grf from already existing older client is used to check, so there's no problem with the maps themselves. ETA: Okay, the idea of using only Shin's Diff Patcher worked, now all the maps are shown how they are supposed to be. So the problem was in NEMO patcher/some patch somewhere. All the same patches applied via Shin'sDiffPatcher and it works as it should now. Thank you all
-
Thanks, but after considering for quite a while I stopped on 2012-04-10, and I'd like to stick to this choice for the time being. Bump. If the maps are not in the data/rdata.grf it reads the map from th custom grfs, so is there something that makes off maps themselves go higher on the client than the custom ones? May that be the fault of the patcher?
-
Okay, I'm all out of options I can think of with the client side of this game. I've chosen 2012-04-10 client, list of patches from NEMO: 2 Chat Flood Allow8 Custom Window Title9 Disable 1rag1 type parameters (Recommended)10 Disable 4 Letter UserCharacter Limit11 Disable 4 Letter UserID Limit12 Disable 4 Letter UserPassword Limit13 Disable Ragexe Filename Check (Recommended)14 Disable Hallucination Wavy Screen (Recommended)15 Disable HShield (Recommended)16 Disable Swear Filter17 Enable Official Custom Fonts19 Enable Title Bar Menu20 Extend Chat Box21 Extend Chat Room Box22 Extend PM Box24 Fix Camera Angles (Recommended)30 Increase Zoom Out 50%34 Enable /showname (Recommended)35 Read Data Folder First36 Read msgstringtable.txt (Recommended)37 Read questid2display.txt (Recommended)38 Remove Gravity Ads (Recommended)39 Remove Gravity Logo (Recommended)40 Restore Login Window (Recommended)41 Disable Nagle Algorithm (Recommended)44 Translate Client (Recommended)46 Use Normal Guild Brackets47 Use Ragnarok Icon48 Use Plain Text Descriptions (Recommended)49 Enable Multiple GRFs (Recommended)50 Skip License Screen53 Use Ascii on All Langtypes (Recommended)64 @ Bug Fix (Recommended)68 Enable 64k Hairstyle73 Remove Hourly Announce (Recommended)74 Increase Screenshot Quality205 Enable Monster tables75 Enable Flag Emoticons84 Remove Serial Display (Recommended)88 Allow space in guild name90 Enable DNS Support (Recommended)92 Packet First Key Encryption93 Packet Second Key Encryption94 Packet Third Key Encryption96 Remove GM Sprites97 Cancel to Login Window (Recommended)100 Disable Multiple Windows102 Fix Tetra Vortex + patch from ShinsDiffPatcher for increased Headgear ViewIDs (One in nemo doesn't work, makes the client crash). Anyway, the issue itself is that it seems I'm always getting the official maps loaded no matter what I have in the order of grfs in DATA.INI. I have official Izlude, official starting point, and, what's worse, official latest prontera which crashes the client. The thing is, the client DOES read the maps and files from the custom GRFs (I can warp to custom maps just fine), as well as textures are read from the custom GRFs before the offical ones. But not official maps themselves. They stay official no matter what I do. Any chance for help out there? I'd remove them from data.grf, but that'd be the last option I'd want to rely on.
-
Umm, why so rather radical changes as to remake mobs or remove drops >.< One relativly small source edit can fix all the problems and for all slave mobs. I've been thinking of pulling option such as this inside actual Herc, but 1) I'm lazy 2) I'm not good with git. mob.c, mob_dead: if( !(type&1) && !map->list[m].flag.nomobloot && !md->state.rebirth && ( !md->special_state.ai || //Non special mob battle_config.alchemist_summon_reward == 2 || //All summoned give drops (md->special_state.ai==2 && battle_config.alchemist_summon_reward == 1) || //Marine Sphere Drops items. ) ) { // Item Drop change to if( !(type&1) && !map->list[m].flag.nomobloot && !md->state.rebirth && ( (!md->special_state.ai && !md->master_id) || //Non special mob battle_config.alchemist_summon_reward == 2 || //All summoned give drops (md->special_state.ai==2 && battle_config.alchemist_summon_reward == 1) || //Marine Sphere Drops items. ) ) { // Item Drop Now, next: if(sd) { // process script-granted extra drop bonuses int itemid = 0; to if(sd && !md->master_id) { // process script-granted extra drop bonuses int itemid = 0; Now ultimately most (if not all) non-special monsters with items drops should not drop anything (and I mean anything. Not predefined loots, and not script(item)-granted loots) if they are slaves to some other one.
-
First of all, how do you register items in the first place if you want to get them from DB? Second, you'll be better off reading the entry on query_sql first. *query_sql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});*query_logsql("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).Note that 'query_sql' runs on the main database while 'query_logsql' runs on the log database.Example: .@nb = query_sql("select name,fame from `char` ORDER BY fame DESC LIMIT 5", .@name$, .@fame); mes "Hall Of Fame: TOP5"; mes "1."+.@name$[0]+"("+.@fame[0]+")"; // Will return a person with the biggest fame value. mes "2."+.@name$[1]+"("+.@fame[1]+")"; mes "3."+.@name$[2]+"("+.@fame[2]+")"; mes "4."+.@name$[3]+"("+.@fame[3]+")"; mes "5."+.@name$[4]+"("+.@fame[4]+")"; As you see, .@nb is an int that holds number of matching rows. .@item and .@amount are itemID and amount arrays, starting to fill from 0 to (.@nb - 1). If you need a string from SQL, you need to pass a string variable to the query_sql, aka add postfix "$", like in the example above, .@name$.
-
^ Browedit. Revision 586 is most stable for saving map, revision 620 for everything else. So what exactly do you want, just a mirror copy of some maps? Or you want a map overview like the ones used for minimaps?
-
I think here Tokeiburu mentioned all the limitations you'll run into if you'd try to make that happen.
-
Umm... because that's only part of script? You need to input it into NPC yourself >.> Not to mention input the item giving or some messages inside
-
Ooh. You mean the name of the account O_O I wouldn't use that, use the accID, and I mentioned the way you can get it before: getcharid(3) from script ingame will net you attached character's account id. And you can make a for() that runs through an array and checks if player accID matches the ones ou input. //Setting arraysetarray .@accIDs[0],2000000,2000005,2000010,2000012,3000001;//Checking if char has accID of any of those arraysfor (.@i = 0; .@i < getarraysize(.@accIDs); .@i++) { if( getcharid(3) == .@accIDs[.@i] && !givenitem) { //Your code givenitem = 1 //To prevent giving away 2 items to same character on account // Can make it account-wide variable if you want to grant it once per acc. }}