Jump to content

AnnieRuru

Members
  • Posts

    2044
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by AnnieRuru

  1. - script BattleBadge#2 -1,{ OnPCKillEvent: if (strcharinfo(3)=="guild_vs3" && killedrid != getcharid(3)) getitem 7828,1; end; } I want to say, this kind of stuff should be discourage on the MMORPG I played, I really do encounter people hiding in a corner of the map killing his/her own alt character to farm battleground points I left it there 1st, but in time you'll take it out too when your players start abuse this system hmm ... mapannounce "guild_vs3", "Score "+ .winningscore +" rounds to win ! ... GET READY", 0; ... I tested in-game and it says "Score 0 rounds to win !" you just copy-paste it from my other battleground script don't you ? ... there is no way Euphy revise my script and still have the 0 over there ... he would have changed it to bc_map anyway ... yup, you did correctly if you want to have ... multiple rounds to finish the battleground ... try this topic t
  2. Rejoice ~~ I just recently stop playing a MMORPG game called - 斗仙2 - a chinese-made MMOPRG game that is heavily PK focused of course team PK / guild PK / party PK / Battleground and so on are the main strong points on this game. Previously I don't understand why members want this feature, as I always told them -> players can always multi-client at the last moment join the winning team to catch the reward only after I play a battleground for real on a real MMORPG, now I can understand why this is important so, there are actually some/several protection to prevent players to rip the reward at the last minute, well ... from my experience playing that game 1. although I can multi-client this game with a sandboxie program so all my 4 in-game characters can party up to finish my daily quest faster, interestingly, I cannot bring 2 characters at the same time to join a same battleground ID in other words, I cannot register 2 characters on Battleground A, but I can multi-client to have character A join Battleground A, and character B join Battleground B 2. lets say this Battleground is a 10vs10, but Blue team only has 4 players joined, and Red team has 7 players ( this happened frequently ... I heard some people using company computers to register, but only his main character join the battleground) the Red team registration is stopped, only the Blue team application is still open at least this is what happened to the game that I just play, cannot have more than 3 players in differences 3. there is a "Vote to kick a player" option in the battleground window I can right-click on a noob player that keep feeding the enemy team -> means always give points to the enemy / probably a spy from the enemy team and if 1/2 of our total team members select "Yes" to kick, that player is immediately out from the team ... and ... 4. there is a 5 minute delay from rejoining the same battleground ID which usually means, if I am somehow gets kick out (happens to me when I having bad internet connection speed), I usually just register a new Battleground rather than rejoin an existing one, since people always fill up the existing battleground 1st to rip the reward conclusion, this is not as simple as you might think I can probably do this, but the modification on this script will be very heavy especially for case no.1 ... do rathena support MAC address in the 1st place ?
  3. I saw your post in another topic says ok, so I just provide a topic link and let you figure out yourself 1st
  4. ah ... found a bug I forgotten the loadevent can be use from another script if you install another script with loadevent mapflag will cause this script to warp out other players indiscriminately 1 more time http://upaste.me/06e6495427daded7f EDIT: Jesus ... I made mistake too many times, really lost touch with scripting yeah ... atm, not a godlike scripter yet XD btw, did you guys mentioned wrong person ?? I am @AnnieRuru not @Annie Ruru
  5. hmm ... nvm ... let me try this myself then of course I tested on my test server b4 posting EDIT: stupid forum IPB3 .... IPB1 is far superior than IPB3 http://upaste.me/06e6495427daded7f
  6. @emistry .@map$ = strcharinfo(3); for (.@i = 0; .@i < .map_size; .@i++) { if (.@map$ == .map$[.@i]) { if (getcharid(2) != .guild_id[.@i] && .guild_id[.@i] > 0) warp "SavePoint",0,0; end; } } just 1 glance and I can tell this is wrong since you are comparing 2 different kinds of information -> .@map$ == .map$[.@i] and getcharid(2) == .guild_id[.@i] shouldn't the 2nd one fall into another loop with .@j index? for(.@j = 0; .@j < guild_id_size; .@j++) <<--- something like this ?
  7. 5 years ago, @Olrox claimed he was bored, and ask someone to make this script ..... yes, he started it ! 3 years ago, @Olrox said he wants to remake the map then suddenly 2 years ago, @Olrox say he don't want to do it anymore ! Good job ! ok enough this bullshit You need 2 things for this battleground script to run Download: 1. the map ! https://rathena.org/board/topic/104326-arathi-map/ 2. and the script ! wow_domi_1.4r.txt yes, this is a free release as @Olrox said thanks to @Olrox for giving nice idea anyways XD PS: why this wow_domi_1.2r.txt keep appear below even though I tried to remove it several times wow_domi_1.2r.txt
  8. db/skill_require.db.txt 152,0,0,2,0,0,0,99,0,0,none,0,0,7049,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE...7049,1... change to 0,0
  9. you didn't do anything wrong ... why ? because Emistry script isn't working ... try this, full complete script function script timeleft__ { if ( ( .@left = getarg(0) ) <= 0 ) return getarg(0); .@day = .@left / 86400; .@hour = .@left % 86400 / 3600; .@min = .@left % 3600 / 60; .@sec = .@left % 60; if ( .@day ) return .@day +" day "+ .@hour +" hour"; else if ( .@hour ) return .@hour +" hour "+ .@min +" min"; else if ( .@min ) return .@min +" min "+ .@sec +" sec"; else return .@sec +" sec"; } - shop vipshop#7 -1,501:100 - shop vipshop#30 -1,501:100 - script vipnpc FAKE_NPC,{ OnInit: bindatcmd "vipshop", strnpcinfo(0)+"::Onvipshop"; end; Onvipshop: if ( #vipshop == 1 ) callshop "vipshop#7", 1; else if ( #vipshop == 2 ) callshop "vipshop#30", 1; else { mes "which vip status do you want to buy ?"; mes "vip 7 days = 10 Cash points"; mes "vip 30 days = 20 Cash points"; next; if ( select ( "Vip 7 Days", "Vip 30 Days" ) == 1 ) { if ( #CASHPOINTS < 10 ) { mes "you don't have enough Cash points"; close; } mes "Thanks for purchasing !"; #vipshop = 1; #CASHPOINTS -= 10; addtimer 7*24*60*60*1000, strnpcinfo(0)+"::OnTimeUp"; #viptimeleft = 7*24*60*60 + gettimetick(2); close; } else { if ( #CASHPOINTS < 20 ) { mes "you don't have enough Cash points"; close; } mes "Thanks for purchasing !"; #vipshop = 2; #CASHPOINTS -= 20; // addtimer 30*24*60*60*1000, strnpcinfo(0)+"::OnTimeUp"; // over integer limit #viptimeleft = 30*24*60*60 + gettimetick(2); close; } } dispbottom "You currently have "+ #CASHPOINTS +" Cash points .Expire in "+ callfunc( "timeleft__", #viptimeleft - gettimetick(2) )+"."; end; OnPCLoginEvent: if ( #viptimeleft < gettimetick(2) ) addtimer 1, strnpcinfo(0)+"::OnTimeUp"; // sometimes doevent doesn't work else if ( #viptimeleft - gettimetick(2) < 2147483 ) // don't execute addtimer if over integer limit addtimer ( #viptimeleft - gettimetick(2) )*1000, strnpcinfo(0)+"::OnTimeUp"; end; OnTimeUp: #viptimeleft = #vipshop = 0; end; } - script vipnpc#7 FAKE_NPC,{ OnInit: function addshopitem { npcshopdelitem "vipshop#7", 501; .@count = getargcount(); for ( .@i = 0; .@i < .@count; .@i++ ) { if ( .@i % 2 == 0 ) .itemid[ .@i /2 ] = getarg( .@i ); else { .itemcost[ .@i /2 ] = getarg( .@i ); npcshopadditem "vipshop#7", .itemid[ .@i /2 ], .itemcost[ .@i /2 ]; } } } addshopitem // adds shop items here for vip#7 501,10, 502,20, 503,30, 504,40, 505,50; npcshopattach "vipshop#7"; .@itemsize = getarraysize( .itemid ); for ( .@i = 0; .@i < .@itemsize; .@i++ ) .itemcost[ .itemid[.@i] ] = .itemcost[.@i]; end; OnBuyItem: if ( !@bought_quantity ) end; .@size = getarraysize( @bought_nameid ); for ( .@i = 0; .@i < .@size; .@i++ ) .@itemcost += .itemcost[ @bought_nameid[.@i] ] * @bought_quantity[.@i]; if ( .@itemcost > #CASHPOINTS ) { mes "you don't have enough Cash points"; close; } if ( !checkweight2( @bought_nameid, @bought_quantity ) ) { mes "you can't carry all these items !"; close; } #CASHPOINTS -= .@itemcost; for ( .@i = 0; .@i < .@size; .@i++ ) getitem @bought_nameid[.@i], @bought_quantity[.@i]; end; } - script vipnpc#30 FAKE_NPC,{ OnInit: function addshopitem { npcshopdelitem "vipshop#30", 501; .@count = getargcount(); for ( .@i = 0; .@i < .@count; .@i++ ) { if ( .@i % 2 == 0 ) .itemid[ .@i /2 ] = getarg( .@i ); else { .itemcost[ .@i /2 ] = getarg( .@i ); npcshopadditem "vipshop#30", .itemid[ .@i /2 ], .itemcost[ .@i /2 ]; } } } addshopitem // adds shop items here for vip#30 501,5, 502,10, 503,15, 504,20, 505,25; npcshopattach "vipshop#30"; .@itemsize = getarraysize( .itemid ); for ( .@i = 0; .@i < .@itemsize; .@i++ ) .itemcost[ .itemid[.@i] ] = .itemcost[.@i]; end; OnBuyItem: if ( !@bought_quantity ) end; .@size = getarraysize( @bought_nameid ); for ( .@i = 0; .@i < .@size; .@i++ ) .@itemcost += .itemcost[ @bought_nameid[.@i] ] * @bought_quantity[.@i]; if ( .@itemcost > #CASHPOINTS ) { mes "you don't have enough Cash points"; close; } if ( !checkweight2( @bought_nameid, @bought_quantity ) ) { mes "you can't carry all these items !"; close; } #CASHPOINTS -= .@itemcost; for ( .@i = 0; .@i < .@size; .@i++ ) getitem @bought_nameid[.@i], @bought_quantity[.@i]; end; }
  10. monster .Map$,0,0,"[ Farm Zone ] Resident",rand( 2400,2405 ),80,strnpcinfo(0)+"::OnNormalKill"; monster .Map$,0,0,"[ Farm Zone ] Guardian",rand( 2400,2405 ),5,strnpcinfo(0)+"::OnBossKill";nope, also the same, it will show up the same mobhas to use arrays in the case, and ... @emistry your script needs to be cleaner What the hell is this ??? set .Hunter[getarraysize( .Hunter )],strcharinfo(0);.. try this prontera,155,185,5 script Farm Zone 1_F_MARIA,{ while ( true ) { mes "How can i help you ?"; switch( select( "Information:Farm Items" )) { case 1: mes "This is a Farm Zone."; mes "You are able to Hunt Monster inside this Room."; mes "Every Monster will award you random items."; next; mes "But there is some Condition.."; mes "You can only go in ^FF0000once every "+.RoomCleanMin+" minutes for 1 times.^000000"; mes "And Maximum of ^FF0000"+.MaxPlayers+" Players per "+.RoomCleanMin+" Minutes.^000000"; mes "Maximum Hunting Limit ^FF0000"+.MaxItemLimit+"^000000"; next; mes "There will be a ^FF0000Room Cleaning^000000 from time to time..."; mes "All players will be kicked out, it is your bad luck if you meet this."; mes "Delay will still apply even though you just go in for 1 Seconds.."; next; break; case 2: // #HuntRoomDelay = 0; if ( #HuntRoomDelay + .DelayMin * 60 > gettimetick(2) ) { mes "Wait for ^FF0000"+( ( ( #HuntRoomDelay + .DelayMin * 60 ) - gettimetick(2) )/60 )+" Minutes^000000."; close; } else if ( getarraysize( .Hunter ) >= .MaxPlayers ) { mes "Currently the Room is Full. Please try again later."; close; } else { warp .Map$,0,0; set .Hunter[getarraysize( .Hunter )], getcharid(3); set #HuntRoomDelay, gettimetick(2); // please don't set the deny variable into the future, if admin adjust the setting to decrease the value, player will experience long deny set #FarmHunt,0; end; } } } close; OnNormalKill: monster .Map$,0,0,"--ja--",.normal_mob[rand(.normal_mob_size)],1,strnpcinfo(0)+"::OnNormalKill"; getitem .farm_normal[rand(.farm_normal_size)], 1; goto L_kill; OnBossKill: monster .Map$,0,0,"--ja--",.boss_mob[rand(.boss_mob_size)],1,strnpcinfo(0)+"::OnBossKill"; getitem .farm_boss[rand(.farm_boss_size)], 1; L_kill: #FarmHunt++; dispbottom "[ Farm Zone ] : Farmed "+ #FarmHunt +" / "+.MaxItemLimit+" Items"; if ( #FarmHunt >= .MaxItemLimit ) { message strcharinfo(0),"Limit Reach , you may join again later."; sleep2 2000; warp "prontera",155,181; } end; OnInit: // Maximum Player can join per X Minutes. set .MaxPlayers,5; // Adding X Minutes of Delay before can go in again. set .DelayMin,15; // Maximum Hunt Limit per round inside the Zone. set .MaxItemLimit,1000; // Map that will be used in thos Zone. set .Map$,"moc_fild19"; // Clear Map Every X Minutes. set .RoomCleanMin,15; // Mapflag Initialization setmapflag .Map$, mf_nomobloot; setmapflag .Map$, mf_nomvploot; setmapflag .Map$, mf_nowarpto; setmapflag .Map$, mf_nochat; setmapflag .Map$, mf_novending; setmapflag .Map$, mf_nocommand,60; setmapflag .Map$, mf_nojobexp; setmapflag .Map$, mf_nobaseexp; setarray .farm_normal, 501,502,503,504,505; // farm 1 of these items when kill normal mobs setarray .farm_boss, 506,507,508,509,510; // farm 1 of these items when kill boss monsters setarray .normal_mob, 2401,2402,2403,2404; setarray .boss_mob, 1388, 1096, 1120; .farm_normal_size = getarraysize(.farm_normal); .farm_boss_size = getarraysize(.farm_boss); .boss_mob_size = getarraysize(.boss_mob); .normal_mob_size = getarraysize(.normal_mob); while ( true ) { killmonster .Map$, "All"; cleanmap .Map$; // you also forgot about this command mapwarp .Map$,"prontera",155,181; for ( .@i = 0; .@i < 80; .@i++ ) monster .Map$,0,0, "[ Farm Zone ] Resident", .normal_mob[ rand( .normal_mob_size ) ], 1, strnpcinfo(0)+"::OnNormalKill"; for ( .@i = 0; .@i < 5; .@i++ ) monster .Map$,0,0, "[ Farm Zone ] Guardian", .boss_mob[ rand( .boss_mob_size ) ], 1, strnpcinfo(0)+"::OnBossKill"; deletearray .Hunter; announce "[ Farm Zone ] : Farming Zone has been Cleaned up, another 5 Players may go in now.", bc_blue; sleep ( .RoomCleanMin * 60000 ); mapannounce .Map$,"[ Farm Zone ] : Room Clean Up now...All Users will be warped Out.", bc_map; killmonster .Map$, "All"; sleep 3000; } end; }
  11. yes, you can do some sort of trick, though, running query_sql repeatedly might eats your server resources I don't really recommend though - script kdhfksfjs FAKE_NPC,{ OnInit: query_sql "create table if not exists disconnect_char( account_id int(11) primary key, char_id int(11), name varchar(23) ) engine = innodb;"; while ( true ) { .@nb = query_sql( "select * from disconnect_char", .@aid, .@cid, .@name$ ); for ( .@i = 0; .@i < .@nb; .@i++ ) { if ( .@aid[.@i] ) { if ( isloggedin( .@aid[.@i] ) ) { atcommand "@kick "+ rid2name( .@aid[.@i] ); debugmes "the player AID "+ .@aid[.@i] +" has been kick."; } else debugmes "the player AID "+ .@aid[.@i] +" is not online"; query_sql "delete from disconnect_char where account_id = "+ .@aid[.@i]; } else if ( .@cid[.@i] ) { if ( query_sql( "select account_id from `char` where char_id = "+ .@cid[.@i], .@taid ) ) { if ( isloggedin( .@taid ) ) { atcommand "@kick "+ rid2name( .@taid ); debugmes "the player CID "+ .@cid[.@i] +" has been kick."; } else debugmes "the player CID "+ .@cid[.@i] +" is not online"; } else debugmes "the player CID "+ .@cid[.@i] +" doesn't exist"; query_sql "delete from disconnect_char where char_id = "+ .@cid[.@i]; } else if ( .@name$[.@i] ) { if ( query_sql( "select account_id from `char` where name = '"+ escape_sql(.@name$[.@i]) +"'", .@taid ) ) { if ( isloggedin( .@taid ) ) { atcommand "@kick "+ rid2name( .@taid ); debugmes "the player name "+ .@name$[.@i] +" has been kick."; } else debugmes "the player name "+ .@name$[.@i] +" is not online"; } else debugmes "the player name "+ .@name$[.@i] +" doesn't exist"; query_sql "delete from disconnect_char where name = '"+ escape_sql(.@name$[.@i]) +"'"; } } sleep 5000; } }.. its inside `vendings` tableand the buffs is `sc_data`
  12. ok both of you please stop ... if I actually see this in hercules, I'll invisible the post, and send a group PM to both of you to settle this issue privately ... both of you are respectable scripters in rathena, along with Capuche, Euphy , Brian ... and some others despite the difference in emulator we are using, there is no need to create whatever drama that can raise the tension between all of us anyway .. I just found this in the source code ... its a TODO https://github.com/rathena/rathena/blob/master/src/map/npc.c#L780 try report this issue to get this fix EDIT: and this is gettimetick(0) method, which will go negative on 24th day and may create bug prontera,158,185,5 script kjhfksdjf 100,{ if ( @timeon ) { dispbottom "time used -> "+( gettimetick(0) - @start ) +" mili-seconds"; @start = 0; // clear the var } else @start = gettimetick(0); @timeon ^= 1; end; }
  13. ok, abusing SQL query https://rathena.org/board/topic/73478-requesting-card-seller-script/?p=154617 prontera,155,185,5 script Card collector 1_F_MARIA,{ mes "["+ strnpcinfo(0) +"]"; if ( !.start ) { mes "I'm not looking for any card right now."; close; } mes "Hi, I'm looking for "+ getitemname(.look4card) +", do you have it ?"; next; .@count = countitem(.look4card); if ( !.@count ) { mes "["+ strnpcinfo(0) +"]"; mes "Unfortunately you don't have the card I'm looking for"; close; } input .@give, 0, .@count; mes "["+ strnpcinfo(0) +"]"; if ( !.@give ) { mes "You are not giving me ? ... sob.."; close; } mes "Thank You !!"; delitem .look4card, .@give; collector_points += ( 5 + .checkmvp * 5 )* .@give; close; OnMinute00: if ( gettime(3) % 1 ) end; OnStart: .look4card = .allcardid[ rand( .allcards ) ]; announce "["+ strnpcinfo(0) +"] I'm looking for "+ getitemname( .look4card ) +" !!!", bc_all; while ( .mvpcardid[.@i] != .look4card && .@i < .mvpcards ) .@i++; .checkmvp = ( .@i < .mvpcards )? 1 : 0; .start = true; sleep 30000; // last 30 seconds .start = false; announce "["+ strnpcinfo(0) +"] Thank you everyone for the participation.", bc_all; end; OnInit: .@mobdb$ = checkre(0)? "mob_db_re" : "mob_db"; .@itemdb$ = checkre(0)? "item_db_re" : "item_db"; .allcards = query_sql("select "+ .@itemdb$ +".id from "+ .@itemdb$ +" right join "+ .@mobdb$ +" on "+ .@itemdb$ +".id = "+ .@mobdb$ +".dropcardid where type = 6 group by name_japanese", .allcardid); .mvpcards = query_sql("select "+ .@itemdb$ +".id from "+ .@itemdb$ +" right join "+ .@mobdb$ +" on "+ .@itemdb$ +".id = "+ .@mobdb$ +".dropcardid where mexp > 0 and type = 6 group by name_japanese;", .mvpcardid); // bindatcmd "test", strnpcinfo(0)+"::OnStart", 99, 100; // bindatcmd "value", strnpcinfo(0)+"::OnValue", 99, 100; end; OnValue: dispbottom "Your currently collector points is "+ collector_points; if ( .start ) dispbottom "looking for ID "+ .look4card; end; } ... have to use codebox because this rathena script doesn't compatible with hercules ...ok I stop play here for today, might come back here some other day again EDIT: yeah Emistry ... OnMinute00: if ( gettime(3) % 2 ) OnInit: .card_id = rand( 4001,4500 );you know that, you missing the curly bracket right ?this means ... it will trigger every hour, always read the line below this but the rand only execute when Hour is 1,3,5,7,9,11 on other hour time, it doesn't random change the card ID EDIT: when I was about to publish in hercules forum, I found I mess up @count and @give, fixed
  14. if you are writing something like algorithm script, you can just use gettimetick(0) .@start = gettimetick(0); callfunc "F_SomeAlgorithm"; dispbottom "time used -> "+( gettimetick(0) - .@start ) +" mili-seconds"; you can find various algorithm like sorting algorithm in this topic http://herc.ws/board/topic/4321-help-me-improve-this-merge-sort-algorithm/ or shuffle algorithm in this topic https://github.com/HerculesWS/Hercules/pull/872 but if you are just to check how much time it click on the npc, gettimetick(0) cannot be use here because it will go negative at 24th day has to use npctimer *check and see properly did I use rathena test server ? OK* I think there is a bug, yes, both hercules and rathena, I tested both prontera,158,185,5 script dfgdgdfg 1_F_MARIA,{ attachnpctimer; // comment this line, it shows the timer initnpctimer; sleep2 1000; stopnpctimer; dispbottom getnpctimer(0); end; } if the attachnpctimer is leave on, the timer always show 0, but when I remove it, which makes it attach to npc, the timer will start showing ... for the time being, stick to gettimetick(0) ...
  15. don't know why, but I feel the urge to answer this particular topic ... hmph ... some of them actually rip off my source code actually... 1st thing that you need to know is, this rathena unit controller script command is based on mob controller script commands which you can find them here case UMOB_MASTERAID: md->master_id = value; break; the master GID of the monster the original mob controller system has *mobattach script command, which is missing in rathena means, yes, if you attach a monster to a player, you can use this constant to check this particular monster belongs to which player for example, in that script I link the to, pet vs pet system if AI_ACTION_TYPE_ATTACK is triggered, that mob controller system doesn't have a RID attached so have to check the target it was killed with AI_ACTION_TAR, which push the GID of the unit it killed then we can use UMOB_MASTERAID of the AI_ACTION_TAR to know the winner of the duel if you don't understand, don't worry, I haven't code mobevent script command yet once I did it, rathena will going to have it anyway, so you can play with it later so, this is currently useless until I make the mobevent script command case UMOB_AI: md->special_state.ai = (enum mob_ai)value; break; the special_state ai is defined, in rathena, here https://github.com/rathena/rathena/blob/master/src/map/map.h#L385 ... seriously this should go inside mob.h ... from the PM you talk to me earlier, you should be able to read the source code to understand how to search these AI_ constants ... case UMOB_SCOPTION: md->sc.option = (unsigned short)value; break; similar to player's setoption https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L3451 in theory, if you setoption it with OPTION_HIDE, the monster will hide permanently until it dead (unsigned short) .. ? LOL this is funny XD case UMOB_SLAVECPYMSTRMD: md->state.copy_master_mode = value > 0 ? 1 : 0; if (value > 0) { TBL_MOB *md2 = map_id2md(md->master_id); md->status.mode = md2->status.mode; } break; this is currently useless, mobattach script command can attach to the player, and can also attach to another mob yes, attach to another mob, then copy the master's mode, which is master's UMOB_MODE without mobattach script command, this is useless case UMOB_DMGIMMUNE: md->ud.immune_attack = (bool)value > 0 ? 1 : 0; break; immune attack should be self explain you can find the responsible line here https://github.com/rathena/rathena/blob/master/src/map/battle.c#L7413 if the battle_check_target function return 0; you know what it means right ?
  16. LOL ... ok I release my patch http://upaste.me/f8a021974df57fd43<--- sad ... nobody buying, but meh hercules use status.rhw.atk for physical and status.rhw.atk2 for magical https://github.com/HerculesWS/Hercules/blob/master/src/config/const.h#L60 and minimum and maximum damage is retrieve by function but rathena is something else, md->status.rhw.atk is minimum attack md->status.rhw.atk2 is maximum attack md->status.matk_min is minimum magical attack md->status.matk_max is maximum magical attack good job for copy paste my stuff XD
  17. I'm using 20140115 and I don't see anywhere the client having this feature though
  18. use your imagination when apply the effects prontera,155,174,5 script sdhfdjskf 100,{ mes "select left, center or right"; next; .@s = select( "left", "center", "right" ); mes "now firing"; close2; specialeffect EF_BEGINSPELL3; sleep 1000; donpcevent "#meteorstorm"+ .@s +"::OnEffect"; end; } - script meteorstorm -1,{ end; OnEffect: specialeffect EF_METEORSTORM; sleep 1000; getmapxy .@map$, .@x, .@y, 1; addrid 4, .@map$, .@x-2, .@y-2, .@x+2, .@y+2; announce strcharinfo(0) +" has been hit by the catapult", bc_map; // add this for adding shame percentheal -100, 0; end; } prontera,148,167,5 duplicate(meteorstorm) #meteorstorm1 100,{} prontera,156,167,5 duplicate(meteorstorm) #meteorstorm2 100,{} prontera,163,167,5 duplicate(meteorstorm) #meteorstorm3 100,{}with your post count and the difficulty of this question is,I assumed the countitem and getcastledata check is not a problem for you EDIT: added shame announcement
  19. so sick of hearing this same request again and again http://hercules.ws/board/topic/7209-map-change/?p=43843
  20. http://rathena.org/board/topic/97602-annierurus-bg-emp-edit-request/#entry267419 I don't see what's so hard about it just download the patch [paste=7207eo0p96gx] then put rand__ function somewhere then install the script
  21. [paste=1w0niwopbpdt] not that hard to write man ... its been months since I last use a rathena test server to write a script, all the while using hercules and just debugging this script alone with the extensive use of @reloadscript, my clean rathena test server can crashed 3 times I don't recall my hercules test server can crash so many times in 1 single day
  22. block movement pcblockmove getcharid(3), 1;. . there is no block skill command, but the nearest I would go with setoption, option_xmas, which also blocked attack
  23. its possible to do this but based on my past experience, when a team is certainly going to lose all the player in the losing team will logout and then join the winning team, taking the most benefit of the reward if you played counter-strike you should know this players just want to enjoy winning the game and don't want to be in the losing team
  24. so you mean you just want a ladder script that shows top 5 killer for killing other players in bat_b01 map ? I thought this system allows everyone to join ? when a round is over, those 2 register npc will show up, click on the chat room to join minimum player to start .minplayer2start = 1; // minimum player to startchange to 5, will becomes 5vs5
  25. http://en.wikipedia.org/wiki/Blackjack split ... possible, but need to add another callsub stuffs and I saw allow splitting multiple times ? omg rather only stick to once only .... just feel lazy to do ... insurance ... very easy to add in this script but pointless insurance only advantage to those doing card counting, but this script simply randomized a number heck, it can even random 5 times of the same cards, when there are only 4 of them possible with different color suits EDIT: oh wait ... http://entertainment.howstuffworks.com/how-to-play-blackjack.htm
×
×
  • Create New...