Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/17/16 em todas áreas
-
[TFS 1.2+] Invite Players System!
[TFS 1.2+] Invite Players System!
Jeff Delay e 2 outros reagiu a Vodkart por uma resposta no tópico
3 pontosResumo: 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+' .. ka.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 _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 = {0, 0}}, [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 adicione 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 = {0, 0}}, [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 nenhuma3 pontos -
[TFS 1.2] Offline Message
[TFS 1.2] Offline Message
luanluciano93 e um outro reagiu a vankk por uma resposta no tópico
2 pontosOffline Message by vankk Eu estava codando um sistema de Auction para o Aura, e precisou dessa função, e gostaria de compartilhar com vocês para caso vocês precisem também. Basicamente o script irá enviar uma message para um jogador contendo uma mensagem. Execute em seu phpMyAdmin essa query: CREATE TABLE `offline_message` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_name` varchar(64) NOT NULL, `message` TEXT NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`player_name`) REFERENCES `players`(`name`) ON DELETE CASCADE ) ENGINE=MyISAM DEFAULT CHARSET=latin1 Em data/global.lua adicione function doSendOfflineMessage(targetName, message) db.query(string.format('INSERT INTO `offline_message` (player_name, message) VALUES (%s, %s)', db.escapeString(targetName), db.escapeString(message))) end function Player.checkOfflineMessage(self, playerName) local resultId = db.storeQuery(string.format('SELECT * FROM `offline_message` WHERE `player_name` = %s', db.escapeString(playerName))) if resultId ~= false then local message = result.getDataString(resultId, "message") local id = result.getDataString(resultId, "id") self:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Offline Message:\n%s', message)) db.query(string.format('DELETE FROM `offline_message` WHERE `id` = %d', id)) end end Em data/creaturescripts/login.lua adicione essa linha em qualquer parte do código antes do return true: player:checkOfflineMessage(player:getName()) Para enviar uma mensagem para algum jogador é doSendOfflineMessage(playerName, message). Por exemplo: doSendOfflineMessage('Vankk', 'Aura é o melhor servidor baiak de todos os tempos. Parabéns.') Até a próxima . vankk.2 pontos -
(Resolvido)Status de VIP aparecer no Site.
(Resolvido)Status de VIP aparecer no Site.
Pedriinz e um outro reagiu a Lost666 por uma resposta no tópico
2 pontos55555 é a storage do vip, mas como no seu servidor vip é premium account você pode trocar a linha no character por essa ou então descubra a storage da premium e so troque no config. $main_content .= '<tr bgcolor="' . $bgcolor . '"><TD>Vip Status:</TD><TD>'; $main_content .= ($account->isPremium() > 0) ? 'Premium Account' : 'VIP';2 pontos -
Como colocar som no mapa no OTClient
Como colocar som no mapa no OTClient
koyotestark reagiu a Adventure por uma resposta no tópico
1 pontoOlá pessoal. Venho trazer para vocês um novo mod já que nenhum outro esta funcionando. Oque você fez ? '' Bom simplesmente peguei uma base. A base só tinha umas 5 linhas '-' foi dureza fazer o resto kkkk. Ai compilei no OT Cliente para funcionar só no meu cliente para ninguém roubar ! '' Mas um amiguinho aqui do Tibia King e também uma galera estava com o mesmo problema que eu , então tive de refazer e tirar a proteção do script para disponibilizar para vocês. Para vocês não precisar copiar os script eu montei tudo bonitinho e deixei em uma pasta. Basta apenas: Entra na pasta do seu otclient e na pasta Mod você colocar a pasta que irei disponibilizar. Simples Como configurar: Vá no rcsound.lua Abra ele ! Na parte: {fromPos = {x=1089, y=1110, z=8}, toPos = {x=1135, y=1142, z=8} Como voces podem ver deve ser colocado em fromPos a primeira ponta do lado esquerdo e em toPos a outra ponta da parte de baixo. É importante configurar corretamente. Na parte: {fromPos = {x = 985, y = 1069, z = 8}, toPos = {x = 1378, y = 1290, z = 8}, sound = "Fairy Tail - Main.ogg"}, Deve ser colocada a musica em formato ( ogg ) para converter é bem simples Vá neste site http://online-audio-converter.com/pt/ Que por sinal é muito bom ! Você converte sua musica para ogg. Não mecha na qualidade se tentar melhorar a qualidade do som na hora da conversão o som pode sair muito estranho kkk vá por mim. Coloque as musicas em formato OGG dentro da pasta music ! NÃO É A PASTA QUE FICA NO DATA , É A PASTA QUE ESTA DENTRO DO MOD COM O NOME DE MUSIC PELO AMOR DO PAEE Deixei uma musica na pasta para que vocês possam testar o sistema. Caso der algum erro no Console poste e tentaremos arrumar. Normalmente estou sempre ON pelo celular Download: *Upei em dois lugares diferentes vocês podem escolher onde querem baixar Scan para aquela galerinha paranoica kkk: EM BREVE VEM AI O : -ADVENTURE WORLD- PARA AQUELES QUE GOSTAM DO BOM E VELHO RPG EM UM MUNDO CERCADO DE AVENTURAS E UMA HISTORIA ENVOLVENTE !1 ponto -
[DOWNLOAD] Poke Zot Atualizado + WebSite
[DOWNLOAD] Poke Zot Atualizado + WebSite
marcelinho1234 reagiu a Nicrox por uma resposta no tópico
1 pontoOi, pessoal. Aqui está o server + site que eu estava editando. Adicionei box 10, 11, 12, 13, 14, 15. Editei os mapas e retirei os bugs. Se tiver bugs, pode falar vou arrumar. Download Client MediaFire // 4shared Server MediaFire // 4shared Server sem Website MediaFire // 4shared Download Mapa Editor extendido MediaFire Rep+ Thanks1 ponto -
OT Restarter PRO
OT Restarter PRO
Turati Junior reagiu a luanluciano93 por uma resposta no tópico
1 pontoOT Restarter Pro é um aplicativo muito avançado projetado para simplificar a hospedagem de seu servidor. Ele irá reiniciar automaticamente o servidor em caso de crash ou erros. Esse aplicativo também tem um recurso de timer, o que lhe permite reiniciar manualmente o servidor de tempo específico. Você está longe de casa, algo deu errado e você não pode reiniciar o servidor? Seu amigo de confiança pode agora fazer para você, tudo sem acessar seus arquivos pessoais e apenas clicando em um botão. OT Restarter PRO permite por acesso remoto que seu amigo se conecte ao seu servidor e reinicie-o. Seu amigo vai precisar de uma identificação única, a fim de fazê-lo, o que pode ser adicionado/removido por questão de segurança. Downloads: • OT Restarter PRO (scan) • OT Remote PRO (scan) Observação: * Esta aplicação irá se conectar a internet para verificar se há nova versão (não irá atualizar automaticamente, somente sob demanda do usuário). * Conexão remota requer internet (obviamente). Créditos: Atyll. Acho que poderá ser útil para alguém! Abraços e até a próxima1 ponto -
[DOWNLOAD] Server PokeZot
[DOWNLOAD] Server PokeZot
thyagolima reagiu a AdmAlexandre por uma resposta no tópico
1 pontoEae Galerinha do TibiaKing Hoje Venho Postar um Servidor Mais não é Feito Por Min !! Lista Completa de Pokemon Adicionados!! Sistemas Quests Alterações Prints Downloads!! -Créditos-1 ponto -
[ModalWindow][TFS 1.2][NPC] Sistema de Diálogo
[ModalWindow][TFS 1.2][NPC] Sistema de Diálogo
Adventure reagiu a DeCarvalho por uma resposta no tópico
1 pontoEsse 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á!1 ponto -
[TALKACTION] Comando !playerinfo
1 pontoVou trazer um comando pra voces hoje , muito simples e as vezes util . O que o comando faz ? Simplesmente mostra suas informações , apenas do player que digitar o comando. Segue o print abaixo XML <talkaction words="!playerinfo;/playerinfo" event="script" value="info.lua"/> Script1 ponto
-
(Resolvido)Status de VIP aparecer no Site.
(Resolvido)Status de VIP aparecer no Site.
Luvik Dragondy reagiu a Lost666 por uma resposta no tópico
1 pontoqual tfs? veja se você tem a tabela "killers" dentro da database do servidor1 ponto -
[AJUDA]
[AJUDA]
Arthasz Walker reagiu a Pedriinz por uma resposta no tópico
1 pontoVai no meu topico de pedidos lá, que um membro aqui do tk tinha feito pra versão que você usa. Vê lá.1 ponto -
(Resolvido)ERRO PAGSEGURO, URGENTE!!
O tópico parece velho, mas acho que vale MUITO a pena responder. Estive trabalhando nesse problema e a solução que encontrei foi na linha do RetornoPagseguro.php fazer a seguinte alteração DE: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); PARA: mysql_query("UPDATE accounts SET premium_points = premium_points + '$ProdQuantidade_x' WHERE name = '".htmlspecialchars($accname)."'"); Valeus ae1 ponto
-
(Resolvido)To Frags Online
1 pontoPerfeito Muito Obrigado.1 ponto
-
(Resolvido)To Frags Online
1 ponto<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="rank frag" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes"> <config name="rankf_func"><![CDATA[ storage = 824544 function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)} return size.day + size.week + size.month end function setFrags(cid) if not isCreature(cid) then return LUA_ERROR end setPlayerStorageValue(cid, storage, getPlayerFrags(cid)) doPlayerSave(cid) end function getRankStorage(value, max, RankName) local str = "".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."\n" local players = getPlayersOnline() table.sort(players, function(a, b) return getPlayerStorageValue(a, value) > getPlayerStorageValue(b,value) end) k = 0 for x = 1, table.maxn(players) do k = k + 1 str = str .. "\n " .. k .. ". "..getCreatureName(players[x]).." - " .. getPlayerStorageValue(players[x], value) .. " frags" if k == max then break end end return str end ]]></config> <globalevent name="RankFrags_Broad" interval="120" event="script"><![CDATA[ domodlib('rankf_func') function onThink(interval, lastExecution) doBroadcastMessage(getRankStorage(storage, 5, "Top 5 Fraggers Online!"), 21) return true end]]></globalevent> <event type="login" name="RankfLogin" event="script"><![CDATA[ domodlib('rankf_func') function onLogin(cid) registerCreatureEvent(cid, "RankfKill") setFrags(cid) return true end]]></event> <event type="kill" name="RankfKill" event="script"><![CDATA[ domodlib('rankf_func') function onKill(cid, target, lastHit) if (isPlayer(cid) == true) and (isPlayer(target) == true) then addEvent(setFrags, 1000, cid) end return true end]]></event> </mod>1 ponto
-
(Resolvido)To Frags Online
1 ponto<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="rank frag" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes"> <config name="rankf_func"><![CDATA[ storage = 824544 function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)} return size.day + size.week + size.month end function setFrags(cid) if not isCreature(cid) then return LUA_ERROR end setPlayerStorageValue(cid, storage, getPlayerFrags(cid)) doPlayerSave(cid) end function RemovePlayerFromRank(p) db.executeQuery("DELETE FROM `player_storage` WHERE `player_id` = ".. p .." AND `key` = "..storage) end function getRankStorage(value, max, RankName) local str = "".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."\n" local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") if (query:getID() ~= -1) then k = 1 repeat str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - " .. query:getDataInt("value") .. "" k = k + 1 until k > max or not query:next() end return str end ]]></config> <globalevent name="RankFrags_Broad" interval="120" event="script"><![CDATA[ domodlib('rankf_func') function onThink(interval, lastExecution) doBroadcastMessage(getRankStorage(storage, 5, "Top 5 Fraggers Online!"), 21) return true end]]></globalevent> <event type="login" name="RankfLogin" event="script"><![CDATA[ domodlib('rankf_func') function onLogin(cid) registerCreatureEvent(cid, "RankfKill") setFrags(cid) return true end]]></event> <event type="logout" name="RankfLogout" event="script"><![CDATA[ domodlib('rankf_func') function onLogout(cid) local player = getPlayerGUID(cid) addEvent(RemovePlayerFromRank, 1000, player) return true end]]></event> <event type="kill" name="RankfKill" event="script"><![CDATA[ domodlib('rankf_func') function onKill(cid, target, lastHit) if (isPlayer(cid) == true) and (isPlayer(target) == true) then addEvent(setFrags, 1000, cid) end return true end]]></event> </mod>1 ponto
-
[TFS 1.2+] Invite Players System!
dá sim, mas só se ele estiver online! Caso eu deslogue e logue numa outra conta para invitar eu mesmo, não vai adiantar nada... Desse jeito ele checa direto na DB1 ponto
-
[TFS 1.2+] Invite Players System!
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 elseif player:getIp() == result.getNumber(db.storeQuery("SELECT `lastip` FROM `players` WHERE `name` = " .. db.escapeString(param)), "lastip") then player:sendCancelMessage("Desculpe, mas você não pode se auto invitar por estar com o mesmo IP.") 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 não testei, mas acho que é isso!1 ponto
-
[TFS 1.2+] Invite Players System!
Dependendo das rates do servidor talvez nem seja... Pensa se o administrador do otserver tiver rates altas e colocar um level apenas significativo e como recompensa pontos... poderia ser abusado se fosse do mesmo ip.1 ponto
-
(Resolvido)[PEDIDO] Client do Tibia the walking dead
(Resolvido)[PEDIDO] Client do Tibia the walking dead
Storm reagiu a chateadoagr por uma resposta no tópico
1 pontoUnBinded.dat UnBinded.pic UnBinded.spr1 ponto -
[TFS 1.2+] Invite Players System!
Podia indentar as funções, né.. Mas bom trabalho mesmo assim.1 ponto
-
[8.6] Invite Players System!
1 pontoteria ele para tfs 1.2?1 ponto
-
[AJUDA] Spells tudo Bugada
1 pontoAmigo , varias e varias vezes tem alguém com esse erro , o erro praticamente não tem solução , se ninguém resolveu o erro , é melhor você trocar de script. O erro acontece quando a creature morre antes de acabar a spell Recomendo essas para vc usar em seu servidor Target Em area1 ponto
-
Client não reconhece alguns acentos
Você precisa ter instalado no seu pc o Notepad++ Após isso, abra o script. Lá em cima, em formatar selecione Codificação ANSI e salve o arquivo1 ponto
-
Cada classe com sua arma
1 pontoEm Weapons.xml EXEMPLOS: <wand id="2182" level="7" mana="2" min="8" max="18" type="earth" event="function" value="default"> <vocation name="Druid"/> <vocation id="6" showInDescription="0"/> </wand> <melee id="2447" level="50" unproperly="1" event="function" value="default"> <vocation name="Knight"/> <vocation id="8" showInDescription="0"/>1 ponto
-
Script passar portal apenas quando estiver equipando 1 amuleto especial.
Script passar portal apenas quando estiver equipando 1 amuleto especial.
VertusSpriter reagiu a Ed.Specter por uma resposta no tópico
1 pontonesse caso ai o player vai entrar mesmo se estiver com o amulet na bp. getPlayerItems não retorna todos os itens do jogador? acho que seria melhor usar getPlayerSlotItem1 ponto -
Script passar portal apenas quando estiver equipando 1 amuleto especial.
Script passar portal apenas quando estiver equipando 1 amuleto especial.
VertusSpriter reagiu a 9k22 por uma resposta no tópico
1 pontofunction onStepIn(cid, item, position, fromPosition, toPosition) local tileConfig = { teleport = {x=1000, y=1000, z=7}, kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Você precisa ter um amuleto para passar.", enterMsg = "you are teleported HEUHEWU!", enterEffect = 10, item = XXXX, -- ID DO ITEM } if getPlayerItems(cid, tileConfig.item) >= 1 then doTeleportThing(cid, tileConfig.teleport) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(tileConfig.teleport, tileConfig.enterEffect) else doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) end return true end GG em movements ta quirido? <movevent type="StepIn" actionid="ACTION_ID_DO_PISO" event="script" value="xxxxxxxx.lua"/> OBS: quero REP não... manda um _(_ pro Matk via msg vlw é q to bolado com ele, chamei pra jogar um jogo ele disse não. maguo total1 ponto -
[10.93] Projeto Capernia, RL MAP
1 pontohttp://www.halfaway.net/index.php?home1 ponto
-
[MAPPER] Profissional
[MAPPER] Profissional
Hrod reagiu a GuuhTorres por uma resposta no tópico
1 ponto[MAPPER] PROFISSIONAL Olá galerinha do TibiaKing,hoje vou postar algumas dicas para os mappers em gerais,se tornarem PROFISSIONAL,em Mappear e entre outras coisas ! Dicas 1º- Quando vc está sem critividade de algo,está afim de fazer um mapa legal,mais não sabe o certo, nunca copie pois copiar é errado e ridículo,pois significa q você é um mapper sem imaginação e criatividade. 2º- Faça caminhos para outros lugares não sendo retos,com curvas,reta toda vida,isto é meio futurístico e não combina com o jeito RPG e MEDIEVAL do Tibia. 3º- Elabore bem suas cidades principais,pois é la que vai dar o foco do seu server quando um player entra.Coloque bastante detalhes,deixe bonito,coloque os mínimos detalhes possíveis. Não faça os caminhos da sua cidade principal reto e deixei em curvas,formatos estranhos,também coloque nature,umas montanhas.Elabore bem as casas da cidade,como todos sabemos,dentro de uma cidade o CENTRO dela é sempre onde tem as partes mais elegantes e em sua volta são as casas mais estanhas,pequenas e sem charmes. 4º- Em volta das suas cidades coloque vilarejos e perigo perto dos vilarejos,que quer dizer que tudo fora de uma cidade ja é aventura ! Quando você criar um CONTINENTE não deixe ele quadrado. 5º- Sempre crie bixos novos,novas actions que se relacione com o RPG do seu server,por exemplo: você cria um NPC que fala ter visto uma criatura estranha,andando por volta da TAL cidade.Ai você elabora um bixo que tenha aparencia feia,como por exemplo o "Ancient Scarab". 6º- Não faça novidades seguidas de novidades em seu mapa,sempre faça uma grande novidade em uma distancia de tempo entre uma a outra.Como por exemplo: Se você fizer um update em seu mapa de uma grande área,evite fazer outros updates de grande área nos próximos 5 há 10 dias,se caso isso ocorrer,o player fica sem chances de explora a area que você fez passado e vai logo explorar a recentemente,sem saber dos misterios e quests bem elaboradas da antiga área. 7º- Você pode faze um NPC que vende flores,ai você me pergunta,para que vender FLORES? Quem vai querer compra FLORES ? Ok,ninguém pode querer comprar coisas dela,mais invente uma quest ótima elaborando ela na HISTORIA com FLORES,isso trará mais aventura,emoção e valor ao seu server. 8º- Nunca coloque bixos fortes próximos as cidade,como por exemplo,você saia da cidade e já havia 1 montanha que começava com trolls e terminava em warlock.Bom neste caso o mapper criou uma montanha muito pequena,algo que não irá dar suspense para os players,assim ele explora sem prevenção e sem querer não se da bem. 9º- Crie casinhas ou torres de lazer,que não contenha nada,mais que contenha moveis,algumas actions de lazer,como por exemplo de "FUTEBOL","BINGO" e entre outras...E nunca deixe nada quadrado,não cairia bem. 10º- Faça coisas diferentes em seus servers,sempre inove,nunca iguale ou copie.Invente cidades elaboradas,como por exemplo,juntar "CARLIN" com "KAZZ" do tibia,daria uma city genial. 11º- Sempre que você quiser inovar sua cidade principal, para parar de enjoar o server,crie uma historinha do porque a mudança e entre outras...Destrua ela fazendo detalhes de destruição,invente que uma invasão do Sul de Orcs lhe atacou, matando tudo e todos.Sempre inove,porque inovação é ter um futuro. 12º- Sempre que possível,faça suas cidades com conectividades a outras cidades,caso contrario,a cidade q não esta junta é outro continente ou uma ilha. 13º- Sempre que fizer uma cidade, evite, jamais coloke bixos fortes nas proximidades das cidades, caso isso ocorra, fexe a faxada dessa area com montanhas e etc... e fassa uma nova entrada mais longe. 14º- Sempre em suas caves,coloque bixos que eleve a força do mapa e de seus perigos.Exemplo: você tem uma cave de dwarf e dentro da sua cave tem 1 buraco para descer mais profundamente,assim que esse player desce,ele vê um dragon,isso é ridículo pois se é 1 cave de dwarf,terá mais players baixos,e não players com um level elevado... 15º- Faça o comércio principal sempre perto do "DP" ou do "TEMPLO",para ficar mais fácil a localidade dos npcs... Muito obrigado a todos,por lerem meu tópico.E desculpem por alguns erros de ortografia.Espero que comentem e me ajudem a arruma-lo. Att GuuhTorres.1 ponto -
[City War Event] Luta pela sobrevivência
Fake? Criado em 2011? Amigão, esse script é do demonbholder, da globalots, todo mundo aqui sabe que esse evento é do global war, quem quiser dá uma olhadinha no facebook do Global War e vai ver de quem é o script, você é uma farsa cara, você dá nojo. http://prntscr.com/3t7t9m1 ponto
-
[MAPPER] Profissional
[MAPPER] Profissional
VertusSpriter reagiu a ferlations por uma resposta no tópico
1 pontoMuito bom cara, realmente bom essas dicas, mas acho que isso não o faz se tornar profissional, precisa do talento, criatividade e genialidade. Abraços amigo.1 ponto -
Como troca background Geisor 2012
-1 pontosComo troco o background do meu geisor 2012. Bom,já troquei o background do meu site mais ele n atualiza, sempre quando coloco outra imagem de fundo, continua com a mesma de sempre. Porfavor como troco, e qual o lugar correto para troca o background etc. Tem como me ajudar? Dou rep+. Utilizo GesiorACC 2012 modificado by Natanael Beckman Se alguem souber de algum geisor mais completo e atualizado para otserv tibia 8.60 TFS 1.0, agradeço.-1 pontos