-
Posts
1282 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Skorm
-
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
Actually I have an npc kinda like this already... Give me a sec I string together an array of the stat increasing cards. You're going to have to give me rates and stuff if you want it more specific. I'm also not sure if there are specific midgear requirements or if they all work... Thanks. new_1-2,95,71,4 script Bling 100,{ //Checks & Dialogue mes .npc$; mes "I can endow your glasses with mystical powers, but It'll cost yah "+.price+" "+((.price-1)?getitemname(.item)+"s":getitemname(.item))+"."; next; if(!countitem(.item)){ mes .npc$; mes "Sorry come back when you have "+getitemname(.item)+"(s)."; close; } if(select("Yes:No")&2){ mes .npc$; mes "Alright, thanks anyways!"; close; } if(countitem(.item)<.price) { mes .npc$; mes "I'm sorry you don't have enough "+getitemname(.item)+"(s) to for me to endow your specticals, please come back later."; close; } mes .npc$; //Workhorse if(getequipid(9)+1) { delitem .item,.price; set .@id, getequipid(9); set .@ref, getequiprefinerycnt(9); set .@card1, getequipcardid(9,0); set .@card2, getequipcardid(9,1); set .@card3, getequipcardid(9,2); set .@card4, getequipcardid(9,3); delitem2 .@id, 1, 1, .@ref, 0, .@card1, .@card2, .@card3, .@card4; getitem2 .@id, 1, 1, .@ref, 0, .@card1, .@card2, .@card3, callfunc("F_RandMes", 50, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, 4757, 4758, 4759); equip .@id; misceffect 154; mes "All done!"; close; } mes "I'm sorry but you need to equipped a mid-range headgear before we can continue."; close; //NPC Constants //=-=-=-=-=-=-=Configuration=-=-=-=-=-=-= OnInit: set .npc$, "[^0000FFBlinger^000000]"; set .price, 1; set .item, 6242; //=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-= } -
cmd_in02,181,98,2 script Dicer 57,{ //Variable for the number guess zeny bet set @betnum, 10; //1000 Coin Bet set @item, 7539; mes "[Dicer]"; mes "Welcome to the Revolution Dice Game.You wanna check your luck with dices?Remember I am the dice expert and rarely someone was able to beat me."; next; mes "[Dicer]"; mes "What would you like to do?"; next; menu "Play",L_play,"Info",L_info,"Go away",L_go; L_go: mes "[Dicer]"; mes "Please come again when you are ready."; close; L_info: mes "[Dicer]"; mes "Please choose one of the following options for more informations:"; next; menu "Main Rules",L_main,"Bets and Wins",L_bet,"Extra Games",L_extra,"Go away",L_go; L_main: mes "[Dicer]"; mes "^0080FFRoll A Dice^000000 is a very simple game.The game allows you and the NPC to throw 3 dices.Whoever gets a higher total number wins."; next; goto L_info; L_bet: mes "[Dicer]"; mes "You have 4 zeny amounts to choose for your bet.If you choose a high bet your win will also be higher,it is that simple.Also various extra games can increase your win."; next; mes "[Dicer]"; mes "Example:"; mes "^0080FFBet^000000 ^0080FFWin^000000"; mes "5 10"; mes "10 20"; next; goto L_info; L_extra: mes "[Dicer]"; mes "You can also try increasing your win by playing extra games like guessing your total number at the end of the game.It will cost you an extra amount of zeny but if you guess the number your win will be tripled instead of doubled."; next; goto L_info; L_play: mes "[Dicer]"; mes "Ok,please choose the amount of zeny you want to bet:"; mes "( maximum bet: "+@betnum+" )"; while(!@bet||@bet>@betnum||@bet<0) { input(@bet); if(countitem(@item)<@bet&&@bet<=@betnum) { goto "L_nzeny"; } } next; menu "Place Bet! ("+@bet+")",L_zeny1,"Too rich for my blood...",L_go; L_zeny1: delitem @item,@bet; goto L_gamea; L_nzeny: mes "[Dicer]"; emotion 20; mes "Sorry but it seems you don't have enough zeny!"; close; L_gamea: mes "[Dicer]"; mes "Would you like to try to increase your win by trying to guess the number you will get?"; mes "It will cost you another ^0080FF"+@bet+"^000000 zeny."; next; menu "Yes",L_gamec,"No",L_gameb; L_gamec: if(countitem(@item) < @betnum) goto L_nzeny; mes "[Dicer]"; mes "Please input the number you think you will get (3-18)."; input @numg; if(@numg<3) message strcharinfo(0),"Number is too low, input again."; if(@numg>18) message strcharinfo(0),"Number is too high, input again."; if(@numg<3||@numg>18) goto L_gamec; delitem @item,@betnum; //set Zeny, Zeny - @betnum; next; L_gameb: set @dea1, rand(1,6); set @dea2, rand(1,6); set @dea3, rand(1,6); set @pla1, rand(1,6); set @pla2, rand(1,6); set @pla3, rand(1,6); set @deatot, @dea1+@dea2+@dea3; set @platot, @pla1+@pla2+@pla3; mes "[Dicer]"; mes "I will be the first one to roll the dices,and after that you will throw them.I am feeling lucky today, so you better go away before I take every zeny you have."; next; mes "[^0080FFDicer 1st Turn^000000]"; mes "Throwing first dice!"; mes ".....roll.....roll....roll...."; emotion 58; mes " "; mes "First throw: ^0080FF"+@dea1+" ^000000"; next; mes "[^0080FFDicer 2nd Turn^000000]"; mes "Throwing second dice!"; emotion 58; mes ".....roll.....roll....roll...."; mes " "; mes "Second throw: ^0080FF"+@dea2+" ^000000"; next; mes "[^0080FFDicer 3rd Turn^000000]"; mes "Throwing third dice!"; emotion 58; mes ".....roll.....roll....roll...."; mes " "; mes "Third throw: ^0080FF"+@dea3+" ^000000"; next; mes "[Dicer]"; mes "Now it's your turn to throw the dices.I bet you can't get higher numbers then me."; next; mes "[^0080FFPlayer 1st Turn^000000]"; mes "Throwing first dice!"; mes ".....roll.....roll....roll...."; emotion 58; mes " "; mes "First throw: ^0080FF"+@pla1+" ^000000"; next; mes "[^0080FFPlayer 2nd Turn^000000]"; mes "Throwing second dice!"; emotion 58; mes ".....roll.....roll....roll...."; mes " "; mes "Second throw: ^0080FF"+@pla2+" ^000000"; next; mes "[^0080FFPlayer 3rd Turn^000000]"; mes "Throwing third dice!"; emotion 58; mes ".....roll.....roll....roll...."; mes " "; mes "Third throw: ^0080FF"+@pla3+" ^000000"; next; mes "[Dicer]"; mes "Let's look at our total numbers:"; mes " "; mes "Dicer Total: ^0080FF"+@deatot+" ^000000."; mes "Player Total: ^0080FF"+@platot+" ^000000."; next; if (@platot < @deatot) goto L_lose; if (@platot == @deatot) goto L_again; if (@platot > @deatot && @platot == @numg) goto L_win2; if (@platot > @deatot) goto L_win1; L_lose: mes "[Dicer]"; emotion 39; mes "I got a higher number!!!"; mes "See I told you nobody can beat me!"; mes " "; mes "You lost ^0080FF"+@bet+"^000000 Zeny."; next; L_again: mes "[Dicer]"; emotion 54; mes "It seems it's a draw.Let's play again."; next; goto L_play; L_win1: mes "[Dicer]"; getitem @item,@bet*2; //set Zeny, Zeny + @bet*2; set @wona, @bet*2; emotion 36; mes "I can't belive I lost. Here take your money."; mes " "; mes "You won ^0080FF"+@wona+"^000000 Zeny."; next; goto L_againa; L_win2: mes "[Dicer]"; getitem @item,@bet*3; set @wonb, @bet*3; emotion 36; mes "You even guessed the total number you got.I can't belive I lost. Here is your money."; mes " "; mes "You won ^0080FF"+@wonb+"^000000 Zeny."; next; L_againa: mes "[Dicer]"; mes "Would you like to play again?"; next; menu "Yes",L_play,"No",L_go; }
-
Guild Warehouse w/ Password/Position Based Restrictions
Skorm replied to Skorm's topic in Utility Script Releases
Actually you don't need to set both you can set one without the other... I just like having the option. Hmm... Always open to suggestions I'll look into this. -
It would be more effective to surround the player with setwall in each direction.
-
Guild Warehouse w/ Password/Position Based Restrictions
Skorm replied to Skorm's topic in Utility Script Releases
Change Log? Updated to full SQL support and optimized command parts... The npc warehouse npc included is really just a Sample and I didn't have much time to convolute her- yet. -
prontera.gat,156,169,3 script Magic Man 100,{ npctalk "Just try and get me!"; setcell "prontera",148,175,163,164,cell_walkable,0; // Sets cells unwalkable //setcell "prontera",148,175,163,175,0,0; Does the same thing but using a number for type. emotion e_gg,0; sleep 1000*10; emotion e_swt,0; npctalk "My magicks all gone!!!"; setcell "prontera",148,175,163,164,cell_walkable,1; // Sets cells walkable again } /* Creates nontraversable cells in the given area. (y1) N [ ][ ][ ][ ][ ][ ][ ][ ][ ] (x1)[ ][1][u][u][u][u][u][u][ ] [ ][u][u][u][u][u][u][u][ ] [ ][u][u][u][u][u][u][u][ ] W [ ][u][u][u][x][u][u][u][ ]E [ ][u][u][u][u][u][u][u][ ] [ ][u][u][u][u][u][u][2][ ](x2) [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] S (y2) Key: [x]=NPC [u]=unwalkable cells [ ]=walkable cells [1]=The point where x1 & y1 meet. [2]=The point where x2 & y2 meet. Description explained: *setcell "<map name>",<x1>,<y1>,<x2>,<y2>,<type>,<flag>; "<map name>" = String: of the map you want the wall to be on. <x1> = Int: for the x1 cord. ( can be found using /where ) <y1> = Int: for the y1 cord. ( can be found using /where ) <x2> = Int: for the x2 cord. ( can be found using /where ) <y2> = Int: for the y2 cord. ( can be found using /where ) <type> = Int: This is a parameter for what kind of cell you want to set. (Check the list below.) <flag> = Int: Can be 0 or 1. (0:off) (1:on) <type> list: cell_walkable 0 cell_shootable 1 cell_water 2 cell_npc 3 cell_basilica 4 cell_landprotector 5 cell_novending 6 cell_nochat 7 This list can also be found in db/const.txt If you're still having problems with x1,y1 -> x2,y2 I like to think of it like clicking and dragging on your desktop. Where point x1,y1 is where you started and x2,y2 is where you stop. Also setcell doesn't work as well for creating walls as setwall. */
-
Looks dude it's a lot of extra work just to put the variable not spaced out like that... Completely pointless but ... yeah. prontera,155,150,0 script Test 123,{ end; OnInit: set .alphabets$,"VENDING"; set .i,callfunc("str_toarray", .alphabets$, "$@alphabets$[0]"); copyarray .alphabets$[0], $@alphabets$[0], .i; deletearray $@alphabets$[0],128; while( 1 ){ set .@title$,.@title$ + .alphabets$[.@i]; set .@i,.@i + 1; delwaitingroom; waitingroom ""+.@title$,0; sleep 1000; if( .@i % 8 == 0 ) { set .@title$,""; set .@i, 0; } } } ///callfunc "str_toarray", "<string>", "<array output>"; function script str_toarray { sleep2 1; if ( getstrlen( getarg(0) ) > 128 ) return 0; setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "E", "I", "A", "S", "R", "N", "T", "O", "U", "L", "C", "P", "M", "D", "V", "H", "G", "F", "B", "Y", "Q", "K", "Z", "X", "J", "W", "_", "-"; set .@charsize, getarraysize(.@char$); set .@tmp$, "|~key~|"; set .@str$, .@tmp$ + getarg(0) ; set .@len, getstrlen(getarg(0)); while( .@len>.@s ) { set .@i,0; while( .@i<.@charsize ) { if ( ! ( set(.@l,.@l+1) % 650) ) sleep2 1; if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; set .@arr$[.@s], .@char$[.@i]; break; } set .@i, .@i+1; } if ( .@i == .@charsize ) return 0; else set .@s, .@s+1; } deletearray getd(getarg(1)); copyarray getd(getarg(1)), .@arr$, .@len; return .@len; }
-
prontera.gat,162,127,3 script Gate Keeper 100,{ npctalk "Closing the invisible Gate!!!"; setwall "prontera",162,127,14,2,1,"prtwall"; npctalk "Try walking past me!"; emotion e_gg,0; sleep 1000*10; npctalk "Opening the invisible Gate!!!"; delwall "prtwall"; } /* Creates nontraversable cells in the direction given. N [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] [x][ ][ ][ ][ ]E [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ] S Key: [x]=NPC =unwalkable cells [ ]=walkable cells Description explained: *setwall "<map name>",<x>,<y>,<size>,<dir>,<shootable>,"<name>"; "<map name>" = String: of the map you want the wall to be on. <x> = Int: for the x cord. ( can be found using /where ) <y> = Int: for the y cord. ( can be found using /where ) <size> = Int: The amount of cells you want the wall to extend into from the point of npc. <dir> = Int: Direction ( 0=N, 1=NW, 2=W, 3=SW, 4=S, 5=SE, 6=E, 7=NE ) <shootable> = Int: 1=Yes 0=No ( Allows sniping over wall. ) "<name>" = String: Just a variable used to locate the wall for deleting it. *delwall "<name>"; "<name>" = String: Same name you used to create the wall you want to destroy.*/ I've included a short description and a short example of the command being used to shut the prontera gate for 10 seconds.
-
mes "[ In-Game Control Panel ]"; mes " "; mes "^0000ff*Enter Your Username*^000000"; input .@userid$; mes "^0000ff*Enter Your Password*^000000"; input .@user_pass$; query_sql "SELECT account_id FROM login WHERE userid='"+escape_sql(.@userid$)+"' AND user_pass='"+escape_sql(.@user_pass$)+"' AND last_ip = 'YourIPaddresshere';", .@account_id; if (.@account_id==getcharid(3)) { next; mes "[ In-Game Control Panel ]"; mes " "; mes "^ff0000*You are now logged-In as "+.@userid$+"*^000000"; next; } else { next; mes "[ In-Game Control Panel ]"; mes "^ff0000ERROR^000000 :"; mes "- Invalid Username/Password."; mes "- Account Does Not Exist."; close; }
-
It's hard for me to tell what you want you want here. Do you just want it to say your username? If you want the script exclusive to your person there are only a few ways to do it... Firstly I'd like to ask if you have harmony, if so, we can go from your mac address. If not we can go from your last_ip used. Also I would like to add that this will not work if you're using MD5 passwords. If you do not like all of those could also add a secondary password. mes "[ In-Game Control Panel ]"; mes " "; mes "^0000ff*Enter Your Username*^000000"; input .@userid$; mes "^0000ff*Enter Your Password*^000000"; input .@user_pass$; query_sql "SELECT account_id FROM login WHERE userid='"+escape_sql(.@userid$)+"' AND user_pass='"+escape_sql(.@user_pass$)+"' AND last_ip = 'YourIPaddresshere';", .@account_id; if (.@account_id) { next; mes "[ In-Game Control Panel ]"; mes " "; mes "^ff0000*You are now logged-In as "+.@userid$+"*^000000"; next; } else { next; mes "[ In-Game Control Panel ]"; mes "^ff0000ERROR^000000 :"; mes "- Invalid Username/Password."; mes "- Account Does Not Exist."; close; } Where it says YourIPaddresshere add your ip address.
-
Sorry for double post but I just wanted to add a few things that I thought would improve this skill and make it a little more practical. In battle.c Replace damage=stickybombdamage(src, bl, damage); With if(skill_id == NPC_SELFDESTRUCTION && status_get_class(src)==1792) { damage=stickybombdamage(src, bl, damage); } In skill.c Search for any of these lines: case NPC_SELFDESTRUCTION: //Self Destruction hits everyone in range (allies+enemies) //Except for Summoned Marine spheres on non-versus maps, where it's just enemy. Right below you will find: i = ((!md || md->special_state.ai == 2) && !map_flag_vs(src->m))? BCT_ENEMY:BCT_ALL; Replace With: if(md->special_state.ai == 2 && !map_flag_vs(src->m)){ i=BCT_ENEMY; } else if( md->class_==2127 && !map_flag_vs(src->m)){ i=BCT_NOENEMY; } else { i=BCT_ALL; } I'm not the best at source coding but this will disable the characters from attacking other players outside of pvp with this skill. In skill.c Replace: void _STICKYBOMB(struct block_list *src, struct block_list *bl, int skillid, int skilllv) { int _x=0, _y=0, i=0, id=0; struct block_list *mb = NULL; switch(unit_getdir(bl)) { case 0: _x = 0; _y = 1; break; case 1: _x = -1; _y = 1; break; case 2: _x = -1; _y = 0; break; case 3: _x = -1; _y = -1; break; case 4: _x = 0; _y = -1; break; case 5: _x = 1; _y = -1; break; case 6: _x = 1; _y = 0; break; case 7: _x = 1; _y = 1; break; } _x = _x*(skilllv-1); _y = _y*(skilllv-1); clif_skill_nodamage(src,bl,skillid,skilllv,0); id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"StickBomb",2127,1,""); src->sbp++; if(src->sbp==MAX_STICKYBOMB) src->sbp=0; mb=map_id2bl(src->stickbomb[src->sbp]); if(mb!=NULL) unit_skilluse_id(mb, src->stickbomb[src->sbp], 173, 1); src->stickbomb[src->sbp]=id; mb=map_id2bl(src->stickbomb[src->sbp]); mb->sbp=src->id; if(rand()%3) { for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=-1; clif_specialeffect(mb, 47,AREA); }else for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=0; return; } With: void _STICKYBOMB(struct block_list *src, struct block_list *bl, int skill_id, int skill_lv) { char output[128]; int _x=0, _y=0, i=0, id=0; struct block_list *mb = NULL; switch(unit_getdir(bl)) { case 0: _x = 0; _y = 1; break; case 1: _x = -1; _y = 1; break; case 2: _x = -1; _y = 0; break; case 3: _x = -1; _y = -1; break; case 4: _x = 0; _y = -1; break; case 5: _x = 1; _y = -1; break; case 6: _x = 1; _y = 0; break; case 7: _x = 1; _y = 1; break; } _x = _x*(skill_lv-1); _y = _y*(skill_lv-1); clif_skill_nodamage(src,bl,skill_id,skill_lv,0); sprintf(output, "(%s)StickBomb", status_get_name(src)); id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,output,2127,1,"", SZ_SMALL, AI_NONE); src->sbp++; if(src->sbp==MAX_STICKYBOMB) src->sbp=0; mb=map_id2bl(src->stickbomb[src->sbp]); if(mb!=NULL) unit_skilluse_id(mb, src->stickbomb[src->sbp], 173, 1); src->stickbomb[src->sbp]=id; mb=map_id2bl(src->stickbomb[src->sbp]); mb->sbp=src->id; if(rand()%3) { for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=-1; clif_specialeffect(mb, 47,AREA); }else for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=0; return; } This will put the username on the exploding ball so everyone knows who's who! The last thing to add to this skill so it's usable on servers is some kind of attachment to the mob, because right now when you attack with the skill it just thinks the monster is killing other monsters. Master_id might work not really sure. That or adding some kind of condition to the damage function and allowing it to be called. Thanks again for this awesome script!
-
It probably would've helped a little more had you shown me an example with the information I provided but I was able to piece everything together. char output[128]; sprintf(output, "(%s)Monster", status_get_name(src)); mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,output,1001,1,"",SZ_SMALL,AI_NONE);
-
This might sound like a stupid question but I'm new to source so stay with me! I would like to do something like this. mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"("+sd->status.name+")"+"Monster",1001,1,"",SZ_SMALL,AI_NONE); But "("+sd->status.name+")"+"Monster" doesn't work. I've also tried StringBuf_AppendStr(sd->status.name, "Monster"). I'm really not sure how to use it though.
-
Kinda make sure you change a few things. Skill.c id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"StickBomb",2127,1,"", SZ_SMALL, AI_NONE); Also change all skilllv, skillid to skill_lv, skill_id. Map.h Where it says add "int id, sbp;" what he actually means is replace "int id;" with "int id, sbp; //Add" struct block_list { struct block_list *next,*prev; int id, sbp; //Add int16 m,x,y; enum bl_type type; int stickbomb[MAX_STICKYBOMB]; //Add }; In Battle.c He means place "damage=stickybombdamage(src, bl, damage);" one line above the return damage; above: /*========================================== * Calculates BG related damage adjustments. *------------------------------------------*/ In other words. if( element == ELE_FIRE || element == ELE_WATER ) pc_overheat(sd,element == ELE_FIRE ? 1 : -1); } } damage=stickybombdamage(src, bl, damage); //Add return damage; } /*========================================== * Calculates BG related damage adjustments. *------------------------------------------*/ Problem with the part for damage though needs some kind of restriction or nulls all damage. If you're applying the mob into an sqldb use this: INSERT INTO `ragnarok`.`mob_db2` (`ID`, `Sprite`, `kName`, `iName`, `LV`, `HP`, `SP`, `EXP`, `JEXP`, `Range1`, `ATK1`, `ATK2`, `DEF`, `MDEF`, `STR`, `AGI`, `VIT`, `INT`, `DEX`, `LUK`, `Range2`, `Range3`, `Scale`, `Race`, `Element`, `Mode`, `Speed`, `aDelay`, `aMotion`, `dMotion`, `MEXP`, `MVP1id`, `MVP1per`, `MVP2id`, `MVP2per`, `MVP3id`, `MVP3per`, `Drop1id`, `Drop1per`, `Drop2id`, `Drop2per`, `Drop3id`, `Drop3per`, `Drop4id`, `Drop4per`, `Drop5id`, `Drop5per`, `Drop6id`, `Drop6per`, `Drop7id`, `Drop7per`, `Drop8id`, `Drop8per`, `Drop9id`, `Drop9per`, `DropCardid`, `DropCardper`) VALUES ('2127', 'SOCCER_BALL', 'stickbomb', 'stickbomb', '1', '2000', '0', '0', '0', '1', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '3', '86', '256', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); And for renewal db. db/skill_cast_db.txt //stickybomb 999,0,0,1000:1500:2000:2500:3000:3500:4000:4500:5000:5500,0,0,0,-1 //Add For some reason not included but needed. db/skill_db.txt 999,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0, STICKYBOMB,Detention Sphere 998,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0, STICKYBOMBBOMB,Activate Sphere Hope that helps in adding this cool skill by goddameit. .
-
other players cant connect to my server.
Skorm replied to emilsorita's question in Installation Support
First configuration should work. map_athena.conf: char_ip: lan map_ip: wlan subnet_athena.conf: subnet: subnet:wlan:wlan char_athena.conf: login_ip: wlan char_ip: wlan -
other players cant connect to my server.
Skorm replied to emilsorita's question in Installation Support
Because you won't be able to someone else has to connect for you. -
other players cant connect to my server.
Skorm replied to emilsorita's question in Installation Support
Localhost is the client you should be using in your clientinfo.xml... The fact that your players are not reaching the server means something is blocking it... Without proper logs and screenshots depicting your exact problem it's hard to say. Any kind of client errors normally have to do with your lua files. It could be savedata folder in your client... or the System folder in your client but what it means for sure is that you're missing something. Make sure you've got the good stuff. http://subversion.assembla.com/svn/ClientSide/Lua_Project/ You can also try: http://krotranslatedlua.googlecode.com/svn/trunk/ I think Lua_Project is updated more often though. Also try using your clientinfo.xml for your players just change 127.0.0.1 to your wlan because the formatting you've got in your players looks a little wonky and servicetype might have something to do with it. -
other players cant connect to my server.
Skorm replied to emilsorita's question in Installation Support
Honestly your config looks right to me. If you're using the right wlan IP address it's probably a firewall or something... Try closing antivirus, firewall, peer block, anything really. If your server isn't getting the request it's a firewall or configuration problem. What's your subnet_athena.conf say? -
Yeah you're problem is with the lub/lua files... Make sure you to diff your client into reading lub before lua. You might want to try getting some translated luas from: http://krotranslatedlua.googlecode.com/svn/trunk/ http://subversion.assembla.com/svn/ClientSide/Lua_Project/ I strongly recommend using Tk Patcher opposed to RSU. Also make sure all Ragnarok.exe's are closed and you run the program as admin!
-
Actually this could be a number of problems you do seem to be using an old data folder download unless that's intended. Get "TK Patcher" from the download section throw it with your client close any ragnarok.exe's running and run it as an admin. But you're also using an older client which leads me to ask... Do you want ROClassic? Also there could be a packet error. For us to accurately identify your problem we're going to need screenshots or logs from your server when this error happens- THANKS!
-
other players cant connect to my server.
Skorm replied to emilsorita's question in Installation Support
Did you change clientinfo.xml in the data folder to **.***.**.**? -
It's simple and kinda retro, and its not-to-flashy gives you something to look at. Exactly how a patcher should be. I like it [9.6].
-
I agree with this.