Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Solutions

  1. xWhiteWolf's post in (Resolvido)[Ajuda]Wodbo Em Polonês was marked as the answer   
    items.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
  2. xWhiteWolf's post in (Resolvido)[AJUDA] Como Mudar A Cor Da Magia "Correr" was marked as the answer   
    local 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
  3. xWhiteWolf's post in (Resolvido)[Npc] não está funcionando was marked as the answer   
    a 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())
  4. xWhiteWolf's post in (Resolvido)[duvida] meu ot... was marked as the answer   
    Prontinho
    -- 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
  5. xWhiteWolf's post in (Resolvido)Sistema sobre attack de monstros was marked as the answer   
    se 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)
  6. xWhiteWolf's post in (Resolvido)Premio para player antigo. was marked as the answer   
    ok, 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
     
  7. xWhiteWolf's post in (Resolvido)Quest com Tempo was marked as the answer   
    os.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
  8. xWhiteWolf's post in (Resolvido)Experience rune was marked as the answer   
    peguei 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
  9. xWhiteWolf's post in (Resolvido)Arena PvM - 7.6 was marked as the answer   
    nossa 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   
  10. xWhiteWolf's post in (Resolvido)[HELP] Pet System was marked as the answer   
    o 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
  11. xWhiteWolf's post in (Resolvido)[AJUDA] Food Especiais was marked as the answer   
    Eu 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
  12. xWhiteWolf's post in (Resolvido)[SUPPORT/SPELL] Destroy Field was marked as the answer   
    se 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
  13. 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)
  14. xWhiteWolf's post in (Resolvido)[PEDIDO] Script de Trainning Room, só um player. was marked as the answer   
    nã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 :~
  15. xWhiteWolf's post in (Resolvido)[EDITAR] Script - Auto Loot was marked as the answer   
    tenho 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
  16. xWhiteWolf's post in (Resolvido)[PEDIDO] Editar Items. was marked as the answer   
    Você 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"/>

Informação Importante

Confirmação de Termo