// For conversions s and c, the flag # makes precision and width interpreted
// as byte count, by default it is interpreted as character count in UTF-8
// enabled engines. No other conversions can create wide characters, and #
-// has another meaning in these.
+// has another meaning in these. When in character count mode, color codes
+// are ignored. To get UTF-8 semantics WITHOUT color code parsing, use
+// the + flag.
//DP_QC_STRFTIME
//idea: LordHavoc
//globals:
//new movetypes:
const float MOVETYPE_PHYSICS = 32; // need to be set before any physics_* builtins applied
-//new solid types:
+//new solid types (deprecated):
const float SOLID_PHYSICS_BOX = 32;
const float SOLID_PHYSICS_SPHERE = 33;
const float SOLID_PHYSICS_CAPSULE = 34;
const float SOLID_PHYSICS_TRIMESH = 35;
const float SOLID_PHYSICS_CYLINDER = 36;
+//geometry types:
+const float GEOMTYPE_NULL = 0;
+const float GEOMTYPE_BOX = 1;
+const float GEOMTYPE_SPHERE = 2;
+const float GEOMTYPE_CAPSULE = 3;
+const float GEOMTYPE_TRIMESH = 4;
+const float GEOMTYPE_CYLINDER = 5;
//SOLID_BSP;
//joint types:
const float JOINTTYPE_POINT = 1;
// movedir_z = stop position (+/-), set to 0 for no stop
// note that ODE does not support both in one anyway
//field definitions:
+.float geomtype; // see GEOMTYPE_*, a more correct way to set collision shape, allows to set SOLID_CORPSE and trimesh collisions
.float mass; // ODE mass, standart value is 1
.vector massofs; // offsets a mass center out of object center, if not set a center of model bounds is used
.float friction;
string(string serveraddress) crypto_getencryptlevel = #635; // 0 if never encrypting, 1 supported, 2 requested, 3 required, appended by list of allowed methods in order of preference ("AES128"), preceded by a space each
string(float i) crypto_getmykeyfp = #636; // retrieves the CA key fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
string(float i) crypto_getmyidfp = #637; // retrieves the ID fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
+float CRYPTO_IDSTATUS_OUTOFRANGE = -1;
+float CRYPTO_IDSTATUS_EMPTY = 0;
+float CRYPTO_IDSTATUS_UNSIGNED = 1;
+float CRYPTO_IDSTATUS_SIGNED = 2;
+float(float i) crypto_getmyidstatus = #641; // retrieves the ID's status of a given CA slot, or 0 if slot is unused but more to come, or -1 if end of list
float(string url, float id, string content_type, string delim, float buf, float keyid) crypto_uri_postbuf = #513;
//description:
//use -1 as buffer handle to justs end delim as postdata
Drag_MoveDrag(oldself, self);
if(self.colormap <= maxclients && self.colormap > 0)
- self.colormap = 1024 + self.clientcolors;
+ self.colormap = 1024 + oldself.clientcolors;
CSQCMODEL_AUTOINIT();
self.CopyBody_nextthink = oldself.nextthink;
{
for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5); e; e = e.chain)
if(!e.conveyor.state)
- if(e.movetype != MOVETYPE_NONE)
+ if(isPushable(e))
{
vector emin = e.absmin;
vector emax = e.absmax;
if(e.flags & FL_CLIENT) // doing it via velocity has quite some advantages
continue; // done in SV_PlayerPhysics
+ setorigin(e, e.origin + self.movedir * sys_frametime);
+ move_out_of_solid(e);
+ UpdateCSQCProjectile(e);
+ /*
// stupid conveyor code
tracebox(e.origin, e.mins, e.maxs, e.origin + self.movedir * sys_frametime, MOVE_NORMAL, e);
if(trace_fraction > 0)
setorigin(e, trace_endpos);
+ */
}
}
void spawnfunc_trigger_conveyor()
{
+ SetMovedir();
EXACTTRIGGER_INIT;
conveyor_init();
}