Skip to content

Commit

Permalink
🌴Atualização
Browse files Browse the repository at this point in the history
  • Loading branch information
Maicon-Developer committed Aug 22, 2024
1 parent cf053ab commit e82b86a
Show file tree
Hide file tree
Showing 12 changed files with 312 additions and 234 deletions.
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# warpstore-mtasa-public
Projeto para integração do mtasa com seu servidor

- ✅ Adicionado sistema de expiração de produto
- ✅ Adicionado sistema de reembolso
- ✅ Adicionar sistema para revalidar caso o usuário esteja online para entrega
- ✅ Adicionado suporte ao sistema infobox
- ✅ Adicionado comando de produto para ver o produto expirar
- ✅ Sistema totalmente refeito.
- ✅ Adicionado sistema de balão ao entregar o produto.
- ✅ Mensagens totalmente editavel.
177 changes: 114 additions & 63 deletions commands.lua
Original file line number Diff line number Diff line change
@@ -1,67 +1,118 @@
commands = {
['hyperscripts:addVip'] = function (args)
local playerID = tonumber(args[1]);
local vipName = args[2]
local vipNumber = args[3]
local vipDays = tonumber(args[4])

local HSVIP = exports['[HS]VIP_System']

local player = getPlayerID(playerID);
local playerAccount = getAccountName( getPlayerAccount( player ))

HSVIP:givePremium(playerAccount, vipName, vipDays, 'Dias', 'VIP:0'..vipNumber)
end,
['hyperscripts:addCoin'] = function (args)
local playerID = tonumber(args[1]);
local elementData = args[2]
local quantityCoin = tonumber(args[3]);

local player = getPlayerID(playerID);
local currentCoins = getElementData(player, elementData) or 0;
--[[
╔══════════════════════════════════════════════════[ www.warpstore.app ]═════════════════════════════════════════════════════════════╗
setElementData(player, elementData, currentCoins + quantityCoin)
end,
['hyperscripts:giveItem'] = function (args)
local playerID = tonumber(args[1]);
local item = args[2]
local quantity = tonumber(args[3]);

local player = getPlayerID(playerID);
local inventory = exports['[HS]Hyper_Inventory'];
██╗ ██╗ █████╗ ██████╗ ██████╗ ███████╗████████╗ ██████╗ ██████╗ ███████╗
██║ ██║██╔══██╗██╔══██╗██╔══██╗ ██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝
██║ █╗ ██║███████║██████╔╝██████╔╝ ███████╗ ██║ ██║ ██║██████╔╝█████╗
██║███╗██║██╔══██║██╔══██╗██╔═══╝ ╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝
╚███╔███╔╝██║ ██║██║ ██║██║ ███████║ ██║ ╚██████╔╝██║ ██║███████╗
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
╚══════════════════════════════════════════════════[ www.warpstore.app ]═════════════════════════════════════════════════════════════╝
--]]

if not inventory:giveItem( player, item, quantity ) then
return config.InfoBox.execute(player, 'Você não possui espaço suficiente para receber o item '..item..' contate a administração.', config.InfoBox.status.warn)
end
end,
['hyperscripts:addVehicle'] = function (args)
local playerID = tonumber(args[1]);
local vehicle = string.gsub(args[2], '-', ' ');
local vehicleCategory = string.gsub(args[3], '-', ' ');
local vehicleModel = tonumber(args[4]);

local player = getPlayerID(playerID);
local conce = exports['[HS]Dealership_System'];

local verify = conce:getVehicle( account, vehicleName )
if not verify then
conce:setVehicleConce( player, { ['name'] = vehicle, ['model'] = vehicleModel }, { 255, 255, 255 }, vehicleCategory )
end
end,
['hyperscripts:addVehicleVip'] = function ( args )
local playerID = tonumber(args[1]);
local vehicle = string.gsub(args[2], '-', ' ')
local validate = tonumber(args[3])

local player = getPlayerID(playerID);
local conce = exports['Dealership_System'];

local vehicleConfig = conce:getVehicleVipConfig(vehicle);

local verify = conce:getVehicle( account, vehicleName )
if not verify then
local plate = conce:generatePlate( )
conce:setVehicleVip( player, vehicle, conce:generatePlate( ), vehicleConfig.category, vehicleConfig.model, validate )
end
end
commands = {
['addGroup'] = {
function ( player, args )
local group = args[ 1 ];
local account_name = getAccountName( getPlayerAccount( player ) )
if ( player and aclGetGroup( group ) ) then
aclGroupAddObject( aclGetGroup( group ), 'user.'..account_name );
end
end;
};
['addMoney'] = {
function ( player, args )
local quantity = tonumber( args[ 1 ] );
if ( player ) then
givePlayerMoney( player, quantity )
end
end;
};
['unban'] = {
function ( player, args )
local account_name = getAccountName( player );
for banId, ban in ipairs( getBans( ) )do
local banUser = getBanNick( ban )
if ( banUser and banUser == account_name ) then
removeBan( ban )
end
end
end;
};
['hyperscripts:addVip'] = {
function( player, args )
local vipName = args[ 1 ]
local vipNumber = args[ 2 ]
local vipDays = tonumber( args[ 3 ] )
local HSVIP = exports['[HS]VIP_System']
local playerAccount = getAccountName( getPlayerAccount( player ))
HSVIP:givePremium( playerAccount, vipName, vipDays, 'Dias', 'VIP:0'..vipNumber )
end;
};
['hyperscripts:addCoin'] = {
function( player, args )
local elementData = args[ 1 ]
local quantityCoin = tonumber( args[ 2 ] );
local currentCoins = getElementData( player, elementData ) or 0;
setElementData( player, elementData, currentCoins + quantityCoin )
end;
};
['hyperscripts:addVehicle'] = {
function( player, args )
local vehicle = string.gsub( args[ 1 ], '-', ' ' );
local vehicleCategory = string.gsub( args[ 2 ], '-', ' ' );
local vehicleModel = tonumber( args[ 3 ] );
local conce = exports['[HS]Dealership_System'];
local verify = conce:getVehicle( account, vehicleName )
if not verify then
conce:setVehicleConce( player, { ['name'] = vehicle, ['model'] = vehicleModel }, { 255, 255, 255 }, vehicleCategory )
end
end;
};
['hyperscripts:addVehicleVip'] = {
function( player, args )
local vehicle = string.gsub( args[ 1 ], '-', ' ' )
local validate = tonumber( args[ 2 ] )
local conce = exports['[HS]Dealership_System'];
local vehicleConfig = conce:getVehicleVipConfig(vehicle);
local verify = conce:getVehicle( account, vehicleName )
if not verify then
local plate = conce:generatePlate( )
conce:setVehicleVip( player, vehicle, conce:generatePlate( ), vehicleConfig.category, vehicleConfig.model, validate )
end
end;
};
['hyperscripts:giveItem'] = {
function( player, args )
local item = args[ 1 ]
local quantity = tonumber( args[ 2 ] );
local inventory = exports['[HS]Hyper_Inventory'];
if not inventory:giveItem( player, item, quantity ) then
return exports['[HS]Notify_System']:notify(player, 'Você não possui espaço suficiente para receber o item '..item..' contate a administração.', config.InfoBox.status.warn)
end
end;
};
['hyperscripts:spotify'] = {
function( player, args )
local spotify = exports['[HS]Spotify_System']
local account = getAccountName( getPlayerAccount( player ) )
local dias = tonumber( args[ 1 ] );
local verify, _ = spotify:getPremium( account )
if not verify then
spotify:givePremium( account, dias )
end
end;
};
['hyperscripts:porte'] = {
function( player, args )
local categoria = args[ 1 ]
local verificar = exports['[HS]Porte_Armas']:verificar_porte( player, categoria )
if not verificar then
exports['[HS]Porte_Armas']:set_porte( player, categoria )
end
end;
};
}
119 changes: 68 additions & 51 deletions config.lua
Original file line number Diff line number Diff line change
@@ -1,55 +1,72 @@
--[[
╔══════════════════════════════════════════════════[ www.warpstore.app ]═════════════════════════════════════════════════════════════╗
██╗ ██╗ █████╗ ██████╗ ██████╗ ███████╗████████╗ ██████╗ ██████╗ ███████╗
██║ ██║██╔══██╗██╔══██╗██╔══██╗ ██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝
██║ █╗ ██║███████║██████╔╝██████╔╝ ███████╗ ██║ ██║ ██║██████╔╝█████╗
██║███╗██║██╔══██║██╔══██╗██╔═══╝ ╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝
╚███╔███╔╝██║ ██║██║ ██║██║ ███████║ ██║ ╚██████╔╝██║ ██║███████╗
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
╚══════════════════════════════════════════════════[ www.warpstore.app ]═════════════════════════════════════════════════════════════╝
--]]


config = {
token = 'mtasa-27ac7110-448f-4c73-af60-10628384efe4-1ab359bb-f9cb-4e7a-8f0f-27d40c487bd9', -- Você pegar seu token em: https://docs.warpstore.app
chat = {
global = false, -- (true) para todos os jogadores ver, ou (false) para somente o jogador!
color = '#ffffff', -- (#) Cor da mensagem que será enviada no chat!
},
commands = {
showPurchases = 'compras' -- O comando usado para ver as compras e a data de expiração.
},
panelHtml = {
enabled = true, -- Caso estiver ativo ele exibe um painel na tela para todos os jogadores avisando que o usuário comprou o produto,
global = true, -- Caso qusier que todos os jogadores vejam esta mensagem deixe ativado, e false para quando quiser que apenas o comprador veja
title = 'Warp Delivery',
message = ':name fez uma doação do produto :product para o servidor.'
},
messages = {
newBuy = '[WARP - DELIVERY] :name comprou :product com sucesso!',
notFound = '[WARP - DELIVERY] Não foi encontrado nenhum benefício!',
expireIn = '[WARP - DELIVERY] O produto :name e o :item expira em :date',
expire = '[WARP - DELIVERY] Ei :name, o seu produto :product expirou e foi removido!', -- item representa caso seja um grupo, quantidade, ou qualquer outro argumento. Não remova
refund = '[WARP - DELIVERY] Ei :name, você recebeu o reembolso de uma compra e o :product foi removido de sua conta!', -- quando algum item é reembolsado.
nothingToExpire = '[WARP - DELIVERY] Você não tem nenhum produto para expirar', -- item representa caso seja um grupo, quantidade, ou qualquer outro argumento. Não remova
useInfoBox = false, -- Caso ele seja false as mensagens serão exibidas no chat, e caso seja true será exibida na sua info-box
},
cooldownRequest = 10000, -- Tempo em milisegundos que o site verifica se tem alguma compra para ativar no jogo.
['warp:delivery'] = {
['token'] = 'SEU TOKEN QUE PEGA NO SITE',
['data:id'] = 'ID';
['color:hex'] = '#0095ff';
['entrega'] = {
['balões'] = {
['ativar'] = true; -- Caso deseja que a mensagem na tela apareça.
['visivel'] = true; -- Caso deseja que todas as pessoas vejam a mensagem na tela.
['texto'] = 'O(a) jogador ${hex}${name}(${id}) #FFFFFFAtivou o produto ${hex}${product}#FFFFFF com sucesso!\n${hex}www.warpstore.app';
['rgb'] = { 255, 255, 255 };
['font'] = 'roboto-bold.ttf';
['size'] = 20;
['quantidade'] = 50;
['tempo'] = 10; -- Tempo que ira ficar na tela do player
['formato'] = 1000; -- Formato de tempo ( 1000 = segundos, 60000 = minutos, 3600000 = Hora )
};
['chatbox'] = {
['ativar'] = true;
['visivel'] = true;
['rgb'] = { 255, 255, 255 };
['texto'] = '[WARP-DELIVERY] - O(a) jogador #0095ff${name}(${id}) #FFFFFFAtivou o produto #0095ff${product}#FFFFFF com sucesso!';
};
['infobox'] = {
['ativar'] = true;
['visivel'] = true;
['notificação'] = {
function( player, dados )
return exports['[HS]Notify_System']:notify( player, 'O(a) jogador '..dados.name..'('..dados.id..') Ativou o produto '..dados.product..' com sucesso', 'info' )
end,
};
};
};
['tempo:entrega'] = {
['tempo'] = 10; -- Tempo que ira ficar na tela do player
['formato'] = 1000; -- Formato de tempo ( 1000 = segundos, 60000 = minutos, 3600000 = Hora )
['repetições'] = 0; -- Verificação de quantas vezes ira ficar rodando o sistema, deixe em 0 para sempre verificar.
};
['development'] = { -- Verificação para ficar testando comando deixe em false e ele não ira atualizar no site que foi entregue.
['update:status'] = true; -- Não mexer com o servidor aberto pois ira ficar liberando o produto a todo momento sem atualizar no site que já foi entregue.
};
};
}


findUserById = function( id )
v = false
for i, player in ipairs( getElementsByType( 'player' ) ) do
local idAlvo = getElementData( player, 'ID' )
if idAlvo and tonumber( idAlvo ) == id then
v = player
break
end
end
return v
end,

InfoBox = {
displaySeconds = 3000, -- Tempo de notificação, caso não for usar info-box não mecha.
-- Função Util para obter o elemento do player pelo ID:

-- Aqui fica sua função de info-box que será chamada quando nescessário pelo nosso plugin!
execute = function ( element, text, type )
exports['[HS]Notify_System']:notify( element, text, type )
end,

-- Define aqui os status de sua infobox, não mecha no primeiro valor, apenas no segundo.
status = {
['success'] = 'success',
['info'] = 'info',
['warning'] = 'warning',
['error'] = 'error'
}
}
}
getPlayerID = function( id )
for _, player in ipairs( getElementsByType( 'player' ) ) do
local data_id = getElementData( player, config['warp:delivery']['data:id'] ) or 0
if tonumber( data_id ) == tonumber( id ) then
return player
end
end
return false
end
21 changes: 9 additions & 12 deletions meta.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
<meta>
<info author = 'Warp Store' type = 'script' name = 'warpstore_integration' version = '2.0' />

<info author = 'Warp Store' type = 'script' name = 'warpstore-integration-mtasa' version = '1.0'/>

<script src = 'config.lua' type = 'shared' cache = 'false' fileType = 'script'/>
<script src = 'commands.lua' type = 'shared' cache = 'false' fileType = 'script'/>

<script src = 'src/server.luac' cache = 'false' type = 'server' fileType = 'script'/>
<script src = 'src/client.luac' cache = 'false' type = 'client' fileType = 'script'/>

<file src = 'src/assets/index.html' fileType = 'file'/>
<file src = 'src/assets/images/background.png' fileType = 'file'/>

<min_mta_version client = '1.5.9' server = '1.5.9'/>
<script src = 'config.lua' type = 'shared' cache = 'false' />
<script src = 'commands.lua' type = 'shared' cache = 'false' />
<script src = 'src/assets/source/client.lua' type = 'client' cache = 'false' />
<script src = 'src/assets/source/server.lua' type = 'server' />

<file src = 'src/assets/html/index.html' />
<file src = 'src/assets/fonts/roboto-bold.ttf' cache = 'false' />

<min_mta_version client = '1.5.9' server = '1.5.9' />
</meta>
Binary file added src/assets/fonts/roboto-bold.ttf
Binary file not shown.
Loading

0 comments on commit e82b86a

Please sign in to comment.