-
Content Count
596 -
Joined
-
Last visited
-
Days Won
25
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Kuya Jeo
-
CRITICAL DAMAGE MAKES DROP ITEM 2x ~ 3x. BUG or What?
Kuya Jeo replied to MikZ's question in Source Requests
@@MikZ can you make it clear? or make a scenario so that we can understand it -
try to use this turbo_room,100,130,4 script Soul Link NPC 865,{switch ( BaseJob ) { case Job_Alchemist: set .@spirit, 445; break; case Job_Monk: set .@spirit, 447; break; case Job_Star_Gladiator: set .@spirit, 448; break; case Job_Sage: set .@spirit, 449; break; case Job_Crusader: set .@spirit, 450; break; case Job_SuperNovice: set .@spirit, 451; break; case Job_Knight: set .@spirit, 452; break; case Job_Wizard: set .@spirit, 453; break; case Job_Priest: set .@spirit, 454; break; case Job_Bard: case Job_Dancer: set .@spirit, 455; break; case Job_Rogue: set .@spirit, 456; break; case Job_Assassin: set .@spirit, 457; break; case Job_Blacksmith: set .@spirit, 458; break; case Job_Hunter: set .@spirit, 460; break; case Job_Soul_Linker: set .@spirit, 461; break; default: if ( Upper == 1 && BaseLevel < 70 ) set .@spirit, 494; break;} if ( .@spirit ) { sc_start4 SC_SOULLINK, 360000, 5, .@spirit,0,0; skilleffect .@spirit, 5;}}
-
@@bnymark oh my bad.. Folders _tmpEmblem AI AI_backup AI_sakray BGM data savedata ScreenShot System All the .DLL Files All .INF Files GRFS Custom Grfs rdata.grf data.grf Other Files npkcrypt.sys npkcusb.sys npkcrypt.vxd tipOfTheDay.txt supdate.txt questID2display.txt GuildTip.txt vcredist_x86 Mp3dec.asi DATA.INI
-
@@bnymark you have a clean kRO files right? to make a lite installer the files you need are : 1. customgrfs 2. Client.exe ( your game client ) 3. Patcher 4. data.ini ( if you are using it ) 5. setup.exe 6. System Folder 7. Data Folder ( if read data first ) 8. BGM Folder ( if you have custom BGM ) 9. dinput.dll
-
Master thanks for the idea,, But im planning on having just up to level 100 renewal server,, the idea is like just to be able to have max all stats upto 100 also,, but still just level 100,, but dont want to have a quest for it,, actually,, that script is just like a basis,, but i'll be setting limitation,, like for exampl killing a number of porings can only support you upto 20 luk,, then from 20~40 luk there'll be a different set of monsters to help you improve your stats,, uhm,, increasing poringkill several times in 1kill,, i dont know if i got that correctly,, you mean like 1 poring kill triggers all the 13 "if"s?? but there's a set paramater each right?? like this: // kill 10 monsters gets 1 status point- script PoringKill FAKE_NPC,{OnNPCKillEvent: if ( readparam(bLuk) < 5 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 10 ) { statusup2 bLuk, 1; poringkill = 0; } } end;} would only work if LUK is below 5,, about the unoptimized,, yes,, i thinks so too,, its actually hard to replicate this for other monsters as its too time consuming,, so how about this?? // kill 10 monsters gets 1 status point- script PoringKill FAKE_NPC,{OnNPCKillEvent: if ( killedrid == PORING ) if ( readparam(bLuk) < 5 ) { poringkill++; if ( poringkill == 10 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 5 && readparam(bLuk) <= 10 ) { poringkill++; if ( poringkill == 15 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 10 && readparam(bLuk) <= 15 ) { poringkill++; if ( poringkill == 25 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 15 && readparam(bLuk) <= 20 ){ poringkill++; if ( poringkill == 40 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 20 && readparam(bLuk) <= 25 ) { poringkill++; if ( poringkill == 100 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 25 && readparam(bLuk) <= 30 ) { poringkill++; if ( poringkill == 150 ) { statusup2 bLuk, 1; } } if ( readparam(bLuk) >= 30 && readparam(bLuk) <= 40 ) { poringkill++; if ( poringkill == 200 ) { statusup2 bLuk, 1; } } poringkill = 0; end;} i dont know if a place the poringkill at the right place,, and if the (killerid = PORING) is also at the right place,, can someone verify this out please,, thanks,, added: ouch I also quoted out my own reply,, I dont know what is the purpose of this, i just fix the Boolean, anyway like @@AnnieRuru said, it much better if you put it on the quest but the same process by killing monster or an item exchange to stats... something like that
-
@@xlaws27 you can experiment any combination unless it will passed
-
IN NEED of HELP translation (Soul Blaker's Script)
Kuya Jeo replied to REKT's question in Script Support
@@Vlync use google translate -
@@AnnieRuru i think you misunderstood the topic
-
test this you forgot to put a Boolean on each if statement Test this script and check the amount of poring, don't use @reloadscript if you edit the script or else script won't load, restart your server to load the script. // kill 10 monsters gets 1 status point- script PoringKill FAKE_NPC,{OnNPCKillEvent: if ( readparam(bLuk) < 5 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 5 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 5 && readparam(bLuk) <= 10 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 10 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 10 && readparam(bLuk) <= 15 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 15 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 15 && readparam(bLuk) <= 20 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 20 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 20 && readparam(bLuk) <= 25 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 25 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 30 && readparam(bLuk) <= 40 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 40 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 40 && readparam(bLuk) <= 50 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 50 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 50 && readparam(bLuk) <= 60 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 60 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 60 && readparam(bLuk) <= 70 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 70 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 70 && readparam(bLuk) <= 80 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 80 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 80 && readparam(bLuk) <= 90 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 90 ) { statusup2 bLuk, 1; poringkill = 0; } } if ( readparam(bLuk) >= 90 && readparam(bLuk) <= 99 ) if ( killedrid == PORING ) { poringkill++; if ( poringkill == 100 ) { statusup2 bLuk, 1; poringkill = 0; } } end;}
-
@@humble maybe the easiest way to do it is.. Since there is only 1 ITEM for Top 1 Player then if the top 1 has been down to top 2 then this is my idea. 1. If the former Top 1 Player is OFFLINE ( automatically remove item if he will login in game by using OnPCLoginEvent of course their will be a sql query for that ), then the new TOP 1 player will have the item 2. If the Top 1 Player is ONLINE, npc script will sort out the ladder and remove the item on his inventory, since item cannot be put in STORAGE/CART/MAIL/GSTORAGE
-
@@cumbe11 goto src/map/storage.c find this and remove those line of codes if (!itemdb_canguildstore(item_data, pc_get_group_level(sd)) || item_data->expire_time) { //Check if item is storable. [Skotlex] clif->message (sd->fd, msg_sd(sd,264)); return 1; } after editing recompile your server Note : Item that has a group level can be store in guild storage (like convex mirror)
-
Thank you its working! kindly mark as solve so that other members can easily search for this kind of topic they looking for.
-
@@iwarez and @@mrlongshen themes for rAthena are not compatible with Hercules, some of the dbase tables are not the same. if you want to convert the theme from rAthena to Hercules or vise versa kindly send us a message in our facebook page, its free https://facebook.com/plugandplayPH
-
@@satoshi214 if the fluxcp theme isn't working, then download the default fluxCP and install it on your webhost after installing it get the theme you want and rename ng folder name "default" to anything you want. then upload the theme you want and name it "default". Kindly pm me in our facebook, we have free installation of fluxcp EDIT : to fix this just clear the history of your browser https://facebook.com/plugandplayPH
-
@@JoyRo Test this prontera,100,100,3 script Random Item 123,{ mes "[ Random Item Giver ]"; mes "Get Random Item Here"; next; mes "[ Random Item Giver ]"; mes "Here you go"; setarray .@item_id,505,506,507,508,509,510; set .@item_count,1; getitem .@item_id[rand(getarraysize(.@item_id))], .@item_count,1; close;} EDIT : you can just put that script when giving the reward or item
-
Oh what's happening now! i need to get back on the track! hello everyone im back
-
@@crossxxx try to use this one // ----------------------------------- //- shop Cash_Shop -1,512:100arza,180,98,1 script Cash Items#cashnpc 812,{function ShopSettings;function ValidateCost;function CurrencyInfo;function ClearData;function ValueConvert;function ErrorNotice;mes "Each Shop from the Menu may purchase using ^FF0000Different Currency^000000.";mes "^00FF00____________________________^000000";mes "So,Which shop you would like to look at it";next;// Menu Selectionselect("Purchase Now?");ClearData();ShopSettings( @menu );npcshopitem "Cash_Shop",512,100;npcshopdelitem "Cash_Shop",512;for(set .@i,0; .@i < getarraysize( @ItemLists ); set .@i,.@i+1) npcshopadditem "Cash_Shop",@ItemLists[.@i],@ItemCost[.@i];mes "Okay...wait awhile";mes "^00FF00____________________________^000000";CurrencyInfo( @Currency$ );mes "^00FF00____________________________^000000";callshop "Cash_Shop",1;npcshopattach "Cash_Shop";end;function ShopSettings { switch( getarg(0) ){ case 1: // Currency [ Item ID / Variable Name ] set @Currency$,"#CASHPOINTS"; // Item ID Lists setarray @ItemLists[0],505,506,507,508,509,510; // Item Price setarray @ItemCost[0],1,2,3,4,5,6; break; // Case 2,3,4.....etc... default: ErrorNotice( "Invalid Menu Selection for Menu "+@menu+"." ); close; } if( @Currency$ == "" ) ErrorNotice( "Invalid Currency Setting in Menu "+@menu+" ." );if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) ) ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "+@menu+" ." );return;}function ErrorNotice { mes "^FF0000ERROR^000000 - "+getarg(0); mes "^00FF00____________________________^000000"; mes "Inform this Message to ^0000FFGame Staffs^000000 immediately !"; close;}function CurrencyInfo { if( getitemname( atoi( getarg(0) ) ) != "null" ){ mes "Item Currency : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000"; mes "Available Amount : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000"; }else if( getitemname( atoi( getarg(0) ) ) == "null" ){ mes "Variable Currency : ^FF0000"+getarg(0)+"^000000"; mes "Available Amount : ^0000FF"+ValueConvert( getd( getarg(0) ) )+"^000000"; }return;}function ValidateCost { if( getitemname( atoi( getarg(0) ) ) != "null" ){ if( countitem( atoi( getarg(0) ) ) < getarg(1) ) return 1; }else{ if( getd( getarg(0) ) < getarg(1) ) return 1; }return 0;}function ClearData { set @Currency$,""; set @TotalCost,0; deletearray @bought_nameid[0],getarraysize( @bought_nameid ); deletearray @bought_quantity[0],getarraysize( @bought_quantity ); deletearray @ItemLists[0],getarraysize( @ItemLists ); deletearray @ItemCost[0],getarraysize( @ItemCost );return;}function ValueConvert { set .@num, atoi(""+getarg(0)); if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0); set .@l, getstrlen(""+.@num); for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) { set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$; if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$; } return .@num$;}OnBuyItem: ShopSettings( @menu ); for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1) for(set @j,0; @j < getarraysize( @ItemLists ); set @j,@j+1) if( @ItemLists[@j] == @bought_nameid[@i] ) set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] ); mes "^FF0000 BILLING LIST^000000"; mes "^00FF00____________________________^000000"; for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 ) mes "^FF0000"+@bought_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000"; mes "^00FF00____________________________^000000"; if( getitemname( atoi( @Currency$ ) ) != "null" ) mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000"; else if( getitemname( atoi( @Currency$ ) ) == "null" ){ mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" "+@Currency$+"^000000"; } mes "^00FF00____________________________^000000"; if( ValidateCost( @Currency$,@TotalCost ) ){ if( getitemname( atoi( @Currency$ ) ) != "null" ) mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000"; else{ mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"+@Currency$+"^000000"; } }else{ if( select( "^0000FFPurchase^000000:Cancel" ) == 1 ){ if( getitemname( atoi( @Currency$ ) ) != "null" ) delitem atoi( @Currency$ ),@TotalCost; else{ set getd( @Currency$ ),getd( @Currency$ ) - @TotalCost; } for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1) getitem @bought_nameid[@i],@bought_quantity[@i]; message strcharinfo(0),"Purchased "+getarraysize( @bought_nameid )+" Items."; mes "Thank you for shopping."; } }ClearData();close;} just change the ITEM NUMBER and the COST of the items
-
Is there any way to Automatically Select Server?
Kuya Jeo replied to nuna's question in General Server Support
maybe diffing your client is the best solution but ask @@Neo or @@Yommy for this matter -
@@snowflake1963 got no problem, im using the latest svn
-
for the body sprite : dataspriteÀΰ£Á·¸öÅë for the head sprite : dataspriteÀΰ£Á·¸Ó¸®Åë
-
@@jaiko23 i think those weapon sprites are for lord knight, and check the .act file
-
@@Angelmelody thank you for the correction, i thought it was included in the pc.h, didn't notice that