-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
Isso que dá fazer script de cabeça, a gente acaba esquecendo um ")", uma "," Vê aí, pls local arrow_storm = { [2544] = { [0] = COMBAT_PHYSICALDAMAGE, -- Tipo de dano [1] = CONST_ME_HITAREA, -- Efeito de área [2] = CONST_ANI_ARROW, -- Efeito do tiro da flecha [3] = 2, -- Área de alcance dos danos [4] = {-1.3, -1.5, -30, -45, 5, 5, 2, 3}, -- Fórmula }, } local storage = {78881, 78882} function onCastSpell(cid, var) local arrow = getPlayerSlotItem(cid, CONST_SLOT_AMMO) if not arrow then doPlayerSendCancel(cid, "You need to equip an arrow type in ammo slot.") return false end if not arrow_storm[arrow.itemid] then doPlayerSendCancel(cid, "Sorry, you can't use Arrow Storm with this arrow.") return false end local tmp = arrow_storm[arrow.itemid] local isShooting = true doCreatureSetStorage(cid, storage[1], os.time() + 2) while isShooting do local fromPosition = getCreaturePosition(cid) local toPosition = fromPosition toPosition.y = toPosition.y - 8 addEvent(doSendDistanceShoot, 55, fromPosition, toPosition, tmp[2]) if os.time() > getCreatureStorage(cid, storage[1]) then isShooting = false end end if isShooting == false then local fallingArrows = true doCreatureSetStorage(cid, storage[2], os.time() + 2) while fallingArrows do local playerPosition = getCreaturePosition(cid) local toPosition = {x = math.random(playerPosition.x - tmp[3], playerPosition.x + tmp[3]), y = math.random(playerPosition.y - tmp[3], playerPosition.y + tmp[3]), z = playerPosition.z} local fromPosition = toPosition fromPosition.y = fromPosition.y - 8 local level = getPlayerLevel(cid) local skill = getPlayerSkillLevel(cid, SKILL_DISTANCE) local min = (level / tmp[4][5] + skill * tmp[4][7]) * tmp[4][1] + tmp[4][3] local max = (level / tmp[4][6] + skill * tmp[4][8]) * tmp[4][2] + tmp[4][4] doSendDistanceShoot(fromPosition, toPosition, tmp[2]) addEvent(doAreaCombatHealth, 55, cid, tmp[0], toPosition, 0, min, max, tmp[1]) if os.time() > getCreatureStorage(cid, storage[2]) then fallingArrows = false end end end return true end
-
A imagem do erro que você postou é a das "," que já foi arrumado.
-
Arrumei o erro, era umas "," faltando, vê aí se funciona.
-
Vê se isso aí dá certo, fiz de cabeça e não tenho como testar no trabalho local arrow_storm = { [2544] = { [0] = COMBAT_PHYSICALDAMAGE, -- Tipo de dano [1] = CONST_ME_HITAREA, -- Efeito de área [2] = CONST_ANI_ARROW, -- Efeito do tiro da flecha [3] = 2, -- Área de alcance dos danos [4] = {-1.3, -1.5, -30, -45, 5, 5, 2, 3}, -- Fórmula }, } local storage = {78881, 78882} function onCastSpell(cid, var) local arrow = getPlayerSlotItem(cid, CONST_SLOT_AMMO) if not arrow then doPlayerSendCancel(cid, "You need to equip an arrow type in ammo slot.") return false end if not arrow_storm[arrow.itemid] then doPlayerSendCancel(cid, "Sorry, you can't use Arrow Storm with this arrow.") return false end local tmp = arrow_storm[arrow.itemid] local isShooting = true doCreatureSetStorage(cid, storage[1], os.time() + 2) while isShooting do local fromPosition = getCreaturePosition(cid) local toPosition = fromPosition toPosition.y = toPosition.y - 8 addEvent(doSendDistanceShoot, 55, fromPosition, toPosition, tmp[2]) if os.time() > getCreatureStorage(cid, storage[1]) then isShooting = false end end if isShooting == false then local fallingArrows = true doCreatureSetStorage(cid, storage[2], os.time() + 2) while fallingArrows do local playerPosition = getCreaturePosition(cid) local toPosition = {x = math.random(playerPosition.x - tmp[3], playerPosition.x + tmp[3]), y = math.random(playerPosition.y - tmp[3], playerPosition.y + tmp[3]), z = playerPosition.z} local fromPosition = toPosition fromPosition.y = fromPosition.y - 8 local level = getPlayerLevel(cid) local skill = getPlayerSkillLevel(cid, SKILL_DISTANCE) local min = (level / tmp[4][5] + skill * tmp[4][7]) * tmp[4][1] + tmp[4][3] local max = (level / tmp[4][6] + skill * tmp[4][8]) * tmp[4][2] + tmp[4][4] doSendDistanceShoot(fromPosition, toPosition, tmp[2] addEvent(doAreaCombatHealth, 55, cid, tmp[0], toPosition, 0, min, max, tmp[1]) if os.time() > getCreatureStorage(cid, storage[2]) then fallingArrows = false end end end return true end
-
dúvida Continuar string na linha seguinte com tabulação
tópico respondeu ao Mazynho de Oneshot em Lixeira Pública
Não entendi o propósito da coisa, mas falar que concatenação gasta memória, a não ser você esteja rodando o código com uma memória de 16KB, acho meio estranho sua recusa por tal método. local str = "Isso é\ Uma string\ Com indentação." str = string.gsub(str, string.char(9), string.rep(string.char(32), 4)) print(str) Mas faz isso aí, vai substituir os TABs por 4 espaços, que são printados normalmente. Mas gasta mais "KBs" de memória. -
[Arquivado]Quem tem interesse em aprender a scriptar?
tópico respondeu ao Techrlz de Oneshot em Noticias - Arquivo
Tenho interesses em ensinar do básico ao avançado de programação Lua, e sua utilização no Open Tibia, então se precisarem de mais um professor, o coordenador Omega possui meu contato. Abraço. -
function repeatFunction(_times, _delay, _function, ...)
tópico respondeu ao meubk de Oneshot em Mods, funções e outros
A recursividade. -
Eu consigo. Tchau.
-
Tá e até agora você não ordenou os valores da tabela.
-
Eita, belo mapa, meus parabaims.
-
Então ela só pode ser utilizada por monstros, afinal eles que possuem targetlist e friendlist, correto?
-
action Alterar wandDamage do player em action
tópico respondeu ao BreisPodeu de Oneshot em Lixeira Pública
Beleza, BreisPodeu? Seguinte, cara, vou te explicar mais ou menos como funciona seu servidor, ele tem sources programadas em C++, uma linguagem orientada a objetos. Daí, o atributo wandDamage que você configura no seu arquivo vocations.xml é interpretado por funções do arquivo vocations.cpp (posteriormente compilado no seu servidor). Como a linguagem é orientada a objetos, cara, o atributo wandDamage é exclusivo da classe Vocations e não da classe Player e não tem funções em Lua para alterar esse atributo dinamicamente. Uma maneira perfeita de fazer isso, é criar um atributo wandDamage na classe Item, alterar a fórmula que retorna o dano de wands no weapons.cpp, incluindo esse atributo, aí se pá você vai poder alterar o atributo pelo doItemSetAttribute e se pá até no items.xml Boa sorte \Õ/ -
onTarget?
-
Muitos parabains a todos
-
Eita, filhote, andou mexendo nas sources do servidor?
-
Parabéns pelo avanço em C++, caotic. Bom, uma dúvida, qual a vantagem da sua função sobre a getPlayerItemById, porque, certo, a sua retorna uma tabela inteira com todos os itens do jogador, mas não vejo o uso dessa tabela além de mostrar todos os itens do jogador em um FYI ou text dialog. Então, para verificar um único item do jogador, ainda recomendo a getPlayerItemById que usa um método do game.cpp findItemOfType. Mas, volto a dizer, parabaims parabéns.
-
sugestão Criação de Sub-Fórum na área de Servidores derivados
tópico respondeu ao Gabrieltxu de Oneshot em Lixeira Pública
E sources são utilitários? Ok, não deixa de ser, mas utilitários subentende-se por programas executáveis para auxiliar no desenvolvimento Open Tibia, como sprite editor, item editor, map editor... por mim, bastaria criar um prefixo na seção Download de Servidores Derivados, chamado Sources. -
pedido Tile que so passa se tiver x reset
pergunta respondeu ao williamserravalle de Oneshot em Scripts
Ô criatura, você acha que existe só um sistema de reset no fórum e quem vai te ajudar tem bola de cristal? Posta o link do sistema de reset que você usa. -
creatureevent System de Premiação por ficar ONLINE
tópico respondeu ao GstvoLiber de Oneshot em Globalevents e Spells
Vamos lá, O sistema será executado toda vez que jogador entrar no jogo, então, se ele entrar, ficar online uma hora, o sistema não dará o prêmio, a menos que ele saia e entre no jogo. Quanto a sua dúvida sobre a query SQL: db.executeQuery("UPDATE total_time_on SET value = "..hora + value.." WHERE player_id = "..id.. "") Do jeito que você fez, dá errado mesmo, pois aí você está chamando duas variáveis hora e value, e como você quer, value não é uma variável. Atenção também para a variável id, que você não declarou também, e a coluna não se chama player_id, mas sim id, no banco de dados dos servidores atuais. db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") Fica desse jeito. Não desanime no primeiro erro, estude um pouco mais e você vai longe. Abraço. -
Que lindo isso essa explicação, curti o esquema de armazenar números fracionários na memória.
-
Novamente, torno a dizer, o problema é que o baú que você está utilizando tem propriedade Moveable, utiliza outro baú com id sem essa propriedade, ou faz por creaturescript. E, bom, isso é um script de pokétibia... aqui não é o lugar de pedir coisas relacionadas a servidores derivados.
-
Caraca, esse problema aí eu não vejo desde a versão 8.1 do Tibia. Dá uma olhada no ID dos baús usados nas quests e usa o mesmo para o baú do "kit inicial", se não faz o sistema por creaturescript. Abraço.
-
Imagina, cara, meu sistema é incompleto mesmo, uma bosta de sistema. Aconselho você procurar outro mesmo. Abraços.
-
Você se enganou. Outfits são salvas em storages, e a range reservada de storages é de 1000 a 1500. Qual a sua dificuldade em usar a função hasPlayerOutfit(cid, lookType[, addon = 0])? Ele retorna um valor booleano, ou é verdadeiro ou é falso. if canPlayerWearOutfit(cid, 136, 3) then Exemplo acima, verifico se o jogador pode usar a outfit Citizen do sexo Male com full addons. 1 = Primeiro Addon 2 = Segundo Addon 3 = Primeiro e Segundo Addons
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.