Life Rpg Maker
Registre-se em nossa comunidade e saiba Mais do mundo maker(:



 
InícioInício  chat  PortalPortal  CalendárioCalendário  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Conectar-seConectar-se  

Compartilhe | 
 

  [Tutorial]Sistema de PK Avançado NP Master v3.0

Ir em baixo 
AutorMensagem
Samuka_Adm
Admin
Admin
avatar

Medalhas :
Mensagens : 150
Pontos : 319
Reputação : 44
Data de inscrição : 15/06/2012

MensagemAssunto: [Tutorial]Sistema de PK Avançado NP Master v3.0   Seg Jun 25, 2012 3:55 pm

Sistema de PK Avançado:
Por: KaiqueHunter

Esse sistema de PK foi baseado no do Mu Online,cuja caso a pessoa esteja PK troca a cor da Asa,a diferença é que neste caso trocaremos a Cor do Nome.
Perguntas Frequentes:

Pergunta:Porque esse sistema é avançado ?
Resposta:Ele meche com varios Scriptes,inclusive o NetWork e caso a pessoa não saiba mecher com WinSock,ela pode acabar desconfigurando,por isso é recomendado que extraia uma nova pasta do NP antes de tentar fazer.

Pergunta: O que é PK?
Resposta: se não me engano é player Killer

Pergunta:Funciona em outros NetPlay ?
Resposta:Funciona em todos NP baseados no NetPlay Plus 1.7

1º Passo


Antes de começar,iremos no "User Edits" e depois da linha 70,onde fica as cor iremos adicionar está
variavel:

Código:
PK_COLOR = Color.new(250,0,0)

Oque fizemos ? Nós adicionamos uma variavel contendo a cor "vermelha" que é perfeita para uma cor de quando a pessoa estiver PK.

Agora iremos criar uma variavel com o nome de "PK Var",para o tutorial eu usei o Slot numero 10,vocês poderão usar outro Slot mas usaremos este Slot praticamente o tutorial inteiro então caso vocês queiram mudar vocês terão que modificar os Script.

Agora que já criamos a Variavel iremos no Script "PlayerVsPlayer" e na linha 146 está assim:

Código:
netplayer_killed(pl) if pl.hp <= 0

Iremos arrancar está linha de codigo e adicionaremos:

Código:
if pl.hp <= 0
netplayer_killed(pl) 
$game_variables[10] = 1
end

Com o "if",ela verifica se o Player que seu char atacou tem o HP igual ou menor que 0 caso sim,ele executa a função "netplayer_killed(pl)" e logo em seguida coloca o valor da variavel do Slot 10 com o valor 1,hã ? Porque colocaremos o valor 1 ? O valor da variavel sera usado para dizer se está PK ou não, o bom disso que sera possivel utiliza-las em varios sistemas,como empedir que o NPC converse com o matador,etc.Ou seja valor da variavel do Slot 10 = 1 significa que a pessoa está PK e valor 0 não está PK.

2º Passo
Agora falta a parte de mudar de nome,então iremos no Script "Event Text Display",este Script é responsavel por colocar o nome e a cor do nome em cima do personagem.Na linha 122 iremos modificar o "else" e colocaremos um "elsif" ficando assim.

Código:

if Network::Main.group == 'admin' and User_Edit::COLOR_ADMIN == true
@text_display = [txt, ADM_Color]
elsif $game_variables[10] == 1
@text_display = [txt, User_Edit::PK_COLOR]
else
@text_display = [txt, Player_Color]
end
end
end


Com isso o Sistema de PK já estaria pronto,mas ele não seria global e ainda não teria um Refresh,ou seja mesmo que a pessoa mata-se a cor do nome iria mudar só se ela reloga-se.

3º Passo


Agora iremos fazer com que o Sistema de PK seja global ou seja caso a pessoa mate a cor do nome fique vermelho para os outros player,para isso iremos no Script "Game_NetPlayer" e iremos adicionar logo apos da linha 54 isto:

Código:
attr_accessor :variavel

Isso foi colocado porque para que o Sistema de PK seja global é necessario que um Player verifique a variavel do Slot 10 para ver se sera colocado a cor vermelha ou a normal em cima do nome do outro player.O real problema é que o NP não tinha suporte para isso por isso é necessario adicionar está linha.
Em seguida no mesmo Script logo apos da linha 104 iremos adicionar:

Código:
@variavel = 0

Com isso estamos anulando o valor da "variavel" pois ele é redefinido quando é enviado a mensagem via Socket.
Agora iremos no Script "Network" e na linha 381 e logo em seguida dessa linha iremos adicionar:

Código:
send += "@variavel = #{$game_variables[10]};"

E logo apos da linha 519 iremos adicionar novamente este codigo:

Código:
send += "@variavel = #{$game_variables[10]};"

Em seguida iremos no Script "Sprite_NetCharacter" e iremos arrancar da linha 63 até a 67 e no lugar iremos adicionar:

Código:
if @character.grupo == "Admin" and User_Edit::COLOR_ADMIN == true
bitmap.font.color = User_Edit::ADM_COLOR
elsif @character.variavel == 1
bitmap.font.color = User_Edit::PK_COLOR
else
bitmap.font.color = User_Edit::PLAYER_COLOR
end

4º Passo

Agora já temos um Sistema PK Global só falta a ultima coisa,fazer com que o sistema de Refresh sozinho,assim quando matarmos a cor mudar sem necessitar que relogue.
Novamente no Script "Event Text Display" logo apos da linha 249 iremos adicionar estás linhas de codigo:

Código:
if @character.is_a?(Game_Player)
dispose_display_text
create_display_sprite(@character.text_display)
end

E na linha 163 iremos arrancar tanto está linha como a linha 165 e iremos adicionar:

Código:
if @character.is_a?(Game_Player)
if Network::Main.group == 'admin' and User_Edit::COLOR_ADMIN == true
bitmap.font.color = User_Edit::ADM_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] == 1
bitmap.font.color = User_Edit::PK_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
else
bitmap.font.color = User_Edit::PLAYER_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)   
end
else
bitmap.font.color = args[1]
bitmap.draw_text(0, 0, 160, 24, args[0], 1)
end

Prontinho , seu proprio Sistema de PK.

Exigencias:

Se usar em seu jogo,dê os devidos creditos.
Se postar em outro forum,dê os devidos creditos.
Se copiar,se jogue de um predio.

Sistema de PK Avançado v2.0

Estou postando no mesmo topico porque o v2.0 só edita as funções do v1.0,então facilita eu postar no mesmo topico,além disso ajuda o forum pra não ficar tanto topico praticamente inutil.

A versão 2.0 o PK terá Lv 1,2,3 , hã como assim ? Qual seria essa diferença de Lv,algo simples mais bem legal agora quando você matar uma pessoa você não ficaria PK logo você ficara PK lv 1 com cor amerelo,se matar novamente ficara PK lv 2 com cor Laranja e se matar novamente PK lv 3 com cor Vermelha,e se você matar alguem que estiver PK lv 1,2,3 ficara com cor azul claro Hero lv 1 e se matar mais um assasino ficara Hero lv 2 com cor azul escuro.

1º Passo

Vamos no "User Edits" e perto da linha 71 logo apos de:

Código:
PK_COLOR = Color.new(250,0,0)

Iremos adicionar estas linhas:

Código:
PK1_COLOR = Color.new(255,255,0)
#PK Lv 2
PK2_COLOR = Color.new(255,115,0)
#Hero Lv 1
HERO1_COLOR = Color.new(0,128,255)
#Hero Lv2
HERO2_COLOR = Color.new(0,0,255)

Estás linhas que dão a cor à cada nivel do nosso PK System.
Logo em seguida iremos no Script "PlayervsPlayer" e iremos substituir desde a linha 146 até a 149 por esse codigo abaixo:

Código:
if pl.hp <= 0
netplayer_killed(pl)
if pl.variavel > 0
$game_variables[10] -= 1
else
$game_variables[10] += 1
end
end

2º Passo

Iremos no Script "Event Text Display",nós vamos substituir a desde a linha 163 até a 178 por:

Código:
if @character.is_a?(Game_Player)
if Network::Main.group == 'admin' and User_Edit::COLOR_ADMIN == true
bitmap.font.color = User_Edit::ADM_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] == 1
bitmap.font.color = User_Edit::PK1_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] == 2
bitmap.font.color = User_Edit::PK2_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] >= 3
bitmap.font.color = User_Edit::PK_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] == -1
bitmap.font.color = User_Edit::HERO1_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
elsif $game_variables[10] <= -2
bitmap.font.color = User_Edit::HERO2_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)
else
bitmap.font.color = User_Edit::PLAYER_COLOR
bitmap.draw_text(0, 0, 160, 24, $game_party.actors[0].name, 1)   
end
else
bitmap.font.color = args[1]
bitmap.draw_text(0, 0, 160, 24, args[0], 1)
end

3º Passo

Agora falta uma coisa,fazer com que os outros players tambem vejam se você está Hero ou PK.Para isso vamos ao Script "Sprite_NetCharacter" e iremos substituir da linha 63 até a 69 por:

Código:
if @character.grupo == "Admin" and User_Edit::COLOR_ADMIN == true
bitmap.font.color = User_Edit::ADM_COLOR
elsif @character.variavel == 1
bitmap.font.color = User_Edit::PK1_COLOR
elsif @character.variavel == 2
bitmap.font.color = User_Edit::PK2_COLOR
elsif @character.variavel >= 3
bitmap.font.color = User_Edit::PK_COLOR
elsif @character.variavel == -1
bitmap.font.color = User_Edit::HERO1_COLOR
elsif @character.variavel <= -2
bitmap.font.color = User_Edit::HERO2_COLOR
else
bitmap.font.color = User_Edit::PLAYER_COLOR
end

Prontinho,agora se você matar alguem que está PK vira Hero,se matar alguem fica PK lv 1(Amarelo),e assim vai e se você matar que não esteja PK quando você estiver Hero você vai voltando ao normal,tipo se matar alguem que não esteja PK no Hero lv 2 você vai pro Lv 1 e se matar alguem novamente volta ao normal e assim vai xD.

Informação Basica sobre a variavel:

Caso a pessoa esteja Hero Lv 2 o valor da variavel é igual "-2" ou menor que "-2".
Caso a pessoa esteja Hero Lv 1 o valor da variavel é igual "-1".
Caso a pessoa esteja Normal o valor da variavel é igual "0".
Caso a pessoa esteja PK Lv 1 o valor da variavel é igual "1".
Caso a pessoa esteja PK Lv 2 o valor da variavel é igual "2".
Caso a pessoa esteja PK Lv 3 o valor da variavel é igual "3" ou maior que "3".

Assim vocês poderam editar o PK System por eventos facilmente .

Créditos
KaiqueHunter
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://liferpgmaker.forumfacil.net
 
[Tutorial]Sistema de PK Avançado NP Master v3.0
Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [XCREATOR] [TUTORIAL] Caixa de Texto avançada
» Tutorial Borda Modelada Nivel Medio/Avançado
» [Tutorial/PHP] Criando Sistema de Noticias PHP & MySQL
» [TUTORIAL] Sistema de curtir nas mensagens
» [Tutorial] Sistema de Recordes com arquivo .ini

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Life Rpg Maker :: Guias e Tutoriais-
Ir para: