Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. - Crie um arquivo LUA de nome blessed wand na sua pasta weapons/scripts. Cole este conteúdo nele: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -3, -68, -3, -68, 7, 6, 4, 8) local condition = createConditionObject(CONDITION_CURSED) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 5, 2000, -60) setCombatCondition(combat, condition) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end - Adicione essa linha de configuração ao seu weapons.xml. <wand id="7429" level="100" mana="50" event="script" value="blessed wand.lua"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </wand> Só vou comentar uma coisa, você mesmo poderia ter feito esse script, era só mudar: function onCastSpell(cid, var) por function onUseWeapon(cid, var).
  2. Não não, Não podemos usar nosso mapa ainda, então tivemos que quebrar o galho com este
  3. http://www.youtube.com/watch?v=QYkexkCCLVs Bom, pessoal, esse é o vídeo que mostra o Sistema de Forja do Solscian Alternative Tibia Server! Como eu não sou nada experiente com gravação de vídeos, ele ficou uma droga, assistam em Full Screen ou pelo menos tentem assistir =(
  4. Versão: 8.54 "Quatro baús em uma câmara, você só pode pegar uma Magic Sword elemental." - Vamos lá, crie um arquivo LUA de nome msquest na pasta actions/scripts. Coloque este conteúdo nele: function onUse(cid, item, fromPosition, itemEx, toPosition) local queststatus = getPlayerStorageValue(cid, 3333) if item.uid == 25801 then if queststatus == -1 then doPlayerSendTextMessage(cid, 22, "You have found a Fire Magic Sword") local item = doPlayerAddItem(cid, 2400, 1) doItemSetAttribute(item, "name", 'fire magic sword') doItemSetAttribute(item, "actionid", 6990) setPlayerStorageValue(cid, 3333, 1) else doPlayerSendTextMessage(cid, 22, "It is empty") end elseif item.uid == 25802 then if queststatus == -1 then doPlayerSendTextMessage(cid, 22, "You have found a Water Magic Sword") local item = doPlayerAddItem(cid, 2400, 1) doItemSetAttribute(item, "name", 'water magic sword') doItemSetAttribute(item, "actionid", 6991) setPlayerStorageValue(cid, 3333, 1) else doPlayerSendTextMessage(cid, 22, "It is empty") end elseif item.uid == 25803 then if queststatus == -1 then doPlayerSendTextMessage(cid, 22, "You have found an Earth Magic Sword") local item = doPlayerAddItem(cid, 2400, 1) doItemSetAttribute(item, "name", 'earth magic sword') doItemSetAttribute(item, "actionid", 6992) setPlayerStorageValue(cid, 3333, 1) else doPlayerSendTextMessage(cid, 22, "It is empty") end elseif item.uid == 25804 then if queststatus == -1 then doPlayerSendTextMessage(cid, 22, "You have found an Energy Magic Sword") local item = doPlayerAddItem(cid, 2400, 1) doItemSetAttribute(item, "name", 'energy magic sword') doItemSetAttribute(item, "actionid", 6993) setPlayerStorageValue(cid, 3333, 1) else doPlayerSendTextMessage(cid, 22, "It is empty") end end return TRUE end - Agora, crie outro arquivo LUA de nome magicsword, na sua pasta actions/scripts. Coloque este conteúdo nele. function onUse(cid, item, fromPosition, itemEx, toPosition) if item.aid == 6990 then if(table.maxn(summons) == 2) then doPlayerSendTextMessage(cid, "You already have two summons.") else doSummonMonster(cid, 'Fire Elemental') doPlayerSendTextMessage(cid, "You have summoned a Fire Elemental") end elseif item.aid == 6991 then if(table.maxn(summons) == 2) then doPlayerSendTextMessage(cid, "You already have two summons.") else doSummonMonster(cid, 'Water Elemental') doPlayerSendTextMessage(cid, "You have summoned a Water Elemental") end elseif item.aid == 6992 then if(table.maxn(summons) == 2) then doPlayerSendTextMessage(cid, "You already have two summons.") else doSummonMonster(cid, 'Earth Elemental') doPlayerSendTextMessage(cid, "You have summoned a Earth Elemental") end elseif item.aid == 6993 then if(table.maxn(summons) == 2) then doPlayerSendTextMessage(cid, "You already have two summons.") else doSummonMonster(cid, 'Energy Elemental') doPlayerSendTextMessage(cid, "You have summoned a Energy Elemental") end end return TRUE end - E finalmente, coloque essas linhas no seu arquivo actions.xml, localizado em data/actions <action uniqueid="25801" event="script" value="msquest.lua"/> <action uniqueid="25802" event="script" value="msquest.lua"/> <action uniqueid="25803" event="script" value="msquest.lua"/> <action uniqueid="25804" event="script" value="msquest.lua"/> <action actionid="6990" event="script" value="magicsword.lua"/> <action actionid="6991" event="script" value="magicsword.lua"/> <action actionid="6992" event="script" value="magicsword.lua"/> <action actionid="6993" event="script" value="magicsword.lua"/> Não testei, mas creio que irá funcionar. Não esqueça de colocar os uniqueids 25801, 25802, 25803, 25804 nos baús!
  5. if item.uid == 10500 then queststatus = getPlayerStorageValue(cid,10500) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a Steel Shield refined +15") local item1 = doPlayerAddItem(cid,2509,1) doItemSetAttribute(item1, "defense", 36) doItemSetAttribute(item1, "description", "Refinado(Def): +15.\nEste Item foi obtido por " .. getPlayerName(cid) .. ".")] setPlayerStorageValue(cid,10500,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end end end
  6. O erro está no spells.xml, localizado em data/spells
  7. Então procure qualquer servidor 8.4/8.42, estes provavelmente são baseados no TFS 0.3.4
  8. http://uploadhyper.com/file/2805/cryingdamson4pl2console.7z.html Esse é o link da dev 0.3.4 do The Forgotten Server, O próprio Mock deixa claro que testou seu script nessa versão e tal funcionou perfeitamente.
  9. Sim, a função mudou, mas tal getItemAttribute(uid, key) retornará valor nil se usada de modo incorreto. Boa sorte, criador do tópico.
  10. Via edição das sources, Em outras palavras, você teria que "re-compilar" o distro.
  11. Depois que o distro TheForgottenServer foi atualizado para 0.3.6, as funções getItemAttack e demais, se tornaram obsoletas, e por isso você não conseguirá usar esse sistema de refinamento em um servidor 8.54.
  12. Olá, MatheusMkalo. Crie um arquivo LUA na sua pasta spells/scripts, com o nome de crystal overdrive. Cole este conteúdo nele. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SHIVERARROW) function onGetFormulaValues(cid) level = getPlayerLevel(cid) distSkill = getPlayerSkillLevel(cid, 4) local skillTotal, levelTotal = distSkill, level / 5 return -(skillTotal * 0 + levelTotal * 0 + 3000), -(skillTotal * 0 + levelTotal * 0 + 3000) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if doPlayerRemoveItem(cid, 2352, 1) then return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "You need a crystal arrow to cast this spell") end return 0 end Logo após, abra seu arquivo spells.xml e adicione essa linha. <instant name="Crystal Overdrive" words="edevo mas frigo" lvl="100" maglv="20" mana="100" prem="0" needtarget="1" exhaustion="1000" needlearn="0" event="script" value="crystal overdrive.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Lembrando que você pode configurar como quiser a linha do spells.xml. A sua Crystal Arrow+Elvish Bow funciona por causa do script que postei anteriormente?
  13. Oneshot

    [Resolvido]

    <skill id="0" multiplier="6.6"/> <skill id="1" multiplier="6.6"/> <skill id="2" multiplier="6.6"/> <skill id="3" multiplier="6.6"/> <skill id="4" multiplier="6.6"/> <skill id="5" multiplier="6.6"/> <skill id="6" multiplier="6.6"/> Essa parte do script explica tudo. Diminua o valor para um número entre 0 e 2. Alguém que dê um ataque em um monstro com esses valores multiplicativos, vai ficar com skill 500 e tantos. E vai causar um travamento no servidor mesmo. E essa parte aqui: manamultiplier="16.0" O script entende que com esse valor, o jogador com a tal classe vai demorar muito, muito tempo mesmo para ganhar um magic level.
  14. Função A doPlayerSetPromotionLevel(cid, level) Função B doPlayerSetVocation(cid, vocation) O comum erro de voltar a vocação é por causa que scripters dos servidores 8.5x usam a função B ao invés da função A. Ou seja ao invés de dar toda essa volta com um CreatureScript, por que não usar a função A em um NPC de Promotion?
  15. Autor: Oneshot Versão do Servidor*: 8.54 Comentário: Aqui está um script bem simples, ele faz com que ao se matar um jogador qualquer, o playerKiller em questão ganhe 200 GPs. Creio que este script pode ser melhor aproveitado em OTservs de War. 1 - Crie um arquivo LUA na sua pasta creaturescripts/scripts de nome recompensa, adicione este conteúdo ao arquivo: config = { reward = 200 --define o quanto o jogador ganhará } function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(isPlayer(lastHitKiller) == TRUE) then doPlayerAddMoney(lastHitKiller, config.reward) doPlayerSendTextMessage(lastHitKiller, MESSAGE_STATUS_CONSOLE_ORANGE, "Voc\ê matou " .. getCreatureName(cid) .. " e recebeu " .. config.reward .. " GPs.") end return TRUE end 2 - Adicione essa linha ao seu creaturescripts.xml: <event type="death" name="Recompensa" script="recompensa.lua"/> 3 - E essa linha ao seu login.lua, localizado no creaturescripts/scripts. registerCreatureEvent(cid, "Recompensa") * Creio que funcionará em servidores baseados no TheForgottenServer 0.3.6pl1
  16. CONST_ME_DRAWBLOOD = 0 CONST_ME_LOSEENERGY = 1 CONST_ME_POFF = 2 CONST_ME_BLOCKHIT = 3 CONST_ME_EXPLOSIONAREA = 4 CONST_ME_EXPLOSIONHIT = 5 CONST_ME_FIREAREA = 6 CONST_ME_YELLOW_RINGS = 7 CONST_ME_GREEN_RINGS = 8 CONST_ME_HITAREA = 9 CONST_ME_TELEPORT = 10 CONST_ME_ENERGYHIT = 11 CONST_ME_MAGIC_BLUE = 12 CONST_ME_MAGIC_RED = 13 CONST_ME_MAGIC_GREEN = 14 CONST_ME_HITBYFIRE = 15 CONST_ME_HITBYPOISON = 16 CONST_ME_MORTAREA = 17 CONST_ME_SOUND_GREEN = 18 CONST_ME_SOUND_RED = 19 CONST_ME_POISONAREA = 20 CONST_ME_SOUND_YELLOW = 21 CONST_ME_SOUND_PURPLE = 22 CONST_ME_SOUND_BLUE = 23 CONST_ME_SOUND_WHITE = 24 CONST_ME_BUBBLES = 25 CONST_ME_CRAPS = 26 CONST_ME_GIFT_WRAPS = 27 CONST_ME_FIREWORK_YELLOW = 28 CONST_ME_FIREWORK_RED = 29 CONST_ME_FIREWORK_BLUE = 30 CONST_ME_STUN = 31 CONST_ME_SLEEP = 32 CONST_ME_WATERCREATURE = 33 CONST_ME_GROUNDSHAKER = 34 CONST_ME_HEARTS = 35 CONST_ME_FIREATTACK = 36 CONST_ME_ENERGYAREA = 37 CONST_ME_SMALLCLOUDS = 38 CONST_ME_HOLYDAMAGE = 39 CONST_ME_BIGCLOUDS = 40 CONST_ME_ICEAREA = 41 CONST_ME_ICETORNADO = 42 CONST_ME_ICEATTACK = 43 CONST_ME_STONES = 44 CONST_ME_SMALLPLANTS = 45 CONST_ME_CARNIPHILA = 46 CONST_ME_PURPLEENERGY = 47 CONST_ME_YELLOWENERGY = 48 CONST_ME_HOLYAREA = 49 CONST_ME_BIGPLANTS = 50 CONST_ME_CAKE = 51 CONST_ME_GIANTICE = 52 CONST_ME_WATERSPLASH = 53 CONST_ME_PLANTATTACK = 54 CONST_ME_TUTORIALARROW = 55 CONST_ME_TUTORIALSQUARE = 56 CONST_ME_MIRRORHORIZONTAL = 57 CONST_ME_MIRRORVERTICAL = 58 CONST_ME_SKULLHORIZONTAL = 59 CONST_ME_SKULLVERTICAL = 60 CONST_ME_ASSASSIN = 61 CONST_ME_STEPSHORIZONTAL = 62 CONST_ME_BLOODYSTEPS = 63 CONST_ME_STEPSVERTICAL = 64 CONST_ME_YALAHARIGHOST = 65 CONST_ME_BATS = 66 CONST_ME_SMOKE = 67 Mas os efeitos de monstros são 55. redspark bluebubble poff yellowspark explosionarea explosion firearea yellowbubble greenbubble blackspark teleport energy blueshimmer redshimmer greenshimmer fire greenspark mortarea greennote rednote poison yellownote purplenote bluenote whitenote bubbles dice giftwraps yellowfirework redfirework bluefirework stun sleep watercreature groundshaker hearts fireattack energyarea smallclouds holydamage bigclouds icearea icetornado iceattack stones smallplants carniphila purpleenergy yellowenergy holyarea bigplants cake giantice watersplash plantattack
  17. Oneshot

    Exori Antigo

    Substitua o conteúdo do seu arquivo berserk.lua da pasta spells/scripts/attack local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) function onGetFormulaValues(cid, level, skill, attack, factor) local damageTotal, levelTotal = skill + attack, level / 5 return -(damageTotal * 1.5 + levelTotal), -(damageTotal * 2.5 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Substitua a tag do seu Berserk (exori) por esta, no spells.xml. . <instant name="Berserk" words="exori" lvl="35" manapercent="90" prem="1" needweapon="1" exhaustion="1000" needlearn="0" event="script" value="attack/berserk.lua"> <vocation id="4"/> <vocation id="8"/> </instant> Pronto, seu Exori está configurado do jeito oldTibia. Causa dano de 170 a 270, se usado por um Knight de lv. 100, com skill 50 equipado com um Stonecutter Axe. (suposição)
  18. - Crie um arquivo LUA com o nome de 'newhunt' na pasta npc/scripts do seu servidor. 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 local huntpos = {x=, y=, z=} if(msgcontains(msg, 'new hunt')) then if(getPlayerLevel(cid) > 199 and getPlayerLevel(cid) < 300) then if isInArray({5, 6, 7, 8}, getPlayerVocation(cid)) then doTeleportThing(cid, huntpos) else selfSay('Sorry, but this hunt is for promoted players.', cid) end else selfSay('Sorry, but this hunt is for players with level 200 from 299.', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) - Crie um arquivo XML na pasta data/npc do seu servidor. <?xml version="1.0" encoding="UTF-8"?> <npc name="Haran, the boatman" script="data/npc/scripts/newhunt.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="78" body="124" legs="123" feet="7" addons="3"/> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|. You want to go to a {new hunt}?"/> <parameter key="message_fareweel" value="Bye, |PLAYERNAME|"/> </parameters> </npc> - Você deverá editar uma coisa no script LUA: local huntpos = {x=, y=, z=} Coloque as coordenadas de onde o player deve ser teleportado, logo, se as coordenadas forem 1000, 1000, 7: local huntpos = {x=1000, y=1000, z=7} Como você não falou as vocações que devem ser colocadas, eu fiz para que hunt fosse para Master Sorcerer, Elder Druid, Royal Paladin e Elite Knight.
  19. Oneshot

    Talkaction Muito Importante

    function onSay(cid, words, param, channel) if(param == '') then doPlayerSendCancel(cid, "Voc\ê deve digitar um valor para o storage") end doCreatureSetStorage(cid, STORAGEID, param) return true end Registre isso no seu talkactions.xml <talkaction words="!changestorage" event="script" value="changestorage.lua"/> Fiz o script acima, pelo que eu entendi do pedido. Você quer que quando o GOD fale "!changestorage 1", o STORAGEID do GOD para que o GOD possa passar por tal sqm bloqueado, mas se você quiser que mude o valor do storageID de um player qualquer, o script acima é inútil.
  20. Olá, 7Belo. A primeira coisa que você deverá é ir em seu editor de mapa, colocar um baú no mapa e lhe dar um uniqueID, e então criar um arquivo LUA na pasta actions/scripts do seu servidor. Dentro deste arquivo LUA, você deverá colocar o seguinte conteúdo: function onUse(cid, item, frompos, item2, topos) if item.uid == uniqueID then if getCreatureStorage(cid, 9876) == -1 then doPlayerAddItem(cid, ID DO ITEM, QUANTIDADE) doPlayerSendTextMessage(cid, 22, "You have found NOME DO ITEM") doCreatureSetStorage(cid, 9876, 1) else doPlayerSendTextMessage(cid, 22, "It is empty.") end end return 1 end Logo depois no seu arquivo actions.xml: <action uniqueid="uniqueID" script="nome do arquivo.lua"/> Você deverá mudar no script: - A palavra uniqueID pelo número que você colocou no baú. - O número 9876 por qualquer número que você imagine. - ID DO ITEM pelo id do item que será encontrado no baú - QUANTIDADE, caso o item seja agrupável, como crystal coins, se não coloque 1. - NOME DO ITEM, pelo nome do item, obviamente. - nome do arquivo.lua pelo nome que você deu ao arquivo que você criou em actions/scripts
  21. Tomei a liberdade de responder o usuário novamente, - Em sua pasta data/npc, faça um arquivo XML de nome donations. Cole isto lá dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="The Donation Seller" script="data/npc/scripts/donations.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="78" body="124" legs="123" feet="7" addons="3"/> <parameters> <parameter key="message_greet" value="Oi |PLAYERNAME|. Eu vendo itens poderosos, fale {list} para saber que itens eu vendo."/> <parameter key="message_fareweel" value="Tchau, |PLAYERNAME|"/> </parameters> </npc> - Na sua pasta npc/scripts, faça um arquivo LUA de nome donations. Cole isto lá dentro: 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 -- Conversa Jogador/NPC if(msgcontains(msg, 'list')) then selfSay('Eu vendo {warlord sword}, {cranial basher}, {titan axe}, {blessed wand} and {piercing bolt}. Cada uma delas custa 100 moedas.', cid) elseif(msgcontains(msg, 'warlord sword') then selfSay('Voc\ê quer comprar Warlord Sword por 100 moedas?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'cranial basher') then selfSay('Voc\ê quer comprar Cranial Basher por 100 moedas?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'titan axe') then selfSay('Voc\ê quer comprar Titan Axe por 100 moedas?', cid) talkState[talkUser] = 3 elseif(msgcontains(msg, 'blessed wand') then selfSay('Voc\ê quer comprar Blessed Wand por 100 moedas?', cid) talkState[talkUser] = 4 elseif(msgcontains(msg, 'piercing bolt') then selfSay('Voc\ê quer comprar Piercing Bolt por 100 moedas?', cid) talkState[talkUser] = 5 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 2408, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7415, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7413, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 4) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7429, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 5) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7363, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  22. Ah, claro! Estava me esquecendo do items.xml. Procure no seu arquivo items.xml pelo Blessed Sceptre, substitua tudo dele com isto: <item id="7429" article="a" name="blessed sceptre"> <attribute key="weight" value="3900"/> <attribute key="weaponType" value="wand"/> <attribute key="description" value="This wand is powerful!"/> <attribute key="weaponType" value="wand"/> <attribute key="range" value="5"/> </item> Para que Druids e Sorcerers usem a Wand, coloque esta tag no weapons.xml: <wand id="7429" level="LEVEL REQUERIDO" mana="MANA POR TIRO" event="script" value="blessed wand.lua"> <vocation id="1"/> <!-- Sorcerer --> <vocation id="5"/> <!-- Master Sorcerer --> <vocation id="2"/> <!-- Druid --> <vocation id="6"/> <!-- Elder Druid --> </wand>
  23. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) function onGetFormulaValues(cid, level, maglevel) local magTotal, levelTotal = maglevel, level / 5 return -(magTotal * 1.24 + levelTotal), -(magTotal * 2.38 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Bom, com essa nova estrutura de script para as magias, você pode manipular os danos com maior exatidão. Você pode mudar os fatores multiplicados que seguem o magTotal para aumentar os danos: 1.24 e 2.38. Mas nunca deve colocar o primeiro fator maior que o segundo. No exemplo de magia acima, um template de level 100 e magic level 50, causaria um dano de 82 a 139 em uma criatura com defesa neutra a Fogo.
  24. Ah, isso é fácil. Todas as wands do meu servidor tem seu dano balanceado conforme o Magic Level do usuário. Como eu não sei qual o script da sua Sudden Death, peguei a minha própria que causava um dano razoável* e me baseei nela. Crie um arquivo LUA com o nome de blessed wand na pasta weapons/scripts do seu servidor, coloque este conteúdo lá dentro. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(cid, level, maglevel) local magTotal, levelTotal = maglevel, level return 0, -(magTotal * 0.6 + levelTotal * 0.6 + 36) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end No seu arquivo weapons.xml, copie essa linha de configuração: <wand id="7429" level="LEVEL REQUERIDO" mana="MANA POR TIRO" event="script" value="blessed wand.lua"> <vocation id="1"/> <!-- Sorcerer --> <vocation id="5"/> <!-- Master Sorcerer --> </wand> Digamos que o jogador que use essa wand tenha level 50 e magic level 50, ele causará um dano de 0~96 por tiro. *Minha sudden death causa um dano de 0~160, usada por um jogador level 50 e magic level 50.
  25. O comando /attr nos devs 8.54 deve ser usado da seguinte maneira se você quiser editar itens: /attr set atributo "valor O atributo pode ser: attack, defense, armor e etc...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...