# Guías

## 10 topics in this forum

• 2 replies
• 2281 views

• 648 views

• 5 replies
• 2359 views

• 4 replies
• 1382 views

• 0 replies
• 2874 views

• 2 replies
• 3426 views

• 2841 views

• 6 replies
• 1140 views

• 1837 views

• 3248 views

• ### Posts

• does anyone know where these are located at?
• 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; int val2; }; 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=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x+1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val2=y; tc->val2=y; tc->val2=y; tc->val2=y-1; tc->val2=y-1; tc->val2=y-1; tc->val2=y-2; tc->val2=y-2; tc->val2=y-2; tc->val2=y-3; tc->val2=y-3; tc->val2=y-3; tc->val2=y-4; tc->val2=y-4; tc->val2=y-4; tc->val2=y+1; tc->val2=y+1; tc->val2=y+1; } else if(dir==2){ tc->val1=x+3; tc->val1=x+3; tc->val1=x+3; tc->val1=x+4; tc->val1=x+4; tc->val1=x+4; tc->val1=x+2; tc->val1=x+2; tc->val1=x+2; tc->val1=x+1; tc->val1=x+1; tc->val1=x+1; tc->val1=x-1; tc->val1=x-1; tc->val1=x-1; tc->val1=x; tc->val1=x; tc->val1=x; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y+1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; } else if(dir==4){ tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x+1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val1=x; tc->val1=x+1; tc->val1=x-1; tc->val2=y; tc->val2=y; tc->val2=y; tc->val2=y+1; tc->val2=y+1; tc->val2=y+1; tc->val2=y+2; tc->val2=y+2; tc->val2=y+2; tc->val2=y+3; tc->val2=y+3; tc->val2=y+3; tc->val2=y+4; tc->val2=y+4; tc->val2=y+4; tc->val2=y-1; tc->val2=y-1; tc->val2=y-1; } else if(dir==6){ tc->val1=x-3; tc->val1=x-3; tc->val1=x-3; tc->val1=x-4; tc->val1=x-4; tc->val1=x-4; tc->val1=x-2; tc->val1=x-2; tc->val1=x-2; tc->val1=x-1; tc->val1=x-1; tc->val1=x-1; tc->val1=x+1; tc->val1=x+1; tc->val1=x+1; tc->val1=x; tc->val1=x; tc->val1=x; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y+1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; tc->val2=y; tc->val2=y+1; tc->val2=y-1; } else if(dir==1){ tc->val1=x; tc->val1=x+1; tc->val1=x+2; tc->val1=x; tc->val1=x; tc->val1=x+1; tc->val1=x+2; tc->val1=x+2; tc->val1=x+1; tc->val1=x+1; tc->val1=x+2; tc->val1=x+2; tc->val1=x+3; tc->val1=x+3; tc->val1=x+3; tc->val1=x+4; tc->val1=x+3; tc->val1=x+4; tc->val1=x+4; tc->val2=y; tc->val2=y; tc->val2=y; tc->val2=y-1; tc->val2=y-2; tc->val2=y-1; tc->val2=y-1; tc->val2=y-2; tc->val2=y-2; tc->val2=y-3; tc->val2=y-3; tc->val2=y-4; tc->val2=y-4; tc->val2=y-1; tc->val2=y-2; tc->val2=y-2; tc->val2=y-3; tc->val2=y-3; tc->val2=y-4; } else if(dir==3){ tc->val1=x+4; tc->val1=x+4; tc->val1=x+4; tc->val1=x+3; tc->val1=x+3; tc->val1=x+3; tc->val1=x+3; tc->val1=x+2; tc->val1=x+2; tc->val1=x+2; tc->val1=x+2; tc->val1=x+2; tc->val1=x+1; tc->val1=x+1; tc->val1=x+1; tc->val1=x+1; tc->val1=x; tc->val1=x; tc->val1=x; tc->val2=y+4; tc->val2=y+3; tc->val2=y+2; tc->val2=y+4; tc->val2=y+3; tc->val2=y+2; tc->val2=y+1; tc->val2=y+4; tc->val2=y+3; tc->val2=y+2; tc->val2=y+1; tc->val2=y; tc->val2=y+3; tc->val2=y+2; tc->val2=y+1; tc->val2=y; tc->val2=y+2; tc->val2=y+1; tc->val2=y; } else if(dir==5){ tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val2=y+4; tc->val2=y+4; tc->val2=y+4; tc->val2=y+3; tc->val2=y+3; tc->val2=y+3; tc->val2=y+3; tc->val2=y+2; tc->val2=y+2; tc->val2=y+2; tc->val2=y+2; tc->val2=y+2; tc->val2=y+1; tc->val2=y+1; tc->val2=y+1; tc->val2=y+1; tc->val2=y; tc->val2=y; tc->val2=y; } else if(dir==7){ tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x-4; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val1=x-3; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val1=x-2; tc->val1=x-1; tc->val1=x; tc->val2=y-4; tc->val2=y-4; tc->val2=y-4; tc->val2=y-3; tc->val2=y-3; tc->val2=y-3; tc->val2=y-3; tc->val2=y-2; tc->val2=y-2; tc->val2=y-2; tc->val2=y-2; tc->val2=y-2; tc->val2=y-1; tc->val2=y-1; tc->val2=y-1; tc->val2=y-1; tc->val2=y; tc->val2=y; tc->val2=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=x; tc->val1=x; tc->val2=y+4; tc->val2=y+3; tc->val2=y+2; you see how Y starts after 18 Xs for this direction ?  so these two would be a pair tc->val1=x-4; tc->val2=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 = 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
• Do I need to pay a different host for my patcher? or the host of the server is also the host for the patcher?
• 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
• @utofaery Do you still need help with this script? I realized this was from my Instanced Farming Zones. 