Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Estarei atualizando o sistema com alguns fixes como o da possibilidade de refinar itens agrupáveis e adicionando esta possibilidade de criar uma pedra para cada atributo. Abraços.
  2. Pede-se pelo menos boa gramática no cargo de Moderação. Versões
  3. É que depende muito de quais são os parâmetros funcionais do seu servidor nesta função: doAddPlayerBanishment(getPlayerGUID(cid), 3, (os.time() + (24 * 60 * 60)), 12, 2, "[sISTEMA ANTI-BOT]") Testei em duas revisões do The Forgotten Server 0.4.0, uma de 8.62 e outra de 8.71 e obtive total funcionalidade. Se você estiver usando um servidor diferente daqueles que testei, poste aqui, posso descobrir os parâmetros corretos nas sources, mas preciso delas. Abraços.
  4. function onUse(cid, item, fromPosition, itemEx, toPosition) local combate = COMBAT_PHYSICALDAMAGE -- tipo de dano p = fromPosition local a0 = {x=p.x, y=p.y-1, z=p.z} local a1 = {x=p.x, y=p.y-2, z=p.z} local a2 = {x=p.x, y=p.y-3, z=p.z} local a3 = {x=p.x, y=p.y-4, z=p.z} local a4 = {x=p.x, y=p.y-5, z=p.z} local end1 = {x=p.x, y=p.y-6, z=p.z} local storage = 3425 -- Nao mexer local MIN_DAMAGE = 100 -- Dano minimo local MAX_DAMAGE = 500 -- Dano maximo local level = 10 -- Level necessario local UID = 1121 -- UniqueId do item local chance = 10 if getPlayerStorageValue(cid,storage) == 1 then doPlayerSendCancel(cid,"You are exhausted.") end if getPlayerLevel(cid) < level then doPlayerSendCancel(cid,"You must be level "..level..".") end if getPlayerLevel(cid) >= level and item.uid == UID and getPlayerStorageValue(cid,storage) == -1 then setPlayerStorageValue(cid,storage,1) addEvent(setPlayerStorageValue,5000,cid,storage,-1) addEvent(doSendDistanceShoot,100,fromPosition, a4, 9) addEvent(doAreaCombatHealth,100,a0, combate, a0, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) addEvent(doAreaCombatHealth,200,a1, combate, a1, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) addEvent(doAreaCombatHealth,300,a2, combate, a2, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) addEvent(doAreaCombatHealth,400,a3, combate, a3, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) addEvent(doAreaCombatHealth,500,a4, combate, a4, 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) addEvent(doCreateItem,600,1294,1,end1) if math.random(1, 100) > chance then doCreateItem(1294, end1) end addEvent(doSendMagicEffect,600,end1,44) end return TRUE end
  5. É isso que devia ser feito, usar esse filtro apenas para idiotas que usassem Caps Lock em tudo no titulo do tópico.
  6. Bugs corrigidos e broadcast adicionado. Abraços.
  7. Pronto, achei o problema, estava na função mesmo. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat, area) local function getPlayerWeaponId(cid) -- By Oneshot local ret = 0 for slot = 6, 5, -1 do local item = getPlayerSlotItem(cid, slot) if item.itemid > 0 and isInArray({1, 2, 3, 5}, getItemInfo(item.itemid).weaponType) then ret = item.itemid break end end return ret end function onUseWeapon(cid, var) if getPlayerWeaponId(cid) == 7438 then doCombat(cid, combat, var) return true end doPlayerSendCancel(cid, "You cannot use this arrow with this ordinary bow.") return false end Sobre o consumo da munição mesmo com a arma incorreta, só com alterações nas sources para ficar legal. Ou você pode colocar para adicionar o item, logo abaixo da mensagem de erro. doPlayerAddItem(cid, 2546, 1) Mas aí só ficaria legal mesmo com um autostack, senão a munição seria removida e o item pararia na mochila ou no chão por exemplo.
  8. Bom tutorial, espero que a sequência de aulas continue. Gostei da tirinha também. Mas aproveita e esculhamba o título logo: Aulas Básicas com o Senhorito iuniX. Abraços.
  9. Então, cara, tenho apenas uma mínima ideia de qual possa ser o problema. O problema pode ser qualquer função interna usada na composição da minha função getPlayerWeaponId(cid) e para resolver, eu preciso do nome correto do servidor global que você usa para ver como ele funciona e porque ele não está retornando um itemid correto.
  10. A linha que eu passei acima tem que ser retirada. Por curiosidade, que servidor você usa?
  11. No caso, você tirou a linha do ID 2432 do weapons.xml, parecida com essa? <melee id="2432" level="35" unproperly="1" event="function" value="default"/> Mas não deixe de tentar com outro tipo de item que seja bow.
  12. Isso que dá copiar um script apenas para ganhar reputação. Não sabe explicar como instalar o script com eficiência para funcionar corretamente. Do jeito que o Darkhaos fez, só é possível usar o sistema com MySQL. Abraços.
  13. Não é possível, esses tipos de atributos só podem ser configurados no items.xml,não é possível criar um item que modifique eles. Só criando um atributo falso e um script que se baseie nele, como o Aluccard fez. Mas se você usar vários itens com reflexão, a taxa acumula sim.
  14. Não agora que estou um tanto ocupado, mas se você quiser, você pode criar itens que refletem coisas pelo items.xml sem precisar de scripts secundários. Por exemplo, vou pegar a magic plate armor, de ID 2472. <item id="2472" article="a" name="magic plate armor"> <attribute key="description" value="An enchanted gem glows on the plate armor." /> <attribute key="weight" value="8500" /> <attribute key="armor" value="17" /> <attribute key="slotType" value="body" /> </item> Supondo que eu quero que ela reflita 10% de todos os tipos de dano, faço isso: <item id="2472" article="a" name="magic plate armor"> <attribute key="description" value="An enchanted gem glows on the plate armor." /> <attribute key="weight" value="8500" /> <attribute key="armor" value="17" /> <attribute key="reflectpercentall" value="10"/> <attribute key="reflectchanceall" value="100"/> <attribute key="slotType" value="body" /> </item> Assim ela terá 100% de chance de refletir 10% de todos os tipos de dano. Lembrando que só funciona se estiver registrado no movements.xml. Abraços.
  15. Bom, não tenho ideia do que seja então, aqui ele adiciona normal a quantidade de skill configurada. Creio que os freezes são normais, principalmente se você não tiver grande quantidade de RAM e um processador rápido. Tente com um personagem de teste, novo, criado do zero. Abraços.
  16. Posta para mim, o Item ID 2432 do seu items.xml.
  17. É só agora notei que seu erro tem nada a ver com o que eu fiz. No caso o servidor acusa que a função não existe. Vou tentar criar um sistema parecido sem usar mods, pois eu odeio eles. Abraços.
  18. Essa função está errada function getItemReflectPercent(itemid) return getItemAttribute(itemid, "reflectPercent") end Como ela está, ela retorna apenas atributos únicos de itens, e caso eles não existam, retorna nil. Fiz algumas modificações nela e no script: function getItemReflectPercent(item) local reflectPercent = getItemAttribute(item.uid) or getItemInfo(item.itemid).reflectPercent return reflectPercent or 0 end <?xml version="1.0" encoding="UTF-8"?> <mod name="Reflect System" version="0.1" author="Aluccard" contact="" enabled="yes"> <description> Script que funciona para refletir danos para as creatures que o atacar. </description> <event type="login" name="regReflectDamage" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid,"ReflectDamage") return true end ]]></event> <event type="statschange" name="ReflectDamage" event="script"><![CDATA[ local slotPos = {CONST_SLOT_NECKLACE, CONST_SLOT_FEET, CONST_SLOT_HEAD} function onStatsChange(cid, attacker, type, combat, value) local reflectPercent = 0 local dmg = value local playerPos = getCreaturePosition(cid) local attackerPos = getCreaturePosition(attacker) for i = 1, #slotPos do if getPlayerSlotItem(cid, slotPos[i]).uid > 1 then if getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i])) then reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i])) end end end if reflectPercent > 0 then dmg = math.ceil(-value*((100-reflectPercent)/100)) if (dmg < 0) then doCreatureAddHealth(cid, dmg) doSendAnimatedText(playerPos, -dmg, COLOR_RED) doSendMagicEffect(playerPos, 0) else doSendMagicEffect(playerPos, 3) end dmg = math.ceil(-value*(reflectPercent/100)) if (dmg < 0) then doCreatureAddHealth(attacker, dmg) doSendAnimatedText(attackerPos, -dmg, COLOR_RED) doSendDistanceShoot(playerPos, attackerPos, CONST_ANI_SMALLHOLY) end else return true end end]]></event> </mod> Não estou certo se irá funcionar. Abraços.
  19. Nessa linha: doPlayerAddSkill(cid, config.skillName, config.skillAmount, true) Troque o true por false. Abraços.
  20. Crie um arquivo chamado skillstone.lua em data/actions/scripts, cole o conteúdo passado acima. Adicione a seguinte linha no actions.xml <action itemid="ID_DO_ITEM" event="script" value="skillstone.lua"/>
  21. Coloque as duas funções do script no seu arquivo 050-function.lua em data/lib
  • Quem Está Navegando   0 membros estão online

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