Jump to content

Capuche

Developer
  • Posts

    2407
  • Joined

  • Last visited

  • Days Won

    52

Everything posted by Capuche

  1. settle this in your conf/battle/drops.conf
  2. http://pastebin.com/raw.php?i=3vh31dg0 You should update/change your emulator, implode/explode commands and others are very useful. Just think about it
  3. You can try Toasty's WoE Controller / Euphy's WOE Controller / WoE setter 3
  4. Try this one http://pastebin.com/raw.php?i=9Sh9WGbr
  5. itemmall,170,80,2 script Jukebox#nw 858,{ set .@item_req, 7227 ;// item ID set .@item_num, 10; // number required mes .@item_num +" "+ getitemname( .@item_req ) +" the sound"; if( countitem( .@item_req ) < .@item_num ) { mes "you don't have enough "+ getitemname( .@item_req ); close; } mes "select the sound"; switch( select("Into the Abyss","Assassin Cross of Sunset","Eternal Chaos","Ring of Nibelungen","Cancel") ) { case 1: soundeffectall "in_to_the_abyss.wav",0; break; case 2: soundeffectall "assassin_of_sunset.wav",0; break; case 3: soundeffectall "chaos_of_eternity.wav",0; break; case 4: soundeffectall "ring_of_nibelungen.wav",0; break; case 5: close; } delitem .@item_req, .@item_num; close; } This one should work on eA too
  6. getitem and getitem2 are almost the same, just replace getitem and complete getitem2
  7. If your emulator is rA, you can try Bindatcmd (I suggest to learn how to use it, very useful) and check if the player attached is on a pvp map with getmapflag - script stop_die -1,{ OnInit: bindatcmd "die",strnpcinfo(0) +"::OnPCDie"; end; OnPCDie: if( getmapflag( strcharinfo(3),mf_pvp ) && getgmlevel() < 10 ) message strcharinfo(0),"You can't use @die on pvp maps."; else atcommand "@die"; end; }
  8. Post your current script Did you make some modification compare to the original ?
  9. Replace x2 set $top3_pvprank$, implode( .@name$, "?" ); to for( set .@tmp, 0; .@tmp < getarraysize( .@name$ ); set .@tmp, .@tmp + 1 ) set $top3_pvprank$, $top3_pvprank$ + .@name$[ .@tmp ] + ( .@tmp == getarraysize( .@name$ ) -1 ? "" : "?" );
  10. prt_in,63,60,4 script Refiner 85,{ function nZeny; function CHose; function nItem; function nRate; function sRater; //when use 'Protection Scroll' //-1,-2,-3... -->back to level 1,2,3...(MAX:10) if refine fail //1,2,3... --> reduce level 1,2,3.... if refine fail set @use2,0; set @rate,0; set @typr,0; set @menu2,0; set @use3,0; if(select("Refine","Close")==2) close; set @typr,select(""+getequipname(1),""+getequipname(2),""+getequipname(3),""+getequipname(4),""+getequipname(5),""+getequipname(6)); callsub OnCon; sRater(); if(select("^000088Refine now^000000","^FF3355Don't refine^000000")==2) close; callsub OnCon2; OnCon: if(!getequipisenableref(@typr)) { mes "I can't refine this !..."; close; } if(getequiprefinerycnt(@typr)>=10) { mes "It's not possible to refine this better than +10."; close; } if(Zeny<nZeny(@typr)) { mes "You don't have enough Zeny. Your Zeny is lower than "+nZeny(@typr)+"."; close; } if( @use3 ) { if( !countitem(@use3) ) { mes "You don't have any "+getitemname(@use3)+"."; close; } } else{ if( !countitem(set(@use2,nItem(@typr,select("^FF3355Use normal Ore!^000000","^000088Use purified Ore!^000000"))))) { mes "You don't have any "+getitemname(@use2)+"."; close; } set @use3,@use2; } return; OnCon2: if(.Scroll) { if( @menu2==2 ) { if(!countitem(.Scroll)) { mes "You don't have a Protection Scroll."; close; } }else{ if( select("^FF3355Go ahead without protection Scroll!^000000.","^000088Use Protection Scroll!^000000.")==2) { if(!countitem(.Scroll)) { mes "your don't have Protection Scroll."; close; } }else mes " "; } } set Zeny,Zeny-nZeny(@typr); if(.Scroll) { if( @menu==2 || @menu2==2 ) if( @rate >= 100 ) mes "100% of success, so automatically cancel using the protection scroll"; else delitem .Scroll,1; } delitem @use2,1; if(.Scroll) { if( @menu==2 || @menu2==2 ) { if(@rate<rand(1,100)) { if(.back<0) { getitem2 getequipid(@typr),1,1,-(.back<-10?-10:.back),0,getequipcardid(@typr,0),getequipcardid(@typr,1),getequipcardid(@typr,2),getequipcardid(@typr,3); failedrefitem @typr; if( getequiprefinerycnt(@typr)+1 >= 7 ) announce strcharinfo(0)+" tried to refine a +"+getequiprefinerycnt(@typr)+" "+getequipname(@typr)+" to +"+(getequiprefinerycnt(@typr)+1)+" and FAILED!",0; close; } else { set .@D,set(.@D,getequiprefinerycnt(@typr)-.back)<0?0:.@D; if(getequiprefinerycnt(@typr)<=10) { getitem2 getequipid(@typr),1,1,.@D,0,getequipcardid(@typr,0),getequipcardid(@typr,1),getequipcardid(@typr,2),getequipcardid(@typr,3); failedrefitem @typr; if( getequiprefinerycnt(@typr)+1 >= 7 ) announce strcharinfo(0)+" tried to refine a +"+getequiprefinerycnt(@typr)+" "+getequipname(@typr)+" to +"+(getequiprefinerycnt(@typr)+1)+" and FAILED!",0; close; } else { while(getequiprefinerycnt(@typr)!=.@D) { successrefitem @typr; if( getequiprefinerycnt(@typr) >= 7 ) announce strcharinfo(0)+" tried to refine a +"+( getequiprefinerycnt(@typr) -1 )+" "+getequipname(@typr)+" to +"+getequiprefinerycnt(@typr)+" and SUCCEED!",0; } } } } else { successrefitem @typr; if( getequiprefinerycnt(@typr) >= 7 ) announce strcharinfo(0)+" tried to refine a +"+( getequiprefinerycnt(@typr) -1 )+" "+getequipname(@typr)+" to +"+getequiprefinerycnt(@typr)+" and SUCCEED!",0; } CHose(@use2,@menu); } } if(@rate<rand(1,100)) { if( getequiprefinerycnt(@typr) >= 7 ) announce strcharinfo(0)+" tried to refine a +"+getequiprefinerycnt(@typr)+" "+getequipname(@typr)+" to +"+(getequiprefinerycnt(@typr)+1)+" and FAILED!",0; failedrefitem @typr; close; } else { successrefitem @typr; if( getequiprefinerycnt(@typr) >= 7 ) announce strcharinfo(0)+" tried to refine a +"+( getequiprefinerycnt(@typr) -1 )+" "+getequipname(@typr)+" to +"+getequiprefinerycnt(@typr)+" and SUCCEED!",0; } CHose(@use2,@menu); // functions // --------- function nZeny { switch(getequipweaponlv(getarg(0))) { case 1: return 500; case 2: return 2000; case 0: case 3: case 4: return 5000; default: return 0; } } function nItem { if(getarg(1)==1){ switch(getequipweaponlv(getarg(0))) { case 0: return 985; case 1: return 1010; case 2: return 1011; case 3: case 4: return 984; default: return 0; } } else { switch(getequipweaponlv(getarg(0))) { case 0: return 6241; case 1: case 2: case 3: case 4: return 6240; default: return 0; } } } function nRate { function aRate { return getarg(getarg(0,0)+1,0); } switch(getequipweaponlv(getarg(0))) { case 0: return aRate(getarg(1), 100,100,100,100,60, 40,40,20,20,10, 50,30,20,10,10, 10,10,10,10,10); case 1: return aRate(getarg(1), 100,100,100,100,100, 100,100,60,40,20, 70,70,50,50,30, 30,20,20,10,10); case 2: return aRate(getarg(1), 100,100,100,100,100, 100,60,40,20,20, 70,50,50,30,30, 20,20,10,10,10); case 3: return aRate(getarg(1), 100,100,100,100,100, 60,50,20,20,20, 50,50,30,30,20, 20,10,10,10,10); case 4: return aRate(getarg(1), 100,100,100,100,60, 40,40,20,20,10, 50,30,30,20,20, 10,10,10,10,10); } } function sRater { mes "[Successful rate]["+set(@rate,(nRate(@typr,getequiprefinerycnt(@typr))+(@use2>6000?10:0)))+"%]"; return; } function CHose { set @menu2,@menu2?@menu2:@menu; set @use3,@use3?@use3:@use2; next; sRater; if( select("[^000088continue^000000]","[^FF3355End^000000]") == 2 ) close; else callsub OnCon,1; callsub OnCon2; } OnInit: set .Scroll,7199;//'Protection Scroll' item id set .back,0; end; } nanakiwurtz made some error. It works also with eA
  11. Maybe because of this if you try with your gm set .gmnotop, 20; // GM not suppose to beat player's record ... For the error you can try with the latest integer's function find in this topic // ~~~~~ Please use this latest int__ function that support negative numbers ~~~~~ function script int__ { .@i = getstrlen( .@str$ = getarg(0) ) -3; .@is_negative = charat( .@str$, 0 ) == "-"; while ( .@i > .@is_negative ) { .@str$ = insertchar( .@str$, ",", .@i ); .@i -= 3; } return .@str$; }
  12. Another solution should be diff your client adding "ignore missing file" option and to use changebase.
  13. - script hjkl -1,{ OnPCLoadMapEvent: if( strcharinfo(3) == "<Your Event Map Name>" ) if( getmercinfo(0) ){ dispbottom "Mercenary are not allowed"; warp "prontera",155,181; } end; } <Your Event Map Name> mapflag loadevent You can try OnPCLoadMapEvent label
  14. conf/mapflag/nowarpto.txt Delete or comment the lines to enable use of @warp to the map
  15. OnNPCKillEvent: if( getmonsterinfo( killedrid,MOB_MVPEXP ) > 0 ) { announce strcharinfo(0)+" killed "+getmonsterinfo( killedrid,MOB_NAME ),bc_self,0xFF0000; getitem 7711,2; } end; Bahmut forgot the brackets. Theses lines don't work with eAthena servers.
  16. Search VIP system in this forum I'm sure you will find something like your request
  17. There was an error http://pastebin.com/raw.php?i=83UpTvTf
  18. Can you post your npc on pastebin *then post the link here http://pastebin.com/ I can't deal with your NPC in spoil
  19. /* CREATE TABLE IF NOT EXISTS `vip_silver` ( `account_id` int(11) unsigned NOT NULL default '0', `account_name` varchar(255) NOT NULL default 'NULL', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `status` varchar(255) NOT NULL DEFAULT 'NULL', PRIMARY KEY (`account_id`) ) ENGINE=MyISAM; ALTER table `login` add column account_type varchar(255) NOT NULL default 'NULL' after `birthdate`, add index (account_type); */ - script vipsystem8806azwan -1,{ set $VIPs_SilverAccLevel,1; // Account Level assigned for VIP Silver * set $VIPs_SilverExpRate,50; // VIP Silver Exp Boost in % ( 1 = 1% ) * set $VIPs_SilverItemRate,10; // VIP Silver Item Drop Boost in % ( 1 = 1% ) * set $VIPs_AdminGmLevel,99; // Define GM Level enabled to add, list and * // remove VIP entries. Any GM with access le- * // vel equal or higher than this will be able * // to manage VIP Accounts. * // ******************************************************************** // // Actions and checks when player logs in about his/her account type status. OnPCLoginEvent: // Obtain account data query_sql "SELECT `account_type` FROM login WHERE `account_id` = '"+ getcharid(3) +"'",.@accountType$; // First of all deACTIVEte all VIP benefits sc_end sc_expboost; sc_end sc_itemboost; // If account type is PLATINUM if( .@accountType$ != "SILVER" ) end; query_sql "SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_silver WHERE `account_id` = '"+ getcharid(3) +"'", .@expirationDate$; // Get expiration date* if ( gettimestr("%Y %m %d",21) >= .@expirationDate$ ) callsub terminateVip, "vip_silver", getcharid(3); else { sc_start sc_expboost,1000*60*60*24,$VIPs_PlatinumExpRate; sc_start sc_itemboost,1000*60*60*24,$VIPs_PlatinumItemRate; sc_start SC_CP_WEAPON,1000*60*60*24,$VIPs_PlatinumItemRate; sc_start SC_CP_SHIELD,1000*60*60*24,$VIPs_PlatinumItemRate; sc_start SC_CP_ARMOR,1000*60*60*24,$VIPs_PlatinumItemRate; sc_start SC_CP_HELM,1000*60*60*24,$VIPs_PlatinumItemRate; } message strcharinfo(0), "Expiration date: "+ .@expirationDate$ ; end; OnWhisperGlobal: if ( getgmlevel() < $VIPs_AdminGmLevel ) end; On_gm: set .@npcName$,"[VIP System v3.0]"; mes .@npcName$; mes "Welcome, "+ strcharinfo(0) +"!"; mes "What can I do for you today?"; next; if( select( "VIP Silver Menu", "Quit") -1 ) close; mes .@npcName$; mes "[VIP SILVER]"; switch( select( "Add/Extend Account", "Delete Account", "List Accounts", "Back" ) ) { case 1: // Add/Extend mes "Type the Account Name"; mes "you wish to add."; input .@accountName$; next; mes .@npcName$; mes "[VIP SILVER]"; mes "Type the number of days you"; mes "wish to add to the account's VIP"; mes "status."; next; mes .@npcName$; mes "[VIP SILVER]"; input .@silverDays; // Fetch account's ID using the name of the account previously typed. query_sql "SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"'", .@accountId; mes "Identifying account: "+ .@accountName$ +"."; sleep2 rand( 100,2000 ); // Looks like it's working on something if ( !.@accountId ) // Let's verify if the entered account exists or GM is just high... { mes "ERROR: Couldn't find account."; mes "Verify if you dind't make a typo."; close; } else { // Now lets check if the account is already 'vip_silver' query_sql "SELECT `account_id` FROM vip_silver WHERE `account_id` = '"+.@accountId+"'", .@silverAccountId; if ( .@silverAccountId == .@accountId ) // If the account is already VIP we will update instead of inserting a new entry. { mes "Account ID: "+ .@silverAccountId +"."; sleep2 rand( 100,850 ); query_sql "UPDATE vip_silver SET end_date = DATE_ADD(end_date, INTERVAL '"+ .@silverDays +"' DAY) WHERE account_id = '"+ .@silverAccountId +"'"; query_sql "UPDATE vip_silver SET `status` = 'ACTIVE' WHERE account_id = '"+ .@silverAccountId +"'"; query_sql "UPDATE login SET `account_type` = 'SILVER' WHERE account_id = '"+ .@silverAccountId +"'"; mes "Account "+ .@silverAccountId +" updated"; mes "successfuly!"; close; } else // If the account is not already a VIP Silver one, add a new entry. { mes "Account ID: "+ .@accountId +"."; sleep2 rand( 100,850 ); query_sql "INSERT INTO vip_silver (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+ .@accountId +",'"+ .@accountName$ +"','"+ gettimestr("%Y-%m-%d",21) +"','"+ gettimestr("%Y-%m-%d",21) +"','ACTIVE')"; sleep2 100; query_sql "UPDATE vip_silver SET end_date = DATE_ADD(start_date, INTERVAL "+ .@silverDays +" DAY) WHERE account_id = '"+.@accountId+"'"; query_sql "UPDATE `login` SET `group_id` = "+ $VIPs_SilverAccLevel +" WHERE `account_id` = '"+ .@accountId +"'"; query_sql "UPDATE login SET `account_type` = 'SILVER' WHERE account_id = '"+ .@accountId +"'"; mes "Account "+ .@accountId +" added"; mes "successfuly!"; close; } } close; case 2: // Delete query_sql "SELECT account_name FROM vip_silver LIMIT 127", .@silverList_1$; // query_sql can only display the first 128 lines of a table. This is so sad if ( !getarraysize( .@silverList_1$ ) ) { mes "There are currently no VIP"; mes "Silver accounts."; close; } else { mes "Select the account you wish "; mes "to remove from VIP system."; set .@j$, "1. "+ .@silverList_1$; for (set .@i,1; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1 ) set .@j$, .@j$ +":"+ ( .@i+1 ) +". "+ .@silverList_1$[.@i]; set .@j$, .@j$ +":Cancel"; next; mes .@npcName$; mes "[VIP SILVER]"; set .@menu, select(.@j$) -1; if ( .@menu == getarraysize(.@silverList_1$) ) { next; goto On_gm; } mes "Are you sure you want to remove the account "; mes .@silverList_1$[.@menu] +" ?"; if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; } query_sql "UPDATE `login` SET `group_id` = 0 WHERE `userid` = '"+.@silverList_1$[.@menu]+"'"; query_sql "DELETE FROM vip_silver WHERE account_name = '"+.@silverList_1$[.@menu]+"'"; query_sql "ALTER TABLE vip_silver AUTO_INCREMENT = 1"; query_sql "UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@silverList_1$[.@menu]+"'"; mes "VIP Silver account successfuly deleted!."; close; } close; case 3: // List mes "VIP Silver accounts list:"; // List up to 127 vip accounts query_sql "SELECT `account_name` FROM vip_silver LIMIT 127", .@silverList_1$; for (set .@i,0; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1) mes (.@i+1)+". "+.@silverList_1$[.@i]; // You may want to add a next; command and a new LIMIT 128,255 sentence, in case you need to store and display more than 128 VIP accounts. close; case 4: // Back goto On_gm; } terminateVip: // This function removes any VIP status from the specified account set .@dbTableName$, getarg(0); // Table name set .@accountId, getarg(1); // Account ID query_sql "UPDATE `login` SET `group_id` = 0 WHERE account_id = "+.@accountId+"'"; // Set account level to 0 query_sql "DELETE FROM "+ .@dbTableName$ +" WHERE account_id = '"+.@accountId+"'"; // Delete VIP table entry query_sql "ALTER TABLE "+ .@dbTableName$ +" AUTO_INCREMENT = 1"; // Tries to reset id count query_sql "UPDATE `login` SET `account_type` = 'NORMAL' WHERE `account_id` = '"+ .@accountId +"'"; // Set account type to "NORMAL" in 'login' table message strcharinfo(0), "Account return to normal."; end; } function script VIP_upgrade { if( select( "^777777~ Upgrade my account", "~ Not today^000000" ) -1 ) close; set .@acc_id, getcharid(3) ; query_sql "SELECT `userid`, `account_type` FROM `login` WHERE `account_id` = '"+ .@acc_id +"'", .@user_id$, .@acc_type$; // dispbottom .@user_id$+" "+.@acc_id; if ( .@acc_type$ == "SILVER" ) query_sql "UPDATE vip_silver SET end_date = DATE_ADD(end_date, INTERVAL "+ getarg(0) +" DAY), `status` = 'ACTIVE' WHERE account_id = '"+ .@acc_id +"'"; else { query_sql "INSERT INTO vip_silver (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+ .@acc_id +",'"+ escape_sql( .@user_id$ ) +"','"+gettimestr("%Y-%m-%d",21)+"', ( DATE_ADD('"+ gettimestr("%Y-%m-%d",21) +"', INTERVAL "+ getarg(0) +" DAY) ), 'ACTIVE') "; query_sql "UPDATE `login` SET `group_id` = "+ $VIPs_SilverAccLevel +" WHERE `account_id` = '"+ .@acc_id +"'"; } query_sql "SELECT DATE_FORMAT(`end_date`, '%Y %M %d') FROM vip_silver WHERE `account_id` = '"+ .@acc_id +"'", .@exp_Date$; query_sql "UPDATE login SET `account_type` = 'SILVER' WHERE account_id = '"+ .@acc_id +"'"; message strcharinfo(0), "Account updated. Expiration : "+ .@exp_Date$; delitem getarg(1), 1; if( .@acc_type$ != "SILVER" ) { message strcharinfo(0), "You must relog."; sleep2 2000; if( playerattached() ) atcommand "@kick "+ strcharinfo(0); } close; } Just one account (Silver account)But I don't get what you want in this part If he use the item, the item would be delete ? 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703 ); /* 7 days, item ID to delete */ },{},{} EDIT : Fix a typo
  20. mes "Begini beli, saya disuruh ama tante valkyrie menemui anda, agar bisa mendapatkan suatu barang untuk menambah kekuatan novice saya"; 2-3 errors like that, search them It must be one 1 line mes "Begini beli, saya disuruh ama tante valkyrie menemui anda, agar bisa mendapatkan suatu barang untuk menambah kekuatan novice saya";
  21. AnnieRuru made too many battleground (ahah) Which one ? Show the script
  22. if ( titu01 ) announce "xxxxxxxxxxxxxxxxxxxxxxxx",0; else if ( titu02 ) announce "yyyyyyyyyyyyyyyyyyyyyyyyyyyy",0; end;
  23. Intel® Core i3 CPU @2.53GHz (4 CPUs) 4096MB RAM
×
×
  • Create New...