Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. 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
  2. Vou fazer seu script quando chegar em casa, depois do trabalho. Att, Garou.
  3. Oneshot

    A Fábrica

    A ideia é até interessante, Markin, vou estudar a possibilidade. Att.
  4. Fiz um NPC Agiota muito maneiro aqui no trabalho, preciso testar quando chegar em casa :P
  5. 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.
  6. 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
  7. 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.
  8. 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.
  9. Não dá para fazer isso e desconfio que nem modificando todas as sources. É legal, porque alimenta a discórdia no servidor, quem nunca dropou uma Jewel of Bless no MU e foi roubado? haha
  10. Com o creaturescript onTradeAccept?
  11. Ele remove o item do corpo do monstro e o coloca no chão aos lados do corpo, entendeu agora?
  12. Spread Loot Este é um pedido feito no tópico A Fábrica Boa noite, galera. Este é o primeiro pedido atendido no meu tópico A Fábrica, foi um pedido feito pelo usuário OriGM. Consiste em um sistema de "espalhar" o loot do monstro em uma área delimitada de 1 sqm, torna o jogo bem real, afinal muitos MMORPGs, como Mu Online, Ragnarok, entre outros, "espalham" seu loot. Não tive como fazer diferentes testes, mas acho que funciona muito bem e não tem bugs severos, como criar itens em tiles bloqueados. A instalação é fácil como qualquer creaturescript. spreadloot.lua local function doSpreadLoot(fromPosition, toPosition, container) for slot = (getContainerSize(container.uid) - 1), 0, -1 do local item = getContainerItem(container.uid, slot) if not isContainer(item.uid) then local position = { x = math.random(fromPosition.x, toPosition.x), y = math.random(fromPosition.y, toPosition.y), z = fromPosition.z, } local itemEx = doCreateItemEx(item.itemid, item.type) if doTileAddItemEx(position, itemEx) then doRemoveItem(item.uid) end else doSpreadLoot(fromPosition, toPosition, item) doRemoveItem(item.uid) end end return true end function onKill(cid, target) if isMonster(target) then local position = getCreaturePosition(target) local name = getCreatureName(target) local fromPosition = {x = position.x - 1, y = position.y - 1, z = position.z} local toPosition = {x = position.x + 1, y = position.y + 1, z = position.z} addEvent(function() local container = getTileItemById(position, getMonsterInfo(name).lookCorpse) if container.uid > 0 then doSpreadLoot(fromPosition, toPosition, container) end end, 100) end return true end login.lua registerCreatureEvent(cid, "SpreadLoot") creaturescripts.xml <event type="kill" name="SpreadLoot" event="script" value="lootsystem.lua"/> Bom, isso é tudo, minha galera. Att, Oneshot Garou
  13. Oneshot

    A Fábrica

    Seu pedido foi aceito. É uma ideia bem interessante para ser colocada em prática, vou analisar melhor e desenvolver algo nesses moldes.
  14. Oneshot

    A Fábrica

    Este é um bom pedido, um sistema de drop loot igual a Diablo, não é? Seu pedido foi aceito. Colocarei ele na fila no tópico principal, irei desenvolver este script assim que tiver um tempo livre. Att. Seu pedido foi recusado. É uma magia de simples desenvolvimento com conditions. Crie um tópico na seção de Pedidos e use o seguinte tópico como referência. http://www.xtibia.com/forum/topic/120583-spell-utito-trans-wolf/ Att.
  15. Oneshot

    A Fábrica

    A Fábrica Introdução Já foram criadas iniciativas parecidas aqui no fórum, tópicos onde membros dariam sugestões de códigos a serem desenvolvidos, ideias de sistemas, e etcétera. Mas estes tópicos não deram certo, membros que davam ideias e sugestões, se viam o direito de ficar cobrando a todo momento que sua ideia fosse desenvolvida e eu não quero isso aqui. Este será um tópico para troca de mercadorias, isso mesmo, eu vou vender códigos de scripts ou sources, e o pagamento será a sua criatividade, uma troca mútua, você me dá a sua ideia, e eu retorno com código de alta qualidade. Decidi criar esse tópico na seção Outros e não na seção de Pedidos, para que seus conceitos não sejam assimilados, aqui é um tópico onde você dá sua ideia e aguarda ela ser desenvolvida, calado, eu não quero conversas paralelas, e cobrança, já que tudo aqui se trata de colaboração, trabalho voluntário e um objetivo, enriquecer a área Scripting, e também a área Programação. Regras - Você pode sugerir qualquer tipo de script aqui, mas tenha bom-senso, vir neste tópico pedir um NPC que troca um item pelo outro, uma alavanca que faz uma pedra sumir, é no mínimo pedir para ser xingado. Por isso, utilize o Pesquisar, e, se você tem preguiça de fazer isso, nada te impede de criar seu tópico com seu pedido simples e repetitivo na seção Pedidos e Dúvidas. - Não faça flood aqui, faça seu pedido, se ele for aceito, ele será desenvolvido e disponibilizado em seu respectivo tópico na área de Scripting ou Programação. - Fez seu pedido e está impaciente? Não venha dar quote no seu pedido e ficar cobrando o desenvolvimento dele, isso só vai me fazer ter raiva de você e recusar qualquer coisa vinda de você. - O mesmo vale para pedidos complexos, você tem que entender que leva tempo, e eu me reservo o direito de não querer atender certos pedidos. E, lembrando, nada te impede de criar um tópico na seção de Pedidos e Dúvidas. - Para fim de organização, apenas usuários com mais de 50 posts e 30 dias de conta poderão usufruir d'A Fábrica. - Detalhe seu pedido, não adianta chegar aqui com algo subjetivo do tipo "Dãã eu quero uma alavanca" Pedidos Spread Loot CONCLUÍDO Bounty Hunter Em planejamento Dynamic Movements Em análise Item Quality System Em análise Title System Em análise
  16. Não sou programador, sou um cara que se acha designer porque faz umas signs e avatares mal feitos pra cacete, além de se achar zueiro.
  17. O tópico pode ser trancado.
  18. E ainda tem que atualizar. rsrs
  19. Oneshot

    Mudança de nome

    depois que criei acabei nem entrando no fórum, desde então, quando foi dia 26 de dezembro de 2013, eu fiz meu primeiro post depois de 1 ano, (foi um tópico), foi quando eu decidi ser um usuário ativo no fórum (acabei nem sendo tão ativo por causa de motivos pessoais) então eu queria trocar meu nome, por que ninguém merece um nome dos meus Itazveloxz (que nome horrível) então eu queria meu nome como Williw. (Acaba fazendo parte do meu nome na vida real, Will). No seu caso, 36 posts e 1 ponto de reputação, acho que pode criar outra conta, né?
  20. Este post está ocultado porque você escolheu ignorar posts do(a) usuário(a) Maenilse. Deseja visualizar este post?
  21. Eu não tenho um user definido, mas vários dos meus personagens estão S+ e 60+. Tô gostando de jogar com minha Rey e meu Dio híbrido. Gosto bastante de jogar com o Sieghart, Jin, Edel. Tava upando a Holy e o Azin. Só posso jogar depois das 18h, estou no trabalho agora
  22. http://levelupgames.uol.com.br/grandchase/ se quiser eu te do umas ideias. Opa, vamos lá, fala seu IGN, a gente marca uns PVPs, missões e tal
  23. Estou triste. Fecharam o tópico de Mudança de Nome sem ver meu pedido...
    1. Alexclusive

      Alexclusive

      Fica triste nao tio :/

      O tópico não acabou , é que eu tinha colocado ele pra fechar automaticamente e esqueci de tirar.

      Eu estava viajando e por isso deu uma pausa, estarei atualizando lá hoje!

      Fique feliz! =D

  24. Por padrão, o editor de mapas mais usado, salva arquivos de mapa em UTF-8, por isso acentos são transformados em símbolos estranhos, pois essa codificação não os interpreta corretamente. Desconheço se é possível alterar essa codificação.
  25. Ah, Thiago, como eu amo seus POGs, mas eu prometi para mim mesmo que não vou refazer funções alheias para alimentar meu ego...
  • Quem Está Navegando   0 membros estão online

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