
Solutions
-
xWhiteWolf's post in (Resolvido)[Ajuda]Wodbo Em Polonês was marked as the answeritems.xml e creaturescripts, algumas coisas também são nas configs ou até nas sources (daí nao tem como mudar) mas todo o resto é possível fuçando os scripts
-
xWhiteWolf's post in (Resolvido)[AJUDA] Como Mudar A Cor Da Magia "Correr" was marked as the answerlocal combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 33000) setConditionFormula(condition, 0.3, -24, 0.3, -24) setCombatCondition(combat, condition) function onCastSpell(cid, var) doCreatureSay(cid, Correr, 19) doCombat(cid, combat, var) end e coloca no config.lua pra não sair escrito a magia quando vc usa ela
-
xWhiteWolf's post in (Resolvido)[Npc] não está funcionando was marked as the answera melhor forma de fazer isso seria colocando um creaturescript onKill pra esse monstro mas isso ia fazer com que qualquer monstro q vc matasse com esse nome te desse o storage da quest, dessa forma q e eu coloquei mesmo se o cara morrer ou não matar o monstro ele consegue o premio depois
local nomeMonst = "Danger ice" -- Nome do mosntro que ele vai sumonarlocal itemid = 2160 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if getPlayerStorageValue(cid, 9755) == -1 then if(msgcontains(msg, 'yes')) then selfSay('Mate este monstro para completar sua tarefa.', cid) doCreateMonster(nomeMonst,getThingPos(cid)) setPlayerStorageValue(cid, 9755,1) talkState[talkUser] = 1 end return true end if getPlayerStorageValue(cid, 9755) == 1 then selfSay('Você matou o monstro e ganhou um item.', cid) doPlayerAddItem(cid, itemid,1) setPlayerStorageValue(cid, 9755,2) talkState[talkUser] = 0 return true end if getPlayerStorageValue(cid, 9755) == 2 then selfSay('Você já fez esta tarefa.', cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) -
xWhiteWolf's post in (Resolvido)[duvida] meu ot... was marked as the answerProntinho
-- script by Marcryzius D'evil. function onSay(cid, words, param) config = { level=100000, -- level necessario pra reseta. RemainingLvl=100, -- level que ficará depois de ser resetado. exper=4200, -- experiencia que ficará depois de ser resetado. pid=getPlayerGUID(cid), -- não mecha skull="yes", -- players com white skull podem resetar? ("yes" or "no"). redskull="yes", -- players com red skull podem resetar? ("yes" or "no"). prot="yes", -- players precisam estar em protection zone pra resetar? ("yes" or "no"). bat="yes" --players precisam estar sem fight pra resetarem? ("yes" or "no"). } function getResets(cid) reset = getPlayerStorageValue(cid,1020) if reset < 0 then reset = 0 end return reset end if(config.skull == "no") and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"apenas players sem white skull podem resetar.") return TRUE end if(config.redskull == "no") and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"apenas player sem red skull podem resetar.") return TRUE end if(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"você precisa estar em protection zone pra poder resetar.") return TRUE end if(config.bat == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"você precisa estar sem battler pra poder resetar.") return TRUE end if getPlayerLevel(cid) >= config.level then setPlayerStorageValue(cid,1020,getResets(cid)+1) doPlayerPopupFYI(cid,"you now was reset, you have "..getResets(cid)+(1).." reset\'s.") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..getResets(cid)+(1).."]' WHERE `players`.`id` = "..config.pid) db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exper.." WHERE `id` = "..config.pid) else doPlayerSendCancel(cid, "You need to have level "..config.level.." or more you may be reset.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end return TRUE end -
xWhiteWolf's post in (Resolvido)Sistema sobre attack de monstros was marked as the answerse tem a função getResets é mais fácil ainda: local percent = getPlayerMaxHealth(target)+(getResets*50)/10 -- tira 10% da vida + quantidade de resets *50. Se o cara tiver 10 resets vai ser 10% da vida+ 500.
O do monstros muito que provavelmente é só pelas sources, a menos que você crie magias de ataque que removem % da vida e coloquem os monstros pra só usarem elas :DD;
No caso de uma magia de healing vc pode criar as formulas de min e máximo e colocar pra multiplicar o math random disso por getResets+1 (o +1 serve pra não bugar caso o player tenha 0 resets)
-
xWhiteWolf's post in (Resolvido)Premio para player antigo. was marked as the answerok, me empolguei.. o script ficaria assim:
abre seu creaturescripts\login.lua e adiciona isso daqui nele:
if getPlayerStorageValue(cid, 5555) == -1 then setPlayerStorageValue(cid, 5555, os.time()) end function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { uniqid = 17790, item = XXXXX, -- ID DO ITEM ano = 365*24*60*60, msg1 = "You have found a ".. getItemNameById(config.item)..".", -- mensagem ao fazer a quest msg2 = "You have to play for one year to get the prize.", -- mensagem pra quem não tem 1 ano de jogo } if item.uid == config.uniqid then if os.time() - getCreatureStorage(cid, 5555) >= config.ano then doPlayerSendTextMessage(cid,22,config.msg1) doPlayerAddItem(cid,config.item,1) setPlayerStorageValue(cid, 5555, os.time()) else doPlayerSendTextMessage(cid,22,config.msg2) doSendMagicEffect(cid, CONST_ME_POFF) end end return 1 end Nesse modo dá pra fazer a quest todo ano. Ao fazer a quest pela primeira vez ele zera a data e tem que esperar +1 ano pra fazer ela dnv
-
xWhiteWolf's post in (Resolvido)Quest com Tempo was marked as the answeros.time é pra contar o tempo em segundos desde 1 de janeiro de 1970. Quando vc usa a função os.time ele retorna o valor de tempo que se passou desde 1 de janeiro de 1970. O ideal é utilizar os.date que tem um critério um pouco mais legal dependendo da variável indicadora que vc utilizar. Mas não tem nada a ver com oque vc pediu aí. Pra fazer algo com tempo vc usa o addEvent e ele funciona mais ou menos assim:
Observe um script que utiliza addEvent que jajá eu explico
function onUse(cid, item, frompos, item2, topos) local tempo = 8000 local wall1 = {x=612, y=345, z=7, stackpos=1} local pos1 = getThingfromPos(wall1) local wall2 = {x=653, y=345, z=7, stackpos=1} local pos2 = getThingfromPos(wall2) local monster1 = {x=615, y=345, z=7, stackpos=1} local posmonster1 = getThingfromPos(monster1) local monster3 = {x=654, y=345, z=7, stackpos=1} local idparede = 9788 local alavanca = {x=610, y=344, z=7, stackpos=1} local alavancapos = getThingfromPos(alavanca) function wait1(wall1) doCreateItem(idparede,1,wall1) end function wait2(wall2) doCreateItem(idparede,1,wall2) end function wait3(alavanca) doTransformItem(item.uid,1946) end if item.uid == 7777 and item.itemid == 1945 then if pos1.itemid ~= 0 and pos2.itemid ~= 0 then doRemoveItem(pos1.uid,5) doSendMagicEffect(pos1,12) doRemoveItem(pos2.uid,5) doSendMagicEffect(pos2,12) doCreateMonster("Juggernaut",monster1) doSendMagicEffect(monster1,13) doPlayerSendTextMessage(cid,25, "You have ".. tempo/1000 .." seconds to finish the quest") addEvent(wait1,tempo,wall1) addEvent(wait2,tempo,wall2) addEvent(wait3,tempo,alavanca) else doPlayerSendCancel(cid,"You can't start the quest twice.") end elseif item.uid == 7777 and item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) for x = monster1.x, monster3.x do for y = monster1.y, monster3.y do for z = monster1.z, monster3.z do local mob = getTopCreature({x=x, y=y, z=z}).uid if mob ~= 0 and isMonster(mob) then doRemoveCreature(mob) else doPlayerSendCancel(cid,"Sorry, not possible.") end end end return true end end return true end addEvent(wait1,tempo,wall1) ele faz o evento chamado wait1 dali a um tempo igual a tempo (no começo do script eu falei que tempo era 8 segundos) e na posição wall1.
function wait1(wall1) doCreateItem(idparede,1,wall1) end a função wait1 cria um item de idparede na posição wall1. Então essa quest nada mais faz doque criar uma parede que impede a passagem dali a 8 segundos.
Seguindo essa lógica da pra fazer a quest que você quer. Só criar uma função que pega o valor de tempo = 0 e adiciona 1 até o valor de tempo final, dai você coloca addEvent (função X, tempo*1000
executar determinada função em tempo*1000 mas se o tempo muda então ele vai ficar executando a função de X em X segundos de acordo com o valor de tempo. Para tempo = 1 será 1 segundo, para tempo = 2 será dali a 2 segundos e assim por diante.
AGORA SOBRE A OUTRA DÚVIDA
Para colocar tempo nos storages vc só tem que fazer isso daqui
local daysvalue = 7 * 24 * 60 * 60 time = os.time() + daysvalue setPlayerStorageValue(cid, 13340, time) perceba que ele usa os.time, então o script é basicamente isso daqui:
tempo que storage vai ficar: 7 dias (7*24*60*60)
tempo = segundos desde 1 de janeiro de 1970 até agora + 7 dias
dar storage pro player 13340 durante tempo.
Espero ter ajudado, qualquer dúvida dá uma pesquisada ou me manda PM
-
xWhiteWolf's post in (Resolvido)Experience rune was marked as the answerpeguei isso na lib do meu server.. aqui funcionou normal a cor verde, o problema foi que o docreature say tá saindo do lado do numero de exp então fica bem zoado, sugiro que vc troque doCreatureSay(cid, text, 14) por isso daqui:
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, text) e sobre a cor sair preta.. eu não testei, mas não tem porque não sair da cor que eu coloquei lá, a menos que seu server não tenha definido na lib oque é a TEXTCOLOR_GREEN.
doSendAnimatedText(pos, "+"..exp , TEXTCOLOR_GREEN) tenta substituir seguindo essa tabela aqui que eu peguei na lib do meu server
TEXTCOLOR_BLUE = 5 TEXTCOLOR_GREEN = 18 TEXTCOLOR_TEAL = 35 TEXTCOLOR_LIGHTGREEN = 66 TEXTCOLOR_DARKBROWN = 78 TEXTCOLOR_LIGHTBLUE = 89 TEXTCOLOR_DARKPURPLE = 112 TEXTCOLOR_BROWN = 120 TEXTCOLOR_GREY = 129 TEXTCOLOR_DARKRED = 144 TEXTCOLOR_DARKPINK = 152 TEXTCOLOR_PURPLE = 154 TEXTCOLOR_DARKORANGE = 156 TEXTCOLOR_RED = 180 TEXTCOLOR_PINK = 190 TEXTCOLOR_ORANGE = 192 TEXTCOLOR_DARKYELLOW = 205 TEXTCOLOR_YELLOW = 210 TEXTCOLOR_WHITE = 215 TEXTCOLOR_NONE = 255 ficando assim:
doSendAnimatedText(pos, "+"..exp , 18) se quiser o white coloca 215 no lugar do 18. Testa assim
-
xWhiteWolf's post in (Resolvido)Arena PvM - 7.6 was marked as the answernossa eu bronzei.. agora tá certo..
function onUse(cid, item, frompos, item2, topos) if item.uid == 6003 then if item.itemid == 1945 then local player1pos = {x=32915, y=32328, z=15, stackpos=253} local player1 = getThingfromPos(player1pos) local nplayer1pos = {x=32915, y=32325, z=15, stackpos=253} if player1.itemid > 0 then local player1level = getPlayerLevel(player1.uid) local questlevel = 80 if player1level >= questlevel then local queststatus1 = getPlayerStorageValue(player1.uid,6000) if queststatus1 == -1 then local demon1pos = {x=32915, y=32324, z=15, stackpos=253} local mob = getThingfromPos(demon1pos).uid local playa = getThingfromPos(nplayer1pos).uid if mob ~= 0 or playa ~= 0 then doPlayerSendCancel(cid,"Someone else is doing the quest right now.") else doSummonCreature("Demodras", demon1pos) doSendMagicEffect(player1pos,2) doTeleportThing(player1.uid,nplayer1pos) doSendMagicEffect(nplayer1pos,10) doTransformItem(item.uid,item.itemid+0) end else doPlayerSendCancel(cid,"You can't enter because you've already finished the arena.") end else doPlayerSendCancel(cid,"Sorry, not possible.") end else doPlayerSendCancel(cid,"Sorry, not possible.") end elseif item.itemid == 1945 then if getPlayerAccess(cid) == 3 then doTransformItem(item.uid,item.itemid-1) else doPlayerSendCancel(cid,"Sorry, not possible.") end end end return 1 end tinha faltado o stackpos. Sem ele script checa qualquer coisa que tenha dentro da arena (até mesmo o chão) auhuhauha dai com o stackpos ele checa só na posição 253 (que é a mais alta, só para players e monstros).
EDIT1: Se eu resolvi seu problema diga algo como "tópico resolvido, podem fechar" pra facilitar o controle do fórum de quais tópicos tão resolvidos/em aberto Por um fórum melhor
-
xWhiteWolf's post in (Resolvido)[HELP] Pet System was marked as the answero erro é pra retornar caso o player seja menor que 150... coloca isso daqui e mesmo assim eu ainda acho que não vai funcionar
if getPlayerLevel(cid) < 150 then return doPlayerSendCancel(cid, "Você só pode usar acima do level 150.") end -
xWhiteWolf's post in (Resolvido)[AJUDA] Food Especiais was marked as the answerEu não gosto de pessoas que postam metade do script e pedem ajuda mas dessa vez eu vou te perdoar porque estou considerando que foi sem querer.
local conditions = {CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_PARALYZE, CONDITION_DRUNK, CONDITION_DROWN, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED } local config = { storage = 10001, --use empty storage exhaust = 600 --Exhaust is in seconds 600 equals 10min } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local food = SPECIAL_FOODS[item.itemid] if(food == nil) then return false end if (getPlayerStorageValue(cid, config.storage) <= os.time()) then setPlayerStorageValue(cid, config.storage, os.time() + config.exhaust) if(not doAddCondition(cid, exhaust)) then return true end for _, condition in ipairs(conditions) do if(getCreatureCondition(cid, condition)) then doRemoveCondition(cid, condition) end end doRemoveItem(item.uid, 1) doCreatureSay(cid, food, TALKTYPE_MONSTER) doSendMagicEffect(getPlayerPosition(cid),14) end return true end -
xWhiteWolf's post in (Resolvido)[SUPPORT/SPELL] Destroy Field was marked as the answerse deu errado significa que esse script não é o único de destroy field que vc no seu servidor porque esse daí tá perfeito e infinito.
tenta isso daqui:
function onUse(cid, item, frompos, item2, topos) fieldpos = topos fieldpos.stackpos = 254 fielditem = getThingfromPos(fieldpos) if getPlayerMagLevel(cid) >= 3 then if fielditem.itemid > 0 and fielditem.itemid ~= 1497 and fielditem.itemid ~= 1498 then doSendMagicEffect(topos,2) doRemoveItem(fielditem.uid,1) if item.type > 1 then doChangeTypeItem(item.uid,item.type) else end else doSendMagicEffect(frompos,2) return 0 end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You don't have the required magic level to use that rune.") end return 1 end -
xWhiteWolf's post in (Resolvido)FASTER REGENERATION was marked as the answer<attribute key="healthGain" value="100" /> <attribute key="healthTicks" value="3000" /> <attribute key="manaGain" value="200" /> <attribute key="manaTicks" value="3000" /> ticks é o tempo em milisegundos e healthgain e mana gain é o quanto recupera de vida/mana. (ISSO NO ITEMS.XML)
DAI VC ABRE O MOVEMENTS.XML E COLOCA ISSO <movevent type="Equip" itemid="ID DO SEU HELMET" slot="head" level="40" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="ID DO SEU HELMET" slot="head" event="function" value="onDeEquipItem"/> itemid: coloca o id do item
slot: tipo de lugar que vai ativar o efeito (nesse caso, se vc colocar o helmet em qualquer slot que não seja a cabeça não ativa)
level: level pra usar o item
event e value: não mexe
vocation id é as classes que podem usar, o showIndescription = 0 indica que não vai mostrar aquela classe na descrição (isso serve pra evitar repetições do tipo: Esse item pode ser usado por sorceres e master sorceres)
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Script de Trainning Room, só um player. was marked as the answernão precisa de um script, é só editar o mapa (remove as portas) e colocar pz em tudo (menos dentro do trainer). Só vai poder entrar um :~
-
xWhiteWolf's post in (Resolvido)[EDITAR] Script - Auto Loot was marked as the answertenho razões para acreditar que é só mudar isso na talkactions:
local expl = param:explode(':') para
local expl = param:explode(',') mas como esse script é todo complicado eu posso estar errado kkk
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Editar Items. was marked as the answerVocê coloca no items.xml oque vc quer que o item faça, experimenta usar comandos de itens parecidos:
Exemplo: Quero que o set de Knight dê skill de club/sword/axe.. daí vc procura algum item que faça isso e só copia a parte que aumenta a skill
<attribute key="skillSword" value="3" /> <attribute key="skillAxe" value="3" /> <attribute key="skillClub" value="3" /> Se você quiser que aumente distance é só colocar
<attribute key="skillDist" value="3" /> para absorver danos é bem simples
<attribute key="absorbPercentPhysical" value="3" /> <attribute key="absorbPercentEarth" value="5" /> <attribute key="absorbPercentDeath" value="6" /> <attribute key="absorbPercentFire" value="-3" /> <attribute key="absorbPercentIce" value="2" /> Perceba que o PercentFire está negativo, é porque ele tem fraqueza contra fogo, positivo ele é bom contra o elemento, negativo ele é fraco contra o elemento.
Pra aumentar ML é só usar:
<attribute key="magiclevelpoints" value="1" /> Pra aumentar speed é só procurar a BOH e copiar:
<attribute key="speed" value="20" /> E não esquece de colocar no final
<attribute key="showattributes" value="1" /> para que apareçam os atributos quando o player der look no item.
Em
<attribute key="slotType" value="necklace" /> Você escolhe que tipo de item aquilo é, os values são: body, two-handed, one-handed, ammo, ring, necklace, legs, feet, head, backpack
E PARA FINALIZAR DECLARE TUDO NO MOVEMENTS.XML:
<movevent type="Equip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onDeEquipItem"/> itemid="IDDOITEM" troque IDDOITEM pelo ID DO ITEM (BEM ÓBVIO, NÉ?)
slot="TIPO DE SLOT" coloque um dos slots possíveis, os que são possiveis estão nessa lista aqui:
armor feet legs head shield pickupable necklace ring OBSERVAÇÃO FINAL: O SLOT QUE VC DECLARAR NO MOVEMENTS TEM QUE SER DO MESMO TIPO QUE O ITEMS.XML
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora as flechas/bows/armas: Essas não precisam declarar no movements.xml mas precisam de um script no weapon.xml
1) Flechas
As flechas são bem simples:
<attribute key="slotType" value="ammo" /> <attribute key="attack" value="25" /> <attribute key="maxHitChance" value="90" /> <attribute key="weaponType" value="ammunition" /> <attribute key="ammoType" value="arrow" /> <attribute key="shootType" value="arrow" /> slotype = ammo para ficar no lugar da munição (ammo)
Attack vc muda a vontade pro que vc quiser
MaxHitChance = chance de acertar o hit, qualquer numero menor que 100 apresenta uma chance do hit falhar
WeaponType= Tipo de arma, flechas são munições então deixe sempre ammunition
ammoTyoe = Tipo de munição, pode ser "arrow" ou "bolt" dependendo doque vc quiser usar, um bow ou um crossbow
shootType é o efeito que vai sair, no caso dessa aí seria uma arrow normalzinha mas vc pode colocar qualquer flecha que exista ou até mesmo copiar efeitos de runas
Dê ctrl+F no items.xml em shootType e copie diferentes tipos e vá vendo no servidor qual se encaixa melhor na sua opinião.
2) Bows e Crossbows
Eu te aconselho copiar de algum item que já exista o modificar oque você quiser
<attribute key="slotType" value="two-handed" /> <attribute key="weaponType" value="distance" /> <attribute key="ammoType" value="bolt" /> <attribute key="range" value="5" /> <attribute key="hitChance" value="1" /> isso daqui é um crossbow duas mãos que ataca bolt (podia ser arrows tb) a uma distância de no máximo 5 SQM (modifique o range)
a chance de hit padrão dele é 1 e essa hit chance soma com a da munição
3) Wands e Rods
<attribute key="weight" value="2900" /> <attribute key="weaponType" value="wand" /> <attribute key="shootType" value="ice" /> <attribute key="range" value="3" /> peso, tipo (mesmo que seja uma rod o tipo é "wand"), tipo de efeito que sai dela (no caso é o ice), distância que ataca (no caso, 3 sqm)
Agora no weapons.xml:
<wand id="2190" level="7" mana="2" min="8" max="18" type="energy" event="function" value="default"> <!-- Wand of Vortex --> <vocation id="1"/> </wand> id do item, level pra usar, custo de mana por hit, dano minimo e maximo, tipo de ataque, event (deixe function para ele fazer tudo que vc colocou no items.xml) value= não mexa a menos que vc seja um programador C++, vocation vc coloca as classes que podem usar.
1= sorc, 2= druid, 3= pally, 4= kina, 5= master sorc, 6= elder druid, 7= royal pally, 8= elit kina
OBS: Você pode colocar isso também para que quando o player dê look não apareça o nome da classe que pode usar aquele determinado item (isso é util quando vc declarar que ambos sorceres e master sorcerers podem usar o item, evitando as repetições quando o player der look no item
<vocation id="5" showInDescription="0"/> <vocation id="1"/> 4) Outros tipos de arma
É bem simples, só edite oque quiser seguindo o modelo:
<attribute key="weight" value="6800" /> <attribute key="defense" value="65" /> <attribute key="attack" value="90" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="5" /> <attribute key="elementIce" value="30" /> <attribute key="slotType" value="two-handed" /> <attribute key="decayTo" value="2401" /> <attribute key="duration" value="60" /> weight = peso
defense= defesa q ela dá
attack = ataque
weapontype = Tipo de arma (sword, axe, club)
extradef = defesa extra (fica Defesa 65 +5 nesse caso)
ElementIce = adiciona dano elemental à arma, pode usar também ElementFire, ElementEarth e ElementEnergy
slotType = se a arma é duas mãos ou não (caso não seja apenas retire essa linha)
decayTo = apos um tempo igual a duration (em segundos) ela vira o item de ID 2401 (se não quiser isso apenas remova essas duas ultimas linhas)
OBSERVAÇÃO FINAL: Tudo que você não quiser utilizar é só remover a linha do items.xml, e todo tipo de edição em armas deve ser declarado no weapons.xml seguindo o exemplo. (COMO VOCÊ NÃO TÁ CRIANDO NENHUM ITEM E SIM EDITANDO OS QUE JÁ EXISTEM EU TE ACONSELHO A PROCURAR O ITEM LÁ DANDO CTRL F E PROCURANDO PELO ID DOQUE SAIR ADICIONANDO UM MONTE DE LINHA A MAIS QUE TALVEZ DÊ CONFLITO COM AS QUE JÁ EXISTAM).
OS ITENS QUE VC COLOCAR PRA DAR SKILL, ML OU PORCENTAGEM ELEMENTAL VOCÊ DEVE DECLARAR NO MOVEMENTS.XML E SE ESSE ITEM FOR PARA UMA DETERMINADA VOCAÇÃO VOCÊ DEVE DECLARAR TAMBÉM SEGUINDO O EXEMPLO:
<movevent type="Equip" itemid="7886" slot="feet" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="7886" slot="feet" event="function" value="onDeEquipItem"/>