Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Valeu, Alex. Você deixa uma grande marca aqui no fórum, foi você que acreditou no fórum, e assumiu a administração na pior fase. E se não fosse por você, eu ainda estaria banido, não teria meu trabalho reconhecido e continuaria com meu nick antigo que me desgostava bastante. Vejo no Alessandro, um sangue novo, espero que ele faça grandes coisas pelo fórum. Seja muito bem-vindo a administração. Infelizmente, gostaria de citar também a infeliz atitude de um membro aqui no tópico, se fosse ele a se despedir da equipe, adoraria falar que ele vai tarde também, mas... pera... a equipe não tem lugar para gente imatura. Boa sorte na vida, Alex Exclusivo
  2. local STORAGE = 1234 function onUse(cid, item, fromPosition, itemEx, toPosition) for _, player in ipairs(getPlayersOnline()) do doCreatureSetStorage(player, STORAGE, -1) end db.executeQuery("UPDATE `player_storage` SET `value` = -1 WHERE `key` = ".. STORAGE ..";") return true end Se divirta.
  3. Então, como eu fiz ele no trabalho, e lá não tenho acesso a jogos, quanto menos um servidor de um jogo, e foi feito de cabeça, não tem como estipular isso, depois faço uma versão com variáveis configuráveis.
  4. Os dias de juros são somados, porque ele usa a variável os.time(), caso o servidor fique offline, vai contar dias passados. Lembrando que, no script, o NPC tolera dois dias de juros, e depois manda caçar o jogador, dando red skull e 1 de HP no próximo login.
  5. Oneshot

    A Fábrica

    Pessoal, estou com algumas problemas para resolver, então não estou com tempo para programar os pedidos em fila. Peço paciência, só tempo livre (e minguado) nos sábados (e olha lá), espero pegar algum feriado para me dedicar aos pedidos feitos aqui. É isso, um abraço.
  6. Desculpa, gente, quando eu criei esse tópico foi inspirado no tópico do meu colega Luck Oake e vocês precisam ver a zona que aquilo se tornou, toda hora, postavam, "Meu pedido já foi feito?" Ou ainda membros BRIGANDO porque um ou outro queriam a mesma coisa que ele (?). Então fiz a descrição bem revoltada da Fábrica. Não deixem de postar suas ideias lá, pois eu coloco na minha fila de desenvolvimento e logo vocês terão bons sistemas para colocar no seu servidor.
  7. Boa tarde, Brundss. Delete o arquivo XML que você acabou de colocar na pasta mods do seu servidor e será resolvido.
  8. Vou fazer essa alteração mais tarde, valeu a sugestão.
  9. Bom, arrumei um erro básico, que estava executando o Spread Loot para jogadores, dando erro na função getMonsterInfo.
  10. Eu fico meio triste, porque no Xtibia.com, a área de pedidos é realmente só de pedidos e pedidos repetitivos e o povo nem dá o trabalho de pesquisar no fórum. Enquanto em outros fóruns, existem tópicos sobre dúvidas de como fazer tal coisa... :(
    1. Mostrar comentários anteriores  %s mais
    2. Incur

      Incur

      Acho que uma boa iniciativa é as escolinhas.. mas quem não quer tentar nem vai se interessar de qualquer jeito.

    3. RastaLegion

      RastaLegion

      Bennyyw ,só dar um alerta ,garanto que logo depois eles irão ler, Incur , é a escolinha é uma boa iniciativa mais, membros que fazem este tipo de tópico não tem interesse em aprender.

    4. Benny

      Benny

      E alerta serve de que ?

      Vai ser alertado, vai poco importar para o cara que criou a conta ontem, e amanhã ira ter seu pedido pronto, seu servidor online, e ele zuando no baiakzãozikafastattack99999x

      Entende?

  11. Oneshot

    A Fábrica

    Na verdade, é muito fácil mesmo fazer esse sistema, mas foi o que eu disse, não sei como executar a tal "verificação" sem colocar pelo menos actionid nos tiles que vão executar a verificação. rs Eaí, OriGM, gostou do seu pedido?
  12. Oneshot

    A Fábrica

    Vou deixar seu pedido em análise porque, se não me engano, esse tipo de script pode ser feito com um movement para simular a ideia de pular distâncias e uma action para simular a ideia de escalada. Um rascunho básico, sugere isso: local JUMPS = { [{x = 100, y = 100, z = 5}] = {x = 100, y = 100, z = 7}, } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) for _fromPosition, _toPosition in pairs(JUMPS) do if _fromPosition.x == position.x and _fromPosition.y == position.y then doTeleportThing(cid, _toPosition, true) doSendMagicEffect(_toPosition, CONST_ME_POFF) break end end return true end O script acima faz exatamente isso, compara posições, se achar uma posição registrada na tabela JUMPS, teleporta o jogador para uma posição, como essa posição só muda o z, dá a ideia que o jogador pulou a montanha. Simples assim. Oque eu estava falando, era algo mais complexo... Sem se limitar a posições, seria algo bem automatizado. Digamos assim: Eu estou em uma montanha X e essa montanha fica do lado esquerdo do mapa, eu chego no fim dessa montanha e do lado dela ( lado direito ) tem a montanha Y, só que alguns andares abaixo, eu estou afim de ir até essa montanha sem ter que dar aquela maldita volta, então oque eu faço? Eu salto da montanha X para a Y. Digamos que a checagem do salto seria +- assim: Ele percorre os tiles possíveis para a ação ( frente com um limite de 5 tiles, depois baixo-frente com um limite de 5 tiles... ) e checa a posição mais provável a ser utilizada, caso a posição seja valida, ele irá ser teleportado ( claro, talvez exista um jeito melhor de fazer a checagem, mas esse foi o modo que eu pensei agora... ). O mesmo vale para escalada ou descida ( pulo ), ele irá checar se é possível subir ou descer aquela montanha ou construção. Tudo isso totalmente automatizado... O player poderia utilizar esses recursos onde quisesse, existiria mil possibilidades de utilização, fora aqueles lugares que você sempre quis ir só que não pode né? Bem, é isso... Espero que goste Entendi agora sua ideia, mas não vejo como fazer isso, sem pelo menos depender de colocar actionids nos tiles que vão executar o moveevent.
  13. Tão revisado que é disponível na área Premium do fórum otland.net. Aliás, todos os scripts que a loja Chaitosoft vende, não foram feitos por eles. Valeu aí pelo conteúdo, embora não vá utilizar. Tenho uma rev própria.
  14. Particularmente não atendo pedidos de usuários que criam tópicos de pedidos um atrás do outro.
  15. Oneshot

    A Fábrica

    Opa, gostei muito da ideia, adoro essas coisas que existem em outros MMORPGs e não existem no Tibia.
  16. Acho que não, zipter. Como eu fiz de cabeça, só testei o NPC mesmo. Se der erro com alguém, eu arrumo.
  17. Oneshot

    Loan Shark

    Loan Shark Boa tarde, Estava eu trabalhando quando tive a ideia de programar um script qualquer, aí desenvolvi esse script. Bom, é um NPC simples, ele empresta uma quantia de dinheiro ao jogador, e cobra 50% de juros por dia, com um limite de 2 dias, ou seja um agiota. Se o jogador não pagar o dinheiro devido, ao entrar no servidor, com auxílio de um creaturescript, seu HP é reduzido para 1 e ele ganha uma red skull, simulando que o Agiota mandou caçar-lo. Bom, é isso aí. npc/scripts/loan shark.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local storage = { [1] = 12345, [2] = 12346, [3] = 12347, } function onCreatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end msg = msg:lower() or "" local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local loan = getPlayerLevel(cid) * 2000 if getCreatureStorage(cid, storage[1]) == -1 then if not talkState[talkUser] or talkState[talkUser] == 0 then if msgcontains(msg, "money") then selfSay("Well, well. I can loan some money to you, but I'm not stupid, don't try to be a smartass with me, agreed?", cid) talkState[talkUser] = 1 end elseif talkState[talkUser] == 1 then if msgcontains(msg, "yes") then selfSay("Okay, are you really desperate, heh? Well, I can loan to you, a maximum amount of ".. loan .." gold.", cid) selfSay("So, how much money, do you need?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "no") then selfSay("Okay.") talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif talkState[talkUser] == 2 then if not tonumber(msg) then selfSay("Say a number amount, stupid.") else if tonumber(msg) > loan then selfSay("Hey, smartass, I can loan to you a maximum amount of ".. loan .." gold.", cid) else doCreatureSetStorage(cid, storage[2], tonumber(msg)) selfSay("You will need ".. tonumber(msg) .." gold? Okay, my interest is 50% by day, agreed?", cid) talkState[talkUser] = 3 end end elseif talkState[talkUser] == 3 then if msgcontains(msg, "yes") then selfSay("Good choice, kid. Here is your money, but don't forget to pay me in 2 days, or my boys will beat up you pretty bad, after that I will forgive the debt.", cid) doPlayerAddMoney(cid, getCreatureStorage(cid, storage[2])) doCreatureSetStorage(cid, storage[1], 1) doCreatureSetStorage(cid, storage[3], os.time()) npcHandler:releaseFocus(cid) elseif msgcontains(msg, "no") then selfSay("Do you give up? Ooh, I forgot you are a milksop.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end else local days = math.floor((os.time() - getCreatureStorage(cid, storage[3])) / 86400) local value = (days > 0 and (getCreatureStorage(cid, storage[2]) * (1.5 ^ days)) or getCreatureStorage(cid, storage[2])) if not talkState[talkUser] or talkState[talkUser] == 0 then selfSay("Well, well... ".. getCreatureName(cid) ..", do you remember you borrowed ".. getCreatureStorage(cid, storage[2]) .." gold from me, right?", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, "yes") then selfSay("Good, because you need to pay me for ".. (days == 0 and "no" or days) .." days using my money.", cid) selfSay("The value you owe me is ".. value .." gold. Do you have it?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "no") then selfSay("Okay, then...", cid) selfSay("Just kidding, bitch! You need to pay me ".. value .." gold for ".. (days == 0 and "no" or days) .." days using my money. Do you have it, right?", cid) talkState[talkUser] = 2 end elseif talkState[talkUser] == 2 then if msgcontains(msg, "yes") then if getPlayerMoney(cid) >= value then doPlayerRemoveMoney(cid, value) selfSay("Very good, daug! If you need my money again, you can ask me, heheh...", cid) doCreatureSetStorage(cid, storage[1], -1) doCreatureSetStorage(cid, storage[2], -1) doCreatureSetStorage(cid, storage[3], -1) else selfSay("You don't have my money, no problem, you have ".. (days > 1 and "no more days" or "one day") .." before my boys hunt you, heh.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif msgcontains(msg, "no") then selfSay("So, it is good to get my money, because you have ".. (days > 1 and "no more days" or "one day") .." before my boys hunt you.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, onCreatureSayCallback) npcHandler:addModule(FocusModule:new()) creaturescripts/scripts/loan shark.lua local storage = { [1] = 12345, [2] = 12346, [3] = 12347, } function onLogin(cid) local days = math.floor((os.time() - getCreatureStorage(cid, storage[3])) / 86400) if getCreatureStorage(cid, storage[1]) == 1 and days > 2 then doCreatureSetStorage(cid, storage[1], -1) doCreatureSetStorage(cid, storage[2], -1) doCreatureSetStorage(cid, storage[3], -1) doCreatureAddHealth(cid, (1 - getCreatureMaxHealth(cid))) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The Loan Shark's boys beat up you pretty hard because you didn't paid the your debt in 2 days.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_BLOCKHIT) doCreatureSetSkullType(cid, SKULL_RED) end return true end creaturescripts/creaturescripts.xml <event type="login" name="LoanShark" event="script" value="loan shark.lua"/> O arquivo XML do NPC deixo por conta de vocês. Att, Garou
  18. Vou fazer seu script quando chegar em casa, depois do trabalho. Att, Garou.
  19. Oneshot

    A Fábrica

    A ideia é até interessante, Markin, vou estudar a possibilidade. Att.
  20. Fiz um NPC Agiota muito maneiro aqui no trabalho, preciso testar quando chegar em casa :P
  21. Eu tinha registrado diferente aqui no meu computador, obrigado pela observação. De fato, esqueci do onMove, com ele dá para fazer o que a galera quer, mas não estou afim, já me agrada como está. Sinta-se livre para fazer isso, xotservx.
  22. Tente seguir o rascunho abaixo. function onUse(cid, item, fromPosition, itemEx, toPosition) if not isCreature(itemEx.uid) and itemEx.itemid == 2472 then doTransformItem(itemEx.uid, 2494) end return true end Só registrar o ID 2422 do Iron Hammer no actions.xml
  23. Oneshot

    A Fábrica

    Vou deixar seu pedido em análise porque, se não me engano, esse tipo de script pode ser feito com um movement para simular a ideia de pular distâncias e uma action para simular a ideia de escalada. Um rascunho básico, sugere isso: local JUMPS = { [{x = 100, y = 100, z = 5}] = {x = 100, y = 100, z = 7}, } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) for _fromPosition, _toPosition in pairs(JUMPS) do if _fromPosition.x == position.x and _fromPosition.y == position.y then doTeleportThing(cid, _toPosition, true) doSendMagicEffect(_toPosition, CONST_ME_POFF) break end end return true end O script acima faz exatamente isso, compara posições, se achar uma posição registrada na tabela JUMPS, teleporta o jogador para uma posição, como essa posição só muda o z, dá a ideia que o jogador pulou a montanha. Simples assim.
  24. Isso não vai funcionar. Cara, isso já foi pedido tantas vezes, tenta fazer uma pesquisa no fórum, antes de criar mais um tópico, né? Enfim, você tem que procurar nas sources, essa função static uint64_t getExpForLevel(uint32_t lv) Aí dentro da função, procura pela fórmula: uint64_t exp = ((50ULL * lv * lv * lv) - (150ULL * lv * lv) + (400ULL * lv)) / 3ULL; Troca a fórmula por essa: uint64_t exp = ((5ULL * lv * lv * lv) - (15ULL * lv * lv) + (40ULL * lv)) / 30ULL; Isso vai aumentar o level máximo, exponencialmente, não sei pra quanto, compila e testa. Att, Garou.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...