![]() |
![]() |
#1 |
Senior Member
Регистрация: 14.04.2013
Сообщений: 113
Вес репутации: 116 ![]() |
![]()
Если не жалко, поделитесь плз скриптом, на повтор атаки при нажатии клавиши пробел. Спасибо.
И как называется левый шифт, чтоб на него назначать? шифт + буква |
![]() |
![]() |
![]() |
#2 | ||
Lost Overseer
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 644 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Код:
#define DIK_LSHIFT 0x2A Цитата:
Код:
bool[] KeyPressed; ... KeyPressed.resize( 0x100 ); ... KeyPressed[uint8] ... пример if(KeyPressed[DIK_LSHIFT] && click == MOUSE_CLICK_LEFT){Message("work");}
__________________
Jet Rock's |
||
![]() |
![]() |
Данный человек сказал спасибо PowerMagic за этот пост: |
Gekko (14.04.2013)
|
![]() |
#3 |
Senior Member
Регистрация: 14.04.2013
Сообщений: 113
Вес репутации: 116 ![]() |
![]()
Как можно определить, какого криттера ты атаковал последним или есть ли функция повтора последнего действия?
|
![]() |
![]() |
![]() |
#4 | ||
Lost Overseer
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 644 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
посему придется вызывать на сервере из combat.fos Код:
void CombatAttack(...) подобный подход применет в атаке по территории, также вопрос расчета од поднимался в факе по скриптам или где-то рядом. так же можно извратиться(крайне) и попробовать реализовать на клиенте это - перемещать курсор на криттера, выставлять тип курсора "атака" и форсировать нажатие левой клавиши... но это, сами понимаете ![]() Цитата:
Код:
void critter_attacked( Critter& cr, Critter& attacker ) Код:
attacker.StatBase[ST_LAST_ATK_ID] = cr.Id;
__________________
Jet Rock's |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Специализация: Вне команды
Регистрация: 09.02.2010
Сообщений: 339
Вес репутации: 233 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
ЕМНИП принудительно проигрывать анимацию не надо, она проигрывается автоматически.
__________________
011000100110100101101110011110010110000101101110 Последний раз редактировалось binyan; 15.04.2013 в 15:55. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Регистрация: 14.04.2013
Сообщений: 113
Вес репутации: 116 ![]() |
![]() Цитата:
Последний раз редактировалось Gekko; 15.04.2013 в 20:32. |
|
![]() |
![]() |
![]() |
#7 | |
Lost Overseer
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 644 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Код:
bool IsSee (Critter& cr) Проверяет, виден ли указанный криттер криттеру. bool IsSeenBy (Critter& cr) Проверяет, виден ли криттер указанным криттером. bool IsSee (Item& item) Проверяет, виден ли указанный предмет криттеру.
__________________
Jet Rock's |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 14.04.2013
Сообщений: 113
Вес репутации: 116 ![]() |
![]()
if(cr.IsSee(cr.StatBase[ST_LAST_ATK_ID])) - так?
Я просто пробовал написать что-то типа такого: При нажатии пробел, если мой герой видит кого атаковал последним, то провести по нему одиночную атаку/повторить атаку/атаковать |
![]() |
![]() |
![]() |
#9 |
Senior Member
Регистрация: 02.02.2012
Сообщений: 153
Вес репутации: 148 ![]() ![]() ![]() ![]() ![]() |
![]()
Попытка реализовать неудачна
вот код 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>. |
![]() |
![]() |
![]() |
#10 |
Lost Overseer
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 644 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
компилятор же указывает
Код:
Error : Identifier 'Critter' is not a data type. и в коде мы видим. Код:
Critter@ target; Код:
Null pointer access client_main.fos, как из префикса видно, да и если заглянем в script.cfg является клиентским модулем. Critter - серверный класс. CritterCl - клиентский. они различаются. см референс. и еще: Critter::SetEvent серверный api что за EventAttacked ?
__________________
Jet Rock's Последний раз редактировалось PowerMagic; 11.09.2013 в 15:56. |
![]() |
![]() |
Данный человек сказал спасибо PowerMagic за этот пост: |
tester (11.09.2013)
|