Захват базы(RPC) Помогите!буду очень благодарен..

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Захват базы(RPC) Помогите!буду очень благодарен..

Сообщение KorsaiR 11 дек 2012, 12:04

Хай всем! :)

описываю кратко:
есть станция. У неё 2 переменных:кол - во захватчиков людей и лейрансов(это 2 расы типо)

захватчики - всмысле корабли подплывают и высаживают экипаж для захвата в теч.нескольких минут.

так вот! полностью сначала:
сервер создаёт игру - и станция эта спавнится на нем, с network view и т.п, вообщем клиенты её потом тоже видят, тут всё ок.

но! когда игрок высаживает экипаж - на его экране показываются переменные этого экипажа(высаженного на станцию). Мне нужно чтобы показывалось общее кол-во, а показывается только то, что игрок сам высадил. То есть даже если один высадил 100 человек, второй подлетит - и у него высветится что на базе 0 человек.

То есть мне нужно вот что: чтобы каждые допустим 10-15 секунд база отправляла всем игрокам информацию о этих 2х переменных. Как это сделать, ткните носом пожалуйста. в справке есть что - то, но там нечто другое..
хотя бы принцип, откуда копать, почему не работает. вот скрипт, если поможет..

Синтаксис:
Используется javascript


var zahv = false;//эта переменная работает когда мы в триггере. то есть захват идёт только когда она врублена
var zahvatcikL:int;//захватчики лейрансов
var zahvatcikP:int;//захватчики людей
var pl : Transform;//игрок который высаживает в данный момент(см.ниже)




function Start () {

}

function Update () {



}









function OnTriggerStay(obj: Collider){//если иобьект в триггере станции..
if(obj.gameObject.tag =="Player")if(obj.networkView.isMine){//если это игрок, если он принадлежит моему компу
zahv = true;//захват возможен

prs = obj.gameObject.GetComponent("Proch");//ищем скрипт на игроке, в котором экипаж..то есть переменная-число экипажа..
if(Input.GetKeyUp(KeyCode.E)){//если тыкаем кнопку


pl = obj.transform;//переменная становится наш игрок, и далее..


if(prs.stor == 2){//если мы люди
networkView.RPC("ONp", RPCMode.All, new Vector3());//пользуем метод добавления числа человеков)



}
if(prs.stor == 1){//аналогично и с этими
networkView.RPC("ONl", RPCMode.All, new Vector3());

}
}

}


}



function OnTriggerExit(obje : Collider){//если выходим из триггера

if(obje.gameObject.tag =="Player")if(obje.networkView.isMine){//вообщем вы поняли

zahv = false;

}


}

function OnGUI(){//отображение GUI

if(zahv){
GUI.Box(new Rect(Screen.width/3,Screen.height/3,Screen.width/3,Screen.height/25),"Захват базы(E-высадить экипаж");
GUI.Box(new Rect(Screen.width/3,Screen.height/2.7f,Screen.width/6,Screen.height/25),"Люди:"+zahvatcikP);
GUI.Box(new Rect(Screen.width/2f,Screen.height/2.7f,Screen.width/6,Screen.height/15),"Экипаж Станции:"+Ekipaj);
GUI.Box(new Rect(Screen.width/3,Screen.height/2.5f,Screen.width/6,Screen.height/25),"Лейрансы:"+zahvatcikL);

//вообщем на экране появляется инфа - сколько каких захватчиков уже есть на станции.
}
}


@RPC

function ONp(location : Vector3){//сами функции
pr = pl.gameObject.GetComponent("Proch");//ищем у захватчика тот же скрипт


zahvatcikP += (pr.ekipaj);//прибавляем нашу переменную к переменной игрока
pr.ekipaj = 0;//обнуляем переменную игрока(высадили ведь)

}

@RPC

function ONl(location : Vector3){//ну и тут аналог
pre = pl.gameObject.GetComponent("Proch");


zahvatcikL +=(pre.ekipaj);
pre.ekipaj = 0;
}

@RPC

function inf(location : Vector3){//вот тут пусто, хочу вызывать то, что будет тут(инфу которая отправляется всем) через опр.период

//ПОМОГИТЕ ПОЖАЛУЙСТА! <img src="./images/smilies/1.gif" alt=":)" title="Happy" />






}


 
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Захват базы(RPC) Помогите!буду очень благодарен..

Сообщение jetyb 11 дек 2012, 13:25

А почему собственно все должно работать, если в качестве аргументов RPC ты передаешь только new Vector3() ?
Заложенного в скрипт смысла не понял, для начала надо делать 2 разных скрипта: для клиента и для сервера.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Захват базы(RPC) Помогите!буду очень благодарен..

Сообщение KorsaiR 11 дек 2012, 13:27

ну вот я и прошу вас помочь, ибо не могу сам вникнуть в работу сети.
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Захват базы(RPC) Помогите!буду очень благодарен..

Сообщение eligma 12 дек 2012, 02:39

Ну то все хорошо, высветить кто вошел в базу в игре не проблема - а новый заходящий игрок? я у себя для нового делал так - снимал просто на levelwasLoad интересующую переменную с сервера. но не знаю преально сделал как то криво . делаю так пардон за синтаксис
Синтаксис:
Используется javascript
var CountDeath = 0;

function OnLevelWasLoaded (level : int) {
    if (level == mainLevel)
            networkView.RPC("SendServer", RPCMode.Server);
}      

@RPC
function SendServer () {
     networkView.RPC("SendDnum", RPCMode.All, CountDeath); //отправляет с сервера переменную
 }  

@RPC
function SendDnum (count : int) {
CountDeath = count;
}
 

через 2 рпс не знаю, но работает

а вхождение в базу пробелм не вижу
Синтаксис:
Используется javascript
var  x =0;
function OnMouseDown () {
    if (networkView.ismine)
            networkView.RPC("пошли", RPCMode.All);
}
@RPC
function пошли () {
x+ = 100;                      //либо передать параметром сколько
}

и на всех машинах прибавиться это число в переменную х, а загонит в базу только один клиент
Gleeko Multiplayer Gameplay------Знаете ли вы что протокол IPV6 в 1 000 000 раз превышает по возможностям протокол IPV4? А также протокол IPV6 официально был запущен в прошлом году 6.06 числа в 6 часов утра. Это событие отмечали во всем мире.
Аватара пользователя
eligma
Старожил
 
Сообщения: 778
Зарегистрирован: 29 фев 2012, 03:35
  • Сайт


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 24