Jump to content

AnnieRuru

Members
  • Posts

    2044
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by AnnieRuru

  1. get out of here if you are not using rathena <.< anyways, those are C language operators change .@area = getbattleflag("area_size"); into set .@area, getbattleflag("area_size"); though, you should ask the question in your respected forum for the emulator you used, I'm not going to adjust my script to compatible with other emulator after all this is rathena forum EDIT for below WAHAHAHAHA !!! me your post too <3
  2. http://www.eathena.ws/board/index.php?showtopic=168545 I couldn't update that topic anymore because that forum is now locked but still, some of them are still useful like your question ... item_db only up to 32767 just until yesterday only I know we can use negative item id if use this OnPCStatCalc modification so we can actually expand them into negative item ID the limit should be -32768 -> 32767 if that is a medint signed EDIT: PS: I think this topic should belongs to database support
  3. level 2 event script question ... truly, still many people couldn't make event script that's party or guild based ... prontera,157,178,5 script Sample 757,{ if ( getcharid(1) == 0 ) { callsub L_soullink; end; } getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; getmapxy .@map1$, .@x1, .@y1, 0; .@area = getbattleflag("area_size"); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; getmapxy .@map2$, .@x2, .@y2, 0; if ( .@map1$ == .@map2$ && distance( .@x1, .@y1, .@x2, .@y2 ) <= .@area && hp > 0 ) { callsub L_soullink; } } } end; L_soullink: switch ( basejob ) { case Job_Alchemist: set .@spirit, 445; break; case Job_Monk: set .@spirit, 447; break; case Job_Star_Gladiator: set .@spirit, 448; break; case Job_Sage: set .@spirit, 449; break; case Job_Crusader: set .@spirit, 450; break; case Job_SuperNovice: set .@spirit, 451; break; case Job_Knight: set .@spirit, 452; break; case Job_Wizard: set .@spirit, 453; break; case Job_Priest: set .@spirit, 454; break; case Job_Bard: case Job_Dancer: set .@spirit, 455; break; case Job_Rogue: set .@spirit, 456; break; case Job_Assassin: set .@spirit, 457; break; case Job_Blacksmith: set .@spirit, 458; break; case Job_Hunter: set .@spirit, 460; break; case Job_Soul_Linker: set .@spirit, 461; break; default: if ( upper == 1 && baselevel < 70 ) set .@spirit, 494; } if ( .@spirit ) { sc_start4 sc_spirit, 300000, 5, .@spirit,0,0; skilleffect .@spirit, 5; } return; } I hope you know how to convert npc script into item database script
  4. hmm ... the npc in prontera, and ask to warp into prontera map to pvp ... ? sounds weird prontera,157,178,5 script Sample 757,{ mes "select a pvp room"; next; for ( .@i = 0; .@i < .size; .@i++ ) .@menu$ = .@menu$ +"Room "+( .@i +1 )+". ["+ getmapusers(.pvpmap$[.@i]) +"/50]:"; .@menu$ = .@menu$ + "Cancel"; .@room = select( .@menu$ ) -1; if ( .@room == .size ) { mes "ok, come back anytime"; close; } if ( getmapusers( .pvpmap$[ .@room ] ) >= 50 ) { mes "this room is full"; close; } warp .pvpmap$[ .@room ], 0,0; end; OnInit: setarray .pvpmap$, "pvp_y_1-1", "pvp_y_1-2", "pvp_y_1-3"; // add more maps here .size = getarraysize( .pvpmap$ ); for ( .@i = 0; .@i < .size; .@i++ ) setmapflag .pvpmap$[.@i], mf_pvp; end; }
  5. yeah, I have been scripting in this eathena ... rathena crappy script engine for years I just up <3 gogogo ~
  6. this is more efficient xD prontera,157,178,5 script Sample 757,{ if ( getgmlevel() < 80 ) end; mes "Input Player Name"; if ( input( .@Input$, 4, 23 ) ) { mes "invalid name length"; close; } if ( .@nb = query_sql( "select name, online from `char` where account_id = ( select account_id from `char` where name = '"+ escape_sql(.@input$) +"' ) order by char_num", .@name$, .@online ) ) for ( .@i = 0; .@i < .@nb; .@i++ ) mes " > "+ .@name$[.@i] +" "+( ( .@online[.@i] )? "^00FF00[Online]" : "^FF0000[Offline]" )+"^000000"; else mes "No character found"; close; } I don't like using JOIN command if it can be avoided
  7. actually with my current ways, the map name has to be Room_01 ~ Room_010 because I put a '0' in the map name XD has to do some zerofill check // script check for empty room for ( .@i = 1; .@i <= 10; .@i++ ) if ( getmapusers( "Room_"+( ( .@i < 10 )? "0":"" )+ .@i ) == 0 ) .password$[.@i] = ""; wahahha dastgirpojee post faster than me
  8. I thought I used 8 rooms ? for ( .@i = 1; .@i <= 8; .@i++ ) if ( getmapusers( "06guild_0"+ .@i ) == 0 ) .password$[.@i] = ""; loop through these 8 maps, 06guild_01 ~ 06guild_08, if there's nobody in these room, that room password is reset btw, do you know how to use array ? .@room = select( .@menu$ ); if ( .password$[ .@room ] == "" ) { I used dynamic menu
  9. http://www.eathena.ws/board/index.php?showtopic=242255 http://www.eathena.ws/board/index.php?showtopic=242427
  10. I made this private mvp room script, which using almost the same system as your script weird, I remembered I made a snippet script before inside eathena script support section ... but right now I couldn't find back that topic ( wahahahah I got 6.6k post count there, I also can't find my own post myself xD ) anyway I just write this again from scratch prontera,155,187,5 script sdfjhsdfkj 100,{ // script check for empty room for ( .@i = 1; .@i <= 8; .@i++ ) if ( getmapusers( "06guild_0"+ .@i ) == 0 ) .password$[.@i] = ""; mes "select a room"; mes " "; for ( .@i = 1; .@i <= 8; .@i++ ) if ( .password$[.@i] != "" ) mes "^000000Room no."+ .@i +" = ^0000FF"+ .creater_name$[.@i]; next; for ( .@i = 1; .@i <= 8; .@i++ ) if ( .password$[.@i] == "" ) .@menu$ = .@menu$ +"^000000Room no."+ .@i +" = ^FF0000<Free>:"; else .@menu$ = .@menu$ +"^000000Room no."+ .@i +" = ^0000FF"+ .creater_name$[.@i] +":"; .@room = select( .@menu$ ); if ( .password$[ .@room ] == "" ) { if ( zeny < 50000 ) { mes "you need 50,000 zeny to rent a room"; close; } mes "this room is available"; mes "please input a password"; mes "string length : min 4, max 30"; next; if ( input( .@pass$, 4, 30 ) ) { mes "invalid string length"; close; } if ( .@pass$ == " " ) close; mes "password set to this ?"; mes "^FF0000"+ .@pass$; next; if ( select ( "Yes", "No" ) == 2 ) close; // double check is there anyone rent faster than you if ( .password$[ .@room ] != "" ) { mes "I'm sorry but somebody rent this room faster than you"; close; } // again double check the zeny requirement because of Ragnarok stupid mail system (send mail using friend list) <.< always make a habit to counter check item and zeny requirement if ( zeny < 50000 ) { mes "don't cheat me"; close; } zeny -= 50000; // OOOOPPSS !! .password$[ .@room ] = .@pass$; .creater_name$[ .@room ] = strcharinfo(0); warp "06guild_0"+ .@room, 49, 49; end; } mes "input the password"; // always have some recovery system for GMs to recover password if ( getgmlevel() == 99 ) { mes " "; mes "^FF0000 Admin ONLY"; mes "^0000FF"+ .password$[ .@room ]; } next; input .@pass$; if ( .@pass$ != .password$[ .@room ] ) { mes "wrong password input"; close; } warp "06guild_0"+ .@room, 49, 49; end; } 06guild_01 mapflag nowarpto 06guild_02 mapflag nowarpto 06guild_03 mapflag nowarpto 06guild_04 mapflag nowarpto 06guild_05 mapflag nowarpto 06guild_06 mapflag nowarpto 06guild_07 mapflag nowarpto 06guild_08 mapflag nowarpto
  11. http://rathena.org/board/topic/72372-bg-type-emperium-breaking/#entry149895 there is a reason why I didn't reply in that topic because I ran into some problem I also started to get several PMs requested to make adjustment to my script and here it is actually, I can write them out if this is done individually means, I made minor edit for this member, and make another adjustment for that member, and another modification for another member but this is really not my style you see, like my other public release script like private mvp room which has a setting section, which almost every server is satisfy using this script -> 1 script = all server happy, no matter you are high rate or low rate server the same goes to my mission board script -> 1 script = all admin happily setup themself, no matter you are high rate or low rate server and my goal is to create a script something like this because this will be a public release script, not some paid service script !! there's a big difference when writing a script for public release or paid service script when making a paid service script ( although I never do paid service ) the user just have to script the feature according to the request, no other feature is needed unless asked however, when releasing a public release script, I have to take into consideration that my script has to be satisfy for all users on the board and it does significantly challenge my scripting skill a little more to make a setting satisfy for all back to the question by gathering up all the PMs regarding this battleground script request these 3 features are most commonly ask before few hours ago, I can't seem to find a way how to script it to satisfy everyone with some kind of setting and this has been bugging me for a few days how to write it out although this is not my first written battleground script ( I've done several before, like this ) but this is truly the one that is getting a lot attention and start to spam my PM box about it just few hours ago when that reply comes up my own mission board script has given me some inspiration how to do this ... finally ... I never thought about using some kind of algorithm in event script before because from my experience, event script is event script, algorithm script is algorithm script, both are separated as I've done at least 20 pvp/gvg scripts before, it never involved any algorithm ( unless list out top players ) and right now I have the idea how to write this out using the same algorithm that I used in mission board into this script haiz ... I feel like I'm spouting nonsense, that doesn't relate anything to topic tomorrow I'll make a proper reply
  12. OnPCKillEvent: if ( strcharinfo(3) == "prtg_cas01" || getmapflag( strcharinfo(3) , mf_pvp ) ) set Points,Points + 2; ok enough joking around http://www.eathena.ws/board/index.php?s=&showtopic=240083&view=findpost&p=1311903 set ladderpoint, ladderpoint +1 ; change this into +2
  13. http://www.eathena.ws/board/index.php?s=&showtopic=269705&view=findpost&p=1479382
  14. if you are not going to do it, then I will =/ monster_hunting_euphy2.txt because the server that I'm hired in is a SHR server, so I just post it here and also use it in my server @Rebel see this line set .baseexprate, getbattleflag("base_exp_rate"); // adjustment for base exp rate. For SHR server, set this to a lower number. 100 means x1 with default setting like this, it is adjusted to server rate ( which do the same like original script behavior ) but if set this to 1000, this will get 10x exp, overwriting the exp.conf setting
  15. so I guess both wrong its the strmobinfo does adjust the rate of exp given from conf\exp.conf hmm ... if this is the case, I think a proper fix should be reverse back the formula that's automatically given by strmobinfo example like, this script reverse the formula back into original exp given dispbottom getmonsterinfo( 1002, 3 ) / ( getbattleflag("base_exp_rate") / 100 ); and at the config, admin can set this script gives the exp adjustment that DOES NOT base on exp.conf... EDIT: getmonsterinfo( 1002, 3 ) / ( getbattleflag("base_exp_rate") / 100 ) * .exp_rate something like this I guess EDIT2: oh btw, don't use getexp script command that command is only use in official rathena script (yeah you as a developer should always use this command for official scripts) however in this scripting section where we do freelance scripting we usually do set baseexp, baseexp + xxx ... because getexp command can be adjusted from conf ... which is not intended for custom scripts but its your choice btw EDIT3: nope, if admin set "quest_exp_rate" to 200, although your script shows 2,000 but exp reward becomes 4000 because you used getexp command
  16. I can't reproduce your error using the script above though ... maybe you've applied some patch to allow players to use skill under berserk ? looks like I guessed wrong EDIT: WTF !!! that getstatus command ! never know that it just the same as my sc_check command
  17. you have to ask euphy xD I only interested in bug hunting euphy is still an active member, so I don't want to edit his script unnecessary
  18. AnnieRuru

    request

    update item_db_re set equip_jobs = equip_jobs & cast(~0x00001000 as signed) where id = 2797; or maybe its item_db2 table ?
  19. - script aaa -1,{ OnPCLoadMapEvent: if ( getgmlevel() < 20 || getgmlevel() == 99 || !agitcheck() ) end; if ( compare( strcharinfo(3), "_cas0" ) && !compare( strcharinfo(3), "gl_cas0" ) ) warp "Save", 0,0; } prtg_cas01 mapflag loadevent prtg_cas02 mapflag loadevent prtg_cas03 mapflag loadevent .... put loadevent mapflag on all those castle maps that you can find
  20. SELECT id, iname, exp FROM mob_db WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 order by exp desc; try this in your sql database and see is the top one is Howard Alt-Eisen ? select id, iname, exp from mob_db order by exp desc; even this tells me the top one is Ragunta which gives 9,999,999 exp only I have doubt about this 494,000,000 ... is there any mob that really gives so much exp ? http://rathena.org/board/topic/64394-%E2%9C%B0-euphys-scripts-%E2%9C%B0/page__st__380#entry148492 seems to be different cases
  21. post out your healer npc I'm pretty sure your healer npc has sc_end sc_all ... and I strongly against this because even a user with 90% overweight can use skill after a sc_end sc_all
  22. I'm pretty sure the C_MUL error is come from this line ... set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5; set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5; so #Mission_Count is 48, and .@j[.Quests+1] is 2147483647 .... and .@j[.Quests+1] comes from here, which should be responsible for the C_ADD error set .@j[.Quests+1], .@j[.Quests+1]+strmobinfo(6,.@j[.@i]); set .@j[.Quests+2], .@j[.Quests+2]+strmobinfo(7,.@j[.@i]); ok mystery solve for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { set .@j[.@i], getd("Mission"+.@i); set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]); set .@j[.Quests+1], .@j[.Quests+1]+strmobinfo(6,.@j[.@i]); set .@j[.Quests+2], .@j[.Quests+2]+strmobinfo(7,.@j[.@i]); mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000"; } // Reward formulas: set .@Mission_Points, 3+(.@j[.Quests]/.Quests/6); set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5; set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5; set .@Zeny, #Mission_Count*.Quests*.@j[.@i]*.Multiplier; ] the 1st line for ( set.@i,0 .... means, loop through all the quest available, then it reach these 2 lines set .@j[.Quests+1], .@j[.Quests+1]+strmobinfo(6,.@j[.@i]); set .@j[.Quests+2], .@j[.Quests+2]+strmobinfo(7,.@j[.@i]); which this part is responsible to gives the experience points and this part is overflow with C_ADD I think there's 2 ways to have this experience point to overflow 1st is, you have set too many .Quest post out your configuration part, this one set .Delay,12; // Quest delay, in hours (0 to disable). set .Quests,4; // Number of subquests per quest (increases rewards). set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only) set .Multiplier,60; // Multiplier for Zeny reward calculation. setarray .Count[0], // Min and max monsters per subquest (increases rewards). 40,70; 2nd is, you have custom mobs which gives insane experience points that met the query_sql that I made for euphy ... ( aww .shhit XD ) that is inside mob_db table .... seriously, you should put all your custom mob into mob_db2 table, not mob_db table EDIT: SELECT id, iname, exp FROM mob_db WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 order by exp desc; just tested the highest exp mob that met this requirement is Howard Alt-Eisen, ID 1636 which gives 10854 exp officially this can't be overflow EDIT2: I think a quick fix is to add where exp < 11000 in that condition ....
  23. http://www.w3schools.com/sql/sql_insert.asp http://dev.mysql.com/doc/refman/5.1/en/insert.html
  24. OnPCStatCalcEvent prontera,154,186,6 script kdjsfhskdfj 100,{ getitem2 1201,1,1,0,0, 0,0,0,-4701; end; OnPCStatCalcEvent: if ( isequipped(-4701) ) bonus bstr, 100; } I also can't believe myself this is actually working though, in-game it shows having apple at card4 slot
  25. what I mean is this prontera,156,184,5 script quest 100,{ if ( #misc_quest & 1 ) { mes "happy halloween"; halloween = #halloween = 0; // remember to reset them to 0 or else just wasting variable space close; } else if ( #halloween ) { if ( halloween == 10 ) { mes "you just complete this quest"; halloween = #halloween = 0; #misc_quest |= 1; // <-- THIS LINE } else if ( halloween ) mes "you have killed "+ halloween +" ghouls"; else mes "you have to kill 2000 ghouls"; close; } mes "happy halloween event"; select "take quest"; #halloween = 1; mes "you have to kill 2000 ghouls"; close; OnNPCKillEvent: if ( killedrid == 1036 && #halloween && halloween < 10 ) dispbottom "[Halloween Event] "+ halloween++ +" Ghouls killed!"; end; } LMAO !!! I've been 4 years since I last written a quest script !!! LOL I seem to get off touch writing this simple script rofl @Emistry omg, you script there start to looks like my mission board script as I'm using that same technique in that script now I mention about mission board, I do have that 'Can do: Only once' setting in that script ... hmm ....
×
×
  • Create New...