All Activity

This stream auto-updates     

  1. Today
  2. does anyone know where these are located at?
  3. So i had to go over my brandish spear again but figured out most of it Can be used a few different ways..... splash on a grid with movement is really smooth with it The results of this modification is my magicalbullet and desperado is a UNT skill No idea how to explain it other then for you to try it yourself : struct square { int val1[19]; int val2[19]; }; This number for square should be increased as high as you can if you wanna keep using this square grid... Ill have to verify this later because re declaring it causes issues but its relative to the amount of cells were hitting static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) { nullpo_retv(tc); if(dir == 0){ tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x-1; tc->val1[3]=x; tc->val1[4]=x+1; tc->val1[5]=x+1; tc->val1[6]=x; tc->val1[7]=x+1; tc->val1[8]=x-1; tc->val1[9]=x; tc->val1[10]=x+1; tc->val1[11]=x-1; tc->val1[12]=x; tc->val1[13]=x+1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x+1; tc->val1[17]=x-1; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-1; tc->val2[5]=y-1; tc->val2[6]=y-2; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-3; tc->val2[10]=y-3; tc->val2[11]=y-3; tc->val2[12]=y-4; tc->val2[13]=y-4; tc->val2[14]=y-4; tc->val2[15]=y+1; tc->val2[16]=y+1; tc->val2[17]=y+1; } else if(dir==2){ tc->val1[0]=x+3; tc->val1[1]=x+3; tc->val1[2]=x+3; tc->val1[3]=x+4; tc->val1[4]=x+4; tc->val1[5]=x+4; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+1; tc->val1[10]=x+1; tc->val1[11]=x+1; tc->val1[12]=x-1; tc->val1[13]=x-1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==4){ tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x-1; tc->val1[3]=x; tc->val1[4]=x+1; tc->val1[5]=x+1; tc->val1[6]=x; tc->val1[7]=x+1; tc->val1[8]=x-1; tc->val1[9]=x; tc->val1[10]=x+1; tc->val1[11]=x-1; tc->val1[12]=x; tc->val1[13]=x+1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x+1; tc->val1[17]=x-1; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y+1; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y+2; tc->val2[7]=y+2; tc->val2[8]=y+2; tc->val2[9]=y+3; tc->val2[10]=y+3; tc->val2[11]=y+3; tc->val2[12]=y+4; tc->val2[13]=y+4; tc->val2[14]=y+4; tc->val2[15]=y-1; tc->val2[16]=y-1; tc->val2[17]=y-1; } else if(dir==6){ tc->val1[0]=x-3; tc->val1[1]=x-3; tc->val1[2]=x-3; tc->val1[3]=x-4; tc->val1[4]=x-4; tc->val1[5]=x-4; tc->val1[6]=x-2; tc->val1[7]=x-2; tc->val1[8]=x-2; tc->val1[9]=x-1; tc->val1[10]=x-1; tc->val1[11]=x-1; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==1){ tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x+2; tc->val1[3]=x; tc->val1[4]=x; tc->val1[5]=x+1; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+1; tc->val1[9]=x+1; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+3; tc->val1[13]=x+3; tc->val1[14]=x+3; tc->val1[15]=x+4; tc->val1[16]=x+3; tc->val1[17]=x+4; tc->val1[18]=x+4; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-2; tc->val2[5]=y-1; tc->val2[6]=y-1; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-3; tc->val2[10]=y-3; tc->val2[11]=y-4; tc->val2[12]=y-4; tc->val2[13]=y-1; tc->val2[14]=y-2; tc->val2[15]=y-2; tc->val2[16]=y-3; tc->val2[17]=y-3; tc->val2[18]=y-4; } else if(dir==3){ tc->val1[0]=x+4; tc->val1[1]=x+4; tc->val1[2]=x+4; tc->val1[3]=x+3; tc->val1[4]=x+3; tc->val1[5]=x+3; tc->val1[6]=x+3; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+2; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x+1; tc->val1[16]=x; tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; tc->val2[3]=y+4; tc->val2[4]=y+3; tc->val2[5]=y+2; tc->val2[6]=y+1; tc->val2[7]=y+4; tc->val2[8]=y+3; tc->val2[9]=y+2; tc->val2[10]=y+1; tc->val2[11]=y; tc->val2[12]=y+3; tc->val2[13]=y+2; tc->val2[14]=y+1; tc->val2[15]=y; tc->val2[16]=y+2; tc->val2[17]=y+1; tc->val2[18]=y; } else if(dir==5){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+4; tc->val2[2]=y+4; tc->val2[3]=y+3; tc->val2[4]=y+3; tc->val2[5]=y+3; tc->val2[6]=y+3; tc->val2[7]=y+2; tc->val2[8]=y+2; tc->val2[9]=y+2; tc->val2[10]=y+2; tc->val2[11]=y+2; tc->val2[12]=y+1; tc->val2[13]=y+1; tc->val2[14]=y+1; tc->val2[15]=y+1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } else if(dir==7){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y-4; tc->val2[1]=y-4; tc->val2[2]=y-4; tc->val2[3]=y-3; tc->val2[4]=y-3; tc->val2[5]=y-3; tc->val2[6]=y-3; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-2; tc->val2[10]=y-2; tc->val2[11]=y-2; tc->val2[12]=y-1; tc->val2[13]=y-1; tc->val2[14]=y-1; tc->val2[15]=y-1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } } this is my grid need to make sure you mark the cell YOU ARE STANDING ON if you wanna use it with RANGED I cant explain the grid but hold on maybe i can draw it basically you have a slot for x and y as you look at this tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; you see how Y starts after 18 Xs for this direction ? so these two would be a pair tc->val1[0]=x-4; tc->val2[0]=y-4; Im looking at direction 7 which is...facing the top right from center That would be the out most cells static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are) { int c; nullpo_retv(tc); for( c = 0; c < 19; c++ ) { switch( dir ) { case 0: tc->val2[c]+=are; break; case 1: tc->val1[c]-=are; tc->val2[c]+=are; break; case 2: tc->val1[c]-=are; break; case 3: tc->val1[c]-=are; tc->val2[c]-=are; break; case 4: tc->val2[c]-=are; break; case 5: tc->val1[c]+=are; tc->val2[c]-=are; break; case 6: tc->val1[c]+=are; break; case 7: tc->val1[c]+=are; tc->val2[c]+=are; break; } } } I changed this to increase the max of growth function for( c = 0; c < 19; c++ ) { so now we wont get stack errors and finally static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) { int c,n=0; uint8 dir; struct square tc; int x, y; nullpo_retv(bl); x = bl->x; y = bl->y; dir = map->calc_dir(src, x, y); skill->brandishspear_first(&tc,dir,x,y); skill->brandishspear_dir(&tc,dir,4); skill->area_temp[1] = bl->id; for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } } first line int c,n=0; No idea what N does but to me it is useless, im pretty sure N is the amount of tiers in brandish spear.. lvl 1 3 7 and 9 skill->brandishspear_dir(&tc,dir,4); So this is why its flipped, the final number is the placement , so if you set it to 0, it would be closer to you... its weird but id leave it -4 for the same results that i get for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } finally set all these otherwise just get stack errors so if you wanna re use it which ill verify, you just need to set a large struct sqaure and youll be all good
  4. Do I need to pay a different host for my patcher? or the host of the server is also the host for the patcher?
  5. thanks for your reply it turned out that i had done a mistake at "grf-files.txt" entry also the mapfiles i've extracted from data.grf were corrupted works fine now
  6. @utofaery Do you still need help with this script? I realized this was from my Instanced Farming Zones.
  7. Aeromesi

    RagnaLand

    Looks interesting. I'll give it a check when October comes
  8. Thanks you i'll try this Edit : It worked, here is what I used in case someone needs. else if( strcharinfo(3) == "payg_cas05" && Class == Job_Stalker && getskilllv(CR_ACIDDEMONSTRATION)){ announce "your msg", bc_self; addtimer 1000, "WoE_Kick::OnKick";}
  9. Yesterday
  10. Hello, I activated the feature which allows stalker to get acid demonstration, but i'd like to prevent them from coming in woe with this skill. Here is my current woe kicker : - script WoE_Kick FAKE_NPC,{ end; OnKick: warp "gonryun",159,124; end; OnPCLoadMapEvent: //LVL MAX LIMITATION if (agitcheck() == 1 || agitcheck2() == 1) { if( strcharinfo(3) == "payg_cas05" && BaseLevel > 99 ){ addtimer 1000, "WoE_Kick::OnKick";} else if( strcharinfo(3) == "payg_cas01" && BaseLevel > 200 ){ addtimer 1000, "WoE_Kick::OnKick"; } //stat restriction else if( strcharinfo(3) == "payg_cas05" && (readparam(bStr)>=100 || readparam(bInt)>=100 || readparam(bAgi)>=100 || readparam(bDex)>=100 || readparam(bVit)>=100 || readparam(bLuk)>=100) ){ addtimer 1000, "WoE_Kick::OnKick"; } //GUILD LIMITATION else if( strcharinfo(3) == "payg_cas05" && !getcharid(2) ){ addtimer 1000, "WoE_Kick::OnKick"; } else if( strcharinfo(3) == "payg_cas01" && !getcharid(2) ){ addtimer 1000, "WoE_Kick::OnKick"; } else if( strcharinfo(3) == "arug_cas05" && !getcharid(2) ){ addtimer 1000, "WoE_Kick::OnKick"; } } //PVP 99 else if( strcharinfo(3) == "guild_vs2" && (readparam(bStr)>=100 || readparam(bInt)>=100 || readparam(bAgi)>=100 || readparam(bDex)>=100 || readparam(bVit)>=100 || readparam(bLuk)>=100) ){ addtimer 1000, "WoE_Kick::OnKick"; } end; } payg_cas01 mapflag loadevent payg_cas05 mapflag loadevent arug_cas05 mapflag loadevent guild_vs2 mapflag loadevent But I have to admit I have no idea how to prevent a stalker with acid demo to come in. Can someone helps me on this ? Thanks a lot
  11. It works perfectly, thanks a lot for your help !
  12. Hmm yes, I think you should duplicate original card act and rename to taogunka.act. You need to get it from official data.grf, it is probably at: data/sprite/¾ÆÀÌÅÛ/À̸§¾ø´ÂÄ«µå.act
  13. Mihael

    @sleep

    Nice plugin annie ❤️
  14. Remove this. else { struct packet_reqnameall_ack packet = { 0 }; packet.packet_id = reqName; packet.gid = md->bl.id; memcpy( packet.name, md->name, NAME_LENGTH ); clif->send( &packet, sizeof(struct packet_reqname_ack), *bl, AREA ); hookStop(); return; } and recompile you emulator.
  15. So here is what I did : In À¯ÀúÀÎÅÍÆäÀ̽º/collection/taogunka.bmp In À¯ÀúÀÎÅÍÆäÀ̽º//item/taogunka.bmp In ¾ÆÀÌÅÛ/taogunka.spr In iteminfo.lua : identifiedDisplayName = "Tao Gunka Card", identifiedResourceName = "taogunka", It works, but when I clic on my card in game in order to equip it into something, it errors me, saying I miss taogunka.act in ¾ÆÀÌÅÛ/. So I obviously miss taogunka.act, but how can I get it ? I'm using : but It doesn't provide any kind of .act, just .spr. Am I missing something ? I'm guessing I need to use the .act of other cards (and rename it to taogunka.act), but I just can't find it anywhere...
  16. what you mean not working? cant enable it in nemo or it enabled, but pressing key works same as without patch?
  17. It should be exactly like adding any item. You have to put the .spr file in the sprite directory as you did and also the item and collection bmp in texture folder. Iirc they are: texture/À¯ÀúÀÎÅÍÆäÀ̽º/item/<item name>.bmp --> the sprite that appears in yor inventory texture/À¯ÀúÀÎÅÍÆäÀ̽º/collection/<item name>.bmp --> the image that appears when you right click
  18. It's because the plugin (https://github.com/dastgirp/HPM-Plugins/blob/master/src/plugins/npc-duplicate.c) has changed it's syntax So, do the following in campfire.txt, Change duplicatenpc("Campfire#CF", "Campfire", sprintf("CF_%d", [email protected]_char_id), [email protected]$, [email protected], [email protected], 0); to duplicatenpc("Campfire#CF", sprintf("Campfire#CF_%d", [email protected]_char_id), [email protected]$, [email protected], [email protected], 0);
  19. Show the output of the command "map-server --load-plugin mapcache --rebuild-mapcache"
  20. { Id: 5043 Name: "SU_LUNATICCARROTBEAT2" Description: "Lunatic Carrot Beat 2" MaxLevel: 5 Hit: "BDT_SKILL" SkillType: { Enemy: true } SkillInfo: { Chorus: true } AttackType: "Weapon" InterruptCast: true Requirements: { SPCost: 1 } }, this is the last one in my db... just keep adding +1 and recreate the new summoner skill need to add some bare minimal coding of at least a no damage function to make anything work shit i wouldnt be surprised if they use the new skill effect info for these skills >_>
  21. Hello, I'd like to change the sprite of my MVP/miniMVP cards to let's say red, and give to normal cards the classic theme. I know I have to add the new card sprite in sprite/¾ÆÀÌÅÛ. But I can't find the related file in order to give the card one specific item sprite and one specific collection sprite. Here is my luafiles514/lua files/datainfo The only thing I managed to do so far is change the item sprite by changing the resourcename in iteminfo.lua. But once I right clic on the item in game It gives me an error telling me there's no collection related to this card. So can someone tell me in which file I can't set the new item sprite (just like there's for hat in accname and accessoryname), and in which file I can decide which collection I want to give to my new card. For example, let's say i'm making a totally new MVP card, I want to give it a new sprite which I'll call "redsprite.bmp" but also give it the collection of Tao Gunka Card. How should I proceed ? Thanks a lot for your help
  22. hey guys i wonder how adding custom or duplicated maps to the game works since there are many changes. what i've done so far: - added mapcache.c as a plugin and compiled it -> enabled the plugin serversided - added my custom map (which is a clone from moscovia) to the necessary files (db\map_index.txt; conf\map\maps.conf; conf\grf-files.txt) - opened cmd -> located to my directory -> "map-server --load-plugin mapcache --rebuild-mapcache" this is when the mapserver told me he removed all maps. as i went to maps\re - full emptyness what did i do wrong?
  23. good day, it seems "Allow spam skills by hotkey by Functor, 4144." is not working.
  24. I don't think I understand how to do this, my skill_db. txt is so in the Summoner { Id: 5024 Name: "SU_SPRITEMABLE" Description: "Spirit Marble" MaxLevel: 1 NumberOfHits: 0 }, { Id: 5025 Name: "SU_POWEROFLAND" Description: "Power of Land" MaxLevel: 1 NumberOfHits: 0 }, { Id: 5026 Name: "SU_SV_STEMSPEAR" Description: "Silvervine Stem Spear" MaxLevel: 5 Range: 9 Hit: "BDT_SKILL" SkillType: { Enemy: true } AttackType: "Magic" Element: { Lv1: "Ele_Earth" Lv2: "Ele_Fire" Lv3: "Ele_Water" Lv4: "Ele_Wind" Lv5: "Ele_Ghost" } InterruptCast: true CastTime: 2500 AfterCastActDelay: 1000 SkillData1: 10000 FixedCastTime: 0 Requirements: { SPCost: { Lv1: 40 Lv2: 40 Lv3: 40 Lv4: 40 Lv5: 40 Lv6: 40 Lv7: 40 Lv8: 40 Lv9: 40 Lv10: 40 } } }, { Id: 5027 Name: "SU_CN_POWDERING" Description: "Catnip Powdering" MaxLevel: 5 Range: 9 Hit: "BDT_SKILL" SkillType: { Enemy: true } DamageType: { NoDamage: true SplashArea: true } SplashRange: { Lv1: 3 Lv2: 3 Lv3: 5 Lv4: 5 Lv5: 7 } InterruptCast: true SkillInstances: 1 CastTime: 1500 AfterCastActDelay: 1000 SkillData1: { Lv1: 3000 Lv2: 4000 Lv3: 5000 Lv4: 6000 Lv5: 7000 } FixedCastTime: 0 Requirements: { SPCost: { Lv1: 40 Lv2: 36 Lv3: 32 Lv4: 28 Lv5: 24 } Items: { Catnip_Fruit: 1 } } Unit: { Id: 0x106 Layout: { Lv1: 1 Lv2: 1 Lv3: 2 Lv4: 2 Lv5: 3 } Interval: -1 Target: "Enemy" Flag: { UF_PATHCHECK: true UF_RANGEDSINGLEUNIT: true } } }, And go on.
  1. Load more activity