Ir para conteúdo
  • Cadastre-se
  1. Pedro.

    Pedro.

  2. nari

    nari

  3. Vodkart

    Vodkart

  4. KotZletY

    KotZletY

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Linus
      Você  pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
       
       
      Testado em tfs 1.1, Versão 10.77
       
       
       
       
      Vá em data/npc/lib/ crie npc_resets.lua :
       



       
      Você pode editar mexendo aqui. no script acima :
      config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML :
       



       
       
       
      Agora em data/npc/scripts crie reseter.lua :
       



       
       
       
      Img : 
       

    • Por gpedro
      Testado: MySQL & SQLite
      Distro: TFS 0.4_SVN & TFS 0.3.6

      MySQL

      ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0"; SQLite ALTER TABLE players ADD resets INTEGER not null default 0 Adicionando nas sources player.h procure por: uint32_t level; logo abaixo, adicione: uint32_t resets; iologindata.cpp procure por query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`," substitua por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, " procure por player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); logo abaixo adicione: player->resets = (uint32_t)result->getDataInt("resets"); procure por query << "`maglevel` = " << player->magLevel << ", "; logo abaixo adicione: query << "`resets` = " << player->resets << ", "; players.cpp procure por: s << " (Level " << level << ")"; substitua por: s << " (Level " << level << ") [Reset " << resets << "]"; players.h procure por: void setPromotionLevel(uint32_t pLevel); logo abaixo adicione: uint32_t getResets() { return resets;} void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } luascript.cpp para 0.3.6 static int32_t luaDoPlayerSetIdleTime(lua_State* L); logo abaixo adicione: static int32_t luaGetResets(lua_State* L); static int32_t luaSetResets(lua_State* L); talkactions.xml <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> <talkaction words="!reset;/reset" script="reset.lua"/> ranks.lua
      Créditos: Dark Skyllen, Marcryzius, Mock, Kydrai, Cykotitan, gpedro*.
      * adaptação para 0.4
    • Por xWhiteWolf
      Fala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei umas coisas repetidas e adicionei novas funções; 
      Você agora pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
      Testado em TFS 0.3.6, Versão 8.45

      Sem mais delongas, vamos ao script.
      Antes de tudo crie um arquivo chamado reseter.lua na pasta data\npc\scripts\ e coloque isso daqui dentro dele:


      Você pode editar tudo mexendo aqui:
      local config = {
      minlevel = 150, --- level inical para resetar
      price = 10000, --- preço inicial para resetar
      newlevel = 20, --- level após reset
      priceByReset = 0, --- preço acrescentado por reset
      percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
      levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset
      }
      Feito isso, crie agora o npc que irá utilizar esse script.. em data\npc crie um arquivo.xml chamado Reseter.xml e coloque isso dentro dele:
      Agora é só colocar o seu npc no mapa pelo mapa editor e curtir

      OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query
      OBS 2: Esse script dava pra ser diminuido ainda mais mas por hora deixa ele assim, se vc tiver alguma proposta melhor por favor poste nos comentários que eu testo a sua versão e edito o tópico se for o caso.
      OBS 3: Não remova os créditos, isso é a coisa mais baixa e suja que alguém pode fazer.. eu scripto pra ajudar a comunidade do Tibia a evoluir e libero 99% doque eu faço, se vocês não removerem os créditos e não postarem em outros fórums sem minha permissão isso pode continuar assim.


      --- EDIT: Coloquei algumas imagens pra vcs verem como fica no server  
       
         
       
         

       



      EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.

      EDIT2: Novos erros arrumados, agora o NPC dá bye automaticamente e não buga qnd te reseta.

      EDIT3: Resolvido bug de dar hi, reset, yes várias vezes e derrubar o servidor (troque tanto o xml qnt o script do npc)
      O script também foi identado.
    • Por vankk
      Eu tinha esse evento muito tempo aqui no meu Pen Drive (para ser mais específico 4 anos), eu vou mudar ele para 1.2 amanha, entao nao me interessa a versao 0.4 mais. Nao sei se esta funcionando, nao tenho mapa. E nao vou explicar configuracoes, se voce nao souber configurar esse evento, voce nao merece te-lo em seu servidor!! Entao esta ai o code:

      login.luaregisterCreatureEvent(cid, "TBEventC") registerCreatureEvent(cid, "TBEventS") registerCreatureEvent(cid, "TBEventO") tb.lualocal config = { base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base teamStorage = 49595, fragStorage = {49596, 49597} } function addFrag(id) return setGlobalStorageValue(config.fragStorage[id], math.max(1, (getGlobalStorageValue(config.fragStorage[id])+1))) end function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function onCombat(cid, target, lastHit, flags) if not(isPlayer(cid)) or not(isPlayer(target)) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(target) then return doPlayerSendCancel(cid, "You may not attack teammates.") and false end return true end function onStatsChange(cid, attacker, type, combat, value) if combat == COMBAT_HEALING then return true end if not(isPlayer(cid)) or not(isPlayer(attacker)) then return true end if isMonster(attacker) and getTeam(cid) ~= 0 then return false end if isMonster(attacker) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(attacker) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You may not attack teammates.") and false elseif getTeam(cid) == 0 then return true end if type ~= STATSCHANGE_HEALTHLOSS then return true end if value >= getCreatureHealth(cid) then doTeleportThing(cid, config.base[getTeam(cid)]) doSendMagicEffect(getThingPos(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) addFrag(getTeam(attacker)) doPlayerSendTextMessage(attacker, MESSAGE_INFO_DESCR, "You killed ".. getPlayerName(cid) .." and earned a frag for your team. Your team now has ".. getFragsTB(getTeam(attacker)) .. " frags.") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You were owned by ".. getPlayerName(attacker) ..".") return false end return true end function onOutfit(cid, old, current) if getTeam(cid) ~= 0 then return doPlayerSendCancel(cid, "You cannot change your outfit here.") and false end return true end globalevents
      tbevent.lualocal config = { tpPos = {x=92,y=118,z=7}, -- where tp happends tpToPos = {x=130,y=130,z=7}, -- tp p onde minutes = 1, -- minute area = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of fight area waiting = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of waiting arena needed = 2, -- minimum players timeToEnd = 30*1000, -- time to end base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base names = {"Alliance", "Horde"}, -- team names outfit = {{132, 136, 40},{132, 136, 160}}, -- outfits teamStorage = 49595, fragStorage = {49596, 49597}, fragsToWin = 3, -- frags to win outfitStorage = 49598 } function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function setTeam(cid, team) local o = getCreatureOutfit(cid) setPlayerStorageValue(cid, config.outfitStorage, "{lookType=" .. o.lookType .. ", lookHead=" .. o.lookHead .. ", lookAddons=" .. o.lookAddons .. ", lookLegs=" .. o.lookLegs .. ", lookBody="..o.lookBody .. ", lookFeet=".. o.lookFeet.."}") doCreatureChangeOutfit(cid, {lookType = config.outfit[team][getPlayerSex(cid)+1], lookHead = config.outfit[team][3], lookAddons = 3, lookLegs = config.outfit[team][3], lookBody = config.outfit[team][3], lookFeet = config.outfit[team][3]}) return setPlayerStorageValue(cid, config.teamStorage, team) end function winner(id) if isInArray({1,2}, id) then doBroadcastMessage(config.names[id] .. " has won the Team Battle event.") for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) == id then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has won the Team Battle event.") local rand = math.random(1,3) if rand == 1 then doPlayerAddItem(cid, SOFTBOOTS_ID, 1) elseif rand == 2 then doPlayerAddItem(cid, 2160, 10) else doAddPoints(cid, 5) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has lost the Team Battle event.") end end else doBroadcastMessage("No one won the Team Battle event. DRAW") end for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) ~= 0 then doTeleportThing(cid, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(cid), 10) setPlayerStorageValue(cid, config.teamStorage, -1) setGlobalStorageValue(5474578, -1) doCreatureChangeOutfit(cid, loadstring("return " .. getPlayerStorageValue(cid, config.outfitStorage))()) end end end function areaPlayers(c) local t = {} for x = c[1].x, c[2].x do for y = c[1].y, c[2].y do for z = c[1].z, c[2].z do local tmp = getThingFromPos({x=x,y=y,z=z,stackpos=253}) if tmp.uid > 0 and (isPlayer(tmp.uid)) then table.insert(t, tmp.uid) end end end end return t end function endTB(z) if z >= config.timeToEnd then local w = getFragsTB(1) == getFragsTB(2) and 3 or getFragsTB(1) > getFragsTB(2) and 1 or 2 return winner(w) elseif getFragsTB(1) ~= getFragsTB(2) then if getFragsTB(1) >= config.fragsToWin then return winner(1) elseif getFragsTB(2) >= config.fragsToWin then return winner(2) end end addEvent(endTB, 25, z+25) end function setTeams(cid, team) local pos = config.base[team] if not(isPlayer(cid)) then return true end doTeleportThing(cid, pos) doSendMagicEffect(pos, 10) setTeam(cid, team) end function startTB() doRemoveItem(getTileItemById(config.tpPos, 1387).uid) local ppl = areaPlayers(config.waiting) for i = 1, #ppl do local level = getPlayerLevel(ppl[i]) if not(level >= 150) then -- LEVEL HERE doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getThingPos(ppl[i]), 10) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "To fight here must be level 150.") end end ppl = areaPlayers(config.waiting) if #ppl%2 == 1 then local r = ppl[math.random(#ppl)] doTeleportThing(r, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(r), 10) doPlayerSendTextMessage(r, MESSAGE_INFO_DESCR, "Sorry, but you were kicked from the event for balancement.") end ppl = areaPlayers(config.waiting) if #ppl >= config.needed then for p = 1, #ppl/2 do addEvent(setTeams, 10*1000, ppl[p], 1) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end for p = #ppl/2+1, #ppl do addEvent(setTeams, 10*1000, ppl[p], 2) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end addEvent(endTB, 10*1000, 0) return doBroadcastMessage("Team Battle event started.") end for i = 1, #ppl do doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getTownTemplePosition(1), 10) doPlayerSendTextMessage(ppl[i], MESSAGE_INFO_DESCR, "There were not enough players") end doBroadcastMessage("Team Battle failed to start, because there were not enough players.") setGlobalStorageValue(5474578, -1) end function onTime() setGlobalStorageValue(config.fragStorage[1], -1) setGlobalStorageValue(5474578, 1) setGlobalStorageValue(config.fragStorage[2], -1) doBroadcastMessage("Team Battle event will start in " .. config.minutes .. " minutes. The teleporter is open now. ") doCreateTeleport(1387, config.tpToPos, config.tpPos) for m = config.minutes-1, 0, -1 do if m == 0 then addEvent(startTB, config.minutes*60*1000) else addEvent(doBroadcastMessage, (config.minutes-m)*60*1000, "Team Battle event will start in " .. m .. " minutes.") end end return true end Créditos: Desconhecido.


      Yours VANKK;
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo