-
Total de itens
1339 -
Registro em
-
Última visita
-
Dias Ganhos
21
Tudo que Caronte postou
-
moveevent ERRO ao carregar /reload movements
pergunta respondeu ao chateadoagr de Caronte em Scripts
Entre nos monstros que tem esse nome, e tire a tag parecida com essa: <script> event name ='' </script> Tópico Movido Este tópico foi movido de "OTServ → Scripting → OTServ Scripts → Actions, talkactions e moveevents" para "OTServ → Suporte OTServ → Suporte Scripting". -
npc [Encerrado] Erro No Akatsuki
tópico respondeu ao naruto vida loka de Caronte em Tópicos Sem Resposta
Tópico Movido Este tópico foi movido de "OTServ → Scripting → OTServ Scripts → NPCs, monsters e raids" para "OTServ → Suporte OTServ → Suporte Derivados". -
monster [Encerrado] Spells for pokemon
tópico respondeu ao CykiSaiyajiN de Caronte em Tópicos Sem Resposta
I don't work with ats. Tópico Movido Este tópico foi movido de "OTServ → Scripting → OTServ Scripts → NPCs, monsters e raids" para "OTServ → Suporte OTServ → Suporte Derivados". -
Mude a última função (spawnNewZombie) sua da linha 98 para baixo. Coloque isto: function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false, false, false)) == 'number') if(ret) then addZombiesCount() end return ret end Já tenho uns 7 anos de tibia, e nunca deu isso em um otserver meu. verifique se você tá colocando o nome certo.
-
Hehe, eu gostei dessa sugestão do @baratask, colocar para uma vocação fazer isso. E funcionar ao pisar, acho que dá pra esconder em baixo de alguma coisa, e ferrar alguém kkkk Colocar em uma hunt de rotworm uma scroll escrita demon dentro kkkkk Quero jogar um otserver com essa scroll pra trollar.
-
Eu tava pensando em algo assim , é difícil fugir do tema.
-
Você é fissurado nessa música né? ela é uma música instrumental bem bonita...
-
Tópico Movido Este tópico foi movido de "OTServ → Scripting → OTServ Scripts → Actions, talkactions e moveevents" para "OTServ → Suporte OTServ → Suporte Programação".
-
Claro que não s2 eu esqueci que é type kkkk... Eu não uso a variável porque uma vez quando usei, deu uns erros e tentei ver porque, e não entendi. talvez eu coloquei onde não poderia fazer isso num addEvent ou sei lá...
-
Eu fiz aqui, baseado nas coisas que você quer: local c = { checkItems = { [3058] = 1, [3065] = 100, }, checkPlace = {x= 934, y = 711, z = 7}, storage = 2306, level = 50, teleport = {x = 948, y = 716, z = 7}, } function onUse(cid) if getPlayerStorageValue(cid, c.storage) == -1 then if getPlayerLevel(cid) >= c.level then for id, count in pairs(c.checkItems) do if getTileItemById(c.checkPlace, id).count >= count then doRemoveItem(getTileItemById(c.checkPlace, id).uid, count) doSendMagicEffect(c.checkPlace, CONST_ME_POFF) doPlayerSetStorageValue(cid, c.storage, 1) doTeleportThing(cid, c.teleport) doSendMagicEffect(getThingPos(cid), 10) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce sacrificou o corpo de um belo jovem, uma pena... mas for preciso.") else PlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce precisa colocar corpo de alguem na chama roxa do inferno.") end end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce precisa de level "..(c.level)..".") end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ja fez este sacrificio.") end return true end Só agora que vi isso: "Voce sacrificou o corpo de um belo jovem, uma pena... mas foi preciso." kkkkkkkkkk
-
dúvida [Encerrado] [Otserv] Dúvida s/ Começo
tópico respondeu ao zorddella de Caronte em Tópicos Sem Resposta
10+ são mais completos. eu sinto mais afinidade com os 8.6, mass, eu acho que é porque eu nunca peguei um servidor 10+ a sério... -
Nem dá erro?
-
dúvida [Encerrado] [Otserv] Dúvida s/ Começo
tópico respondeu ao zorddella de Caronte em Tópicos Sem Resposta
Que bom que ainda existe membros assim, dispostos a aprender e compartilhar... Bom, eu recomendo você pegar um servidor bem limpo para você ir colocando suas coisas e incrementando. O que seria um servidor limpo? Seria um servidor com mapa pequeno (assim é mais rápido de abrir a distro/executável) Com poucos ou nenhum sistema. Organizado. Com source de preferência. Porém, para você aprender a incrementar, você tem que baixar servidores já incrementados, então baixe uma pilha de servidores, vá editando, e faça merda neles, use CTRL + Z para eliminar as merdas que você faz, ou poste aqui o erro que gerou para ajudarmos. Conforme você vai aprendendo para que servem as coisas, tente aplicar sem erros no seu servidor base... Eu recomendo você começar por tibia normal mesmo! porque os Derivados/ATS (Altered Tibia Server) são bem desorganizados, e tem funções que são feitas de funções do tibia, isso poderia te dar dor de cabeça. Primeiro aprenda um pouco de LUA, veja como funciona o datapack do tibia, para que serve cada arquivo. Qualquer dúvida estamos aí... -
Sim, eu também pensei em ver o consumo de memória. coisas como um return no lugar certo faz o script parar de rodar se não necessário e economiza um pouquinho, mesmo que não tão notável... Gostaria muito de que você fosse um dos avaliadores, sem compromisso (você pode dar o fora quando quiser). e vou gostar muito se ver bastante gente participando e que o concurso gere conteúdo para o fórum. por isso, estou sendo bastante democrático. Post Scriptum: Esse não tão notável, pode ser notado a longo prazo
-
Claro tá comparando o tamanho das tables... Você não precisa de getTableMax para saber o tamanho da tabela, é só você colocar um ( # ) na frente do nome dela... #table -> retorna o tamanho da table. Tenta isso: local c = { checkItems = {[2656] = 1, [5880] = 100}, -- [itemId] = quantidade checkPlaces = {{x=175, y=392, z=10}, {x=175, y=394, z=10}}, -- posicoes addons = {{145, 149}, name = "Wizard Addon"}, -- {addon female/male}, nome do outfit storage = 21003, level = 0 } local function getTableMax(t) local ret = 0 for _, i in pairs(t) do ret = ret + 1 end return ret end function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerStorageValue(cid, c.storage) == -1) then if(getPlayerLevel(cid) > c.level) then local done = {} for n, pos in pairs(c.checkPlaces) do for itemId, count in pairs(c.checkItems) do local posItem = getTileItemById(pos, itemId) if(posItem.uid ~= 0 and (count == 1 or posItem.type >= count) and not done[itemId]) then done[itemId] = {count, pos} end end end for k, v in pairs(done) do if (isInArray(c.checkItems, v) and c.checkItems[k]) then for i, t in pairs(done) do doRemoveItem(getTileItemById(t[2], i).uid, t[1]) doSendMagicEffect(t[2], CONST_ME_FIREAREA) end setPlayerStorageValue(cid, c.storage, 1) for i = 1, #c.addons[1] do doPlayerAddOutfit(cid, c.addons[1], 3) end doPlayerSendTextMessage(cid, 21, "You just earned the "..(c.addons.name)..".") else doPlayerSendCancel(cid, "You need item.") break end end else doPlayerSendCancel(cid, "You need level "..(c.level)..".") end else doPlayerSendCancel(cid, "You have already completed this addon.") end return true end
-
@@baratask, esqueci de você function onStepIn(cid, item, position) local cont = getItemAttribute(item.uid, "text") -- nao precisa mexer local summons = {"demon", "dragon", "dog", "cat", "rotworm", "morgaroth", "cyclops", "dragon lord", "son of verminor", "wolf"} -- monstros disponiveis local timeToWait = 10 -- tempo em segundos local vocId = 3 function Summon(entity) if position.x == 65535 and position.y == 64 then doCreateMonster(entity, getThingPos(cid)) doRemoveItem(item.uid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) return true else doCreateMonster(entity, position) doRemoveItem(item.uid) doSendMagicEffect(position, CONST_ME_FIREWORK_YELLOW) return true end return true end if cont ~= nil then if getPlayerStorageValue(cid, 2843) <= os.time() then if getPlayerVocation(cid) == vocId then local monster = table.concat(cont:exp("%s"), " ") if isInArray(summons, monster) then Summon(monster) doPlayerSetStorageValue(cid, 2843, os.time() + timeToWait) return true else doPlayerSendCancel(cid, "You can't summon this monster!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "This is not for your vocation") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "You have to wait".. (getPlayerStorageValue(cid, 2843) - os.time()) .." seconds to use again!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end end end function string.exp(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result end Tenta aí, qualquer erro eu resolvo.
-
Eu pensei também em outra modalidade de concurso, onde o avaliador escolhesse dois times de participantes para competir um contra o outro.
-
Boa mano, eu ia fazer assim, só que me esqueci do Table concat, tava tentando o string.explode kkkk.... Vou dar uma revisada depois... @, Atualizei... Versão stepIn: function onStepIn(cid, item, position) local cont = getItemAttribute(item.uid, "text") -- nao precisa mexer local summons = {"demon", "dragon", "dog", "cat", "rotworm", "morgaroth", "cyclops", "dragon lord", "son of verminor", "wolf"} -- monstros disponiveis function Summon(entity) if position.x == 65535 and position.y == 64 then doCreateMonster(entity, getThingPos(cid)) doRemoveItem(item.uid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) return true else doCreateMonster(entity, position) doRemoveItem(item.uid) doSendMagicEffect(position, CONST_ME_FIREWORK_YELLOW) return true end return true end if cont ~= nil then local monster = table.concat(cont:exp("%s"), " ") if isInArray(summons, monster) then Summon(monster) return true else doPlayerSendCancel(cid, "You can't summon this monster!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end end end function string.exp(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result end
-
Tá se drogando d+++...
-
Eu estou falando que ao invés de usar a área, usar o storage. aahh sim, ok então...
-
@@zipter98, eu tinha feito e esquecido de postar kkkk, só que o seu ta mais completo. só que eu tinha feito em storage, não seria melhor? já que é dentro de um evento, que provavelmente tem storage.
-
Sim, concordo. @@drakylucas, só que, devíamos ver o que o pessoal prefere fazer em só uma versão de TFS ou fazer em qualquer uma e ser avaliado igualmente.
-
O Melhor Script é só o título do concurso, a complexidade do código vai valer pontos, mas não vai indicar melhor script e muito menos conduzir a vitória. A criatividade por mim sempre vai valer mais. Abro aqui também, discussões sobre os critérios de avaliação, vocês sempre poderão opinar como vai ser. Eu pensei em um script onStepIn ou onTarget que modificasse as propriedades dos bichos kkkk, fazendo alguma coisa louca
-
@@drakylucas, é só você bolar uma porcentagem, coloca algo como skill * (1 + level/10) para aumentar o dano em 10% para players de level 1, se seguir esse esquema o level 100 vai hitar 100% a mais, e o 200, vai hitar o dobro do 100, com o multiplicador... Se ficar ruim, tente somar o level com outro número e depois multiplicar o dano...
-
Qual seria o tipo de concurso que vocês consideram melhor para participar? O melhor script mesmo? ou alguém tem uma sugestão melhor? @@Antharaz,@, @, @@Vills, @@Gabrieltxu?
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.