- Viewing Profile: Reputation: Like it~*
Community Stats
- Group Members
- Active Posts 150
- Profile Views 12829
- Member Title Advanced Member
- Age Age Unknown
- Birthday Birthday Unknown
-
Gender
Not Telling
#81951 Introducing the Item Options System
Posted by Like it~*
on 24 April 2017 - 02:43 AM
#81385 [Guia e orientação] Criando habilidades. PT-BR
Posted by Like it~*
on 31 March 2017 - 03:56 AM
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.
EL_STONE_HAMMER, EL_ROCK_CRUSHER, EL_ROCK_CRUSHER_ATK, EL_STONE_RAIN,
MG_EARTHBOLT = 8443,
case AB_RENOVATIO: case AB_HIGHNESSHEAL: case AB_DUPLELIGHT_MAGIC: case WM_METALICSOUND: case MH_ERASER_CUTTER: case KO_KAIHOU:
skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag);
case MG_EARTHBOLT:
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 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:
case NPC_EARTHQUAKE: skillratio += 100 +100*skill_lv +100*(skill_lv/2); break;
case MG_EARTHBOLT: skillratio += 50; break;
case NPC_VAMPIRE_GIFT: skillratio += ((skill_lv-1)%5+1)*100; break;
case MG_EARTHBOLT: skillratio += 50; break;
- 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.
// ID,Alcance,Dano,Inf,Elemento,Nk,Splash,MaxLv,ListNum,CastCancel,ChanceDefCast,Inf2,MaxCount,TipoSkill,BlowCount,Nome,Descrição // 01 ID // 02 Alcance (Habilidades de combo não verificam pelo alcance // Se o alcance < 5, então a habilidade é considerada melee) // 03 Dano (8- dano repetitivo, 6- dano único) // 04 inf (0- passivo, 1- inimigo, 2- local, 4- si próprio, 16- amigo, 32- armadilha) // 05 Elemento (0 - neutro, 1 - água, 2 - terra, 3 - fogo, 4 - vento, 5 - veneno, // 6 - sagrado, 7 - sombrio, 8 - fantasma, 9 - morto-vivo, -1 - elemento da arma // -2 - elemento endowed, -3 - elemento aleatório.) // 06 nk (Propriedade de Dano das Habilidades): // 0x01 - habilidade sem dano // 0x02 - tem área visual (necessária modificação na source) // 0x04 - dano dividido entre os alvos (necessário 0x02 em ordem de trabalho) // 0x08 - habilidade ignora dano bônus dado por cartas de quem a conjura // 0x10 - habilidade ignora bônus elementais // 0x20 - habilidade ignora a defesa do alvo (tipo variado sempre ingnora) // 0x40 - habilidade ignora a esquiva do alvo (tipo mágido sempre ignora) // 0x80 - habilidade ignora defesa do alvo dada por cartas // 07 Área de efeito (-1 para wide) // 08 Nível máximo da habilidade // 09 Número de danos (Quando positivo, acresenta o dano por dano, // valores negativos apenas mostraram o número de acertos, sem aumentar os danos totais) // 10 A conjuração pode ser cancelada? // 11 Redução de defesa durante conjuração. // 12 inf2 (Informações de Habilidades 2): // 0x0001- habilidade de quest // 0x0002- habilidade de npc // 0x0004- habilidade de casamento // 0x0008- habilidade de espírito // 0x0010- habilidade de clã // 0x0020- habilidade de música // 0x0040- habilidade de dueto // 0x0080- armadilha // 0x0100- habilidade que o alvo é quem invoca // 0x0200- não pode ser usada em si próprio // 0x0400- apenas pode ser usada em membros de grupo // 0x0800- apenas pode ser usada em membros de clã // 0x1000- não pode ser usada em inimigos // 0x2000- habilidade ignora proteção terrestre (exemplo: Chuva de Flechas) // 0x4000- chorus skill // 13 maxcount: Quantidade máxima de habilidades colocadas no chão. // player_land_skill_limit/monster_land_skill_limit está ativo. Para Habilidades // que atacam usando um caminho, este é o comprimento do caminho a ser utilizado. // 14 Tipo de Ataque (nenhum, arma, magia, misc) // 15 Blowcount (amount of tiles skill knockbacks) // 16 Nome // 17 Descrição //=================================================================*/
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
// SkillID,TempoConjuracao,AfterCastActDelay,AfterCastWalkDelay,Duracao1,Duracao2,Cool Down,Tempo de Cast Fixo //== Explanando: // TempoConjuracao: Tempo para lançar esta habilidade, em milissegundos. // AfterCastActDelay: Atraso "normal",o personagem não pode usar habilidades,em milésimos de segundo. // AfterCastWalkDleay: Tempo necessário para que o personagem possa mover-se novamente, em milésimos de segundo. // Duracao1 / Duracao2: Geralmente, o tempo ultilizado pela habilidade, em alguns casos é usado para salvar dados especiais. // Cool Down: Tempo necessário até que o personagem possa voltar a usar essa habilidade, em milésimos de segundo. // Tempo de Cast Fixo: Tempo de execução das habilidades em milissegundos (quando 0, usa-se 20% do tempo de cast e menor que 0 significa que não há tempo de cast fixo) //== Extra // Em todos os campos você pode usar ":" como delimitador de valores específicos do nível, // - Exemplo usando SM_PROVOKE // - Original:6,0,0,0,30000,0,1000 // - Modificado:6,0,0,0,30000,0,1000:2500:3000:etc // - Faz no nível 1 ter 1000 (1s) cool down, lvl 2 2500 (2.5s), lvl 3 3000, e assim por diante. //==========================================
8443,2000,1,000,0,0,0
// SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10 // // 01 ID // 02 HP cost // 03 Max HP trigger // 04 SP cost // 05 HP rate // If positive, it is a percent of your current hp, otherwise it is a percent of your max hp. // 06 SP rate // If positive, it is a percent of your current sp, otherwise it is a percent of your max sp. // 07 Zeny cost // 08 Required Weapon // See doc/item_db.txt for weapon types // 99 any weapon **includes bare fists** // To include more than one weapon type use type1:type2:type3 // 09 Required Ammo // See doc/item_db.txt for ammo types // 99 any ammo type // To include more than one ammo type use type1:type2:type3 // 10 Required ammo ammount // 11 Required State // none = Nothing special // move_enable = Requires to be able to move // recover_weight_rate = Requires to be less than 50% weight // water = Requires to be standing on a water cell // cart = Requires a Pushcart // riding = Requires to ride either a peco or a dragon // falcon = Requires a Falcon // sight = Requires Sight skill activated // hiding = Requires Hiding skill activated // cloaking = Requires Cloaking skill activated // explosionspirits = Requires Fury skill activated // cartboost = Requires a Pushcart and Cart Boost skill activated // shield = Requires a 0,shield equipped // warg = Requires a Warg // dragon = Requires to ride a Dragon // ridingwarg = Requires to ride a Warg // mado = Requires to have an active mado // poisonweapon = Requires to be under Poisoning Weapon. // rollingcutter = Requires at least one Rotation Counter from Rolling Cutter. // elementalspirit = Requires to have an Elemental Spirit summoned. // mh_fighting = Requires Eleanor fighthing mode // mh_grappling = Requires Eleanor grappling mode // peco = Requires riding a peco // 12 Spirit sphere cos
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
{
// ------------------------------ Mandatory Fields ----------------------------
Id: ID (int) (Required)
Name: "Skill Name" (string) (Required)
MaxLevel: Skill Level (int) (Required)
// ------------------------------ Optional Fields -----------------------------
Description: "Skill Description" (string) (optional but recommended)
Range: Skill Range (int) (optional, defaults to 0) (can be grouped by Levels)
Note: Range < 5 is considered Melee range.
Hit: Hit Type (int) (optional, default "BDT_NORMAL")
Types - "BDT_SKILL", "BDT_MULTIHIT" or "BDT_NORMAL"
SkillType: { (bool, defaults to "Passive")
Passive: true/false (boolean, defaults to false)
Enemy: true/false (boolean, defaults to false)
Place: true/false (boolean, defaults to false)
Self: true/false (boolean, defaults to false)
Friend: true/false (boolean, defaults to false)
Trap: true/false (boolean, defaults to false)
}
SkillInfo: { (bool, defaults to "None")
Quest: true/false (boolean, defaults to false)
NPC: true/false (boolean, defaults to false)
Wedding: true/false (boolean, defaults to false)
Spirit: true/false (boolean, defaults to false)
Guild: true/false (boolean, defaults to false)
Song: true/false (boolean, defaults to false)
Ensemble: true/false (boolean, defaults to false)
Trap: true/false (boolean, defaults to false)
TargetSelf: true/false (boolean, defaults to false)
NoCastSelf: true/false (boolean, defaults to false)
PartyOnly: true/false (boolean, defaults to false)
GuildOnly: true/false (boolean, defaults to false)
NoEnemy: true/false (boolean, defaults to false)
IgnoreLandProtector: true/false (boolean, defaults to false)
Chorus: true/false (boolean, defaults to false)
FreeCastReduced: true/false (boolean, defaults to false)
Works like skill SA_FREECAST, allow move and attack with reduced speed.
FreeCastNormal: true/false (boolean, defaults to false)
Works like FreeCastReduced, but not reduce speed.
}
AttackType: "Attack Type" (string, defaults to "None")
Types: "None", "Weapon", "Magic" or "Misc"
Element: "Element Type" (string) (Optional field - Default "Ele_Neutral")
(can be grouped by Levels)
Types: "Ele_Neutral", "Ele_Water", "Ele_Earth", "Ele_Fire", "Ele_Wind"
"Ele_Poison", "Ele_Holy", "Ele_Dark", "Ele_Ghost", "Ele_Undead"
"Ele_Weapon" - Uses weapon's element.
"Ele_Endowed" - Uses Endowed element.
"Ele_Random" - Uses random element.
DamageType: { (bool, default to "NoDamage")
NoDamage: true/false No damage skill
SplashArea: true/false Has splash area (requires source modification)
SplitDamage: true/false Damage should be split among targets (requires 'SplashArea' in order to work)
IgnoreCards: true/false Skill ignores caster's % damage cards (misc type always ignores)
IgnoreElement: true/false Skill ignores elemental adjustments
IgnoreDefense: true/false Skill ignores target's defense (misc type always ignores)
IgnoreFlee: true/false Skill ignores target's flee (magic type always ignores)
IgnoreDefCards: true/false Skill ignores target's def cards
}
SplashRange: Damage Splash Area (int, defaults to 0) (can be grouped by Levels)
Note: -1 for screen-wide.
NumberOfHits: Number of Hits (int, defaults to 1) (can be grouped by Levels)
Note: when positive, damage is increased by hits,
negative values just show number of hits without
increasing total damage.
InterruptCast: Cast Interruption (bool, defaults to false)
CastDefRate: Cast Defense Reduction (int, defaults to 0)
SkillInstances: Skill instances (int, defaults to 0) (can be grouped by Levels)
Notes: max amount of skill instances to place on the ground when
player_land_skill_limit/monster_land_skill_limit is enabled. For skills
that attack using a path, this is the path length to be used.
KnockBackTiles: Knock-back by 'n' Tiles (int, defaults to 0) (can be grouped by Levels)
CastTime: Skill cast Time (in ms) (int, defaults to 0) (can be grouped by Levels)
AfterCastActDelay: Skill Delay (in ms) (int, defaults to 0) (can be grouped by Levels)
AfterCastWalkDelay: Walk Delay (in ms) (int, defaults to 0) (can be grouped by Levels)
SkillData1: Skill Data/Duration (in ms) (int, defaults to 0) (can be grouped by Levels)
SkillData2: Skill Data/Duration (in ms) (int, defaults to 0) (can be grouped by Levels)
CoolDown: Skill Cooldown (in ms) (int, defaults to 0) (can be grouped by Levels)
FixedCastTime: Fixed Cast Time (in ms) (int, defaults to 0) (can be grouped by Levels)
Note: when 0, uses 20% of cast time and less than
0 means no fixed cast time.
CastTimeOptions: {
IgnoreDex: true/false (boolean, defaults to false)
IgnoreStatusEffect: true/false (boolean, defaults to false)
IgnoreItemBonus: true/false (boolean, defaults to false)
Note: Delay setting 'IgnoreDex' only makes sense when
delay_dependon_dex is enabled.
}
SkillDelayOptions: {
IgnoreDex: true/false (boolean, defaults to false)
IgnoreStatusEffect: true/false (boolean, defaults to false)
IgnoreItemBonus: true/false (boolean, defaults to false)
Note: Delay setting 'IgnoreDex' only makes sense when
delay_dependon_dex is enabled.
}
Requirements: {
HPCost: HP Cost (int, defaults to 0) (can be grouped by Levels)
SPCost: SP Cost (int, defaults to 0) (can be grouped by Levels)
HPRateCost: HP % Cost (int, defaults to 0) (can be grouped by Levels)
Note: If positive, it is a percent of your current hp,
otherwise it is a percent of your max hp.
SPRateCost: SP % Cost (int, defaults to 0) (can be grouped by Levels)
Note: If positive, it is a percent of your current sp,
otherwise it is a percent of your max sp.
ZenyCost: Zeny Cost (int, defaults to 0) (can be grouped by Levels)
WeaponTypes: { (bool or string, defaults to "All")
NoWeapon: true/false (boolean, defaults to false)
Daggers: true/false (boolean, defaults to false)
1HSwords: true/false (boolean, defaults to false)
2HSwords: true/false (boolean, defaults to false)
1HSpears: true/false (boolean, defaults to false)
2HSpears: true/false (boolean, defaults to false)
1HAxes: true/false (boolean, defaults to false)
2HAxes: true/false (boolean, defaults to false)
Maces: true/false (boolean, defaults to false)
2HMaces: true/false (boolean, defaults to false)
Staves: true/false (boolean, defaults to false)
Bows: true/false (boolean, defaults to false)
Knuckles: true/false (boolean, defaults to false)
Instruments: true/false (boolean, defaults to false)
Whips: true/false (boolean, defaults to false)
Books: true/false (boolean, defaults to false)
Katars: true/false (boolean, defaults to false)
Revolvers: true/false (boolean, defaults to false)
Rifles: true/false (boolean, defaults to false)
GatlingGuns: true/false (boolean, defaults to false)
Shotguns: true/false (boolean, defaults to false)
GrenadeLaunchers: true/false (boolean, defaults to false)
FuumaShurikens: true/false (boolean, defaults to false)
2HStaves: true/false (boolean, defaults to false)
MaxSingleWeaponType: true/false (boolean, defaults to false)
DWDaggers: true/false (boolean, defaults to false)
DWSwords: true/false (boolean, defaults to false)
DWAxes: true/false (boolean, defaults to false)
DWDaggerSword: true/false (boolean, defaults to false)
DWDaggerAxe: true/false (boolean, defaults to false)
DWSwordAxe: true/false (boolean, defaults to false)
}
AmmoTypes: { (for all types use string "All")
A_ARROW: true/false (boolean, defaults to false)
A_DAGGER: true/false (boolean, defaults to false)
A_BULLET: true/false (boolean, defaults to false)
A_SHELL: true/false (boolean, defaults to false)
A_GRENADE: true/false (boolean, defaults to false)
A_SHURIKEN: true/false (boolean, defaults to false)
A_KUNAI: true/false (boolean, defaults to false)
A_CANNONBALL: true/false (boolean, defaults to false)
A_THROWWEAPON: true/false (boolean, defaults to false)
}
AmmoAmount: Ammunition Amount (int, defaults to 0) (can be grouped by Levels)
State: "Required State" (string, defaults to "None") (can be grouped by Levels)
Types : 'None' = Nothing special
'Moveable' = Requires to be able to move
'NotOverWeight' = Requires to be less than 50% weight
'InWater' = Requires to be standing on a water cell
'Cart' = Requires a Pushcart
'Riding' = Requires to ride either a peco or a dragon
'Falcon' = Requires a Falcon
'Sight' = Requires Sight skill activated
'Hiding' = Requires Hiding skill activated
'Cloaking' = Requires Cloaking skill activated
'ExplosionSpirits' = Requires Fury skill activated
'CartBoost' = Requires a Pushcart and Cart Boost skill activated
'Shield' = Requires a 0,shield equipped
'Warg' = Requires a Warg
'Dragon' = Requires to ride a Dragon
'RidingWarg' = Requires to ride a Warg
'Mado' = Requires to have an active mado
'PoisonWeapon' = Requires to be under Poisoning Weapon.
'RollingCutter' = Requires at least one Rotation Counter from Rolling Cutter.
'ElementalSpirit' = Requires to have an Elemental Spirit summoned.
'MH_Fighting' = Requires Eleanor fighthing mode
'MH_Grappling' = Requires Eleanor grappling mode
'Peco' = Requires riding a peco
SpiritSphereCost: Spirit Sphere Cost (int, defaults to 0) (can be grouped by Levels)
Items: {
ItemID or Aegis_Name : Amount (int, defaults to 0) (can be grouped by Levels)
Item example: "ID717" or "Blue_Gemstone".
Notes: Items with amount 0 will not be consumed.
Amount can also be grouped by levels.
}
}
Unit: {
Id: [ UnitID, UnitID2 ] (int, defaults to 0) (can be grouped by Levels)
Layout: Unit Layout (int, defaults to 0) (can be grouped by Levels)
Range: Unit Range (int, defaults to 0) (can be grouped by Levels)
Interval: Unit Interval (int, defaults to 0) (can be grouped by Levels)
Target: "Unit Target" (string, defaults to "None")
Types:
All - affects everyone
NotEnemy - affects anyone who isn't an enemy
Friend - affects party, guildmates and neutral players
Party - affects party only
Guild - affects guild only
Ally - affects party and guildmates only
Sameguild - affects guild but not allies
Enemy - affects enemies only
None - affects nobody
Flag: {
UF_DEFNOTENEMY: true/false (boolean, defaults to false)
UF_NOREITERATION: true/false (boolean, defaults to false)
UF_NOFOOTSET: true/false (boolean, defaults to false)
UF_NOOVERLAP: true/false (boolean, defaults to false)
UF_PATHCHECK: true/false (boolean, defaults to false)
UF_NOPC: true/false (boolean, defaults to false)
UF_NOMOB: true/false (boolean, defaults to false)
UF_SKILL: true/false (boolean, defaults to false)
UF_DANCE: true/false (boolean, defaults to false)
UF_ENSEMBLE: true/false (boolean, defaults to false)
UF_SONG: true/false (boolean, defaults to false)
UF_DUALMODE: true/false (boolean, defaults to false)
UF_RANGEDSINGLEUNI: true/false (boolean, defaults to false)
}
}
}
{
Id: 8443
Name: "MG_EARTHBOLT"
Description: "Earth Bolt"
MaxLevel: 10
Range: 9
Hit: "BDT_MULTIHIT"
SkillType: {
Enemy: true
}
}
AttackType: "Magic"
Element: "Ele_Earth"
NumberOfHits: {
Lv1: 1
Lv2: 2
Lv3: 3
Lv4: 4
Lv5: 5
Lv6: 6
Lv7: 7
Lv8: 8
Lv9: 9
Lv10: 10
}
InterruptCast: true
CastTime: {
Lv1: 640
Lv2: 960
Lv3: 1280
Lv4: 1600
Lv5: 1920
Lv6: 2100
Lv7: 1560
Lv8: 2880
Lv9: 3200
Lv10: 3520
}
AfterCastActDelay: {
Lv1: 1000
Lv2: 1200
Lv3: 1400
Lv4: 1600
Lv5: 1800
Lv6: 2000
Lv7: 2200
Lv8: 2400
Lv9: 2600
Lv10: 2800
}
FixedCastTime: {
Lv1: 160
Lv2: 240
Lv3: 320
Lv4: 400
Lv5: 480
Lv6: 700
Lv7: 640
Lv8: 720
Lv9: 800
Lv10: 880
}
Requirements: {
SPCost: {
Lv1: 25
Lv2: 50
Lv3: 75
Lv4: 100
Lv5: 125
Lv6: 150
Lv7: 175
Lv8: 200
Lv9: 225
Lv10: 250
}
}
},
Job_Name: { // Job names as in src/map/pc.c (they are hardcoded at the moment so if you want to add a new job you should add it there)
inherit: ( "Other_Job_Name" ); // Base job from which this job will inherit its skill tree. NV_TRICKDEAD inheritance is skipped for non-novices from the source
skills: { // SKILL_NAMEs come from the Name (16th column) value in db/re/skill_db.txt
SKILL_NAME1: Max_Level // Use this for skills that don't have other skill prerequisite; Max_Level is a numeric value that should match your client side files
SKILL_NAME2: { // Use this for skills which have other skills as prerequisites
MaxLevel: Max_Level // Max_Level is a numeric value that should match your client side files
SKILL_NAME_PREREQUISITE: Level_Prerequisite // The prerequisite skill and min level for having this skill available. Should also match your client side files
SKILL_NAME_PREREQUISITE2: Level_Prerequisite2 // You can add as many prerequisite skills as you want. Minimum of 1 if you add a skill this way
}
}
MG_EARTHBOLT: {
MaxLevel: 10
MG_FIREBOLT: 5
MG_LIGHTNINGBOLT: 5
}
{"MG_FIREWALL", 18; Pos = 19, MaxLv = 10, NeedSkillList = {6, 12}}
Adicione a baixo:
{"MG_EARTHBOLT",8443; Pos = 20, MaxLv = 10, NeedSkillList = {19,20}}
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}
}
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;
}
#80927 Utilizar multíplos iteminfo.lua
Posted by Like it~*
on 04 March 2017 - 06:54 PM
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.
Spoiler
main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not result then return false, msg end for k,v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result then return false, msg end end for k,v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result then return false, msg end end end -- process _TempItems _TempItems = nil return true, "good" end
- 3º Passo:entre no arquivo criado iteminfo.lua, que foi colado o código e onde estiver essa partemain = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th }Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche.
- 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.
Spoilerfunction main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not result then return false, msg end for k, v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result then return false, msg end end for k, v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result then return false, msg end end end return true, "good" end
Adicione ao lugar removido o seguinte código.
for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) endFim!
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.
muito bom obrigado por compartilhar!!]
Seguinte tem alguma forma de colocar para o jogador escolher sua linguagem e de acordo com isso ler o itemInfo de sua região ? por exemplo eu coloco no clientinfo varios servers porem em vez de colocar o nome eu coloco a linguage tipo:
No iRO é:
Thor
Chaos
No nosso seria:
English
Portuguese
Spañol
etc..
dai de acordo que o jogador escolhe o seu jogo lerá o itemInfo.lub (bRO, kRO iRO) de acordo com a linguagem dele, seria uma possibilidade de colocar em servidores com dual language! e seria muito bom! eu gostaria de aprender como por um servidor com + de um idioma sem ter que ficar traduzindo, tipo o @lang, ele muda a linguagem geral, queria um que os jogadores pudessem escolher sua linguagem e dar load na que eles escolherem, seria TOP! se alguem souber e quiser compartilhar o conhecimento, e se alguem quiser participar de uma equipe de tradução, estou traduzindo o arquivo.po 100% par português porém ele é gigantesco e sozinho ta osso! Fica o convite!
Acho que é isso que vc quer...
http://herc.ws/board...-dual-language/
#80808 Utilizar multíplos iteminfo.lua
Posted by Like it~*
on 28 February 2017 - 09:45 PM
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.
main = function()
iiFiles = {
"System/itemInfo_Translation.lua", -- 1st priority
"System/itemInfo_iRO.lua", -- 2nd
"System/itemInfo_idRO.lua", -- 3rd
"System/itemInfo_kRO.lua", -- 4th
}
_TempItems = {}
_Num = 0
-- check existing item
function CheckItem(ItemID, DESC)
if not (_TempItems[ItemID]) then
_TempItems[ItemID] = DESC
_Num = _Num + 1
else
myTbl = {}
for pos,val in pairs(_TempItems[ItemID]) do
myTbl[pos] = val
end
for pos,val in pairs(DESC) do
if not (myTbl[pos]) or myTbl[pos] == "" then
myTbl[pos] = val
end
end
_TempItems[ItemID] = myTbl
end
end
-- end check
-- Read all files
for i,iiFile in pairs(iiFiles) do
d = dofile(iiFile)
end
-- Read all files
-- process _TempItems
for ItemID,DESC in pairs(_TempItems) do
--print("ItemID",ItemID,"Name",DESC.identifiedDisplayName)
result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum)
if not result then
return false, msg
end
for k,v in pairs(DESC.unidentifiedDescriptionName) do
result, msg = AddItemUnidentifiedDesc(ItemID, v)
if not result then
return false, msg
end
end
for k,v in pairs(DESC.identifiedDescriptionName) do
result, msg = AddItemIdentifiedDesc(ItemID, v)
if not result then
return false, msg
end
end
end
-- process _TempItems
_TempItems = nil
return true, "good"
end
main = function()
iiFiles = {
"System/itemInfo_Translation.lua", -- 1st priority
"System/itemInfo_iRO.lua", -- 2nd
"System/itemInfo_idRO.lua", -- 3rd
"System/itemInfo_kRO.lua", -- 4th
}
Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche.
- 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.
function main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not result then return false, msg end for k, v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result then return false, msg end end for k, v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result then return false, msg end end end return true, "good" end
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/...iteminfo-files/
#79264 [Request] Script RWC or WRC automated 7 vs 7
Posted by Like it~*
on 02 January 2017 - 11:43 PM
NPC that will queue PARTY 1 until there is a PARTY 2 and warp them to GvG Map
Eg.
Parties should be in different class like HW,Champ,Prof,Stalker,Clown,High Priest,Paladin with no Job Repetition (Example: Paladin and Lord Knight in the same party)
Parties will be warped into designated arena when all parties are good to go and complete.
They will need to enter a 0/7 room just to be sure that they are only 7 chars with no job repetition
If Arena 1,2,3,4 are full players will be in queue mode
Party 1 and Party 2 cannot use the skill until the NPC says "3","2","1","Buffs up!"
Players cannot move from their designated location like a barricade is on until the NPC Says "Ready?","3","2","1","GOOOOOOOOOOO!!!" and the barricades blocking the way will turned off.
GvG Maps are:
guild_vs1,2,3,4
I am hoping for a help here cause i am planning to release a 7v7 RWC Practice Server so players from other trans server can come to my server to practice in their upcoming tournaments.
For reference:
I found something similar, but only works with eAmod, would need adaptation to the hercules.
https://rathena.org/...-rules-release/
- Viewing Profile: Reputation: Like it~*
- Privacy Policy
- Hercules Forum Rules ·



Find content