Foda, sera que funciona certinho em um poketibia ? pode ser util pakas um sisteminha desse
- Fórum
- OTServ
- Recursos
- Scripting
- Mods, funções e outros
- [System] Invite Friends! (Low Rate Serve)
[System] Invite Friends! (Low Rate Serve)
Por Vodkart, 08 de ago. de 2015 em Mods, funções e outros
info
Grupo: Visconde
Registrado: 28/02/14
Posts: 416
Reputação: +90
Gênero: Masculino

info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

Eu não testei, mas provavelmente não... Lembrando que é necessário ter TFS 1.1 ou +
Mas quem quiser passar o código para Poketibia eu posso disponibilizar a versão para o servidor 8.6
Mais para frente eu coloco imagens no tópico, para ver como funciona!
*****EDITEI A LIB, FALTOU ADC 3 FUNÇÕES********
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Maravilhoso isso, pena que estou sem like no momento.. mas irei curtir assim que for possível.. Ajuda a atrair jogadores e certamente bem pensado em como fazer o sistemad e segurança
\o as tags foram usadas kkkkkkk eu queria ter sido o primeiro a usar mas estava muito cansado ontem para postar um script aqui :'(
1// Reaprei ali que se o joão convida a maria, e a maria blah blah blah e atinge o levl necessário somente joão ganha por tê-la convidado
Bem penso..acho que penso.. não seria interessante ela ganhar algo? mesmo que seja um premio de consolação?
Eu sei que existe skill reward system, que da recompensa para level, skill whatever.. mas sei lá.. não precisaria ser algo complexo.. mas um presentinho .. por ela estar jogando por ter sido convidada e estar sendo fiel.. ambos sairão ganhando..
João ganha por sua convidada estar sendo 'fiel' e ela pela fidelidade baseado em convite.. fideliza ![]()
2// Desculpe a ignorancia.. joão precisa ter level 50 para ganhar os premios?
Se ele for level 30 e a maria no level 10 falar !invited joao e chegar no level 50 ganhando assim para o joão 5 pontos.. e então? se ele não tiver level 50.. para onde vão esses pontos?
3// MUST READ Um detalhe.. faça o script para que todos possam usar, não somente joão e maria
P.s// Não sei se é pedir muito mas poderia editar para ser possível receber vipDays também como recompensa? achei meio complicado fazer sozinho e com medo de gerar erro
então acho que voê por ter feito conseguiria fazer isso de forma funcional e prática..
Grato
Editado Agosto 8 por DeCarvalho
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

[..]
Sim, melhor entendido com relação ao level do joão.. bem feito nesse sentido.. obrigado por explicar..
o 3 foi uma zoeira.. pq vc falou sód e joao e maria..
achei que iria entender a brincadeira ![]()
Sobre vip, vc poderia então indicar em que lugar eu deveria me focar para adicionar as 'novas linhas', não precisa escrever o codigo nem nada.. só mesmo onde eu deveria estar fazendo a inserção das linhas.. nos relativos scripts..
Grato independente da resposta.. o sistema assim ja está muito bom ![]()
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Não ficaria fácil de mais? Eles poderiam criar várias contas e ficarem abusando do sistema. Tem alguma verificação nele que impessa?
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

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}}
}Editado Agosto 8 por Vodkart
info
Grupo: Visconde
Registrado: 28/02/14
Posts: 416
Reputação: +90
Gênero: Masculino

Eu não testei, mas provavelmente não... Lembrando que é necessário ter TFS 1.1 ou +
Mas quem quiser passar o código para Poketibia eu posso disponibilizar a versão para o servidor 8.6
Mais para frente eu coloco imagens no tópico, para ver como funciona!
*****EDITEI A LIB, FALTOU ADC 3 FUNÇÕES********
eu estarei esperando ^^
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

assim que eu abrir meu serve eu tiro as print e posto
Editado Agosto 8 por Vodkart
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

Poderia fazer um desse para 8.6?
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Bem massa mas de sempre vai ter nego criando várias accs e upando de bot e MC ![]()
Vou adaptar pro meu tfs 0.4 e tentar fazer um esquema de checar IP. Fazer uma tabela na DB que guarda todos os IPs que uma acc loga (acho que não tem isso normalmente, nunca parei pra procurar), aí depois quando a Maria for usar o comando checa se o IP dela bate com algum dos que o João já logou, daí fica difícil de burlar até usando proxy pq basta logar uma vez com determinado IP q ele já fica guardado...
Daí na hora de o João receber os premios no login tbm checa se algum IP dele bate com algum IP da Maria
assim que eu abrir meu serve eu tiro as print e posto
Só está dando pra invitar 1 player, a msg é a mesma toda hora quando vai invitar outros..
A msg quando tenta invitar outros é "Você já agradeceu o ......."
E não está ganhando pontos... ;/ alguém ai testou além de mim???
Tfs 1.2 aqui, alguem ajuda por favor
O dono do script foi banido? Agora deu ruim mano. Script da hora, mas faltou ai alguma coisa =/
Editado Novembro 6 por Doutors
info
Grupo: Campones
Registrado: 14/10/15
Posts: 42
Reputação: +14

ótimo sistema, instalei corretamente e funcionou!! parabéns








info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino
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 },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_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 enddofile('data/lib/core/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 endEditado Agosto 8 por Vodkart