The New Future :: FOnline, Half-life 2 :: Roleplay It!  

Вернуться   The New Future :: FOnline, Half-life 2 :: Roleplay It! > Прочее > FOmod > Учебка

Учебка Обучающие материалы.

Ответ
 
Опции темы Опции просмотра
Старый 14.04.2013, 03:33   #1
Gekko
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 112
Вес репутации: 54
Gekko is on a distinguished road
По умолчанию Повтор атаки

Если не жалко, поделитесь плз скриптом, на повтор атаки при нажатии клавиши пробел. Спасибо.

И как называется левый шифт, чтоб на него назначать? шифт + буква
Gekko вне форума   Ответить с цитированием
Старый 14.04.2013, 03:48   #2
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию

Цитата:
И как называется левый шифт, чтоб на него назначать?
_client_defines.fos
Код:
#define DIK_LSHIFT                          0x2A
Цитата:
шифт + буква
_client_gui.fos
Код:
bool[] KeyPressed;
...
KeyPressed.resize( 0x100 );
...
KeyPressed[uint8]
...
пример
if(KeyPressed[DIK_LSHIFT] && click == MOUSE_CLICK_LEFT){Message("work");}
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
Данный человек сказал спасибо PowerMagic за этот пост:
Gekko (14.04.2013)
Старый 15.04.2013, 04:54   #3
Gekko
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 112
Вес репутации: 54
Gekko is on a distinguished road
По умолчанию

Как можно определить, какого криттера ты атаковал последним или есть ли функция повтора последнего действия?
Gekko вне форума   Ответить с цитированием
Старый 15.04.2013, 15:42   #4
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию

Цитата:
или есть ли функция повтора последнего действия?
не припомню такой, хотел реализовать повтор атаки через chosen actions, но там нет события атаки или я не нашел.

посему придется вызывать на сервере из combat.fos
Код:
void CombatAttack(...)
принудительно проигрывать анимацию криттера, отнимать ОД. и "что-то еще".
подобный подход применет в атаке по территории, также вопрос расчета од поднимался в факе по скриптам или где-то рядом.

так же можно извратиться(крайне) и попробовать реализовать на клиенте это - перемещать курсор на криттера, выставлять тип курсора "атака" и форсировать нажатие левой клавиши... но это, сами понимаете D

Цитата:
какого криттера ты атаковал последним
в main.fos
Код:
void critter_attacked( Critter& cr, Critter& attacker )
добавить что-то вроде
Код:
attacker.StatBase[ST_LAST_ATK_ID] = cr.Id;
ST_LAST_ATK_ID обьявить в _defines.fos
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
Старый 15.04.2013, 15:54   #5
binyan
Senior Member
 
Специализация: Вне команды
Регистрация: 09.02.2010
Сообщений: 339
Вес репутации: 171
binyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant futurebinyan has a brilliant future
По умолчанию

Цитата:
Сообщение от PowerMagic Посмотреть сообщение
принудительно проигрывать анимацию криттера
ЕМНИП принудительно проигрывать анимацию не надо, она проигрывается автоматически.
__________________
011000100110100101101110011110010110000101101110

Последний раз редактировалось binyan; 15.04.2013 в 15:55.
binyan вне форума   Ответить с цитированием
Старый 15.04.2013, 20:31   #6
Gekko
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 112
Вес репутации: 54
Gekko is on a distinguished road
По умолчанию

Цитата:
в main.fos
Код:
void critter_attacked( Critter& cr, Critter& attacker )
добавить что-то вроде
Код:
attacker.StatBase[ST_LAST_ATK_ID] = cr.Id;
ST_LAST_ATK_ID обьявить в _defines.fos
А каким условием можно проверить, что твой игрок видит attacker.StatBase[ST_LAST_ATK_ID] = cr.Id; ???

Последний раз редактировалось Gekko; 15.04.2013 в 20:32.
Gekko вне форума   Ответить с цитированием
Старый 15.04.2013, 21:16   #7
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от Gekko Посмотреть сообщение
А каким условием можно проверить, что твой игрок видит attacker.StatBase[ST_LAST_ATK_ID] = cr.Id; ???
не понял вопроса. если про видимость одного криттера другим, попробуй

Код:
bool 	IsSee (Critter& cr)
 	Проверяет, виден ли указанный криттер криттеру. 
bool 	IsSeenBy (Critter& cr)
 	Проверяет, виден ли криттер указанным криттером. 
bool 	IsSee (Item& item)
 	Проверяет, виден ли указанный предмет криттеру.
это методы класса Critter.
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
Старый 22.04.2013, 05:51   #8
Gekko
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 112
Вес репутации: 54
Gekko is on a distinguished road
По умолчанию

if(cr.IsSee(cr.StatBase[ST_LAST_ATK_ID])) - так?

Я просто пробовал написать что-то типа такого:
При нажатии пробел, если мой герой видит кого атаковал последним, то провести по нему одиночную атаку/повторить атаку/атаковать
Gekko вне форума   Ответить с цитированием
Старый 11.09.2013, 02:41   #9
tester
Senior Member
 
Аватар для tester
 
Регистрация: 02.02.2012
Сообщений: 152
Вес репутации: 86
tester is a glorious beacon of lighttester is a glorious beacon of lighttester is a glorious beacon of lighttester is a glorious beacon of lighttester is a glorious beacon of light
По умолчанию

Попытка реализовать неудачна
вот код d в модуле clien_main.fos, функция bool key_down(uint 8)

Код:
	if( LeftShift && key == DIK_A )
    {
	    uint Attack_TargId;	
        CritterCl@ cr = GetChosen();
		Critter@ target;
		 if(target.EventAttacked( cr ))   // если игрок или нпс атакован запоминаем его айди
		 {
		Attack_TargId = target.Id;
		}
        if( valid( target ) && cr.IsLife())
        {
		 cr.SetEvent( CRITTER_EVENT_ATTACK, Attack_TargId );	 // атакуе последнего критера
		}
    }
ошибка
Код:
[20:144] Reload client scripts...
[20:280] Script message: client_main : Info : Compiling bool key_down(uint8) : 315, 1.
[20:280] Script message: client_main : Error : Identifier 'Critter' is not a data type : 385, 3.
[20:375] Script::LoadScript - Unable to Build module<client_main>, result<-1>.
[20:375] FOServer::ReloadClientScripts - Unable to load client script<client_main>.
tester вне форума   Ответить с цитированием
Старый 11.09.2013, 15:54   #10
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию

компилятор же указывает
Код:
Error : Identifier 'Critter' is not a data type.
что по-русски будет "определитель криттер не тип данных".

и в коде мы видим.
Код:
Critter@ target;
ладно, даже если это заработает, то следущей ошибкой будет
Код:
Null pointer access
что намекает, что указатель @target пустой.

client_main.fos, как из префикса видно, да и если заглянем в script.cfg является клиентским модулем. Critter - серверный класс. CritterCl - клиентский. они различаются. см референс.

и еще:
Critter::SetEvent серверный api
что за EventAttacked ?
__________________
Jet Rock's

Последний раз редактировалось PowerMagic; 11.09.2013 в 15:56.
PowerMagic вне форума   Ответить с цитированием
Данный человек сказал спасибо PowerMagic за этот пост:
tester (11.09.2013)
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:00.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Для внутреннего пользования