Jump to content

Patskie

Community Contributors
  • Content Count

    366
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Patskie

  1. Suggestions? Remove this part : dispbottom "NOTE: Do NOT use capitals in the map name otherwise no Poring will spawn!"; and change this : set @map$,.@atcmd_parameters$[0]; to : set @map$,strtolower(.@atcmd_parameters$[0]); to ensure that the input will be in lower case form?
  2. You need to log out your character before you see the changes. I suggest you use @quesoph's proposal to use @clearcart command prontera,150,150,0 script Sample 100,{ atcommand "@clearcart"; end;}
  3. if ( BaseClass == Job_Merchant && checkcart() ) { // talk}
  4. @quesoph : that's a good point furthermore i just corrected the query_sql command issued by the topic starter.
  5. StatusPoint = 0;SkillPoint = 0; @kerbiii : No need to use getinventorylist and a loop to delete all items as the clearitem command will do the job. *clearitem;This command will destroy all items the invoking character has in theirinventory (including equipped items). It will not affect anything else,like storage or cart. for ( .@i = 1; .@i < 15; .@i++ ) { if ( getequipid(.@i) == -1 ) { query_sql "DELETE FROM `cart_inventory` WHERE `char_id` = '" +getcharid(0)+ "'"; clearitem; end; }} @Nameless2you : Syntax error. Should be : query_sql "DELETE FROM `cart_inventory` WHERE `char_id` = '"+getcharid(0); And besides sprite 150 on your script will result to an error. List of npc sprites : Link : http://nn.nachtwolke.com/dev/npclist/?qq=1
  6. This? SkillPoint = 0;StatusPoint = 0;
  7. Post error if any : prontera,150,150,0 script Sample 100,{ setarray .choices[0],7229,7228,7757; .size = getarraysize(.choices); for ( .@i = 0; .@i < .size; .@i++ ) { .@menu$ += getitemname(.choices[.@i]); .@menu$ += ":"; } .@selected = select(.@menu$) - 1; .npc$ = "["+strnpcinfo(1)+"]"; mes .npc$; mes "Exchange Rates : "; mes "1x " +getitemname(.choices[.@selected]); if ( !.@selected ) { setarray .req[0],15,7232; mes .req[0]+ "x " +getitemname(.req[1]); } else if ( .@selected == 1 ) { setarray .req[0],10,7231; mes .req[0]+ "x " +getitemname(.req[1]); } else { setarray .req[0],5,7233; mes .req[0]+ "x " +getitemname(.req[1]); } next; if (select("I have the following requirements:No, thanks") - 1) close; if ( countitem(.req[1]) < .req[0] ) { mes .npc$; mes "You lack requirements"; close; } delitem .req[1],.req[0]; getitem .choices[.@selected],1; mes .npc$; mes "Thanks for exchanging!"; close;}
  8. Change : sleep2 1000; to : sleep2 600000; If you want them to stay for 10 minutes
  9. prontera,150,150,0 script Sample 100,{ if ( countitem(7318) && getequipid(1) == 5137 ) { // allow them to go to the map warp "guild_vs3",0,0; end; }} - script Sample -1,{ OnPCLoadMapEvent: getmapxy(.@map$,.@x,.@y,0); if ( .@map$ == "guild_vs3" ) { if ( !countitem(7318) || getequipid(1) != 5137 ) { message strcharinfo(0),"You need to have alice doll and old pick"; sleep2 2000; warp "SavePoint",0,0; } } end;}guild_vs3 mapflag loadevent 1st script is for warper 2nd script is a checker
  10. if ( countitem(7318) && getequipid(1) == 5137 ) { // allow them to go to the map}
  11. Vast development on Hercules! Kudos!

  12. Patskie

    MVP Announcer

    @jaBote error on your mob id array This : setarray .mob_ids[0] = 1002,1031,1062,1090,1096,1120,1388,1582,1613,1836,1894; // Add more mob IDs here following this syntax (up to 128) Should be : setarray .mob_ids[0],1002,1031,1062,1090,1096,1120,1388,1582,1613,1836,1894; // Add more mob IDs here following this syntax (up to 128)
  13. I should instead use clearitem commands instead of loops and inventory list comand : *clearitem;This command will destroy all items the invoking character has in theirinventory (including equipped items). It will not affect anything else,like storage or cart. Back to business, If you want to delete cart items of an invoking player you need to run a sql query for that ( i think unless there is a command in hercules that deletes cart items ). You can add this to my script. Change : mes "Where you want to warp?";next;input .@map$;Zeny -= 1000000;warp .@map$,0,0;close; to : if ( checkcart() ) { query_sql "SELECT `nameid` FROM `cart_inventory` WHERE `char_id` = '" +getcharid(0)+ "'",.@a; if ( .@a ) end;}mes "Where you want to warp?";next;input .@map$;Zeny -= 1000000;warp .@map$,0,0;close; Be sure next time you are more specific when you are requesting scripts. Not tested!
  14. I try on my test server and it is working
  15. Patskie

    MVP Announcer

    Every hour spawn time : - script Sample -1,{ OnInit: setarray .Maps$[0],"prontera","payon","geffen"; .mob_id = 1002; end; OnMinute00: .random_index = rand(getarraysize(.Maps$)); monster .Maps$[.random_index],0,0,getmonsterinfo(.mob_id,0),.mob_id,1,strnpcinfo(1)+"::OnKill"; announce getmonsterinfo(.mob_id,0)+ " has been spawned on map " +.Maps$[.random_index],0; end; OnKill: announce getmonsterinfo(.mob_id,0)+ " has been killed and will spawn again at " +(gettime(3)+1)+ ":" +gettime(2)+ " " +(gettime(3)+1>11?"PM":"AM"),0; end;}
  16. Sample1 = first request Sample2 = second request Sample3 = third request Didn't test though ( /me lazy ). Just a side note i just copy the function of @KeyWorld here ( http://rathena.org/board/topic/66255-party-checker-job/?p=118481 ) so credits to him. If any error occur post it. prontera,150,150,0 script Sample1 100,{ getinventorylist; query_sql "SELECT `nameid` FROM `storage` WHERE `account_id` = '" +getcharid(3)+ "'", .@names; if ( ( BaseClass == Job_Novice ) && ( BaseLevel == 1 ) && ( Zeny > 1000000 ) && ( @inventorylist_count == 0 ) && ( !.@names ) ) { for ( .@i = 1; .@i < 15; .@i++ ) { if ( getequipid(.@i) == -1 ) { mes "Where you want to warp?"; next; input .@map$; Zeny -= 1000000; warp .@map$,0,0; close; } } }}prontera,153,153,0 script Sample2 100,{ for ( .@i = 1; .@i < 15; .@i++ ) { if ( getequipid(.@i) == -1 ) { getinventorylist; for ( set .@a, 0; .@a < @inventorylist_count; .@a++ ) { delitem @inventorylist_id[.@a], @inventorylist_amount[.@a]; } jobchange Job_Novice; BaseLevel = 1; JobLevel = 1; savepoint "prontera",150,150; end; } }}prontera,156,156,0 script Sample3 100,{ if ( getcharid(2) ) { if ( callfunc("party_has_duplicate_job") ) { mes "It seems that someone in the party has the same class than another member. Please check again the requirements..."; close; } getmapxy .@map$, .@x, .@y, 0; savepoint .@map$, .@x, .@y; end; }}function script party_has_duplicate_job{ set .@party_id, getarg( 0, getcharid(1) ); // Need to have a party. if ( .@party_id != 1 ) { return -1; } // Loading party members variables getpartymember getcharid(1),1; getpartymember getcharid(1),2; // Keep rid attached. set .@rid, playerattached(); // Check all members for ( set .@i,0; .@i<$@partymembercount; set .@i, .@i+1 ) { // Online user if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i]) ) { // Attach the member to access "Class" attachrid( $@partymemberaid[.@i] ); if ( compare( .@tmp_class$ + "|", "|" + Class + "|" ) ) { if ( .@rid ) attachrid(.@rid); else detachrid; return 1; } set .@tmp_class$, .@tmp_class$ + "|" + Class; } // Offline user (use sql) else { set .@sql$, .@sql$ + ( .@sql_i ? "OR " : "" ) "`char_id`='" + $@partymembercid[.@i] + "' "; set .@sql_i, .@sql_i + 1; } } // SQL for offline users if ( getstrlen(.@sql$) ) { // get class from offline members set .@count, query_sql("SELECT `class` FROM `char` WHERE " + .@sql$, .@class ); // Check the class. for ( set .@i, 0; .@i<.@count; set .@i, .@i+1 ) { if ( compare( .@tmp_class$ + "|", "|" + .@class[.@i] + "|" ) ) { if ( .@rid ) attachrid(.@rid); else detachrid; return 1; } set .@tmp_class$, .@tmp_class$ + "|" + .@class[.@i]; } } // Restore RID. if ( .@rid ) attachrid(.@rid); else detachrid; return 0;}
  17. Change : 12719,Poison_Oblivion,Oblivion Curse,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_OBLIVIONCURSE,300000,0; },{},{} to: 12719,Poison_Oblivion,Oblivion Curse,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_OBLIVIONCURSE,300000,0; },{},{}
  18. Put your .wav files on your wav folder and access it through the command i have posted awhile ago.
  19. The command on the post#2 will trigger the sound file (.mp3) on your wav folder. Some tip to accomplish this : 1. Make a script that will count how many kill or streak a certain player has 2. Once the streak reaches 3 or more. Trigger the command in post#2 and put the name of the .wav file that corresponds to the streak of the player ( if player has 3 streak then trigger the "triplekill.wav" )
  20. Try changing : prontera,150,150,0 script Dynamic Shop 100,{ callshop "dynamicshop",1; npcshopattach "dynamicshop"; to : prontera,150,150,0 script Dynamic Shop 100,{ setarray .Restricted$[0], "Job_Merchant_High","Job_Whitesmith","Job_Creator","Job_Merchant","Job_Blacksmith","Job_Alchemist","Job_Baby_Merchant","Job_Baby_Blacksmith","Job_Baby_Alchemist"; for ( set .@a, 0; .@a < getarraysize(.Restricted$); set .@a, .@a + 1 ) if ( BaseClass == .Restricted$[.@a] ) end; callshop "dynamicshop",1; npcshopattach "dynamicshop"; If you are using a renewal base server then you should add those 3rd job with discount skill
  21. A dynamic shop is like an npc vendor which means that i think there is no possibility to remove the discount on the prices if a certain player have a discount skill. Alternative solution you can do is to restrict all merchant related classes to buy on that dynamic shop?
  22. I don't find it good that you use an array and use it on a warp command. Practically and realistically would you want your character to warp to multiple maps like naruto doing kagebunshin and go to every single company on the shinobi war? I don't think so. JK What i meant to say is that if you will use single data you should use set instead of setarray :3
  23. Try changing your script to this : //===== Hercules Script ======================================//= PvP NPCs//===== By: ==================================================//= kobra_k88; L0ne_W0lf, Elias (og2)//===== Current Version: =====================================//= 2.3//===== Description: =========================================//= PvP NPCs that are found in the Inns in major cities.//= Includes Yoyo Mode, Nightmare Mode, and Event Mode.//===== Additional Comments: ================================= //= 2.0 Narrators/GateKeepers,etc. Translated from the Official 2011 [Elias]//= 2.1 Changed PVP Narrator and GateKeeper to Floating NPC [Elias]//= 2.2 Some cleaning. [Euphy]//= 2.3 Fixed grammatical errors. [Joseph]//============================================================//Fight square Reception Staff (Locations below)- script FSRS::fsr -1,{ set .@Map$,"pvp_y_8-2"; setarray .@Name$[0],"Izlude"; setarray .@Limit[0],128; set .@menu$, .@menu$+.@Name$[.@i]+" ["+getmapusers(.@Maps$)+" / "+.@Limit[.@i]+"]:"; set .@menu$, .@menu$+"Cancel."; set .@i, select(.@menu$)-1; if (.@i == 5) close; if (getmapusers(.@Maps$) >= .@Limit[.@i]) { mes "[PVP Fight Square Reception Staff]"; mes "This map is currently full."; } else warp .@Map$,0,0; close;OnInit: waitingroom "PVP TAGISAN NG LAKAS",0;end;}//Fight Square Reception Staffaldebaran,146,172,4 duplicate(fsr) PVP#f1 685
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.