Some things I found (while making CSDM) on CS entities: 1] You cannot add new spawns dynamically to CS 1.6 anymore. 2] You cannot remove spawns dynamically from CS 1.6 anymore. 3] You can create weapons in two ways - spawning them (in CS 1.6 they will disappear after 2 seconds though) or by creating "fake ones" and hooking Touch() 4] You can remove weapons from CS still... you can look into the archives and see me begging Alfred to help me with this :] but that was met with nothing. Calling a weapon's Think() function will destroy it... in Metamod that's MDLL_Think(edict_t *). I have not tested deleting spawns because that is no longer useful to me (now I created an algorithm to use the old spawns and set origins.
Note that this is how you should remove weapons: Find the "weaponbox" that has the target weapon model, then remove the actual entity that has the weapon as the classname, whose owner is the weaponbox entity. 5] You can test if a player has a shield by seeing what model they have I think. That is how many AMX Mod * plugins do it. To spawn weapons in CS what I did was make my own internally cached "fake" weapon entities, which are stored in a hash array... then when a player touches them, I use the item giving code from OLO's fun module. I'll give you code because I spent weeks figuring this out :] If Valve decides to break it again in a future update, I will probably quit because too many people would harass me to fix it :\ but since they are not obligated to not break it, be aware that this may not work in the future. -----David "BAILOPAN" Anderson http://www.amxmodx.org/ Example code for giving a CS weapon: int iWeapon = ALLOC_STRING("weapon_awp"); edict_t *pWeapon = CREATE_NAMED_ENTITY(iWeapon); if (FNullEnt(pWeapon)) return; pWeapon->v.origin = pEntity->v.origin; pWeapon->v.spawnflags |= SF_NORESPAWN; MDLL_Spawn(pWeapon); int solidstate = pWeapon->v.solid; MDLL_Touch(pWeapon, ENT(pEntity)); if (pWeapon->v.solid == solidstate) REMOVE_ENTITY(pWeapon); Example code for destroying a CS weapon: #ifdef STEAM #define RemoveWeapon(x) MDLL_Think(x) #else #define RemoveWeapon(x) REMOVE_ENTITY(x) #endif void DeleteCSWeapon(char *weaponmodel, char *weapon, int player) { edict_t *pPlayer = INDEXENT(player); edict_t *tEnt = FIND_ENTITY_BY_STRING(NULL, "classname", "weaponbox"); edict_t *wEnt = NULL; while (!FNullEnt(tEnt)) { const char *model = STRING(model); if (strcmp(model, weaponmodel)==0) { if (ENTINDEX(tEnt->v.owner)==player) { wEnt = FIND_ENTITY_BY_STRING(NULL, "classname", weapon); while (!FNullEnt(wEnt)) { if (ENTINDEX(wEnt->v.owner)==ENTINDEX(tEnt)) { RemoveWeapon(wEnt); } wEnt = FIND_ENTITY_BY_STRING(wEnt, "classname", weapon); } //finding wEnts } //owners matched RemoveWeapon(tEnt); } //weapon matched tEnt = FIND_ENTITY_BY_STRING(tEnt, "classname", "weaponbox"); } //finding tEnts } Code for spawning a permanent weapon the ground: build your own give weapon wrapper :] _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders