-
Total de itens
411 -
Registro em
-
Última visita
-
Dias Ganhos
10
Histórico de Reputação
-
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
-
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
-
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.
-
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.
-
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.
-
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
-
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?
-
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 }
-
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.
-
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 -
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.
-
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
-
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
->
-
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?
-
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á!
-
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..
-
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
-
RigBy deu reputação a DeCarvalho em Passagem Secreta Diferente
Ficou bem maneiro e funcional. é fácil adaptar para 1.2?
-
-
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.
-
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 -
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
-
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()) -
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) -
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.