• Informações:
Essa modificação faz com que as lojas sejam salvas no servidor, facilitando a edição ou implementação de certos tipos de eventos em seu jogo.
• Logs:
07/09/15 - Script criado e postado.
• Tutorial:
1) Vá na pasta do servidor e abra o arquivo functions dentro da pasta scripts, abaixo de:
- Código:
--------------------------------
-- Drop (37) --
--------------------------------
elseif cmd == "<37a>" then
do
data = string.gsub(data, " ", "")
mdrop_id = string.gsub(data, "<37a>", "")
end
elseif cmd == "<37>" then
do
NP():SendToUser(mdrop_id, data)
end
- Código:
--------------------------------
-- Loja (l01) --
--------------------------------
elseif cmd == "<l01>" then
do
data = string.gsub(data, "<l01>", "")
data = string.gsub(data, "</l01>", "")
loja = data
file = io.open("Lojas\\"..loja..".dat", "a+")
loja_string = file:read("*all")
loja_string = string.gsub(loja_string, "\n", "/n/")
NP():SendToUser(user.id,"<l01>"..loja_string.."</l01>")
file:close()
end
2) Agora ainda na pasta do servidor, crie uma pasta chamada Lojas, e dentro dela crie um arquivo para cada loja, por exemplo, vou criar o 1.dat que será a primeira loja, e dentro dele colocarei: 1_3]1,1], ]2,1]]
Sendo que:
1 = Ordem da loja, use o mesmo nome do arquivo (OBS.: Tem que ser número)
1,1 e 2,1 = Item que será vendido, o numero antes da "," representa o tipo do item (0 = item; 1 = armas; 2 = armaduras) e o número depois da "," é o ID do item, então no caso eu estou vendendo uma arma de ID 1 e uma armadura de ID 1.
3) Agora nos scripts do jogo, vá no [NET] Network, abaixo de:
- Código:
# Recebimento do drop
when /<37>(.*)<\/37>/
return true if $1.strip == ""
for line in $1.split("/n/")
next if line.strip == ""
arg = line.split(">")
$game_drops.add(arg[0].to_i, arg[1].to_i, arg[2].to_i, arg[3].to_i, arg[4].to_i, arg[5].to_i, arg[6].to_i)
end
return true
- Código:
# Recebimento da loja
# By: Darkmel
when /<l01>(.*)<\/l01>/
n = $1.split("_")
arrg = n[1]
n = eval(n[0])
$loja_servidor = [] if $loja_servidor.nil?
$loja_servidor[n[0]] = [] if $loja_servidor[n[0]].nil?
$loja_servidor[n[0]] = eval(arrg)
return true
4) Crie um script acima do main e coloque isso:
- Código:
#==============================================================================
# ** Carregar loja do servidor
#------------------------------------------------------------------------------
# By Darkmel
#==============================================================================
class CarregarLoja
def self.iniciar(id)
Network.socket.send("<l01>#{id}</l01>\n")
if !$loja_servidor[id].nil?
$game_temp.battle_abort = true
$game_temp.shop_calling = true
$game_temp.shop_goods = $loja_servidor[id]
end
end
end
5) Para abrir uma loja é simples, basta chamar um script no npc com isso: CarregarLoja.iniciar(1) sendo que onde está verde é a loja que deseja chamar.
• Créditos:
Darkmel - Por criar e postar o sistema
Da rep+, não custa nada ajudar quem ajuda :)