SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Multiplayer com photon
Procuro membros para minha Equipe (Programadores, designers, etc)
Ajuda com elementos UI
[PEDIDO] Tutorial de Multiplayer
[TUTORIAL] Sistema COMPLETO de câmeras
Ajuda com AI
Tela rosa em jogos
procuro equipe para meu jogo de bus
[____TÓPICO LIVRE____] FALE O QUE QUISER
Procuro Pessoas Para Minha Equipe De Desenvolvedores de Jogos No Unity 5.4
Formação de equipe para jogo estilo Days Gone (Campanha , Multiplayer) , (já está em criação)
AJUDA SCRIPT LUZ UNITY 5.5
3 Armas mediavais gratis, criada por min
Vocês poderiam avaliar meu jogo para Android? (30mb)
Alguém poderia me ajudar a entender esse script
[ajuda] câmera puxada
[TUTORIAL] Entrar no carro estilo GTA
Folha de Palmeira (Modelo 3D)
DESLIGAR E LIGAR O CARRO
Duvida de script de controle
Procuro programadores para meu jogo
Duvida de script avançada
Duvida sobre pulo
unity pack
PROCURO EQUIPE PARA DESENVOLVER UM GAME NO ESTILO BOMBERMAN (ANTIGOS) ENTRAR EM CONTATO
Formação de equipes Bus Brasil
IMU, terror de sobrevivência em primeira pessoa (estilo silent hill)
[JOGO] Dead Age(Em desenvolvimento).
sobre build run no Android
Vcs ja publicaram algum game ou aplicativo na playstore?
Ajuda para Criar Um Mapa que se passa em uma escola brasileira
[TUTORIAL] Sistema de inventário Sobrevivência
Novo Modelo de Espada Blender
[JOGO] The Park Life [DEMO DISPONIVEL]
Quero entrar para uma equipe.
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Duvida sobre instantiate
Duvida passar de fase com objetos
[TUTORIAL] Como fazer uma Barra de Loading na Unity 5
[TUTORIAL] Alterar a velocidade de queda de um RigidBody
jogo 3D como fazer o personagem...
Problema ao atualizar o Unity 3D
[TUTORIAL] Camera orbital com zoom (scroll)
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Dúvida animation
WhellJoint 2D
Asset para estudo
Ajuda sobre como usar X Axis e Y Axis no lugar do Mouse - UNITY
Arvore no Trees
Porta de correr
Acessar variáveis do Network Manager
ajuda com script de inimigo para fazer com que ele só ataque quando ver o player
como corrijo esses erro "was expected"
duvida em script
galera quero saber se tem como fazer um sistema em que o personagem coleta tempo caso o tempo acabe de game over
COMO ARRUMAR O BUG DA UNITY
Diminuir o número de casas decimais de uma variável float
Joystick virtual para Unity 5.4?
Modelo de Espada medieval em Blender
[TUTORIAL] AI Enemy ( Jogos de terror )
Como colocar o som para ficar repetindo ?
Limitador de velocidade
[AJUDA] UNITY NAO MOVIMENTA PLAYER COM JOYSTICK VIRTUAL
[ASSET] Sistema de DIA e NOITE completo, com nuvens, estrelas, lua, etc, etc
Zoom na Camera !
Impor limite á variavel INT
Spotlight etc... Não funcionan
Duvida sobre first person controller unity 5
Problema na disposição de objetos com o Canvas
Pedido de Desculpa para todos do Forúm!
Jogo de quiz
DuvidaProgramação
DuvidaSom
Câmera para veículos
eu queria saber se alguma empresa de carro pode bloquear meu jogo caso eu pretenda vender na steam
Hoje à(s) 12:02 pm
Hoje à(s) 11:06 am
Hoje à(s) 11:04 am
Hoje à(s) 10:53 am
Hoje à(s) 10:48 am
Hoje à(s) 10:20 am
Ontem à(s) 10:17 pm
Ontem à(s) 10:14 pm
Ontem à(s) 9:49 pm
Ontem à(s) 7:51 pm
Ontem à(s) 6:31 pm
Ontem à(s) 6:03 pm
Ontem à(s) 5:54 pm
Ontem à(s) 5:24 pm
Ontem à(s) 5:17 pm
Ontem à(s) 4:40 pm
Ontem à(s) 4:30 pm
Ontem à(s) 4:24 pm
Ontem à(s) 4:16 pm
Ontem à(s) 3:25 pm
Ontem à(s) 2:52 pm
Ontem à(s) 10:23 am
Ontem à(s) 9:40 am
Ontem à(s) 9:06 am
Ontem à(s) 12:01 am
Sab Jan 14, 2017 8:06 pm
Sab Jan 14, 2017 7:55 pm
Sab Jan 14, 2017 5:53 pm
Sab Jan 14, 2017 1:15 pm
Sab Jan 14, 2017 10:38 am
Sab Jan 14, 2017 9:06 am
Sab Jan 14, 2017 7:37 am
Sab Jan 14, 2017 7:25 am
Sab Jan 14, 2017 7:22 am
Sab Jan 14, 2017 7:21 am
Sab Jan 14, 2017 4:57 am
Sex Jan 13, 2017 11:49 pm
Sex Jan 13, 2017 10:21 pm
Sex Jan 13, 2017 9:13 pm
Sex Jan 13, 2017 7:41 pm
Sex Jan 13, 2017 7:35 pm
Sex Jan 13, 2017 7:29 pm
Sex Jan 13, 2017 7:26 pm
Sex Jan 13, 2017 7:14 pm
Sex Jan 13, 2017 7:11 pm
Sex Jan 13, 2017 7:05 pm
Sex Jan 13, 2017 7:02 pm
Sex Jan 13, 2017 7:01 pm
Sex Jan 13, 2017 6:59 pm
Qui Jan 12, 2017 11:09 pm
Qui Jan 12, 2017 10:51 pm
Qui Jan 12, 2017 8:10 pm
Qui Jan 12, 2017 3:32 pm
Qui Jan 12, 2017 2:09 pm
Qui Jan 12, 2017 12:07 pm
Qui Jan 12, 2017 1:17 am
Qua Jan 11, 2017 10:45 pm
Qua Jan 11, 2017 3:45 pm
Qua Jan 11, 2017 1:20 pm
Qua Jan 11, 2017 1:19 am
Qua Jan 11, 2017 1:12 am
Qua Jan 11, 2017 12:56 am
Qua Jan 11, 2017 12:47 am
Qua Jan 11, 2017 12:43 am
Ter Jan 10, 2017 11:10 pm
Ter Jan 10, 2017 11:00 pm
Ter Jan 10, 2017 10:02 pm
Ter Jan 10, 2017 5:16 pm
Ter Jan 10, 2017 5:05 pm
Ter Jan 10, 2017 3:58 pm
Ter Jan 10, 2017 3:10 pm
Ter Jan 10, 2017 9:52 am
Seg Jan 09, 2017 11:29 pm
Seg Jan 09, 2017 6:02 pm
Seg Jan 09, 2017 3:25 pm
artplayer
Chilinger
sabbath
Chilinger
Chilinger
Joker 22
Manawydan
Manawydan
Willian Wii
dstaroski
Willian Wii
Pedro Canassa Garcia
MateusWTP
Willian Wii
Willian Wii
luKkaSs
tom ramber
RenanMSV
tom ramber
MonsaM
Willian Wii
AndyShow
AndyShow
dstaroski
Kaiky leandro
Kaiky leandro
joabr
ismarspn
R R
Willian Wii
GamersBR
hen000
Weverton Borges da Silva
Weverton Borges da Silva
hen000
LucasFox
John Rambo
Manawydan
bymaxbig
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
John Rambo
weslleyFx
bymaxbig
thiagograssi
AndyShow
joaohw
rafaelllsd
John Rambo
R R
Marlonwanger
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
LuizFixa3D
GustavoMaster
Santiago Furtado
R R
R R
Altamir
thiagograssi
weslleyFx
roger224
AndyShow
joaohw

(Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

DÚVIDA (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 12:44 am

Olá galera bom dia a Todos (a)

Bom, Eu gostaria de saber como eu posso fazer para quando o player for para um lugares não permitidos no mapa (tentar Bugar ou sair por engano) como posso fazer para ele perder HP até morrer ?

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 7:02 am

Me ajudem por favor galera  Very Happy

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 8:58 am

Você já tentou?

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 9:01 am

Sim, mais Eu só consegui fazer o Colíder invisível...
Mais eu não sei fazer para tirar HP do player

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 9:04 am

OK... Se vc não tiver com pressa eu posso te dar uma ajuda daqui uns 90 minutos.. É que agora to um pouco ocupado

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 9:06 am

Show, não estou com pressa não, hj vou fazer bastante coisas no meu jogo!!! Very Happy

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:10 am

OK preciso do script do seu player

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:24 am

//New FPS
//@2016

using UnityEngine;
using System.Collections;
using Hashtable = ExitGames.Client.Photon.Hashtable; //Replace default Hashtables with Photon hashtables

public class PlayerNetwork : Photon.MonoBehaviour
{

//This is main script that coordinate our player in game, it decides which component to enable/disable
//Also it sync's our data with remote instances over network

public SoldierAnimation soldierAnimation;
public Renderer soldierBody;
public Material teamALook;
public Material teamBLook;
public Material fpsHandMaterial;
public PlayerWeapons playerWeapons;
public GameObject firstPersonView;

public Transform nameLabelTransform;
public GUIText nameLabel;
public GUIText nameLabelShadow;

public AudioSource playerAudio;
public AudioSource walkingAudio;

public AudioClip hitSound;
public AudioClip[] walkingSounds;
public AudioClip[] ladderSounds;

public Collider[] headHitBoxes;
public Collider[] torsoHitBoxes;
public Collider[] limbsHitBoxes;

Vector3 playerPos = Vector3.zero;
[HideInInspector]
public Vector3 aimPos = Vector3.zero;
Vector3 smoothAimPos = Vector3.zero;
float positionSmoother = 17.5f;
float d;

[HideInInspector]
public FPSController fpsController;
FPSMouseLook localMouseLook;
[HideInInspector]
public FPSMouseLook cameraMouseLook;
[HideInInspector]
public Transform thisT;
//[HideInInspector]
//public RoomController rc;
[HideInInspector]
public int playerID;
[HideInInspector]
public bool playerKilled = false;

int currentWeaponIndex = -1;
int previousWeaponIndex = -1;
bool isFiringRemote = false;
int playerTeam;
Camera mainCamera;
Transform mainCameraT;
Vector3 screenPos; //For name label display
float offset;
//Save references incase we kill this player
string lastWeaponName = "";
int lastBodyPart = -1;

//Position Interpolation Sync
double interpolationBackTime = 0.37d; 

internal struct State
    {
internal double timestamp;
internal Vector3 pos;
internal Quaternion rot;
}

//double currentTime;

// We store twenty states with "playback" information
State[] m_BufferedState = new State[20];
// Keep track of what slots are used
int m_TimestampCount;
int movementStateLocal = -1;
int receivedMovementState = -1;
float stepLength; //Used for playing walking sounds

// Use this for initialization
void Start ()
    {
photonView.synchronization = ViewSynchronization.Unreliable;

localMouseLook = GetComponent();
fpsController = GetComponent();
fpsController.pn = this;

playerWeapons.playerNetwork = this;
playerWeapons.soldierAnimation = soldierAnimation;
playerWeapons.fpsController = fpsController;
playerWeapons.QuickSetup(photonView.isMine);

gameObject.name = photonView.owner.name;
thisT = transform;

playerKilled = false;

gameObject.layer = 2; //Set layer to Ignore Raycast

if(!photonView.isMine)
        {
//Deactivate all scripts and object that are not used by remote instance
localMouseLook.enabled = false;
fpsController.enabled = false;
playerWeapons.enabled = false;
firstPersonView.SetActive(false);
if(!soldierAnimation.gameObject.activeSelf)
            {
soldierAnimation.gameObject.SetActive(true);
}
soldierAnimation.playerWeapons = playerWeapons;
soldierAnimation.playerNetwork = this;
soldierAnimation.Setup();

SetupBoxes(headHitBoxes, HitBox.BodyPart.Head);
SetupBoxes(torsoHitBoxes, HitBox.BodyPart.Torso);
SetupBoxes(limbsHitBoxes, HitBox.BodyPart.Limbs);

//Add this player to reference
GameSettings.rc.otherPlayers.Add(this);
}
        else
        {
firstPersonView.SetActive(true);
soldierAnimation.gameObject.SetActive(false);
cameraMouseLook = playerWeapons.playerCamera.GetComponent();
nameLabelTransform.gameObject.SetActive(false);
gameObject.tag = "Player";
}

if(PhotonNetwork.isMasterClient)
        {
//Set player HP
Hashtable setPlayerData = new Hashtable();
setPlayerData.Add("PlayerHP", (int)100);
photonView.owner.SetCustomProperties(setPlayerData);
}

playerTeam = (int)photonView.owner.customProperties["Team"];
playerID = photonView.owner.ID;

if(playerTeam == 1 || playerTeam == 2)
        {
if(playerTeam == 1)
            {
soldierBody.sharedMaterial = teamALook;
}
            else
            {
soldierBody.sharedMaterial = teamBLook;
}

if(photonView.isMine)
            {
fpsHandMaterial.SetTexture("_MainTex", soldierBody.sharedMaterial.GetTexture("_MainTex"));
fpsHandMaterial.color = soldierBody.sharedMaterial.color;
}
            else
            {
nameLabel.text = photonView.name;
nameLabelShadow.text = photonView.name;
nameLabel.color = playerTeam == 1 ? GameSettings.teamAColor : GameSettings.teamBColor;
}
}
}

void SetupBoxes (Collider[] tmpBoxes, HitBox.BodyPart bp)
    {
for(int i = 0; i < tmpBoxes.Length; i++)
        {
tmpBoxes[i].isTrigger = true;
tmpBoxes[i].gameObject.AddComponent().AssignVariables(this, bp);
tmpBoxes[i].tag = "Body";
}
}

//Sync player over network
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
if (stream.isWriting)
        {
//Send data
if(!thisT)
return;

stream.SendNext(thisT.position);
stream.SendNext(playerWeapons.playerCamera.position + playerWeapons.playerCamera.forward * 100);
stream.SendNext(playerWeapons.globalWeaponIndex);
stream.SendNext(playerWeapons.isFiring);
stream.SendNext(fpsController.movementState);
}
        else
        {
//Receive data
playerPos = (Vector3)stream.ReceiveNext();
aimPos = (Vector3)stream.ReceiveNext();
currentWeaponIndex = (int)stream.ReceiveNext();
isFiringRemote = (bool)stream.ReceiveNext();
soldierAnimation.movementState = (int)stream.ReceiveNext();


// Shift buffer contents, oldest data erased, 18 becomes 19, ... , 0 becomes 1
for (int i=m_BufferedState.Length-1;i>=1;i--)
{
m_BufferedState[i] = m_BufferedState[i-1];
}

// Save currect received state as 0 in the buffer, safe to overwrite after shifting
State state = new State();
state.timestamp = info.timestamp;
state.pos = playerPos;
http://state.rot = rot;
m_BufferedState[0] = state;

// Increment state count but never exceed buffer size
m_TimestampCount = Mathf.Min(m_TimestampCount + 1, m_BufferedState.Length);

// Check integrity, lowest numbered state in the buffer is newest and so on
for (int i=0;i {
if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
Debug.Log("State inconsistent");
}
}
}

// Update is called once per frame
void Update ()
    {
if(!photonView.isMine)
        {
InterpolatePosition ();

smoothAimPos = Vector3.Lerp(smoothAimPos, aimPos, Time.deltaTime * positionSmoother);

if(aimPos != Vector3.zero)
            {
thisT.LookAt(new Vector3(smoothAimPos.x, thisT.position.y, smoothAimPos.z));
playerWeapons.playerCamera.LookAt(smoothAimPos);
}

if(isFiringRemote)
            {
playerWeapons.FireRemote();
}

if(previousWeaponIndex != currentWeaponIndex)
            {
previousWeaponIndex = currentWeaponIndex;
playerWeapons.globalWeaponIndex = currentWeaponIndex;
playerWeapons.SwitchWeaponRemote();
}

//Show name label for our teammates
if(!playerKilled && ((playerTeam == GameSettings.ourTeam && GameSettings.currentGameMode != "FFA") || GameSettings.ourTeam == 0))
            {
if(!nameLabelTransform.gameObject.activeSelf)
                {
nameLabelTransform.gameObject.SetActive(true);
}

if(!mainCamera || !mainCamera.gameObject.activeInHierarchy)
                {
if(Camera.main)
                    {
mainCamera = Camera.main;
mainCameraT = mainCamera.transform;
}
}
                else
                {
offset = Vector3.Distance(mainCameraT.position, thisT.position)/50;
screenPos = mainCamera.WorldToViewportPoint(new Vector3(thisT.position.x, thisT.position.y + 2.6f + offset, thisT.position.z));

if(screenPos.z > 0)
                    {
nameLabelTransform.position = new Vector3(screenPos.x, screenPos.y);
}
                    else
                    {
nameLabelTransform.position = new Vector3(-350, -350);
}
}

nameLabelTransform.eulerAngles = Vector3.zero;
}
            else
            {
if(nameLabelTransform.gameObject.activeSelf)
                {
nameLabelTransform.gameObject.SetActive(false);
}
}

receivedMovementState = soldierAnimation.movementState;
}
        else
        {
//Send cameraFOV to reduce mouse sensitivity when aiming
http://localMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;
http://cameraMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;

receivedMovementState = fpsController.movementState;
}

//Play footstep sound for both local and remote player instances
if(!playerKilled)
        {
if(movementStateLocal != receivedMovementState)
            {
movementStateLocal = receivedMovementState;
PlayWalkingSound();
}
}
        else
        {
if(walkingAudio.isPlaying)
            {
walkingAudio.Stop();
}
}
}

void InterpolatePosition ()
    {
d = Vector3.Distance(thisT.position, m_BufferedState[0].pos);
soldierAnimation.isMoving = d > 0.1f;

double currentTime = PhotonNetwork.time;
double interpolationTime = currentTime - interpolationBackTime;
// We have a window of interpolationBackTime where we basically play 
// By having interpolationBackTime the average ping, you will usually use interpolation.
// And only if no more data arrives we will use extrapolation

// Use interpolation
// Check if latest state exceeds interpolation time, if this is the case then
// it is too old and extrapolation should be used

if (m_BufferedState[0].timestamp > interpolationTime)
        {
for (int i=0;i            {
// Find the state which matches the interpolation time (time+0.1) or use last state
if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
                {
// The state one slot newer (<100ms) than the best playback state
State rhs = m_BufferedState[Mathf.Max(i-1, 0)];
// The best playback state (closest to 100 ms old (default time))
State lhs = m_BufferedState[i];

// Use the time between the two slots to determine if interpolation is necessary
double length = rhs.timestamp - lhs.timestamp;
float t = 0.0F;
// As the time difference gets closer to 100 ms t gets closer to 1 in 
// which case rhs is only used
if (length > 0.0001)
                    {
t = (float)((interpolationTime - lhs.timestamp) / length);
}

// if t=0 => lhs is used directly
thisT.position = Vector3.Lerp(lhs.pos, rhs.pos, t);
http://transform.localRotation = Quaternion.Slerp(lhs.rot, rhs.rot, t);
return;
}
}
}
        else
        {
// Use extrapolation. Here we do something really simple and just repeat the last
// received state. You can do clever stuff with predicting what should happen

State latest = m_BufferedState[0];

thisT.position = latest.pos;
http://transform.localRotation = latest.rot;

//print ("Moving DIrectly to latest pos " + Random.Range(111, 333).ToString());
}
}

//Called from Weapon.cs when player shooting single fire weapons
public void FireSingleRemote()
    {
photonView.RPC("FireRemoteRPC", PhotonTargets.Others);
}

[PunRPC]
void FireRemoteRPC()
    {
playerWeapons.FireRemote();
}

//Reload Sync
public void DoReload ()
    {
photonView.RPC("DoReloadRemote", PhotonTargets.Others);
}

[PunRPC]
void DoReloadRemote()
    {
if(playerWeapons.currentSelectedWeapon)
        {
playerWeapons.currentSelectedWeapon.ReloadNetworkSync();
}
}

//Do player damage, called from HitBox.cs
public void ApplyDamage(int[] values)
    {
if(!playerKilled && (playerTeam != GameSettings.ourTeam || photonView.isMine || GameSettings.currentGameMode == "FFA"))
        {
photonView.RPC("DamageRemote", PhotonTargets.All, values, PhotonNetwork.player.ID);
}
}

[PunRPC]
void DamageRemote (int[] values, int killerID)
    {
if(photonView.isMine)
        {
GameSettings.rc.DoHitDetector((int)values[2]);
fpsController.fallSlowDown = 0.5f;

PlayHitSound();
}
        else
        {
soldierAnimation.DoHitMovement();
}

if(!playerKilled)
        {
if(PhotonNetwork.player.ID == killerID)
            {
//Save temp references
lastWeaponName = GameSettings.rc.ourPlayer ? GameSettings.rc.ourPlayer.playerWeapons.currentSelectedWeapon.weaponName : "";
lastBodyPart = values[1];
}

if(PhotonNetwork.isMasterClient)
            {
int currentHP = photonView.owner.customProperties["PlayerHP"] != null ? (int)photonView.owner.customProperties["PlayerHP"] : 100;
currentHP -= GetDMG((int)values[0], (int)values[1]);
Hashtable setPlayerData = new Hashtable();
setPlayerData.Add("PlayerHP", currentHP); //Setup player HP by master client
photonView.owner.SetCustomProperties(setPlayerData);

if(currentHP < 1)
                {
photonView.RPC("KillPlayer", PhotonTargets.All, killerID);
playerKilled = true;
}
}
}
}

[PunRPC]
void KillPlayer (int killerID)
    {
playerKilled = true;

if(photonView.isMine)
        {
soldierAnimation.gameObject.SetActive(true);
firstPersonView.SetActive(false);

localMouseLook.enabled = false;
http://fpsController.enabled = false;
playerWeapons.enabled = false;
playerWeapons.isFiring = false;

GameSettings.rc.PrepareRespawn(-killerID, false);
}

if(PhotonNetwork.isMasterClient)
        {
//Set killed player deaths
if(photonView.owner != null)
            {
int newDeaths = photonView.owner.customProperties["Deaths"] == null ? 1 : (int)photonView.owner.customProperties["Deaths"] + 1;
Hashtable setPlayerProperties = new Hashtable();
setPlayerProperties.Add("Deaths", newDeaths);
photonView.owner.SetCustomProperties(setPlayerProperties);

//Do not add kills nor team score if we killed ourselves (fell down etc.)
if(photonView.owner.ID != killerID)
                {
//Find killer player instance
PhotonPlayer killerPLayer = null;
PhotonPlayer[] allPlayers = PhotonNetwork.playerList;
for(int i = 0; i < allPlayers.Length; i++)
                    {
if(allPlayers[i].ID == killerID)
                        {
killerPLayer = allPlayers[i];
}
}

if(killerPLayer != null)
                    {
//Add kills for killer
int newKills = killerPLayer.customProperties["Kills"] == null ? 1 : (int)killerPLayer.customProperties["Kills"] + 1;
setPlayerProperties = new Hashtable();
setPlayerProperties.Add("Kills", newKills);
killerPLayer.SetCustomProperties(setPlayerProperties);

//Update team scores
if(GameSettings.currentGameMode == "TDM")
                        {
Hashtable setRoomProperties = new Hashtable();
int currentTeamScore = 0;

if((int)killerPLayer.customProperties["Team"] == 1)
                            {
currentTeamScore = PhotonNetwork.room.customProperties["TeamAScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamAScore"] + 1: 1;
setRoomProperties.Add("TeamAScore", currentTeamScore);
}
if((int)killerPLayer.customProperties["Team"] == 2)
                            {
currentTeamScore = PhotonNetwork.room.customProperties["TeamBScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamBScore"] + 1 : 1;
setRoomProperties.Add("TeamBScore", currentTeamScore);
}

if(setRoomProperties.Count > 0)
                            {
PhotonNetwork.room.SetCustomProperties(setRoomProperties);
}
}
}
}
}
}

if(PhotonNetwork.player.ID == killerID)
        {
//Check what weapon we used right before
string selectedWeaponNameTmp = "[" + lastWeaponName + "]";
string killedPlayerName = photonView.owner.name;
int killedPlayerTeam = (int)photonView.owner.customProperties["Team"];

if(lastBodyPart == -35)
            {
selectedWeaponNameTmp = "fell";
killedPlayerName = "down";
killedPlayerTeam = 0;
}
            else
            {
if(lastBodyPart == 0)
                {
selectedWeaponNameTmp += " -> Headshot";
}
}
//Notify others on kill and add cash
GameSettings.rc.ReportKill(killedPlayerName, selectedWeaponNameTmp, killedPlayerTeam);
GameSettings.rc.AddKillCash(lastBodyPart );
}

soldierAnimation.PlayKillAnimation();
}

int GetDMG (int weaponIndex, int bodyPart)
    {
if(weaponIndex > -1 && weaponIndex < playerWeapons.totalWeapons.Count)
        {
//For shotgun we divide damage for number of fractions
int divideBy = playerWeapons.totalWeapons[weaponIndex].fireType == PlayerWeapons.FireType.Shotgun ? 5 : 1;

if(bodyPart == 0 || bodyPart == 1)
            {
if(bodyPart == 0)
                {
return  playerWeapons.totalWeapons[weaponIndex].headDamage/divideBy;
}
                else
                {
return playerWeapons.totalWeapons[weaponIndex].torsoDamage/divideBy;
}
}
            else
            {
return playerWeapons.totalWeapons[weaponIndex].limbsDamage/divideBy;
}
}
        else
        {
return Mathf.Abs(weaponIndex);
}
}

void PlayHitSound ()
    {
playerAudio.Stop();
if(playerAudio.clip != hitSound)
        {
playerAudio.clip = hitSound;
}
playerAudio.Play();
}

void PlayWalkingSound ()
    {
//print ("Changed walking state");

CancelInvoke("PlayWalkingSoundInvoke");

stepLength = 0;

if(movementStateLocal == 0 || movementStateLocal == 1 || movementStateLocal == 2 || movementStateLocal == 4)
        {
if(movementStateLocal == 4)
            {
//On ladder
stepLength = 2.5f/fpsController.ladderSpeed;
}
            else
            {
if(movementStateLocal == 2)
                {
//Crouching
stepLength = 3.5f/fpsController.crouchSpeed;
}
                else
                {
if(movementStateLocal == 0)
                    {
stepLength = 3.5f/fpsController.walkSpeed;
}
                    else
                    {
stepLength = 3.5f/fpsController.runSpeed;
}
}
}
}

if(stepLength > 0)
        {
InvokeRepeating("PlayWalkingSoundInvoke", 0.09f, stepLength);
}
}

void PlayWalkingSoundInvoke ()
    {
walkingAudio.Stop();

if(fpsController.isMoving || soldierAnimation.isMoving)
        {
if(movementStateLocal == 4)
            {
//On ladder
walkingAudio.clip = ladderSounds[Random.Range(0, ladderSounds.Length - 1)];
}
            else
            {
//Walkig
walkingAudio.clip = walkingSounds[Random.Range(0, walkingSounds.Length - 1)];
}

walkingAudio.Play();
}
}
}

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:27 am

um pouco grande não ? hahahahaha Very Happy Very Happy Very Happy Very Happy Very Happy

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:32 am

É sim kkk mas peço que dá próxima vez use a caixa de códigos que o fórum oferece

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:46 am

OK, desculpe-me!!! 
é porque sou novato por aqui e não sei quase nada...
mais irei dar meu máximo para seguir as regras!!!

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:50 am

Sem problemas,  não infringiste regra alguma, entenda mais por aqui: http://www.schultzgames.com/t1292-___como-utilizar-o-forum___-principais-botoes-e-suas-funcoes

Quanto ao script está quase pronto

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 11:08 am

mas antes eu preciso que voce corrija os varios erros que existem neste script. tem varios lugares que faltam ;     }     )

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 11:19 am

Ok

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 4:22 pm

Very Happy

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:41 pm

Pronto? Repasse o script usando a caixinha de códigos pra ele não perder componentes

John Rambo
Moderador

Masculino PONTOS : 1404
REPUTAÇÃO : 252
Idade : 17
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Dom Jul 03, 2016 1:21 am

Código:
//New FPS
//Staff @2016

using UnityEngine;
using System.Collections;
using Hashtable = ExitGames.Client.Photon.Hashtable; //Replace default Hashtables with Photon hashtables

public class PlayerNetwork : Photon.MonoBehaviour
{

   //This is main script that coordinate our player in game, it decides which component to enable/disable
   //Also it sync's our data with remote instances over network

   public SoldierAnimation soldierAnimation;
   public Renderer soldierBody;
   public Material teamALook;
   public Material teamBLook;
   public Material fpsHandMaterial;
   public PlayerWeapons playerWeapons;
   public GameObject firstPersonView;

   public Transform nameLabelTransform;
   public GUIText nameLabel;
   public GUIText nameLabelShadow;

   public AudioSource playerAudio;
   public AudioSource walkingAudio;

   public AudioClip hitSound;
   public AudioClip[] walkingSounds;
   public AudioClip[] ladderSounds;

   public Collider[] headHitBoxes;
   public Collider[] torsoHitBoxes;
   public Collider[] limbsHitBoxes;

   Vector3 playerPos = Vector3.zero;
   [HideInInspector]
   public Vector3 aimPos = Vector3.zero;
   Vector3 smoothAimPos = Vector3.zero;
   float positionSmoother = 17.5f;
   float d;

   [HideInInspector]
   public FPSController fpsController;
   FPSMouseLook localMouseLook;
   [HideInInspector]
   public FPSMouseLook cameraMouseLook;
   [HideInInspector]
   public Transform thisT;
   //[HideInInspector]
   //public RoomController rc;
   [HideInInspector]
   public int playerID;
   [HideInInspector]
   public bool playerKilled = false;
   
   int currentWeaponIndex = -1;
   int previousWeaponIndex = -1;
   bool isFiringRemote = false;
   int playerTeam;
   Camera mainCamera;
   Transform mainCameraT;
   Vector3 screenPos; //For name label display
   float offset;
   //Save references incase we kill this player
   string lastWeaponName = "";
   int lastBodyPart = -1;
   
   //Position Interpolation Sync
   double interpolationBackTime = 0.37d;
   
   internal struct State
    {
      internal double timestamp;
      internal Vector3 pos;
      internal Quaternion rot;
   }

   //double currentTime;
   
   // We store twenty states with "playback" information
   State[] m_BufferedState = new State[20];
   // Keep track of what slots are used
   int m_TimestampCount;
   int movementStateLocal = -1;
   int receivedMovementState = -1;
   float stepLength; //Used for playing walking sounds
   
   // Use this for initialization
   void Start ()
    {
      photonView.synchronization = ViewSynchronization.Unreliable;

      localMouseLook = GetComponent<FPSMouseLook>();
      fpsController = GetComponent<FPSController>();
      fpsController.pn = this;

      playerWeapons.playerNetwork = this;
      playerWeapons.soldierAnimation = soldierAnimation;
      playerWeapons.fpsController = fpsController;
      playerWeapons.QuickSetup(photonView.isMine);

      gameObject.name = photonView.owner.name;
      thisT = transform;

      playerKilled = false;

      gameObject.layer = 2; //Set layer to Ignore Raycast

      if(!photonView.isMine)
        {
         //Deactivate all scripts and object that are not used by remote instance
         localMouseLook.enabled = false;
         fpsController.enabled = false;
         playerWeapons.enabled = false;
         firstPersonView.SetActive(false);
         if(!soldierAnimation.gameObject.activeSelf)
            {
            soldierAnimation.gameObject.SetActive(true);
         }
         soldierAnimation.playerWeapons = playerWeapons;
         soldierAnimation.playerNetwork = this;
         soldierAnimation.Setup();

         SetupBoxes(headHitBoxes, HitBox.BodyPart.Head);
         SetupBoxes(torsoHitBoxes, HitBox.BodyPart.Torso);
         SetupBoxes(limbsHitBoxes, HitBox.BodyPart.Limbs);

         //Add this player to reference
         GameSettings.rc.otherPlayers.Add(this);
      }
        else
        {
         firstPersonView.SetActive(true);
         soldierAnimation.gameObject.SetActive(false);
         cameraMouseLook = playerWeapons.playerCamera.GetComponent<FPSMouseLook>();
         nameLabelTransform.gameObject.SetActive(false);
         gameObject.tag = "Player";
      }

      if(PhotonNetwork.isMasterClient)
        {
         //Set player HP
         Hashtable setPlayerData = new Hashtable();
         setPlayerData.Add("PlayerHP", (int)100);
         photonView.owner.SetCustomProperties(setPlayerData);
      }

      playerTeam = (int)photonView.owner.customProperties["Team"];
      playerID = photonView.owner.ID;

      if(playerTeam == 1 || playerTeam == 2)
        {
         if(playerTeam == 1)
            {
            soldierBody.sharedMaterial = teamALook;
         }
            else
            {
            soldierBody.sharedMaterial = teamBLook;
         }

         if(photonView.isMine)
            {
            fpsHandMaterial.SetTexture("_MainTex", soldierBody.sharedMaterial.GetTexture("_MainTex"));
            fpsHandMaterial.color = soldierBody.sharedMaterial.color;
         }
            else
            {
            nameLabel.text = photonView.name;
            nameLabelShadow.text = photonView.name;
            nameLabel.color = playerTeam == 1 ? GameSettings.teamAColor : GameSettings.teamBColor;
         }
      }
   }

   void SetupBoxes (Collider[] tmpBoxes, HitBox.BodyPart bp)
    {
      for(int i = 0; i < tmpBoxes.Length; i++)
        {
         tmpBoxes[i].isTrigger = true;
         tmpBoxes[i].gameObject.AddComponent<HitBox>().AssignVariables(this, bp);
         tmpBoxes[i].tag = "Body";
      }
   }

   //Sync player over network
   void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
      if (stream.isWriting)
        {
         //Send data
         if(!thisT)
            return;

         stream.SendNext(thisT.position);
         stream.SendNext(playerWeapons.playerCamera.position + playerWeapons.playerCamera.forward * 100);
         stream.SendNext(playerWeapons.globalWeaponIndex);
         stream.SendNext(playerWeapons.isFiring);
         stream.SendNext(fpsController.movementState);
      }
        else
        {
         //Receive data
         playerPos = (Vector3)stream.ReceiveNext();
         aimPos = (Vector3)stream.ReceiveNext();
         currentWeaponIndex = (int)stream.ReceiveNext();
         isFiringRemote = (bool)stream.ReceiveNext();
         soldierAnimation.movementState = (int)stream.ReceiveNext();


         // Shift buffer contents, oldest data erased, 18 becomes 19, ... , 0 becomes 1
         for (int i=m_BufferedState.Length-1;i>=1;i--)
         {
            m_BufferedState[i] = m_BufferedState[i-1];
         }
         
         // Save currect received state as 0 in the buffer, safe to overwrite after shifting
         State state = new State();
         state.timestamp = info.timestamp;
         state.pos = playerPos;
         //state.rot = rot;
         m_BufferedState[0] = state;
         
         // Increment state count but never exceed buffer size
         m_TimestampCount = Mathf.Min(m_TimestampCount + 1, m_BufferedState.Length);
         
         // Check integrity, lowest numbered state in the buffer is newest and so on
         for (int i=0;i<m_TimestampCount-1;i++)
         {
            if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
               Debug.Log("State inconsistent");
         }
      }
   }
   
   // Update is called once per frame
   void Update ()
    {
      if(!photonView.isMine)
        {
         InterpolatePosition ();

         smoothAimPos = Vector3.Lerp(smoothAimPos, aimPos, Time.deltaTime * positionSmoother);

         if(aimPos != Vector3.zero)
            {
            thisT.LookAt(new Vector3(smoothAimPos.x, thisT.position.y, smoothAimPos.z));
            playerWeapons.playerCamera.LookAt(smoothAimPos);
         }

         if(isFiringRemote)
            {
            playerWeapons.FireRemote();
         }

         if(previousWeaponIndex != currentWeaponIndex)
            {
            previousWeaponIndex = currentWeaponIndex;
            playerWeapons.globalWeaponIndex = currentWeaponIndex;
            playerWeapons.SwitchWeaponRemote();
         }

         //Show name label for our teammates
         if(!playerKilled && ((playerTeam == GameSettings.ourTeam && GameSettings.currentGameMode != "FFA") || GameSettings.ourTeam == 0))
            {
            if(!nameLabelTransform.gameObject.activeSelf)
                {
               nameLabelTransform.gameObject.SetActive(true);
            }
            
            if(!mainCamera || !mainCamera.gameObject.activeInHierarchy)
                {
               if(Camera.main)
                    {
                  mainCamera = Camera.main;
                  mainCameraT = mainCamera.transform;
               }
            }
                else
                {
               offset = Vector3.Distance(mainCameraT.position, thisT.position)/50;
               screenPos = mainCamera.WorldToViewportPoint(new Vector3(thisT.position.x, thisT.position.y + 2.6f + offset, thisT.position.z));

               if(screenPos.z > 0)
                    {
                  nameLabelTransform.position = new Vector3(screenPos.x, screenPos.y);
               }
                    else
                    {
                  nameLabelTransform.position = new Vector3(-350, -350);
               }
            }

            nameLabelTransform.eulerAngles = Vector3.zero;
         }
            else
            {
            if(nameLabelTransform.gameObject.activeSelf)
                {
               nameLabelTransform.gameObject.SetActive(false);
            }
         }

         receivedMovementState = soldierAnimation.movementState;
      }
        else
        {
         //Send cameraFOV to reduce mouse sensitivity when aiming
         //localMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;
         //cameraMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;

         receivedMovementState = fpsController.movementState;
      }

      //Play footstep sound for both local and remote player instances
      if(!playerKilled)
        {
         if(movementStateLocal != receivedMovementState)
            {
            movementStateLocal = receivedMovementState;
            PlayWalkingSound();
         }
      }
        else
        {
         if(walkingAudio.isPlaying)
            {
            walkingAudio.Stop();
         }
      }
   }
   
   void InterpolatePosition ()
    {
      d = Vector3.Distance(thisT.position, m_BufferedState[0].pos);
      soldierAnimation.isMoving = d > 0.1f;

      double currentTime = PhotonNetwork.time;
      double interpolationTime = currentTime - interpolationBackTime;
      // We have a window of interpolationBackTime where we basically play
      // By having interpolationBackTime the average ping, you will usually use interpolation.
      // And only if no more data arrives we will use extrapolation
      
      // Use interpolation
      // Check if latest state exceeds interpolation time, if this is the case then
      // it is too old and extrapolation should be used
      
      if (m_BufferedState[0].timestamp > interpolationTime)
        {
         for (int i=0;i<m_TimestampCount;i++)
            {
            // Find the state which matches the interpolation time (time+0.1) or use last state
            if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
                {
               // The state one slot newer (<100ms) than the best playback state
               State rhs = m_BufferedState[Mathf.Max(i-1, 0)];
               // The best playback state (closest to 100 ms old (default time))
               State lhs = m_BufferedState[i];
               
               // Use the time between the two slots to determine if interpolation is necessary
               double length = rhs.timestamp - lhs.timestamp;
               float t = 0.0F;
               // As the time difference gets closer to 100 ms t gets closer to 1 in
               // which case rhs is only used
               if (length > 0.0001)
                    {
                  t = (float)((interpolationTime - lhs.timestamp) / length);
               }
               
               // if t=0 => lhs is used directly
               thisT.position = Vector3.Lerp(lhs.pos, rhs.pos, t);
               //transform.localRotation = Quaternion.Slerp(lhs.rot, rhs.rot, t);
               return;
            }
         }
      }
        else
        {
         // Use extrapolation. Here we do something really simple and just repeat the last
         // received state. You can do clever stuff with predicting what should happen

         State latest = m_BufferedState[0];
         
         thisT.position = latest.pos;
         //transform.localRotation = latest.rot;
         
         //print ("Moving DIrectly to latest pos " + Random.Range(111, 333).ToString());
      }
   }

   //Called from Weapon.cs when player shooting single fire weapons
   public void FireSingleRemote()
    {
      photonView.RPC("FireRemoteRPC", PhotonTargets.Others);
   }

   [PunRPC]
   void FireRemoteRPC()
    {
      playerWeapons.FireRemote();
   }

   //Reload Sync
   public void DoReload ()
    {
      photonView.RPC("DoReloadRemote", PhotonTargets.Others);
   }

   [PunRPC]
   void DoReloadRemote()
    {
      if(playerWeapons.currentSelectedWeapon)
        {
         playerWeapons.currentSelectedWeapon.ReloadNetworkSync();
      }
   }

   //Do player damage, called from HitBox.cs
   public void ApplyDamage(int[] values)
    {
      if(!playerKilled && (playerTeam != GameSettings.ourTeam || photonView.isMine || GameSettings.currentGameMode == "FFA"))
        {
         photonView.RPC("DamageRemote", PhotonTargets.All, values, PhotonNetwork.player.ID);
      }
   }

   [PunRPC]
   void DamageRemote (int[] values, int killerID)
    {
      if(photonView.isMine)
        {
         GameSettings.rc.DoHitDetector((int)values[2]);
         fpsController.fallSlowDown = 0.5f;

         PlayHitSound();
      }
        else
        {
         soldierAnimation.DoHitMovement();
      }

      if(!playerKilled)
        {
         if(PhotonNetwork.player.ID == killerID)
            {
            //Save temp references
            lastWeaponName = GameSettings.rc.ourPlayer ? GameSettings.rc.ourPlayer.playerWeapons.currentSelectedWeapon.weaponName : "";
            lastBodyPart = values[1];
         }

         if(PhotonNetwork.isMasterClient)
            {
            int currentHP = photonView.owner.customProperties["PlayerHP"] != null ? (int)photonView.owner.customProperties["PlayerHP"] : 100;
            currentHP -= GetDMG((int)values[0], (int)values[1]);
            Hashtable setPlayerData = new Hashtable();
            setPlayerData.Add("PlayerHP", currentHP); //Setup player HP by master client
            photonView.owner.SetCustomProperties(setPlayerData);

            if(currentHP < 1)
                {
               photonView.RPC("KillPlayer", PhotonTargets.All, killerID);
               playerKilled = true;
            }
         }
      }
   }

   [PunRPC]
   void KillPlayer (int killerID)
    {
      playerKilled = true;

      if(photonView.isMine)
        {
         soldierAnimation.gameObject.SetActive(true);
         firstPersonView.SetActive(false);

         localMouseLook.enabled = false;
         //fpsController.enabled = false;
         playerWeapons.enabled = false;
         playerWeapons.isFiring = false;

         GameSettings.rc.PrepareRespawn(-killerID, false);
      }

      if(PhotonNetwork.isMasterClient)
        {
         //Set killed player deaths
         if(photonView.owner != null)
            {
            int newDeaths = photonView.owner.customProperties["Deaths"] == null ? 1 : (int)photonView.owner.customProperties["Deaths"] + 1;
            Hashtable setPlayerProperties = new Hashtable();
            setPlayerProperties.Add("Deaths", newDeaths);
            photonView.owner.SetCustomProperties(setPlayerProperties);

            //Do not add kills nor team score if we killed ourselves (fell down etc.)
            if(photonView.owner.ID != killerID)
                {
               //Find killer player instance
               PhotonPlayer killerPLayer = null;
               PhotonPlayer[] allPlayers = PhotonNetwork.playerList;
               for(int i = 0; i < allPlayers.Length; i++)
                    {
                  if(allPlayers[i].ID == killerID)
                        {
                     killerPLayer = allPlayers[i];
                  }
               }

               if(killerPLayer != null)
                    {
                  //Add kills for killer
                  int newKills = killerPLayer.customProperties["Kills"] == null ? 1 : (int)killerPLayer.customProperties["Kills"] + 1;
                  setPlayerProperties = new Hashtable();
                  setPlayerProperties.Add("Kills", newKills);
                  killerPLayer.SetCustomProperties(setPlayerProperties);

                  //Update team scores
                  if(GameSettings.currentGameMode == "TDM")
                        {
                     Hashtable setRoomProperties = new Hashtable();
                     int currentTeamScore = 0;

                     if((int)killerPLayer.customProperties["Team"] == 1)
                            {
                        currentTeamScore = PhotonNetwork.room.customProperties["TeamAScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamAScore"] + 1: 1;
                        setRoomProperties.Add("TeamAScore", currentTeamScore);
                     }
                     if((int)killerPLayer.customProperties["Team"] == 2)
                            {
                        currentTeamScore = PhotonNetwork.room.customProperties["TeamBScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamBScore"] + 1 : 1;
                        setRoomProperties.Add("TeamBScore", currentTeamScore);
                     }

                     if(setRoomProperties.Count > 0)
                            {
                        PhotonNetwork.room.SetCustomProperties(setRoomProperties);
                     }
                  }
               }
            }
         }
      }

      if(PhotonNetwork.player.ID == killerID)
        {
         //Check what weapon we used right before
         string selectedWeaponNameTmp = "[" + lastWeaponName + "]";
         string killedPlayerName = photonView.owner.name;
         int killedPlayerTeam = (int)photonView.owner.customProperties["Team"];

         if(lastBodyPart == -35)
            {
            selectedWeaponNameTmp = "fell";
            killedPlayerName = "down";
            killedPlayerTeam = 0;
         }
            else
            {
            if(lastBodyPart == 0)
                {
               selectedWeaponNameTmp += " -> Headshot";
            }
         }
         //Notify others on kill and add cash
         GameSettings.rc.ReportKill(killedPlayerName, selectedWeaponNameTmp, killedPlayerTeam);
         GameSettings.rc.AddKillCash(lastBodyPart );
      }

      soldierAnimation.PlayKillAnimation();
   }

   int GetDMG (int weaponIndex, int bodyPart)
    {
      if(weaponIndex > -1 && weaponIndex < playerWeapons.totalWeapons.Count)
        {
         //For shotgun we divide damage for number of fractions
         int divideBy = playerWeapons.totalWeapons[weaponIndex].fireType == PlayerWeapons.FireType.Shotgun ? 5 : 1;

         if(bodyPart == 0 || bodyPart == 1)
            {
            if(bodyPart == 0)
                {
               return  playerWeapons.totalWeapons[weaponIndex].headDamage/divideBy;
            }
                else
                {
               return playerWeapons.totalWeapons[weaponIndex].torsoDamage/divideBy;
            }
         }
            else
            {
            return playerWeapons.totalWeapons[weaponIndex].limbsDamage/divideBy;
         }
      }
        else
        {
         return Mathf.Abs(weaponIndex);
      }
   }

   void PlayHitSound ()
    {
      playerAudio.Stop();
      if(playerAudio.clip != hitSound)
        {
         playerAudio.clip = hitSound;
      }
      playerAudio.Play();
   }

   void PlayWalkingSound ()
    {
      //print ("Changed walking state");

      CancelInvoke("PlayWalkingSoundInvoke");

      stepLength = 0;

      if(movementStateLocal == 0 || movementStateLocal == 1 || movementStateLocal == 2 || movementStateLocal == 4)
        {
         if(movementStateLocal == 4)
            {
            //On ladder
            stepLength = 2.5f/fpsController.ladderSpeed;
         }
            else
            {
            if(movementStateLocal == 2)
                {
               //Crouching
               stepLength = 3.5f/fpsController.crouchSpeed;
            }
                else
                {
               if(movementStateLocal == 0)
                    {
                  stepLength = 3.5f/fpsController.walkSpeed;
               }
                    else
                    {
                  stepLength = 3.5f/fpsController.runSpeed;
               }
            }
         }
      }

      if(stepLength > 0)
        {
         InvokeRepeating("PlayWalkingSoundInvoke", 0.09f, stepLength);
      }
   }

   void PlayWalkingSoundInvoke ()
    {
      walkingAudio.Stop();

      if(fpsController.isMoving || soldierAnimation.isMoving)
        {
         if(movementStateLocal == 4)
            {
            //On ladder
            walkingAudio.clip = ladderSounds[Random.Range(0, ladderSounds.Length - 1)];
         }
            else
            {
            //Walkig
            walkingAudio.clip = walkingSounds[Random.Range(0, walkingSounds.Length - 1)];
         }

         walkingAudio.Play();
      }
   }
}

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Dom Jul 03, 2016 1:21 am

agora ta certo ?

Sheyk
Avançado
Avançado

PONTOS : 390
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por MarcosSchultz em Dom Jul 03, 2016 7:42 pm

Pegou este script pronto de algum lugar?

Estão faltando um monte de scripts adicionais para que possamos ajudar... seria melhor zipar o projeto e enviar para que possamos ver. Ou terá que enviar os scripts que faltam como:

SoldierAnimation, PlayerWeapons, FPSController, FPSMouseLook, Photon, e toda a parte do Photon e suas bibliotecas.

O HP neste script que você passou não é presente nele... apenas é feita uma indicão, mas o HP real está em outro script. É uma propriedade chamada ""PlayerHP""

O que você pode fazer neste script é deixar esta variável verdadeira: "playerKilled"...

MarcosSchultz
Administrador

Masculino PONTOS : 7509
REPUTAÇÃO : 991
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum