-
Content Count
175 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Like it~*
-
RO Credentials (ROCred), v1.10.0 - last updated 2017/12/31
Like it~* replied to Ai4rei's topic in Client-Side Releases
I'm sorry I was a bit lost. I forgot to enable SSO Login ... Agr works normally. Thank you! @suggestion I advise you to inform in the main post that we should copy all the files from the download to the ragnarok folder and perform all configurations. Yes, they are beasts things, but often we are coming from other topics, totally lost. -
RO Credentials (ROCred), v1.10.0 - last updated 2017/12/31
Like it~* replied to Ai4rei's topic in Client-Side Releases
Hi, thanks a lot Ai4rei, I managed to login to my server normally. But, I do not understand one thing, why do we need rocred.exe, if we have to put the password twice? Does rocred.exe only serve to save the MAC of the player? I'm confused / gt Did I do some things wrong? I just copied the rocred.ini and rocred.exe files to my RO folder. -
i guess it is a different way of displaying flavor text and equipment bonuses This is an official system yes. This doesn't have anything to do with creating custom cards. This system makes it possible to do things such as - creating unique equipments in the game with unique stats. creating dynamic equipments with options. (possibly with an equipment levelling system) if one is lazy, not having to put a description in the item and providing it with desired stats through an npc? The use of it ultimately depends on one's creative capabilities. Thank you very much for clarifying my doubts. What I meant by custom cards is that bonuses could be given by creating custom cards too, you know?
-
As you might imagine, Smoke is always involved in big, cool projects. I would like to congratulate you and thank you on behalf of the whole community. However, I do not see so many great utilities in this ... I do not know if it is due to the difficulty of understanding the language, or because the text has not been clarified, but I have not really seen it. (Please do not get me wrong, I'm just curious) Is this system official? Is there any utility besides not having to create custom cards to give players bonuses? I'm sorry I looked ignorant, but I'm just curious.
-
RO Credentials (ROCred), v1.10.0 - last updated 2017/12/31
Like it~* replied to Ai4rei's topic in Client-Side Releases
Could someone tell me how to install rocred? I did not find any tutorial for this. I looked at the 6 pages of the topic. I got here because of the targeting topic to save the Mac adress: http://herc.ws/board/topic/4643-get-last-mac-address/ But I do not have the slightest idea how I should proceed now -
Someone? Please.
-
topic plugin: http://herc.ws/board/topic/4383-costume-item-plugins/ @edit I found a topic with the same request, however the resolution is with a patch and I like it as a plugin, could anyone convert it or edit the original plugin? http://herc.ws/board/topic/11415-costumeitem-adds-stats/ Patch by Annieruru src/map/status.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/src/map/status.c b/src/map/status.cindex 699e734..7223a04 100644--- a/src/map/status.c+++ b/src/map/status.c@@ -2317,6 +2317,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { continue; if(!sd->inventory_data[index]) continue;+ if ( i >= EQI_COSTUME_TOP || i <= EQI_SHADOW_ACC_L )+ if ( MakeDWord(sd->status.inventory[index].card[2],sd->status.inventory[index].card[3]) == 999998 )+ continue; for(k = 0; k < map->list[sd->bl.m].zone->disabled_items_count; k++) { if( map->list[sd->bl.m].zone->disabled_items[k] == sd->inventory_data[index]->nameid ) { @edit2 I apologize to everyone, because I only realized that the plugin already has this functionality. The problem is in the main post of the official author, as he updated the plugin but not the description of the main topic post. Please, ask some moderators to delete or close the topic! Thank you! Solved!
-
To put in any script, would I just need to change the storage table, 'guildpack'? Give me an example, please.
-
Hello guys. The theme I bring up here is simple and straightforward, but maybe even a bit controversial. The intention is to address the issues that are opened in the official repository of the emulator. I understand that it is a lot of work for developers and it is very difficult to reconcile with personal life. However, what I do not understand is why there is no order to resolve issues in the repositories. I know that big bugs should have priorities, but in some cases they are not bugs, they are fixed before problems open on previous dates and I do not understand why? Is not the correct order execution? My idea here is not to criticize or even be controversial, though I would like to discuss this so that we will have an even better emulator in the future.
-
Yup, basically this. You can use an arrangement of donpcevent() commands to activate events for your set times. Example: - script event 1 FAKE_NPC,{ OnAtCommand: OnEventOne: announce "Event 1 started.", bc_all; initnpctimer; end; OnTimer10000: announce "Event 1 ended." bc_all; end; OnTimer15000: donpcevent("event 2::OnEventTwo"); stopnpctimer; end; OnInit: bindatcmd("event1","event 1::OnAtCommand"); end; } - script event 2 FAKE_NPC,{ OnEventTwo: announce "Event 2 started.", bc_all; initnpctimer; end; OnTimer10000: announce "Event 2 ended.", bc_all; end; OnTimer15000: donpcevent("event 1::OnEventTwo"); stopnpctimer; end; } You can start the loop by typing @event1, then it would loop the announcements every 10/15 seconds. Hello, gentlemen. Thank you very much for replying. I see that is a possibility. However, it is not yet fully effective, since events have varying times of duration. That is, it may be that one event ends sooner than expected and the other does not start because the interval between them has not yet been reached. So, is there any other way to be able to accomplish this in the best way?
-
Hello, I would like to know if it is possible to do this since there are many npcs in different files. The events are all already assembled, but each one in its separate file. I would like that as soon as one event is over, another is started, then another, another, and so on ... So after the last event is over, start the event count again from 1. Example: Started: event 1 Finished: event 1 Started: event 2 Finished: event 2 Started: event 3 Finished: event 3 ... ... ... Started: event 20 Finished: event 20 Started: event 1 Finished: event 1 Started: event 2 Finished: event 2
-
Someone? Please.
-
Thank you very much. But, there is still an error. Severity Code Description Project File Line Suppression State Error C2065 'HPMHOOK_pre_npc_parse_unknown_mapflag': undeclared identifier noitem Hercules\src\plugins\noitem.c 192 Error C2143 syntax error: missing ')' before 'constant' noitem Hercules\src\plugins\noitem.c 192 Warning C4028 formal parameter 3 different from declaration noitem Hercules\src\plugins\noitem.c 193 Warning C4028 formal parameter 3 different from declaration noitem Hercules\src\plugins\noitem.c 194
-
Thanks you very much. Amazingly, now there are only two plugins Severity Code Description Project File Line Suppression State Warning C4003 not enough actual parameters for macro 'addHookPre' noitem Hercules\src\plugins\noitem.c 191 Error C2065 'HPMHOOK_pre_': undeclared identifier noitem Hercules\src\plugins\noitem.c 191 Error C2143 syntax error: missing ')' before 'string' noitem Hercules\src\plugins\noitem.c 191 Error C2059 syntax error: ')' noitem Hercules\src\plugins\noitem.c 191 Warning C4003 not enough actual parameters for macro 'addHookPre' noitem Hercules\src\plugins\noitem.c 192 Error C2065 'HPMHOOK_pre_': undeclared identifier noitem Hercules\src\plugins\noitem.c 192 Error C2143 syntax error: missing ')' before 'string' noitem Hercules\src\plugins\noitem.c 192 Error C2059 syntax error: ')' noitem Hercules\src\plugins\noitem.c 192 Warning C4003 not enough actual parameters for macro 'addHookPost' noitem Hercules\src\plugins\noitem.c 193 Error C2065 'HPMHOOK_post_': undeclared identifier noitem Hercules\src\plugins\noitem.c 193 Error C2143 syntax error: missing ')' before 'string' noitem Hercules\src\plugins\noitem.c 193 Error C2059 syntax error: ')' noitem Hercules\src\plugins\noitem.c 193 Warning C4003 not enough actual parameters for macro 'addHookPost' noitem Hercules\src\plugins\noitem.c 194 Error C2065 'HPMHOOK_post_': undeclared identifier noitem Hercules\src\plugins\noitem.c 194 Error C2143 syntax error: missing ')' before 'string' noitem Hercules\src\plugins\noitem.c 194 Error C2059 syntax error: ')' noitem Hercules\src\plugins\noitem.c 194 Warning C4003 not enough actual parameters for macro 'addHookPost' noitem Hercules\src\plugins\noitem.c 195 Error C2065 'HPMHOOK_post_': undeclared identifier noitem Hercules\src\plugins\noitem.c 195 Error C2143 syntax error: missing ')' before 'string' noitem Hercules\src\plugins\noitem.c 195 Error C2059 syntax error: ')' noitem Hercules\src\plugins\noitem.c 195 Warning C4003 not enough actual parameters for macro 'addHookPre' maintenance Hercules\src\plugins\maintenance.c 551 Error C2065 'HPMHOOK_pre_': undeclared identifier maintenance Hercules\src\plugins\maintenance.c 551 Error C2143 syntax error: missing ')' before 'string' maintenance Hercules\src\plugins\maintenance.c 551 Error C2059 syntax error: ')' maintenance Hercules\src\plugins\maintenance.c 551 Warning C4003 not enough actual parameters for macro 'addHookPre' maintenance Hercules\src\plugins\maintenance.c 552 Error C2065 'HPMHOOK_pre_': undeclared identifier maintenance Hercules\src\plugins\maintenance.c 552 Error C2143 syntax error: missing ')' before 'string' maintenance Hercules\src\plugins\maintenance.c 552 Error C2059 syntax error: ')' maintenance Hercules\src\plugins\maintenance.c 552
-
Someone? please.
-
Hercules Battlegrounds
Like it~* replied to Sephus's topic in PvP, WoE, GvG, & Battleground Releases
Warnings. Note: Tested with the latest versions of the Hercules plugin and emulator. Compiled with Microsoft Visual Studio 2015 Severity Code Description Project File Line Suppression State Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 1071 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2049 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2050 Warning C4018 '>=': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2523 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2581 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2587 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 2717 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 3722 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 3724 Warning C4018 '<': signed/unsigned mismatch hBG Hercules\src\plugins\hBG.c 3862 -
Wow. Thank you very much. I solved most of the problems. But there are still some. Look: maintenance.c noitem partyscript.c I removed from partyscript.c #include "common/malloc.h" Error change to Severity Code Description Project File Line Suppression State Error C2039 'safestrncpy': is not a member of 'strlib_interface' partyscript Hercules\src\plugins\partyscript.c 343 Error C2039 'safestrncpy': is not a member of 'strlib_interface' partyscript Hercules\src\plugins\partyscript.c 138 vending_extended.c storageadditem.c @edit I forgot to say that I added ALL the plugins #include "common/hercules.h" /* Should always be the first Hercules file included! (if you don't make it first, you won't be able to use interfaces) */ Is correct?
-
Someone? please.
-
What do I need to change so that the command does not convert the item's status, bonus, etc, only its visual part? I'm Sorry, solved.
-
Someone? please.
-
Someone? please.
-
Criando habilidades ou clonando-as Introdução Uma grande área onde os jogadores têm dificuldade é adicionar novas habilidades para a fonte e o cliente. Abaixo será documentado como implementar essas novas habilidades. A habilidade A habilidade que estaremos trabalhando é simples. Nome: Earth Bolt Level Máx: 10 Tipo: Ativa Custo de SP: 20 + 5*SkillLV Alvo: 1 inimigo Tempo de conjuração: 2 seg Delay: 1 seg Duração: Instantânea Descrição: Causa dano mágico de elemento terra ao inimigo, conforme level da habilidade, a 150% MATK por hit. Basicamente, essa habilidade deve atingir 1 inimigo e lidar com 10 hits de 150% MATK, propriedade elemental da Terra e deve ser baseada em dano mágico. Abra /src/map/skill.h Role para baixo até encontrar EL_STONE_HAMMER, EL_ROCK_CRUSHER, EL_ROCK_CRUSHER_ATK, EL_STONE_RAIN, Depois daqui é onde nós adicionamos quaisquer habilidades adicionais. É melhor dar às habilidades um ID personalizado para começar. Então, vamos adicionar a nossa habilidade "Earth Bolt". Depois disso, adicione MG_EARTHBOLT = 8443, MG_ definição significa "Mago", você vai trabalhar para fora as siglas como você percorrer as habilidades. Definimos a base da habilidade. Como você pode ver, o id de habilidade é definido como '8443' desde Stone Elemental's Stone Rain é definido como 8442 (e é o última habilidade de jogador acessível). Abra /src/map/skill.c Esse arquivo é onde definimos as implementações de habilidades reais. Para habilidades de alvo único, todo o processamento dessa habilidade irá em skill_castend_damage_id (para habilidades prejudiciais) ou skill_castend_nodamage_id (para skills que não causam danos). Habilidades baseadas em mágica ou mágia. Como o Earth Bolt é baseado em danos, encontre a função skill_castend_damage_id e localize: case AB_RENOVATIO: case AB_HIGHNESSHEAL: case AB_DUPLELIGHT_MAGIC: case WM_METALICSOUND: case MH_ERASER_CUTTER: case KO_KAIHOU: A razão pela qual estaremos colocando a case para Earth Bolt aqui é porque: skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag); A definição BF_MAGIC significa que a habilidade é baseada em magia e deve ser calculada sob cálculos de batalha mágica. Assim, após a case NJ_HUUJIN adicionar: case MG_EARTHBOLT: Habilidades baseadas em armas No caso de querer adicionar uma habilidade que é baseada em Arma, em vez de Magia, encontre: case WM_GREAT_ECHO: case GN_SLINGITEM_RANGEMELEEATK: case KO_JYUMONJIKIRI: case KO_SETSUDAN: case GC_DARKCROW: case LG_OVERBRAND_BRANDISH: case LG_OVERBRAND: E adicione a case depois disso. Se quiséssemos que o Earth Bolt fosse baseado em armas, ficaria assim: case WM_GREAT_ECHO: case GN_SLINGITEM_RANGEMELEEATK: case KO_JYUMONJIKIRI: case KO_SETSUDAN: case GC_DARKCROW: case LG_OVERBRAND_BRANDISH: case LG_OVERBRAND: case MG_EARTHBOLT: No entanto, vamos manter a função Magic em vez disso. Abra /src/map/battle.c Nesta função, todos os cálculos de danos principais são realizados. E em funções separadas, as % modificadoras para as habilidades são armazenados. Portanto, para os nossos danos de 150%, adicionamos o extra de 50% (já que 100% é o padrão) na função apropriada. Ataques baseado em mágica Para ataques baseados em Magia, os modificadores são encontrados em battle_calc_magic_attack. Basta encontrar: case NPC_EARTHQUAKE: skillratio += 100 +100*skill_lv +100*(skill_lv/2); break; E adicione o modificador de danos abaixo. Como Earth Bolt é baseado em magia, nós adicionaremos-a aqui. case MG_EARTHBOLT: skillratio += 50; break; Isso agora significa que o Earth Bolt causará dano mágico de 150% MATK. Átaques baseado em armas Para ataques baseados em armas, os modificadores são encontrados em battle_calc_weapon_attack. Basta encontrar: case NPC_VAMPIRE_GIFT: skillratio += ((skill_lv-1)%5+1)*100; break; E adicione seu modificador de dano lá. Por exemplo, se o Earth Bolt fosse baseado em Weapon, acrescentaríamos: case MG_EARTHBOLT: skillratio += 50; break; O + = 50 significa simplesmente "Adicionar 50% ao 100%" para danos de ATK de 150%. Suporte a banco de dados de habilidades Tecnicamente falando, a base da habilidade está agora correta. Claro, se você quiser implementar habilidades mais complexas, há muito mais para isso. A seção separada será criada no futuro para isso. Mas, por enquanto, precisamos implementar as entradas do banco de dados de habilidades. Os arquivos abaixo podem ser encontrados em db / (pre / re) /. Apenas um de ambos (pre / re) precisa ser atualizado, é o qual você usa em seu servidor. Nessa parte é sempre aconselhável que você tenha alguma habilidade escolhida para se utilizar como base, pois facilitará muito a criação e/ou clonagem de sua habilidade. Aqui há diferenças, então dependendo do emulador usado, cada forma será de um jeito, caso o seu emulador seja alguns dos abaixos, continue. Caso não, pule para a parte: ** p/ Hercules. ** p/ rAthena, brAthena, Cronus. Skill_db.txt Para a nossa habilidade Earth Bolt, podemos agora digitar o seguinte: Estrutura: 8443,5,8,1,2,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic, 0, MG_EARTHBOLT, Earth Bolt Isso define que: Earth Bolt tem um intervalo de 5 células, bate várias vezes, é elemento da Terra e alvos 1 inimigo. Ele pode ser interrompido, e é de dano de tipo mágico. A quantidade de acessos aumenta em 1 em cada nível, com um nível máximo de 10. Skill_cast_db.txt Para a nossa habilidade Earth Bolt, podemos agora digitar o seguinte: Estrutura: 8443,2000,1,000,0,0,0 Isso define que: Earth Bolt tem um segundo tempo de ligação e um tempo de atraso de 1 segundo. Não há atraso de caminhada após o lançamento. Skill_require_db.txt Para o nosso Earth Bolt, podemos agora digitar o seguinte: Estrutura: 8443,0,0,25: 30: 35: 40: 45: 50: 55: 60: 65: 70,0,0,0,0,0,0,0,0,0,0,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Isso define que: Earth Bolt requer 25 SP no nível 1, 30 SP no nível 2 .. 70 SP no nível 10. Pode ser lançado com qualquer arma, não requer nenhum estado e não requer nenhum item para ser consumido. =========================================================================== ** p/ Hercules. Skill_db.txt =========================================================================== Skill_tree.txt Esta parte do banco de dados não é necessária se não for lida por uma classe. No entanto, se você quiser que uma classe aprenda uma habilidade, você deve fazer uma entrada em skill_tree.txt. Um exemplo abaixo: MG_EARTHBOLT: { MaxLevel: 10 MG_FIREBOLT: 5 MG_LIGHTNINGBOLT: 5 } Isso define que: Earth Bolt pode ser aprendido por Mago, tem um nível máximo de 10 (para esta classe), e requer habilidade MG_FIREBOLT no nível 5 e habilidade MG_LIGHTNINGBOLT no nível 5. Tecnicamente, estas são as partes geralmente utilizas com arquivos de banco de dados de habilidade. Há mais, mas isso ficará pra vocês explorarem. Arquivos .lua e .lub As seguintes implementações estão de acordo com a Revisão 228 do Projeto Lua (2012-05-23). A implementação é diferente entre muitas versões de cliente, mas geralmente há 2 implementações: Sem arquivos skillinfoz Em data/lua files/skillinfo/skilltreeview.lua encontre: {"MG_FIREWALL", 18; Pos = 19, MaxLv = 10, NeedSkillList = {6, 12}} Adicione a baixo: {"MG_EARTHBOLT",8443; Pos = 20, MaxLv = 10, NeedSkillList = {19,20}} Com arquivos skillinfoz Em skillid.lua encontre: ECLAGE_RECALL = 3035, Depois adicione: MG_EARTHBOLT = 8443, in data/lua files/skillinfo/skilldescript.lua localize: [SKID.MG_THUNDERSTORM] = { "Thunder Storm", "Max Level:^777777 10 ^000000", "Type:^777777 Offensive ^000000", "SP Cost:^777777 24 + 5*SkillLV ^000000", "Target:^777777 cell ^000000", "Range:^777777 9 cells ^000000", "Cast Time:^777777 1*SkillLV sec ^000000", "Cool Down:^777777 2 sec ^000000", "Duration:^777777 0.2*SkillLV sec ^000000", "Effect:^777777 Hits every Enemy in a 5x5 area around the targeted cell with 1 Wind Element Bolt per level at a rate of 1 bolt every 0.2 seconds. Each bolt does 0.8*MATK Wind element damage. ^000000", "[LV 1]^777777 1 Bolt ^000000", "[LV 2]^777777 2 Bolts ^000000", "[LV 3]^777777 3 Bolts ^000000", "[LV 4]^777777 4 Bolts ^000000", "[LV 5]^777777 5 Bolts ^000000", "[LV 6]^777777 6 Bolts ^000000", "[LV 7]^777777 7 Bolts ^000000", "[LV 8]^777777 8 Bolts ^000000", "[LV 9]^777777 9 Bolts ^000000", "[LV 10]^777777 10 Bolts ^000000", }, Depois adicione: [SKID.MG_EARTHBOLT] = { "Earth Bolt", "Max Level:^777777 10 ^000000" "Type:^77777 Active ^000000" "SP Cost:^777777 20 + 5*SkillLV ^000000" "Target:^777777 1 Enemy ^000000" "Cast Time:^777777 2 sec ^000000" "Cool Down:^777777 1 sec ^000000" "Duration:^777777 Instant ^000000" "Effect: ^777777 Deals SkillLV bolts of Earth magic damage to one enemy, at 150% MATK per hit.^000000", }, skilltreeview.lua mude: [JOBID.JT_MAGICIAN] = { [1] = SKID.MG_STONECURSE, [2] = SKID.MG_COLDBOLT, [3] = SKID.MG_LIGHTNINGBOLT, [4] = SKID.MG_NAPALMBEAT, [5] = SKID.MG_FIREBOLT, [6] = SKID.MG_SIGHT, [8] = SKID.MG_SRECOVERY, [9] = SKID.MG_FROSTDIVER, [10] = SKID.MG_THUNDERSTORM, [11] = SKID.MG_SOULSTRIKE, [12] = SKID.MG_FIREBALL, [13] = SKID.MG_ENERGYCOAT, [18] = SKID.MG_SAFETYWALL, [19] = SKID.MG_FIREWALL }, para: [JOBID.JT_MAGICIAN] = { [1] = SKID.MG_STONECURSE, [2] = SKID.MG_COLDBOLT, [3] = SKID.MG_LIGHTNINGBOLT, [4] = SKID.MG_NAPALMBEAT, [5] = SKID.MG_FIREBOLT, [6] = SKID.MG_SIGHT, [8] = SKID.MG_SRECOVERY, [9] = SKID.MG_FROSTDIVER, [10] = SKID.MG_THUNDERSTORM, [11] = SKID.MG_SOULSTRIKE, [12] = SKID.MG_FIREBALL, [13] = SKID.MG_ENERGYCOAT, [18] = SKID.MG_SAFETYWALL, [19] = SKID.MG_FIREWALL, [20] = SKID.MG_EARTHBOLT }, skillinfolist.lua Mude: [SKID.ECL_SEQUOIADUST] = { "ECL_SEQUOIADUST"; SkillName = "Sequoia Dust", MaxLv = 1, SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 7 }, } Para: [SKID.ECL_SEQUOIADUST] = { "ECL_SEQUOIADUST"; SkillName = "Sequoia Dust", MaxLv = 1, SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 7 }, }, [SKID.MG_EARTHBOLT] = { "MG_EARTHBOLT"; SkillName = "Earth Bolt", MaxLv = 10, SpAmount = { 25, 30, 35, 40, 45, 50, 55, 60, 65, 70 }, _NeedSkillList = { { SKID.MG_FIREBOLT, 5}, { SKID.MG_LIGHTNINGBOLT, 5} } Finalizando Não se esqueça que você precisará de adicionar o arquivo Sprite e BMP apropriado para a habilidade. Use o nome MG_EARTHBOLT como o nome do arquivo em: data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\item data\sprite\¾ÆÀÌÅÛ Efeitos Vá a src/map/skill.h, Procure a skill que deseja adicionar/editar o efeito: case WE_BABY: if(sd) { struct map_session_data *f_sd = pc->get_father(sd); struct map_session_data *m_sd = pc->get_mother(sd); bool we_baby_parents = false; if(m_sd && check_distance_bl(bl,&m_sd->bl,AREA_SIZE)) { sc_start(src,&m_sd->bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)); clif->specialeffect(&m_sd->bl,408,AREA); we_baby_parents = true; } Aqui está sendo utilizado como exemplo a habilidade de convocação das classes bebês. Onde 408 é o efeito adicionado para que seja mostrado ao utilizar a skill. Para a sua habilidade customizada, como ela é uma habilidade nova, não há nenhum efeito, então você terá que adicioná-lo ao arquivo, seguindo de exemplo a mesma forma mostrada acima. Para saber a lista de todos os efeitos, basta utilizar doc/effect_list.txt. Fontes e créditos https://github.com/HerculesWS/ https://github.com/Cronus-Emulator/ https://github.com/brAthena/ https://github.com/rAthena/ http://forum.cronus-emulator.com/ https://forum.brathena.org/ http://herc.ws/wiki/Adding_new_skills http://herc.ws/ https://google.com/ Comentários Decidi fazer esse tutorial pois percebi que ainda não há nenhum guia com esse assunto em PT-BR e havia uma grande demanda de pessoas procurando. Tinha dado uma olhada no Hercules e percebi que é um bom tutorial, mas ainda estava incompleto e bem desatualizado, então decidi usa-lo como base e também pensei, por que não criar um? Espero que esteja de boa compreensão, caso estiver faltando algo que eu esqueci ou que eu não saiba, por favor me informe para torná-lo o melhor possível. Estou aberto a sugestões e críticas construtivas. Façam um bom proveito
-
I'm sorry. I had forgotten. Now it has been fixed. Tested with today's version of Hercules. Severity Code Description Project File Line Suppression State Warning C4018 '<=': signed/unsigned mismatch char-server hercules\src\char\int_party.c 320 Warning C4013 'GET_SYMBOL' undefined; assuming extern returning int autopots Hercules\src\plugins\autopots.c 267 Warning C4047 '=': 'clif_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 267 Warning C4047 '=': 'script_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 268 Warning C4047 '=': 'pc_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 269 Warning C4047 '=': 'atcommand_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 270 Warning C4047 '=': 'map_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 271 Warning C4047 '=': 'unit_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 272 Warning C4047 '=': 'timer_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 273 Warning C4047 '=': 'itemdb_interface *' differs in levels of indirection from 'int' autopots Hercules\src\plugins\autopots.c 274 Warning C4013 'hookStop' undefined; assuming extern returning int maintenance Hercules\src\plugins\maintenance.c 205 Warning C4013 'addHookPre' undefined; assuming extern returning int maintenance Hercules\src\plugins\maintenance.c 550 Warning C4018 '<=': signed/unsigned mismatch market Hercules\src\plugins\market.c 259 Warning C4018 '<=': signed/unsigned mismatch market Hercules\src\plugins\market.c 290 Warning C4018 '<=': signed/unsigned mismatch market Hercules\src\plugins\market.c 309 Warning C4013 'hookStop' undefined; assuming extern returning int noitem Hercules\src\plugins\noitem.c 107 Warning C4013 'addHookPre' undefined; assuming extern returning int noitem Hercules\src\plugins\noitem.c 190 Warning C4013 'addHookPost' undefined; assuming extern returning int noitem Hercules\src\plugins\noitem.c 192 Error LNK2019 unresolved external symbol _GET_SYMBOL referenced in function _plugin_init autopots Hercules\vcproj-14\autopots.obj 1 Error MSB6006 "link.exe" exited with code 1120. maintenance C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets 638 Error MSB6006 "link.exe" exited with code 1120. autopots C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets 638 Error MSB6006 "link.exe" exited with code 1120. noitem C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets 638 Error LNK2019 unresolved external symbol _hookStop referenced in function _pc_authok_pre maintenance Hercules\vcproj-14\maintenance.obj 1 Error LNK1120 1 unresolved externals autopots Hercules\plugins\autopots.dll 1 Error LNK2019 unresolved external symbol _hookStop referenced in function _npc_parse_unknown_mapflag_pre noitem Hercules\vcproj-14\noitem.obj 1 Error LNK2019 unresolved external symbol _addHookPre referenced in function _plugin_init maintenance Hercules\vcproj-14\maintenance.obj 1 Error LNK2019 unresolved external symbol _addHookPre referenced in function _plugin_init noitem Hercules\vcproj-14\noitem.obj 1 Error LNK1120 2 unresolved externals maintenance Hercules\plugins\maintenance.dll 1 Error LNK2019 unresolved external symbol _addHookPost referenced in function _plugin_init noitem Hercules\vcproj-14\noitem.obj 1 Error LNK1120 3 unresolved externals noitem Hercules\plugins\noitem.dll 1 Warning C4715 'buildin_storageadditem': not all control paths return a value storageadditem hercules\src\plugins\storageadditem.c 72 Error C1083 Cannot open include file: 'common/malloc.h': No such file or directory partyscript Hercules\src\plugins\partyscript.c 13