Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Ainda temos gente aqui?
[Tutorial] como fazer um sistema de login em BYOND EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
[Tutorial] como fazer um sistema de login em BYOND EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
[Tutorial] como fazer um sistema de login em BYOND EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
[Tutorial] como fazer um sistema de login em BYOND EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
[Tutorial] como fazer um sistema de login em BYOND EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
[Tutorial] como fazer um sistema de login em BYOND EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
[Tutorial] como fazer um sistema de login em BYOND EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
[Tutorial] como fazer um sistema de login em BYOND EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
[Tutorial] como fazer um sistema de login em BYOND EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
[Tutorial] como fazer um sistema de login em BYOND EmptyQui 21 maio 2015, 20:28 por Wismael


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Halt

Halt
Administrador
Administrador
/*
Aqui, definiremos as funções básicas de personagem, como salvar, carregar e criar.
Tudo começa aqui ;D
*/


// proc para client para salvar
client/proc/Salvar()
var/organizar=copytext(src.ckey, 1, 2)
// vai selecionar a priemeira letra da KEY do player
var/savefile/F = new("players/[organizar]/[src.ckey].sav")
// vai criar o arquivo save na pasta players/letra/key.sav
var/char_ckey = cKey(src.mob.name)
//vai pegar a key do char em letras minusculas
F["/[ckey]/[char_ckey]"] << src.mob
// vai enviar os dados do char para o arquivo onde src.mob é o player

client/proc/Carregar(char_ckey)
// proc para client para carregar o char
var/organizar=copytext(src.ckey, 1, 2)
// vai selecionar a priemeira letra da KEY do player
var/savefile/F = new("players/[organizar]/[src.ckey].sav")
// vai escolher o .sav do player
F["/[ckey]/[char_ckey]"] >> src.mob
// vai enviar os dados para o src.mob que é o player
world << "[src.mob.name] entrou!"


// Aqui, definiremos então como tratar um player que acabou de logar.
mob/novoplayer
Login()
// Ao logar, tomaremos as ações necessárias, com o call_parent
..()
// Depois posicionaremos o player
usr.loc=locate(1,1,2)
// E em seguida chamaremos a rotina para Criar/Carregar chars.
src.Selecao()

//Rotina para selecionar se deseja Criar/Carregar chars
proc/Selecao()
var/list/personagens = src.Personagens()
//vai solicitar a list dos personagnes a proc criada.
var/novochar = "Novo Personagem"
// poem uma variavel novochar escrita "Novo Personagem"
var/list/menu = new()
// vai criar um menu
menu += personagens
// vai por os personagens na lista do menu
menu += novochar
// vai por a variavel novochar na list
var/resposta = input("Criação de Personagem", "By Renato") in menu
// Perguntaremos se o jogador deseja carregar um personagem, ou criar um novo
if (resposta == novochar)
src.NovoChar()
// Essa é a rotina de criação de personagem
return
else
var/sucesso = src.client.Carregar(resposta)
//vai pedir para carregar o char
if(sucesso)
//vai conferir se carregou
usr << "Você carregou o char [resposta]"
// vai enviar uma mensagem.


//Rotina para Criar chars
proc/NovoChar()
var/nome = input(src, "Qual seu nome?", "Criação de Personagem", "") as text
// Seleciona um nome através de input()
var/mob/novomob
novomob = new /mob/player()
novomob.name = nome
// Abre um novo mob, e nomeia-o com o nome escolhido
switch(input("Qual seu sexo?", "Criação de Personagem") in list ("Masculino","Femino"))
// Pede para selecionar o sexo
if("Masculino")
novomob.sexo = "Masculino"
novomob.icon = 'Homen.dmi'
// Escolhe o icon apropriado
novomob.icon_state = ""
novomob.loc = locate(10,10,1)
// Posiciona o char
src.client.mob = novomob
// Define que o jogador é aquele mob.
if("Feminino")
novomob.sexo = "Feminino"
novomob.icon = 'Mulher.dmi'
// Escolhe o icon apropriado
novomob.icon_state = ""
novomob.loc = locate(10,10,1)
// Posiciona o char
src.client.mob = novomob
// Define que o jogador é aquele mob.


// Rotina para Carregar chars
mob/proc
Personagens()
var/firstletter=copytext(src.ckey, 1, 2)
// vai selecionar a priemeira letra da KEY do player
var/savefile/F = new("players/[firstletter]/[src.ckey].sav")
// vai escolher o .sav do player
F.cd = "/[ckey]"
// vai escolher uma "subpasta" dentro do save que é a key do player
var/list/personagens = F.dir
// vai criar uma variavel list onde são os char do .sav
return personagens
//vai retornar a proc. fiz assim para ficar mais organizado

// Agora, vem o comando de salvar o char.
mob/verb/Save()
set category = "Salvar"
set name = "Salvar"
// Ele simplesmente chama um rotina que vai fazer o save
usr.client.Salvar()

// Aqui, uma rotina padrão do DM, a Del() que é chamada para toda coisa toda vez que
// fazemos del(coisa). No caso, o ato de deslogar um char, chama a client.Del()
client/Del()
if(istype(src.mob, /mob/novoplayer))
// Se o jogador deslogando é um novoplayer
return ..()
// sairemos sem fazer nada

// Caso contrário, precisamos salvá-lo
src.Salvar()
// Então chamamos a função de salvar
return ..()
// e saímos


// Agora, as duas funções básicas para se fazer save e load: Wirte e Read.
// Elas trabalham salvando ou carregando todas as variáveis do dono da rotina num
// arquivo de save, indicado em seus parâmetros. Porém, há variáveis que nós usamos mas não
// estão definidas na árvore do mob, como os verbos não-padrão e as variáveis de posição
// x,y e z (note que elas não estão no arquivo mob.dm, nem tampouco são variáveis padrão
// que o byond guarda. São consideradas var/tmp. Logo, para salvá-las, temos que usar de
// um artifício.
mob
// Proc para salvar (escrever)
Write(savefile/F)
..()
// Por exemplo aqui, todas as variáveis do mob serão salvas no arquivo F

F["last_x"] << x
F["last_y"] << y
F["last_z"] << z
// E aqui está o artifício citado. Forçamos o salvamento das variáveis x, y e z
// que estarão no savefile com os nomes last_x, last_y e last_z.

// Proc para carregar (ler)
Read(savefile/F)
..()
// Mesmo funcionamento já explicado
var/last_x
var/last_y
var/last_z
// Agora criamos variáveis para armazenar os valores de onde o mob estava posicionado
// da última vez q salvou
F["last_x"] >> last_x
F["last_y"] >> last_y
F["last_z"] >> last_z
// Carregamos os dados do savefile para essas variáveis
loc = locate(last_x, last_y, last_z)
// E setamos o local do mob para o local indicado por essas coordenadas.


// Por fim, definimos quais os valores das variáveis básicas quando se é um mob do tipo player Sem isso não roda
mob/player
hp = 100
mp = 100
maxhp = 100
maxmp = 100
forca = 10
defesa = 5
velocidade = 10

https://arenarpgmaker.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos