]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Added SSQC Function "SV_OnEntityNoSpawnFunction" which is called, if available, whene...
authordresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 16 Aug 2007 06:35:30 +0000 (06:35 +0000)
committerdresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 16 Aug 2007 06:35:30 +0000 (06:35 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7525 d7cf8633-e32d-0410-b094-e92efae38249

progsvm.h
prvm_edict.c
svvm_cmds.c

index 9d50da706ee6a22b01d943321ea1c01b34f3fa77..52dfd03b216b9288ce077f1a09cc59f7cbfbc1ba 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -267,6 +267,7 @@ typedef struct prvm_prog_funcoffsets_s
        func_t SV_ChangeTeam; // ssqc
        func_t SV_ParseClientCommand; // ssqc
        func_t SV_PlayerPhysics; // ssqc
+       func_t SV_OnEntityNoSpawnFunction; // ssqc
        func_t GameCommand; // any
 
        // menu qc only uses some functions, nothing else
index 102a40c73a304c9a9fc91bb30c25fe2bbe79a418..8b269d55370127737203a63d591d19cd74bdffdc 100644 (file)
@@ -1284,18 +1284,30 @@ void PRVM_ED_LoadFromFile (const char *data)
 
                        if (!func)
                        {
-                               if (developer.integer) // don't confuse non-developers with errors
+                               // check for OnEntityNoSpawnFunction
+                               if (prog->funcoffsets.SV_OnEntityNoSpawnFunction)
                                {
-                                       Con_Print("No spawn function for:\n");
-                                       PRVM_ED_Print(ent, NULL);
+                                       // self = ent
+                                       PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict = PRVM_EDICT_TO_PROG(ent);
+                                       PRVM_ExecuteProgram (prog->funcoffsets.SV_OnEntityNoSpawnFunction, "QC function SV_OnEntityNoSpawnFunction is missing");
+                               }
+                               else
+                               {
+                                       if (developer.integer) // don't confuse non-developers with errors
+                                       {
+                                               Con_Print("No spawn function for:\n");
+                                               PRVM_ED_Print(ent, NULL);
+                                       }
+                                       PRVM_ED_Free (ent);
+                                       continue;
                                }
-                               PRVM_ED_Free (ent);
-                               continue;
                        }
-
-                       // self = ent
-                       PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict = PRVM_EDICT_TO_PROG(ent);
-                       PRVM_ExecuteProgram (func - prog->functions, "");
+                       else
+                       {
+                               // self = ent
+                               PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict = PRVM_EDICT_TO_PROG(ent);
+                               PRVM_ExecuteProgram (func - prog->functions, "");
+                       }
                }
 
                spawned++;
@@ -1419,6 +1431,7 @@ void PRVM_FindOffsets(void)
        prog->funcoffsets.SV_ChangeTeam                   = PRVM_ED_FindFunctionOffset("SV_ChangeTeam");
        prog->funcoffsets.SV_ParseClientCommand           = PRVM_ED_FindFunctionOffset("SV_ParseClientCommand");
        prog->funcoffsets.SV_PlayerPhysics                = PRVM_ED_FindFunctionOffset("SV_PlayerPhysics");
+       prog->funcoffsets.SV_OnEntityNoSpawnFunction      = PRVM_ED_FindFunctionOffset("SV_OnEntityNoSpawnFunction");
        prog->funcoffsets.GameCommand                     = PRVM_ED_FindFunctionOffset("GameCommand");
        prog->globaloffsets.SV_InitCmd                    = PRVM_ED_FindGlobalOffset("SV_InitCmd");
        prog->globaloffsets.self                          = PRVM_ED_FindGlobalOffset("self");
index 106aebae97319abe42d03dae031cc5c54ba7afe7..b0cfa77562185ae84f9f391f30fcdcb008058039 100644 (file)
@@ -98,6 +98,7 @@ char *vm_sv_extensions =
 "DP_SV_DROPCLIENT "
 "DP_SV_EFFECT "
 "DP_SV_ENTITYCONTENTSTRANSITION "
+"DP_SV_ONENTITYNOSPAWNFUNCTION "
 "DP_SV_MODELFLAGS_AS_EFFECTS "
 "DP_SV_NETADDRESS "
 "DP_SV_NODRAWTOCLIENT "