Olá gostaria de contribuir com a comunidade com estes serviços.
Aproveite é por tempo limitado.
Conheça um pouco mais sobre quem eu sou.
Serviços de Desenvolvimento Web
Excelência em Resolução de Problemas
Identificação e correção de BUGS em bancos de dados e scripts PHP para um funcionamento perfeito.
Criação de Valor
Implementação de novas funcionalidades em websites, tanto no Front-end quanto no Back-end, para melhorar a experiência dos usuários.
Design Atraente
Habilidade em design responsivo usando Bootstrap para criar interfaces atraentes e compatíveis com diversos dispositivos.
Da Ideia à Realidade
Capacidade de criar websites avançados desde o conceito inicial até a implementação completa, integrando funcionalidades complexas.
Personalização Precisa
Desenvolvimento de websites a partir do zero usando stacks avançadas ou PHP convencional, garantindo personalização total.
Desenvolvimento de Open Tibia Server (OTC)
Melhoria Contínua
Identificação e solução de BUGS em módulos para aprimorar a estabilidade e jogabilidade no Open Tibia Server.
Inovação Impulsionada
Integração de novas funcionalidades ao OTC, enriquecendo a experiência dos jogadores com recursos inovadores.
Módulos Eficientes
Criação de novos módulos com foco na qualidade do código e na melhoria da interatividade dos jogadores.
Desenvolvimento de Otserver (Open Tibia Server)
Performance Elevada
Identificação e correção precisa de problemas em scripts para manter a performance e a integridade do otserver.
Crescimento Constante
Introdução de novos scripts e funcionalidades, impulsionando o crescimento contínuo e a inovação do otserver.
Atualização Estratégica
Atualização cuidadosa dos pacotes de compilação de projetos para garantir eficiência e compatibilidade.
Otimização e Segurança
Proteção Robusta
Implementação de soluções AntiCheat/AntiBot para garantir um ambiente de jogo seguro e livre de trapaças.
Escalabilidade e Desempenho
Configuração especializada em nuvens líderes do mercado, incluindo Google Cloud, Azure Cloud, Amazon Cloud e DigitalOcean Cloud.
Defesa Efetiva
Instalação e configuração do ANTI-DDOS Cloudflare para proteger o servidor contra ataques cibernéticos.
Outros Serviços
Inovação na Blockchain
Implementação de sistema NFT, incorporando aspectos visuais e lógicos da tecnologia blockchain para criar experiências únicas.
Facilitação Financeira
Integração de pagamento automático em websites, abrangendo uma variedade de plataformas para maior comodidade dos usuários.
Infraestrutura Otimizada
Configuração e instalação nas nuvens, como Google Cloud, Azure Cloud, Amazon Cloud e DigitalOcean Cloud, para alcançar a melhor performance.
Processo de Contratação Simplificado:
Aqui está a nossa forma descomplicada de lidar com pagamentos:
Entrada (50%): Depois de escolher o serviço, pedimos metade do valor para começar.
Saldo (50%): Quando terminarmos e você estiver satisfeito, pedimos o restante antes da entrega final.
Estamos ansiosos para trabalhar juntos. Se tiver dúvidas ou estiver interessado em nossos serviços, sinta-se à vontade para entrar em contato. Mal podemos esperar para construir algo incrível juntos!
Converse Comigo:
Estou à disposição para conversar e discutir projetos.
Fique à vontade para me contatar aqui ou através das seguintes redes:
LinkedIn: Rafhael Oliveira
Meus Projetos: Dê uma olhada nos meus projetos no GitHub: GitHub Repositories
Otland: Confira meu perfil no Otland e veja minhas conquistas: Perfil no Otland
Com uma experiência sólida de 10 anos na área de desenvolvimento de OTS,
Bom, fiz esse Autorestarter para Windows.
Ele faz pausas de 3 segundos entre as verificações se o programa esta aberto ou não.
Feito por mim!
Edit:
O programa deve ficar na mesma pasta do seu servidor, junto com sua engine.
Credits
@slaw
I just edited the tibiacom template.
Full customizable.
I have an organized repo for this 'My-AAC last version', I will release I just need to fix something's
Just check the template live version.
How Install
Rename your tibiacom folder and paste the downloaded one.
Picture News - Boosted Boss works well in this picture the boosted boss of the day was not in image folder.
DOWNLOAD:
thetibiaking/ttk-my-aac at layout-changes (github.com)
Credits
@slaw
I just edited the tibiacom template.
Full customizable.
I have an organized repo for this 'My-AAC last version', I will release I just need to fix something's
Just check the template live version.
How Install
Rename your tibiacom folder and paste the downloaded one.
Picture News - Boosted Boss works well in this picture the boosted boss of the day was not in image folder.
DOWNLOAD:
thetibiaking/ttk-my-aac at layout-changes (github.com)
Credits
@slaw
I just edited the tibiacom template.
Full customizable.
I have an organized repo for this 'My-AAC last version', I will release I just need to fix something's
Just check the template live version.
How Install
Rename your tibiacom folder and paste the downloaded one.
Picture News - Boosted Boss works well in this picture the boosted boss of the day was not in image folder.
DOWNLOAD:
thetibiaking/ttk-my-aac at layout-changes (github.com)
Olá pessoal! Estou trabalhando em um sistema para criaturas e chefes boostados no meu servidor TFS 1x. Não estou interessado em integrar este sistema ao código-fonte por razões óbvias, já que isso facilitaria a edição para outros servidores. Estou postando isso para colaborar na melhoria do sistema atual implementando novos conceitos e refinando os existentes.
Sobre o código: GlobalEvents: Estou usando Eventos Globais para atualizar a criatura e o chefe boostado na inicialização do servidor. Para evitar a necessidade de reinicializar o servidor ao alterar o chefe, estou considerando mudar de onStartup para onThink e especificar um horário preciso para o evento ocorrer. Simultaneamente, armazeno o índice da criatura em um armazenamento global para evitar consultas ao banco de dados ao procurar o monstro boostado do dia.
CreatureScript: Com o monstro atualizado no banco de dados e o armazenamento global configurado com o índice do monstro atual, verifico em um CreatureScript qual monstro o jogador está derrotando. Usando dmgMap, posso identificar um ou mais jogadores contribuindo para a morte do monstro boostado diário. Certifico-me de registrar o evento quando um jogador faz login para evitar problemas potenciais.
Sobre as melhorias: Em vez de criar uma função responsável por passar boostedCreature(tipo, nomeDoMonstro), o que seria ideal, criei duas funções - uma para chefes e outra para criaturas. Esta é uma melhoria significativa que pode simplificar consideravelmente o código adicionando esta função de utilidade.
Melhorias importantes: A função onKill do sistema de criatura boostada está funcional e sem problemas. No entanto, alguns conceitos estão faltando. Atualmente, todos os jogadores que contribuem para a morte da criatura recebem o XP total. Há uma parte comentada no código onde o compartilhamento de XP da criatura é aplicado, mas não está funcional. Isso precisa ser ajustado - sinta-se à vontade para compartilhar quaisquer insights aqui!
O que está faltando: Além do XP, o monstro também deve fornecer saques extras (A fazer). Também estou trabalhando em adicionar o evento para a morte do chefe (Em andamento).
Outras melhorias: Sinta-se à vontade para sugerir melhorias adicionais para o sistema!
Alterações aqui
Boosted system creaturescript globalevents lib by Underewarrr · Pull Request #1 · thetibiaking/forgottenserver (github.com)
Bem-vindos a Emperator
Preparados para embarcar em uma jornada épica repleta de aventura, mistério e desafio? Se sim, você está no lugar certo! Emperator é um mundo totalmente novo e emersivo, pronto para receber jogadores corajosos como você para explorar suas terras vastas e perigosas.
Neste primeiro momento estaremos testando e verificando se estamos no caminho certo, onde será testados todos os recursos dentro do jogo, Emperator foi pensado para ser prático e imersivo trazendo uma experiência única nunca vista antes, veja abaixo alguns de novos sistemas:
Chefes com mecânicas
AutoCast
AutoLoot
Balanceamento de Hunts
Alteração de Elemento das Armas
Dentre outras mecânicas, confira em nossa página: https://emperator.com.br/info.php
Cliente: 8.60 próprio com áudio
Site: https://emperator.com.br
Discord: https://discord.gg/4HfJExN6
Olá pessoal! Estou trabalhando em um sistema para criaturas e chefes boostados no meu servidor TFS 1x. Não estou interessado em integrar este sistema ao código-fonte por razões óbvias, já que isso facilitaria a edição para outros servidores. Estou postando isso para colaborar na melhoria do sistema atual implementando novos conceitos e refinando os existentes.
Sobre o código: GlobalEvents: Estou usando Eventos Globais para atualizar a criatura e o chefe boostado na inicialização do servidor. Para evitar a necessidade de reinicializar o servidor ao alterar o chefe, estou considerando mudar de onStartup para onThink e especificar um horário preciso para o evento ocorrer. Simultaneamente, armazeno o índice da criatura em um armazenamento global para evitar consultas ao banco de dados ao procurar o monstro boostado do dia.
CreatureScript: Com o monstro atualizado no banco de dados e o armazenamento global configurado com o índice do monstro atual, verifico em um CreatureScript qual monstro o jogador está derrotando. Usando dmgMap, posso identificar um ou mais jogadores contribuindo para a morte do monstro boostado diário. Certifico-me de registrar o evento quando um jogador faz login para evitar problemas potenciais.
Sobre as melhorias: Em vez de criar uma função responsável por passar boostedCreature(tipo, nomeDoMonstro), o que seria ideal, criei duas funções - uma para chefes e outra para criaturas. Esta é uma melhoria significativa que pode simplificar consideravelmente o código adicionando esta função de utilidade.
Melhorias importantes: A função onKill do sistema de criatura boostada está funcional e sem problemas. No entanto, alguns conceitos estão faltando. Atualmente, todos os jogadores que contribuem para a morte da criatura recebem o XP total. Há uma parte comentada no código onde o compartilhamento de XP da criatura é aplicado, mas não está funcional. Isso precisa ser ajustado - sinta-se à vontade para compartilhar quaisquer insights aqui!
O que está faltando: Além do XP, o monstro também deve fornecer saques extras (A fazer). Também estou trabalhando em adicionar o evento para a morte do chefe (Em andamento).
Outras melhorias: Sinta-se à vontade para sugerir melhorias adicionais para o sistema!
Alterações aqui
Boosted system creaturescript globalevents lib by Underewarrr · Pull Request #1 · thetibiaking/forgottenserver (github.com)
Olá galera, atualizamos hoje o Global 11x para sprites do 13.30 mais recente, conseguimos fazer o cliente 12.30 receber as sprites do 13.30, agora é possivel logar no 11x standlone, Otcv8 e 12.30 (sprites 13.30)
Em nosso github você encontra tudo que necessita cliente 10, otcv8 customizado, cliente 12.30, ferramentas e o gesior Otg.
https://github.com/otg-br
Desculpa pela demora. Os últimos dias foram corridos. Decidi compartilhar isso com vocês
Abra o diretório otc/data/layouts/retro/styles/40-inventory.otui e procure por essa linha.
Panel
id: conditionPanel
layout:
type: horizontalBox
height: 22
padding: 2
anchors.top: slot8.bottom
anchors.left: slot6.left
anchors.right: slot5.right
margin-top: 4
border-width: 1
border-color: #00000077
background-color: #ffffff22
Adicione abaixo disso.
StoreButton
size: 0 20
anchors.top: prev.bottom
anchors.left: parent.left
anchors.right: parent.right
margin-left: 6
margin-top: 4
margin-right: 6
@onClick: modules.store_module.toggle()
Agora, sobre como comprar itens por pontos, vou postar dois tutoriais para Gesior e Znote.
APENAS GESIOR..
Este script serve para trocar itens por pontos. Vou dar um exemplo com a Magic Sword.
data/scripts.
local StoreCustom = TalkAction("!shopMagic Sword")
function StoreCustom.onSay(player, words, param)
local pointsToDeduct = 10
removePoints(player, pointsToDeduct)
local newItemID = 2401 -- Replace with the ID of the item the player will receive
local newItemCount = 1 -- Quantity of the new item to be added to the player's inventory
player:addItem(newItemID, newItemCount)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have successfully purchased a new item in exchange for" .. pointsToDeduct .. " premium points.")
return false
end
function removePoints(player, amount)
local accountId = player:getAccountId()
local query = "UPDATE `accounts` SET `premium_points` = `premium_points` - " .. amount .. " WHERE `id` = " .. accountId
db.query(query)
end
StoreCustom:separator(" ")
StoreCustom:register()
Para saber quantos pontos você tem, digite !points.
local talkaction = TalkAction("!points")
function Player.getPremiumPoints(self)
local query = db.storeQuery("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. self:getAccountId())
if not query then
return false
end
local value = result.getNumber(query, "premium_points")
result.free(query)
return value
end
function talkaction.onSay(player, words, param, type)
if words:lower() == "!points" then
local points = player:getPremiumPoints()
if points > 0 then
local message = "Your premium points balance is: " .. points
player:popupFYI(message)
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You don't have premium points.")
end
return false
end
return true
end
talkaction:separator(" ")
talkaction:register()
Para comprar outfits ou addons.
local outfitsCustom = TalkAction("!shopMage", "!shopCitizen", "!shopHunter", "!shopKnight", "!shopNoblewoman", "!shopNobleman", "!shopSummoner", "!shopWarrior", "!shopBarbarian", "!shopDruid", "!shopWizard", "!shopOriental", "!shopPirate", "!shopAssassin", "!shopBeggar", "!shopShaman", "!shopNorsewoman", "!shopNorseman", "!shopNightmare", "!shopJester", "!shopBrotherhood", "!shopDemon Hunter", "!shopYalaharian", "!shopNewly Wed", "!shopWarmaster", "!shopWayfarer", "!shopRetro Warrior", "!shopRetro Citizen", "!shopRetro Hunter", "!shopRetro Knight", "!shopRetro Mage", "!shopRetro Noblewoman", "!shopRetro Nobleman", "!shopRetro Summoner")
function outfitsCustom.onSay(player, words, param)
if words == "/shop" then
return false
end
if words == "!shopMage" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 138 or 130 -- Mage outfit ID
local outfitCost = 50 -- Cost in premium_points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Mage outfit addons for " .. outfitCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Mage outfit!")
end
----------------
elseif words == "!shopCitizen" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 136 or 128 -- Citizen outfit ID
local outfitCost = 50 -- Cost in premium_points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Citizen outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Citizen outfit addons for " .. outfitCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Citizen outfit!")
end
----------------
elseif words == "!shopHunter" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 137 or 129 -- Hunter outfit ID
local outfitCost = 50 -- Cost in premium_points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Hunter outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Hunter outfit addons for " .. outfitCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Hunter outfit!")
end
----------------
elseif words == "!shopKnight" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 139 or 131 -- Knight outfit ID
local outfitCost = 50 -- Cost in premium_points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Knight outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Knight outfit addons for " .. outfitCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Knight outfit!")
end
-- Add more commands and messages as necessary
end
return false
end
outfitsCustom:separator(" ")
outfitsCustom:register()
Para comprar uma montaria.
local shopsCustom = TalkAction("!shopMidnight Panther", "!shopWidow Queen", "!shopRacing Bird", "!shopWar Bear", "!shopBlack Sheep", "!shopDraptor", "!shopTitanica", "!shopTin Lizzard", "!shopBlazebringer", "!shopRapid Boar", "!shopStampor", "!shopUndead Cavebear", "!shopDonkey", "!shopTiger Slug", "!shopUniwheel", "!shopCrystal Wolf", "!shopWar Horse", "!shopKingly Deer", "!shopTamed Panda", "!shopDromedary", "!shopScorpion King", "!shopDarkbrown Rented Horse", "!shopArmoured War Horse", "!shopShadow Draptor", "!shopGrey Rented Horse", "!shopBrown Rented Horse", "!shopLady Bug", "!shopManta Ray", "!shopIronblight", "!shopMagma Crawler", "!shopDragonling", "!shopGnarlhound", "!shopCrimson Ray", "!shopSteelbeak", "!shopWater Buffalo", "!shopTombstinger", "!shopPlatesaurian", "!shopUrsagrodon", "!shopThe Hellgrip", "!shopNoble Lion", "!shopDesert King", "!shopShock Head", "!shopWalker", "!shopAzudocus", "!shopCarpacosaurus", "!shopDeath Crawler", "!shopFlamesteed", "!shopJade Lion", "!shopJade Pincer", "!shopNethersteed", "!shopTempest", "!shopWinter King", "!shopDoombringer", "!shopWoodland Prince", "!shopHailstorm Fury", "!shopSiegebreaker", "!shopPoisonbane", "!shopBlackpelt", "!shopGolden Dragonfly", "!shopSteel Bee", "!shopCopper Fly", "!shopTundra Rambler", "!shopHighland Yak", "!shopGlacier Vagabond", "!shopShadow Hart", "!shopBlack Stag", "!shopEmperor Deer", "!shopFlying Divan", "!shopMagic Carpet", "!shopFloating Kashmir", "!shopRingtail Waccoon", "!shopNight Waccoon", "!shopEmerald Waccoon", "!shopFlitterkatzen", "!shopVenompaw", "!shopBatcat", "!shopSea Devil", "!shopCoralripper", "!shopPlumfish", "!shopGorongra", "!shopNoctungra", "!shopSilverneck", "!shopSlagsnare", "!shopNightstinger", "!shopRazorcreep", "!shopRift Runner", "!shopNightdweller", "!shopFrostflare", "!shopCinderhoof", "!shopMouldpincer", "!shopBloodcurl", "!shopLeafscuttler", "!shopSparkion", "!shopSwamp Snapper", "!shopMould Shell", "!shopReed Lurker", "!shopNeon Sparkid", "!shopVortexion", "!shopIvory Fang", "!shopShadow Claw", "!shopSnow Pelt", "!shopJackalope", "!shopDreadhare", "!shopWolpertinger", "!shopStone Rhino", "!shopGold Sphinx", "!shopEmerald Sphinx", "!shopShadow Sphinx", "!shopJungle Saurian", "!shopEmber Saurian", "!shopLagoon Saurian", "!shopBlazing Unicorn", "!shopArctic Unicorn", "!shopPrismatic unicorn", "!shopCranium Spider", "!shopCave Tarantula", "!shopGloom Widow", "!shopMole", "!shopMarsh Toad", "!shopSanguine Frog", "!shopToxic Toad", "!shopEbony Tiger", "!shopFeral Tiger", "!shopJungle Tiger", "!shopFleeting Knowledge", "!shopTawny Owl", "!shopSnowy Owl", "!shopBoreal Owl", "!shopLacewing Moth", "!shopHibernal Moth", "!shopCold Percht Sleigh", "!shopBright Percht Sleigh", "!shopDark Percht Sleigh", "!shopFestive Snowman", "!shopMuffled Snowman", "!shopCaped Snowman", "!shopRabbit Rickshaw", "!shopBunny Dray", "!shopCony Cart", "!shopRiver Crocovile", "!shopSwamp Crocovile", "!shopNightmarish Crocovile", "!shopGryphon", "!shopJousting Eagle", "!shopCerberus Champion", "!shopCold Percht Sleigh Variant", "!shopBright Percht Sleigh Variant", "!shopDark Percht Sleigh Variant", "!shopCold Percht Sleigh Final", "!shopBright Percht Sleigh Final", "!shopDark Percht Sleigh Final", "!shopBattle Badger", "!shopEther Badger", "!shopZaoan Badger", "!shopBlue Rolling Barrel", "!shopRed Rolling Barrel", "!shopGreen Rolling Barrel", "!shopFloating Sage", "!shopFloating Scholar", "!shopFloating Augur", "!shopHaze", "!shopAntelope", "!shopSnow Strider", "!shopDusk Pryer", "!shopDawn Strayer", "!shopSpectral Horse", "!shopSavanna Ostrich", "!shopCoral Rhea", "!shopEventide Nandu", "!shopVoracious Hyaena", "!shopCunning Hyaena", "!shopScruffy Hyaena", "!shopWhite Lion", "!shopKrakoloss", "!shopMerry Mammoth", "!shopHoliday Mammoth", "!shopFestive Mammoth", "!shopVoid Watcher", "!shopRune Watcher", "!shopRift Watcher", "!shopPhant", "!shopShellodon", "!shopSingeing Steed", "!shopHyacinth", "!shopPeony", "!shopDandelion", "!shopRustwurm", "!shopBogwurm", "!shopGloomwurm", "!shopEmerald Raven", "!shopMystic Raven", "!shopRadiant Raven", "!shopGloothomotive", "!shopTopaz Shrine", "!shopJade Shrine", "!shopObsidian Shrine", "!shopPoppy Ibex", "!shopMint Ibex", "!shopCinnamon Ibex")
function shopsCustom.onSay(player, words, param)
if words == "/shop" then
return false
end
if words == "!shopMidnight Panther" then
local shopId = 1 -- Mount ID
local shopCost = 20 -- Cost in premium_points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Midnight Panther for " .. shopCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Midnight Panther!")
end
elseif words == "!shopWidow Queen" then
local shopId = 2 -- Mount ID
local shopCost = 20 -- Cost in premium_points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Widow Queen for " .. shopCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Widow Queen!")
end
elseif words == "!shopRacing Bird" then
local shopId = 3 -- Mount ID
local shopCost = 20 -- Cost in premium_points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Racing Bird for " .. shopCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Racing Bird!")
end
elseif words == "!shopWar Bear" then
local shopId = 4 -- Mount ID
local shopCost = 20 -- Cost in premium_points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE accounts SET premium_points = premium_points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the War Bear for " .. shopCost .. " premium_points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the War Bear!")
end
end
end
shopsCustom:separator(" ")
shopsCustom:register()
Clique no item para ganhar pontos e poder comprar na store!
local premiumPointsAction = Action()
local function doPlayerAddPremiumPoints(player, count)
local accountId = player:getAccountId()
db.query('UPDATE accounts SET premium_points = premium_points +' .. count .. ' WHERE id = ' .. db.escapeString(accountId))
end
function premiumPointsAction.onUse(player, item, fromPosition, target, toPosition)
doPlayerAddPremiumPoints(player, 100)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received 100 store point(s) in your account.")
player:getPosition():sendMagicEffect(28)
item:remove(1)
return true
end
premiumPointsAction:id(24774)
premiumPointsAction:register()
AGORA É ZNOTE..
magic sword.
local StoreCustom = TalkAction("!shopteste")
function StoreCustom.onSay(player, words, param)
local pointsToDeduct = 10 -- Replace with the number of points to be deducted
removePoints(player, pointsToDeduct)
local newItemID = 2401 -- Replace with the ID of the item the player will receive
local newItemCount = 1 -- Quantity of the new item to be added to the player's inventory
player:addItem(newItemID, newItemCount)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have successfully purchased a new item in exchange for " .. pointsToDeduct .. " premium points.")
return false
end
function removePoints(player, amount)
local accountId = player:getAccountId()
local query = "UPDATE `znote_accounts` SET `points` = `points` - " .. amount .. " WHERE `id` = " .. accountId
db.query(query)
end
StoreCustom:separator(" ")
StoreCustom:register()
!points
local StoreCustom = TalkAction("!shopteste")
function StoreCustom.onSay(player, words, param)
local pointsToDeduct = 10 -- Replace with the number of points to be deducted
removePoints(player, pointsToDeduct)
local newItemID = 2401 -- Replace with the ID of the item the player will receive
local newItemCount = 1 -- Quantity of the new item to be added to the player's inventory
player:addItem(newItemID, newItemCount)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have successfully purchased a new item in exchange for " .. pointsToDeduct .. " premium points.")
return false
end
function removePoints(player, amount)
local accountId = player:getAccountId()
local query = "UPDATE `znote_accounts` SET `points` = `points` - " .. amount .. " WHERE `id` = " .. accountId
db.query(query)
end
StoreCustom:separator(" ")
StoreCustom:register()
outfits ou addons.
local outfitsCustom = TalkAction("!shopMage", "!shopCitizen", "!shopHunter", "!shopKnight", "!shopNoblewoman", "!shopNobleman", "!shopSummoner", "!shopWarrior", "!shopBarbarian", "!shopDruid", "!shopWizard", "!shopOriental", "!shopPirate", "!shopAssassin", "!shopBeggar", "!shopShaman", "!shopNorsewoman", "!shopNorseman", "!shopNightmare", "!shopJester", "!shopBrotherhood", "!shopDemon Hunter", "!shopYalaharian", "!shopNewly Wed", "!shopWarmaster", "!shopWayfarer", "!shopRetro Warrior", "!shopRetro Citizen", "!shopRetro Hunter", "!shopRetro Knight", "!shopRetro Mage", "!shopRetro Noblewoman", "!shopRetro Nobleman", "!shopRetro Summoner")
function outfitsCustom.onSay(player, words, param)
if words == "/shop" then
return false
end
if words == "!shopMage" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 138 or 130 -- Mage outfit ID
local outfitCost = 50 -- Cost in points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE znote_accounts SET points = points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Mage outfit addons for " .. outfitCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Mage outfit!")
end
----------------
elseif words == "!shopCitizen" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 136 or 128 -- Citizen outfit ID
local outfitCost = 50 -- Cost in points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE znote_accounts SET points = points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Citizen outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Citizen outfit addons for " .. outfitCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Citizen outfit!")
end
----------------
elseif words == "!shopHunter" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 137 or 129 -- Hunter outfit ID
local outfitCost = 50 -- Cost in points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE znote_accounts SET points = points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Hunter outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Hunter outfit addons for " .. outfitCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Hunter outfit!")
end
----------------
elseif words == "!shopKnight" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 139 or 131 -- Knight outfit ID
local outfitCost = 50 -- Cost in points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE znote_accounts SET points = points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add Knight outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Knight outfit addons for " .. outfitCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Knight outfit!")
end
----------------
elseif words == "!shopNoblewoman" then
local outfitId = (player:getSex() == PLAYERSEX_FEMALE) and 140 or 132 -- outfit ID
local outfitCost = 50 -- Cost in points to acquire the outfit
if not player:hasOutfit(outfitId) or not player:hasOutfit(outfitId, 3) then
db.query("UPDATE znote_accounts SET points = points - " .. outfitCost .. " WHERE account_id = " .. player:getAccountId())
player:addOutfitAddon(outfitId, 3) -- Add outfit / addons
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Noblewoman outfit addons for " .. outfitCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Noblewoman outfit!")
end
-- Add more commands and messages as necessary
end
return false
end
outfitsCustom:separator(" ")
outfitsCustom:register()
Montaria.
local shopsCustom = TalkAction("!shopMidnight Panther", "!shopWidow Queen", "!shopRacing Bird", "!shopWar Bear", "!shopBlack Sheep", "!shopDraptor", "!shopTitanica", "!shopTin Lizzard", "!shopBlazebringer", "!shopRapid Boar", "!shopStampor", "!shopUndead Cavebear", "!shopDonkey", "!shopTiger Slug", "!shopUniwheel", "!shopCrystal Wolf", "!shopWar Horse", "!shopKingly Deer", "!shopTamed Panda", "!shopDromedary", "!shopScorpion King", "!shopDarkbrown Rented Horse", "!shopArmoured War Horse", "!shopShadow Draptor", "!shopGrey Rented Horse", "!shopBrown Rented Horse", "!shopLady Bug", "!shopManta Ray", "!shopIronblight", "!shopMagma Crawler", "!shopDragonling", "!shopGnarlhound", "!shopCrimson Ray", "!shopSteelbeak", "!shopWater Buffalo", "!shopTombstinger", "!shopPlatesaurian", "!shopUrsagrodon", "!shopThe Hellgrip", "!shopNoble Lion", "!shopDesert King", "!shopShock Head", "!shopWalker", "!shopAzudocus", "!shopCarpacosaurus", "!shopDeath Crawler", "!shopFlamesteed", "!shopJade Lion", "!shopJade Pincer", "!shopNethersteed", "!shopTempest", "!shopWinter King", "!shopDoombringer", "!shopWoodland Prince", "!shopHailstorm Fury", "!shopSiegebreaker", "!shopPoisonbane", "!shopBlackpelt", "!shopGolden Dragonfly", "!shopSteel Bee", "!shopCopper Fly", "!shopTundra Rambler", "!shopHighland Yak", "!shopGlacier Vagabond", "!shopShadow Hart", "!shopBlack Stag", "!shopEmperor Deer", "!shopFlying Divan", "!shopMagic Carpet", "!shopFloating Kashmir", "!shopRingtail Waccoon", "!shopNight Waccoon", "!shopEmerald Waccoon", "!shopFlitterkatzen", "!shopVenompaw", "!shopBatcat", "!shopSea Devil", "!shopCoralripper", "!shopPlumfish", "!shopGorongra", "!shopNoctungra", "!shopSilverneck", "!shopSlagsnare", "!shopNightstinger", "!shopRazorcreep", "!shopRift Runner", "!shopNightdweller", "!shopFrostflare", "!shopCinderhoof", "!shopMouldpincer", "!shopBloodcurl", "!shopLeafscuttler", "!shopSparkion", "!shopSwamp Snapper", "!shopMould Shell", "!shopReed Lurker", "!shopNeon Sparkid", "!shopVortexion", "!shopIvory Fang", "!shopShadow Claw", "!shopSnow Pelt", "!shopJackalope", "!shopDreadhare", "!shopWolpertinger", "!shopStone Rhino", "!shopGold Sphinx", "!shopEmerald Sphinx", "!shopShadow Sphinx", "!shopJungle Saurian", "!shopEmber Saurian", "!shopLagoon Saurian", "!shopBlazing Unicorn", "!shopArctic Unicorn", "!shopPrismatic unicorn", "!shopCranium Spider", "!shopCave Tarantula", "!shopGloom Widow", "!shopMole", "!shopMarsh Toad", "!shopSanguine Frog", "!shopToxic Toad", "!shopEbony Tiger", "!shopFeral Tiger", "!shopJungle Tiger", "!shopFleeting Knowledge", "!shopTawny Owl", "!shopSnowy Owl", "!shopBoreal Owl", "!shopLacewing Moth", "!shopHibernal Moth", "!shopCold Percht Sleigh", "!shopBright Percht Sleigh", "!shopDark Percht Sleigh", "!shopFestive Snowman", "!shopMuffled Snowman", "!shopCaped Snowman", "!shopRabbit Rickshaw", "!shopBunny Dray", "!shopCony Cart", "!shopRiver Crocovile", "!shopSwamp Crocovile", "!shopNightmarish Crocovile", "!shopGryphon", "!shopJousting Eagle", "!shopCerberus Champion", "!shopCold Percht Sleigh Variant", "!shopBright Percht Sleigh Variant", "!shopDark Percht Sleigh Variant", "!shopCold Percht Sleigh Final", "!shopBright Percht Sleigh Final", "!shopDark Percht Sleigh Final", "!shopBattle Badger", "!shopEther Badger", "!shopZaoan Badger", "!shopBlue Rolling Barrel", "!shopRed Rolling Barrel", "!shopGreen Rolling Barrel", "!shopFloating Sage", "!shopFloating Scholar", "!shopFloating Augur", "!shopHaze", "!shopAntelope", "!shopSnow Strider", "!shopDusk Pryer", "!shopDawn Strayer", "!shopSpectral Horse", "!shopSavanna Ostrich", "!shopCoral Rhea", "!shopEventide Nandu", "!shopVoracious Hyaena", "!shopCunning Hyaena", "!shopScruffy Hyaena", "!shopWhite Lion", "!shopKrakoloss", "!shopMerry Mammoth", "!shopHoliday Mammoth", "!shopFestive Mammoth", "!shopVoid Watcher", "!shopRune Watcher", "!shopRift Watcher", "!shopPhant", "!shopShellodon", "!shopSingeing Steed", "!shopHyacinth", "!shopPeony", "!shopDandelion", "!shopRustwurm", "!shopBogwurm", "!shopGloomwurm", "!shopEmerald Raven", "!shopMystic Raven", "!shopRadiant Raven", "!shopGloothomotive", "!shopTopaz Shrine", "!shopJade Shrine", "!shopObsidian Shrine", "!shopPoppy Ibex", "!shopMint Ibex", "!shopCinnamon Ibex")
function shopsCustom.onSay(player, words, param)
if words == "/shop" then
return false
end
if words == "!shopMidnight Panther" then
local shopId = 1 -- Mount ID
local shopCost = 20 -- Cost in points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE znote_accounts SET points = points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Midnight Panther for " .. shopCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Midnight Panther!")
end
elseif words == "!shopWidow Queen" then
local shopId = 2 -- Mount ID
local shopCost = 20 -- Cost in points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE znote_accounts SET points = points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Widow Queen for " .. shopCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Widow Queen!")
end
elseif words == "!shopRacing Bird" then
local shopId = 3 -- Mount ID
local shopCost = 20 -- Cost in points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE znote_accounts SET points = points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the Racing Bird for " .. shopCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the Racing Bird!")
end
elseif words == "!shopWar Bear" then
local shopId = 4 -- Mount ID
local shopCost = 20 -- Cost in points to acquire the shop
if not player:hasMount(shopId) then
db.query("UPDATE znote_accounts SET points = points - " .. shopCost .. " WHERE account_id = " .. player:getAccountId())
player:addMount(shopId) --
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You acquired the War Bear for " .. shopCost .. " points!")
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You already have the War Bear!")
end
end
end
shopsCustom:separator(" ")
shopsCustom:register()
Clique no item para ganhar pontos e poder comprar na store.
local premiumPointsAction = Action()
local function doPlayerAddPremiumPoints(player, count)
local accountId = player:getAccountId()
db.query('UPDATE znote_accounts SET points = points +' .. count .. ' WHERE account_id = ' .. db.escapeString(accountId))
end
function premiumPointsAction.onUse(player, item, fromPosition, target, toPosition)
doPlayerAddPremiumPoints(player, 100)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received 100 store point(s) in your account.")
player:getPosition():sendMagicEffect(28)
item:remove(1)
return true
end
premiumPointsAction:id(24774)
premiumPointsAction:register()
É só baixar o module e colocar no seu OTClient... Pronto! Espero que tenha gostado!
https://drive.google.com/file/d/1Cl06Dx2o1ix2AO7aUXJRe292tLvfgU45/view?usp=sharing
Olá vou disponibilizar aqui o sistema de pagamento automático do mercado pago via pix utilizando o myaac.
O Sistema esta livre de sql injection e com o workflow 100% correto.
Em breve solto o do cartão de crédito.
Configuração
Coloque os conteúdos das pastas systems e plugins dentro de suas respectivas pastas em seu website.
Configure o arquivo plugins/mercadopago/config.php com os dados necessarios
Lembre-se de configurar o seu domínio no arquivo system/pages/pix.php
procure por mywebsite.online e troque pelo seu dominio.
Lembre-se de configurar a variavel do mercadopago no seu config.php
Aproveite seu sistema automático de doações.
Downloads
Tibiaking Cloud
mp_pix.rar
GithubDev: Automatic mercadopagoPIX System Gateway · thetibiaking/ttk-my-aac@eae160d · GitHub
Updates
Fix: Add variable to pixStatusUrl added on pix config.php · thetibiaking/ttk-my-aac@0a05720 · GitHub
Fix: Wrong way to get collector ID · thetibiaking/ttk-my-aac@397efc8 (github.com)
Confira o sistema aqui
Pix - Eternal Global
Tabela para o Banco de dados.
status.sql
Olá vou disponibilizar aqui o sistema de pagamento automático do mercado pago via pix utilizando o myaac.
O Sistema esta livre de sql injection e com o workflow 100% correto.
Em breve solto o do cartão de crédito.
Configuração
Coloque os conteúdos das pastas systems e plugins dentro de suas respectivas pastas em seu website.
Configure o arquivo plugins/mercadopago/config.php com os dados necessarios
Lembre-se de configurar o seu domínio no arquivo system/pages/pix.php
procure por mywebsite.online e troque pelo seu dominio.
Lembre-se de configurar a variavel do mercadopago no seu config.php
Aproveite seu sistema automático de doações.
Downloads
Tibiaking Cloud
mp_pix.rar
GithubDev: Automatic mercadopagoPIX System Gateway · thetibiaking/ttk-my-aac@eae160d · GitHub
Updates
Fix: Add variable to pixStatusUrl added on pix config.php · thetibiaking/ttk-my-aac@0a05720 · GitHub
Fix: Wrong way to get collector ID · thetibiaking/ttk-my-aac@397efc8 (github.com)
Confira o sistema aqui
Pix - Eternal Global
Tabela para o Banco de dados.
status.sql
Olá vou disponibilizar aqui o sistema de pagamento automático do mercado pago via pix utilizando o myaac.
O Sistema esta livre de sql injection e com o workflow 100% correto.
Em breve solto o do cartão de crédito.
Configuração
Coloque os conteúdos das pastas systems e plugins dentro de suas respectivas pastas em seu website.
Configure o arquivo plugins/mercadopago/config.php com os dados necessarios
Lembre-se de configurar o seu domínio no arquivo system/pages/pix.php
procure por mywebsite.online e troque pelo seu dominio.
Lembre-se de configurar a variavel do mercadopago no seu config.php
Aproveite seu sistema automático de doações.
Downloads
Tibiaking Cloud
mp_pix.rar
GithubDev: Automatic mercadopagoPIX System Gateway · thetibiaking/ttk-my-aac@eae160d · GitHub
Updates
Fix: Add variable to pixStatusUrl added on pix config.php · thetibiaking/ttk-my-aac@0a05720 · GitHub
Fix: Wrong way to get collector ID · thetibiaking/ttk-my-aac@397efc8 (github.com)
Confira o sistema aqui
Pix - Eternal Global
Tabela para o Banco de dados.
status.sql
Olá vou disponibilizar aqui o sistema de pagamento automático do mercado pago via pix utilizando o myaac.
O Sistema esta livre de sql injection e com o workflow 100% correto.
Em breve solto o do cartão de crédito.
Configuração
Coloque os conteúdos das pastas systems e plugins dentro de suas respectivas pastas em seu website.
Configure o arquivo plugins/mercadopago/config.php com os dados necessarios
Lembre-se de configurar o seu domínio no arquivo system/pages/pix.php
procure por mywebsite.online e troque pelo seu dominio.
Lembre-se de configurar a variavel do mercadopago no seu config.php
Aproveite seu sistema automático de doações.
Downloads
Tibiaking Cloud
mp_pix.rar
GithubDev: Automatic mercadopagoPIX System Gateway · thetibiaking/ttk-my-aac@eae160d · GitHub
Updates
Fix: Add variable to pixStatusUrl added on pix config.php · thetibiaking/ttk-my-aac@0a05720 · GitHub
Fix: Wrong way to get collector ID · thetibiaking/ttk-my-aac@397efc8 (github.com)
Confira o sistema aqui
Pix - Eternal Global
Tabela para o Banco de dados.
status.sql
Olá vou disponibilizar aqui o sistema de pagamento automático do mercado pago via pix utilizando o myaac.
O Sistema esta livre de sql injection e com o workflow 100% correto.
Em breve solto o do cartão de crédito.
Configuração
Coloque os conteúdos das pastas systems e plugins dentro de suas respectivas pastas em seu website.
Configure o arquivo plugins/mercadopago/config.php com os dados necessarios
Lembre-se de configurar o seu domínio no arquivo system/pages/pix.php
procure por mywebsite.online e troque pelo seu dominio.
Lembre-se de configurar a variavel do mercadopago no seu config.php
Aproveite seu sistema automático de doações.
Downloads
Tibiaking Cloud
mp_pix.rar
GithubDev: Automatic mercadopagoPIX System Gateway · thetibiaking/ttk-my-aac@eae160d · GitHub
Updates
Fix: Add variable to pixStatusUrl added on pix config.php · thetibiaking/ttk-my-aac@0a05720 · GitHub
Fix: Wrong way to get collector ID · thetibiaking/ttk-my-aac@397efc8 (github.com)
Confira o sistema aqui
Pix - Eternal Global
Tabela para o Banco de dados.
status.sql
Abaixo Segue códigos PHP de pagamento via cartão de credito pelo stripe com retorno automático para quem quiser adaptar em seus sites ter uma direção de onde ir códigos testados em Znote, MyAcc e Gesior.
Estou utilizando a vps do Cloud Run para hospedar o NTO OTShinobi. Estou gostando dos serviços, a ativação foi rápida e fácil de instalar, recomendo para quem estiver procurando serviços de hospedagem para otserv.
CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
Recursos Exclusivos - Proteção DDoS Avançada:
Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
Armazenamento NVMe de Alta Velocidade:
Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
Uplink de até 1GB:
Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
Suporte 24 Horas:
Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
Fácil e Rápido de Começar:
Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
Entre em Contato Agora!
Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
Email: [email protected]
Telefone: (47) 99902-5147
Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
Tutorial: Criando um Sistema de Enviar efeito com OTClient.
Neste tutorial, vamos criar um sistema simples de Enviar efeito no OTClient.
Este sistema permitirá que os jogadores ativem um efeito especial e vejam uma janela ao clicar em um botão específico.
Pré-requisitos:
Ambiente de Desenvolvimento:
Certifique-se de ter um ambiente de desenvolvimento configurado com OTClient Edubart.
Conhecimento Básico em Lua:
Familiaridade com a linguagem de script Lua.
Passo 1: Estrutura do projeto
Organize seu projeto conforme abaixo:
OTC / MODS
Passo 2: Criando a Interface Gráfica (OTUI)
game_pass.otui
Repare que em nossa interface nossos botões de ação entram no caminho do module e iniciam uma função que esta disponivel em nosso game_pass.lua (Client-Side)
Passo 3: Criando funções Client-Side
Agora com as funções criada podemos chamar elas de acordo com a necessidade em nosso arquivo de interface.
Por exemplo a função effect() que foi chamada em nosso arquivo de interface.otui agora é criada aqui para mostrar o efeito ao jogador.
game_pass.lua
Passo 4: Registrando o novo Mod
Agora podemos registrar e iniciar nosso modulo usando o arquivo de configuração
game_pass.otmod
Feito isso ja podemos ver nosso module no client e enviar opcodes através do gameprotocol e também receber o buffer para manipular os dados podemos utilizar :
protocolGame:sendExtendedOpcode(14, "1")
Basicamente oque estamos fazendo é armazenando o valor 1 na variaval 14 do ExtendedOpcode e futuramente podemos recuperar esse valor.
Recuperamos esse valor em nosso server side data/creatuerscript/otc/game_pass.lua
Verificando se o opcode é 14 se for 14 então fazemos x ação.
Show, tendo isso em mente para que o nosso client-side consiga receber com sucesso o efeito enviado ao jogador então utilizamos
Passo 5: Criando o Server-side responsavel por enviar o efeito correto ao jogador dependendo do opcode selecionado no nosso cliente.
data/creaturescripts/otc/game_pass.lua
Passo 6: Registrando o evento para evitar erros futuros!
Para que tudo funcione corretamente sem erros é necessário registrar o evento no creaturescript.xml / login.lua
Ótimo agora ao selecionar o menu recompensa o jogador recebera um efeito.
Espero que tenha ficado claro como usar Opcodes/ExetendedOpcodes.
Arquivos usados no tutorrial:
OTC MODULE
game_pass.rar
Creaturescript
game_pass.lua
Vi muitos tutoriais desatualizado então resolvi trazer esse!
Reparem que nesse caso passamos creature como parametro do buffer isso porque precisamos enviar um efeito no player.