Content Moderator
  • Content Count

  • Avg. Content Per Day

  • Joined

  • Last visited

  • Days Won


sader1992 last won the day on August 12

sader1992 had the most liked content!

Community Reputation

420 Excellent

About sader1992

  • Rank
  • Birthday 11/16/1991

Profile Information

  • Gender
  • Location
  • Server
    DEV On : ArenaRO , DigitalRO
  • Github
  • Interests
    rAthena , C# , C++ , PHP , MMO , Anime , Microsoft , Science , Cooking , Math

Contact Methods

Recent Profile Visitors

6,167 profile views
  1. this src mode only allow the player to redeem the reward , it does not auto redeem for the player , the player must redeem the reward hem self the script you use will allow the first account with the gepard id given to redeem the reward , and if he didn't redeem it with that account , he can't redeem it with another account , he only can redeem it with that account (the first account he login with in the day) i will soon create a function for gepard as planed , if you don't want to wait for god knows how long , the key is this , if the player did redeem the reward , the variable #AttendanceDate would be the date of that day
  2. conf/import/char_conf.txt login_ip: char_ip: vps_ip conf/import/map_conf.txt char_ip: map_ip: vps_ip
  3. try this i used rAthena refiner as a base , as you didn't provide any npc prontera,0,0,0 script refiner 444,{ [email protected]_name$ = "refiner"; setarray [email protected][1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; for([email protected] = 1; [email protected]<getarraysize([email protected]); [email protected]) { if(getequipisequiped([email protected][[email protected]])) { [email protected]$ = [email protected]$ + F_getpositionname([email protected][[email protected]]) + "-[" + getequipname([email protected][[email protected]]) + "]"; [email protected] = 1; } [email protected]$ = [email protected]$ + ":"; } if ([email protected] == 0) { mes "["+ [email protected]_name$ +"]"; mes "I don't think I can refine any items you have..."; close; } [email protected] = [email protected][select([email protected]$)]; if(!getequipisequiped([email protected])) { //custom check mes "["+ [email protected]_name$ +"]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion ET_FRET; close; } //Check if the item is refinable... if(!getequipisenableref([email protected])) { mes "["+ [email protected]_name$ +"]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt([email protected]) >= 10) { mes "["+ [email protected]_name$ +"]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } [email protected] = getequipid([email protected]); // save id of the item [email protected] = getequiprefinerycnt([email protected]); //save refinery count setarray [email protected][0], getequipcardid([email protected],0), getequipcardid([email protected],1), getequipcardid([email protected],2), getequipcardid([email protected],3); [email protected] = getequiprefinecost([email protected], REFINE_COST_NORMAL, REFINE_ZENY_COST); [email protected] = getequiprefinecost([email protected], REFINE_COST_NORMAL, REFINE_MATERIAL_ID); //editing here [email protected] = getequiprefinerycnt([email protected]) +1; if(inarray(.allowed_items,[email protected]) == -1){ mes "sorry, i can't refine " + getitemname([email protected]); end; } switch (getequipweaponlv([email protected])) { case 1: [email protected] = 7; break; case 2: [email protected] = 6; break; case 3: [email protected] = 5; break; case 4: default: [email protected] = 4; break; } mes "["+ [email protected]_name$ +"]"; mes "To refine this I need"; mes [email protected] + " ^003366"+getitemname([email protected])+"^000000 and"; mes "a service fee of " + [email protected] + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "["+ [email protected]_name$ +"]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery([email protected]) < 100) { mes "["+ [email protected]_name$ +"]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch([email protected]) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+ [email protected]_name$ +"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "["+ [email protected]_name$ +"]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem([email protected]) < [email protected]) || (Zeny < [email protected])) { mes "["+ [email protected]_name$ +"]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname([email protected])+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } Zeny = [email protected]; delitem [email protected],[email protected]; // anti-hack if (callfunc("F_IsEquipIDHack", [email protected], [email protected]) || callfunc("F_IsEquipCardHack", [email protected], [email protected][0], [email protected][1], [email protected][2], [email protected][3]) || callfunc("F_IsEquipRefineHack", [email protected], [email protected])) { mes "["+ [email protected]_name$ +"]"; emotion ET_FRET; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery([email protected]) <= rand(100)) { failedrefitem [email protected]; mes "["+ [email protected]_name$ +"]"; emotion (!rand(5))?ET_MONEY:ET_HUK; [email protected] = rand(1,3); if ([email protected] == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if([email protected] == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem [email protected]; emotion ET_SMILE; [email protected] = rand(1,3); if ([email protected] == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if([email protected] == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; OnInit: serattay .allowed_items,1201, 1202, 1203; end; }
  4. in my opinion , "ragnarok hosting services" is a scam (OFC IT'S ONLY MY OPINION) why don't you try to buy a normal vps with the system/ip/protection/specs you want and install rAthena in it using ? it would take some work , but again (in my opinion) if you can't setup a server from 0 , don't open one , or look for a partner that can do it in the future you will find bugs/problems in the server , you can't fix it if you don't know the basic just use google and search for a vps with low ping , low price ,1gig ram or more if you want , 10gig storage or more if you want , 1core or more if you want i would suggest Debian 9 2gig ram 2core
  5. i think you already got the answer in discord, however this is the answer if someone wanted it getpartymember getcharid(1),0,[email protected]$[0]; getpartymember getcharid(1),1,[email protected][0]; getpartymember getcharid(1),2,[email protected][0]; for([email protected]=0;[email protected]<getarraysize([email protected]$[0]);[email protected]++){ if(isloggedin([email protected][[email protected]],[email protected][[email protected]])){ if([email protected] = checkvending([email protected]$[[email protected]])){ if ([email protected]&1) mes [email protected]$[[email protected]] + " is currently vending!"; if ([email protected]&4) mes [email protected]$[[email protected]] + " has a buying store!"; if ([email protected]&2) mes [email protected]$[[email protected]] + " is autotrading!"; [email protected]_vinding = true; } } } if([email protected]_vinding) end;
  6. if it work , than it's safe maybe they did change the functions in the iteminfo in 2019 clients , i didn't look up the info about 2019 yet
  7. as the topic owner removed his post and the files are not available anymore i am sorry to close this topic i think he did more than enough to resolve any issue happened with the files to the users , so if you still have some issue and you don't want to search for another guide , i suggest looking inside the topic and you will find a solve for it if you are looking for a new guide , you can check rAthena wiki if you had any issue , i suggest you try to use rAthena Search feel free to post any issue you have in one of our support sections
  8. and how you get that in pve maps ?
  9. ClassNum = 1882
  10. try if(compare(strcharinfo(3),"@")){ //inside a map that contain '@' in it's name, normally that's mean instance map!. }
  11. - script GlobalMvP::GlobalMvP -1,{ OnNPCKillEvent: if(inarray(getd(".MVP_" + strcharinfo(3)),killedrid) != -1){ query_sql "SELECT `name` FROM `mvp` WHERE `char_id`="+getcharid(0)+"",[email protected]$; if ( [email protected]$ == "" ) { query_sql "INSERT INTO `mvp` (`char_id`,`name`,`kills`,`points`) VALUES (" + getcharid(0) + ",'" + escape_sql(strcharinfo(0)) + "',1,1)"; end; } query_sql "UPDATE `mvp` SET `kills` = (`kills` + 1), `points` = (`points` +1) WHERE `char_id`=" + getcharid(0); } end; function AddMvP { for([email protected]=1;[email protected]<getargcount();[email protected]++){ setd ".MVP_" + getarg(0) + "[" + [email protected] + "]",getarg([email protected]); } return; } OnInit: query_sql("CREATE TABLE IF NOT EXISTS `mvp` (`char_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '0', `kills` int(11) unsigned NOT NULL DEFAULT '0',`points` int(11) unsigned NOT NULL DEFAULT '0', `level` int(11) unsigned NOT NULL DEFAULT '0', KEY `char_id` (`char_id`), KEY `kills` (`kills`), KEY `points` (`level`), KEY `level` (`level`)) ENGINE=MyISAM"); freeloop(1); //AddMvP(<"MAP_NAME">,<MVP ID>{,<MVP ID>}); //you can add as much as you want mvp ids AddMvP("prontera",1002); AddMvP("payon",1002,1003,1004); AddMvP("geffen",1546); freeloop(0); end; }
  12. btw , this will only work on monsters without label something like Lord of Death or biolab 3(with their normal spawn), you need to edit the main script to work , you need to find the npc that have it's label , add your codes to that label too
  13. - script GlobalMvP::GlobalMvP -1,{ OnNPCKillEvent: if(inarray(.AllowedMaps$,strcharinfo(3)) != -1 && inarray(.MVP_IDS,killedrid) != -1){ query_sql "SELECT `name` FROM `mvp` WHERE `char_id`="+getcharid(0)+"",[email protected]$; if ( [email protected]$ == "" ) { query_sql "INSERT INTO `mvp` (`char_id`,`name`,`kills`,`points`) VALUES (" + getcharid(0) + ",'" + escape_sql(strcharinfo(0)) + "',1,1)"; end; } query_sql "UPDATE `mvp` SET `kills` = (`kills` + 1), `points` = (`points` +1) WHERE `char_id`=" + getcharid(0); } end; OnInit: query_sql("CREATE TABLE IF NOT EXISTS `mvp` (`char_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '0', `kills` int(11) unsigned NOT NULL DEFAULT '0',`points` int(11) unsigned NOT NULL DEFAULT '0', `level` int(11) unsigned NOT NULL DEFAULT '0', KEY `char_id` (`char_id`), KEY `kills` (`kills`), KEY `points` (`level`), KEY `level` (`level`)) ENGINE=MyISAM"); setarray .AllowedMaps$,"prontera","map_name";//put the names of the allowed maps. setarray .MVP_IDS, 1511,// Amon Ra 1647,// B_EREMES 1785,// Atroce 1630,// BACSOJIN_ 1039,// Baphomet 1874,// BEELZEBUB_ 1272,// Dark Lord 1719,// Detale 1046,// Doppelganger 1389,// Dracula 1112,// Drake 1115,// Eddga 1957,// Entweihen 1418,// Evil Snake Lord 1871,// FALLINGBISHOP 1252,// Garm 1768,// GLOOMUNDERNIGHT 1086,// Golden Bug 1802,// G_MAGALETA 1649,// High Priest Magaleta 1651,// High Wizard Katryne 1832,// Ifrit 1492,// Incantation Samurai 1734,// Kiel_ 1251,// Stormy Knight 1779,// Ktullanux 1688,// Lady Tanee 1640,// G_SEYREN 1646,// Lord Knight Seyren 1373,// Lord of Death 1147,// Maya 1059,// Mistress 1150,// Moonlight flower 1956,// Naght Seiger 1087,// Orc Hero 1190,// Orc Lord 1038,// Osiris 1157,// Pharaoh 1159,// Phreeoni 1502,// Poripori 1623,// RSX 1650,// Sniper Cecil// Sniper Shecil 1583,// Tao Gunka 1708,// Thanatos 1312,// Turtle General 1765,// Valkyrie 1751,// Valkyrie rangdris 1685,// Vesper 1648,// Whitesmith Howard 1917,// Satan Morroc 1658,// Egnigem Cenia 1885,// Zmey Gorynych 1990,// Hard Rock Mamooth 1991;// Tendrillion end; } Also i don't see why the use of sql i think there is already ready-to-use mvp rank scripts if you use the search , it would be better than building your own.
  14. create an achievement , and add the title to it as a reward use "achievementcomplete(<achievement id>{,<char id>})" now the player have the title