Jump to content

AnnieRuru

Members
  • Posts

    2044
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by AnnieRuru

  1. dammit ... I totally forgotten there's difference with sd->mapindex and sd->bl.m atcommand.c ACMD_FUNC(recallmap) { char aaa[255]; nullpo_retr(-1, sd); if ( !message || !*message ) { clif_displaymessage( fd, "Please, enter a message (usage: @recallmap <map name>)."); return -1; } if ( map_mapname2mapid(message) < 0 ) { clif_displaymessage( fd, "Please, enter a valid map name (usage: @recallmap <map name>)."); return -1; } map_foreachinmap( buildin_recallmap_sub, map_mapname2mapid(message), BL_PC, sd->mapindex, sd->bl.x, sd->bl.y ); sprintf( aaa, "All players from %s has recall to your position", message ); clif_displaymessage( fd, aaa ); return 0; } static int buildin_recallmap_sub( struct block_list* bl, va_list ap ) { struct map_session_data *sd = (struct map_session_data *)bl; int m = va_arg(ap,int); int x = va_arg(ap,int); int y = va_arg(ap,int); pc_setpos( sd, m, x, y, CLR_TELEPORT ); return 0; } ACMD_DEF(recallmap), atcommand.h static int buildin_recallmap_sub( struct block_list* bl, va_list ap );
  2. seriously you need to use search button more often http://www.eathena.ws/board/index.php?s=&showtopic=188436&view=findpost&p=1501500 http://www.eathena.w...dpost&p=1019595 http://www.eathena.w...dpost&p=1078390 1 interesting stuff, you can create support clone and it help cast skills on you http://www.eathena.w...dpost&p=1324032 http://www.eathena.w...dpost&p=1327369 but this question is suppose in database lol
  3. the rest are funny enough, but this one I seriously LOL'ed
  4. that's just ... 800 lines ... and minus some maps that has gvg maps like castle maps so actually just about 700 lines++ loading time just few seconds more ... no ? battle.c if( flag&(BCT_GUILD|BCT_ENEMY) ) { int s_guild = status_get_guild_id(s_bl); int t_guild = status_get_guild_id(t_bl); if( !(map[m].flag.pvp && map[m].flag.pvp_noguild) && s_guild && t_guild && (s_guild == t_guild || guild_isallied(s_guild, t_guild)) && (!map[m].flag.battleground || sbg_id == tbg_id) ) state |= BCT_GUILD; else state |= BCT_ENEMY; } just only have to remove !(map[m].flag.pvp && map[m].flag.pvp_noguild) nah ... more than that, but think you can solve it yourself
  5. then duplicate them all over the maps ... xD open db\map_index.txt use notepad++, Ctrl+F, select Regular Expression Find (.*) replace with \1 mapflag pvp_noguild between mapflag and pvp_noguild is actual TAB, type it somewhere and copy paste lol done so fast
  6. actually I only use sleep2 if the timer is low, like pause for several seconds before warping them out if the timer is long running one like over 10 minutes, I prefer to use addtimer command doevent "testtimer::Onuse"; - script testtimer -1,{ Onuse: deltimer "testtimer::Ontimeup"; addtimer 10000, "testtimer::Ontimeup"; warp "guild_vs2", 0,0; end; Ontimeup: if ( strcharinfo(3) != "guild_vs2" ) end; warp "SavePoint", 0,0; end; }
  7. prontera,163,174,4 script PartyvParty 746,{ mes "I am Party Match Manager."; mes "Party Leader may create a PVP Match here."; next; switch( select( ( .Created )?"Join Game[ ^FF0000"+.No+"vs"+.No+"^000000 ]":"Create Game", ( ( getgmlevel() >= .GMLevel || getcharid(0) == getpartyleader( getcharid(1),2 ) ) && .Created )?"^FF0000Remove Game^000000":"" )){ Case 1: switch( .Created ){ Case 0: getpartymember getcharid(1),1; if( getcharid(0) != getpartyleader( getcharid(1),2 ) || !getcharid(1) ){ mes "Sorry, but only a ^FF0000Party Leader^000000 can register a game here."; } else { getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) if ( isloggedin( $@partymemberaid[.@i] , $@partymembercid[.@i] ) ) .@party_online++; if ( .@party_online < .min2start ) { mes "Your party must have "+ .min2start +" players online to register"; close; } mes "How many Players for each Party Team ?"; mes "Min = "+ .min2start +" Max = "+$@partymembercount; mes "Because you only have "+$@partymembercount+" member right now."; next; input .No, .min2start ,$@partymembercount; announce "[ "+.No+"vs"+.No+" Party Match ] created by "+strcharinfo(0)+", you may register to join.",0; set .Team[0],getcharid(1); set .Created,1; } close; Case 1: if( !.Team[1] && getcharid(1) == .Team[0] ){ mes "Please wait for ^FF0000Team 2^000000 to Register."; }else{ if( getcharid(0) != getpartyleader( getcharid(1),2 ) || !getcharid(1) ){ mes "Sorry, but only a ^FF0000Party Leader^000000 can register a game here."; close; } getpartymember getcharid(1),1; if( $@partymembercount < .No ){ mes "You didnt have enough of "+.No+" Member for the Game."; mes "You only have "+$@partymembercount+" Member."; }else{ getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) if ( isloggedin( $@partymemberaid[.@i] , $@partymembercid[.@i] ) ) .@party_online++; if ( .@party_online < .No ) { mes "You didnt have enough of "+ .No +" Member for the Game."; mes "You only have "+ .@party_online +" Members online."; close; } mes "Confirm Registration ?"; if( select("Yes:No") == 1 ){ set .Team[1],getcharid(1); set .Created,2; setarray .Members[0],.No,.No; for( set .@party,0; .@party < 2; set .@party,.@party + 1 ){ getpartymember .Team[.@party],1; for( set .@i,0; .@i < .No; set .@i,.@i + 1 ) warpchar .Map$,0,0,$@partymembercid[.@i]; } end; } } } close; Case 2: mes "^FF0000The Game is in Progress.^000000"; mes "[ A "+.No+" vs "+.No+" Game ]"; mes "Team ^FF0000"+getpartyname( .Team[0] )+"^000000 vs Team ^FF0000"+getpartyname( .Team[1] )+"^000000 ."; close; } close; Case 2: mes "Done, Match will be terminated right away."; mapannounce .Map$,"Match has been Cancelled by a GM.",0; close2; OnReset: deletearray .Team[0],getarraysize( .Team ); deletearray .Members[0],getarraysize( .Members ); if( .Winner ){ getpartymember .Winner,2; for( set .@i,0; .@i < .No; set .@i,.@i + 1 ){ getitem 7227,5,$@partymemberaid[.@i]; getitem 14003,1,$@partymemberaid[.@i]; } set .Winner,0; } sleep2 2000; set .Created,0; mapwarp .Map$,"prontera",155,181; end; } close; OnPCDieEvent: OnPCLogoutEvent: if( strcharinfo(3) == .Map$ && .Created ){ for( set .@i,0; .@i < 2; set .@i,.@i + 1 ) if( getcharid(1) == .Team[.@i] ) set .Members[.@i],.Members[.@i] - 1; if( .Members[0] < 1 ) set .Winner,.Team[1]; else if( .Members[1] < 1 ) set .Winner,.Team[0]; if( .Winner ){ mapannounce .Map$,"Team "+getpartyname( .Winner )+" Win the "+.No+"vs"+.No+" Game.",0; donpcevent strnpcinfo(0)+"::OnReset"; }else{ warp "prontera",156,180; } } end; OnInit: set .GMLevel,80; set .Map$,"pvp_n_2-3"; set .min2start, 2; end; } after some debugging I have to say ... I can't recommend this script, because 1. the registration doesn't counter check the player is online or not if 1 side totally log off when the game start, the other side will get stuck in the map with nothing to do except logout 2. this script doesn't check for all the party members in the team MUST be online if the 1st party member is log off, the team become imbalance even worst if the party had use transfer party leader to bottom position, and top position is offline 3. I can always dual client and ask it to get free items if register 1vs1 match I prefer some kind of gambling system, gamble 1 item from each team and the winning team gets gambled items from both side http://www.eathena.ws/board/index.php?showtopic=180637 <-- something like this, but careful his script always bug so ... nope emistry still have rooms for improvements .... well I can't say much because I never made party vs party script myself also hehehe
  8. bonus bIntMatk, 100; bonus bequipmentmatk, 200; its working for me MATK 23+0 equip this becomes MATK 123+200
  9. AnnieRuru

    Bossnia

    that should be support section ... an I wrong ?what you are saying is actually correct IF the user post the topic in support section ... but this is script request section I'm just doing what the admin has set to the definition yeah I know ...it just ... right now I have a feeling that many members here need to learn more advance scripting technique actually, I'm not quite interested of having my post get up I'm just want more users aware of some kind of scripting technique that you guys never aware off you see some of my script, for example that mission board script, I don't think many members here can understand what's the technique I've used in that script and I doubt your current level can even make edit on that script too even emistry also asked me in PM few days ago how to script that function I've used in the script that's why, when I see some request that looks interesting to me I'll show off my advance techniques that I couldn't do in script support section because in script support section, they mostly already know how to do it themself that's why I do them in script request section, so I wish some of you here can learn how I solved the problem using my own technique of course, there're always some people that can script better than me ToastofDoom and Keyworld also sometimes share out their techniques from time to time and I also learned a lot from them you should've noticed I keep mentioned 'credit to keyworld' ... this guy is seriously pro than me I think you can understand what I'm saying, because you might've noticed that my scripting style is unique when compare to most users here now emistry can make such a high standard scriptbecause he had study many scripts that I've made in script request section before, too he's a fine leader when I was absent in past 1 year ... am I wrong ? script request is a section to share out your scripting technique ... ... besides getting the script done I still remember this topic during that time, GmOcean made that script that I have no words to explain how messy that script was ... and when compare to mine ... it was like ..... hahaha ... I better don't say xD but seriously, this is getting very off-topic LMAO
  10. .... { unitskilluseid getcharid(3), "LK_TENSIONRELAX", 1; },{},{} cannot cancel it until hp is full ... eh ...? sounds like source modification for a new skill ... EDIT for below ok Ryokem is correct, tested working
  11. I already tried that before I post it - script kdjfksdjhf -1,{ OnInit: bindatcmd "rewardpoints", strnpcinfo(0)+"::Onaa"; bindatcmd "rewardpoints2", strnpcinfo(0)+"::Onaa2"; end; Onaa: dispbottom "You have "+ reward_points +" points"; end; Onaa2: if ( !( .@aid = getcharid( 3, .@atcmd_parameters$ ) ) ) { dispbottom "player not online"; end; } .@origin = getcharid(3); attachrid .@aid; .@points = reward_points; attachrid .@origin; dispbottom rid2name( .@aid )+" have "+ .@points +" points"; end; } prontera,154,178,6 script kdjsfhkshf 100,{ input reward_points; dispbottom "You have "+ reward_points +" points"; end; } when I used AnnieRuru character type '#rewardpoints ennyruru', the dispbottom display on EnnyRuru character which is not intended to be like that so I split out into @rewardpoints2 version ... then I realized atcommand.c ones work correctly atcommand.c version '#rewardpoints ennyruru' will show the message from AnnieRuru char, not on EnnyRuru
  12. Index: battle.c =================================================================== --- battle.c (revision 16860) +++ battle.c (working copy) @@ -5051,6 +5051,14 @@ } } + if ( s_bl->type == BL_PC && t_bl->type == BL_PC ) { + struct map_session_data *sd = BL_CAST(BL_PC, s_bl); + struct map_session_data *tsd = BL_CAST(BL_PC, t_bl); + if ( !strcmp( mapindex_id2name(sd->mapindex), "prontera" ) ) + if ( pc_readglobalreg( sd, "pvpteam" ) == pc_readglobalreg( tsd, "pvpteam" ) ) + return 0; + } + switch( target->type ) { // Checks on actual target case BL_PC: { struct status_change* sc = status_get_sc(src);
  13. ACMD_FUNC(rewardpoints) { char aaa[255]; nullpo_retr(-1, sd); sprintf( aaa, "%s currently have %d reward points", sd->status.name, pc_readglobalreg( sd, "rewardpoints" ) ); clif_displaymessage( fd, aaa ); return 0; } ACMD_DEF(rewardpoints), EDITED: this code even shorter than I expected
  14. prontera,155,180,4 script Test 100,{ getonlinemember; Announce "$@onlinecount:"+$@onlinecount,0; set .@j,$@onlinecount/128; for(set .@i,0;.@i<=.@j;set .@i,.@i+1) for(set .@k,0;set(.@u,getd("$@onlineaid_"+.@i+"_"+.@k+""));set .@k,.@k+1){ getitem 501, 1, .@u; dispbottom ""+.@u; } end; } I have to say I tested his source modification ... it really works
  15. AnnieRuru

    Bossnia

    finish this one off ... 1 PM less to worry bossnia_0.9.txt also give Emistry 5 in this topic for trying <3 btw if the party failed within 30 mins, they can retry again because this script haven't deny them with gettimetick(2)
  16. input .No,1,$@partymembercount; change into input .No,3,$@partymembercount; I think no need change the rest, if the party leader bring with 2 members only, the script automatically register with 3vs3 also so the party leader itself became aware to bring enough members PS: that is emistry's script ? lol... I'm getting more and more surprise xD
  17. - script storagelist2 -1,{ end; Onaa: if ( !( .@aid = getcharid( 3, .@atcmd_parameters$ ) ) ) { if ( !query_sql( "select account_id from `char` where name = '"+ escape_sql(.@atcmd_parameters$)+"'", .@aid ) ) { mes "no such player"; close; } } query_sql( "select count(1) from storage where account_id = "+ .@aid, .@total ); while (1) { .@nb = query_sql( "select nameid, amount, identify, refine, attribute, card0, card1, card2, card3 from storage where account_id = "+ .@aid +" limit "+ .page +" offset "+ .page * .@current_page, .@itemid, .@amount, .@identify, .@refine, .@broken, .@card1, .@card2, .@card3, .@card4 ); mes "= Total "+ .@total +" items, Page No."+( .@current_page +1 )+" ="; for ( .@i = 0; .@i < .@nb; .@i++ ) mes .@amount[.@i] +"x "+ @itemname2_info$[0] + callfunc( "getitemname2", .@itemid[.@i], .@identify[.@i], .@refine[.@i], .@broken[.@i], .@card1[.@i], .@card2[.@i], .@card3[.@i], .@card4[.@i] ) +"^000000"; next; if ( select ( "Next Page", "Previous Page" ) == 1 ) { if ( .page * ( .@current_page +1 ) < .@total ) .@current_page++; else { mes "the end of the page"; close; } } else { if ( .@current_page == 0 ) { mes "this is the 1st page"; close; } else .@current_page--; } } close; OnInit: bindatcmd "storagelist2", "storagelist2::Onaa", 40,40; // 40 for atcommand, 40 for charcommand .page = 5; // display 5 items per page end; } if you want to display page by page, this script can do Usage: @storagelist2 annieruru look up the storage in my account
  18. /* item = 0,2,11 cash = 18 weapon = 4 armor = 5,8 ammo = 10 card = 6 etc = 3,7 */ prontera,155,187,5 script kdjsfhdksjf 100,{ .@page = 5; // display 5 items per page input .@name$; if ( !( .@aid = getcharid( 3, .@name$ ) ) ) { if ( !query_sql( "select account_id from `char` where name = '"+ escape_sql(.@name$)+"'", .@aid ) ) { mes "no such player"; close; } } /* query_sql( "select count(1) from storage where account_id = "+ .@aid, .@total ); while (1) { .@nb = query_sql( "select nameid, amount, identify, refine, attribute, card0, card1, card2, card3 from storage where account_id = "+ .@aid +" limit "+ .@page +" offset "+ .@offset, .@itemid, .@amount, .@identify, .@refine, .@broken, .@card1, .@card2, .@card3, .@card4 ); mes "= Total "+ .@total +" items, Page No."+ .@current_page++ +" ="; for ( .@i = 0; .@i < .@nb; .@i++ ) mes .@amount +"x "+ @itemname2_info$[0] + callfunc( "getitemname2", .@itemid[.@i], .@identify[.@i], .@refine[.@i], .@broken[.@i], .@card1[.@i], .@card2[.@i], .@card3[.@i], .@card4[.@i] ) +"^000000"; .@offset += .@page; if ( .@offset < .@total ) next; else close; }*/ callsub L_usable_items, "Healing Items", 0, .@aid; close; /* L_display: switch ( getarg(0) ) { case 0: callsub L_usable_items, "Healing Items", getarg(0), getcharid(3); case 2: callsub L_usable_items, "Usable Items"; case 3: callsub L_usable_items, "etc"; case 4: callsub L_weapons, "Weapons"; case 5: callsub L_armors, "Armors"; case 6: callsub L_usable_items, "Cards"; case 7: callsub L_pet_equipments, "Pet egg"; case 8: callsub L_pet_equipments, "Pet equipments"; default: callsub L_pet_equipments, "Misc Equipments"; case 10: callsub L_usable_items, "Ammunitions"; case 11: callsub L_usable_items, "Usable Items"; case 18: callsub L_usable_items, "Cash Items"; } return;*/ L_usable_items: set .@nb, query_sql( "select nameid, amount, card0, card2, card3, expire_time from storage where account_id = "+ getarg(2) +" and type = "+ getarg(1), .@itemid, .@amount, .@card1, .@card3, .@card4, .@expire ); if ( .@nb ) { mes "^000000=== "+ getarg(0) +" ==="; set .@i, 0; while ( .@i < .@nb ) { mes "^996600"+ .@amount[.@i] +" ^00AA00"+ getitemname( .@itemid[.@i] ) +" ^EE8800("+ .@itemid[.@i] +")"; if ( .@card1[.@i] == 254 ) mes " ^0000FF> Char ID : ("+( .@card4[.@i] * pow(2,16) + .@card3[.@i] )+")"; if ( .@expire[.@i] ) mes " ^FF0000> Expire : "+ callfunc( "timeleft__", .@expire[.@i] - gettimetick(2) ); set .@i, .@i +1 ; } mes " "; } return; L_pet_equipments: set .@nb, query_sql( "select nameid, amount, card0, card2, card3, expire_time from storage where account_id = "+ getarg(2) +" and type = "+ getarg(1), .@itemid, .@amount, .@card1, .@card3, .@card4, .@expire ); if ( .@nb ) { mes "^000000=== "+ getarg(0) +" ==="; set .@i, 0; while ( .@i < .@nb ) { mes "^996600"+ .@amount[.@i] +" ^00AA00"+ getitemname( .@itemid[.@i] ) +" ^EE8800("+ .@itemid[.@i] +")"; if ( .@card1[.@i] == 254 || .@card1[.@i] == 255 ) mes " ^0000FF> Char ID : ("+( .@card4[.@i] * pow(2,16) + .@card3[.@i] )+")"; if ( .@expire[.@i] ) mes " ^FF0000> Expire : "+ callfunc( "timeleft__", .@expire[.@i] - gettimetick(2) ); set .@i, .@i +1 ; } mes " "; } return; L_armors: set .@nb, query_sql( "select nameid, amount, identify, refine, attribute, card0, card1, card2, card3, expire_time from storage where account_id = "+ getarg(2) +" and type = "+ getarg(1), .@itemid, .@amount, .@identify, .@refine, .@broken, .@card1, .@card2, .@card3, .@card4, .@expire ); if ( .@nb ) { mes "^000000=== "+ getarg(0) +" ==="; set .@i, 0; while ( .@i < .@nb ) { set .@slot, getiteminfo( .@itemid[.@i], 10 ); mes "^996600"+ .@amount[.@i] +" "+( (.@identify[.@i])?( (.@broken[.@i])?"^FF0000":"^00AA00"):"^999999" )+ getitemname( .@itemid[.@i] ) +" "+( ( .@slot && .@card1[.@i] != 254 && .@card1[.@i] != 255 )?"["+ .@slot +"] ":"" )+( ( .@refine[.@i] )?("+"+ .@refine[.@i]):"" )+" ^EE8800("+ .@itemid[.@i] +")"; if ( .@card1[.@i] == 254 || .@card1[.@i] == 255 ) mes " ^0000FF> Char ID : ("+( .@card4[.@i] * pow(2,16) + .@card3[.@i] )+")"; else if ( .@card1[.@i] > 500 || .@card2[.@i] > 500 || .@card3[.@i] > 500 || .@card4[.@i] > 500 ) { set .@j, 1; while ( .@j <= 4 ) { mes ( getd(".@card"+ .@j +"["+ .@i +"]") )?" ^70AC11> "+ getitemname( getd(".@card"+ .@j +"["+ .@i +"]") ) +" ("+ getd(".@card"+ .@j +"["+ .@i +"]") +")":""; set .@j, .@j +1 ; } } if ( .@expire[.@i] ) mes " ^FF0000> Expire : "+ callfunc( "timeleft__", .@expire[.@i] - gettimetick(2) ); set .@i, .@i +1 ; } mes " "; } return; L_weapons: set .@nb, query_sql( "select nameid, amount, identify, refine, attribute, card0, card1, card2, card3, expire_time from storage where account_id = "+ getarg(2) +" and type = "+ getarg(1), .@itemid, .@amount, .@identify, .@refine, .@broken, .@card1, .@card2, .@card3, .@card4, .@expire ); if ( .@nb ) { mes "^000000=== Weapons ==="; set .@i, 0; while ( .@i < .@nb ) { set .@slot, getiteminfo( .@itemid[.@i], 10 ); if ( .@card1[.@i] == 255 && .@card2[.@i] ) { if ( .@card2[.@i] / 10 == 128 ) set .@sc$, "^000000VS "; else if ( .@card2[.@i] / 10 == 256 ) set .@sc$, "^000000VVS "; else if ( .@card2[.@i] / 10 == 384 ) set .@sc$, "^000000VVVS "; else set .@sc$, ""; if ( .@card2[.@i] % 10 == 1 ) set .@ele$, "^00AAAA(Ice) "; else if ( .@card2[.@i] % 10 == 2 ) set .@ele$, "^CCAA55(Earth) "; else if ( .@card2[.@i] % 10 == 3 ) set .@ele$, "^FF0000(Fire) "; else if ( .@card2[.@i] % 10 == 4 ) set .@ele$, "^999999(Wind) "; else set .@ele$, ""; } else { set .@sc$, ""; set .@ele$, ""; } mes "^996600"+ .@amount[.@i] +" "+ .@sc$ + .@ele$ +( (.@identify[.@i])?( (.@broken[.@i])?"^FF0000":"^00AA00"):"^999999" )+ getitemname( .@itemid[.@i] ) +" "+( ( .@slot && .@card1[.@i] != 254 && .@card1[.@i] != 255 )?"["+ .@slot +"] ":"" )+( ( .@refine[.@i] )?("+"+ .@refine[.@i]) +" ":"" )+" ^EE8800("+ .@itemid[.@i] +")"; if ( .@card1[.@i] == 255 || .@card1[.@i] == 254 && .@card2[.@i] == 0 ) mes " ^0000FF> Char ID : ("+( .@card4[.@i] * pow(2,16) + .@card3[.@i] )+")"; else if ( .@card1[.@i] > 500 || .@card2[.@i] > 500 || .@card3[.@i] > 500 || .@card4[.@i] > 500 ) { set .@j, 1; while ( .@j <= 4 ) { mes ( getd(".@card"+ .@j +"["+ .@i +"]") )?" ^70AC11> "+ getitemname( getd(".@card"+ .@j +"["+ .@i +"]") ) +" ("+ getd(".@card"+ .@j +"["+ .@i +"]") +")":""; set .@j, .@j +1 ; } } if ( .@expire[.@i] ) mes " ^FF0000> Expire : "+ callfunc( "timeleft__", .@expire[.@i] - gettimetick(2) ); set .@i, .@i +1 ; } mes " "; } return; } the moment map-server tell me this error [sql]: DB error - Unknown column 'type' in 'where clause' [Debug]: at d:\eathena\rathena sql 16819\src\map\script.c:14309 - select nameid, amount, card0, card2, card3, expire_time from storage where account_id = 2000000 and type = 0 [Debug]: Source (NPC): kdjsfhdksjf at prontera (155,187) I give up this script is too crazy my itemlist script version is possible because we have *getinventorylist script command a player can carry 100 items max, and our script engine can hold 128 indexes that's why the script is possible but storage, we don't have getstoragelist script command, so this script need hijack SQL SQL can only return 128 rows max, but our current storage limit is 600 spaces WAY more than rathena script engine array can use (5x of our script engine limitation) its possible to make this happen with calling SQL query multiple times, but its not resource friendly furthermore, this script ... needs some kind of algorithm .... to match making 600 different items into 1 long array, and split them all out into different types of items ... I really hate tackling algorithm script ... yeah I know how to do while ( .@j *128 < 600 ) for ( .@i = 0; .@i < 128; .@i++ ) set getd(".array"+ .@j +"["+ .@i +"), information; .@j++; just not in the mood to do something like this right now perhaps some other day I might come back tackle this script, but not today I got more urgent things to do ... @Peopleperson49, we got #storagelist atcommand #storagelist annieruru list out all storage items in my char but yeah ... if my storage has too many items, the chatbox is not enough to display the full information ... that's why he is suggesting to make them into npc chat box and use menu to display them separately by item types which my itemlist script did
  19. click on it and click Basic Scripting topic close because the question asked is too fundamental
  20. I'm using 2010-07-30, outdated client and my items also disappear like you did in my client there's no armor tab, only top-middle-lower headgear position http://rathena.org/b...ab/#entry111473 nobody there posting a screenshot so I don't know how the newer client behave how about yours ? EDITED: found http://rathena.org/b...tem/#entry96357 hmm .... I need to update my hexed client ... but meh ... now lazy
  21. http://www.eathena.w...ker&showbug=673 that is official behavior our developers is generous to make them configurable for us without having to recompile EDIT: I'm slow
  22. @item2 1201 1 1 0 0 0 0 0 4105 prontera,159,172,5 script market#2 100,{ getitem2 1201, 1,1,0,0, 0,0,0,4105; end; } unless I misunderstand what you are saying EDIT: oh, items that already enchanted inside item_db table why not just make a new item with the new bonus ... and duplicate with item_avail.txt and your theory also sounds wrong enchantment in RO means slot card into non-slotted area ....... unless your 'enchantment' has other different meaning
  23. seriously .... http://www.eathena.w...dpost&p=1473855 I think my getitemname2 function needs some more advertising *getitem2 script command can do it
  24. move to source modification request let's see... 1. need a new table to store `itemdrop` ... a new file name `db\itemdrop.txt` 2. every time a server start up need to read the table and makeitem on the floor... 3. every time a player drop this certain items listed in itemdrop.txt, it adds to `itemdrop` table .. 4. every time a player pick up this said items, it remove the line from the table ... 5. if a gm do @cleanmap, it wont remove these items ... .... I hope I'm not missing any steps .... but I'm not going to do this ... too much ... ..... though sounds possible
  25. AnnieRuru

    WoR Event

    nah ... I'm going to do in my own way btw, please be more considerable that there are certain kind of scripts can take up to weeks or even months to finish this one is estimated need to tackle for about 2 weeks after declare started and right now I have TONS of PMs need to solve first EDIT you seriously think every script here is done in 1 night ? true ... some below 100 lines script I can finish in hours but this one will be estimated over 600 lines
×
×
  • Create New...