Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Fábrica de scripts para netplays
+4
Valentine
GallighanMaker
Manticora
Paulo Soreto
8 participantes
Página 2 de 4
Página 2 de 4 • 1, 2, 3, 4
Re: Fábrica de scripts para netplays
Ao fazer algum sistema que adicione ou remova item/arma/armadura, use a função player:gainitem(itemid, kind, n) e/ou player:loseitem(itemid, kind, n) do servidor para que o item seja adicionado/removido diretamente neste (no servidor). Tais métodos já enviam o item/arma/armadura a ser adicionado/removido no inventário do cliente.
Não recomendo usar diretamente os métodos gain_item e lose_item do cliente, pois, por questões de segurança, futuramente não será possível usar indistintamente tais funções. O objetivo é impedir que algum hacker desencripte o projeto e fique adicionando os itens que quiser no inventário do próprio personagem.
Não recomendo usar diretamente os métodos gain_item e lose_item do cliente, pois, por questões de segurança, futuramente não será possível usar indistintamente tais funções. O objetivo é impedir que algum hacker desencripte o projeto e fique adicionando os itens que quiser no inventário do próprio personagem.
Última edição por Valentine em Ter Ago 29, 2017 7:55 pm, editado 1 vez(es)
Re: Fábrica de scripts para netplays
Neutralizar o F12 e o Alt+F4 ja postado aqui, no sistema de resolução do Diamond depois q vc coloca Fullscreen com Alt+F4 buga o Visual, então a janela de opções com a Resolução ideal é uma ideia.
_________________
Paga um café? Patreon
Komuro Takashi- Colaborador
- Mensagens : 1047
Créditos : 130
Re: Fábrica de scripts para netplays
Você poderia fazer um script de movimento de pixel por pixel e ataques nesse estilo com mouse. >
http://store.steampowered.com/app/312290/Hero_Siege__The_Karp_of_Doom_Digital_Collectors_Edition/
http://store.steampowered.com/app/312290/Hero_Siege__The_Karp_of_Doom_Digital_Collectors_Edition/
Re: Fábrica de scripts para netplays
Sistema de Forja concluído.
https://www.aldeiarpg.com/t13521-lm-forge
@xSonart :
Passo por pixel infelizmente não poderemos fazer, não no momento pelo menos, tanto o ABS quanto o Network do NPD ainda estão sendo revistos pelo Val, então modificações desse nível, que mexem com quase toda estrutura de mapas e combate é um pouco complicado no momento.
Por outro lado ataque pelo mouse é viável creio eu, irei estudar, mas possivelmente o Soreto ira acabar criando antes de mim, se ele ver isto antes de mim.
--
@Valentine :
Estou ciente disto, entretanto modificações de nível de servidor estão fora da minha praia por hora, quero evitar modificar muito o servidor e coisas que trabalham com conexão devido ao fato de tu ainda estar revisando o mesmo.
https://www.aldeiarpg.com/t13521-lm-forge
@xSonart :
Passo por pixel infelizmente não poderemos fazer, não no momento pelo menos, tanto o ABS quanto o Network do NPD ainda estão sendo revistos pelo Val, então modificações desse nível, que mexem com quase toda estrutura de mapas e combate é um pouco complicado no momento.
Por outro lado ataque pelo mouse é viável creio eu, irei estudar, mas possivelmente o Soreto ira acabar criando antes de mim, se ele ver isto antes de mim.
--
@Valentine :
Estou ciente disto, entretanto modificações de nível de servidor estão fora da minha praia por hora, quero evitar modificar muito o servidor e coisas que trabalham com conexão devido ao fato de tu ainda estar revisando o mesmo.
LeonM²- Lenda
- Mensagens : 1802
Créditos : 153
Re: Fábrica de scripts para netplays
Entendo, acho que seria bem interessante trabalhar nisso fazer à engine mais mecânica e menos robótica, se ficar que nem ali o vídeo que mandei a forma de ataque com raio de proximidade e etc... ia ser um deferencial top <3LeonMM escreveu:Sistema de Forja concluído.
https://www.aldeiarpg.com/t13521-lm-forge
@xSonart :
Passo por pixel infelizmente não poderemos fazer, não no momento pelo menos, tanto o ABS quanto o Network do NPD ainda estão sendo revistos pelo Val, então modificações desse nível, que mexem com quase toda estrutura de mapas e combate é um pouco complicado no momento.
Por outro lado ataque pelo mouse é viável creio eu, irei estudar, mas possivelmente o Soreto ira acabar criando antes de mim, se ele ver isto antes de mim.
--
@Valentine :
Estou ciente disto, entretanto modificações de nível de servidor estão fora da minha praia por hora, quero evitar modificar muito o servidor e coisas que trabalham com conexão devido ao fato de tu ainda estar revisando o mesmo.
Re: Fábrica de scripts para netplays
Um sistema que seria bom !
sistema de amigos
sistema de grupo
sistema de deposito
sistema de opção de volta a tela de personagem
sistema de amigos
sistema de grupo
sistema de deposito
sistema de opção de volta a tela de personagem
Última edição por quimera555 em Seg Jan 01, 2018 7:20 pm, editado 1 vez(es)
_________________
Manticora- Membro Ativo
- Mensagens : 265
Créditos : 62
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Re: Fábrica de scripts para netplays
Sistema de Depósito: No caso é um sistema de banco certo? eu estou estudando como fazer ele desde segunda.quimera555 escreveu:Um sistema que seria bom !
sistema de amigos
sistema de grupo
sistema de deposito
[b]sistema de opção de volta a tela de personagem[/b]
Sistema de Amigos: Olha não vejo porque não fazer, acho que está aceito, entretanto ninguem ira fazer ainda, já estamos atarefados com outros sistemas.
Sistema de Grupo: se refere a Party ou Guild? em todo caso iremos avaliar sobre isso.
Retorno a tela de personagens: iremos avaliar sobre isso.
LeonM²- Lenda
- Mensagens : 1802
Créditos : 153
Manticora- Membro Ativo
- Mensagens : 265
Créditos : 62
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Re: Fábrica de scripts para netplays
Pedido do @GallighanMaker:
Pode ser que eu tenha esquecido alguma coisa no tutorial, não sou muito bom isso mas abaixo tem o link do projeto só com esse sistema.
Download: MEGA
- Spoiler:
Server:
1º - Abra o arquivo constants.lua e no final dele a- Código:
PACKETRESPAWNINIT = '<80>'
PACKETNEEDRESPAWN = '<81>'
PACKETNEEDREVIVE = '<82>'
2º - Abra o arquivo player.lua, substitua a função update por esta:- Código:
function Player:update()
if self.charnum > 0 then
-- Se morreu
if self.isdead then
if os.clock() - self.respawntime >= PLAYERRESPAWN then
self:gameover()
end
else
self:autorecovery()
end
elseif not self.handshake and os.time() >= self.handshaketime + HANDSHAKETIME then
self.socket:close()
Server:disconnectplayer(self.index)
end
end
2º - No mesmo arquivo, procure por: function Player:gameover()
3º - Abaixo disso adicione: self.isdead = false
4º - Adicione o seguinte código ao final do arquivo senddata.lua:- Código:
--
-- sendrespawn
--
-- Envia um sinal para que o jogador seja revivido.
--
-- @param index índice do jogador
-- @param data dados
--
function TcpServer:sendrespawninit(index)
self:sendtoplayer(index, PACKETRESPAWNINIT)
end
4º - Abra o arquivo handledata.lua e procure por: elseif header == PACKETVARIABLE
5º - Abaixo dessa linha adicione:- Código:
elseif header == PACKETNEEDRESPAWN then self:handleneedrespawn(index, player)
elseif header == PACKETNEEDREVIVE then self:handleneedrevive(index, player)
6º - Ao final do mesmo arquivo adicione:- Código:
--
-- handleneedrespawn
--
-- Processa o pedido de respawn.
--
-- @param index índice do jogador
-- @param player jogador
--
function TcpServer:handleneedrespawn(index, player)
if player.isdead then
player:gameover()
end
end
--
-- handleneedrevive
--
-- @param index índice do jogador
-- @param player jogador
--
function TcpServer:handleneedrevive(index, player)
player.isdead = false
Server:transferplayer(player, player.mapid, player.x, player.y, 2)
player:updatevitals(player.maxhp, player.maxsp)
end
7º - No mesmo arquivo procure por: player.hp = player.hp - damage
8º - Abaixo disso adicione:- Código:
if player.hp <= 0 and player.isdead == false then
player.respawntime = os.clock()
player.isdead = true
self:sendrespawninit(index)
end
Client
1º - No script [ND] Network, procure por: PACKET_ADMIN_COMMAND = '<39>'
2º - Abaixo disso adicione:
PACKET_RESPAWN_INIT = '<80>'
PACKET_NEED_RESPAWN = '<81>'
PACKET_NEED_REVIVE = '<82>'
3º - No script [ND] Handle_Data, procure por: when PACKET_ADMIN_COMMAND; handle_admin_command(data)
4º - Abaixo dele adicione: when PACKET_RESPAWN_INIT; handle_respawn_init
5º - No mesmo script, antes do último end adicione:- Código:
#--------------------------------------------------------------------------
# * Inicia o procedimento de respawn
# data : dados
#--------------------------------------------------------------------------
def handle_respawn_init
return unless $scene.is_a?(Scene_Map)
$windows[:respawn].show
end
6º - No script [ND] Send_Data, antes do último end adicione:- Código:
#--------------------------------------------------------------------------
# * Envia um pedido de respawn.
#--------------------------------------------------------------------------
def need_respawn
@socket.send("#{PACKET_NEED_RESPAWN}\n")
end
#--------------------------------------------------------------------------
# * Envia um pedido de ressurreição.
#--------------------------------------------------------------------------
def need_revive
@socket.send("#{PACKET_NEED_REVIVE}\n")
end
7º - Insira um novo script abaixo do script [ND] Window_Trade com o nome de [ND] Window_Respawn- Código:
#==============================================================================
# ** TinyButton
#------------------------------------------------------------------------------
# Autor Paulo S.
# Versão 1.0
# Data 29/08/2017
#==============================================================================
class TinyButton < Sprite
def initialize(container, x, y, w, text, align=1)
super nil
@container = container
self.x = container.x + x
self.y = container.y + y
@width = w
@text = text
@align = align
self.z = container.z + 1
self.bitmap = Bitmap.new(w, 20)
self.visible = container.visible
self.bitmap.font.size = 14
@events = []
refresh
end
#--------------------------------------------------------------------------
# * Adiciona um evento de click.
#--------------------------------------------------------------------------
def on_click(&b)
@events << b
end
#--------------------------------------------------------------------------
# * Desenha o conteúdo.
#--------------------------------------------------------------------------
def refresh
self.bitmap.clear
self.bitmap.fill_rect(1, 0, @width - 2, 20, Configs::WIDGET_COLORS[0])
self.bitmap.fill_rect(1, 1, @width - 2, 8, Configs::WIDGET_COLORS[1])
self.bitmap.fill_rect(1, 9, @width - 2, 9, Configs::WIDGET_COLORS[2])
self.bitmap.draw_text(self.bitmap.rect, @text, 1)
end
#--------------------------------------------------------------------------
# * Atualiza o botão.
#--------------------------------------------------------------------------
def update
return unless $mouse.x > self.x
return unless $mouse.x <= self.x + @width
return unless $mouse.y > self.y
return unless $mouse.y <= self.y + self.bitmap.height
return unless Input.trigger?(0x01)
@events.each { |e| e.call }
end
end
#==============================================================================
# ** Window_Respawn
#------------------------------------------------------------------------------
# Autor Paulo S.
# Versão 1.0
# Data 29/08/2017
#==============================================================================
class Window_Respawn < Sprite
# Cor de fundo da janela.
BackgroundColor = Color.new(0, 0, 0, 200).freeze
# Gráfico do personagem morto.
Dead = '190-Down02'
# Id da poção usada para reviver.
PotionId = 3
def initialize
super nil
self.x = 50
self.y = 180
self.z = 999
self.bitmap = Bitmap.new(180, 50)
@seconds = 5
@graphic = $game_party.actors[0].character_name
@tb_respawn = TinyButton.new(self, 5, 25, 70, 'Renascer')
@tb_potion = TinyButton.new(self, 80, 25, 95, 'Usar poção')
@tb_respawn.on_click { respawn }
@tb_potion.on_click { use_potion }
refresh
hide
end
#--------------------------------------------------------------------------
# * Chamado ao clica no botão de respawn.
#--------------------------------------------------------------------------
def respawn
$network.need_respawn
hide
end
#--------------------------------------------------------------------------
# * Chamado ao clicar no botão de usar poção.
#--------------------------------------------------------------------------
def use_potion
if $game_party.item_number(PotionId) > 0
$game_party.lose_item(PotionId, 1)
$network.need_revive
hide
end
end
#--------------------------------------------------------------------------
# * Desenha o conteúdo da janela.
#--------------------------------------------------------------------------
def refresh
self.bitmap.clear
self.bitmap.fill_rect(0, 0, 180, 50, BackgroundColor)
self.bitmap.draw_text(0, 0, 180, 20, "Renascimento em #{@seconds}s...", 1)
end
#--------------------------------------------------------------------------
# * Exibe a janela.
#--------------------------------------------------------------------------
def show
$game_party.actors[0].character_name = Dead
self.visible = true
@timer = Time.now
@tb_respawn.visible = true
@tb_potion.visible = true
refresh
end
#--------------------------------------------------------------------------
# * Esconde a janela.
#--------------------------------------------------------------------------
def hide
$game_party.actors[0].character_name = @graphic
self.visible = false
@seconds = 5
@timer = nil
@tb_respawn.visible = false
@tb_potion.visible = false
end
#--------------------------------------------------------------------------
# * Atualização dos componentes.
#--------------------------------------------------------------------------
def update
super
return unless self.visible
update_timer
update_controls
end
#--------------------------------------------------------------------------
# * Atualização do timer.
#--------------------------------------------------------------------------
def update_timer
return unless @timer
hide if @seconds == 0
t = Time.now
if Time.now - @timer >= 1.0
@seconds -= 1
@timer = t
refresh
end
end
#--------------------------------------------------------------------------
# * Atualização dos botões.
#--------------------------------------------------------------------------
def update_controls
@tb_respawn.update
@tb_potion.update
end
#--------------------------------------------------------------------------
# * Liberação dos recursos usados.
#--------------------------------------------------------------------------
def dispose
super
@tb_respawn.dispose
@tb_potion.dispose
end
end
Pode ser que eu tenha esquecido alguma coisa no tutorial, não sou muito bom isso mas abaixo tem o link do projeto só com esse sistema.
Download: MEGA
_________________
Re: Fábrica de scripts para netplays
@Paulo S.
Muito bom!, espero que ajude a galera também. É um sistema bacana e com essa base eu entendi como implementar mais coisas no netplay. Nice
Muito bom!, espero que ajude a galera também. É um sistema bacana e com essa base eu entendi como implementar mais coisas no netplay. Nice
_________________
using C# and import Python developer || Expert in Unity Engine IDE. || 2D pixel games.
Página 2 de 4 • 1, 2, 3, 4
Tópicos semelhantes
» Área para Scripts de Netplays
» Quanto você estaria disposto a pagar por scripts para netplays?
» Servidor para netplays
» Fabrica de char de espada e escudos para o visual de equipamento[ABERTA]
» Lista de Netplays para RMXP
» Quanto você estaria disposto a pagar por scripts para netplays?
» Servidor para netplays
» Fabrica de char de espada e escudos para o visual de equipamento[ABERTA]
» Lista de Netplays para RMXP
Página 2 de 4
Permissões neste sub-fórum
Não podes responder a tópicos