-
Posts
137 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Gerzzie
-
-
This is a paid source file from Haziel. If you want to contact his just visit the 3rd party services :
-
Go to src/common/mapindex.hpp add a line after : #define MAP_JAIL "sec_pri"
#define MAP_JAIL "sec_pri"
+#define MAP_PAY_ARCHE "pay_arche"Go to src/map/atcommand.cpp find and replace : -{ MAP_PRONTERA, X, Y }, // 0=Prontera
+{ MAP_PAY_ARCHE, X, Y }, // 0=Maintown
How to change your @go 0 from Prontera to Maintown word. Go to conf/atcommands.yml and find : Command: go
-0: prontera
+0: MaintownDon't forget to recompile your server.
-
1
-
-
Go to src/map/atcommand.cpp then hanapin mo tong line na to :
Quote{ MAP_PRONTERA, 156, 191 }, // 0=Prontera
Then replace mo yung gusto mong coordinates then Recompile
Quote{ MAP_PRONTERA, X, Y }, // 0=Prontera
-
1
-
-
Grant and put some Privilege on your Web Host IP Address on your Ragnarok SQL Database. And it's much better to make a separate SQL User on your Web Host.
On 1/25/2020 at 6:00 AM, Zack- said:If you would like to use your root account you can go straight to fluxcp installation guide below
HOW TO MAKE SECONDARY MYSQL/PHPMYADMIN ACCOUNT FOR YOUR FLUXCP
1. I recommended to make a secondary account of mysql/phpmyadmin, for this step you need to login in your mysql/phpmyadmin as root and find the User Account in the upper
2. After you click the User accounts find the Add user account in the center left and press
3. After you click the Add user account make your User name and Password and make sure that you put in the Host name is Any host so that your web hosting can connect and now press the GO in the lower right
4. Now that you've added secondary account, all you have to do is press Database in the upper left
5. Once you get there look for your database and highlight it and press GO in the lower right
6. Check all selected database and press GO in the lower right
7. Now you have a secondary account
HOW TO INSTALL FLUXCP
1. You need to download FluxCP and upload in your Web hosting File Maner /www/public_html/
2. Goto your FluxCP config/ edit your applications.php
- ServerAddress This is your domain name like .com .net and etc..
- BaseURL This is the path where your fluxcp located, if you used FluxCP Folder in /www/public_html/FLUXCP make sure your 'BaseURL' => '/FLUXCP',
- InstallerPassword You need this when you need to update your fluxcp or install
3. Goto your Fluxcp config/ edit your servers.php
- Hostname Your ragnarok server IP
- Username Your root/secondary username
- Password Self explanation
- Database Your ragnarok database
4. And now go to your domain.com to setup your FluxCP and put your InstallerPassword in your config/applications.php and press the Authenticate
5. After you authenticate your InstallerPassword you will need to login your root/secondary mysql/phpmyadmin account and press the Update FluxRO<- If you dont change the 'ServerName' in the config/servers.php
6. Congratulation your FluxCP is installed correctly
-
Digital Ocean, OVH, Vultr.
-
Double check mo if meron nakalagay sa conf/msg_conf/map_msg.conf it should be there 0 : Warped. Check mo sa GitHub pag compare mo
-
Just purchase a VPS / Server Host on DigitalOcean, Vultr, OVH which cost around 10$ - 20$ to put your server online. Ideal Server Specification is located on our Github rA to Test the waters if you'll have a lots of player then purchase a Dedicated Server. Domain is 15$ - 20$ per year. Web Host is 10$ Monthly for a Server Developer there is a Third Party Services here on our Forum which you could contact and transact with them with ease because they're certified for Game Guard which is Gepard Shield you can contact @Functor for information regarding his prices.
As for Advertisement. Facebook is one the most useful for advertising a server which you can do it on your own or you could hire some here on Server Jobs Available also.
-
1
-
-
This event script is from Mabuhay. I just modified it for additional
- Event Cash Variable 1
- Event Cash Variable 2
- Event Cash Variable 3I added also @checkpoints to check your remaining Event Cash Variable if you want to remove Event Cash Variable 3 just
Remove or Put // :
//setd $event_var3$, getd($event_var3$)+$event_var_gain3;
Remove or Put // :
//dispbottom "You gained "+$event_var_gain3+" "+$event_var_name3$+". You now have "+getd($event_var3$)+" "+$event_var_name3$+".";Remove or Put // :
//dispbottom "You currently have " +$event_var_gain3+ " Event Cash Variable 3";Credits to @Mabuhay for his Event Script.
-
1
-
-
Go to conf/battle/misc.conf
Find : Line 23
pk_mode_mes : yesReplace :
pk_mode_mes : no -
It is a Paid Source Modification of @Haziel called Costume Weapon System Which cost around 25$ If i'm not mistaken.
-
Disable Doram on your Client :
data\luafiles514\lua files\service_korea\ExternalSettings_kr.lub
MakeableRace = { Doram = true }
change to:
MakeableRace = { Doram = false }
Coming Soon - Doram Replace this BMP.
FIND : data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\make_character_ver2.bmp
Replace make_character_ver2.bmp to this new make_character_ver2.bmp on your GRF. I modified it credit to the person who owns this.
Download link : img_doram_comingsoon.bmp
Example :
-
1
-
-
You should contact @Functor for any Gepard Shield related concern/problem.
-
1
-
-
-
Converted from Database to YAML. Magkakasama na lahat ng mga related sa item_db.txt
-
Good day! Upon checking your problem. You need to go to your conf/motd.conf for you to reload it you can type @reloadmotd
for the "Speed has increased" and "Str, Int and Dex Increased". You need to go to your GRF and find the data/msgstringtable.txt
Go to Line 210 for Speed has increased and Line 627 for Str, Int and Dex Increased to change it.
On 8/19/2020 at 3:15 AM, Jpeeezy said:-
1
-
-
Execute this one.
Spoilercreate table pvpladder (
char_id int(11) not null default '0' primary key,
name varchar(30) not null default '',
streaks smallint(6) unsigned not null default '0',
kills smallint(6) unsigned not null default '0',
deaths smallint(6) unsigned not null default '0',
streaktime datetime
) engine = myisam;
create table ownladder (
guild_id int(11) not null default '0' primary key,
name varchar(24) not null default '',
currentown smallint(6) unsigned not null default '0',
highestown smallint(6) unsigned not null default '0',
owntime datetime
) engine = myisam;-
1
-
-
Try changing
getmapxy @map$,@x,@y,0;
to
getmapxy @map$,@x,@y,BL_PC;
-
Download mo muna yung FluxCP sa GitHub. Then extract mo yung files sa Web Host mo. Then configure the following files :
config/application.php
config/servers.php-
2
-
-
Font/color and the logo doesn't match the style. Improve more and i give you 7/10 for now
-
5 hours ago, kennykiro said:
Hello friends I have a problem to add @go custom in a custom map is giving error while compiling the emulator already tried in several ways more unsuccessful someone could help me error image below, without anyone know I will be very thankful
You need to add first your custom map here :
src/common/mapindex.hpp :
-#define MAP_PRONTERA "prontera"
+#define MAP_PRONTERA "prontera"
+#define MAP_TRINITRY "trinity"
-
8 minutes ago, Radian said:
May updated file ako neto heh working 100%
Mas better kung isha-share in public.
-
I think you need this or you can follow this guide for you successfully put a Custom Robe
It doesn't solve your problem. But i think it might help
-
4 minutes ago, Mightymik said:
@Gerzzie yung sa command po ba need ko lang siya iadd sa conf/battle/battle.conf ko?
Nakalagay po yung diff file jan. Paki click nalang po. Aapply nyo lang po sya sa Server Files nyo.
-
Eto yung sa item if ever need mo. Palitan mo lang yung 256 ng 1024 para maging Costume Upper Headgear
- 5019,Corsair,Corsair,4,20,,500,,5,,0,0xFFFFFFFE,7,2,256,,0,1,105,{ bonus bVit,1; },{},{}
+ 5019,Corsair,Corsair,4,20,,500,,5,,0,0xFFFFFFFE,7,2,256,,0,1,105,{ bonus bVit,1; },{},{}https://github.com/rathena/rathena/blob/master/doc/item_db.txt
2^10 1024 = Costume Top Headgear
2^11 2048 = Costume Mid Headgear
2^12 4096 = Costume Low Headgear
2^13 8192 = Costume Garment/Robe
If command need mo eto.
On 8/9/2019 at 6:43 AM, Mael said:diff --git a/conf/battle/battle.conf b/conf/battle/battle.conf index 593d4e92f4..30251a4834 100644 --- a/conf/battle/battle.conf +++ b/conf/battle/battle.conf @@ -158,3 +158,9 @@ warg_can_falcon: no // Should the target be able of dodging damage by snapping away to the edge of the screen? // Official behavior is "no" snap_dodge: no + +// **************************************** +// Reserved Costume ID's +// **************************************** +// Reserved Char ID for costume converted items. +reserved_costume_id: 999998 \ No newline at end of file diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 70113c4145..d769b4364d 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -9633,6 +9633,25 @@ solution rather than sending the map and the monster_id. --------------------------------------- +*costume <equipment position>; + +Converts equipment in <equipment position> to costume version that has no stats. + +Applicable positions are: + EQI_HEAD_TOP - Top Headgear + EQI_HEAD_MID - Middle Headgear + EQI_HEAD_LOW - Lower Headgear + EQI_GARMENT - Garment + +--------------------------------------- + +*getcostumeitem <item id>; +*getcostumeitem <"item name">; + +Spawn a costume version of an <item id> or <"item name"> in attached player's inventory. + +--------------------------------------- + *hateffect(<Hat Effect ID>,<State>); This will set a Hat Effect onto the player. The state field allows you to diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 43d6ad4d7d..e2897a48b5 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -1218,7 +1218,7 @@ ACMD_FUNC(heal) ACMD_FUNC(item) { char item_name[100]; - int number = 0, bound = BOUND_NONE; + int number = 0, bound = BOUND_NONE, costume = 0; char flag = 0; struct item item_tmp; struct item_data *item_data[10]; @@ -1267,6 +1267,27 @@ ACMD_FUNC(item) for(j--; j>=0; j--){ //produce items in list unsigned short item_id = item_data[j]->nameid; + if (!strcmpi(command + 1, "costumeitem")) + { + if (!battle_config.reserved_costume_id) + { + clif_displaymessage(fd, "Costume convertion is disable. Set a value for reserved_cosutme_id on your battle.conf file."); + return -1; + } + if (!(item_data[j]->equip&EQP_HEAD_LOW) && + !(item_data[j]->equip&EQP_HEAD_MID) && + !(item_data[j]->equip&EQP_HEAD_TOP) && + !(item_data[j]->equip&EQP_COSTUME_HEAD_LOW) && + !(item_data[j]->equip&EQP_COSTUME_HEAD_MID) && + !(item_data[j]->equip&EQP_COSTUME_HEAD_TOP) && + !(item_data[j]->equip&EQP_GARMENT) && + !(item_data[j]->equip&EQP_COSTUME_GARMENT)) + { + clif_displaymessage(fd, "You cannot costume this item. Costume only work for headgears."); + return -1; + } + costume = 1; + } //Check if it's stackable. if (!itemdb_isstackable2(item_data[j])) get_count = 1; @@ -1277,6 +1298,11 @@ ACMD_FUNC(item) memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = item_id; item_tmp.identify = 1; + if (costume == 1) { // Costume item + item_tmp.card[0] = CARD0_CREATE; + item_tmp.card[2] = GetWord(battle_config.reserved_costume_id, 0); + item_tmp.card[3] = GetWord(battle_config.reserved_costume_id, 1); + } item_tmp.bound = bound; if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif_additem(sd, 0, 0, flag); @@ -10282,6 +10308,7 @@ void atcommand_basecommands(void) { ACMD_DEF(clonestat), ACMD_DEF(bodystyle), ACMD_DEF(adopt), + ACMD_DEF2("costumeitem", item), ACMD_DEF(agitstart3), ACMD_DEF(agitend3), }; diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 839cfb5620..d28c5f0182 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -8482,6 +8482,7 @@ static const struct _battle_data { { "exp_cost_inspiration", &battle_config.exp_cost_inspiration, 1, 0, 100, }, { "mvp_exp_reward_message", &battle_config.mvp_exp_reward_message, 0, 0, 1, }, { "can_damage_skill", &battle_config.can_damage_skill, 1, 0, BL_ALL, }, + { "reserved_costume_id", &battle_config.reserved_costume_id, 999998, 0, INT_MAX, }, { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, }, { "block_account_in_same_party", &battle_config.block_account_in_same_party, 1, 0, 1, }, { "tarotcard_equal_chance", &battle_config.tarotcard_equal_chance, 0, 0, 1, }, diff --git a/src/map/battle.hpp b/src/map/battle.hpp index ad13f69d53..b8f36aaf00 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -618,6 +618,7 @@ struct Battle_Config int exp_cost_inspiration; int mvp_exp_reward_message; int can_damage_skill; //Which BL types can damage traps + int reserved_costume_id; int atcommand_levelup_events; int block_account_in_same_party; int tarotcard_equal_chance; //Official or equal chance for each card diff --git a/src/map/map.cpp b/src/map/map.cpp index 8b70459939..3b06cd032c 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -1865,6 +1865,12 @@ void map_reqnickdb(struct map_session_data * sd, int charid) nullpo_retv(sd); + if (battle_config.reserved_costume_id && battle_config.reserved_costume_id == charid) + { + clif_solved_charname(sd->fd, charid, "Costume"); + return; + } + tsd = map_charid2sd(charid); if( tsd ) { diff --git a/src/map/pc.cpp b/src/map/pc.cpp index c0126b1597..015381e857 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -746,6 +746,7 @@ int pc_equippoint_sub(struct map_session_data *sd,struct item_data* id){ return EQP_SHADOW_ARMS; } } + return ep; } @@ -757,7 +758,18 @@ int pc_equippoint_sub(struct map_session_data *sd,struct item_data* id){ int pc_equippoint(struct map_session_data *sd,int n){ nullpo_ret(sd); - return pc_equippoint_sub(sd,sd->inventory_data[n]); + int ep = pc_equippoint_sub(sd, sd->inventory_data[n]); + + if (battle_config.reserved_costume_id && + sd->inventory.u.items_inventory[n].card[0] == CARD0_CREATE && + MakeDWord(sd->inventory.u.items_inventory[n].card[2], sd->inventory.u.items_inventory[n].card[3]) == battle_config.reserved_costume_id) + { // Costume Item - Converted + if (ep&EQP_HEAD_TOP) { ep &= ~EQP_HEAD_TOP; ep |= EQP_COSTUME_HEAD_TOP; } + if (ep&EQP_HEAD_LOW) { ep &= ~EQP_HEAD_LOW; ep |= EQP_COSTUME_HEAD_LOW; } + if (ep&EQP_HEAD_MID) { ep &= ~EQP_HEAD_MID; ep |= EQP_COSTUME_HEAD_MID; } + if (ep&EQP_GARMENT) { ep &= ~EQP_GARMENT; ep |= EQP_COSTUME_GARMENT; } + } + return ep; } /** diff --git a/src/map/script.cpp b/src/map/script.cpp index 0b2386c32d..70127734b0 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -22601,6 +22601,114 @@ BUILDIN_FUNC(getexp2) { return SCRIPT_CMD_SUCCESS; } +/*========================================== +* Costume Items +*------------------------------------------*/ +BUILDIN_FUNC(costume) +{ + int i = -1, num, ep; + TBL_PC *sd; + + num = script_getnum(st, 2); // Equip Slot + + if (!script_rid2sd(sd)) + return SCRIPT_CMD_FAILURE; + + if (equip_index_check(num)) + i = pc_checkequip(sd, equip_bitmask[num]); + if (i < 0) + return SCRIPT_CMD_FAILURE; + + ep = sd->inventory.u.items_inventory[i].equip; + if (!(ep&EQP_HEAD_LOW) && !(ep&EQP_HEAD_MID) && !(ep&EQP_HEAD_TOP) && !(ep&EQP_GARMENT)) { + ShowError("buildin_costume: Attempted to convert non-cosmetic item to costume."); + return SCRIPT_CMD_FAILURE; + } + log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->inventory.u.items_inventory[i]); + pc_unequipitem(sd, i, 2); + clif_delitem(sd, i, 1, 3); + // -------------------------------------------------------------------- + sd->inventory.u.items_inventory[i].refine = 0; + sd->inventory.u.items_inventory[i].attribute = 0; + sd->inventory.u.items_inventory[i].card[0] = CARD0_CREATE; + sd->inventory.u.items_inventory[i].card[1] = 0; + sd->inventory.u.items_inventory[i].card[2] = GetWord(battle_config.reserved_costume_id, 0); + sd->inventory.u.items_inventory[i].card[3] = GetWord(battle_config.reserved_costume_id, 1); + + if (ep&EQP_HEAD_TOP) { ep &= ~EQP_HEAD_TOP; ep |= EQP_COSTUME_HEAD_TOP; } + if (ep&EQP_HEAD_LOW) { ep &= ~EQP_HEAD_LOW; ep |= EQP_COSTUME_HEAD_LOW; } + if (ep&EQP_HEAD_MID) { ep &= ~EQP_HEAD_MID; ep |= EQP_COSTUME_HEAD_MID; } + if (ep&EQP_GARMENT) { ep &= EQP_GARMENT; ep |= EQP_COSTUME_GARMENT; } + // -------------------------------------------------------------------- + log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->inventory.u.items_inventory[i]); + + clif_additem(sd, i, 1, 0); + pc_equipitem(sd, i, ep); + clif_misceffect(&sd->bl, 3); + + return SCRIPT_CMD_SUCCESS; +} + +/*=============================== + * getcostumeitem <item id>; + * getcostumeitem <"item name">; + *===============================*/ +BUILDIN_FUNC(getcostumeitem) +{ + unsigned short nameid; + struct item item_tmp; + TBL_PC *sd; + struct script_data *data; + + if (!script_rid2sd(sd)) + { // No player attached. + script_pushint(st, 0); + return SCRIPT_CMD_SUCCESS; + } + + data = script_getdata(st, 2); + get_val(st, data); + if (data_isstring(data)) { + int ep; + const char *name = conv_str(st, data); + struct item_data *item_data = itemdb_searchname(name); + if (item_data == NULL) + { //Failed + script_pushint(st, 0); + return SCRIPT_CMD_SUCCESS; + } + ep = item_data->equip; + if (!(ep&EQP_HEAD_LOW) && !(ep&EQP_HEAD_MID) && !(ep&EQP_HEAD_TOP) && !(ep&EQP_GARMENT)){ + ShowError("buildin_getcostumeitem: Attempted to convert non-cosmetic item to costume."); + return SCRIPT_CMD_FAILURE; + } + nameid = item_data->nameid; + } + else + nameid = conv_num(st, data); + + if (!itemdb_exists(nameid)) + { // Item does not exist. + script_pushint(st, 0); + return SCRIPT_CMD_SUCCESS; + } + + memset(&item_tmp, 0, sizeof(item_tmp)); + item_tmp.nameid = nameid; + item_tmp.amount = 1; + item_tmp.identify = 1; + item_tmp.card[0] = CARD0_CREATE; + item_tmp.card[2] = GetWord(battle_config.reserved_costume_id, 0); + item_tmp.card[3] = GetWord(battle_config.reserved_costume_id, 1); + if (pc_additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT)) { + script_pushint(st, 0); + return SCRIPT_CMD_SUCCESS; //Failed to add item, we will not drop if they don't fit + } + + script_pushint(st, 1); + return SCRIPT_CMD_SUCCESS; +} + /** * Force stat recalculation of sd * recalculatestat; @@ -24343,6 +24451,8 @@ struct script_function buildin_func[] = { BUILDIN_DEF(getguildalliance,"ii"), BUILDIN_DEF(adopt,"vv"), BUILDIN_DEF(getexp2,"ii?"), + BUILDIN_DEF(costume, "i"), + BUILDIN_DEF(getcostumeitem, "v"), BUILDIN_DEF(recalculatestat,""), BUILDIN_DEF(hateffect,"ii"), BUILDIN_DEF(getrandomoptinfo, "i"), diff --git a/src/map/status.cpp b/src/map/status.cpp index af4c3afb00..a296f7b89e 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -3492,6 +3492,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) continue; if (!sd->inventory_data[index]) continue; + if (sd->inventory.u.items_inventory[current_equip_item_index].card[0] == CARD0_CREATE && MakeDWord(sd->inventory.u.items_inventory[current_equip_item_index].card[2], sd->inventory.u.items_inventory[current_equip_item_index].card[3]) == battle_config.reserved_costume_id) + continue; base_status->def += sd->inventory_data[index]->def;
Visual Issue NAME for New Character Creation when New installed rAthena server and latest kRO client with 2019-06-05fRagexe_patched.exe
in Client-side Support
Posted
You could adjust it on your NEMO or WARP Client when you patcht your client look for
ChangeNewCharNameHeight
and adjust it from 0 to 10 or 15 (preference)