-
Posts
1691 -
Joined
-
Last visited
-
Days Won
77
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by sader1992
-
Unjail without delete item when wrong name.
sader1992 replied to kronobr's question in Scripting Support
also the player must be online try this prontera,150,114,4 script God Connection 811,{ mes "You can bring to life a old friend if you have a God item gift."; if(select("use:close") == 2) end; input .@pname$; getunits(BL_PC,.@names$); if(inarray(.@names$,.@pname$) == -1){ mes "Player does not exist or offline"; mes "Player must be online!"; end; } if(countitem(6293) < 1){ mes "you don't have " + getitemname(6293); mes "you need 1 " + getitemname(6293); end; } if(atcommand("@unjail "+.@pname$)){ delitem 6293,1; mes "your friend is now released!"; end; } mes "something went wrong!"; mes "contact the GM!"; end; } -
it's not a good idea to delete items directly from the database also it's better if the server was offline when you edit the database
-
it's already in Emistry's reply put doevent "vip_group_main::OnSetVIP"; into the item script, whatever the item id is
-
same as Emistry's script , just add timer instead of the vip status - script vip_group_main -1,{ OnSetVIP: #TEMP_GROUP_V = gettimetick(2) + (7 * 24 * 60 * 60);//time in seconds OnPCLoginEvent: if (#TEMP_GROUP_V > gettimetick(2)) { atcommand "@adjgroupid 7"; .@second = #TEMP_GROUP_V - gettimetick(2); addtimer (.@second * 1000), strnpcinfo(3)+"::OnExpire"; dispbottom "Temp Group Expire in "+gettimestr("%Y-%m/%d %H:%M:%S",21,#TEMP_GROUP_V); } end; OnExpire: atcommand "@adjgroupid 0"; end; }
-
I didn't test it // credits to Annieruru - script Stylist -1,{ if(vip_status(VIP_STATUS_ACTIVE)) setarray .@max_style,getbattleflag( "max_hair_style" ),getbattleflag( "max_hair_color" ),getbattleflag( "max_cloth_color" ); else setarray .@max_style,29,80,180; cutin "hairstyle_"+Sex, 3; mes .npc_name$; mes "Eu posso mudar sua aparência."; if( .item_size ){ mes " "; mes "^777777[ TAXAS DO SERVIÇO ]^000000"; for( .@i = 0; .@i < .menu_size; .@i++ ) if( .npc_mode & ( 1 << .@i ) ) if( .item[.@i] ) mes "^0055FF"+.menu_name$[.@i]+" : ^777777"+ .item[.@i] +" x "+getitemname(7420)+"^000000"; else mes "^0055FF"+.menu_name$[.@i]+" : ^777777Free of Charge^000000"; } next; .@style = ( select( .npc_menu$ ) - 1 ); .@style_value = getlook( .look_type[.@style] ); deletearray .@blacklist; switch( .@style ){ Case 0: .@blacklist$ = ","+getd( ".blacklist_hairstyle_"+Sex+"$" )+","; break; Case 1: .@blacklist$ = ","+getd( ".blacklist_haircolor_"+Sex+"$" )+","; break; Case 2: .@blacklist$ = ","+getd( ".blacklist_clothe_"+Sex+"$" )+","; break; default: break; } .@style_number = .min_style[.@style]; do{ next; mes .npc_name$; mes "Current "+.menu_name$[.@style]+" : ^0055FF"+.@style_number+"th^000000"; mes " "; .@removed = 0; if( compare( .@blacklist$,","+.@style_number+"," ) ){ mes "^FF0000NOTE : This style REMOVED^000000"; .@removed = 1; setlook .look_type[.@style],.min_style[.@style]; }else{ setlook .look_type[.@style],.@style_number; if( .item[.@style] ){ mes "Cost : ^777777"+ .item[.@style] +" x "+getitemname(7420)+"^000000"; mes " "; } } .@next = .@style_number + 1; .@prev = .@style_number - 1; if( .@next > .@max_style[.@style] ) .@next = .min_style[.@style]; if( .@prev < .min_style[.@style] ) .@prev = .@max_style[.@style]; .@select = prompt( "Próximo - [ ^777777"+.@next+"th Style^000000 ]", "Voltar - [ ^777777"+.@prev+"th Style^000000 ]", "Pular para...", ( .@removed )?"":"^0055FFCerto, eu quero esse "+.menu_name$[.@style]+"^000000" ); switch( .@select ){ Case 1: .@style_number = .@next; break; Case 2: .@style_number = .@prev; break; Case 3: mes "Available Style : ^0055FF"+.min_style[.@style]+" ~ "+.@max_style[.@style]+"^000000."; input .@style_number,.min_style[.@style],.@max_style[.@style]; break; Case 4: if( .@style_value == .@style_number ){ mes "Swt..this is your original hairstyles."; } else if( .item[.@style] && countitem(7420) < .item[.@style] ){ mes "Você não tem suficientes "+getitemname(7420)+" para mudar a "+.menu_name$[.@style]+"."; }else{ mes "Aproveite seu ^0055FFNEW "+.menu_name$[.@style]+" !!"; if( .item[.@style] ) delitem 7420, .item[.@style]; .@style_value = .@style_number; } default: setlook .look_type[.@style],.@style_value; break; } }while( .@select != 4 && .@select != 255 ); close; OnInit: waitingroom "[Estilista]",0; // NPC name .npc_name$ = "[^0055FF ::: Estilista ::: ^000000]"; // NPC Mode ( Bitmask ) // 1 - Enable Hairstyle // 2 - Enable Hair Color // 4 - Enable Cloth Color .npc_mode = 7; // Menu Name setarray .menu_name$, "Estilo do Cabelo", "Cor do Cabelo", "Cor da Roupa"; // Payment (7420) setarray .item, 5, // Hairstyle 5, // Hair Color 5; // Cloth Color // Blacklisted Style for each style and each gender. // --- Female --- .blacklist_hairstyle_0$ = "2,4,6"; .blacklist_haircolor_0$ = "1,3,5"; .blacklist_cloth_0$ = "143,188,261"; // --- Male --- .blacklist_hairstyle_1$ = "3,5,7"; .blacklist_haircolor_1$ = "2,4,6"; .blacklist_cloth_1$ = "143,188,261"; // Dont edit setarray .min_style,getbattleflag( "min_hair_style" ),getbattleflag( "min_hair_color" ),getbattleflag( "min_cloth_color" ); .menu_size = getarraysize( .menu_name$ ); .item_size = getarraysize( .item ); setarray .look_type,LOOK_HAIR,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR; for( .npc_menu$ = ""; .@i < .menu_size; .@i++ ) .npc_menu$ = .npc_menu$ + ( ( .npc_mode & ( 1 << .@i ) )? .menu_name$[.@i]:"" ) +":"; end; } // NPC Lists prontera,175,202,4 duplicate(Stylist) Estilista#4 878
-
i think there is a data.grf in herc's forum that was optimized , search for it i think it's around 800m to 1.5gig however you have to add to it your edits/translation/etc
-
this is a hidden npc , related to moscovia's quest it's not a bug
-
this is tricky , you can't do that , this system add timer to the attached session , and on logout the session will be removed. if you want to do that I advises you to search for others systems that does not send the reward to the player as soon as they complete the hour , they must talk to the npc to get their reward.
-
no , when you copied the code , you didn't copy this! in the file you provided , write the missing } under the code
-
you don't need to fix those errors, if you give your players all the skills , you would have problems more than "client" errors some skills might break your server you can just ignore those errors while you are on the Admin account , if you don't want the errors , disable the "allskills" for the admin in your group.conf file ?
-
you are wearing the "drop" sprite the drop sprite is when the item dropped on the ground so you are not using the correct sprite file in the right folder
-
ingame type /roulette this will hide it , and if it's disabled in the server no one can use it.
-
prontera,0,0,0 script quest 444,{ mes "do you want to exchange the items:"; for(.@i=0;.@i<getarraysize(.requirements);.@i+=2){ mes "(" + .requirements[.@i +1] + ") " + getitemname(.requirements[.@i]); } mes "for a random reward ?"; if(select("yes:no") == 2) end; for(.@i=0;.@i<getarraysize(.requirements);.@i+=2){ if(countitem(.requirements[.@i]) < .requirements[.@i+1]){ mes "you dont have (" + .requirements[.@i +1] + ") " + getitemname(.requirements[.@i]); end; } } for(.@i=0;.@i<getarraysize(.requirements);.@i+=2){ delitem .requirements[.@i],.requirements[.@i +1]; } getitem .rewards[rand(getarraysize(.rewards))],1; announce "player: " + strcharinfo(0) + "Did the quest!!!!",bc_all; end; OnInit: setarray .rewards,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082; setarray .requirements,7020,10,1054,50,7035,15,1009,50,7442,50; end; }
-
something like this ? // OnClock<hour><minute>: donpcevent "<npc_name>::OnStart"; OnClock0000: OnClock0400: OnClock0800: OnClock1200: OnClock1600: OnClock2000: switch(rand(1,6)){ case 1: donpcevent "Event_1::OnStart"; end; case 2: donpcevent "Event_2::OnStart"; end; case 3: donpcevent "Event_3::OnStart"; end; case 4: donpcevent "Event_4::OnStart"; end; case 5: donpcevent "Event_5::OnStart"; end; case 6: donpcevent "Event_6::OnStart"; end; } or // OnClock<hour><minute>: donpcevent "<npc_name>::OnStart"; OnClock0000: OnClock0400: OnClock0800: OnClock1200: OnClock1600: OnClock2000: donpcevent "Event_" + rand(1,6) + "::OnStart"; end;
-
-
I didn't understand The player's class is his job id
-
what do you mean by job id ? you want the job id of the player who is killed ? you can do readparam() OnPCKillEvent: debugmes "" + readparam(Class,convertpcinfo(killedrid,CPC_CHAR)); end; readparam(Class,convertpcinfo(killedrid,CPC_CHAR)) will return the class of the killed if it's a player ofc , hint OnPCKillEvent
-
Utility: sader's Level Up Reward Job/Base
sader1992 replied to sader1992's topic in Utility Script Releases
freeloop(1); for(.@i=10;.@i<=19;.@i++){ LevelUpReward(1,.@i,0,0,11501,20,11502,10,12211,1); } -
Utility: sader's Level Up Reward Job/Base
sader1992 replied to sader1992's topic in Utility Script Releases
the script gives a reward only for the level you type , if you don't have a line with the level and the job , it wont add a reward to it if you want to add the reward for every level in the class after level 10 , you can do this freeloop(1); for(.@i=10;.@i<MAX_LEVEL;.@i++){ LevelUpReward(1,.@i,0,0,11501,20,11502,10,12211,1); } -
Utility: sader's Level Up Reward Job/Base
sader1992 replied to sader1992's topic in Utility Script Releases
what do you mean by skip ? the script work when you level up with a normal why , you have level up by killing monsters or quests also if you have +80% Weight , the reward would be in @LevelUpReward -
30017 Glasses_Slot_Ticket thin is my ctrl+v I as sending list of some items I created for a server to the owner ?
-
View File F_Randomizer randomize and split array into arrays this function can be used to randomize and split thr first array passed in to it to the other arrays Warning! the main array size must be divided by the count of the other arrays for example , you have .@main size 4, you should not send 3 arrays cuz 4/3 = 1 and 1 left , it will fail! the example npc from the photo is included in the file also here it is - script Randomizer_test -1,{ OnInit: debugmes "================================================"; setarray .@main,1,2,3,4,5,6,7,8,9,10,11,12; for(.@i=0;.@i<getarraysize(.@main);.@i++){ debugmes "" + .@main[.@i]; } debugmes "================================================"; debugmes "Split and randomize the elements of .@main into .@a .@b .@c .@d .@e .@f .@g arrays"; debugmes "================================================"; F_Randomizer(.@main,.@a,.@b,.@c,.@e,.@f,.@g); for(.@i=0;.@i<getarraysize(.@a);.@i++){ debugmes ".@a " + .@a[.@i]; } for(.@i=0;.@i<getarraysize(.@b);.@i++){ debugmes ".@b " + .@b[.@i]; } for(.@i=0;.@i<getarraysize(.@c);.@i++){ debugmes ".@c " + .@c[.@i]; } for(.@i=0;.@i<getarraysize(.@e);.@i++){ debugmes ".@e " + .@e[.@i]; } for(.@i=0;.@i<getarraysize(.@f);.@i++){ debugmes ".@f " + .@f[.@i]; } for(.@i=0;.@i<getarraysize(.@g);.@i++){ debugmes ".@g " + .@g[.@i]; } debugmes "=================================================================================="; end; } the best place to put the function in is at the end of rathena/npc/other/Global_Functions.txt file Submitter sader1992 Submitted 08/20/2020 Category Utilities Video Content Author sader1992
-
Version 1.0.0
62 downloads
this function can be used to randomize and split thr first array passed in to it to the other arrays Warning! the main array size must be divided by the count of the other arrays for example , you have .@main size 4, you should not send 3 arrays cuz 4/3 = 1 and 1 left , it will fail! the example npc from the photo is included in the file also here it is - script Randomizer_test -1,{ OnInit: debugmes "================================================"; setarray .@main,1,2,3,4,5,6,7,8,9,10,11,12; for(.@i=0;.@i<getarraysize(.@main);.@i++){ debugmes "" + .@main[.@i]; } debugmes "================================================"; debugmes "Split and randomize the elements of .@main into .@a .@b .@c .@d .@e .@f .@g arrays"; debugmes "================================================"; F_Randomizer(.@main,.@a,.@b,.@c,.@e,.@f,.@g); for(.@i=0;.@i<getarraysize(.@a);.@i++){ debugmes ".@a " + .@a[.@i]; } for(.@i=0;.@i<getarraysize(.@b);.@i++){ debugmes ".@b " + .@b[.@i]; } for(.@i=0;.@i<getarraysize(.@c);.@i++){ debugmes ".@c " + .@c[.@i]; } for(.@i=0;.@i<getarraysize(.@e);.@i++){ debugmes ".@e " + .@e[.@i]; } for(.@i=0;.@i<getarraysize(.@f);.@i++){ debugmes ".@f " + .@f[.@i]; } for(.@i=0;.@i<getarraysize(.@g);.@i++){ debugmes ".@g " + .@g[.@i]; } debugmes "=================================================================================="; end; } the best place to put the function in is at the end of rathena/npc/other/Global_Functions.txt fileFree -