I've been playing around with orpheu and i got this error that i don't understand.
Code:
L 09/23/2011 - 15:19:07: [ORPHEU] Invalid parameters count. Expected [5]. Got [4]
L 09/23/2011 - 15:19:07: [AMXX] Displaying debug trace (plugin "test.amxx")
L 09/23/2011 - 15:19:07: [AMXX] Run time error 10: native error (native "OrpheuCall")
L 09/23/2011 - 15:19:07: [AMXX] [0] test.sma::CmdGib (line 24)
According to the hlsdk & the linux binaries in IDA pro it only has 3 parameters:
Code:
void CGib :: SpawnStickyGibs( entvars_t *pevVictim, Vector vecOrigin, int cGibs )
{
int i;
if ( g_Language == LANGUAGE_GERMAN )
{
// no sticky gibs in germany right now!
return;
}
for ( i = 0 ; i < cGibs ; i++ )
{
CGib *pGib = GetClassPtr( (CGib *)NULL );
pGib->Spawn( "models/stickygib.mdl" );
pGib->pev->body = RANDOM_LONG(0,2);
if ( pevVictim )
{
pGib->pev->origin.x = vecOrigin.x + RANDOM_FLOAT( -3, 3 );
pGib->pev->origin.y = vecOrigin.y + RANDOM_FLOAT( -3, 3 );
pGib->pev->origin.z = vecOrigin.z + RANDOM_FLOAT( -3, 3 );
/*
pGib->pev->origin.x = pevVictim->absmin.x + pevVictim->size.x * (RANDOM_FLOAT ( 0 , 1 ) );
pGib->pev->origin.y = pevVictim->absmin.y + pevVictim->size.y * (RANDOM_FLOAT ( 0 , 1 ) );
pGib->pev->origin.z = pevVictim->absmin.z + pevVictim->size.z * (RANDOM_FLOAT ( 0 , 1 ) );
*/
// make the gib fly away from the attack vector
pGib->pev->velocity = g_vecAttackDir * -1;
// mix in some noise
pGib->pev->velocity.x += RANDOM_FLOAT ( -0.15, 0.15 );
pGib->pev->velocity.y += RANDOM_FLOAT ( -0.15, 0.15 );
pGib->pev->velocity.z += RANDOM_FLOAT ( -0.15, 0.15 );
pGib->pev->velocity = pGib->pev->velocity * 900;
pGib->pev->avelocity.x = RANDOM_FLOAT ( 250, 400 );
pGib->pev->avelocity.y = RANDOM_FLOAT ( 250, 400 );
// copy owner's blood color
pGib->m_bloodColor = (CBaseEntity::Instance(pevVictim))->BloodColor();
if ( pevVictim->health > -50)
{
pGib->pev->velocity = pGib->pev->velocity * 0.7;
}
else if ( pevVictim->health > -200)
{
pGib->pev->velocity = pGib->pev->velocity * 2;
}
else
{
pGib->pev->velocity = pGib->pev->velocity * 4;
}
pGib->pev->movetype = MOVETYPE_TOSS;
pGib->pev->solid = SOLID_BBOX;
UTIL_SetSize ( pGib->pev, Vector ( 0, 0 ,0 ), Vector ( 0, 0, 0 ) );
pGib->SetTouch ( &CGib::StickyGibTouch );
pGib->SetThink (NULL);
}
pGib->LimitVelocity();
}
}
My code:
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <orpheu>
new OrpheuFunction: FwdSpawnStickyGibs;
public plugin_precache()
precache_model("models/stickygib.mdl");
public plugin_init()
{
FwdSpawnStickyGibs = OrpheuGetFunction("SpawnStickyGibs", "CGib");
register_clcmd("say /gib", "CmdGib");
}
public CmdGib(id)
{
new Float: flOrigin[3];
pev(id, pev_origin, flOrigin);
OrpheuCall(FwdSpawnStickyGibs, id, flOrigin, 10);
client_print(id, print_chat, "GIBBING...");
}
Signature:
Code:
{
"name" : "SpawnStickyGibs",
"class" : "CGib",
"library" : "mod",
"arguments" :
[
{
"info" : "Victim id",
"type" : "entvars_s *"
},
{
"info" : "Origin",
"type" : "Vector"
},
{
"info" : "Amount of gibs",
"type" : "int"
}
],
"identifiers":
[
{
"os" : "windows",
"mod" : "cstrike",
"value" : [0x8B,0x49,"*",0x83,0xEC,"*",0x83,0xC1,"*",0xD9,0x41,"*",0xD9,0x41,"*",0xD9]
},
{
"os" : "linux",
"mod" : "cstrike",
"value" : "SpawnStickyGibs__4CGibP9entvars_sG6Vectori"
}
]
}
__________________