-
Total de itens
904 -
Registro em
-
Última visita
-
Dias Ganhos
13
Tudo que Killua postou
-
Kkkkkkkkk entendi sr. Jedi obrigado. Eu odeio mecher com esses combat, entao isso nem passa pela minha mente kkk
-
A funcao q eu usei ta errada, teria q ser a onStatsChange. Dai do jeito que o Zaruss falou eh registerCreatureEvent(attacker, "AttackMonster") To tentando aqui ainda...
-
Assim, dai vc so precisa mudar o ID dos items e os uniqueIDs (uids). Vc tem que registrar todos esses uids no actions.xml local storage = 45666 function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 3341 then if getPlayerStorageValue(cid, storage) < 1 then doPlayerAddItem(cid, ID, 1) doPlayerSetStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid, 25, "You have found a ITEM.") else doPlayerSendCancel(cid, "The chest is empty.") end elseif item.uid == 3342 then if getPlayerStorageValue(cid, storage) < 1 then doPlayerAddItem(cid, ID, 1) doPlayerSetStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid, 25, "You have found a ITEM.") else doPlayerSendCancel(cid, "The chest is empty.") end elseif item.uid == 3343 then if getPlayerStorageValue(cid, storage) < 1 then doPlayerAddItem(cid, ID, 1) doPlayerSetStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid, 25, "You have found a ITEM.") else doPlayerSendCancel(cid, "The chest is empty.") end end return true end
-
to testando mil coisas aqui, se der certo eu posto
-
Testou esse ultimo que eu editei? @EDIT - Esqueci de avisar que eh em creaturescripts que vc tem que por isso. TAG <event type="combat" name="AttackMonster" script="SeuSCRIPT.lua"/> E tem que registar no login.lua registerCreatureEvent(cid, "AttackMonster")
-
Entendi, mas testa ai o que eu fiz pra armas corpo-a-corpo so pra gente ter uma base: @EDIT - tava com um erro mas arrumei, testa ai. local id_da_arma = 4322 -- id da SWORD local dano = 100,1000 -- dano minimo e maximo function onCombat(cid, target) local formula = getPlayerLevel(cid) * getPlayerSkillLevel(cid,2) if getPlayerSlotItem(cid,5).itemid == id_da_arma or getPlayerSlotItem(cid,6).itemid == id_da_arma then if isMonster(target) then if combat == COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(target, -math.random(dano)) return false end end elseif isPlayer(cid) and combat == COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(target, -formula) return false end return true end
-
Gostei da sua ideia, mas me diz: poderia fazer ela dar esse hit controlado em monstros e o hit normal em players? Digo isso pra nao ter que fazer uma formula que subtraia a defesa do player atacado.
-
Acho que pra junta tudo eh so fazer uma tabela com um loop, tenta assim: local tabela = { {nome = "Demon", pos = {{x = 1056, y = 1056, z = 7},{x = 1056, y = 1057, z = 7}}}, {nome = "Rat", pos = {{x = 1056, y = 1056, z = 7},{x = 1056, y = 1057, z = 7},{x = 1056, y = 1057, z = 7}}}, {nome = "Hydra", pos = {{x = 1056, y = 1056, z = 7},{x = 1056, y = 1057, z = 7}}} } function onTarget(cid, target) for _, a in pairs(tabela) do if isPlayer(cid) then local namo = getCreatureName(target) if namo == a.nome and not isInArray({a.pos}, getCreaturePosition(cid)) then doPlayerSendCancel(cid, "Você não pode atacar na posição que se encontra!") return false end end end return true end function onAttack(cid, target) if isPlayer(cid) and isInArray({tabela.nome}, getCreatureName(target)) then doPlayerSetStorageValue(cid, 34343, 1) mayNotMove(cid, true) end return true end function onKill(cid, target, lastHit) if isPlayer(cid) and isInArray({tabela.nome}, getCreatureName(target)) then doPlayerSetStorageValue(cid, 34343, 0) mayNotMove(cid, false) end return true end function onPrepareDeath(cid, deathList) if isPlayer(cid) and getPlayerStorageValue(cid, 34343) == 1 then doPlayerSetStorageValue(cid, 34343, 0) mayNotMove(cid, false) end return true end function onLogin(cid) registerCreatureEvent(cid, "PosAttack1") registerCreatureEvent(cid, "PosAttack2") registerCreatureEvent(cid, "PosAttack3") registerCreatureEvent(cid, "PosAttack4") return true end tags: <event type="target" name="PosAttack1" event="script" value="cantattack.lua"/> <event type="attack" name="PosAttack2 event="script" value="cantattack.lua"/> <event type="login" name="PosAttack3" event="script" value="cantattack.lua"/> <event type="PrepareDeath" name="PosAttack4" event="script" value="cantattack.lua"/>
-
Ja tento essa funçao http://www.xtibia.com/forum/topic/191642-doplayeradddepotitemscid-items-town/#entry1579735
-
coloca isso no actions.xml <action itemid="ID" event="script" value="other/changegold.lua"/> <action itemid="ID" event="script" value="other/changegold.lua"/> no lugar do ID vc coloca o id da moeda verde e no outro, o da moeda de ouro
-
Vc esqueceu de 2 virgulas e, alem disso, acho que o script nao vai reconhecer "ITEM_MOEDA_VERDE" entao eu transformei isso em uma variavel local ITEM_MOEDA_VERDE = 123 -- Bota o id da moeda verde local ITEM_MOEDA_DE_OURO = 123 -- Bota o id da moeda de ouro local coins = { [ITEM_GOLD_COIN] = { to = ITEM_PLATINUM_COIN, effect = TEXTCOLOR_YELLOW }, [ITEM_PLATINUM_COIN] = { from = ITEM_GOLD_COIN, to = ITEM_CRYSTAL_COIN, effect = TEXTCOLOR_LIGHTBLUE }, [ITEM_CRYSTAL_COIN] = { from = ITEM_PLATINUM_COIN, to = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_TEAL }, [ITEM_MOEDA_VERDE] = { from = ITEM_CRYSTAL_COIN, to = ITEM_MOEDA_DE_OURO, effect = TEXTCOLOR_RED }, [ITEM_MOEDA_DE_OURO] = { from = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_GREEN } } function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerFlagValue(cid, PLAYERFLAG_CANNOTPICKUPITEM)) then return false end local coin = coins[item.itemid] if(not coin) then return false end if(coin.to ~= nil and item.type == ITEMCOUNT_MAX) then doChangeTypeItem(item.uid, item.type - item.type) doPlayerAddItem(cid, coin.to, 1) doSendAnimatedText(fromPosition, "$$$", coins[coin.to].effect) elseif(coin.from ~= nil) then doChangeTypeItem(item.uid, item.type - 1) doPlayerAddItem(cid, coin.from, ITEMCOUNT_MAX) doSendAnimatedText(fromPosition, "$$$", coins[coin.from].effect) end return true end
-
sistema [CTF] Capture The Flag 2.0(Automático)
tópico respondeu ao MaXwEllDeN de Killua em Mods, funções e outros
kinglekke, o Max disponibilizou o codigo pra vc usar e editar como quiser, ele nao se dispos a dar suporte permanente para todos. Se quiser que suas duvidas sejam retiradas, acho que eh melhor postar na area de pedidos e duvidas, pq la o pessoal costuma responder mais... Pra resolver o problema de nao teleportar o vencedor, tenta fazer assim, na parte: for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == win then local xp = math.ceil(getPlayerExperience(cid) * (CTF.xp_percent / 100), 215) doPlayerSendTextMessage(cid, 22, "Parab�ns! Voc� ganhou o evento e obteve ".. CTF.xp_percent .."% de sua experi�ncia total(".. xp ..").") doSendAnimatedText(getThingPos(cid), xp, 215) doPlayerAddExperience(cid, xp) end Vc muda e deixa ela assim: for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == win then local xp = math.ceil(getPlayerExperience(cid) * (CTF.xp_percent / 100), 215) doPlayerSendTextMessage(cid, 22, "Parab�ns! Voc� ganhou o evento e obteve ".. CTF.xp_percent .."% de sua experi�ncia total(".. xp ..").") doSendAnimatedText(getThingPos(cid), xp, 215) doPlayerAddExperience(cid, xp) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end -
Npc que vende items por Outros items
tópico respondeu ao kaizy536 de Killua em NPCs, monsters e raids
Entendi entao a diferenca e que esse da pra ser pelo trade -
Npc que vende items por Outros items
tópico respondeu ao kaizy536 de Killua em NPCs, monsters e raids
Tava se matando pra achar? oO Imagino como vc deve ter procurado bem kkkkkkkk: http://www.xtibia.com/forum/topic/224312-npc-trocador-simplificado-troca-itens-por-itens/ -
Ela ta encriptada em sha1, pra converter é so entrar nesse site: http://www.timestampgenerator.com/tools/sha1-generator/
-
Obvio que eh necessario checar storage. Ele quer checar se eh VIP, nao se eh premium account. @TOPIC Nao sei pra que complicar tanto uma simples checagem de storage... Nao sei nem de onde tiraram o os.time. Pedidos como esse ja foram atendidos mais de mil vezes aqui no forum, se vc procurasse iria achar. Eu nao costumo atender pedidos nesses casos. Alem disso, ta na area errada. Mas vou atender dessa vez: local scom1 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 0, -600, 6.0, -650) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(scom1, area1) function onTargetTile(cid, pos) local EFEITO = 5 if getPlayerStorageValue(cid, 9898) < 1 then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return doPlayerSendCancel(cid, "Voce precisa ser VIP pra usar essa magia") end doSendDistanceShoot(getThingPos(cid), pos, EFEITO) doCombat(cid, combat1, positionToVariant(pos)) end setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") local function onCastSpell1(parameters) doCombat(parameters.cid, scom1, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end
-
Porque remover do fórum? Não quer compartilhar o conteúdo? Você vem no fórum, faz o pedido, e depois que ele é atendido você retira?
- 7 respostas
-
- spell com storage
- adicionar storage magia
- (e 3 mais)
-
local positions = { {lugar = "Midgard", pos = {x=123, y=123, z=7}}, {lugar = "Sao Paulo", pos = {x=123, y=123, z=7}}, {lugar = "Carlin", pos = {x=123, y=123, z=7}}, {lugar = "Venore", pos = {x=123, y=123, z=7}} } local str = "" local needPz = false -- Precisa de pz? [true/false] local cooldown = 5 -- Tempo em segundos para poder se teleportar novamente. function onSay(cid, words, param, channel) for i = 1, (#positions) do local cidades = positions[i].lugar str = str .. cidades .. '\n ' end for _, abc in pairs(positions) do if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Para se teleportar diga !teleport LUGAR.\nLugares disponiveis:\n " .. str .. "\n Escolha seu destino e boa viagem!") end if param == "" .. abc.lugar .. "" then if needPz == true and getTilePzInfo(getCreaturePosition(cid)) == false then doPlayerSendCancel(cid, "Voce precisa estar em PZ para teleportar.") return true end if getPlayerStorageValue(cid, 23121) > os.time() then return doPlayerSendCancel(cid, "Vo deve esperar mais " .. getPlayerStorageValue(cid, 23121) - os.time() .. " segundos para se teleportar novamente.") end doPlayerSetStorageValue(cid, 23121, os.time() + cooldown) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, abc.pos) doPlayerSendTextMessage(cid, 25, "Bem vindo a " .. abc.lugar.. "!") doSendMagicEffect(abc.pos, CONST_ME_TELEPORT) end end return true end Nao coloquei cooldown pq ele nao tinha pedido...
-
Eu fiz a talkaction pra vc mas quando vc fala !teleport repetidas vezes ele vai repetindo o nome dos lugares disponiveis... To tentando arrumar isso. local positions = { {lugar = "Midgard", pos = {x=123, y=123, z=7}}, {lugar = "Sao Paulo", pos = {x=123, y=123, z=7}}, {lugar = "Carlin", pos = {x=123, y=123, z=7}}, {lugar = "Venore", pos = {x=123, y=123, z=7}} } local str = "" local needPz = false -- Precisa de pz? [true/false] function onSay(cid, words, param, channel) for i = 1, (#positions) do local cidades = positions[i].lugar str = str .. cidades .. '\n ' end for _, abc in pairs(positions) do if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Para se teleportar diga !teleport LUGAR.\nLugares disponiveis:\n " .. str .. "\n Escolha seu destino e boa viagem!") end if param == "" .. abc.lugar .. "" then if needPz == true and getTilePzInfo(getCreaturePosition(cid)) == false then doPlayerSendCancel(cid, "Voce precisa estar em PZ para teleportar.") return true end doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, abc.pos) doPlayerSendTextMessage(cid, 25, "Bem vindo a " .. abc.lugar.. "!") doSendMagicEffect(abc.pos, CONST_ME_TELEPORT) end end return true end XML <talkaction words="!teleport" event="script" value="teleport.lua"/>
-
No bau vc coloca o ID que vc registrou o script.
-
Da mas ele nao perguntou se pode repitir duas tags de scripts diferentes com o mesmo actionID. Ele perguntou se ele pode criar seus proprios numeros, e a resposta eh sim.
-
ActionID é o id de uma ação, por exemplo eu crio um script de actions e coloco na tag dele actionid = 1342. Dai, quando eu der use no item que tem o actionID 1342, ele vai chamar o script e realizar oq está inscrito nele. UniqueID é praticamente a mesma coisa, mas é um ID único, que não deve ser usado em mais de um lugar senão da um erro no console. Storage é um "armazenamento" ou seja, ele armazena um valor, na maioria dos casos em OTS, um valor numérico. Esse valor pode servir pra várias checagens, por exemplo: Quando vc faz uma quest, é armazenado em você um número(storage), com valor igual a 1. Quando você tenta fazer a quest denovo ela checa o valor do storage que está armazenado em você, se ele for igual a 1, retorna uma mensagem dizendo que você já fez a quest. Sim, você pode criar os valores que quiser pra todos eles.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.