-
Posts
178 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by chowking
-
-
On 12/29/2017 at 11:15 PM, Eisetley said:
I can't find packet_db inside rA folder by the way.
packet_db.txt was removed it will now work if you've configured packets and recompiled its good
clientinfo.xml is the same as always -
I checked your code its the same as the original,
What to do:
-Check if there are errors in map console when using acid demo
-Double check item db if item are set to indestructible
-Recompile
-check skill db might be something there
Compare your skill.c to github working skill.c find all cr_acid demo compare of theyre the same
If you still dont solve i recommend getting a new clean rathena implement mods 1 by 1, test it before implemwnting a new one to detect errors l/bugs
-
7 hours ago, NoWayy said:
How do I remove the new mobs?
if youve already have the server in pre-re mode, mobs are still there at mob_db.sql but wont spawn in maps, so basically you'll just have blank maps i suppose
-
Did you customize something in @go? That map invek is undeclared
-
so i did this waay back, this code modifies spiderweb to be placed on the ground and trap anyone who walks overit.
=========================================================================== Index: src/map/skill.cpp =========================================================================== @@ -13642,6 +13642,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns case UNT_FIREPILLAR_ACTIVE: case UNT_ELECTRICSHOCKER: case UNT_MANHOLE: + case UNT_SPIDERWEB: return 0; default: ShowError("skill_unit_onplace_timer: interval error (unit id %x)\n", sg->unit_id); @ -13817,7 +13818,23 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns sc_start(ss,bl,SC_STOP,100,0,skill_get_time2(sg->skill_id,sg->skill_lv)); } break; - + case UNT_SPIDERWEB: + if (sg->val2 == 0 && tsc) { + int sec = skill_get_time2(sg->skill_id, sg->skill_lv); + if (status_change_start(ss, bl, type, 10000, sg->skill_lv, sg->group_id, 0, 0, sec, tick)) { + const struct TimerData* td = tsc->data[type] ? get_timer(tsc->data[type]->timer) : NULL; + if (td) + sec = DIFF_TICK(td->tick, tick); + unit_movepos(bl, unit->bl.x, unit->bl.y, 0, 0); + clif_fixpos(bl); + sg->val2 = bl->id; + } + else + sg->limit = DIFF_TICK(tick, sg->tick) + sec; + sg->interval = -1; + unit->range = 0; + } + break; case UNT_ANKLESNARE: case UNT_MANHOLE: if( sg->val2 == 0 && tsc && ((sg->unit_id == UNT_ANKLESNARE && skill_id != SC_ESCAPE) || bl->id != sg->src_id) ) { @ -17932,6 +17949,7 @@ int skill_delunit(struct skill_unit* unit) switch (group->skill_id) { case HT_ANKLESNARE: case SC_ESCAPE: + case PF_SPIDERWEB: { struct block_list* target = map_id2bl(group->val2); enum sc_type type = status_skill2sc(group->skill_id); @ -18540,6 +18558,12 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) } } break; + case UNT_SPIDERWEB: + if (unit->val1 <= 0) { + if (group->unit_id == UNT_SPIDERWEB && group->val2 > 0) + skill_delunit(unit); + } + break; case UNT_REVERBERATION: case UNT_NETHERWORLD: if (unit->val1 <= 0) { =========================================================================== Index: db/pre-re/skill_db.txt =========================================================================== @@ -603,7 +603,7 @@ 402,9,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0, PF_MINDBREAKER,Mind Breaker 403,0,0,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, PF_MEMORIZE,Foresight 404,9,6,2,2,0x1,0,5,1,yes,0,0x100,2,magic,0,0x10000, PF_FOGWALL,Blinding Mist -405,7,6,1,0,0x1,0,1,1,no,0,0,3,magic,0,0x0, PF_SPIDERWEB,Fiber Lock +405,7,6,2,0,0x1,0,1,1,no,0,0,4,magic,0,0x0, PF_SPIDERWEB,Fiber Lock //**** // Assassin Cross =========================================================================== Index: db/pre-re/skill_unit_db.txt =========================================================================== @@ -89,7 +89,7 @@ 369,0xb3, , -1, 0,10000,all, 0x008 //PA_GOSPEL 395,0xb5, , 4, 0, -1,all, 0x200 //CG_MOONLIT 404,0xb6, , -1, 0, -1,all, 0x8000 //PF_FOGWALL -405,0xb7, , 0, 0, -1,enemy, 0x8000 //PF_SPIDERWEB +405,0xb7, , 0, 1, 0,enemy, 0x8000 //PF_SPIDERWEB 409,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLBABY 410,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARENT 428,0x86, , 0, 1, 100,enemy, 0x000 //SG_SUN_WARM ===========================================================================
it does the job yeah but the main problem is the finer points where
intended behavior:- when a player is webbed/trapped and prof/sage places another web beside, the web will forcefully move character/mob. (this works already)
- when there is no one trapped and prof casts spiderweb beyond 4, 1st web cast should be deleted
- the previous web now gets deleted as the character was removed by another web, allowing to infinitely move the character/mob out of his/her will.
what is happening:
- when a player is webbed/trapped and prof/sage places another web beside, the web will forcefully move character/mob.
- the previous web persists but doesn't trap anyone anymore, and after reaching the limit of 4 webs(defined in skill_db.txt) the skill will fail until the 1st web vanishes releasing the trapped character/mob
if you'll notice the code is closely similar to ankle snare,
i built this trying to get reference from already existing skills. -
7 hours ago, Lighta said:
A little note, if I may.
With truncation your remaining time could be a little misleading.
Suppose for instance we have 1.8s left. with current code it will show 1s, where I think 2s would be better to show.
To fix this you could simply change your line :
int w_tick = 10 - (DIFF_TICK(gettick(), sd->canlog_tick) / 1000); to int w_tick = 10 - (DIFF_TICK(gettick()+500, sd->canlog_tick) / 1000); //+500 (0.5s) will make it roundup if needed be
Copy that thanks for pointing it out
-
i applied malufetts mod for go warp delay
im trying to get it to show the actual remaining time before the command can be used again
in '@go'
if (!pc_get_group_level(sd) && DIFF_TICK(gettick(), sd->canlog_tick) < 10000) { sprintf(atcmd_output, msg_txt(sd, 1505), sd->canlog_tick); //Please wait %d seconds before warping. return 0; }
no errors and warning on recompile
but the no message shows in client when trying to warp while attacking playeri already added in map msg conf import line 1505
Edit:
had to add int since code only shows canlog_tick
here is the working code
if (!pc_get_group_level(sd) && DIFF_TICK(gettick(), sd->canlog_tick) < 10000) { int w_tick = 10 - (DIFF_TICK(gettick()+500, sd->canlog_tick) / 1000); //+500 (0.5s) will make it roundup if needed be sprintf(atcmd_output, msg_txt(sd, 1505), w_tick); //Please wait %d seconds before warping. clif_displaymessage(fd, atcmd_output); return 0; }
- 1
-
@nestymow that should be default you probably did something there
compare to rathena skill.cpp for you to see whats wrong -
in status.cpp
find:case SC_STRIPHELM: if (sd && !(flag&SCSTART_LOADED)) { short i; if(sd->bonus.unstripable_equip&EQP_HELM) return 0; i = sd->equip_index[EQI_HEAD_TOP]; if ( i < 0 || !sd->inventory_data[i] ) return 0; pc_unequipitem(sd,i,3); } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break;
add below break;
case SC_CP_ARMOR: status_change_end(bl, SC_STRIPARMOR, INVALID_TIMER); break; case SC_CP_WEAPON: status_change_end(bl, SC_STRIPWEAPON, INVALID_TIMER); break; case SC_CP_SHIELD: status_change_end(bl, SC_STRIPSHIELD, INVALID_TIMER); break; case SC_CP_HELM: status_change_end(bl, SC_STRIPHELM, INVALID_TIMER); break;
save and recompile
-
hey guys, i've modded soul link of blacksmith and starglad to have parry skill, and now im editing it so the blacksmith and SG can use parry with 1h axes and books,
so i did this code
this works when i use return 0; but following the codes now using return false in checks, i cant seem to work around it
bottom line is , is it safe to use return 0; there and wont affect other functions in rAthena if not, please help me get around the return false check;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EDIT: FIXED,so i removed the code
-
// By pass FCP when using single strip skills by 100%(requires Glistening Coat). if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int ii = pc_search_inventory(sd, ITEMID_COATING_BOTTLE); if ( ii < MAX_INVENTORY ) { switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start(src,bl,SC_STRIPWEAPON,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start(src,bl,SC_STRIPSHIELD,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start(src,bl,SC_STRIPARMOR,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start(src,bl,SC_STRIPHELM,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv)); break; } pc_delitem(sd, ii, 1, 0, 0, LOG_TYPE_CONSUME); clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } }
-
probably the cause of it are the units being placed on the ground over and over again
-
ya..even with client problem we still can play the game...why dont you try use latest client since you are using latest rev...try use nemo
i used nemo in diffing,, anyway, ill try and remake my data,
-
like i said after failing to connect once, i can play with no problems, so it rules out the client problems
i think
-
i recently made a new server with the latest rev,
using client 2012-04-10a
configure mmo.h def packet with the clientdate
set packet_db_ver: 30
configured the server to use pre-re
the problem comes after character creation,
here are the steps i did,
1. Login
2. Make new Character3. input name (didn't touch the hair)
4. press enter ( this takes me back to the character selection)
5. log the char to map
when i select the newly created character (pressed enter to log in) the client will display failed to connect to server, trying to log in again and selecting the new char it will now load and log the char to the map, and have no problems,
basically..
the server will always fail to login a newly created char the 1st time it is selected
i can play normally after that so i dont think i got problems with lua files/client files
-
hey guys, where to find src responsible for the change color in item name when you insert a card to a equip that has no "card slot" by itemslotcount or by @item2, rather please point me there,
-
hey guys from pc.c
case SP_HP_LOSS_RATE: // bonus2 bHPLossRate,n,t; if(sd->state.lr_flag != 2) { sd->hp_loss.value = type2; sd->hp_loss.rate = val; } break;
please make it so that the hp loss rate is within a specific time, lose n HP every t miliseconds in x miliseconds
eg
lose 500 hp every 1000 miliseconds in span of 3 minutes/ 180000 miliseconds, will be used for usable items and such
-
the item name will have a corresponding color by its grade, supposed its uncommon, the item name will be green,
i am thinking about putting an additional table in SQL item_db as `grade`, and 0/Null=common 1=uncommon, so on..we might be willing to pay, since i am not the sole owner of the server
also idk if it this info will matter, but my client date is 2012-04-10a
Edit: how can i reproduce the changecolor of bounditems, with just a check in what value it has on a table in sql
-
-
bump
Edit: Fixed it, for future references
in modules/character/view.php
FROM: $sql .= "LEFT OUTER JOIN {$server->charMapDatabase}.`global_reg_value` AS reg ON reg.char_id = ch.char_id AND reg.str = 'PC_DIE_COUNTER' "; TO: $sql .= "LEFT OUTER JOIN {$server->charMapDatabase}.`char_reg_num` AS reg ON reg.char_id = ch.char_id AND reg.key = 'PC_DIE_COUNTER' ";
-
i still haven't fully explored what are the errors that will be encountered but the modules need to be updated,
is there a fix for this? tried debugging it myself but failed miserably
this error occurs when trying to view character
-
you'll need sql installed in your laptop, then make the tables needed, change inter_conf.txt and put 127.0.0.1 there,
-
yes, just replace the red lines with the green
search the red,
replace it with green,
thats how you do it -
im using Windows OS, heres how i do it,
open the .diff or .patch file then at the tool bar file theres a option that says apply, the rest is self explanatory, just dont apply it twice,
Icon Border pack
in Client Requests
Posted · Edited by chowking
Request the Icon border pack the was released waay back in eathena for making ragna icons