Mazynho 2 Postado Abril 3, 2014 Share Postado Abril 3, 2014 Galera poderiam olhar este meu post: http://www.xtibia.com/forum/topic/231216-descobrir-se-um-item-e-uma-armor-legs-e-etc/ ele tem relação com esse, se puderem ajudar ficarei grato. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1632978 Compartilhar em outros sites More sharing options...
homersapiens 46 Postado Abril 3, 2014 Share Postado Abril 3, 2014 tava tentando fazer um sorteador de items, ja que ninguem ajudou, (só o omega), bom, tenho esse script function onUse(cid, item, frompos, item2, topos) local helds = { "12952", "12953", "12954", "12955", "12956", "12957", "12958", "12959", "12960", "12961", "12962", "12963", "12964", "12965", "12966", "12967", "12968", "12969", "12970", "12971", "12972", "12973", "12974", "12975", "12976", "12977", "12978", "12979", "12980", "12981", "12982", "12983", "12944", "12940", "12941" } if getPlayerItemCount(cid, 12949) < 500 then doPlayerPopupFYI(cid, "Voce Precisa de 500 "..getItemNameById(12949).." para Pegar Seu Held Item.") return true end doPlayerAddItem(cid, helds[math.random(1, #helds)], 1) doPlayerPopupFYI(cid, "Voce ganhou seu Held Item.") doPlayerRemoveItem(cid, 12949, 500) end primeiramente eu gostaria de quando "doPlayerPopupFYI(cid," Voce ganhou seu Held Item." aparecesse o nome do item, acho que é mais ou menos assim: doPlayerPopupFYI(cid, Voce Ganhou um "..getItemNameById(helds).." ") mas nao obtive sucesso, sempre da bug no script. segundo eu gostaria que desse pro player escolher qual opção ele gostaria, opção 1- se tiver 50 do item 12949, da um item aleatorio configurados em outro local, e etc. Obrigado pela atenção. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633186 Compartilhar em outros sites More sharing options...
zipter98 1102 Postado Abril 3, 2014 Share Postado Abril 3, 2014 ^ Antes de tudo, gostaria de recomendar retirar as aspas dos elementos da tabela helds. Ou, você pode fazer uma pequena alteração para transformar a string resultada do math.random em number. Até porquê, ficar removendo aspas é um saco. local it = tonumber(helds[math.random(1, #helds)]) doPlayerAddItem(cid, it, 1) doPlayerPopupFYI(cid, "Voce ganhou seu "..getItemNameById(it)..".") doPlayerRemoveItem(cid, 12949, 500) Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633200 Compartilhar em outros sites More sharing options...
Mazynho 2 Postado Abril 3, 2014 Share Postado Abril 3, 2014 Galera vi em um script que o cara fazia o script em um arquivo e em outro ele chamava seus atributos, ou algo assim (tipo importando um modulo), nesse segundo arquivo ele usava isto aqui: dofile ("Nome_Arquivo.lua"), poderiam explicar como se faz isso, seria bastante útil para um sistema mais elaborado, que precisaria de varios arquivos em diferentes locais. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633223 Compartilhar em outros sites More sharing options...
homersapiens 46 Postado Abril 3, 2014 Share Postado Abril 3, 2014 Zipter, poderia me explicar as alterações,? Estou interessado em aprender. Lua Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633250 Compartilhar em outros sites More sharing options...
Pasteel 8 Postado Abril 3, 2014 Share Postado Abril 3, 2014 (editado) @Homer Sou iniciante, mesmo assim tentarei dar uma forcinha rsrs, mesmo não entendendo muito. local it = tonumber(helds[math.random(1, #helds)]) Do 1 até o ultimo irá randomizar um item da tabela #(helds)doPlayerAddItem(cid, it, 1) Irá adicionar o item na condição "IT" que no caso seria o sorteio, com a quantidade ,1 doPlayerPopupFYI(cid, "Voce ganhou seu "..getItemNameById(it)..".") Você ja deve saber sobre o popup, getItemNameById(it) irá pegar o nome do item que ira sair na tabela, no sorteio do local "IT"doPlayerRemoveItem(cid, 12949, 500) Editado Abril 3, 2014 por Pasteel Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633257 Compartilhar em outros sites More sharing options...
homersapiens 46 Postado Abril 4, 2014 Share Postado Abril 4, 2014 Eu Denovo =) dessa vez é algo mais simples (ou não) tava tentando fazer com que essa função fique a cada segundo, onPokeHealthChange(cid) acho que seria um creaturescript, talvez com a função if isPlayerOnline(cid) then mas não tenho certeza, Obrigado Pela Atenção, espero que me ajudem. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633562 Compartilhar em outros sites More sharing options...
RodriigoRobson 110 Postado Abril 4, 2014 Share Postado Abril 4, 2014 (editado) Oi estou com um Problema nesse Script aki: function onTarget(cid, target)if isMonster(target) and not isSummon(target) thenreturn trueendif isSummon(target) and getCreatureMaster(target) == cid thendoPlayerSendDefaultCancel(cid, RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE)doPlayerSendCancel(cid, "You can't attack your Pokemon.")return falseendif getPlayerStorageValue(getCreatureMaster(target), 6666) == 1 and getPlayerStorageValue(cid, 6666) == 1 thendoPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time")elseif getPlayerStorageValue(getCreatureMaster(target), 6667) == 1 and getPlayerStorageValue(cid, 6667) == 1 thendoPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time")return falseendreturn trueend Como posso fazer para nao Atacar o Pokemon(Sumon) do Mesmo Storage? - OBS: nao é PDA nao usa funçao: function canAttackOther(cid, pid) Editado Abril 4, 2014 por Nextbr Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633569 Compartilhar em outros sites More sharing options...
zipter98 1102 Postado Abril 4, 2014 Share Postado Abril 4, 2014 (editado) ^ Em outras palavras, se o value da key/storage y do jogador x (no caso, cid) for igual à do treinador do pokémon/summon target, retornará falso (ou seja, não poderá targetar). Estou certo? @homer Você quer que a função seja executada repetidamente, num intervalo de 1 segundo? Se sua resposta for sim, você pode chamar a função dentro dela mesma com um addEvent. Por exemplo: function Model() addEvent(Model, 1000) end Model() Editado Abril 4, 2014 por zipter98 Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633607 Compartilhar em outros sites More sharing options...
homersapiens 46 Postado Abril 4, 2014 Share Postado Abril 4, 2014 Exato zipter, eu tava usando a function \/ function getStringOfTaskArray(array) if type(array) ~= 'table' or not next(array) then return "" end local result = {} for _, value in ipairs(array) do local thing, num = (type(value[1]) == 'string' and value[1] or getItemNameById(value[1])), value[2] table.insert(result, (_ == 1 and "" or ", ")..num.." "..thing..(num == 1 and "" or "s")) end result[#result] = " and"..(result[#result]:sub(2,#result[#result])) return table.concat(result) end function getVitalityByMaster(cid) if not isCreature(cid) then return 0 end local ball = getPlayerSlotItem(cid, 8).uid if not ball or ball <= 1 or not pokes[getItemAttribute(ball, 'poke')] then return true end return pokes[getItemAttribute(ball, 'poke')].vitality * (getPlayerLevel(cid) + (getItemAttribute(ball, 'boost') or 0)) end function onPokeHealthChange(cid, zerar) if not isCreature(cid) then return true end if zerar then doPlayerSendCancel(cid, '#ph#,0,0') end local ball = getPlayerSlotItem(cid, 8).uid if not ball or ball <= 1 or not pokes[getItemAttribute(ball, 'poke')] then return true end if #getCreatureSummons(cid) >= 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6 local pokemon = getCreatureSummons(cid)[1] local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon)) doItemSetAttribute(ball, "hp", pokelife) end local rd = 1 - (tonumber(getItemAttribute(ball, "hp"))) local maxHp = HPperVITsummon * getVitalityByMaster(cid) local hp = maxHp -(maxHp * rd) doPlayerSendCancel(cid, '#ph#,'.. math.floor(hp) ..','.. math.floor(maxHp)) end só que ela nao atualiza na hora que o poke leva um hit. Por isso o addevent, obrigado, se poder dar alguma ideia. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633613 Compartilhar em outros sites More sharing options...
RodriigoRobson 110 Postado Abril 5, 2014 Share Postado Abril 5, 2014 Sim e exatamente isso Mais quando eu testo no server ele praticamente ignora e so sai a msg que "nao pode atacar o proprio time" Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633626 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Abril 5, 2014 Share Postado Abril 5, 2014 Sim e exatamente isso Mais quando eu testo no server ele praticamente ignora e so sai a msg que "nao pode atacar o proprio time" O erro está nessa parte: if getPlayerStorageValue(getCreatureMaster(target), 6666) == 1 and getPlayerStorageValue(cid, 6666) == 1 then doPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time") elseif getPlayerStorageValue(getCreatureMaster(target), 6667) == 1 and getPlayerStorageValue(cid, 6667) == 1 then doPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time") return false end Note que você só colocar return false no elseif, quando o primeiro if tem condição verdadeira, ele executa o bloco e continua a execução do restante nos escopos abaixo(após o end) Solução: if getPlayerStorageValue(getCreatureMaster(target), 6666) == 1 and getPlayerStorageValue(cid, 6666) == 1 then doPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time") return false elseif getPlayerStorageValue(getCreatureMaster(target), 6667) == 1 and getPlayerStorageValue(cid, 6667) == 1 then doPlayerSendCancel(cid, "Nao Pode Atacar Pokemon ou Player Do Mesmo Time") return false end Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633636 Compartilhar em outros sites More sharing options...
Mazynho 2 Postado Abril 5, 2014 Share Postado Abril 5, 2014 Galera to com um problema poderiam min ajudar? É o seguinte estou usando a função onCombat(cid, target) nela eu coloquei uma condição retornar false caso o cid e o target tenham a mesma storage, está funcionado, porém se o cid estiver em party com um player X que não tem essa storage, mas um player Y que tem essa storage estiver perto e o cid usar uma magia de área ele pega pk devido o player Y. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633651 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Abril 5, 2014 Share Postado Abril 5, 2014 Galera to com um problema poderiam min ajudar? É o seguinte estou usando a função onCombat(cid, target) nela eu coloquei uma condição retornar false caso o cid e o target tenham a mesma storage, está funcionado, porém se o cid estiver em party com um player X que não tem essa storage, mas um player Y que tem essa storage estiver perto e o cid usar uma magia de área ele pega pk devido o player Y. A callback onCombat não engloba ataques em area, para ataques em area use: onAreaCombat(cid, tileItem, tilePosition, isAggressive) Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633666 Compartilhar em outros sites More sharing options...
Mazynho 2 Postado Abril 5, 2014 Share Postado Abril 5, 2014 Galera to com um problema poderiam min ajudar? É o seguinte estou usando a função onCombat(cid, target) nela eu coloquei uma condição retornar false caso o cid e o target tenham a mesma storage, está funcionado, porém se o cid estiver em party com um player X que não tem essa storage, mas um player Y que tem essa storage estiver perto e o cid usar uma magia de área ele pega pk devido o player Y. A callback onCombat não engloba ataques em area, para ataques em area use: onAreaCombat(cid, tileItem, tilePosition, isAggressive) como faço uma comparação entre o cid e quem a magia pegou com essa função que você disse? Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/7/#findComment-1633690 Compartilhar em outros sites More sharing options...
Posts Recomendados