Code:
public cmd_CreateWorld(iID, iLevel, iCid)
{
if(!cmd_access(iID, iLevel, iCid, 8))
return PLUGIN_HANDLED;
if(!isEntMod(iID))
return PLUGIN_HANDLED;
if(!UserHasEntModAccess(iID, 3))
return PLUGIN_HANDLED;
new Float: fOrigin[VEC_SIZE], Float: fAngles[VEC_SIZE];
for(new i = 0; i < VEC_SIZE; i++)
{
fAngles[i] = read_argv_float(i + 1);
if(fAngles[i] < 0.0 || fAngles[i] > 360.0)
{
console_print(iID, "Angles must be between 0 and 360");
return PLUGIN_HANDLED;
}
}
for(new i = 0; i < VEC_SIZE; i++)
fOrigin[i] = read_argv_float(i + 4);
new szModel[NAME_LEN + VEC_SIZE * 2];
new iFlags = 1 + 64 + 8 + 4;
new iSpeed = read_argv_int(7);
if(iSpeed <= 0)
{
console_print(iID, "Speed set to 100.");
iSpeed = 100;
}
new iReverse = read_argv_int(8);
if(iReverse == 1)
iFlags += 2;
if(iReverse < 0 || iReverse > 1)
{
console_print(iID, "Must be 0 or 1.");
return PLUGIN_HANDLED;
}
new iWorld = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_rotating"));
get_mapname(szModel, charsmax(szModel));
format(szModel, charsmax(szModel), "maps/%s.bsp", szModel);
FM_DispatchKeyValue(iWorld, "model", szModel);
FM_DispatchKeyValue_Vector(iWorld, "origin", fOrigin);
FM_DispatchKeyValue_Vector(iWorld, "spawnorigin", fOrigin);
FM_DispatchKeyValue_Vector(iWorld, "angles", fAngles);
FM_DispatchKeyValue_Int(iWorld, "speed", iSpeed);
FM_DispatchKeyValue_Int(iWorld, "distance", 90);
FM_DispatchKeyValue_Int(iWorld, "fanfriction", 50);
FM_DispatchKeyValue_Int(iWorld, "spawnflags", iFlags);
dllfunc(DLLFunc_Spawn, iWorld);
engfunc(EngFunc_SetOrigin, iWorld, fOrigin);
set_pev_string(iWorld, pev_classname, engfunc(EngFunc_AllocString, g_szWorldClass));
if(!g_bIsNew[iWorld])
g_bIsNew[iWorld] = true;
FVecIVec(fOrigin, g_iOrigin[iWorld]);
return PLUGIN_HANDLED;
}