-
Posts
2044 -
Joined
-
Last visited
-
Days Won
51
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by AnnieRuru
-
lol there's pvp_noparty and pvp_noguild mapflag no need to do such checks @Ryokem there's also partylock mapflag, but I think no need to use here
-
if(playerattached){sleep2 10000;} else {sleep 10000;} I think just sleep 10000; is enough though as there's nothing below that require RID and you should just point out just put OnClock0000: OnClock0400: OnClock0800: OnClock1200: OnClock1600: OnClock2000: under close2; after GM activation
-
prontera,156,184,5 script djfksdhfsk 100,{ if ( .start ) end; .start = 1; while (1) { disablenpc strnpcinfo(0); sleep 1000; enablenpc strnpcinfo(0); sleep 1000; } } lol it works I think it was fixed in 2010 or something ... so yeah disablenpc doesn't work like this 3 years ago, but now can EDIT: WTF I didn't refresh this page since yesterday x.x
-
... what kind of trick is this o.Oif a server crash, every player will starts to complain !
-
suggestion : so you also know how to write using Quest Log system ? http://www.eathena.ws/board/index.php?s=&showtopic=269839&view=findpost&p=1481667 somehow I feel using quest log is even better than using bitmask here o.o has better GUI interface ... etc ... well of course you don't have to tell your exact idea about that script but if you want to improve your techniques, we can share XD
-
@garet999 so I guess you've learned it then xD and ... ops ? but your 1st script like this ... even much better than my 1st script >_< ... my 1st script is even worst than the script generated by this program I still remember when I was a newbie scripter, I actually learned from script generator 1st lol @Ryokem hmm ... so what's your suggestion on improving about variable saving ? I do understand what you are saying if it is saving in temporary player variable ... as we can practically have unlimited temporary player variable until server runs out of memory but its not the case when dealing with permanent player variable because we currently have a hard-coded limit of 256 atm you mean, your other emulator actually allows to save variables that way ? same feeling here o.o hmm I never actually tries to code something outside eathena/rathenaany example or external links that I can refer on ?
-
its fine sometimes its even better to show your script to the community and we'll help you improve your scripting skills let's see ... set GREEN_EGG,1; set TABLET_A,0; set TABLET_B,0; set TABLET_C,0; set TABLET_D,0; set TABLET_E,0; I'm quite sure you know how to do bitmask ? TABLET = TABLET | 1 << 1; the way you are doing is wasting permanent variable space, I guess you know it by now ? if ((RED_EGG == 1) && (BLUE_EGG == 1) && (YELlOW_EGG == 1) && (GREEN_EGG == 1) && (PURPLE_EGG == 1) && (BLACK_EGG == 1) && (GOLD_EGG == 1)) { same here, I guess http://www.eathena.ws/board/index.php?showtopic=153708 http://www.eathena.ws/board/index.php?showtopic=162523&hl= http://www.eathena.ws/board/index.php?s=&showtopic=154325&view=findpost&p=850808 other than wasting variable space, its somehow a very nicely written functionality script o.o
-
[Error]: Loading NPC file: npc/zzz.txt script error on npc/zzz.txt line 318 set_label: invalid label name 313 : mes "10 Osiris Doll"; 314 : mes "10 Poring Doll"; 315 : mes "10 Raccoon Doll"; 316 : mes "10 Rocker Doll"; 317 : mes "10 Spore Doll"; * 318 : 'n'ext: 319 : mes "[] Mr Khao []"; 320 : mes "Questo ti darÓ: Str+ 20, int+ 20, vit+ 40, agi+ 40, Luk+ 50, Mdef+40"; 321 : mes "Resistenza all'elemento fuoco +20%, Aumento danno con elemento fuoco +20%"; 322 : next; 323 : mes "[] Mr Kaho []";
-
oh ... **** [Error]: buildin_getitem: Nonexistant item 0 requested. [Debug]: Source (NPC): Card remover (invisible/not on a map) [Error]: buildin_getitem: Nonexistant item 0 requested. [Debug]: Source (NPC): Card remover (invisible/not on a map) [Error]: buildin_getitem: Nonexistant item 0 requested. [Debug]: Source (NPC): Card remover (invisible/not on a map) [Error]: buildin_getitem: Nonexistant item 0 requested. [Debug]: Source (NPC): Card remover (invisible/not on a map) forgot to check my map-server damn ... I somehow become noob >_< - script Card remover -1,{ OnPCLoginEvent: getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( !( getiteminfo( @inventorylist_id[.@i], 5 ) & 256 ) && getiteminfo( @inventorylist_id[.@i], 5 ) & 513 && ( @inventorylist_refine[.@i] || @inventorylist_card1[.@i] > 500 || @inventorylist_card4[.@i] > 500 ) ) { delitem2 @inventorylist_id[.@i], @inventorylist_amount[.@i], @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i]; getitem @inventorylist_id[.@i], @inventorylist_amount[.@i]; for ( .@j = 1; .@j <= 4; .@j++ ) if ( getd("@inventorylist_card"+ .@j +"["+ .@i +"]") ) getitem getd("@inventorylist_card"+ .@j +"["+ .@i +"]"), @inventorylist_amount[.@i]; } } end; } again XD though your script already useful lol --offtopic-- EDIT: I should've refer back to my itemlist script and getitemname2 script ...
-
Limit PvP for Once per KILLEDRID per Day
AnnieRuru replied to serakh00's question in Scripting Support
then isn't this very resource wasteful ? like emistry did here ... save so many perm variables just to log each one of them ... do you have any better ideas how to store them properly ? other then doing implode to compress 20 players CID of their last kill into 1 long string var ... -
LOL xD you just reminded me I made the same mistakes here should use getd - script Card remover -1,{ OnPCLoginEvent: getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( !( getiteminfo( @inventorylist_id[.@i], 5 ) & 256 ) && getiteminfo( @inventorylist_id[.@i], 5 ) & 513 && @inventorylist_card1[.@i] > 500 ) { delitem2 @inventorylist_id[.@i], @inventorylist_amount[.@i], @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i]; getitem @inventorylist_id[.@i], @inventorylist_amount[.@i]; for ( .@j = 1; .@j <= 4; .@j++ ) getitem getd("@inventorylist_card"+ .@j +"["+ .@i +"]"), @inventorylist_amount[.@i]; } } end; } can't believe I'm doing script showdown with you xD EDIT to your EDIT hahaha you fell into the trap ! equipments are non-stackable items and they are always @inventorylist_amount[.@i] == 1 only stackable items like potions or usable items can only return @inventorylist_amount[.@i] > 1 @sumano ouch !
-
hmm ... are you using custom endless tower script or official endless tower script .. ?
-
AHAHA !! I suddenly feel myself noob now gives you rep up xD - script Card remover -1,{ OnPCLoginEvent: getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( !( getiteminfo( @inventorylist_id[.@i], 5 ) & 256 ) && getiteminfo( @inventorylist_id[.@i], 5 ) & 513 && @inventorylist_card1[.@i] > 500 ) { delitem2 @inventorylist_id[.@i], @inventorylist_amount[.@i], @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i]; getitem @inventorylist_id[.@i], @inventorylist_amount[.@i]; getitem @inventorylist_card1[.@i], @inventorylist_amount[.@i]; getitem @inventorylist_card2[.@i], @inventorylist_amount[.@i]; getitem @inventorylist_card3[.@i], @inventorylist_amount[.@i]; getitem @inventorylist_card4[.@i], @inventorylist_amount[.@i]; } } end; } I also want my script to be criticize ~ btw, card1 field can be in 255 or 254 if it is a signed item http://www.eathena.w...howtopic=156949 EDIT: yeah, it is custom slotted by topic starter, he said his server previously has all headgear with slotted items
-
Can somebody kind enough tell me the commands... :)
AnnieRuru replied to Milky Holmes's question in Script Requests
2nd use sleep ... not addtimer addtimer require a player to be attach, while sleep doesn't OnWhisperGlobal: // activate by GMs agitstart; agitstart2; sleep 2 * 60 * 60 * 1000; agitend; agitend2; btw ... I feel like this is more like a support question ... not a request -
<3 .... I loved this words you said XDI think he meant, if ( isequipped("Santa Hat") ) ... ? can go in, like that EDIT: oh you already done that but usually we split out the requirement of ( BaseClass == Job_Novice && BaseLevel >= 90 ) and ( isequipped(2236) ) into 2 different conditions to tell the users what they did wrong
-
wow nice one there but why not just use *successremovecards ?
-
Limit PvP for Once per KILLEDRID per Day
AnnieRuru replied to serakh00's question in Scripting Support
I don't quite understand this part ...how can be earning a PvP point without going into PvP zone ? doesn't make any sense possible by setting 2 permanent variableone by gettimestr("%Y%m%d", 9) another by pvp points if ( atoi( gettimestr("%Y%m%d", 9) ) != today_pvp_points ) ... today_pvp_points = atoi( gettimestr("%Y%m%d", 9) though usually I would've compress all variables into one using implode command lol -
here is my past examples of gvg scripts topic 1 topic 2 topic 3 topic 4 based on my past experience on gvg scripts, it ALWAYS has something to do with source modification ... which map ?? and how about the coordinates ? and you need to explain what is the winning condition too vague ... I can't start a script just based on this short sentenceplease refer back to these topics and explain more in detail example ... I also told back the user to elaborate more about winning conditions in this 2 battleground topic do I get a sense of feeling you are thinking nobody here can make a gvg scripts ? in this community we got a lot skillful scripters and we can help comply every request for you
-
http://www.eathena.ws/board/index.php?showtopic=242792&st=0&p=1324032entry1324032 http://www.eathena.ws/board/index.php?showtopic=243580&st=0&p=1327369entry1327369 move to database request
-
@GmOcean yeah, I felt like ... my way is more efficient and what I'm trying to tell, is because event script is unlike any other kind of scripts for algorithm or utility type scripts ... you can just keep testing in test server and once you get the correct result, its good to release but event script needs A LOT of experiences and many members feedback to know about the rare bugs and exploits and the fastest way to learn about event script is learn from criticize from other scripters just like Omnipotent doing atm @Omnipotent yes, I already set nomemo mapflagnowarp and nowarpto mapflag is also a common sense to set inside an event script I think, do another delitem at the time during player register might be better xD WTF !! no wonder I already sense you are very high level scripter making this scriptpro ! glad to see someone like you in this forum ! thx for finding this bug gives you another rep up @donkeyg none of the above every previous script has flaw and is exploitable that's why we are discussing how to make a flawless event script for you try this candy_event_0.2.txt
-
hmm ... it seems I have complicated a little bit I used 2 dimension array to calculate the highest amount candy prontera,155,184,5 script kjdshfdkshf 100,{ if ( .start == 0 ) { dispbottom "no event atm"; end; } if ( .start == 2 ) { dispbottom "event is running"; end; } if ( checkcart() ) { // common sense, countitem/delitem couldn't search into a cart, and a blacksmith can use greed ... hmm greed can be use without cart dispbottom "you can't bring a cart into this event"; end; } if ( getarraysize( .register_aid ) >= 100 ) { dispbottom "limitation reach"; end; } warp "guild_vs2", 0,0; .register_aid[ getarraysize( .register_aid ) ] = getcharid(3); end; OnWhisperGlobal: if ( .start ) end; announce "pick up event registration start", 0; .start = 1; sleep 10000; announce "pick up event registration close", 0; .start = 2; sleep 3000; mapannounce "guild_vs2", "pick up as many items on floor as you can !", 0; sleep 1000; for ( .@i = 5; .@i >= 0; .@i-- ) { mapannounce "guild_vs2", "["+ .@i +"]", 0; sleep 1000; } .@drop_candy_amount = getarraysize( .register_aid ) * 12; freeloop 1; while ( .@i < .@drop_candy_amount ) { while ( checkcell( "guild_vs2", .@x = rand(150), .@y = rand(150), cell_chknopass ) ); makeitem "Candy",1,"guild_vs2", .@x, .@y; .@i++; } freeloop 0; sleep 10000; .@size = getarraysize( .register_aid ); for ( .@i = 0; .@i < .@size; .@i++ ) { if ( attachrid( .register_aid[.@i] ) ) { .@amount = countitem( "Candy" ); if ( .@amount >= .@highest ) { setd ".@count"+ .@amount +"["+ getarraysize( getd( ".@count"+ .@amount ) ) +"]", getcharid(3); .@highest = .@amount; } delitem "Candy", countitem( "Candy" ); } } atcommand "@cleanmap"; // randomly attach someone to @cleanmap .@size = getarraysize( getd( ".@count"+ .@highest ) ); for ( .@i = 0; .@i < .@size; .@i++ ) { attachrid getd( ".@count"+ .@highest +"["+ .@i +"]" ); getitem "Poring_Coin", 1; .@name$ = .@name$ +( ( .@i )? " , ":"" )+"["+ rid2name( getd( ".@count"+ .@highest +"["+ .@i +"]" ) ) +"]"; } mapannounce "guild_vs2", "event end, there are "+ .@size +" player having most candy ! "+ .@name$, 0; sleep 5000; getmapxy .@map$, .@x, .@y, 1; mapwarp "guild_vs2", .@map$, .@x, .@y; deletearray .register_aid; .start = 0; end; OnPCLogoutEvent: if ( .start ) { .@size = getarraysize( .register_aid ); while ( getcharid(3) != .register_aid[.@i] && .@size < .@i ) .@i++; if ( .@i < .@size ) deletearray .register_aid[.@i], 1; } end; } guild_vs2 mapflag nowarp guild_vs2 mapflag nowarpto guild_vs2 mapflag noteleport guild_vs2 mapflag nomemo guild_vs2 mapflag noicewall guild_vs2 mapflag nobranch guild_vs2 mapflag nosave SavePoint btw now compare to mine, I just find out ... emistry still need to learn more about how to use OnPCLogoutEvent / OnPCDieEvent / OnPCLoginEvent properly if you guys want to master an event script, has to utilize these OnPC***Event properly @GmOcean I think you are the same, I also just realize your script also didn't make use of them properly tomorrow I'll criticize your script EDIT: almost forgotten about @cleanmap
-
http://www.eathena.ws/board/index.php?showtopic=272986 use this @Brian script http://www.eathena.ws/board/index.php?s=&showtopic=216929&view=findpost&p=1184299
-
Triple or Nothing (Super Hot Request - Oppa Gangnam Style!)
AnnieRuru replied to buda's question in Script Requests
make sure you have this ... otherwise you have to post your server error ... -
1. its better to do delitem when the event about to start ... player might cheat to collect them from other means ( taken from previous round and drop on floor ... etc ) 2. you can just store the value of highest value candy user in strcharinfo(0) or getcharid(3) .. then no need to reloop for 2nd time ..
-
As far I know, empty menu are not send to the client, so no hack possible here. yeah, the client only send option menu number,its the server side to calculate the index of the array or the position options of the menu @Ryokem http://www.eathena.w...opic=160415&hl= <-- yeah that's the time when eathena updates .. how long have u disappear ... 5 years !?! another one http://www.eathena.w...dpost&p=1007391 EDIT: and about 2nd question, yes although runs slower, but I do understand his technique and made me realize I can made the menu during server start-up after all, this script support section is a place to discuss and understand each other scripter's technique too @Keyworld WAHAHAHA !! script showdown !! feel like old times already ~ PS: yeah your script works, tested