-
Posts
1546 -
Joined
-
Last visited
-
Days Won
19
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Radian
-
I think its not a bug.. set .checklevel,255; // Players Must Be This Level or Higher In Order To Broadcast and for the zeny... set zeny, zeny - .costz; so far for me everything is working fine.. Well not sure, but when I first tried it, the npc was not working so I had to make those changes to make it work... Weird.. o.o Maybe your not using rAthena? I guess?
-
Here's a fixed one.. // // Author Goddameit // Version 2013/12/03 // Web__ http://goo.gl/igS14r // - script gd_pk_title -1,{ function SETTILE ; function GETTILE { switch(getarg(0,0)) { case 1: return "[MVP]"; default: return ""; } } OnPCLoginEvent: for(set .@i,0; .@i<.SP_RANK; set .@i,.@i+1 ) { if( getcharid(0) == .SP_RN_CID[.@i] ) { set .@N$,GETTILE(.@i+1); if( .@N$ != "" ) { atcommand "@fakename "+.@N$+""+strcharinfo(0); set @PK_TITL_BOOL,1; } break; } } end; OnPCKillEvent: if( killedrid == getcharid(3) || !isloggedin(killedrid) ) end; set @GDCID,getcharid(0); query_sql "SELECT `char_id` FROM `gd_pk_title` WHERE `char_id` = "+@GDCID+"",@GDTID; if( !@GDTID ) query_sql "INSERT `gd_pk_title` VALUES("+@GDCID+",1)"; else query_sql "UPDATE `gd_pk_title` SET `var` = `var`+1 WHERE `char_id` = "+@GDCID+""; set @GDTID,0; set @GDCID,0; end; OnInit: bindatcmd "delpktitle","gd_pk_title::OnGMFActive1",99,99; bindatcmd "refhpktile","gd_pk_title::OnGMFActive3",99,99; set .SP_RANK,2; OnGMFActive3: if( playerattached() ) { dispbottom "All date was refresh."; detachrid; } OnTimer60000: stopnpctimer; deletearray .TMP_SP_RN_CID[0],128; query_sql "SELECT `char_id` FROM `gd_pk_title` ORDER BY `var` DESC LIMIT "+.SP_RANK,.TMP_SP_RN_CID; SETTILE(0); deletearray .SP_RN_CID[0],128; deletearray .SP_RN_VAR[0],128; query_sql "SELECT `char_id`,`var` FROM `gd_pk_title` ORDER BY `var` DESC LIMIT "+.SP_RANK,.SP_RN_CID,.SP_RN_VAR; SETTILE(1); deletearray .TMP_SP_RN_CID[0],128; initnpctimer; end; OnGMFActive1: query_sql "TRUNCATE TABLE `gd_pk_title`"; dispbottom "All date was cleaned."; end; function SETTILE { for(set .@i,0; .@i<.SP_RANK; set .@i,.@i+1 ) { query_sql "SELECT `account_id` FROM `char` WHERE `char_id` = "+.SP_RN_CID[.@i]+"",.@SP_RN_AID; if( attachrid(.@SP_RN_AID) ) { if( .TMP_SP_RN_CID[.@i] == .SP_RN_CID[.@i] && @PK_TITL_BOOL ) { detachrid; continue; } if( getarg(0,0) == 1 ) { set .@N$,GETTILE(.@i+1); if( .@N$ != "" ) { atcommand "@fakename "+.@N$+""+strcharinfo(0); set @PK_TITL_BOOL,1; } }else if( @PK_TITL_BOOL ) { atcommand "@fakename"; set @PK_TITL_BOOL,0; } detachrid; } } return; } } prontera,150,180,4 script Rank 100,{ mes "[Rank]"; set .@SP_RANK,getvariableofnpc(.SP_RANK,"gd_pk_title"); for(set .@i,0; .@i<.@SP_RANK; set .@i,.@i+1 ) { set .@SP_RN_CID,getvariableofnpc(.SP_RN_CID[.@i],"gd_pk_title"); set .@SP_RN_VAR,getvariableofnpc(.SP_RN_VAR[.@i],"gd_pk_title"); if( !.@SP_RN_CID || !.@SP_RN_VAR ) break; query_sql "SELECT `name` FROM `char` WHERE `char_id` = "+.@SP_RN_CID+"",.@SP_RN_NAME$; mes "[#"+(.@i+1)+"] "+.@SP_RN_NAME$+" "+.@SP_RN_VAR+"p"; } close; }
-
I think its not a bug.. set .checklevel,255; // Players Must Be This Level or Higher In Order To Broadcast and for the zeny... set zeny, zeny - .costz; so far for me everything is working fine..
-
you should check it here http://kamishi.ragnawork.com/?page_id=2
-
Stolao's Script Collection [Update 2018-06-02_08:16]
Radian replied to Stolao's topic in Script Collections
oh so players can only train 1 of these? but why a player can only have 1 active at any given time based of the weapon currently equip in the right hand (left doesn't give double bonus) I didn't know that xD nice that will do too.. Will the Weapon Mastery Ladder possible? -
Stolao's Script Collection [Update 2018-06-02_08:16]
Radian replied to Stolao's topic in Script Collections
awesome, i love it too but for a low/mid rate server its very hard to balance I am planning to add this as a feature on a 255/200 rate. xD That's why I am hoping that It can be set as 1 per mastery.. oh by the way starting from level 0 ~ 100 all the effects will stay right? Yes all the effects are additives so they build up over time. 1 per mastery? Cool .. Yea 1 mastery per character.... maybe something on the OnInit: set .MasteryLimit? -
Stolao's Script Collection [Update 2018-06-02_08:16]
Radian replied to Stolao's topic in Script Collections
awesome, i love it too but for a low/mid rate server its very hard to balance I am planning to add this as a feature on a 255/200 rate. xD That's why I am hoping that It can be set as 1 per mastery.. oh by the way starting from level 0 ~ 100 all the effects will stay right? -
Stolao's Script Collection [Update 2018-06-02_08:16]
Radian replied to Stolao's topic in Script Collections
Is it possible to master only 1 type? like for example a assassin started on the Swifting mastery and then switch on Onslaught. And It's good to add a Ladder for the mastery -
Here //===== rAthena Script ======================================= //= Find the Mushroom //===== By: ================================================== //= Mysterious //===== Current Version: ===================================== //= 3.6a //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Find the Mushroom - random amount of Mushrooms spawns in random maps. //= Players need to find these mushrooms and kill them to gain prizes! //===== Additional Comments: ================================= //= 3.0 Fully Functional with Rewritten script. [Mysterious] //= 3.6a Slightly edited. [Euphy] //============================================================ prontera,142,228,6 script Find the Mushroom 1084,{ mes "[ Find The Mushroom ]"; if (!.Status) mes "There is no event at the moment!"; else { mes "There are "+.Spawn+" Mushrooms left in "+.Map$+"!"; mes "Find and kill the mushrooms to gain 1x Cash Points!"; } if (.Status || getgmlevel() < .GM) close; mes "Start the event?"; next; if(select("- No:- Yes") == 1) close; donpcevent strnpcinfo(0)+"::OnMinute10"; mes "[ Find The Mushroom ]"; mes "Event started!"; close; OnInit: set .Amount,10; // Reward cash points amount set .GM,60; // GM level required to access NPC setarray .Maps$[0],"izlude","geffen","morocc","prontera"; // Possible maps end; OnMinute10: // Start time (every hour) if (.Status) end; set .Status,1; set .Spawn,rand(1,10); // How many Mushrooms should spawn? set .Map$,.Maps$[rand(getarraysize(.Maps$))]; killmonster .Map$,"All"; monster .Map$,0,0,"Please don't kill me!",1084,.Spawn,strnpcinfo(0)+"::OnMobKilled"; announce "Find the Mushroom : Total of "+.Spawn+" Mushrooms have been spawned in "+.Map$+"!",0; sleep 2500; announce "Find the Mushroom : Every Mushroom you kill will give you 1x Cash Points!",0; end; OnMobKilled: set .Spawn, .Spawn - 1; set #CASHPOINTS, #CASHPOINTS + .Amount; if (.Spawn) announce "[ "+strcharinfo(0)+" ] has killed a Mushroom. There are now "+.Spawn+" Mushroom(s) left.",bc_map; else { announce "The Find the Mushroom Event has ended. All the Mushrooms have been killed.",0; set .Status,0; } end; }
-
How can i change the required zeny for buying classes into an ID# //===== eAthena Script ======================================= //= Class Mastery System //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.2 //===== Description: ========================================= //= An advanced job & build switcher. //== Classes either become available as they are mastered, //== or when purchased from an NPC. //============================================================ trinity,98,131,5 script Class Mastery::CMSys 459,{ set .@n$,"[Class Mastery]"; mes .@n$; mes "How may I assist you?"; next; switch(select(" ~ Purchase a Manual: ~ Purchase Classes: ~ ^777777Close^000000")) { case 1: mes .@n$; if (!.Mode[3]) { mes "It seems like we're out of stock"; mes "at the moment. My apologies."; close; } if (countitem(.ManualID)) { mes "We only allow one manual per character. Orders, orders..."; close; } mes "Manuals cost ^FF0000"+.Mode[3]+" Zeny^000000."; mes "Would you like one?"; next; switch(select(" ~ Sure!: ~ I'll think about it.")) { case 1: mes .@n$; if (Zeny < .Mode[3]) { mes "You don't appear to have"; mes "enough Zeny... These are very"; mes "valuable books, you know?"; close; } set Zeny, Zeny-.Mode[3]; getitem .ManualID,1; specialeffect2 441; mes "Enjoy!"; close; case 2: mes .@n$; mes "Okay. Take your time."; close; } case 2: mes .@n$; if (!.Mode[4]) { mes "No classes are available for"; mes "purchase. You'll have to earn"; mes "them manually, I suppose..."; close; } if (!countitem(.ManualID)) { mes "You'll need a manual first!"; close; } mes "Entries cost ^FF0000"+.Mode[4]+" Zeny^000000 each."; if (Zeny < .Mode[4]) { mes "Go earn some more!"; close; } set .@menu$,""; for(set .@i,1; .@i<getarraysize(.JobList); set .@i,.@i+1) { if (!(Class_Mastery & pow(2,.@i))) set .@menu$, .@menu$+" ~ "+jobname(.JobList[.@i]); set .@menu$, .@menu$+":"; } set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; next; set .@i, select(.@menu$); if (.@i == getarraysize(.JobList)) close; mes .@n$; mes "Are you sure you want to purchase an entry for the ^0055FF"+jobname(.JobList[.@i])+" ^000000class?"; next; if(select(" ~ I'm sure.: ~ No, wait...") == 2) { mes .@n$; mes "That's perfectly fine."; mes "Come back whenever you'd like."; close; } mes .@n$; set Zeny, Zeny-.Mode[4]; set Class_Mastery, Class_Mastery | pow(2,.@i); specialeffect2 441; mes "There you go, all done!"; message strcharinfo(0),jobname(.JobList[.@i])+" added to Class Manual."; close; case 3: close; } OnPCJobLvUpEvent: if (!.Mode[1]) end; if (@JNull$ == jobname(Class)) end; else set @JNull$,""; if (!@JIndex || .JobList[@JIndex] != Class) { set @JIndex,0; for(set .@i,1; .@i<=getarraysize(.JobList); set .@i,.@i+1) if (Class == .JobList[.@i]) { set @JIndex, .@i; break; } if (!@JIndex) { set @JNull$, jobname(Class); end; } } if ((JobLevel == .JLvlMax[@JIndex]) && !(Class_Mastery & pow(2,@JIndex))) { set Class_Mastery, Class_Mastery | pow(2,@JIndex); atcommand "@allskill"; message strcharinfo(0),jobname(Class)+" added to Class Manual."; for(set .@i,0; .@i<4; set .@i, .@i+1) { specialeffect2 441; sleep2 50; } } end; OnPCLoginEvent: if (.Mode[0] && !countitem(.ManualID)) getitem .ManualID,1; end; OnTimer50: stopnpctimer; setnpctimer 0; close; OnInit: // --------------------- Config --------------------- // Mode: // [0] Manual received automatically upon login? (1: yes / 0: no) // [1] Classes added automatically through leveling up? (1: yes / 0: no) // [2] Enable NPC to purchase manual/classes? (1: yes / 0: no) // [3] Price of manual, in Zeny (if NPC enabled; 0 to disable) // [4] Price per class, in Zeny (if NPC enabled; 0 to disable) setarray .Mode[0],0,1,1,0,0; // JobList: All the classes (ID) that are available. // JLvlMax: The max job level of classes in JobList. setarray .JobList[1], 4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021; setarray .JLvlMax[1], 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200 ; set .ManualID,3333; // Item ID of manual set .CastTime,5; // Seconds for class change set .Interrupt,1; // Class change is interruptable? (1: yes / 0: no) set .BuildCount,5; // Number of builds and Quick Change options (max 26) set .MaxLevel,255; // Maximum base level (to prevent stat overflow) // -------------------------------------------------- if (!.Mode[2]) hideonnpc "CMSys"; end; } function script Class_Mastery { function Class_Change; function Get_Menu; function Save_Build; function Load_Build; if (!Class_Mastery) { message strcharinfo(0),"The book does not respond."; end; } while(1) { message strcharinfo(0)," ~ Class Mastery System ~ "; switch(select(" > Quick Change: > Set Quick Change Options: > Switch Classes: > Manage Builds: > ^777777Close^000000")) { case 1: message strcharinfo(0),"Quick Change:"; set .@index, Get_Menu(1,getvariableofnpc(.BuildCount,"CMSys")); if (.@index == getvariableofnpc(.BuildCount,"CMSys")+1) break; if (!@QC1[.@index] && (!@QC2[.@index] || BaseLevel < getvariableofnpc(.MaxLevel,"CMSys"))) { message strcharinfo(0),"Class change failed."; close; } if (@QC1[.@index]) Class_Change(@QC1[.@index]); if (@QC2[.@index]) { if (BaseLevel < getvariableofnpc(.MaxLevel,"CMSys")) message strcharinfo(0),"Level requirement not met for build change."; else Load_Build(getd("Build_"+@QC2[.@index]+"$")); } close; case 2: setarray .@ar$[0],"*","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"; while(1) { message strcharinfo(0),"Set Quick Change Options:"; set .@index, Get_Menu(1,getvariableofnpc(.BuildCount,"CMSys")); if (.@index == getvariableofnpc(.BuildCount,"CMSys")+1) break; message strcharinfo(0),"Set Quick Change Options > Slot "+.@index+":"; switch(select(" > Edit job ("+((@QC1[.@index])?"^0055FF"+jobname(getvariableofnpc(.JobList[@QC1[.@index]],"CMSys")):"^777777none")+"^000000): > Edit build ("+((@QC2[.@index])?"^0055FF"+@QC2[.@index]:"^777777none")+"^000000): > ^777777Back^000000")) { case 1: message strcharinfo(0),"Set Quick Change Options > Slot "+.@index+" > Edit job:"; set .@i, Get_Menu(2,getarraysize(getvariableofnpc(.JobList,"CMSys"))); if (.@i == getarraysize(getvariableofnpc(.JobList,"CMSys"))) break; set @QC1[.@index], .@i; set QC1$,"_"; for(set .@i,1; .@i<=getvariableofnpc(.BuildCount,"CMSys"); set .@i,.@i+1) set QC1$, QC1$+.@ar$[@QC1[.@i]]; message strcharinfo(0),"Changes saved."; sleep2 250; break; case 2: message strcharinfo(0),"Set Quick Change Options > Slot "+.@index+" > Edit build:"; if (BaseLevel < getvariableofnpc(.MaxLevel,"CMSys")) { message strcharinfo(0),"You must be level "+getvariableofnpc(.MaxLevel,"CMSys")+" to use this."; sleep2 250; break; } set .@build, Get_Menu(3,getvariableofnpc(.BuildCount,"CMSys"),1); if (.@build == getvariableofnpc(.BuildCount,"CMSys")+2) break; if (getd("Build_"+.@build+"$")=="" && .@build != getvariableofnpc(.BuildCount,"CMSys")+1) { message strcharinfo(0),"No build info found."; sleep2 250; break; } else set @QC2[.@index], (((.@build == getvariableofnpc(.BuildCount,"CMSys")+1))?0:.@build); set QC2$,"_"; for(set .@i,1; .@i<=getvariableofnpc(.BuildCount,"CMSys"); set .@i,.@i+1) set QC2$, QC2$+.@ar$[@QC2[.@i]]; message strcharinfo(0),"Changes saved."; sleep2 250; break; case 3: break; } sleep2 250; } break; case 3: message strcharinfo(0),"Switch Classes:"; set .@i, Get_Menu(2,getarraysize(getvariableofnpc(.JobList,"CMSys"))); if (.@i == getarraysize(getvariableofnpc(.JobList,"CMSys"))) break; if (Class == getvariableofnpc(.JobList[.@i],"CMSys")) { message strcharinfo(0),"Class change failed."; close; } message strcharinfo(0),"Select '"+jobname(getvariableofnpc(.JobList[.@i],"CMSys"))+"'?"; if (select("Yes:No") == 2) break; Class_Change(.@i); close; case 4: if (BaseLevel < getvariableofnpc(.MaxLevel,"CMSys")) { message strcharinfo(0),"You must be level "+getvariableofnpc(.MaxLevel,"CMSys")+" to use this."; sleep2 250; break; } while(1) { message strcharinfo(0),"Build Manager:"; switch(select(" > Save Build...: > Load Build...: > Rename Build...: > ^777777Back^000000")) { case 1: message strcharinfo(0),"Build Manager > Save Build:"; set .@build, Get_Menu(3,getvariableofnpc(.BuildCount,"CMSys")); if (.@build == getvariableofnpc(.BuildCount,"CMSys")+1) break; if (getd("Build_"+.@build+"$")!="") { message strcharinfo(0),"Overwrite previous build #"+.@build+"?"; if(select("Save new build:Cancel")==2) break; } Save_Build(.@build); message strcharinfo(0),"Type a name for your build."; input getd("Build_"+.@build+"n$"); message strcharinfo(0),"Build #"+.@build+" ("+getd("Build_"+.@build+"n$")+") saved."; sleep2 250; break; case 2: message strcharinfo(0),"Build Manager > Load Build:"; set .@build, Get_Menu(3,getvariableofnpc(.BuildCount,"CMSys")); if (.@build == getvariableofnpc(.BuildCount,"CMSys")+1) break; if (getd("Build_"+.@build+"$")=="") { message strcharinfo(0),"No build info found."; sleep2 250; break; } Load_Build(getd("Build_"+.@build+"$")); message strcharinfo(0),"Build #"+.@build+" loaded."; sleep2 250; break; case 3: message strcharinfo(0),"Build Manager > Rename Build:"; set .@build, Get_Menu(3,getvariableofnpc(.BuildCount,"CMSys")); if (.@build == getvariableofnpc(.BuildCount,"CMSys")+1) break; if (getd("Build_"+.@build+"$")=="") { message strcharinfo(0),"No build info found."; sleep2 250; break; } message strcharinfo(0),"Type a new name for Build #"+.@build+" ("+getd("Build_"+.@build+"n$")+")."; input getd("Build_"+.@build+"n$"); message strcharinfo(0),"Build #"+.@build+" renamed."; sleep2 250; break; case 4: set .@j,1; break; } if (.@j) { set .@j,0; break; } sleep2 250; } break; case 5: close; } sleep2 250; } function Class_Change { specialeffect2 348; if (getvariableofnpc(.Interrupt,"CMSys")) { message strcharinfo(0),"Casting..."; initnpctimer "CMSys",1; progressbar "", getvariableofnpc(.CastTime,"CMSys"); } else for(set .@i,0; .@i<getvariableofnpc(.CastTime,"CMSys"); set .@i,.@i+1) { message strcharinfo(0),(getvariableofnpc(.CastTime,"CMSys")-.@i)+" seconds remaining..."; sleep2 1000; } jobchange getvariableofnpc(.JobList[getarg(0)],"CMSys"); set JobLevel, getvariableofnpc(.JLvlMax[getarg(0)],"CMSys"); atcommand "@allskill"; set SkillPoint,0; skilleffect 292,0; return; } function Get_Menu { set .@menu$,""; switch(getarg(0)) { case 1: deletearray @QC1[0],getarraysize(@QC1); deletearray @QC2[0],getarraysize(@QC2); setarray .@ar$[0],"*","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"; set .@s$,"_"; for(set .@i,1; .@i<=getstrlen(QC1$); set .@i,.@i+1) for(set .@j,0; .@j<27; set .@j,.@j+1) if (compare(QC1$,.@s$+.@ar$[.@j])) { set @QC1[.@i], .@j; set .@s$, .@s$+.@ar$[.@j]; break; } set .@s$,"_"; for(set .@i,1; .@i<=getstrlen(QC2$); set .@i,.@i+1) for(set .@j,0; .@j<27; set .@j,.@j+1) if (compare(QC2$,.@s$+.@ar$[.@j])) { set @QC2[.@i], .@j; set .@s$, .@s$+.@ar$[.@j]; break; } for(set .@i,1; .@i<=getarg(1); set .@i,.@i+1) set .@menu$, .@menu$+" > "+((@QC1[.@i])?"^0055FF"+jobname(getvariableofnpc(.JobList[@QC1[.@i]],"CMSys")):"^777777no job")+"^000000 / build "+((@QC2[.@i])?"^0055FF"+@QC2[.@i]:"^777777empty")+"^000000:"; set .@menu$, .@menu$+" > ^777777Back^000000"; break; case 2: for(set .@i,1; .@i<getarg(1); set .@i,.@i+1) { if (Class_Mastery & pow(2,.@i)) set .@menu$, .@menu$+" > "+jobname(getvariableofnpc(.JobList[.@i],"CMSys")); set .@menu$, .@menu$+":"; } set .@menu$, .@menu$+" > ^777777Back^000000"; break; case 3: for(set .@i,1; .@i<=getarg(1); set .@i,.@i+1) set .@menu$, .@menu$+" > Slot "+.@i+" ("+((getd("Build_"+.@i+"n$")=="")?"^777777empty":"^0055FF"+getd("Build_"+.@i+"n$"))+"^000000):"; if (getarg(2,0)) set .@menu$, .@menu$+" > No build:"; set .@menu$, .@menu$+" > ^777777Back^000000"; break; } return select(.@menu$); } function Save_Build { setarray .@ar$[0],"a","b","c","d","e","f","g"; set .@s$,""; for(set .@i,0; .@i<7; set .@i,.@i+1) set .@s$,.@s$+.@ar$[.@i]+((.@i==6)?StatusPoint:readparam(.@i+13))+"|"; setd "Build_"+getarg(0)+"$", .@s$; return; } function Load_Build { setarray .@num$[0],"0","1","2","3","4","5","6","7","8","9"; setarray .@ar$[0],"a","b","c","d","e","f","g"; ResetStatus; for(set .@j,13; .@j<20; set .@j,.@j+1) { set .@var$,""; set .@s$,.@ar$[.@j-13]; while(1) { for(set .@i,0; .@i<10; set .@i,.@i+1) { if (compare(getarg(0),.@s$+.@num$[.@i])) { set .@var$,.@var$+.@num$[.@i]; set .@s$,.@s$+.@num$[.@i]; break; } } if (compare(getarg(0),.@s$+"|")) break; } if (.@j==19) set StatusPoint, atoi(.@var$); else statusup2 .@j, atoi(.@var$)-1; } return; } }
-
You got a very nice Broadcaster System!
-
I've tried to read and look for those code but I can't think of a way to apply it.
-
trunk/conf/battle/item.conf // Can any player equip any item regardless of the gender restrictions // NOTE: Wedding Rings and Whips/Musical Instruments will check gender regardless of setting. ignore_items_gender: yes
-
There are two types of bonus for pet for example 1002,PORING,Poring,619,9001,10013,531,80,60,50,100,250,20,2000,150,1,0,350,400,800,{ pet_script },{ loyal_script }
-
Just go to your trunk/db/pre-[re]/item_noequip.txt just follow the format // Forbidden Items Database // Defines restrictions on equipment, items, and cards in map types and zones. // // Structure of Database: // ItemID,Flag // // Legend for 'Flag' field (bitmask): // 1 - restricted in normal maps // 2 - restricted in PVP // 4 - restricted in GVG // 8 - restricted in Battlegrounds // Restricted zones - configured by 'restricted <number>' mapflag // 32 - restricted in zone 1 // 64 - restricted in zone 2 // 128 - restricted in zone 3 // 256 - restricted in zone 4 // 512 - restricted in zone 5 // 1024 - restricted in zone 6 // 2048 - restricted in zone 7 // // Examples: // 1201,1 // Knife can't be worn on normal maps // 608,4 // Yggdrasil Seed can't be consumed in both GvG and WoE Castles // 4174,6 // Deviling Card has no effect in every PVP or GVG map, and during WoE // 501,32 // Red Potion can't be consumed on maps marked as 'restricted zone 1' // 519,322 // Milk can't be consumed in PVP and maps marked as 'restricted zone 2' or 'restricted zone 4' (256+64+2)
-
how to make certain player unable to deal/trade/drop
Radian replied to donkeyg's question in Scripting Support
Im not sure how to disable on specific account only, but if you want to disable it to a specific group level just go In your trunk/conf/groups.conf and look for this. (or you can go for @Alayne suggestion) permissions: { /* without this basic permissions regular players could not trade or party */ can_trade: true <= change this to false. can_party: true command_enable: true -
It's either you apply it manually or like this https://rathena.org/board/topic/84289-how-to-apply-patch-by-use-diff-on-linux/
-
Stalker NPC ( gone after clicking )
Radian replied to awesomazingxed's question in Scripting Support
Its because of this. movenpc strnpcinfo(0),108,89; <= Remove this -
@maintown commands (@warp phtownall 199,184 )
Radian replied to awesomazingxed's question in Script Requests
Try this you can do the same thing for others just change the " maintown " - script maintown -1,{ OnInit: bindatcmd "maintown",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: atcommand "@warp phtownall 199 184"; end; } -
Armor Enchanter ( 5 Skulls per Enchant )
Radian replied to awesomazingxed's question in Script Requests
I didn't test this and I'm not sure but you can give it a try //===== rAthena Script ======================================= //= Armor Enchanter //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== //= 1.3a //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= [Official Conversion] //= Add a +1, +2, or +3 random stat to a specified armor. //===== Additional Comments: ================================= //= 1.0 First version. //= 1.1 Corrected typo (Sit -> Suit) (bugreport:4586) //= 1.2 Optimized. [Euphy] //= 1.3 Fixed some typos and optimized a little more. [Daegaladh] //= 1.3a Added 'disable_items' command. [Euphy] //============================================================ turbo_room,73,79,5 script Armor Enchanter 73,{ disable_items; mes "[Apprentice Craftsman]"; if (Zeny >= 1) { mes "I've been studying ways to enhance an armor to maximize its capability."; next; mes "[Apprentice Craftsman]"; mes "Enchanting is an awesome skill that infuses a mysterious status powers into the armor's hidden socket."; next; mes "[Apprentice Craftsman]"; mes "However, you have to keep in mind that if there are two armors of the same kind in your possession, the Enchantment will be applied in the order they are placed in your inventory."; next; mes "[Apprentice Craftsman]"; mes "In that case, the Enchantment may be applied to an item which you didn't mean to Enchant. So just bring ^5555ffONE Armor^000000 you want enchanted to be safe..."; next; mes "[Apprentice Craftsman]"; mes "I'm not responsible for what would happen if you have more than one of the same kind in your inventory."; next; switch(select("Non Slotted Armor.:Slotted Armor.:High Grade Armor.:Maybe next time.")) { case 1: setarray .@Items[0],2307,2309,2314,2316,2321,2325,2327,2328,2330,2332,2334,2335,2341,2344,2346,2348,2350,2337,2386,2394,2395,2396; set .@j,50; break; case 2: setarray .@Items[0],2311,2318,2319,2320,2308,2310,2315,2317,2322,2324,2326,2331,2333,2336,2342,2345,2347,2349,2351; set .@j,55; set .@k,1; break; case 3: setarray .@Items[0],2364,2365,2391,2374,2375,2376,2377,2378,2379,2380,2381,2382,2387,2388,2389,2390; set .@j,60; break; case 4: mes "[Apprentice Craftsman]"; mes "Please come back when you have any interest in enchanting your armor."; close; } set .@menu$,""; for(set .@i,0; .@i<getarraysize(.@Items); set .@i,.@i+1) set .@menu$, .@menu$+getitemname(.@Items[.@i])+((.@k)?" [1]":"")+":"; callsub S_EnchantArmor, .@Items[select(.@menu$)-1], .@j; end; } mes "I am in charge of Enchanting Armors. Simply put, I've been studying ways to power-up armor."; next; mes "[Apprentice Craftsman]"; mes "If by any chance, you would want to enchant your armor, bring me 1 zeny and the armor you want to enchant and you are all set to go."; close; S_EnchantArmor: set .@itemid,getarg(0); set .@failrate,getarg(1); mes "[Apprentice Craftsman]"; if (countitem(.@itemid) == 1) { mes "Socket enchant will cost you 1 zeny. And there will be a random option enchanted. Of course, there is a chance of breaking your armor."; next; mes "[Apprentice Craftsman]"; mes "First and most importantly."; mes "^ff5555Existing Refine Level of the Armor"; mes "and Cards will be GONE.^000000"; mes "Do you still want to try an Enchant?"; next; if(select("Hmm... Let me think it over.:Go ahead.") == 1) { mes "[Apprentice Craftsman]"; mes "Well, I can't blame you. Safety first, eh?"; mes "Now you have a nice day."; close; } mes "[Apprentice Craftsman]"; mes "Quite of an adventurer huh? Well, shall we?"; close2; specialeffect2 EF_MAPPILLAR; if (countitem(7420) < 5) { mes "[Apprentice Craftsman]"; mes "Sorry, but you don't have enough zeny."; close; } progressbar "ffff00",7; set .@skullid, 7420; delitem .@skullid,5; delitem .@itemid,1; switch (rand(1,.@failrate)) { case 1: set .@addpart,4702;break; case 2: set .@addpart,4712;break; case 3: set .@addpart,4722;break; case 4: set .@addpart,4732;break; case 5: set .@addpart,4742;break; case 6: set .@addpart,4752;break; case 7: case 8: set .@addpart,4701;break; case 9: case 10: set .@addpart,4711;break; case 11: case 12: set .@addpart,4721;break; case 13: case 14: set .@addpart,4731;break; case 15: case 16: set .@addpart,4741;break; case 17: case 18: set .@addpart,4751;break; case 19: case 20: case 21: set .@addpart,4700;break; case 22: case 23: case 24: set .@addpart,4710;break; case 25: case 26: case 27: set .@addpart,4720;break; case 28: case 29: case 30: set .@addpart,4730;break; case 31: case 32: case 33: set .@addpart,4740;break; case 34: case 35: case 36: set .@addpart,4750;break; default: specialeffect2 EF_PHARMACY_FAIL; mes "[Apprentice Craftsman]"; mes "Well that's too bad."; mes "The requested equipment has failed to enchant."; close; } getitem2 .@itemid, 1, 1, 0, 0, 0, 0, 0, .@addpart; } else { mes "Hmm? There's nothing to be enchanted!"; mes "Please come back with just ONE equipment to be enchanted."; close; } } -
I think it should be like this if your applying it on your sql REPLACE INTO `item_db` VALUES (14610,'Ticket_Vip','Ticket Vip #15',0,10000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'callfunc \"vip15\";',NULL,NULL); REPLACE INTO `item_db` VALUES (14611,'Ticket_Vip','Ticket Vip #30',0,10000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'callfunc \"vip30\";',NULL,NULL);
-
I think they based it on kRO. http://ratemyserver.net/index.php?iname=Whisper+Egg&page=item_db&quick=1&isearch=Search
-
Guide : on how to create your own offline server. Basic Software Need : to start your own server good for localhost only. MySQL Workbench ( http://dev.mysql.com/downloads/workbench/ ) MS Visual C++ ( http://www.visualstudio.com/en-us/downloads#d-2010-express ) TortoiseGIT or MSysGIT ( https://code.google.com/p/tortoisegit/ ) & ( http://msysgit.github.io/ ) Data & Other Files Need : It means, the files that you need for Client & Server side. Latest & Updated Data ( https://github.com/ROClientSide/Translation ) Credits to all who help Translating the files. RO Client Library ( http://roclients.info/ ) where you can get all the undiff clients and full installer. NEMO ( https://github.com/RadianFord/NEMO ) a software that can diff your undiff clients. Credits for Neo Open Setup ( http://hercules.ws/board/topic/652-ro-open-setup-v2113389-last-updated-20141027/ ) Credits for Ai4rei Trunk ( https://github.com/rathena/rathena ) of rAthena. Part 1 : Guide Now make sure you installed the 3 Basic Software . Now open your Mysql Workbench create 2 database for the main & logs (ex: database1 = main & database2 = logs ). when you are done let's move to the part 2 of the Guide. Part 2 : Guide Now create a new folder in your desktop name it whatever you like. right click it. ( I use TortoiseGIT but it's up to you which of those two software you will use but for this guide I use Tortoise ) refer to the images below.. As you can see the image you can see => " SVN Checkout " it should show up if you install Tortoise. now after you click the SVN Checkout. refer the images below... Now you need to go to ( https://github.com/rathena/rathena ) copy the link and paste it on the " URL of Repository: " and then press OK. It looks like this when its working.. All you need to do is wait untill its done... Part 3 : Guide When transferring is finished. open your trunk/conf/char_athena.conf // Athena Character configuration file. // Note: "Comments" are all text on the right side of a double slash "//" // Whatever text is commented will not be parsed by the servers, and serves // only as information/reference. // Server Communication username and password. userid: s1 <= Replace this to your desired username. passwd: p1 <= same thing change it to your desired password // Server name, use alternative character such as ASCII 160 for spaces. // NOTE: Do not use spaces or any of these characters which are not allowed in // Windows filenames \/:*?"<>| // ... or else guild emblems won't work client-side! server_name: rAthena // Wisp name for server: used to send wisp from server to players (between 4 to 23 characters) wisp_server_name: Server // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. //login_ip: 127.0.0.1 <= On this part remove the " // " after login_ip: // The character server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Login Server Port login_port: 6900 // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. //char_ip: 127.0.0.1 <= Same thing with the login_ip remove the " // " after char_ip: // Character Server Port char_port: 6121 Now open trunk/conf/map_athena.conf //-------------------------------------------------------------- //rAthena Map-Server Configuration File //-------------------------------------------------------------- // Note: "Comments" are all text on the right side of a double slash "//" // Whatever text is commented will not be parsed by the servers, and serves // only as information/reference. //-------------------------------------------------------------- // Configuration Info //-------------------------------------------------------------- // Interserver communication passwords, set in account.txt (or equiv.) userid: s1 <= This must be the same username with the char_athena.conf passwd: p1 <= Also this, It must be the same with char_athena.conf (this is important) // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. //char_ip: 127.0.0.1 <= Now for this remove the " // " after char_ip: // The map server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Character Server Port char_port: 6121 // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. //map_ip: 127.0.0.1 <= Also this one, make sure that the " // " after map_ip: must be remove. // Map Server Port map_port: 5121 Since this guide if good for localhost only. using 127.0.0.1 is fine... Now open trunk/conf/inter_athena.conf this part is also important make sure all the details are correct.. // MySQL Login server login_server_ip: 127.0.0.1 login_server_port: 3306 login_server_id: ragnarok <= Change this to the username you use for Mysql Workbench (default username: root) but make sure you use the correct one. login_server_pw: ragnarok <= Change this to the password of the username of your Mysql Workbench. login_server_db: ragnarok <= This one is for the database1(main.sql) hmm? (you remember on the Part 1 Guide. You create 2 database for main & logs. login_codepage: login_case_sensitive: no ipban_db_ip: 127.0.0.1 ipban_db_port: 3306 ipban_db_id: ragnarok <= Same thing username of the Mysql Workbench. ipban_db_pw: ragnarok <= Password of Mysql Workbench same thing. ipban_db_db: ragnarok <= same thing. change this to the database1 (main.sql) ipban_codepage: // MySQL Character server char_server_ip: 127.0.0.1 char_server_port: 3306 char_server_id: ragnarok <= Same thing username of the Mysql Workbench. char_server_pw: ragnarok <= Password of Mysql Workbench same thing. char_server_db: ragnarok <= same thing. change this to the database1 (main.sql) // MySQL Map Server map_server_ip: 127.0.0.1 map_server_port: 3306 map_server_id: ragnarok <= Same thing username of the Mysql Workbench. map_server_pw: ragnarok <= Password of Mysql Workbench same thing. map_server_db: ragnarok <= same thing. change this to the database1 (main.sql) // MySQL Log Database log_db_ip: 127.0.0.1 log_db_port: 3306 log_db_id: ragnarok <= Same thing username of the Mysql Workbench. log_db_pw: ragnarok <= Password of Mysql Workbench same thing. log_db_db: ragnarok <= Now for this one its for (logs.sql) soo put the database2 name here. log_codepage: log_login_db: loginlog Now you are done setting.. This one is not yet finish but the rest can be answered on the other topics.