Samuka_Adm Admin
Medalhas :
Mensagens : 150 Pontos : 319 Reputação : 44 Data de inscrição : 15/06/2012
| Assunto: [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.0Estou 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º PassoIremos 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º PassoAgora 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éditosKaiqueHunter | |
|