Autor Tema: JewelBank - Script LUA - X-Team  (Leído 2656 veces)

Desconectado Guga

  • *
  • *


  • 291

    30

    1459
  • br
    • +55 (47) 99938-6055 +55 (47) 99938-6055
Segue Script de Jewel Bank, feito por mim, em LUA, para servidores X-Team. Foi testado inicialmente em Season 2, mas deve funcionar em todas.

Read-me.txt
Código
Modo de utilização
- /bank -> Mostra o extrato do seu banco de jóias (quantidade de cada jóia)
- /dep <joia> <quantidade> - Faz o depósito de jóias no banco
- /saq <joia> <quantidade> - Faz o saque de jóias do banco
<joia>: bless (Jewel of Bless) | soul (Jewel of Soul) | chaos (Jewel of Chaos)
life (Jewel of Life) | creation (Jewel of  Creation) | guardian (Jewel of  Guardian)
harmony (Jewel of Harmony) | gemstone (Gemstone) | hrefin (High Refining)
lrefin (Lower Refining)
-- Exemplo: depositar 30 Bless: /dep bless 30
-- Exemplo: sacar 30 Lower Refining: /saq lrefin 30

[Instalação]
1º - Adicione no ScripMain.lua
require("ScriptJewelBank")

2º - Adicione na função OnCommandManager
if code == 188 then
BankView(aIndex,arg)
return 1
end
if code == 189 then
BankSaq(aIndex,arg)
return 1
end
if code == 190 then
BankDep(aIndex,arg)
return 1
end

3º - Adicione no CommandManager.txt
188   "/bank"
189   "/saq"
190   "/dep"

4º - Rode o arquivo JewelBank.sql no SQL Server para criar as colunas necessárias

5º - Copie os arquivos de dentro da pasta Script e cole na pasta Data/Script do seu MuServer

O script funciona apenas para jóias avulsas, ou seja, packs de Bless ou Soul não são colocados no banco.
Quando tiver um pack de Jóia e quiser por no banco, basta desfazer o pack e adicionar.
Script testado na Season 2, caso queira adicionar jóias custons, é só seguir o mesmo padrão do Script, ou manda aqui o nome da Joia com o Index que eu adiciono.
Em breve estarei adicionando a função para funcionar com packs e atualizando o tópico.

Faça bom proveito, diga não ao monopólio.

Download:
Configurações para servidores e Client do seu servidor!

 - Louis Emulator, X-Team Dev, SSeMU, entre outros.
 - Português e Español
 - Melhores preços do mercado

Clique aqui e entre em contato

xxotavioxx

Boa noite!!

Parabens pelo compartilhamento, estava em busca desde script.

Gostaria de entender melhor como posso adicionar a require, eu não entendi onde coloco?

Desconectado lorranmota

  • *


  • 46

    6

    21
  • br
Boa noite!!

Parabens pelo compartilhamento, estava em busca desde script.

Gostaria de entender melhor como posso adicionar a require, eu não entendi onde coloco?

[Instalação]
1º - Adicione no ScripMain.lua
   require("ScriptJewelBank")

xxotavioxx

Entao, dentro do scriptlua esta tudo assim...

function OnReadScript()
end
function OnShutScript()
end

varias linhas, no caso eu vou criar uma igual a essas mas com a orientação no Read-me

Gracias:


Desconectado Guga

  • *
  • *


  • 291

    30

    1459
  • br
    • +55 (47) 99938-6055 +55 (47) 99938-6055
Entao, dentro do scriptlua esta tudo assim...

function OnReadScript()
end
function OnShutScript()
end

varias linhas, no caso eu vou criar uma igual a essas mas com a orientação no Read-me
Na primeira linha do arquivo ScripMain.lua, escreva
require("ScriptJewelBank")

O restante é só seguir o tutorial.
Configurações para servidores e Client do seu servidor!

 - Louis Emulator, X-Team Dev, SSeMU, entre outros.
 - Português e Español
 - Melhores preços do mercado

Clique aqui e entre em contato

Gracias:

xxotavioxx

xxotavioxx

Opa obrigado pela resposta!

Mas tive esse erro ao iniciar o script

10:19:27 [ScriptLoader] Error in Lua-file. ..\Data\\Script\JewelBank\ScriptBankDep.lua:1: attempt to call global 'BridgeFunctionAttach' (a nil value)
10:19:27 [ServerInfo] Script reloaded successfully
10:22:03 [ScriptLoader] Error in Lua-file. ..\Data\\Script\JewelBank\ScriptBankDep.lua:1: attempt to call global 'BridgeFunctionAttach' (a nil value)
10:22:03 [ServerInfo] Script reloaded successfully

« Última Modificación: Febrero 22, 2022, 10:28:01 am por xxotavioxx »

Desconectado Guga

  • *
  • *


  • 291

    30

    1459
  • br
    • +55 (47) 99938-6055 +55 (47) 99938-6055
Opa obrigado pela resposta!

Mas tive esse erro ao iniciar o script

10:19:27 [ScriptLoader] Error in Lua-file. ..\Data\\Script\JewelBank\ScriptBankDep.lua:1: attempt to call global 'BridgeFunctionAttach' (a nil value)
10:19:27 [ServerInfo] Script reloaded successfully
10:22:03 [ScriptLoader] Error in Lua-file. ..\Data\\Script\JewelBank\ScriptBankDep.lua:1: attempt to call global 'BridgeFunctionAttach' (a nil value)
10:22:03 [ServerInfo] Script reloaded successfully
Qual a versão do seu emulador? Tenta apagar as duas primeiras linhas dos arquivos que ficam dentro da pasta JewelBank, as que começam com BridgeFunctionAttach e faça o teste
Configurações para servidores e Client do seu servidor!

 - Louis Emulator, X-Team Dev, SSeMU, entre outros.
 - Português e Español
 - Melhores preços do mercado

Clique aqui e entre em contato

Gracias:

xxotavioxx

xxotavioxx

Sou novato nesse mundo de emulador, estou vendo aqui, SSeMu.


O erro sumiu, mas nao funcionam os comandos
« Última Modificación: Febrero 22, 2022, 10:43:52 am por xxotavioxx »

Desconectado Guga

  • *
  • *


  • 291

    30

    1459
  • br
    • +55 (47) 99938-6055 +55 (47) 99938-6055
Sou novato nesse mundo de emulador, estou vendo aqui, SSeMu.

O erro sumiu, mas nao funcionam os comandos
Ah sim, esse Script foi feito pra X-Team.
ssEmu tem umas funções diferentes, se você me mandar o arquivo de documentação dos Scripts do SsEmu, posso alterar para o Script funcionar em ambos os emuladores.
Configurações para servidores e Client do seu servidor!

 - Louis Emulator, X-Team Dev, SSeMU, entre outros.
 - Português e Español
 - Melhores preços do mercado

Clique aqui e entre em contato

Gracias:

xxotavioxx, luanalves, carioca

Desconectado PowerNet

  • *


  • 4

    2

    3
  • il
hi you have ssemu S3 tai ?

Desconectado wellwisher22

  • *


  • 252

    75

    1196
  • br
@Guga você trabalha com lua? Pode me ajudar com um battleroyale da xteam pra converter pra muemu?

Desconectado adrianjrb

  • *


  • 3

    1

    0
  • ve
Segue Script de Jewel Bank, feito por mim, em LUA, para servidores X-Team. Foi testado inicialmente em Season 2, mas deve funcionar em todas.

Read-me.txt
Código
Modo de utilização
- /bank -> Mostra o extrato do seu banco de jóias (quantidade de cada jóia)
- /dep <joia> <quantidade> - Faz o depósito de jóias no banco
- /saq <joia> <quantidade> - Faz o saque de jóias do banco
<joia>: bless (Jewel of Bless) | soul (Jewel of Soul) | chaos (Jewel of Chaos)
life (Jewel of Life) | creation (Jewel of  Creation) | guardian (Jewel of  Guardian)
harmony (Jewel of Harmony) | gemstone (Gemstone) | hrefin (High Refining)
lrefin (Lower Refining)
-- Exemplo: depositar 30 Bless: /dep bless 30
-- Exemplo: sacar 30 Lower Refining: /saq lrefin 30

[Instalação]
1º - Adicione no ScripMain.lua
require("ScriptJewelBank")

2º - Adicione na função OnCommandManager
if code == 188 then
BankView(aIndex,arg)
return 1
end
if code == 189 then
BankSaq(aIndex,arg)
return 1
end
if code == 190 then
BankDep(aIndex,arg)
return 1
end

3º - Adicione no CommandManager.txt
188   "/bank"
189   "/saq"
190   "/dep"

4º - Rode o arquivo JewelBank.sql no SQL Server para criar as colunas necessárias

5º - Copie os arquivos de dentro da pasta Script e cole na pasta Data/Script do seu MuServer

O script funciona apenas para jóias avulsas, ou seja, packs de Bless ou Soul não são colocados no banco.
Quando tiver um pack de Jóia e quiser por no banco, basta desfazer o pack e adicionar.
Script testado na Season 2, caso queira adicionar jóias custons, é só seguir o mesmo padrão do Script, ou manda aqui o nome da Joia com o Index que eu adiciono.
Em breve estarei adicionando a função para funcionar com packs e atualizando o tópico.

Faça bom proveito, diga não ao monopólio.


Olá, você poderia me ajudar?, Estou usando esse código, adicionei apenas as linhas de comando e conexão ao SQL:

Código
BridgeFunctionAttach("OnReadScript","ScriptBankDep_OnReadScript")
BridgeFunctionAttach("OnCommandManager","ScripBankDep_OnCommandManager")

function ScriptBankDep_OnReadScript()

if(not SQLCheck()) then

SQLConnect("MuOnline_EX501","sa","1234567890")

end

end

function ScripBankDep_OnCommandManager(aIndex,code,arg)

if(code == 89) then

BankDep(aIndex,arg)

return 1

end

return 0
end

function BankDep(aIndex,arg)
local User = GetObjectAccount(aIndex)
SQLQuery("SELECT TOP (1) memb___id, BSoul, BBless, BLife, BChaos, BCreation, BGuardian, BHarmony, BRefin, BLowRefin, BGemstone FROM MEMB_INFO WHERE memb___id='"..User.."' order by memb___id")
SQLFetch()
SQLClose()
local joia = CommandGetArgString(arg,0)
local quantidade = CommandGetArgNumber(arg,1)
if quantidade <= 0 then
NoticeSend(aIndex,1,"O número de jóias a ser depositado deve ser maior do que 0")
else
if joia == "bless" then
local blessinv = InventoryGetItemCount(aIndex,7181,-1)
if quantidade <= blessinv then
InventoryDelItemCount(aIndex,7181,-1,quantidade)
SQLQuery("Update MEMB_INFO set BBless=BBless+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Bless ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Bless para depositar")
end
elseif joia == "soul" then
local soulinv = InventoryGetItemCount(aIndex,7182,-1)
if quantidade <= soulinv then
InventoryDelItemCount(aIndex,7182,-1,quantidade)
SQLQuery("Update MEMB_INFO set BSoul=BSoul+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Soul ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Soul para depositar")
end
elseif joia == "life" then
local lifeinv = InventoryGetItemCount(aIndex,7184,-1)
if quantidade <= lifeinv then
InventoryDelItemCount(aIndex,7184,-1,quantidade)
SQLQuery("Update MEMB_INFO set BLife=BLife+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Life ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Life para depositar")
end
elseif joia == "chaos" then
local chaosinv = InventoryGetItemCount(aIndex,6159,-1)
if quantidade <= chaosinv then
InventoryDelItemCount(aIndex,6159,-1,quantidade)
SQLQuery("Update MEMB_INFO set BChaos=BChaos+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Chaos ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Chaos para depositar")
end
elseif joia == "creation" then
local creationinv = InventoryGetItemCount(aIndex,7190,-1)
if quantidade <= creationinv then
InventoryDelItemCount(aIndex,7190,-1,quantidade)
SQLQuery("Update MEMB_INFO set BCreation=BCreation+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Creation ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Creation para depositar")
end
elseif joia == "guardian" then
local guardianinv = InventoryGetItemCount(aIndex,7199,-1)
if quantidade <= guardianinv then
InventoryDelItemCount(aIndex,7199,-1,quantidade)
SQLQuery("Update MEMB_INFO set BGuardian=BGuardian+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Guardian ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Guardian para depositar")
end
elseif joia == "harmony" then
local harmonyinv = InventoryGetItemCount(aIndex,7210,-1)
if quantidade <= harmonyinv then
InventoryDelItemCount(aIndex,7210,-1,quantidade)
SQLQuery("Update MEMB_INFO set BHarmony=BHarmony+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Harmony ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Harmony para depositar")
end
elseif joia == "hrefin" then
local hrefininv = InventoryGetItemCount(aIndex,7212,-1)
if quantidade <= hrefininv then
InventoryDelItemCount(aIndex,7212,-1,quantidade)
SQLQuery("Update MEMB_INFO set BRefin=BRefin+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." High Refin ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de High Refin para depositar")
end
elseif joia == "lrefin" then
local lrefininv = InventoryGetItemCount(aIndex,7211,-1)
if quantidade <= lrefininv then
InventoryDelItemCount(aIndex,7211,-1,quantidade)
SQLQuery("Update MEMB_INFO set BLowRefin=BLowRefin+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Low Refin ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Low Refin para depositar")
end
elseif joia == "gemstone" then
local gemnsinv = InventoryGetItemCount(aIndex,7209,-1)
if quantidade <= gemnsinv then
InventoryDelItemCount(aIndex,7209,-1,quantidade)
SQLQuery("Update MEMB_INFO set BGemstone=BGemstone+"..quantidade.." where memb___id='"..User.."'")
NoticeSend(aIndex,1,string.format("Você adicionou "..quantidade.." Gemstone ao seu banco!"))
else
NoticeSend(aIndex,1,"Você não tem essa quantidade de Gemstone para depositar")
end
else
NoticeSend(aIndex,1,"Você deve escolher uma jóia válida.")
end
end
end

O status do banco funciona bem para mim, mas no caso de depósito de joias sempre recebo esta mensagem:

Código
	if quantidade <= 0 then
NoticeSend(aIndex,1,"O número de jóias a ser depositado deve ser maior do que 0")

Também deixarei aqui o código ScriptCore.lua para que vocês possam ver as opções, grato pela ajuda

Código
require("System\\ScriptDefine")
require("System\\ScriptReader")


BridgeFunctionTable = {}


function BridgeFunctionAttach(BridgeName,FunctionName)

if BridgeName == "OnReadScript" then

if BridgeFunctionTable[1] == nil then BridgeFunctionTable[1] = {} end
table.insert(BridgeFunctionTable[1],{Function=FunctionName})

elseif BridgeName == "OnShutScript" then

if BridgeFunctionTable[2] == nil then BridgeFunctionTable[2] = {} end
table.insert(BridgeFunctionTable[2],{Function=FunctionName})

elseif BridgeName == "OnTimerThread" then

if BridgeFunctionTable[3] == nil then BridgeFunctionTable[3] = {} end
table.insert(BridgeFunctionTable[3],{Function=FunctionName})

elseif BridgeName == "OnCommandManager" then

if BridgeFunctionTable[4] == nil then BridgeFunctionTable[4] = {} end
table.insert(BridgeFunctionTable[4],{Function=FunctionName})

elseif BridgeName == "OnCharacterEntry" then

if BridgeFunctionTable[5] == nil then BridgeFunctionTable[5] = {} end
table.insert(BridgeFunctionTable[5],{Function=FunctionName})

elseif BridgeName == "OnCharacterClose" then

if BridgeFunctionTable[6] == nil then BridgeFunctionTable[6] = {} end
table.insert(BridgeFunctionTable[6],{Function=FunctionName})

elseif BridgeName == "OnNpcTalk" then

if BridgeFunctionTable[7] == nil then BridgeFunctionTable[7] = {} end
table.insert(BridgeFunctionTable[7],{Function=FunctionName})

elseif BridgeName == "OnMonsterDie" then

if BridgeFunctionTable[8] == nil then BridgeFunctionTable[8] = {} end
table.insert(BridgeFunctionTable[8],{Function=FunctionName})

elseif BridgeName == "OnUserDie" then

if BridgeFunctionTable[9] == nil then BridgeFunctionTable[9] = {} end
table.insert(BridgeFunctionTable[9],{Function=FunctionName})

elseif BridgeName == "OnUserRespawn" then

if BridgeFunctionTable[10] == nil then BridgeFunctionTable[10] = {} end
table.insert(BridgeFunctionTable[10],{Function=FunctionName})

elseif BridgeName == "OnCheckUserTarget" then

if BridgeFunctionTable[11] == nil then BridgeFunctionTable[11] = {} end
table.insert(BridgeFunctionTable[11],{Function=FunctionName})

elseif BridgeName == "OnCheckUserKiller" then

if BridgeFunctionTable[12] == nil then BridgeFunctionTable[12] = {} end
table.insert(BridgeFunctionTable[12],{Function=FunctionName})

elseif BridgeName == "OnItemPick" then

if BridgeFunctionTable[13] == nil then BridgeFunctionTable[13] = {} end
table.insert(BridgeFunctionTable[13],{Function=FunctionName})

elseif BridgeName == "OnItemDrop" then

if BridgeFunctionTable[14] == nil then BridgeFunctionTable[14] = {} end
table.insert(BridgeFunctionTable[14],{Function=FunctionName})

elseif BridgeName == "OnPacketRecv" then

if BridgeFunctionTable[15] == nil then BridgeFunctionTable[15] = {} end
table.insert(BridgeFunctionTable[15],{Function=FunctionName})

elseif BridgeName == "OnSQLAsyncResult" then

if BridgeFunctionTable[16] == nil then BridgeFunctionTable[16] = {} end
table.insert(BridgeFunctionTable[16],{Function=FunctionName})

end

end


function BridgeFunction_OnReadScript()

if BridgeFunctionTable[1] ~= nil then

for n=1,#BridgeFunctionTable[1],1 do

_G[BridgeFunctionTable[1][n].Function]()

end

end

end


function BridgeFunction_OnShutScript()

if BridgeFunctionTable[2] ~= nil then

for n=1,#BridgeFunctionTable[2],1 do

_G[BridgeFunctionTable[2][n].Function]()

end

end

end


function BridgeFunction_OnTimerThread()

if BridgeFunctionTable[3] ~= nil then

for n=1,#BridgeFunctionTable[3],1 do

_G[BridgeFunctionTable[3][n].Function]()

end

end

end


function BridgeFunction_OnCommandManager(aIndex,code,arg)

if BridgeFunctionTable[4] ~= nil then

for n=1,#BridgeFunctionTable[4],1 do

local ret = _G[BridgeFunctionTable[4][n].Function](aIndex,code,arg)

if ret ~= 0 then return 1 end

end

end

return 0

end


function BridgeFunction_OnCharacterEntry(aIndex)

if BridgeFunctionTable[5] ~= nil then

for n=1,#BridgeFunctionTable[5],1 do

_G[BridgeFunctionTable[5][n].Function](aIndex)

end

end

end


function BridgeFunction_OnCharacterClose(aIndex)

if BridgeFunctionTable[6] ~= nil then

for n=1,#BridgeFunctionTable[6],1 do

_G[BridgeFunctionTable[6][n].Function](aIndex)

end

end

end


function BridgeFunction_OnNpcTalk(aIndex,bIndex)

if BridgeFunctionTable[7] ~= nil then

for n=1,#BridgeFunctionTable[7],1 do

local ret = _G[BridgeFunctionTable[7][n].Function](aIndex,bIndex)

if ret ~= 0 then return 1 end

end

end

return 0

end


function BridgeFunction_OnMonsterDie(aIndex,bIndex)

if BridgeFunctionTable[8] ~= nil then

for n=1,#BridgeFunctionTable[8],1 do

_G[BridgeFunctionTable[8][n].Function](aIndex,bIndex)

end

end

end


function BridgeFunction_OnUserDie(aIndex,bIndex)

if BridgeFunctionTable[9] ~= nil then

for n=1,#BridgeFunctionTable[9],1 do

_G[BridgeFunctionTable[9][n].Function](aIndex,bIndex)

end

end

end


function BridgeFunction_OnUserRespawn(aIndex,KillerType)

if BridgeFunctionTable[10] ~= nil then

for n=1,#BridgeFunctionTable[10],1 do

_G[BridgeFunctionTable[10][n].Function](aIndex,KillerType)

end

end

end


function BridgeFunction_OnCheckUserTarget(aIndex,bIndex)

if BridgeFunctionTable[11] ~= nil then

for n=1,#BridgeFunctionTable[11],1 do

local ret = _G[BridgeFunctionTable[11][n].Function](aIndex,bIndex)

if ret == 0 then return 0 end

end

end

return 1

end


function BridgeFunction_OnCheckUserKiller(aIndex,bIndex)

if BridgeFunctionTable[12] ~= nil then

for n=1,#BridgeFunctionTable[12],1 do

local ret = _G[BridgeFunctionTable[12][n].Function](aIndex,bIndex)

if ret == 0 then return 0 end

end

end

return 1

end


function BridgeFunction_OnItemPick(aIndex,index,ItemTable)

if BridgeFunctionTable[13] ~= nil then

for n=1,#BridgeFunctionTable[13],1 do

local ret = _G[BridgeFunctionTable[13][n].Function](aIndex,index,ItemTable)

if ret == 0 then return 0 end

end

end

return 1

end


function BridgeFunction_OnItemDrop(aIndex,index,x,y,ItemTable)

if BridgeFunctionTable[14] ~= nil then

for n=1,#BridgeFunctionTable[14],1 do

local ret = _G[BridgeFunctionTable[14][n].Function](aIndex,index,x,y,ItemTable)

if ret == 0 then return 0 end

end

end

return 1

end


function BridgeFunction_OnPacketRecv(aIndex,buff,size)

if BridgeFunctionTable[15] ~= nil then

for n=1,#BridgeFunctionTable[15],1 do

_G[BridgeFunctionTable[15][n].Function](aIndex,buff,size)

end

end

end


function BridgeFunction_OnSQLAsyncResult(label,param,result)

if BridgeFunctionTable[16] ~= nil then

for n=1,#BridgeFunctionTable[16],1 do

local ret = _G[BridgeFunctionTable[16][n].Function](label,param,result)

if ret == 1 then return 0 end

if ret == 2 then return 1 end

end

end

return 0

end



 

.