-
Posts
1137 -
Joined
-
Last visited
-
Days Won
30
Community Answers
-
Cyro's post in How to reset guild skills? was marked as the answer
you can change them in guild_skill table in ur db
-
Cyro's post in Add custom box was marked as the answer
since you are confused, use this method
501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "CustomBox"; },{},{} function script CustomBox { setarray .BoxItems[0],501,502,503; set .Random, getarraysize( .BoxItems ); getitem .BoxItems[ rand( .Random ) ], 1; announce "["+strcharinfo(0)+"] has just obtained a ["+getitemname(.BoxItems[ .Random ])+"] from a Custom Box.",0; end; } change your item id, and give it any box sprite in your iteminfo
and change items that box gives here
.BoxItems[0],501,502,503; ,
-
Cyro's post in Unknown Cause of Map-Crash was marked as the answer
In case you are using dedicated server
Take a look at this topic
https://rathena.org/board/topic/53447-how-to-enable-crashcore-dumps-in-your-server-linux/
-
Cyro's post in GRF file saved inside client folder was marked as the answer
The best way to do it is to make a separate directory called data and put all of your files in their using the same folder construction/format as your regular RO data folder would use. That will be your input directory, which contains any modifications you are making to your client files. If your server is using a GRF rather than a data folder, make sure you have the RO-GRF option selected below the output and type in the name of your GRF, if you want to patch it to any other folder select FILE instead RO_GRF, and when you click generate it will popup which folder the file to be patched and you can chose it
if this seems complicated for you, use GRF editor to make thor files which will be easier
-
Cyro's post in Add Shop to Euphy's Hunting Mission was marked as the answer
prontera,155,181,5 pointshop Mission Shop 757,MACHINE_POINT,909:-1,607:-1 prontera,155,181,5 pointshop Mission Shop2 757,MACHINE_POINT,909:-1,607:-1 prontera,155,181,5 pointshop Mission Shop3 757,MACHINE_POINT,909:-1,607:-1 you can use point shop npc's too, and your callshop modification isnt working? any errors?
-
Cyro's post in DB Error - Data of field 'option_val0' was truncated was marked as the answer
https://github.com/rathena/rathena/commit/19d620575a549897ac6c8478cd1082564d251712/?diff=unified
https://github.com/rathena/rathena/commit/dc8471d
fixed here
-
Cyro's post in Card View drawing was marked as the answer
*cutin "<filename>",<position>; This command will display a picture, usually an NPC illustration, also called cutin, for the currently attached client. The position parameter determines the placement of the illustration and takes following values: 0 - bottom left corner 1 - bottom middle 2 - bottom right corner 3 - middle of screen in a movable window with an empty title bar 4 - middle of screen without the window header, but still movable The picture is read from data\texture\유저인터페이스\illust, from both the GRF archive and data folder, and is required to be a bitmap. The file extension .bmp can be omitted. Magenta color (#ff00ff) is considered transparent. There is no limit placed on the size of the illustrations by the client, although loading of large pictures (about 700x700 and larger) causes the client to freeze shortly (lag). Typically the size is about 320x480. New illustrations can be added by just putting the new file into the location above. The client is able to display only one cutin at the same time and each new one will cause the old one to disappear. To delete the currently displayed illustration without displaying a new one, an empty file name and position 255 must be used. // Displays the Comodo Kafra illustration in lower right corner. cutin "kafra_07",2; // Typical way to end a script, which displayed an illustration during a // dialog with a player. mes "See you."; close2; cutin "",255; end;
-
Cyro's post in Setup Ragnarok Episode was marked as the answer
you have to manually enter all dbs and npcs and dont use what doesnt match up to the episode you want to use
Here is link to check what exactly in that particular version you want to set
http://rode.doddlercon.com/db/guide/ep111.html
-
Cyro's post in R> MVP CARD MONITORING was marked as the answer
prontera,155,187,5 script cardcheck 100,{ mes "blah"; next; select "search by input player name/ID", "search by card ID"; if ( @menu == 1 ) { switch ( select ( "Char Name", "Account ID", "Char ID" ) ) { case 1: input .@id$; if ( isloggedin( getcharid( 3, .@id$ ) ) ) { .@cid = getcharid( 0, .@id$ ); .@aid = getcharid( 3, .@id$ ); .@name$ = rid2name( getcharid( 3, .@id$ ) ); } else { if ( !query_sql( "select char_id, account_id, name from `char` where name = '"+ escape_sql( .@id$ ) +"'", .@cid, .@aid, .@name$ ) ) { mes "There is no such Character Name exist"; close; } } break; case 2: input .@id; if ( !( .@nb = query_sql( "select char_id, name, char_num, account_id from `char` where account_id = "+ .@id +" order by char_num asc", .@cid, .@name$, .@gid, .@aid ) ) ) { mes "There is no such Account ID"; close; } for ( .@i = 0; .@i < .@nb; .@i++ ) { mes ( .@gid[.@i] +1 )+". "+ .@cid[.@i] +" "+ .@name$[.@i]; .@menu$ = .@menu$ +( .@gid[.@i] +1 )+". "+ .@cid[.@i]; } next; .@s = select( .@menu$ ) -1; .@cid = .@cid[.@s]; .@aid = .@aid[.@s]; .@name$ = .@name$[.@s]; break; case 3: input .@id; if ( !query_sql( "select char_id, account_id, name from `char` where char_id = "+ .@id, .@cid, .@aid, .@name$ ) ) { mes "There is no such Character ID exist"; close; } } mes "The player ^0000FF"+ .@name$ +"^000000 is "+( ( isloggedin(.@aid) )?"^00FF00Online":"^FF0000Offline" )+"^000000"; if ( isloggedin( .@aid, .@cid ) ) { .@origin = getcharid(3); attachrid .@aid; getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( compare( .mvpcard_compare$, "#"+ @inventorylist_id[.@i] +"#" ) || compare( .mvpcard_compare$, "#"+ @inventorylist_card1[.@i] +"#" ) || compare( .mvpcard_compare$, "#"+ @inventorylist_card2[.@i] +"#" ) || compare( .mvpcard_compare$, "#"+ @inventorylist_card3[.@i] +"#" ) || compare( .mvpcard_compare$, "#"+ @inventorylist_card4[.@i] +"#" ) ) { .@itemid[.@c] = @inventorylist_id[.@i]; .@amount[.@c] = @inventorylist_amount[.@i]; .@identify[.@c] = @inventorylist_identify[.@i]; .@refine[.@c] = @inventorylist_refine[.@i]; .@broken[.@c] = @inventorylist_attribute[.@i]; .@card1[.@c] = @inventorylist_card1[.@i]; .@card2[.@c] = @inventorylist_card2[.@i]; .@card3[.@c] = @inventorylist_card3[.@i]; .@card4[.@c] = @inventorylist_card4[.@i]; attachrid .@origin; mes @itemname2_info$[0] + callfunc( "getitemname2", .@itemid[.@c], .@identify[.@c], .@refine[.@c], .@broken[.@c], .@card1[.@c], .@card2[.@c], .@card3[.@c], .@card4[.@c] ) +":^000000 "+ .@amount[.@c] +" ea."; attachrid .@aid; .@c++; } } attachrid .@origin; } else { .@nb = query_sql( "select nameid, amount, identify, refine, attribute, card0, card1, card2, card3 from inventory where "+ .query_sql$ +" and char_id = "+ .@cid, .@itemid, .@amount, .@identify, .@refine, .@broken, .@card0, .@card1, .@card2, .@card3 ); for ( .@i = 0; .@i < .@nb; .@i++ ) mes @itemname2_info$[0] + callfunc( "getitemname2", .@itemid[.@i], .@identify[.@i], .@refine[.@i], .@broken[.@i], .@card0[.@i], .@card1[.@i], .@card2[.@i], .@card3[.@i] )+":^000000 "+ .@amount[.@i] +" ea."; } } close; OnInit: query_sql "select dropcardid from mob_db where mexp != 0 and dropcardper = 1", .mvpcard; .mvpcard_size = getarraysize( .mvpcard ); .mvpcard_compare$ = "#"; for ( .@i = 1; .@i < .mvpcard_size; .@i++ ) { .@nameid$ = .@nameid$ +","+ .mvpcard[.@i]; .@card0$ = .@card0$ +","+ .mvpcard[.@i]; .@card1$ = .@card1$ +","+ .mvpcard[.@i]; .@card2$ = .@card2$ +","+ .mvpcard[.@i]; .@card3$ = .@card3$ +","+ .mvpcard[.@i]; .mvpcard_compare$ = .mvpcard_compare$ + .mvpcard[.@i] +"#"; } for ( .@i = 0; .@i < .mvpcard_size; .@i++ ) { } .query_sql$ = "( nameid in ("+ .mvpcard + .@nameid$ +") or card0 in ("+ .mvpcard + .@card0$ +") or card1 in ("+ .mvpcard + .@card1$ +") or card2 in ("+ .mvpcard + .@card2$ +") or card3 in ("+ .mvpcard + .@card3$ +") )"; end; }
-
Cyro's post in Kill player reward was marked as the answer
- script pvp_point -1,{ OnPCKilLEvent: if ( getcharid(3) != killedrid && strcharinfo(3) == "yourmanonamhere" ) { getotem 7227,1; dispbottom "One Tcg card"; } end; }
-
Cyro's post in wearable & not wearable lol was marked as the answer
Job: Equippable jobs. Uses the following bitmask table:
(S.) Novice (2^00): 0x00000001
Swordman (2^01): 0x00000002
Magician (2^02): 0x00000004
Archer (2^03): 0x00000008
Acolyte (2^04): 0x00000010
Merchant (2^05): 0x00000020
Thief (2^06): 0x00000040
Knight (2^07): 0x00000080
Priest (2^08): 0x00000100
Wizard (2^09): 0x00000200
Blacksmith (2^10): 0x00000400
Hunter (2^11): 0x00000800
Assassin (2^12): 0x00001000
Unused (2^13): 0x00002000
Crusader (2^14): 0x00004000
Monk (2^15): 0x00008000
Sage (2^16): 0x00010000
Rogue (2^17): 0x00020000
Alchemist (2^18): 0x00040000
Bard/Dancer (2^19): 0x00080000
Unused (2^20): 0x00100000
Taekwon (2^21): 0x00200000
Star Gladiator (2^22): 0x00400000
Soul Linker (2^23): 0x00800000
Gunslinger (2^24): 0x01000000
Ninja (2^25): 0x02000000
Gangsi (2^26): 0x04000000
Death Knight (2^27): 0x08000000
Dark Collector (2^28): 0x10000000
Kagerou/Oboro (2^29): 0x20000000
Rebellion (2^30): 0x40000000
Summoner (2^31): 0x80000000
Novice + Swordman + Magician + Archer = 0x0000000F, why?
Because: 10 = A, 11 = B, 12 = C, 13 = D, 14 = E, and 15 = F
It's using hexadecimal.
-
Cyro's post in @rates ACMD_FUNC(rates) was marked as the answer
at src/map/atcommand.c
find this
ACMD_FUNC(rates) { char buf[CHAT_SIZE_MAX]; nullpo_ret(sd); memset(buf, '\0', sizeof(buf)); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1298), // Experience rates: Base %.2fx / Job %.2fx (battle_config.base_exp_rate + (pc_isvip(sd) ? (battle_config.vip_base_exp_increase * battle_config.base_exp_rate) / 100 : 0)) / 100., (battle_config.job_exp_rate + (pc_isvip(sd) ? (battle_config.vip_job_exp_increase * battle_config.job_exp_rate) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx (battle_config.item_rate_common + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_common) / 100 : 0)) / 100., (battle_config.item_rate_heal + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_heal) / 100 : 0)) / 100., (battle_config.item_rate_use + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_use) / 100 : 0)) / 100., (battle_config.item_rate_equip + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_equip) / 100 : 0)) / 100., (battle_config.item_rate_card + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_card) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx (battle_config.item_rate_common_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_common_boss) / 100 : 0)) / 100., (battle_config.item_rate_heal_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_heal_boss) / 100 : 0)) / 100., (battle_config.item_rate_use_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_use_boss) / 100 : 0)) / 100., (battle_config.item_rate_equip_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_equip_boss) / 100 : 0)) / 100., (battle_config.item_rate_card_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_card_boss) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1024), // MVP Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx (battle_config.item_rate_common_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_common_mvp) / 100 : 0)) / 100., (battle_config.item_rate_heal_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_heal_mvp) / 100 : 0)) / 100., (battle_config.item_rate_use_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_use_mvp) / 100 : 0)) / 100., (battle_config.item_rate_equip_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_equip_mvp) / 100 : 0)) / 100., (battle_config.item_rate_card_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_card_mvp) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx (battle_config.item_rate_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_mvp) / 100 : 0)) / 100., (battle_config.item_rate_adddrop + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_adddrop) / 100 : 0)) / 100., (battle_config.item_rate_treasure + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_treasure) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); return 0; } and replace wit this
ACMD_FUNC(rates) { char buf[CHAT_SIZE_MAX]; nullpo_ret(sd); memset(buf, '\0', sizeof(buf)); snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1298), // Experience rates: Base %.2fx / Job %.2fx (battle_config.base_exp_rate + (pc_isvip(sd) ? (battle_config.vip_base_exp_increase * battle_config.base_exp_rate) / 100 : 0)) / 100., (battle_config.job_exp_rate + (pc_isvip(sd) ? (battle_config.vip_job_exp_increase * battle_config.job_exp_rate) / 100 : 0)) / 100.); clif_displaymessage(fd, buf); return 0; }
And recompile
-
Cyro's post in Special Effect (Disable Notification) was marked as the answer
src/map/atcommand.c
find this and change as your need
/*========================================== *@effect *------------------------------------------*/ ACMD_FUNC(effect) { int type = 0, flag = 0; nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%11d", &type) < 1) { clif_displaymessage(fd, msg_txt(sd,1152)); // Please enter an effect number (usage: @effect <effect number>). return -1; } clif_specialeffect(&sd->bl, type, (send_target)flag); clif_displaymessage(fd, msg_txt(sd,229)); // Your effect has changed. return 0; }
-
Cyro's post in -bash: ./athena-start: /bin/sh^M: was marked as the answer
i sense this is resource issue, you using 1gb ram?
and what is the version of rathena you using?
pretty sure this issue will be solved if you upgrade it to one gb ram
and also check ram when stopped while loading npc's scripts at some point
-
Cyro's post in Pls Help i need warp script was marked as the answer
prontera,193,236,0 warp payon 2,2,payon,235,324 if you meant warp portal script try this
-
Cyro's post in something noob question but need answer was marked as the answer
modify and redistributing any content which is copyrighted may get you into trouble,
a lot of copyrighted content is downloadable from internet , even those websites like google,youtube states "content may have copyrights"
as long as the content you are trying to use not copyrighted (or at-least not copy righted to distribute in your country) you are safe to use (most of the anime is japan copyrighted? make yourself sure about it)
creating private ragnarok server using rAthena emulator is safe since rAthena is public licensed under GNU
However, the distribution of Gravity's game client, modified to work with private servers, is against international trademark and copyright laws as per the Berne Convention. Gravity's RO client is 'free' to download and use, not 'free' to modify and re-distribute.
-
Cyro's post in OnPCLoginEvent queue full :( was marked as the answer
trunk/src/map/map.h
#define MAX_EVENTQUEUE 2 increase the value
then recompile
-
Cyro's post in [WTA] What stable newest client for rathena with doram class, and clan system ? was marked as the answer
any client after 2015-10-01 is doram supported,
the latest client released in rathena is 2016-12-28
as i know you can use 2015-11-04
-
Cyro's post in Any news on BG Queue? was marked as the answer
well its nice feature to have, for that only feature people using Ramod emulator even it is giving a bunch of errors
even i am wishing to have the bg queue mode in rathena,
our new Developer has mentioned he is working on it on his intro
here is the link for it
lets wait for it
PS:- i dont think its not that easy to make bg q(at least for me xD
i like the chess concept, is it made by you?
PS- not everyone capable of making stuff who is still learning stuffs (like me), so if u can help its great, else just ignore
-
Cyro's post in Script request for hourly rewards was marked as the answer
there is plenty of threads for Hourly points
try searching and modify it as your need
here is a link i searched for you
https://pastebin.com/EBjSiPb8
-
Cyro's post in First try to open a Server, Hosting, VPS, Need Help was marked as the answer
Read guides, install everything by yourself
Do not buy any reseller/ro hosting
Ovh, Do is hosting companies, choose provider as your location
-
Cyro's post in Need help with Skins, UI, Login, Loading, Background was marked as the answer
You need to add them to your skinn folder
-
Cyro's post in Hourly Reward Script Please. was marked as the answer
https://rathena.org/board/topic/87128-hourly-point-rewards/
Edit it as your need