Jump to content

JulioCF

Int'l Portuguese Moderators
  • Content Count

    791
  • Joined

  • Days Won

    10

Reputation Activity

  1. Upvote
    JulioCF reacted to Sephus in Hercules Ultimate Storage System (HUSS)   
    Hey all,
    I had an idea to implement the ultimate storage system with which users of Hercules would be able to create as many storages as they want without a hassle. And so I worked on Hercules Ultimate Storage System (HUSS). The basic idea of the design has been completed and at this point it is ready to be tested. I wanted to gather suggestions to further extend the system, hence this topic.
    To test the system, simply visit my fork of Hercules in the storages branch and clone it.
     
    Storage.conf Example Entry
    { Id: (int) (required|unique) Unique Identifier Name: (string) (required) Name of the storage sent to the client. Capacity: (int) (required) Maximum capacity of the storage. }
    All storages are handled with dynamic arrays that will save a tonne of memory if and when created.
    They are saved in the same storage database (SQL) as the original separating them by a storage identifier.
    An infinite number of storages can be created, there are no limits.
    The current design implementation only allows saving/loading of approximately 1600 items per storage due to packet size limits.
     
    Script Command Changes
    *openstorage(<storage_id>{, <storage_mode>}) Default Storage Access Mode: STORAGE_ACCESS_ALL This will open character's Kafra storage window on the client connected to the invoking character. It can be used from any kind of NPC or item script, not just limited to Kafra Staff. The storage window opens regardless of whether there are open NPC dialogs or not, but it is preferred to close the dialog before displaying the storage window, to avoid any disruption when both windows overlap. mes("I will now open your stash for you"); close2(); openstorage(1); end; Storage Modes: STORAGE_ACCESS_VIEW // View storage only STORAGE_ACCESS_GET // Allow getting items from storage. STORAGE_ACCESS_PUT // Allow putting items to storage. STORAGE_ACCESS_ALL // Allow all actions.  
    So if you guys have any suggestions or ideas that would better the system for Hercules, feel free to comment below
  2. Upvote
    JulioCF reacted to Sephus in Official Refine Rate Correction   
    As of e171deb58c7 we have the official refine rates from kRO.
     
    Normal Ores
     Refine Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 60% 60% 100% 100% 100% 60% 6 40% 40% 100% 100% 60% 40% 7 40% 40% 100% 60% 50% 40% 8 20% 20% 60% 40% 20% 20% 9 20% 20% 40% 20% 20% 20% 10 9% 9% 19% 19% 19% 9% 11 - 8% 18% 18% 18% 8% 12 - 8% 18% 18% 18% 8% 13 - 8% 18% 18% 18% 8% 14 - 8% 18% 18% 18% 8% 15 - 7% 18% 18% 18% 7% 16 - 7% 17% 17% 17% 7% 17 - 7% 17% 17% 17% 7% 18 - 7% 17% 17% 17% 7% 19 - 5% 15% 15% 15% 5% 20 - 5% 15% 15% 15% 5%  
    Enriched Ores
    Refine   Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 90% 90% 100% 100% 100% 90% 6 70% 70% 100% 100% 90% 70% 7 70% 70% 100% 90% 80% 70% 8 40% 40% 90% 70% 40% 40% 9 40% 40% 70% 40% 40% 40% 10 20% 20% 30% 30% 30% 20% 11 -  8% 18% 18% 18% 8% 12 -  8% 18% 18% 18% 8% 13 -  8% 18% 18% 18% 8% 14 -  8% 18% 18% 18% 8% 15 -  7% 18% 18% 18% 7% 16 -  7% 17% 17% 17% 7% 17 -  7% 17% 17% 17% 7% 18 -  7% 17% 17% 17% 7% 19 -  5% 15% 15% 15% 5% 20 -  5% 15% 15% 15% 5%  
    Normal Ores - Smelting Event
    Refine Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 60% 60% 100% 100% 100% 60% 6 40% 40% 100% 100% 60% 40% 7 40% 40% 100% 60% 50% 40% 8 20% 20% 60% 40% 20% 20% 9 20% 20% 40% 20% 20% 20% 10 9% 9% 19% 19% 19% 9% 11 - 20% 40% 40% 40% 20% 12 - 20% 40% 40% 40% 20% 13 - 16% 35% 35% 35% 16% 14 - 16% 35% 35% 35% 16% 15 - 15% 30% 30% 30% 15% 16 - 15% 30% 30% 30% 15% 17 - 14% 20% 20% 20% 14% 18 - 14% 20% 20% 20% 14% 19 - 10% 15% 15% 15% 10% 20 - 10% 15% 15% 15% 10%  
    Enriched Ores - Smelting Event
       Refine  Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 95% 95% 100% 100% 100% 95% 6 80% 80% 100% 100% 95% 80% 7 80% 80% 100% 95% 90% 80% 8 60% 60% 95% 85% 70% 60% 9 50% 50% 85% 60% 60% 50% 10 35% 35% 55% 45% 45% 35% 11 - 20% 40% 40% 40% 20% 12 -  20% 40% 40% 40% 20% 13 -  16% 35% 35% 35% 16% 14 -  16% 35% 35% 35% 16% 15 -  15% 30% 30% 30% 15% 16 -  15% 30% 30% 30% 15% 17 -  14% 20% 20% 20% 14% 18 -  14% 20% 20% 20% 14% 19 -  10% 15% 15% 15% 10% 20 -  10% 15% 15% 15% 10%  
     
    This corrects the previous behaviour of enriched ores which would simple double roll the item refinement.
     
    Script Command Changes
    getequippercentrefinery(<equipment slot>{, <type>}) Example: if (getequippercentrefinery(EQI_HAND_L, REFINE_CHANCE_TYPE_NORMAL) <= rand(100)) mes("Aww");  
    Constants exported to constants.conf are -
    REFINE_CHANCE_TYPE_NORMAL: 1 Retrieves Normal ore refine rate REFINE_CHANCE_TYPE_ENRICHED: 2 Retrieves Enriched ore refine rate REFINE_CHANCE_TYPE_E_NORMAL: 3 Retrieves Normal Event ore refine rate REFINE_CHANCE_TYPE_E_ENRICHED: 4 Retrieves Enriched Event ore refine rate  
  3. Upvote
    JulioCF reacted to Mystery in Hercules, welcome to IPB4   
    Hey everyone,
     
    It has been long overdue to bridge over to IPB4... but we are finally here. We ran into a few issues with the transition but we got the forum running within an hour. The forum is now accessible for everyone (maintenance is over), but keep in mind that there are still batches being processed in the backend which may make your experiences in browsing / posting sluggish. Over the next few hours/days, I will be working on the forum; reorganizing a few things, fine tuning, etc.
     
     
    If you run into any issues, don't hesitate to bring them to my attention! 
  4. Upvote
    JulioCF reacted to Envolvents in Npc que responde a fala   
    Bem simples:
    prontera,155,185,3 Sample Test 510,{ mes "digite seu nome"; input @nome$; if(@nome$ == strcharinfo(0)) { mes "Você acertou seu nome"; close; } else { mes "Como assim? você não sabe seu nome ?"; close; } } Normalmente você talvez não vai inserir um número negativo com esse comando.
    Isso é feito para evitar bugs, por exemplo um input negativo pode fazer com que o jogador receba zenys.

    O Comando tem 2 argumentos opcionais. o valor padrão de 'mínimo' e 'máximo' podem ser definidos com 'input_min_value' e 'input_max_value' em 'script_athena.conf'.
    Se o número inserido for maior que 'máximo', o comando retorna 1 e -1 se o valor for menor que 'min' e 0 de outro jeito (isso se 'mínimo' e 'máximo' existirem).

    Exemplo:
    mes "Insira um número maior que 1 e menor que 10"; input @num; if(@num > 1 && @num < 10) { mes "Parabéns você fez o que eu disse!"; close; } mes "Você não me obedeceu !"; close; Pra saber mais é só acessar o script_commands em doc do github.
  5. Upvote
    JulioCF reacted to Rytech in r819 - kRO March 2017 Mado Update   
    =Database
    *A few item changes.
    -Fixed the Upgraded Huuma Shuriken to increase MATK properly.
    -Falcon Flute is now only usable by Hunter type jobs.

    *Added the Emergency Magic Gear.
    -This item is usable only by Mechanics.
    -Mounts the Mechanic to a mado when used.
    -Has a reuse delay of 3 minutes.



    =NPC
    *Updated the thanatos quest to allow Summoner's to enter.



    =Jobs
    *Mechanic
    -Updated the mado code with official March 2017 update changes.
    -The follow changes applies to the mados....
    -
    -The base movement speed of mado's is now the same as Peco's,
    -but the movement speed penalty still applies and is reduced with
    -the Mado License skill.
    -
    -Natural HP recovery is increased. Its doubled for now until
    -the official info is learned.
    -
    -Mado's now have a max weight increase of 1500.
    -
    -The Teleport skill can now be used.
    -
    -Mado's are now immune to equipment stripping.
  6. Upvote
    JulioCF reacted to Sephus in Introducing the Item Options System   
    Introducing the Item Options System!
     

     
    Commit
    https://github.com/HerculesWS/Hercules/commit/974222a8d3f189083205bf5d330de04a43226ad3
     
    Feature Information
    The Item Option System is a feature that was implemented in 2015-02-26 clients, allowing equipments to have up to 5 additional effects similar to cards or enchants. Each equipment is capable of having 5 information bars above the card slot/enchant bar that describes the effect of the option it is infused with.
     
    New Script Commands (The following snippet is available in doc/script_commands.txt.)
    *getequipisenableopt(<equipment slot>) This function checks if the equipped item allows the use of bonus options. Returns 1 if allowed, 0 if not. --------------------------------------- *getequippedoptioninfo(<info_type>); This function is to be used with the scripts of contents listed in db/item_options.conf only. Returns the value of the current equipment being parsed. If the equip was not found or the type is invalid, -1 is returned. --------------------------------------- *getequipoptioninfo(<equip_index>,<slot>,<type>); Gets the option information of an equipment. <equipment_index> For a list of equipment indexes see getequipid(). <option_slot> can range from 1 to MAX_ITEM_OPTIONS <type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf) or IT_OPT_VALUE (the value of the bonus script of the equipment, @see "Script" in db_item_options.conf). returns the value of the slot if exists or -1 for invalid slot, type or slots. --------------------------------------- *setequipoption(<equip_index>,<slot>,<opt_index>,<value>); Set an equipment's option index or value for the specified option slot. <equipment_index> For a list of equipment indexes see getequipid(). <option_slot> can range from 1 to MAX_ITEM_OPTIONS <type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf) <value> The value of the type to be set. returns 0 if value couldn't be set, 1 on success.  
     
    Release Notes
    This system allows the infusing of equipments with bonus item options. This feature is constrained to clients of packet versions greater than or equal to 20150226. Item Options and their effects are defined server-side in db/item_options.conf and client side in data/luafiles514/lua files/datainfo/addrandomoptionnametable.lub The ID of the option must tally with the correct index of the description provided in the client side file. IT_OPT_* keys and MAX_ITEM_OPTIONS macro are also exported from the source as constants. If you wish to disable item options for certain (equipment) items, an additional flag `disable_options` has been added to the item sql tables, and as `DisableOptions: true/false (boolean, defaults to false !!for equipments only!!)` to the item_db.conf files. Documentation is provided for script commands. If upgrading, don't forget to run the sql upgrade files!
    Credits
    A big thanks to all the reviewers that helped make the code closer to perfection. -
    Emistry, dastgir, MishimaHaruna, Jedzkie, Ridley8819, Asheraf, 4144.
     
    Style and Script Fixes by Asheraf (https://github.com/Asheraf)
    Initial design Idea in rAthena commit.
  7. Upvote
    JulioCF got a reaction from Like it~* in Ajuda/Suporte Sistema VIP e Cash   
    Você usa  um script vip "antigo" sem os devidos créditos.
    Você não coloca seu script em um PASTE que é correto ao se postar.
    Você posta em 'n' comunidades só pedindo pra resolverem seu problemas.
    Você nem deve ter tido o trabalho de pesquisar como resolver.
    Você nem se quer, se preocupou em procurar usar um sistema mais novo, ou até, você mesmo faze-lo.. não tem conhecimento? Estude.
     
    Aqui, não damos nada na mão.
    Fique a vontade em usar o fórum por inteiro e a Wiki.
     
    Desejo sorte.
  8. Upvote
    JulioCF reacted to Haru in About Code Review and Why You'd Want Your Code to Be Reviewed   
    About Code Review and Why You'd Want Your Code to Be Reviewed
     
    Hello, fellow developers and code contributors!
    As you certainly know, years ago, Hercules adopted a workflow based on pull requests, that includes code review as one of the necessary steps before any new piece of code makes it into the master branch of the repository.
    While being an uncommon and somewhat controversial change in Hercules (and in the RO emulator scene in general), code review is part of the workflow of most software projects, both open source and closed source, and has many benefits.
     
    Why Code Review
     
    The benefits of code review are several:
    "Given enough eyeballs, all bugs are shallow" [Linus's Law by Eric S. Raymond -- The Cathedral and the Bazaar, 1999]. While the law is not strictly true, it's certainly true that the more developers read and analyze a piece of code, the more likely it is that bugs that might be hidden in it are discovered early. Testing is not enough. It's very hard (or in the case of our codebase just plain impossible) to cover all the possible edge cases when testing a new feature or a fix. An additional pair of eyes reading the code may help discovering those more easily. This includes cases where the client would normally prevent a certain thing from happening, but it's not ensured anywhere on the server side. Better quality of code. By having other developers read a piece of code, they'll end up wondering why a certain approach was taken, rather than another, and discuss it with the submitter, leading to better, more efficient algorithms, or better engineered code. Better documentation. Since the code needs to be read by other people, it'll require proper comments (or they'll ask for explanations about the parts they can't easily explain). This increases the chance that the author, or anyone else that will need to read the same code again months or years after it's been submitted, will be able to understand it again, by finding appropriate comments in the appropriate parts of the code. Better insight into the code across the team. By reading code from different parts of the emulator as part of the review process, every team member increases their own general knowledge of the software, bit by bit. This is a very efficient way of learning how different parts of the emulator work, and why they were implemented that way. Future-proofing. By having public reviews, we keep a permanent trace of what were the hot topics and why certain decisions were taken, when a certain part of the emulator was implemented. If a bug arises, or something needs to be redesigned in future, we can look up the associated pull request and related discussion, and learn more about the discussion that went on in the past, and what's hiding behind code design decisions. Reviewing code from other people, as well as having one's own code reviewed by others might not be easy for everyone, especially at the beginning, but please try your best. Here are some suggestions on how to approach code review from either side. 
    How to approach code review (for code authors)
     
    As a code author, the worst thing you can do is to be afraid or shy about other people judging your code. This is the wrong approach! Don't be shy, have your code looked at by others, have them praise you for your genial approach to tackle a problem, listen to their suggestions on how to improve it. But be ready to defend your implementation, if you believe it's better than the suggestions you receive, or if the critics that are moved against it are wrong or meaningless.
     
    Always keep in mind that:
    Having your code reviewed and commented on isn't humiliating. Other people are spending their time looking at your code, asking you why you did something in a certain way rather than another, suggesting improvements. Both sides have a lot to learn from each others. (On the other hand, if no one reviews your code, that's somewhat humiliating!) If someone spots an issue in your code, it doesn't mean that you're a bad developer. We all make mistakes, and we should be happy to learn from them (and it's definitely better if someone spots them and points them out to us before it's too late and they were able to do some harm). Never, ever, take code review personally. No one will laugh about you, fire you, kill you, shame you, etc. if your code is commented on. If you believe you're right and the comments you received are pointless or wrong, chance is that you really are right. Be ready to defend your reasons, it's possible that the reviewer didn't think of them. It is your duty to explain them your reasons. How to approach code review (for code reviewers) 
    Reviewing code is several orders of magnitude harder than having your own code reviewed. You have to check the code for several classes of problems, point out your findings, suggest improvements. And you still have to deal with the worry about hurting the code author's feelings when pointing out a mistake.
     
    Here are some things you should keep in mind when reading and reviewing code from other people:
    You're not judging a person. You're judging code. Don't make your review sound personal. Always think of uncommon and edge cases, and never assume they can't happen, unless there's an explicit check that makes them impossible to happen. Even if the code was tested by the author, it doesn't mean that it can't cause problems to other existing features, or have some issues the author couldn't think of. If the same person writes and tests a piece of code, the chance that they don't test the cases they forgot to handle while coding, is very close to 100%. If the code is not following the project's style guidelines (and this isn't just about indentation, but also about names, conventions about function calls, proper modularization, etc), it is your duty to point it out now, before it's merged. This will make the life of your fellow developers easier later on. Think defensively. Consider the code you have in front of you as buggy until you can prove its correctness. If you see that a sanity check is missing, ask the author to add it. If you believe that a function returns the wrong value in certain cases, even if very unlikely to occur, prepare an example of input for which that happens and point it out. Remember that threats such as overflows, underflows, buffer overruns, null pointers, invalid pointers, numeric (floating point) approximation, etc. are always behind the corner, check for them as often as possible and prove that they can't occur. And remember that, while the code author isn't your enemy (and code review shouldn't generate negative feelings), it's often a good idea to think of them as your "professional enemies". There's a chance that something nasty is hiding in their code, even if they didn't write it with ill intent, and as such, you shouldn't blindly trust the code, regardless of who the author is. Don't be afraid when you comment on other people's code. Your goal isn't to hurt their feelings, you're asking them for explanations and/or suggesting the way you would have done something. Likewise, don't be afraid of making a pointless comment. If the author has a good reason for their implementation, be ready to take back your comment and learn from them. Don't accept compromises. If you're firmly convinced that the author's defense of their code is wrong, your duty is to prove them wrong. But if they manage to convince you, don't be ashamed of admitting you were wrong. Happy reviewing!
  9. Upvote
    JulioCF reacted to Like it~* in [Guia e orientação] Criando habilidades. PT-BR   
    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 
  10. Upvote
    JulioCF got a reaction from Miнαєl in [Salve Info] Shake/Quake Skill Effect Remove Hex, v1.1 - last updated 2010/11/20   
    Original; http://www.eathena.ws/board/index.php?showtopic=249328&st=0&p=1358549entry1358549
     
    http://web.archive.org/web/20110419042432/http://www.eathena.ws/board/index.php?showtopic=249328&st=0&p=1358549entry1358549
  11. Upvote
    JulioCF reacted to Mystery in December 2016 & January Digest 2017   
    January Digest 2017
    The following digest covers the month of January 1st - January 31st 2016
     
     
    Team Changes
    None  
    Development Highlights
    Update *waitingroom script document (#1537) Update md5 calculation to be able to hash a binary buffer HPM Hooks Update Fix CMDLINE_OPT_PARAM arguments in plugins failing to load remove hardcoded chat area size from clif.c, add chat_area_size to battleconf  
    Database Highlights
    Correct Para_Team_Mark_ effect Adjust 2@nyd areamobs  
    Scripting Highlights
    Double NPC Name in Royal Guard job change quest (#1538) Fixed announces from Koschei the Immortal (Moscovia Quests) (#1542) Add quest log for Juperos Ruins History Quest  
    January Statistics
    During the period there were 25 Commits. 9 Commits from Pull Requests with 0 Bug(s)* fixed from merged issues.  
    *Please note: Bug fixes are counted as references to issues; it does not include bugs that have been fixed without issue reference.


    December Digest 2016
    The following digest covers the month of December 1st - December 31st 2016
     
     
    Team Changes
    None  
    Development Highlights
    Fixed areawarp cell check  Script command - makeitem2 (78854572) ​Fixed a null-pointer dereference in BUILDIN(makeitem2) Add support for static assertions (on compilers that support them) Update party_check_state (017c388c94) Clarify the meaning of the MAPID_* constants Clarify some Job Class vs MapID confusion (1/2)  Clarify some Job Class vs MapID confusion (2/2) Ensure that pc->addfame() increments the correct fame points Re-add -fvisibility=hidden on FreeBSD (necessary for plugins)  Fixing an small markdown mistake  
    Scripting Highlights
    Add a custom weight check in ring of the wise king quest Fixed incorrect OnTouch label in Crow of Destiny Quest  
    December Statistics
    During the period there were 18 Commits. 5 Commits from Pull Requests with 0 Bug(s)* fixed from merged issues.  
    *Please note: Bug fixes are counted as references to issues; it does not include bugs that have been fixed without issue reference.
  12. Upvote
    JulioCF reacted to Like it~* in Utilizar multíplos iteminfo.lua   
    Acho que é isso que vc quer...
     
    http://herc.ws/board/topic/6376-dual-language/
  13. Upvote
    JulioCF reacted to Mystery in February 2017 Digest   
    February Digest 2017
    The following digest covers the month of February 1st - February 28th 2017
     
     
    Team Changes
    hemagx has been moved to Former Core Developer from Core Developer Ragno has been moved to Community Contributor Frost has been moved to Script Developer from Former Script Developer (welcome back!)  
     
    Development Highlights
    Update gitlab-ci configuration to match current debian packages Fixes named items having their names changed when near other players Adds GvG2 zone on WoE:SE maps, disabling use of Leap/High Jump Fixes disguise position de-synchronization add chr() and ord() buildins Added option to show classchange only to one player Fix a CI build failure (gcc-5)  
     
    Scripting Highlights
    Add quest log for moscovia quests remove useless check for questprogress Fixes getbattleflag on npc/other/auction.txt  
     
    February Statistics
    During the period there were 19 Commits. 10 Commits from Pull Requests with 3 Bugs* fixed from merged issues.  
    *Please note: Bug fixes are counted as references to issues; it does not include bugs that have been fixed without issue reference. The number of commits includes those that were merged.
  14. Upvote
    JulioCF reacted to Like it~* in Utilizar multíplos iteminfo.lua   
    Olá.
    Hoje vim trazer um tutorial muito simples, mas que é de grande utilidade para todos, até pelo motivo de eu não ter encontrado em nenhuma comunidade PT-BR. Tive um grande trabalho para achar um tutorial que tivesse uma línguagem mais prática e funcionasse, então devido a isso decidi postar. 
     
    Utilizar multíplos iteminfo.lub/lua.
     
    Primeiro, como sabemos, os clientes mais novos estão usando itemInfo.lua / lub para substituir arquivos TXT para informações de item no lado do cliente, dentro da pasta System.
    Acho que grande parte dos criadores de servidores mais complexos, se depararam com a situação de adicionar algum(ns) item(ns) de outro RO como idRO, iRO, & jRO, KRO e sempre receber "Item desconhecido" e "Maçãs", e não saber o verdadeiro motivo causador disso, exceto ao trocar os arquivos itemInfo.lua/lub. Eis que surgiu uma solução! Vamos lá.
     
    Utilidade:  utilizar itemInfo de outros servidores oficiais, como kRO, iRO e idRO, e fazer com que aqueles possam substituir informações não existentes de outros arquivos.
    Tutorial
    - 1º Passo:
    Prepare os arquivos a ser utilizado, exemplo:
    "itemInfo_bRO.lua" - Traduzido do BRO com todos os arquivos em PT-BR.
    "itemInfo_iRO.lua" Servidor internacional iRO.
    "itemInfo_idRO.lua".
    "iteminfo_custom" - Seu iteminfo customizado, com seus itens criados.
    "itemInfo_kRO.lua" - Servidor oficial e distribuidor do jogo RO.
     
    - 2º Passo:
    Faça um arquivo .lua vazio, dê o nome "itemInfo.lua". Este será o arquivo principal para ser lido pelo cliente.
    Edite o "itemInfo.lua", e cole este código.
     
     
    - 4º Passo: 
    Em seguida, copie o arquivo e renomeie o arquivo copiado para "iteminfo.lub".
     
    - 5º Passo:
    Entre em todos seus arquivos preparados no Passo 1, e verifique se ambos começam assim:
      tbl = { ... } Caso sim, continue no mesmo arquivo e vá para o próximo passo.
     
    - 6º Passo:
    Vá até o final do arquivo e remova a função principal. Geralmente estará assim.
     
     
     
     
    Adicione ao lugar removido o seguinte código.
    for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) end   Fim!
    Aprecie seus novos arquivos.
    Notas e Créditos.
     
    OBS¹: Apenas traduzi um tutorial já existente, no qual vou estar deixando a fonte a baixo. Mas tive que modificar praticamente todo tutorial, então os créditos são a ambos.
    OBS²: Não irei fornecer nenhum arquivo, isto é apenas um tutorial, não me envie pm me solicitando nada.
    OBS³: todos os arquivos devem ser decompilado .lua, não compilado.
    OBS4:Se você tiver itens com ícone vazio , isso significa que sua data não tem o sprite / textura necessária ou seus arquivos itemInfo estão com o "unidentifiedResourceName" ou "identifiedResourceName" vazio ou não preenchidos. 
    Fonte: http://pservero.com/multi-iteminfo-files/
  15. Upvote
    JulioCF reacted to Adel in Adel's Sprite Showcase   
    Hello people~
    I am Adel and this is my updated sprite showcase.
    ❤   ❤   ❤  Hope you enjoy    ❤   ❤   ❤
    Note: Please do not steal the display images.
    Some of the references for my sprites were taken from other game sources.  
          
          
       
          
       
          
          
       
          
          
          
       
          
             
             
       
          
             

          
       
             
           
              
          
          
       
           
           
             
          
       
           
           
             
          
          
             
          
          
                
            

        
                
             
          
       
          

             
           
        
          
          
          
          
          
        
     
          
          
          
          
     
    Mob Sprites
     
             
          
             
       

    Other Sprites

     
  16. Upvote
    JulioCF reacted to Murilo BiO' in Npcs simples não funcionam e não apresentam erros no mapserver   
    Primeiro NPC
     
    O Hercules já possui um sistema de Túmulos, não entendo o que quer fazer com isso.
     
    Caso queira usar seu próprio sistema tudo bem...
     
    O evento OnTombstone está sendo chamado onde?
    Você que fez?
     
    Segundo NPC
     
    O setarray e o set antes do evento OnPCDieEvent, não irão funcionar até que o script seja executado do início (click no npc).
    O que você deve fazer é adicionar um evento para que ele configure essas variáveis, se não elas estarão vazias e o npc não fará nada.
     
    antes do setarray, coloque um OnInit:
     
    Assim elas serão definidas assim que o npc for carregado.
     
    Terceiro NPC
     
    O mesmo que o segundo npc, não há nenhum evento à ser disparado, quando os comandos agitstart() ou agitstart2() são utilizados, eles disparam eventos OnAgitInit e OnAgitInit2, antes das condições coloque as labels de evento, OnAgitInit e OnAgitInit2, desse modo:
    OnAgitInit: OnAgitInit2: if(agitcheck() == 1 || agitcheck2() == 1){ // code... } end();  
    Outra observação, sua comparação está incorreta, você está usando | ao invés de ||.
     
     
    Espero ter ajudado
  17. Upvote
    JulioCF reacted to Rytech in 2016-02-03aRagexeRE   
    File Name: 2016-02-03aRagexeRE
    File Submitter: Rytech
    File Submitted: 26 Nov 2016
    File Category: Client Resources
     
    Release for the 2016-02-03aRagexeRE game client.
     
    Be sure to set the client's grf read order to read rdata.grf before data.grf.
     
    Click here to download this file
  18. Upvote
    JulioCF reacted to KirieZ in Dúvida para montar pasta do servidor   
    Quando monto a minha, apenas para usar localmente, costumo fazer o seguinte:
    Baixar um ragexe que quero usar e modificá-lo com o NEMO Baixar a pasta data e System do Client Translation Project ( http://herc.ws/board/topic/398-client-translation-project/ ) e copiá-las para a pasta Copiar todas as DLLs de algum servidor oficial (bro/kro/etc), menos as que pelo nome posso dizer que servem para gameguard, etc (normalmente elas tem o nome do shield) Copiar a grf do kro/bro/etc ou do data grf project (http://herc.ws/board/topic/6801-release-the-data-grf-project/) para a pasta Criar o Data.ini com a grf do servidor oficial Copiar o Open Setup para a pasta (http://herc.ws/board/topic/652-ro-open-setup-v2116397-last-updated-20151205/) Modificar o clientinfo.xml Com isso acredito que a pasta fica bem limpa e com o básico que você precisa para rodar o servidor, se for para abrir para jogadores, a mudança seria transformar a pasta data em uma grf.
     
    Espero ter ajudado.
  19. Upvote
    JulioCF reacted to fxfreitas in Tree of Savior   
    I Enjoyed a lot, but the bots and the token system make me think again if I will play, I just stopped for a while, and probebly will come back when these 2 main problems got solved. Oh man it is RO all over again.
  20. Upvote
    JulioCF reacted to karazu in Happy New Year!   
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
    Happy New Year!
  21. Upvote
    JulioCF reacted to ρixєℓ in Vending problem   
    Desmarque a caixa "Safetv check more then 10million Zeny", isso é erro do próprio client, você só vai conseguir vender se desmarcar essa opção.
  22. Upvote
    JulioCF reacted to Kian in [solved]Contas criadas serem LVL 1   
    Obrigado pela dica.Resolvido.
  23. Upvote
    JulioCF got a reaction from Kian in [solved]Contas criadas serem LVL 1   
    cria um script que mude ao logar, claro, reconhecendo o lv atual... não lembro onde fica na src
  24. Upvote
    JulioCF got a reaction from juliam2008 in Script Cash Shop   
    Então, peça suporte la. O emulador dele, apesar de ser Hercules base, tem muitas personalizações pessoais deles.
  25. Upvote
    JulioCF reacted to Mystery in October Digest 2016   
    October Digest 2016
    The following digest covers the month of October 1st - October 31st 2016
     
     
    Team Changes
    None  
    Development Highlights
     
    Update Intro (Renewal) (#1427) Updated MapCache Added Doxygen configuration (use 'make docs' to generate) Initial dimensional gap commit (#1431) CRI should only be calculated if flag have SCB_CRI Fix packet id for clif_heal for packet version >= 20150513 Change *getcharid to use constants [Fixed] Dont send packets for known unsupported client versions Added Packets for Several Clients (2015-10-01, 2015-10-29, 2015-11-04, 2015-12-16) Added new Character Creation Packet JOB_SUMMONER Placeholder Added Summoner Class & Added Summoner Skills(in DB) Implemented SU_BASIC_SKILL Skill of Summoner Implemented SU_BITE Skill, SU_HIDE, SU_SCRATCH, SU_STOOP, SU_LOPE Skill SU_SPRITEMABLE, SU_FRESHSHRIMP, SU_POWEROFLAND, SU_SV_STEMSPEAR SU_CN_POWDERING, SU_CN_METEOR, SU_POWEROFLIFE, SU_SV_ROOTTWIST, SU_SCAROFTAROU, SU_PICKYPECK, SU_ARCLOUSEDASH, SU_LUNATICCARROTBEAT, SU_POWEROFSEA, SU_TUNABELLY, SU_TUNAPARTY Skill SU_BUNCHOFSHRIMP, SC_BITESCAR, SC_SHRIMP, UNT_CATNIPPOWDER Increases SkillID Range on skill_get_index Summoner should be Small Size and Brute Race Added max_summoner_parameter Increases MAX_SKILL to occupy Summoner Skills Removed the too small max key length limit on the npc_removed_list DBMap  
    Database Highlights
    [Fixed] bSkillAtk not increasing damage for some skills use mediumint for equip_locations Added support to Para_Team_Mark_ item in Eden Group Fix wrong items bonus Added Summoner Items Fix wrong skill name used to increase damage  
    Scripting Highlights
    Add official quest condition for Guillotine Cross job change quest Fixes wrong warp of izlude Re-added the taekwon jobchange quest to the pre-renewal scripts  
    September Statistics
    During the period there were 100 Commits. 17 Commits from Pull Requests with  3 Bugs* fixed from merged issues.  
    *Please note: Bug fixes are counted as references to issues; it does not include bugs that have been fixed without issue reference.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.