Ir para conteúdo

Sun

Membro
  • Registro em

  • Última visita

Tudo que Sun postou

  1. testa isto pra gente ver oque irá acontecer. @Nother
  2. qual versão do seu tfs?
  3. falta a tabela, se não tiver a tabela no script não irá funcionar mesmo! me envia este tutorial
  4. queria saber, esta task_sys está na sua lib?
  5. envie o script quando for assim, pra ser lido direto e ter sua resposta mais rapido! @Nother
  6. Sun postou uma resposta no tópico em Suporte Tibia OTServer
    reeditei.
  7. Sun postou uma resposta no tópico em Suporte Tibia OTServer
    function onLogin(player) local exp = 900 if player:getLevel() <= 7 then player:addExperience(exp, false) end return true end testa dessa forma @Lost666
  8. @sklorde Este script está puxando diversos códigos, seriam Poison Power, Ember, Yawm e statsChange, envia eles aqui! podem ser vários motivos, getPlayerSlotItem pode estar sendo passado de forma errada, ou está função não esta sendo puxada pelo seu system. envie eles aqui. debugar códigos em LUA é mais facil usar print(variavel)
  9. @carloschc https://github.com/edubart/otclient/tree/v0.6.5
  10. se tiver mais duvidas ai sobre Linguagem Lua só criar um tópico que estarei lá para te ajudar!.
  11. sim, mas ele não queria a script em si! ele quer uma explicação do porque da forma que ele está editando, está dando erro.
  12. @leessandro então amigo, eu nunca usei math.randomseed enquanto programo para tibia, pelo simples fato do tempo! vou explicar melhor, quando não se tem algo gerando valores de tempo, não se usa math.randomseed, mas oque seria o tempo? vou tentar explicar de uma forma mais simples sem você se perder, o console em si, já é um math.randomseed, ele já irá gerar pra você novos valores sem precisar ter que ficar usando está função! então onde se usaria ela? num OTC, que ali os valores precisam ser gerados pelo gerador e como não tem nada para que gere isso para ele como o console que já faz este processo! vou te dar um exemplo de um catch que eu mesmo desenvolvi! local catch local srand = math.random(1, x.chance) if srand > Pokebals_chance["pokeball"] and srand <= Pokebals_chance["greatball"] then -- ## se o valor gerado for maior que a chance da pokebola, e que este valor seja menor que o da great ball catch = true else catch = false end if catch then doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoON) addEvent(function() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) item = doCreateItemEx(12664, 1) doItemSetAttribute(item, "poke", name) doItemSetAttribute(item, "nome", i) doItemSetAttribute(item, "description", description) doPlayerAddItemEx(cid, item, true) end, 3000) else doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoOff) addEvent(doPlayerSendTextMessage, 3000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Escapou!.") end espero que tenha entendido! e fica livre ai se outro tiver uma explicação melhor sobre!!!!. claro que não postei o catch completo, é apenas um exemplo!
  13. testa ae! @Orientalz
  14. parabéns pelo system, mas não faz muito sentido setar uma storage global! nem pesquisar a storage global, pois o system Horder Leader é apenas 1 monster que nasce com level alto, addon e ele apenas sumona monster, então trabalhar com storages ai não faz muito sentido!.
  15. Se quer deixar fixo deixe mLevel = 500 Não se esqueça de deixar rep+ e colocar a resposta como solucao, para ajudar mais pessoas!
  16. se você retirar a storage, todo player que morrer independente irá ganhar xp! só vc remover está linha if getPlayerStorageValue(target, 2310) == -1 then return true end
  17. function onDeath(cid, corpse, deathList) local position = getPlayerPosition(deathList[1]) local target = getCreatureTarget(deathList[1]) local mLevel = getPlayerLevel(cid) <= getPlayerLevel(target) and 500 or 5000 if getPlayerStorageValue(target, 2310) == -1 then return true end doSendAnimatedText(position, "+" .. tostring((getPlayerExperience(target) / mLevel) .. "exp", COLOR_RED) doCreatureAddHealth(deathList[1], 1000) doPlayerAddExperience(deathList[1], (getPlayerExperience(target) / mLevel)) return true end perdão a demora, está ai o script! não se esqueça de registrar no login.lua e colocar a tag no xml! <event type="death" name="PvpEnforced" event="script" value="death.lua"/> e em login.lua registerCreatureEvent(cid, "PvpEnforced") lembrando!, não altere nada no script, você pode alterar apenas a storage tá ai o funcionamento!. @poko360 lembrando se te ajudei rep+ e coloque como {Solução}
  18. já que não deu pra fazer isto já em c++, vamos por Lua xD. @Nother crie um arquivo em creaturescript chamado em advanceSpeed.lua e cole function onAdvance(cid, skill, oldLevel, newLevel) if newLevel then doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, VocationSpeed[getPlayerVocation(cid)].speed) end return true end e agora em creaturescript.xml cole isto <event type="advance" name="AdvanceSpeed" event="script" value="advanceSpeed.lua"/> agora em login.lua cole isto isto registerCreatureEvent(cid, "AdvanceSpeed")
  19. reverte tudo que eu disse!, agora vai em player.h procure por void updateBaseSpeed() { if(!hasFlag(PlayerFlag_SetMaxSpeed)) baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1)); else baseSpeed = SPEED_MAX; } e troque por void updateBaseSpeed() { if(!hasFlag(PlayerFlag_SetMaxSpeed)) baseSpeed = vocation->getBaseSpeed(); else baseSpeed = SPEED_MAX; } agora certeza que vai!
  20. vai em player.cpp e procure por void Player::addExperience(uint64_t exp) logo abaixo terá updateBaseSpeed(); g_game.changeSpeed(this, 0); apague estas duas linhas de codigo ainda em player.cpp agora procure por void Player::removeExperience(uint64_t exp, bool updateStats/* = true*/) abaixo irá ter updateBaseSpeed(); g_game.changeSpeed(this, 0); apague essas duas linha de código, compile e seja feliz! Se te ajudei de alguma forma, rep+ e {Solução} para o post que teve sua duvida sanada!.
  21. manda o arquivo de reverter!
  22. crie um arquivo na lib chamado BaseSpeed.lua e coloque VocationSpeed = { [1] = {speed = 1}, [2] = {speed = 1}, [4] = {speed = 1}, [5] = {speed = 1}, [6] = {speed = 1}, -- Vegeta [11] = {speed = 1}, [12] = {speed = 1}, [14] = {speed = 1}, [15] = {speed = 1}, [16] = {speed = 1}, -- Dende [21] = {speed = 1}, [22] = {speed = 1}, [24] = {speed = 1}, [25] = {speed = 1}, [26] = {speed = 1}, -- Piccolo [31] = {speed = 1}, [32] = {speed = 1}, [34] = {speed = 1}, [35] = {speed = 1}, [36] = {speed = 1}, -- Yamcha [41] = {speed = 1}, [42] = {speed = 1}, [44] = {speed = 1}, [45] = {speed = 1}, [46] = {speed = 1}, -- Freeza [51] = {speed = 1}, [52] = {speed = 1}, [54] = {speed = 1}, [55] = {speed = 1}, [56] = {speed = 1}, -- Bardock [61] = {speed = 1}, [62] = {speed = 1}, [64] = {speed = 1}, [65] = {speed = 1}, [66] = {speed = 1} } agora em creaturescript/script crie um arquivo chamado de speed.lua function onLogin(cid) if VocationSpeed[getPlayerVocation(cid)] then doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, VocationSpeed[getPlayerVocation(cid)].speed) end return true end agora em creaturescript.xml coloque <event type="login" name="Speed" script="speed.lua" /> em login.lua registerCreatureEvent(cid, "Speed") agora troque seu vocations por este local config = { --[vocation id] = { level, nova voc, looktype, efeito} -- Goku [1] = { 100, 2, 4, 114}, [2] = { 200, 3, 5, 114}, [4] = { 100, 5, 4, 114}, [5] = { 200, 6, 5, 114}, [6] = { 300, 7, 6, 114}, -- Vegeta [11] = { 100, 12, 13, 116}, [12] = { 200, 13, 14, 114}, [14] = { 100, 15, 16, 114}, [15] = { 200, 16, 17, 114}, [16] = { 300, 17, 18, 114}, -- Dende [21] = { 100, 22, 22, 111}, [22] = { 200, 23, 23, 111}, [24] = { 100, 25, 25, 111}, [25] = { 200, 26, 27, 111}, [26] = { 300, 27, 28, 111}, -- Piccolo [31] = { 100, 32, 32, 111}, [32] = { 200, 33, 33, 111}, [34] = { 100, 35, 33, 111}, [35] = { 200, 36, 34, 111}, [36] = { 300, 37, 35, 111}, -- Yamcha [41] = { 100, 42, 42, 116}, [42] = { 200, 43, 43, 116}, [44] = { 100, 45, 44, 116}, [45] = { 200, 46, 45, 116}, [46] = { 300, 47, 46, 116}, -- Freeza [51] = { 100, 52, 52, 116}, [52] = { 200, 53, 53, 116}, [54] = { 100, 55, 53, 116 }, [55] = { 200, 56, 54, 116 }, [56] = { 300, 57, 55, 116 }, -- Bardock [61] = { 100, 62, 63, 116 }, [62] = { 200, 63, 64, 116 }, [64] = { 100, 65, 64, 116 }, [65] = { 200, 66, 65, 114 }, [66] = { 300, 67, 66, 114 } } function onSay(cid, words, param, channel) local voc = config[getPlayerVocation(cid)] if voc then if getPlayerLevel(cid) >= voc[1] then doPlayerSetVocation(cid, voc[2]) doCreatureSay(cid, "Aaah !!!!", 19) local outfit = {lookType = voc[3]} doCreatureChangeOutfit(cid, outfit) doSendMagicEffect(getCreaturePosition(cid), voc[4]) doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, VocationSpeed[getPlayerVocation(cid)].speed) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Voce precisa estar no level " .. voc[1] .. " para transformar.") end else doPlayerSendCancel(cid, "Nao é possível se transformar.") end return true end testa ae, provavelmente irá funcionar 100% @Nother Base script feita com a versão 0.4, se testar e funcionar contigo, repute e coloque como {Solução}, para que mais pessoas com necessidade do script, possam ser ajudadas tbm!. toda vez em que adicionar algo novo, não se esqueça de alterar na lib tbm a base speed! OBS: Necessariamente não iria precisar criar um creaturescript (onLogin), fiz isto para que não tenha nenhum conflito de algo e acabando não alterando a speed. você pode remover se quiser, não irá alterar quase em nada. (A maioria dos ots derivados de nto,dbo etc, quando você loga, sua outfit não é a mesma da vocation atual, então para que isto seja sanado precisa do (onLogin).)

Informação Importante

Confirmação de Termo