-
Posts
737 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Lighta
-
Your script.c seem outdated. some call to log doesn't have the correct type. Show us line : 7011 and 7020
-
@malufett No I meant something like this format : Tombstone#mobid|charid e.g : Tombstone#1785|200012 Then with a simple parsing on npc name as you use to do you'll do something like this strcharinfo(0,200012) to retrieve the name. (no need sql statement) ps : I just realise you'll have to edit strcharinfo function to do something like that but i't a 3 line edit so. You can still add your counter to make the name more unique but this remove the npc array needed to storing id and such and so should also remove the size restriction on it. Do you get what I mean ?
-
give a try to dos2unix ./athena-start
-
hmm would probably work. But just to get it right why do you need a "totalnpctomb" attribute, are we limited by the number of duplicate or something ? I mean I saw no loop on it or anything so if it's just for basic info you could just use it as static and wil be reset on server reboot or reload.. For the id issue well I'd simply use the charid instead, since we that they all different would that be possible ?, (I didn't get your n%d, totalnpctomb for npc name
-
From what I understand I think it already exist : // Set this to the amount of minutes autotrade chars will be kicked from the server. at_timeout: 0 In conf/battle/misc.conf
-
if(SCRIPT_MAX_ARRAYSIZE < totalnpctomb) totalnpctomb = 0; does this mean you'll have SCRIPT_MAX_ARRAYSIZE (128) unique name than he start the duplicate warning ?? If I get it right you needed that constant to retrieve the id in npc ye ? (wich is than used to .killer[] and such). I didn't try your mod yet but if i'm right doesn't this mean you'll be caped to 128 tomb before having overlaping issues ??
-
he want to autoretrieve a list of item from storage to inventory. You recording a list of item, then when you click retock your inventory item amount will be set to the recorded one. Ex : you recorded 150 whitepot. Have 20 on yourself, he will fetch 130 from storage and set them to inventory, ofc if you don't have enough it'd fail or give what he can. Instead if you have 190 on self, he will stock the extra 40 on storage. Ok this said, all you need to do to realise this Deamon is to put storage function into script interface and manipulate them.
-
[Updating Through SVN] To always compile or Just Directly Edit?
Lighta replied to Robotculator's question in General Support
If you doing it right I'd say yeah more or less. 1st we need to agree on definittion : chekout = fetching content from svn merge A and B = fusion content B to A (taking more recent line in revision and apllying to A, may lead to conflict if those line have local modification) update = checkout + merge. So right now if I understand it right you're doing this : checkout on content A. applying custom on content A. checking compilation of dir A. copying to folder B. running server with folder B. right ? So here we can quickly see that depend how you do the copy but you don't checking folder B compilation and running it, assuming folder B is a remote host makefile specification may vary, you may have missing librairie and stuff... So here is really like you're running a precompiled server in B. Imo I'd prefer copying then recompile then run, sound saffer. 2nd merging issue, dunno if you doing it for a while and if you have manny modifications but : 1) We usually chekout content once then only running update. 2) I personally prefer A to be a real copy of svn and adding the mod in B, this force you to check compilation on final version but also that the main point avoid conflicts. With a quick diff like meld, beyond compare, kompare... you can easely track them. 3) You may want to use merge fonction instead doing it manually like it seem, but actually that not so bad cause you really know what you're doing like that (manually). got it ? Then to finish with the remote stuff you may put your B dir in version control, do the modifications and commit. (We assum A and B are local here) Back on our prod server we're fetching content of repo B rebuild and launch. Or you could just transfert B via ftp (but versioning better so you could fallback easily keep history and such). -
I'd like a better/auto match from const.txt and src enum, I mean we have like defined sp_bonus in txt then redefined in src for usage, so yeah that could lead to some issues same for sc_status ,job.... I'd like a renew of status.c (db mode plz), battle and perhaps skill, is not that they're not understanble but they're quite long with few doc, it's probably gonna be more intuitive in module are phoenix said. (also I want to get ride of those switch case listing). Ah yeah last thing it's quite annoying to follow a pattern with those huge switch atm, I mean I mostly go to skill.h select a skill let say AL_PNEUMA, found usage. But if instead using this label someone put the harcoded value, or something like AL_RUWACH+1, then I fucked so it's quite annoying.
-
The grey map is from greyworld.grf Can't really say it give less lag, loading are more fluide. So you ram less yeah.
-
I really dun know the matter man I'm sorry, all what I tought didn't match with dumped value and code =(. I'd suggest to do a freshcheckout and readd your modification, are those related to DB ? well I mean you do have something like this : db_obj_remove with data adresse=0, wich seem odd but I'm not so sure with new db systeme, my general idea is like you trying to free something wich already gone. (That's for the 2nd one) The 1st one hmm bah bl adress ? You must know segfault is generally that you trying to access a value from an object/structure wich not here. (access violation) Nope dun worry this edit wont cause those crash
-
Yes seem you don't have that lib but this ain't the mapcrash cause, it's just for debuginfo. I'm still trying to figure out what may cause those segfault, also you must know that gdb ain't 100% correct, sometime line are more or less what he display.
-
Since most of us only doing checkout and merge anyway is not a big deal learning... +1 for git
-
Could you also provide the main msg? like: Core was generated by `./map-server_sql'. Program terminated with signal 8, Arithmetic exception. or something like that ?
-
that an easy way to create enum table yay, but lua aren't just that unfortunatly.
-
Resetting your custom will probably faster since you know what u did but rA does not have fully implented class 3.2 atm, so the total switch main be painfull. Beside this I'd say main change are status.c, skill.c and pc.c, (well you probably saw that already if you did a compare). Also there been few nice revamp like db/guild castle systeme, atcommand/gm conf and log. Yep those are the main changes for me, there are mainy other adds, optimisation and such very interesting but you should be able to diff and merge them fast.
-
I't hard to help with so few information, what I'd tell you to do is to put a breakpoint in pc_bonus to be sure it is called correctly when you attempting to set your bonus and check if the type value matching the one in enum. (ok to be more explicite the small issue in the wiki now is that 2045 value is used now for : SP_ADD_CLASS_DROP_ITEM), so you'll need to use another one) Then if this point is ok move the breakpoint to your case to see what may cause the issue. Another error migh be that this guide presenting only for 1 parameter as bonus but you may have use 2 (e.g bonus2 SP_CUSTOM,5,20) so in that case you should have use pc_bonus2.
-
there may be an option by config but I don't know it so I'm telling you how I'd do it in src. skill.c :: skill_castend_nodammage_id case AL_HEAL : int heal = skill_calc_heal(src, bl, (skillid == AB_HIGHNESSHEAL)?AL_HEAL:skillid, (skillid == AB_HIGHNESSHEAL)?10:skilllv, true); //here you calculate how much you should heal. so you just need if(skillid == AL_HEAL) heal <<= 1; //2time stronger //just make sure to do this condition before this heal_get_jobexp = status_heal(bl,heal,0,0); it's where we apllying this heal. nota : here we need the condition so only AL_HEAL will be increase and not highnessheal or hlif_heal, but if you want for all you don't need that ofc. also you can take a look and see heal is already double if it's your partner who's healing you : if( sd && dstsd && sd->status.partner_id == dstsd->status.char_id && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.sex == 0 ) heal = heal*2; Finally I prefer put it in skill_calc_heal, since it would be more conherent from the name of the fonction and the purpose I assumed but you may have issues doing this since some skills (like highnessheal as we can see up here) using also AL_HEAL to calculate there so it may be more annoying atm. Hope you got it =)
-
Should be this for your round annouce : change : announce "Round Started !",0; to announce "Round "+(.Round+1)+" Started !",0; with .Round wich will change his value to 0,1,2.. and for global annonce. OnStart: L_Begin: to OnStart: announce "Fast-Type Event: has started",0; L_Begin:
-
for round hours : instead : OnClock0130: OnClock0230: OnClock0330: OnClock0430: OnClock0530: OnClock0630: OnClock0730: OnClock0830: OnClock0930: OnClock1030: OnClock1130: OnClock1230: OnClock1330: OnClock1430: OnClock1530: OnClock1630: OnClock1730: OnClock1830: OnClock1930: OnClock2030: OnClock2130: OnClock2230: OnClock2330: OnClock0030: to this OnMinute00: Wich mean every time we pass the 00 minutes will trigger this, so in other each rounded hours.
-
Try unitskilluseid, shouldn't be a probleme to get GID with getnpcid now. Take a look at /doc/script_commands.txt for full usage.
-
SC_CUSTOMSTATUS for val1, val2, val3 and val4 - Where?
Lighta replied to xRaisen's question in Source Support
If you're duration expire sc->data[sC_CUSTOMSTATUS] will be null. On status_change_end_, after this calc_flag = StatusChangeFlagTable[type]; switch(type){ Put something like this : case SC_CUSTOMSTATUS : clif_specialeffect(&sd->bl,255,AREA); clif_displaymessage(sd->fd,"Your extra dex has ended"); break; You can even put that just after the switch before case SC_WEDDING: (line 8183), just make sure to break it corecly. And as I said, if you want this effect at the end of duration, you don't need to worry since he will automatically called this status_change_end_, just give a try if you don't get it. -
Frost Joke and Scream texts are not appearing
Lighta replied to Vali's question in Client-side Support
Ok I'll try that too, did you look with another grf ?, perhaps the one from basic client, dunno if it's the same. Otherwise I used the same workaround for mob to make it display sentence for player too, they can't customise it wich is sad but at least they wont use it silently. -
SC_CUSTOMSTATUS for val1, val2, val3 and val4 - Where?
Lighta replied to xRaisen's question in Source Support
Hmm ok I'll try to awser this : In status.c : status_change_end_, you need to insert a new case, and add your lines. And to call this you could just do, status_change_end(&sd->bl,SC_CUSTOMSTATUS,INVALID_TIMER); (this to force ending, otherwise he will finish when his duration expire). Is that what u wanted ? -
uh ?? You wanna kick averyone for a specified map-server ?