Ir para conteúdo

RigBy

Visconde
  • Total de itens

    411
  • Registro em

  • Última visita

  • Dias Ganhos

    10

Histórico de Reputação

  1. Upvote
    RigBy deu reputação a Vodkart em [System] Invite Friends! (Low Rate Serve)   
    Resumo: Para quem já jogou league of legends, o sistema é "parecido" com o Invite Friends, e para quem não jogou irei dar uma breve descrição sobre o sistema.
     
    Descrição: O sistema oferece algumas premiações como: Itens, Premium Days, Montarias, Premium Points(para site) e Outfits. Claro que isso tudo é configurável.
    A ideia principal do sistema foi que essas premiações fossem exclusivas do sistema, digamos, que os jogadores só fossem recompensados e tivessem certas montarias/outfits se ele atingisse num número "X" de pontos por ter ajudado seu servidor a crescer!
    Como todo mundo almeja algo exclusivo e difícil de ser obtido, iria instigar os jogadores a usar o sistema e convidar seus amigos para o servidor!
     
    Como Funciona o Sistema?
     
    O sistema foi planejado para que jogadores "espertinhos" não burlassem o sistema e acontece da seguinte maneira:
     
    Temos o jogador João e a jogadora Maria:
     
    Maria necessita ser level 30 ou menor que 30(Configurável) para utilizar uma talkactions e dizer por quem foi invitada para o servidor, vamos supor que João a convidou Maria para jogar, João por sua vez necessita também ter um level avançado, digamos 50 ou superior(Configurável). Feito com sucesso o uso do sistema, ele funciona da seguinte maneira:
    OBS: Você pode dizer o nome do jogador mesmo que ele esteja OFFLINE!
     
    OBS2: Um ou mais Players podem ser invitador pelo MESMO JOGADOR! ENTÃO QUANTO MAIS PLAYER VOCÊ CHAMAR, MAIS FÁCIL DE RECEBER PONTOS E PREMIAÇÕES
     
    O jogador invitado, no caso o João, teria que atingir um número "X" de pontos para receber premiações, por exemplo:
     
    * Com 10 Pontos jogão recebe: Itens
    * Com 25 Pontos jogão recebe: Itens e Premium Points
    * Com 50 Pontos jogão recebe: Itens e Montaria
    * Com 100 Pontos jogão recebe: Itens, Premium Points, Premium Days e Outifit
    (Claro que isso é tudo configurável em uma Tabela)
     
    E como recebo Recebo esses Pontos VODKART SEU FILHO DA PUTA!
     
    Se lembra que João Convidou Maria para Jogar? Então... Maria tem que atingir certos leveis para que João receba esses pontos! Por exemplo a tabela do sistema:
    levels_win = { [50] = 5, [80] = 6, [100] = 8, [150] = 10 }, Se Maria atingir level 50, João recebe 5 pontos Se Maria atingir level 80, João recebe 6 pontos Etc... Claro que isso tudo é acumulativo! E sabe o que mais? João recebe Pontos mesmo se estiver ONLINE ou OFFLINE! Sem mais delongas, Vamos instalar o sistema! Instalando o Sistema: data\creaturescripts\scripts InviteFriends.lua function onLogin(player) player:registerEvent("FriendsPoints") if player:getStorageValue(_invite_friends.storages[1]) < 0 then player:setStorageValue(_invite_friends.storages[1], 0) player:setStorageValue(_invite_friends.storages[4], 0) end if getInvitePoints(player) > 0 then local acc = player:getAccountId() local FriendPoints, CheckPoints = getInvitePoints(player), player:getStorageValue(_invite_friends.storages[4]) for vod, ka in pairs(_invite_friends.rewards) do local str = "" if FriendPoints >= vod and CheckPoints < vod then str = str.."--> Invite Players System <--\n\nVocê acaba de receber algumas recompensas:\n\nItems: \n"..getItemsFromList(ka.items)..".\n\n" if ka.p_days > 0 then player:addPremiumDays(ka.p_days) str = str.."Premium Days:\n"..ka.p_days.." Premium Days." end if ka.p_points > 0 then db.executeQuery('UPDATE accounts SET premium_points=premium_points+' .. p_points ..' WHERE id=' .. acc) str = str.."Premium Points:\n"..ka.p_points.." Premium Points." end if ka.out[1] > 0 then player:addOutfitAddon(player:getSex() == PLAYERSEX_FEMALE and ka.out[1] or ka.out[2], 3) str = str.."[New Outfit]\nRecebeu uma Nova Outfit." end if ka.mount_id > 0 then player:addMount(ka.mount_id) str = str.."[New Outfit]\nRecebeu uma Nova Montaria." end player:setStorageValue(_invite_friends.storages[4], FriendPoints) local town_id = player:getTown():getId() if #ka.items > 0 then local parcel = player:getDepotChest(town_id, true):addItem(2595) for _, i_i in ipairs(ka.items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then parcel:addItem(item, amount) else for i = 1, amount do parcel:addItem(item, 1) end end end end local townid = player:getTown():getId() local letter = player:getDepotChest(town_id, true):addItem(2598, 1, true, 1) letter:setAttribute(ITEM_ATTRIBUTE_WRITER, "[+] Invite Players System [+]") letter:setAttribute(ITEM_ATTRIBUTE_TEXT, str) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE,"[Invite Players System] Você Recebeu algumas premiações por estar convidando jogadores para o servidor, Por favor conferir os itens no Depot.") end end end return true end function onAdvance(player, skill, oldlevel, newlevel) if (skill == SKILL__LEVEL) then if hasInviteFriend(player) and player:getStorageValue(_invite_friends.storages[3]) < newLevel and _invite_friends.levels_win[newLevel] then local f_name, points = getNameFriend(player), _invite_friends.levels_win[newLevel] player:setStorageValue(_invite_friends.storages[3], newLevel) addInvitePoints(f_name, points) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "[Invite Friends] você atingiu o level "..newLevel.." e o seu amigou "..f_name.." recebeu "..points.." Friend Points. Obrigado!") end end return true end creaturescripts.xml <event type="advance" name="FriendsPoints" script="InviteFriends.lua"/> <event type="login" name="FriendsLogin" script="InviteFriends.lua"/> data\lib\core invitefriends.lua _invite_friends = { storages = {202301, 202302, 202303, 202304}, -- points, jogador, recompensa lvl, recompensa items level_max = 30, -- até que level ele precisa falar seu friend level_need = 50, -- que lever o jogador precisa ser para ganhar pontos levels_win = { [50] = 5, [80] = 6, [100] = 8, [150] = 10 }, rewards = { [10] = {items = {{2160,1},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [25] = {items = {{2160,2},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [50] = {items = {{2160,3},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [100] = {items = {{2160,4},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [200] = {items = {{2160,5},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [250] = {items = {{2160,6},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {698, 699}}, [500] = {items = {{2160,7},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}} } } function getInvitePoints(cid) local cid = Player(cid) if cid == nil then return false end return getPlayerStorageValue(cid, _invite_friends.storages[1]) < 0 and 0 or getPlayerStorageValue(cid, _invite_friends.storages[1]) end function hasInviteFriend(cid) local cid = Player(cid) if cid == nil then return false end return getPlayerStorageValue(cid, _invite_friends.storages[2]) > 0 and true or false end function getNameFriend(cid) local cid = Player(cid) if cid == nil then return false end return getPlayerNameByGUID(getPlayerStorageValue(cid, _invite_friends.storages[2])) end function addInvitePoints(name, amount) local pid, Guid = getPlayerByName(name), getPlayerGUIDByName(name) if not pid then local getFriendPoints = db.storeQuery("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) if getFriendPoints ~= false then db.asyncQuery("UPDATE `player_storage` SET `value` = ".. (result.getDataInt(getFriendPoints, "value")+amount) .." WHERE `player_id` = ".. Guid .." AND `key` = ".._invite_friends.storages[1]) end else setPlayerStorageValue(getPlayerByName(name), _invite_friends.storages[1], getInvitePoints(getPlayerByName(name))+amount) end return true end function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. ItemType(items[i][1]):getName() if i ~= table.maxn(items) then str = str .. ', ' end end end return str end function getPlayerNameByGUID(guid) local a = db.storeQuery('SELECT `name` FROM `players` WHERE `id` = ' .. guid .. ' LIMIT 1') if a then return result.getDataString(a, "name") end return nil end function PlayerExist(name) -- by vodka local a = db.storeQuery('SELECT `id` FROM `players` WHERE `name` = ' .. db.escapeString(name)) if a ~= false then return true end return false end  

    Na mesma pasta procure por data\lib\core.lua e adc essa linha: dofile('data/lib/core/invitefriends.lua') data\talkactions\scripts InviteFriends.lua function onSay(player, words, param) local param = param:lower() if param == "" or not param then player:sendCancelMessage("Você precisa digitar o nome de um jogador.") return false elseif param == "points" then player:popupFYI("[+] Invite Friend System [+]\n\nvocê tem ["..getInvitePoints(player).."] Friends Points.") return false elseif hasInviteFriend(player) then player:sendCancelMessage("Você já agradeceu o jogador ["..getNameFriend(player).."] por te convidar a jogar neste servidor.") return false elseif not getPlayerGUIDByName(param) then player:sendCancelMessage("Desculpe, mas o jogador [" .. param .. "] não existe.") return false elseif player:getLevel() > _invite_friends.level_max or result.getDataInt(db.storeQuery("SELECT `level` FROM `players` WHERE `id` = "..getPlayerGUIDByName(param)), "level") < _invite_friends.level_need then player:sendCancelMessage((player:getLevel() > _invite_friends.level_max and "Desculpe, mas você precisa ter no maximo level ".._invite_friends.level_max.." para usar este comando." or "Desculpe, mas o jogador ["..param.."] precisa ter no minimo level ".._invite_friends.level_need.." para ser escolhido.")) return false elseif player:getName():lower() == param then player:sendCancelMessage("Desculpe, mas você não pode se auto invitar.") return false end player:setStorageValue(_invite_friends.storages[2], getPlayerGUIDByName(param)) player:sendTextMessage(25, "Você indicou o jogador "..param..", este sistema é uma forma de agradecer a vocês por trazerem seus amigos para jogar.") player:getPosition():sendMagicEffect(math.random(28,30)) return false end talkactions.xml <talkaction words="!invited" separator=" " script="InviteFriends.lua"/> Exemplo de uso do comando: Vodkart me chamou para jogador? uso o comando: !invited vodkart Configurando o Sistema: *Vá na LIB do sistema que você adicionou* level_max = 30, -- até que level ele precisa falar seu friend level_need = 50, -- que lever o jogador precisa ser para ganhar pontos levels_win = { -- [LEVEL QUE PRECISA ATINGIR] = QUANTIDADE DE PONTOS QUE O OUTRO JOGADOR VAI RECEBER [50] = 5, [80] = 6, [100] = 8, [150] = 10 } rewards = { [10] = {items = {{2160,1},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [25] = {items = {{2160,2},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [50] = {items = {{2160,3},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [100] = {items = {{2160,4},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [200] = {items = {{2160,5},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, [250] = {items = {{2160,6},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {698, 699}}, [500] = {items = {{2160,7},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}} } rewards = { [PONTOS NECESSÁRIO PARA OBTER A PREMIAÇÃO] = exemplo: [10] = {items = {{2160,1},{2173,1}}, p_days = 0, mount_id = 0, p_points = 0 , out = {0,0}}, com 10 pontos ele irá rceber aquele itens acima /\ items = {} -- Poderá adicionar itens em uma tabela dizendo {id do item, quantidade} p_days = 0 -- se o jogador vai receber Premium Days? 0 ou Quantidade que vc deseja dar mount_id = 0 -- Se o jogador vai receber montaria? Colocar o Mount ID(que fica em mounts.xml) Ou deixar 0 para nenhuma p_points = 0 -- se o jogador vai receber Premium Points? 0 ou Quantidade que vc deseja dar out = {0,0} -- se vai recever outfit? {FEMALE, MALE} OU {0 , 0} para nenhuma  
  2. Upvote
    RigBy recebeu reputação de Administrador em ShowOff - Moba!?!   
    Um show-off de um evento que eu to desenvolvendo baseado em jogos do gênero MOBA, como Dota, LOL, Smite...
     
    Por enquanto só fiz a simulação dos monstro anda até o monstro inimigo:
     

     
    Sugestões é só comenta
     
  3. Upvote
    RigBy deu reputação a Administrador em Adquira sua conquista aqui!   
    Peça sua conquista aqui, você deve conter o número de posts equivalente para recebê-la.

    50 posts
    100 posts
    500 posts
    1000 posts
    5000 posts
     
     
    • Novo: Os membros terão a conquista referente ao maior número de posts, tornando-as assim evolutivas.
  4. Upvote
    RigBy deu reputação a Administrador em Ajuste de Conquistas   
    Houve uma manutenção nas conquistas esta madrugada, como podem ver foram reformuladas as conquistas para equipe e para o sistema de Melhores Respostas.

    Todos os membros com 25 melhores respostas ou mais já possuem as conquistas.

















  5. Upvote
    RigBy recebeu reputação de JS Lotus em Fruit Picking (Colheita de fruta)   
    Fruit Picking
     



     
    Introdução: é um sistema simples, consiste em você pode colher a fruta da arvore e ela crescer depois de um tempo de novo.
     
    Instalar o script:
    em action/script crie: FruitHarvesting.lua
    adicione:
    -- Do not remove the credits -- -- [ACTION] Fruit Harvesting -- -- Developed by Rigby -- -- Especially for the Xtibia.com -- local config = { -- [ID_DA_ARVORE] = {FRUTA, QUANTIDADE{minimo, maximo}, ID_DA_ARVORE_SEM_FRUTO, TEMPO_PARA_ÀRVORE_FICA_COM_FRUTO} [5157] = {fruit = 5097, quantity = {0,1}, treeWithoutFruit = 5156, timeToGrow = 5}, [4006] = {fruit = 2675, quantity = {0,3}, treeWithoutFruit = 4008, timeToGrow = 20}, [5094] = {fruit = 2676, quantity = {3,6}, treeWithoutFruit = 5092, timeToGrow = 30}, [5096] = {fruit = 2678, quantity = {2,7}, treeWithoutFruit = 2726, timeToGrow = 70}, } function onUse(cid, item, fromPosition, itemEx, toPosition) for i, k in pairs(config) do if (isInArray(i, item.itemid) == true) then random = math.random(k.quantity[1],k.quantity[2]) doTransformItem(item.uid, k.treeWithoutFruit, 1) doPlayerAddItem(cid,k.fruit,random) addEvent(function() doTransformItem(getThingFromPos(toPosition).uid, i) end, k.timeToGrow * 1000) if random > 0 then doPlayerSendTextMessage(cid,27,"Você pego "..random.." "..getItemNameById(k.fruit).."!") else doPlayerSendTextMessage(cid,27,"Àrvore não deu nenhum fruto!") end end end return true end em action/action.xml
    adicione a tag:
    <action itemid="5157;4006;5094;5096" event="script" value="FruitHarvesting.lua"/> Se você adicionar mais arvore não esqueça de adiciona o id na tag também.


  6. Upvote
    RigBy deu reputação a zipter98 em [Pedido] Ganhar Item quem Bater no Monstro   
    local config = {
    name = "monster_name", --Nome do monstro.
    medal = xxx, --ID da medalha.
    damagePrizes = {
    --[{minDamage, maxDamage}] = {{itemid, count}, {itemid, count}, {itemid, count}, ...},
    [{1, 1000}] = {{9281, 1}, {2160, 50}},
    [{1001, 2000}] = {{9281, 1}, {2160, 50}, {2191, 100}, {9282, 1}},
    },
    storage = 91828,
    }
     
    function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(attacker) and isMonster(cid) and getCreatureName(cid) == config.name and type == STATSCHANGE_HEALTHLOSS then
    local damage = getPlayerStorageValue(attacker, config.storage) < 1 and 0 or getPlayerStorageValue(attacker, config.storage)
    setPlayerStorageValue(attacker, config.storage, damage + value)
    end
    return true
    end
     
    function onDeath(cid, corpse, deathList)
    for _, pid in pairs(deathList) do
    local damage, prizes = getPlayerStorageValue(pid, config.storage), {}
    for dmg, items in pairs(config.damagePrizes) do
    if damage >= dmg[1] and damage <= dmg[2] then
    prizes = items
    break
    end
    end
    if #prizes > 0 then
    local prize = prizes[math.random(#prizes)]
    doPlayerSendTextMessage(pid, 27, "For helping killing "..config.name..", you received a medal and "..prize[2].."x "..getItemNameById(prize[1])..".")
    doPlayerAddItem(pid, prize[1], prize[2])
    doItemSetAttribute(doPlayerAddItem(pid, config.medal, 1), "description", "Medalha de honra ganha por "..getCreatureName(pid).." por ajudar a derrotar o "..config.name.." no dia "..os.date("%D")..".")
    setPlayerStorageValue(pid, config.storage, -1)
    end
    end
    db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storage)
    return true
    end

     
  7. Upvote
    RigBy deu reputação a Administrador em [Encerrado]Nebula - Rei Johian   
    Uma cidade esquecida pelo tempo. O lar do Rei é revelado, junto às criaturas que causaram seu desaparecimento.

    Estará Johian morto?















































  8. Upvote
    RigBy recebeu reputação de DeCarvalho em Parametros   
    sendMagicEffect, não é obrigatório usar esses nomes, você pode usar o numero de quando você usa o comando !z 10 por exemplo:
    player:sendMagicEffect(10), ira solta aquele effect do exori.
     
     
    A diferencia entre ele é que:
    player:say, obriga o player e fala algo e outras pessoas podem ver
    player:sayTextMessage, aparece uma msg na tela,chat ou serv log e apenas o player pode ver
     
    No TFS 1.2 so da para ver pelas source mas no 0.4 da para ver no 000-constant
    TALKTYPE_FIRST = 1 TALKTYPE_SAY = TALKTYPE_FIRST TALKTYPE_WHISPER = 2 TALKTYPE_YELL = 3 TALKTYPE_PRIVATE_PN = 4 TALKTYPE_PRIVATE_NP = 5 TALKTYPE_PRIVATE = 6 TALKTYPE_CHANNEL_Y = 7 TALKTYPE_CHANNEL_W = 8 TALKTYPE_BROADCAST = 9 TALKTYPE_CHANNEL_RN = 10 TALKTYPE_PRIVATE_RED = 11 TALKTYPE_CHANNEL_O = 12 TALKTYPE_MONSTER_SAY = 13 TALKTYPE_MONSTER_YELL = 14 TALKTYPE_LAST = TALKTYPE_MONSTER_YELL TALKTYPE_TYPES = { ["say"] = TALKTYPE_SAY, ["whisper"] = TALKTYPE_WHISPER, ["yell"] = TALKTYPE_YELL, ["private-playernpc"] = TALKTYPE_PRIVATE_PN, ["private-npcplayer"] = TALKTYPE_PRIVATE_NP, ["private"] = TALKTYPE_PRIVATE, ["channel-yellow"] = TALKTYPE_CHANNEL_Y, ["channel-white"] = TALKTYPE_CHANNEL_W, ["broadcast"] = TALKTYPE_BROADCAST, ["channel-red"] = TALKTYPE_CHANNEL_RN, ["private-red"] = TALKTYPE_PRIVATE_RED, ["channel-orange"] = TALKTYPE_CHANNEL_O, ["monster"] = TALKTYPE_MONSTER, ["monster-yell"] = TALKTYPE_MONSTER_YELL, ["rvr-channel"] = TALKTYPE_RVR_CHANNEL, ["rvr-answer"] = TALKTYPE_RVR_ANSWER, ["rvr-continue"] = TALKTYPE_RVR_CONTINUE, ["channel-redanonymous"] = TALKTYPE_CHANNEL_RA } MESSAGE_FIRST = 13 MESSAGE_EVENT_ORANGE = MESSAGE_FIRST MESSAGE_STATUS_CONSOLE_ORANGE = 14 MESSAGE_STATUS_WARNING = 15 MESSAGE_EVENT_ADVANCE = 16 MESSAGE_EVENT_DEFAULT = 17 MESSAGE_STATUS_DEFAULT = 18 MESSAGE_INFO_DESCR = 19 MESSAGE_STATUS_SMALL = 20 MESSAGE_STATUS_CONSOLE_BLUE = 21 MESSAGE_STATUS_CONSOLE_RED = 22 MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_RED MESSAGE_TYPES = { ["advance"] = MESSAGE_EVENT_ADVANCE, ["event"] = MESSAGE_EVENT_DEFAULT, ["white"] = MESSAGE_EVENT_DEFAULT, ["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE, ["info"] = MESSAGE_INFO_DESCR, ["green"] = MESSAGE_INFO_DESCR, ["small"] = MESSAGE_STATUS_SMALL, ["blue"] = MESSAGE_STATUS_CONSOLE_BLUE, ["red"] = MESSAGE_STATUS_CONSOLE_RED, ["warning"] = MESSAGE_STATUS_WARNING, ["status"] = MESSAGE_STATUS_DEFAULT }  
     
  9. Upvote
    RigBy recebeu reputação de Rajas em Limite de player por sala   
    Limite de player por sala
     
    Introdução:
    Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos.
    O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada.
     
    Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe.
     
    Caso a sala esteja lotada.

    Caso não.

     
    Em data/movement/script, crie 
    LimiteArea.lua e adicione.
     
      Em movement/movement.xml Adicione essa tag    
    E depois adicionar o actionid no piso ou teleport pelo mapa editor. O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda. Caso você adicione mais locais você terá que adicione na tag também.        
  10. Upvote
    RigBy recebeu reputação de DeCarvalho em [TFS1.2]Mover Parede/Pedra/Estatua   
    To meio sem tempo mas fiz aqui:
    Coloque o actionid "13501" nos dois coal basin.
    -- made by Rigby (João Vitor) local whitepearl = {id = 2143, pos = {x = 91, y = 128, z = 7}} -- id da witherpearl e a posição onde deverar que ruma ela local blackpearl = {id = 2144, pos = {x = 89, y = 122, z = 7}} -- id da blackpearl e a posição onde deverar que ruma ela local wall = {id = 1445, pos = {x = 90, y = 125, z = 7}} -- id da parede e posição dela local time = 5 -- quanto tempo ficara aberto local storage = 21321 -- storage que precissa para passar function onAddItem(moveitem, tileitem, position) getWall = getTileItemById(Position(wall.pos), wall.id) getBlack = getTileItemById(Position(whitepearl.pos), whitepearl.id) getWhite = getTileItemById(Position(blackpearl.pos), blackpearl.id) if moveitem:getId() == whitepearl.id or moveitem:getId() == blackpearl.id then if getWhite.itemid ~= 0 or getBlack.itemid ~= 0 then if getWall.itemid ~= 0 then Position(wall.pos):sendMagicEffect(3) doRemoveItem(getWall.uid, 1) moveitem:remove() addEvent(function() Game.createItem(wall.id, 1, wall.pos) Position(wall.pos):sendMagicEffect(3) end, time*1000) end end end return true end function onStepIn(creature, item, position, fromPosition) if creature:isPlayer() then if creature:getStorageValue(storage) == -1 then creature:teleportTo(fromPosition) end end return true end
  11. Upvote
    RigBy recebeu reputação de Nikolass em Limite de player por sala   
    Limite de player por sala
     
    Introdução:
    Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos.
    O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada.
     
    Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe.
     
    Caso a sala esteja lotada.

    Caso não.

     
    Em data/movement/script, crie 
    LimiteArea.lua e adicione.
     
      Em movement/movement.xml Adicione essa tag    
    E depois adicionar o actionid no piso ou teleport pelo mapa editor. O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda. Caso você adicione mais locais você terá que adicione na tag também.        
  12. Upvote
    RigBy recebeu reputação de DeCarvalho em [TFS1.2]Mover Parede/Pedra/Estatua   
    Eu fiz desse jeito, vai remove a parede quando joga o item no coal basin mas para volta você coloca um teleport la porque se não o cara pode esquecer de ter o black pearl e fica preso la dentro.
    e também para que o cara não passe, não tendo feito a quest eu criei um movement que impede ele de passar.
    Testa ai:
    Movement:
    xml:
    <movevent event="AddItem" tileitem="1" actionid="13501" script="NOMEDOSCRIPT.lua"/> <movevent event="StepIn" actionid="13500" script="NOMEDOSCRIPT.lua"/> lua: local pearl = 2693 -- id do item que vai joga local pos = Position({x = 90, y = 124, z = 7}) -- onde a parede esta local wall_id = 3362 -- id da parede local time = 5 -- quanto tempo ficara aberto local storage = 21321 -- storage que precissa para passar function onAddItem(moveitem, tileitem, position) local wall = getTileItemById(pos, wall_id) if moveitem:getId() == pearl then if wall.itemid ~= 0 then pos:sendMagicEffect(3) doRemoveItem(wall.uid, 1) moveitem:remove() addEvent(function() Game.createItem(wall_id, 1, pos) pos:sendMagicEffect(3) end, time*1000) end end return true end function onStepIn(creature, item, position, fromPosition) if creature:isPlayer() then if creature:getStorageValue(storage) == -1 then creature:teleportTo(fromPosition) end end return true end agora só basta coloca o actionid 13501 no coal basin onde terá que joga o item e o actionid 13500 no local em que só pode passar se tiver feito a quest. ps. não esqueça de configurar o script  
  13. Upvote
    RigBy deu reputação a Administrador em [005]   
    Este é um tópico informativo. Aqui ficará registrado a promoção igualitária, positiva ou negativa; no que se diz respeito a congelamento ou avanço de sub-cargos e cargos.
    02/08/2015 - 21:30.

     
    Situação:
    Removido por inatividade.
    @moskitinho
     
    Situação:
    Removido por inatividade
    @Lucasmml
     
    Situação:
    Apto para exercer o sub-cargo Tutor I.
    @Mudrock
    -> ->
     
     
    Situação:
    Apto para exercer o sub-cargo Estagiário III.

    ->
     
    Situação:
    Apto para exercer o sub-cargo Estagiário I.
    @RigBy
    ->
     
    Situação:
    Apto para exercer o sub-cargo Moderador I.

    ->
     
    Situação:
    Apto para exercer o sub-cargo Coordenador III.

    ->
     
    Situação:
    Apto para exercer o sub-cargo Coordenador III.
    @Avuenja
    ->
     
     
     
     
     
     
  14. Upvote
    RigBy recebeu reputação de DeCarvalho em [TFS 1.2]Script que reduz skills em % dependendo da vocação   
    To meio sem tempo porque eu to consertando meu computador mas vou tentar fazer.
    Vou fazer um npc.
    * So vai ter essa redução se ele for para rook, então para outras cidades ele fica com a skill normal?
     
  15. Upvote
    RigBy deu reputação a DeCarvalho em [ModalWindow][TFS 1.2][NPC] Sistema de Diálogo   
    Esse sistema/script/sei lá o que foi desenvolvido por Karain que quis trazer um 'ar' mais moderno ao tibia..
    Com esse script conversar com o npc será mais uma experiência mais amigável, continua sendo customizável mas de uma forma mais fácil!
     

     
    Como instalar
     
    Em data/creaturescripts/creaturescrips.xml adicione
    <event type="modalWindow" name="Dialogue" script="dialogue.lua"/> Em data/creaturescripts/scripts/login.lua adicione isso antes do "return true"
    player:registerEvent("Dialogue") Crie em data/creaturescripts o arquivo dialogue.lua e adicione
    player_choices = {} defaultButtons = {{id = 0x00, text = "Select", enter = true, escape = false}, {id = 0x01, text = "End", enter = false, escape = true}} function Player:getChoiceText(choice_id) if player_choices and player_choices[self:getId()] then return player_choices[self:getId()][choice_id].text else return false end end function Player:createDialogueWindowWithButtons(modalWindowId, headerText, bodyText, buttonTable, choiceTable, sendToPlayer, priority) local var = ModalWindow(modalWindowId, headerText, bodyText) for i = 1, #buttonTable do var:addButton(buttonTable[i].id, buttonTable[i].text) if buttonTable[i].enter then var:setDefaultEnterButton(buttonTable[i].id) end if buttonTable[i].escape then var:setDefaultEscapeButton(buttonTable[i].id) end end player_choices[self:getId()] = choiceTable for i = 0, #choiceTable do if choiceTable[i] ~= nil and (choiceTable[i].storage == false or self:getStorageValue(choiceTable[i].storage[1]) == choiceTable[i].storage[2]) then var:addChoice(i, choiceTable[i].text) end end if not priority then var:setPriority(false) end if sendToPlayer then var:sendToPlayer(self) end end function onModalWindow(player, modalWindowId, buttonId, choiceId) -- be careful here if you have other modalwindow scripts if buttonId == 0x00 then player:say(player:getChoiceText(choiceId),TALKTYPE_SAY) elseif buttonId == 0x01 then player:say("Good Bye.",TALKTYPE_SAY) end return true end Crie em data/npc/scripts o arquivo dialogue.lua e adicione
    local npc_dialogue = { [1] = { message="This is the message that shows up before the choices, make sure it's long enough if you are having long choices.", choices= { [1]={text="Choice 1", storage=false, dialogue=1, script="end"}, [2]={text="Choice 2",storage=false, dialogue=2, script="script1"}, [3]={text="Choice 3",storage={1234,1}, dialogue=3, script="trade"}, [4]={text="Choice 4",storage=false, dialogue=3, script="quest"}, [5]={text="Choice 5",storage=false, dialogue=false, script="quest2"}}}, [2] = { message="Bla bla bla bla bla bla bla.", choices= { [1]={text="Choice 1",storage=false, dialogue=1, script="end"}, [2]={text="Choice 2",storage=false, dialogue=2, script="end"}, [3]={text="Choice 3",storage={1234,1}, dialogue=false, script="end"}, [4]={text="Choice 4",storage=false, dialogue=false, script="end"}, [5]={text="Choice 5",storage=false, dialogue=3, script="end"}}}, [3] = { message="Brought to you by Matt Shadowwing.", choices= { [1]={text="Choice 1",storage={1245,2}, dialogue=false, script="end"}, [2]={text="Choice 2",storage=false, dialogue=false, script="end"}, [3]={text="Choice 3",storage={1234,1}, dialogue=false, script="end"}, [4]={text="Choice 4",storage=false, dialogue=1, script="end"}, [5]={text="Choice 5",storage=false, dialogue=2, script="end"}}} } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 talkstate = {} local function greetCallback(cid) local player = Player(cid) local npc = Npc(getNpcCid()) npcHandler:setMessage(MESSAGE_GREET, npc_dialogue[1].message) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[1].message, defaultButtons, npc_dialogue[1].choices, true, false) talkstate[player:getId()] = 1 return true end local function creatureSayCallback(cid, type, msg) local player = Player(cid) local npc = Npc(getNpcCid()) if not npcHandler:isFocused(cid) then return false elseif talkstate[player:getId()] then for _, v in pairs(npc_dialogue[talkstate[player:getId()]].choices) do if msgcontains(msg, v.text) and (v.storage == false or player:getStorageValue(v.storage[1]) == v.storage[2]) then if v.script == "end" then talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) elseif v.script == "trade" then -- trading script here talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) elseif v.script == "quest" then -- quest script here talkstate[player:getId()] = v.dialogue npcHandler:say(npc_dialogue[v.dialogue].message, cid) player:createDialogueWindowWithButtons(1, npc:getName(), npc_dialogue[v.dialogue].message, defaultButtons, npc_dialogue[v.dialogue].choices, true, false) end end end end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em data/npc/lib/npcsystem/npchandler.lua altere todos os
    TALKTYPE_PRIVATE_PN para
    TALKTYPE_SAY Depois é só criar seu npc.xml referenciar o lua e seja feliz.. Qualquer problema eu terei que repassar para o criador pois não sou apto a dar suporte.. Estou somente trazendo para cá!
  16. Upvote
    RigBy deu reputação a DeCarvalho em [TFS 1.1/1.2] [ModalWindow] Crafting Avançado   
    Bem, esse é mais um sistema do RazorBlade, assim como no outro, pedi autorização para estar trazendo para cá. Esse sistema é bem complexo e enorme e, claro, pode ser alterado da maneira que lhe convir.
     
    Espero que quem usar e testar de um rep, pois traduzir, ajeitar o conteúdo, testar para ver se tem erros e reportar demora né.. estou trazendo pois sei que muitos brs não sabem o mínimo de inglês e acho que esses deveriam ao menos agradecer pelo trabalho de disponibilizar aqui.. Enfim.. novamente, Vamos começar
     
    Esse sistema é composto de 3 ferramentas distintas.: Smith(forja de items), Smelt(derretimento de items), tanning (tratar a pele) Caracteristicas
    Bem são mais de 2mil linhas de códigos vamos realmente começar?!?! -- ACTIONS Em actions.xml adicione isto
    Crie um arquivo scripts/crafting/smith.lua e adicione isso
    Crie um arquivo scripts/crafting/smelt.lua e adicione isso
    Crie um arquivo scripts/crafting/tan.lua e adicione isso
    -- CREATURESCRIPTS Em creaturescripts.xml adicione isso
    Crie um arquivo em creaturescripts/scripts/smith.lua e adicione isso
    Crie um arquivo em creaturescripts/scripts/smelt.lua e adicione isso
    Crie um arquivo em creaturescripts/scripts/tan.lua e adicione isso
    Em creaturescripts/scripts/login.lua adicione isso em qualquer area que seja depois da primera sessão de login
    e registre os eventos no final  
     
    -- SESSÃO DATA
     
    Em global.lua adicione
     
     
     
    Crie o arquivo smith.lua e adicione isso
     
     
     
    Crie o arquivo smelt.lua e adicione isso
     
     
     
    Crie o arquivo tan.lua e adicione isso
     
     
     
    Crie o arquivo skills.lua e adicione isso
     
     
     
    -- SESSÃO DATA 1
     
    Caso pretenda usar achievement para os sets é necessário adicionar mais 2 linhas ao global.lua
     
     
     
    Crie o arquivo achievements.lua e adicione isso
     
     
     
    Crie o arquivo sets.lua e adicione isso
     
     
     
    -- CONSIDERAÇÕES FINAIS
    O sistema foi testado em TFS 1.1 e 1.2 e esta funcionando sem problemas.
    Eu fiz testes usando o tfs 1.2 mas não usei o sistema de achievements, o resto todo que testei esta funcionando perfeitamente..
     
    Conheça também o sistema de alquimia avançada basta olhar a minha assinatura..
     
    Por favor, antes de qualquer pergunta leia atentamente todas as informações..
     
    Obs.: Curtiu, usou, testou.. da um rep ae.. isso mostra que valeu a pena gastar o tempo procurando algo interessante, pedindo autorização e tudo mais para trazer para cá.. além de não arrancar pedaço..
  17. Upvote
    RigBy recebeu reputação de DeCarvalho em Passagem Secreta Diferente   
    é o action do teleport, não precisa coloca em lugar nenhum, ele ja é criado automaticamente quando aparece o teleport.
     
    Sim, eu acabei de formatar o pc, então depois eu posto aqui adaptado para 1.2
  18. Upvote
    RigBy deu reputação a DeCarvalho em Passagem Secreta Diferente   
    Ficou bem maneiro e funcional. é fácil adaptar para 1.2?
  19. Upvote
    RigBy deu reputação a brendoonh em Passagem Secreta Diferente   
    Muito boom! Funfou 100%. Parabéns!!!
  20. Upvote
    RigBy deu reputação a Yan Oliveira em Passagem Secreta Diferente   
    Cara eu não curto tibia, nem conheço muito, mais o script ficou bem montado, estruturado, parabéns.
  21. Upvote
    RigBy recebeu reputação de Hit ToPlay em Passagem Secreta Diferente   
    Passagem Secreta
    Gif de como funciona


     
    Essa semana tava ajudando um cara chamado Farathor nesse topico, e foi uma ideia boa então decidi refazer e trazer pra cá
    Ela funciona da seguinte maneira, vai ter 3 coal basin (Você pode configurar e coloca quantas você quiser), ai você vai ter que joga 3 itens diferente em cada coal basin (no meu caso eu usei os 3 fields) a estatua vai se move criando um teleport ou não (configurado), depois que você entrar no teleport ele ira fechar ou não (configurado).
    Eu usei como exemplo os 3 field mas você pode alterar para algum item ou até adicionar ou remover mais locais onde tera que joga o item.

    Testei na TFS 0.4 rev 3887
     
    Então vamos instalar:
    Crie um arquivo chamado Secret_Passage.lua na pasta movement/script e coloque isso dentro:
     
    Agora adicione essa duas linha em movement.xml:
    <movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Secret_Passage.lua.lua"/> <movevent type="StepIn" actionid="5555" event="script" value="Secret_Passage.lua.lua"/> Agora so basta você adicionar o actionid 13501 nos coal basin ou nos piso mesmo. Se você alterar o actionid "5555" você terar que alterar no Secret_Passage.lua também. Para adicionar mais locais so basta você adicionar outra linha com o id do item e o local onde terá que ruma o item e não esqueã de sempre coloca 1 a mais no inicio, exemplo: se tiver 3 ai você cria o outro um a mais ficando 4. [4] = {necessary_Item = 2160, tile = {x = 1062, y = 1027, z = 7, stackpos= 1}}, Isso ai, xau
  22. Upvote
    RigBy deu reputação a zipter98 em Porta Só passa um player por vez   
    -- Do not remove the credits --
    -- [MOVEEVENT] Limite de player por sala --
    -- Developed by Rigby --
    -- Especially for the Xtibia.com --
     
    function onUse(cid, item, topos)
    local config = {
    -- Config --
    -- [ACTIONID] = {area = getPlayersInArea(AREA QUE IRA CHECAR (FROMPOS,TOPOS)), amountOfPlayers = QUANTIDADE QUE CABE}
    [50000] = {area = getPlayersInArea({x = 1030, y = 1020, z = 7}, {x = 1040, y = 1030, z = 7}), amountOfPlayers = 1}
    -- Config --
    }
    if config[item.actionid] then
    if #config[item.actionid].area >= config[item.actionid].amountOfPlayers then
    return doPlayerSendCancel(cid, 'Ja tem um player fazendo a quest, aguarde...')
    end
    doTeleportThing(cid, topos, true)
    end
    return true
    end
     
    function getPlayersInArea(fromPos, toPos) -- Function made by Vodkart
    local players = {}
    for _, pid in ipairs(getPlayersOnline()) do
    if isInRange(getPlayerPosition(pid), fromPos, toPos) then
    table.insert(players, pid)
    end
    end
    return players
    end

     
  23. Upvote
    RigBy recebeu reputação de gabriel28 em Ajuda nesse NPC.   
    Como já tinha feito, e só tinha esquecido de posta ta aqui:
    Eu meio que refiz.
     
    .xml
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Jasinto Pinto" script="NOME_DO_SCRIPT.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, gostaria de fazer uma mission"/> </parameters> </npc> .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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local storage = 60081 if msgcontains(msg, 'missão') and getPlayerStorageValue(cid, storage) == -1 then selfSay('Você poderia ajudar a achar o briquedo do meu irmão?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and getPlayerStorageValue(cid, storage) == -1 and talkState[talkUser] == 1 then selfSay('Obrigada, você estará fazendo um grande favor.', cid) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 end if msgcontains(msg, 'mission') and getPlayerStorageValue(cid, storage) == 1 then selfSay('Você acho o briquedo?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and getPlayerStorageValue(cid, storage) == 1 and talkState[talkUser] == 1 then if getPlayerItemCount(cid, 5944) >= 2 then selfSay('Obrigao, ja fazia ideia de que isso iria acontecer. Pegue isso em forma de gratidao!', cid) doPlayerAddItem(cid, 5908, 2) setPlayerStorageValue(cid, storage, 2) doPlayerRemoveItem(cid, 5944, 2) talkState[talkUser] = 0 else selfSay('Isso nao eh do meu irmao, nao brinque comigo!', cid) end end if msgcontains(msg, 'mission') and getPlayerStorageValue(cid, storage) == 2 then selfSay('Você ja me ajudou!', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  24. Upvote
    RigBy recebeu reputação de roriscrave em Porta Só passa um player por vez   
    Eu fiz isso porque caso o player deslogue la dentro e o tempo acaba-se o script ia buga e ele poderia fica la pra sempre.
    desculpa, muda o valor de 1 para -1 no setPlayerSto....
    Da uma olhada nessa parte:
    addEvent(function() if not isPlayer(cid) then return false end if getPlayerStorageValue(cid, 21321321) == 1 then doTeleportThing(cid, pos) setPlayerStorageValue(cid, 21321321, -1) end end, tempo * 60 * 1000)
  25. Upvote
    RigBy deu reputação a roriscrave em Porta Só passa um player por vez   
    mano, ele ja postou seu script completo, é so ver acima.
    o erro que deu é pq tu não prestou atenção direito
    29/07/2015 16:51:20] cannot open data/actions/scripts/doorsquest.lua: No such file or directory nao foi encontrado o arquivo chamado doorsquest.lua na sua pasta data/actions/scripts. voce colocou o nome dele errado!
  • Quem Está Navegando   0 membros estão online

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