Breniinx
-
Total de itens
19 -
Registro em
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Calendário
Publique
Posts postados por Breniinx
-
-
@Vodkart Vod, tem como adicionar uma talkactions para saber o horário que falta para conseguir pegar o baú novamente? o script é perfeito e tá funcionando normalmente
-
Boa noite, estou precisando de ajuda, tenho uma spell de curar o proprio personagem ou todos os membros que estiver em pt, ela é feita para colocar no summon porém ela cura mesmo fora da tela ou em outro planeta do mapa gostaria de saber se alguém poderia alterar e conseguir colocar pra curar apenas quem estiver na range ="8" do summon desde já agradeço a todos que puderem ajudar
Aqui está o script atual
local config = {
health = 45454,
mana = 135
}
function onCastSpell(cid, var)if getCreatureMaster(cid) then
local master = getCreatureMaster(cid)
if isInParty(master) then
local members = getPartyMembers(getPlayerParty(master))
local health = math.ceil( config.health / #members )
local mana = math.ceil( config.mana / #members )
for i = 1, #members do
doCreatureAddHealth(members[i], health)
doCreatureAddMana(members[i], mana)
doSendAnimatedText(getCreaturePosition(members[i]), "+"..health, 18)
doSendMagicEffect(getCreaturePosition(members[i]), 5)
end
else
doCreatureAddHealth(master, config.health)
doCreatureAddMana(master, config.mana)
doSendAnimatedText(getCreaturePosition(master), "+"..config.health, 18)
doSendMagicEffect(getCreaturePosition(master), 5)
end
end
return true
end -
Funcionou perfeitamente muito obrigado!
- So volto tarde reagiu a isso
- 1
-
1 hora atrás, So volto tarde disse:
tenta ai
local lvl = 1 local stor_time = 68741 local hours = 24 local t = { {Pos = {{x=906, y=625, z=5},{x=917, y=586, z=7}}}, -- TANK OR DRUNK {Pos = {{x=907, y=625, z=5},{x=916, y=587, z=7}}}, -- TANK OR DRUNK {Pos = {{x=908, y=624, z=5},{x=915, y=588, z=7}}}, -- TANK OR DRUNK {Pos = {{x=908, y=623, z=5},{x=915, y=576, z=7}}}, -- TANK OR DRUNK {Pos = {{x=907, y=622, z=5},{x=914, y=575, z=7}}}, -- TANK OR DRUNK {Pos = {{x=906, y=622, z=5},{x=913, y=574, z=7}}} -- TANK OR DRUNK } function onUse(cid, item, fromPosition, itemEx, toPosition) local check = {} for _, k in ipairs(t) do local x = getTopCreature(k.Pos[1]).uid if x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or getPlayerStorageValue(x, stor_time) - os.time() > 0 then doPlayerSendCancel(cid, 'Está faltando player, alguém não possui level '..lvl..' , não está transformado no maximo ou você já fez a quest em menos de 24 horas.') return true return true end table.insert(check, x) end for k, tid in ipairs(check) do doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF) if tid ~= sort then doTeleportThing(tid, t[k].Pos[2]) end doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT) setPlayerStorageValue(tid, stor_time, os.time()+hours*1440) end return true end
https://prnt.sc/1f1jrl4 deu esse erro na distro
-
Alguém poderia me ajudar a remover essas checagem de vocation e item?
Qual o motivo deste tópico?
Remover checagem de vocation e checagem de item
Está surgindo algum erro? Se sim coloque-o aqui.
Não
Você tem o código disponível? Se tiver publique-o aqui:
local lvl = 1
local stor_time = 68741
local hours = 24
local t = {
{vocations = {1, 1},Pos = {{x=906, y=625, z=5},{x=917, y=586, z=7}},item= {9020,{x=907, y=623, z=5}}}, -- TANK OR DRUNK
{vocations = {1, 1},Pos = {{x=907, y=625, z=5},{x=916, y=587, z=7}},item= {9020,{x=907, y=623, z=5}}}, -- TANK OR DRUNK
{vocations = {1, 1},Pos = {{x=908, y=624, z=5},{x=915, y=588, z=7}},item= {9020,{x=907, y=623, z=5}}}, -- TANK OR DRUNK
{vocations = {1, 1},Pos = {{x=908, y=623, z=5},{x=915, y=576, z=7}},item= {9020,{x=907, y=623, z=5}}}, -- TANK OR DRUNK
{vocations = {1, 1},Pos = {{x=907, y=622, z=5},{x=914, y=575, z=7}},item= {9020,{x=907, y=623, z=5}}}, -- TANK OR DRUNK
{vocations = {1, 1},Pos = {{x=906, y=622, z=5},{x=913, y=574, z=7}},item= {9020,{x=907, y=623, z=5}}} -- TANK OR DRUNK}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
local items = {}
for _, k in ipairs(t) do
local x = getTopCreature(k.Pos[1]).uid
local v = getTileItemById(k.item[2], k.item[1])
if x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE or getPlayerStorageValue(x, stor_time) - os.time() > 0 then
doPlayerSendCancel(cid, 'Está faltando player, alguém não possui level '..lvl..' , não está transformado no maximo ou você já fez a quest em menos de 24 horas.') return true
elseif v.uid == 0 then
doPlayerSendCancel(cid, "Todos os itens precisão estar na posição.") return true end
table.insert(check, x)
table.insert(items, v)
end
for k, tid in ipairs(check) do
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
if tid ~= sort then
doTeleportThing(tid, t[k].Pos[2])
end
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
setPlayerStorageValue(tid, stor_time, os.time()+hours*1440)
end
for _, remove in ipairs(items) do
doRemoveItem(remove.uid)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
endVocê tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
-
-
3 horas atrás, Pisces disse:
Estava com pouco tempo.. Mas estranho não estar funcionando a parte do IP, sendo que é a mesma linha de código que tu enviou anteriormente kkk
O script só vai funcionar se o target for um jogador e que este seja maior ou igual ao level do cid, talvez você matou alguém de level inferior.
Jogador morto level 550, o killer era 600 e ambos com mesmo ip porque sou eu testando e não teve punição ou não entendi direito?
Em 20/01/2021 em 15:39, XGaduX disse:@WooX Ver se resolver esse...
Serei eternamente grato
-
Em 15/01/2021 em 13:27, Pisces disse:
As fórmulas são apenas cálculos comuns (adição, subtração, etc..) de acordo como você desejar. Irei pensar em um outro script, de modo que fique mais claro e envio aqui no tópico.
Não pensou em nada sobre o outro script?
-
6 horas atrás, XGaduX disse:
qual sua verão do TFS? já que ao matar o mesmo ip não da diferença
OTX, o script inicial funciona mas o modificado pelo amigo não tá funcionando
-
10 horas atrás, Pisces disse:
As fórmulas são apenas cálculos comuns (adição, subtração, etc..) de acordo como você desejar. Irei pensar em um outro script, de modo que fique mais claro e envio aqui no tópico.
Estarei esperando ansiosamente
-
7 horas atrás, Pisces disse:
A quantidade de XP que o jogador irá receber tu consegue definir nas variáveis "exp", "nexp", e "newexp", basta alterar as operações matemáticas que estão sendo feitas dentro delas. Modifiquei pra que o cálculo seja feito em cima do level do jogador inimigo, assim fica algo mais proveitoso e menos "fixo". Testa aí e me fala:
function onKill(cid, target) local lvlCid = getPlayerLevel(cid) local lvlTarget = getPlayerLevel(target) ------------- Em exp/nexp/newexp são as fórmulas de cálculo para decidir qual será a XP que o jogador irá obter. local exp = (50 * (lvlTarget) * (lvlTarget) * (lvlTarget) - 130 * (lvlTarget) * (lvlTarget) + 400 * (lvlTarget)) / 5 local nexp = (50 * (lvlCid) * (lvlCid) * (lvlCid) - 130 * (lvlCid) * (lvlCid) + 400 * (lvlCid)) / 5 local newexp = (exp - nexp) / 2 local punishment = 2 -- Valor que será multiplicado pelo resultado de 'newexp'. (Punição por matar player do mesmo IP) if (isPlayer(target)) and (lvlTarget >= lvlCid)then if getPlayerIp(cid) ~= getPlayerIp(target) then doPlayerAddExp(cid, newexp) doCreatureSay(cid, "You earned " .. newexp .. " points of experience.", TALKTYPE_MONSTER) else doPlayerAddExperience(cid, -((newexp) * punishment)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You have been punished for killing a player of the same IP.") end end return true end
a parte da punição por matar pelo mesmo ip não está funcionando e não aparece nenhum erro na distro, o resto tá funcionando perfeitamente, eu sei que estou pedindo demais mas não teria como deixar de forma mais clara essa formula de cálculo ? eu sinceramente não entendi nada e sobre a diferença de level deve está na formula também e como eu não entendi fica difícil fazer alguma modificação eu queria que o jogador que matar o outro for 100 leveis menor ganhar 50% da exp perdida se forem level igual ou 10 nivel de diferença ganhar 100% da exp perdida e se ele for 20 nivel ou mais não ganhar exp nenhuma, se tiver varios player matando 1 jogador a exp seja shareada de forma igual dentro das condiçôes citada.
não precisa ser necessariamente esse script, se você tiver algum outro funcional que consiga fica o mais próximo possivel das condiçôes citada eu ficaria grato eternamente.
eu acho que já estou pedindo demais mas se não for possivel tudo bem, o script tá funcionando perfeitamente tirando a parte do IP
-
17 minutos atrás, Pisces disse:
Não entendi a parte de ganhar em 'porcentagem', o ganho de XP está seguindo as fórmulas 'exp' e 'nexp'. Dá mais detalhes de como quer, e assim que possível eu vejo pra ti.
PS: Acho que ficaria legal se a fórmula fosse calculada em cima do level do player que morreu, e não em cima do lvl de quem matou (como está atualmente), daí colocar um limite de lvl tbm, pra evitar que jogadores iniciantes matem high lvl e abusem do ganho de xp.
@Pisces Eu gostaria que o jogador que matou o outro player ganhar uma porcentagem da exp perdida do jogador e que essa porcentagem seja configurável e ao matar um player level menor que o dele não ganhar exp
e se matar o jogador com o mesmo IP perder a experiência que ele ganharia do jogador que ele matou, nem sei se isso é possível nesse script.
Eu não conseguir deixar explicado isso no post por não entender sobre script estou começando agora e estou aprendendo conforme eu vou pesquisando vou aprendendo
-
Atualmente este script está dando experiência fixa e eu gostaria que ele estivesse ganhando em porcentagem (configurável) e se ele matar um player 10 leveis(configurável) menor que o dele não ganhar experiência nenhuma
Se for possível adicionar a perda de experiência ao matar com o mesmo IP em porcentagem e não fixa.
function onKill(cid, target) --config---------------------------- local lvl = getPlayerLevel(cid) --players level local nlvl = getPlayerLevel(cid) + 1 -- add 5 levels --end------------------------------- if isPlayer(target) == TRUE then if getPlayerIp(cid) ~= getPlayerIp(target) then local exp = (50 * (lvl) * (lvl) * (lvl) - 130 * (lvl) * (lvl) + 400 * (lvl)) / 5 local nexp = (50 * (nlvl) * (nlvl) * (nlvl) - 130 * (nlvl) * (nlvl) + 400 * (nlvl)) / 5 local newexp = nexp - exp doPlayerAddExp(cid,newexp) doSendAnimatedText(getPlayerPosition(cid), "Orgasmic~", 198) else doPlayerAddExperience(cid, -90000000) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You have been punished for killing a player of the same IP.") end end return TRUE end
-
Alguém poderia me ajudar a mudar algumas coisas nesse script?
gostaria de remover essa quantidade de items deixando apenas 1
e que eu consiga coloca varios items diferente mas a quantidade precisa ser apenas 1 por exemplo item= {2160,EXEMPLO1,EXEMPLO2,EXEMPLO3{x=906, y=588, z=7}}}
local lvl = 1
local stor_time = 68767
local hours = 1
local pos_die = {x=905, y=571, z=6}
local t = {
{vocations = {1, 1},Pos = {{x=912, y=583, z=7},{x=904, y=573, z=6}},item= {9020,{x=906, y=578, z=7}}}, -- DRUNK
{vocations = {1, 1},Pos = {{x=910, y=579, z=7},{x=904, y=575, z=6}},item= {9020,{x=906, y=588, z=7}}}, -- PARALYZE
{vocations = {1, 1},Pos = {{x=902, y=579, z=7},{x=906, y=575, z=6}},item= {9020,{x=907, y=584, z=7}}}, -- BRUISER
{vocations = {1, 1},Pos = {{x=910, y=587, z=7},{x=906, y=573, z=6}},item= {9020,{x=905, y=584, z=7}}}, -- HEAL
{vocations = {1, 1},Pos = {{x=900, y=583, z=7},{x=905, y=574, z=6}},item= {9020,{x=905, y=582, z=7}}}, -- ATK
{vocations = {1, 1},Pos = {{x=902, y=587, z=7},{x=904, y=573, z=6}},item= {9020,{x=907, y=582, z=7}}} -- DISTANCE}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
local items = {}
for _, k in ipairs(t) do
local x = getTopCreature(k.Pos[1]).uid
local v = getTileItemById(k.item[2], k.item[1])
if x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE or getPlayerStorageValue(x, stor_time) - os.time() > 0 then
doPlayerSendCancel(cid, 'Está faltando player, alguém não possui level '..lvl..' ou não está transformado no maximo.') return true
elseif v.uid == 0 then
doPlayerSendCancel(cid, "Todos os itens precisa estar na posição.") return true end
table.insert(check, x)
table.insert(items, v)
end
local sort = check[math.random(1, #check)]
for k, tid in ipairs(check) do
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
if tid ~= sort then
doTeleportThing(tid, t[k].Pos[2])
else
doTeleportThing(tid, pos_die)
end
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
setPlayerStorageValue(tid, stor_time, os.time()+hours*1)
end
for _, remove in ipairs(items) do
doRemoveItem(remove.uid)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end -
6 minutos atrás, Mask Ghoul disse:
E em creaturescript/login.lua , verifque achar >> registerCreatureEvent(cid, "AutoBless") <<
local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}function onLogin(cid)
registerCreatureEvent(cid, "onPrepareDeathinifi")
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
setPlayerStorageValue(cid, 30024, 0)
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
endisso é uma parte do login e não tem nenhuma autobless
-
-
Alguém poderia me ajudar, tenho um problema no meu servidor onde os players morre seja pra player ou pra monster eles perdem exp normalmente mas as vezes eles simplesmente não perder exp nenhuma
Alguém pode me ajudar?
Como funciona o fromvoc e se tem algum problema colocar diferente do ID da vocation
em Suporte Tibia Alternativo
Postado · Editado por Breniinx (veja o histórico de edições)
Boa Noite, como o titulo do post já fala, alguém poderia me explicar como funciona a ID vocation e fromvoc, também gostaria de saber se existe algum problema colocar ambos diferentes, eu tenho um servidor de Dragon ball e existem varias transformação e elas tem ID vocation diferente e se eu deixar ID Vocation e Fromvoc iguais quando o jogador morrer ele não volta para a transformação inicial, o problema de não voltar para a transformação inicial é porque o jogador pode perder o level da transformação atual e mesmo assim manter a transformação, eu poderia usar o Niwdeath porém tive problemas com ele onde o AOL parava de funcionar entre outras coisas e a fromvoc foi a unica forma que eu achei de resolver esse "Problema" ela volta pra transformação inicial mas não tira o outfit estou fazendo esse post pra saber se existe algum problema ao colocar Fromvoc diferente do ID Vocation, exceto esse da outfit e se tem alguma forma de fazer isso corretamente sem ter nenhum problema com outfit e vocation.
Abaixo tem um pequeno exemplo da vocation Zamasu, com a fromvoc alterada e diferente da ID vocation.