|
Member
Join Date: Sep 2011
Location: Denmark
|

09-13-2015
, 22:04
[Orpheu] Structs
|
#1
|
Hi,
Im messing a bit with CBaseMonster, and I want to try and make tasks and schedules in pawn and pass them.
Im trying to make this atm as an example from CHeadCrab:
CHeadCrab
PHP Code:
Task_t tlHCRangeAttack1[] =
{
{ TASK_STOP_MOVING, (float)0 },
{ TASK_FACE_IDEAL, (float)0 },
{ TASK_RANGE_ATTACK1, (float)0 },
{ TASK_SET_ACTIVITY, (float)ACT_IDLE },
{ TASK_FACE_IDEAL, (float)0 },
{ TASK_WAIT_RANDOM, (float)0.5 },
};
Schedule_t slHCRangeAttack1[] =
{
{
tlHCRangeAttack1,
ARRAYSIZE ( tlHCRangeAttack1 ),
bits_COND_ENEMY_OCCLUDED |
bits_COND_NO_AMMO_LOADED,
0,
"HCRangeAttack1"
},
};
Schedule_t* CHeadCrab :: GetScheduleOfType ( int Type )
{
switch ( Type )
{
case SCHED_RANGE_ATTACK1:
{
return &slHCRangeAttack1[ 0 ];
}
break;
}
return CBaseMonster::GetScheduleOfType( Type );
}
And I've got this translated to this in pawn:
Pawn
PHP Code:
static OrpheuStruct:tlHCRangeAttack1[6]
static OrpheuStruct:slHCRangeAttack1
tlHCRangeAttack1[0] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[0], "iTask", TASK_STOP_MOVING)
OrpheuSetStructMember(tlHCRangeAttack1[0], "flData", 0.0)
tlHCRangeAttack1[1] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[1], "iTask", TASK_FACE_IDEAL)
OrpheuSetStructMember(tlHCRangeAttack1[1], "flData", 0.0)
tlHCRangeAttack1[2] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[2], "iTask", TASK_RANGE_ATTACK1)
OrpheuSetStructMember(tlHCRangeAttack1[2], "flData", 0.0)
tlHCRangeAttack1[3] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[3], "iTask", TASK_SET_ACTIVITY)
OrpheuSetStructMember(tlHCRangeAttack1[3], "flData", 1.0)
tlHCRangeAttack1[4] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[4], "iTask", TASK_FACE_IDEAL)
OrpheuSetStructMember(tlHCRangeAttack1[4], "flData", 0.0)
tlHCRangeAttack1[5] = OrpheuCreateStruct(OrpheuStructTask)
OrpheuSetStructMember(tlHCRangeAttack1[5], "iTask", TASK_WAIT_RANDOM)
OrpheuSetStructMember(tlHCRangeAttack1[5], "flData", 0.5)
slHCRangeAttack1 = OrpheuCreateStruct(OrpheuStructSchedule)
OrpheuSetStructMember(slHCRangeAttack1, "pTasklist", tlHCRangeAttack1)
OrpheuSetStructMember(slHCRangeAttack1, "cTasks", sizeof(tlHCRangeAttack1))
OrpheuSetStructMember(slHCRangeAttack1, "iInterruptMask", bits_COND_ENEMY_OCCLUDED | bits_COND_NO_AMMO_LOADED)
OrpheuSetStructMember(slHCRangeAttack1, "iSoundMask", 0)
OrpheuSetStructMember(slHCRangeAttack1, "pName", "HCRangeAttack1")
public OrpheuHookReturn:GetScheduleOfType(iMonster, iType)
{
switch ( iType )
{
case SCHED_RANGE_ATTACK1:
{
OrpheuSetReturn(slHCRangeAttack1)
return OrpheuOverride
}
}
return OrpheuIgnored
}
This works sort of, problem is that only the first task gets run. Is there a way I can make this work?
__________________
CTFGasGrenade :: GasThePlace(void)
|
|