void GScr_SpawnHelicopter() { const char *type; const char *model; gentity_t *newent; gentity_t *ownerent; vec3_t rotation; vec3_t position; ownerent = Scr_GetEntity(0); if ( !ownerent->client ) { Scr_ParamError(0, "Owner entity is not a player"); } Scr_GetVector(1, position); Scr_GetVector(2, rotation); type = Scr_GetString(3); model = Scr_GetString(4); newent = G_Spawn(); Scr_SetString((unsigned short*)&newent->classname, (unsigned short)stringIndex.script_vehicle); newent->r.currentOrigin[0] = position[0]; newent->r.currentOrigin[1] = position[1]; newent->r.currentOrigin[2] = position[2]; newent->r.currentAngles[0] = rotation[0]; newent->r.currentAngles[1] = rotation[1]; newent->r.currentAngles[2] = rotation[2]; G_SpawnHelicopter(newent, ownerent, type, model); Scr_AddEntity(newent); }
void GScr_FS_FOpen(){ fileHandle_t fh = 0; if(Scr_GetNumParam() != 2) Scr_Error("Usage: FS_FOpen(<filename>, <mode>)\n"); char* filename = Scr_GetString(0); char* mode = Scr_GetString(1); if(!Q_stricmp(mode, "read")){ fh = Scr_OpenScriptFile( filename, SCR_FH_FILE, FS_READ); }else if(!Q_stricmp(mode, "write")){ fh = Scr_OpenScriptFile( filename, SCR_FH_FILE, FS_WRITE); }else if(!Q_stricmp(mode, "append")){ fh = Scr_OpenScriptFile( filename, SCR_FH_FILE, FS_APPEND); }else{ Scr_Error("FS_FOpen(): invalid mode. Valid modes are: read, write, append\n"); } if(!fh){ Com_DPrintf("Scr_FS_FOpen() failed\n"); } Scr_AddInt(fh); }
void GScr_SetCvar() { const char *newstringval; const char *var_name; char buffer[8192]; mvabuf; var_name = Scr_GetString(0); if ( Scr_GetType(1) == 3 ) { Scr_ConstructMessageString(1, Scr_GetNumParam() - 1, "Dvar Value", buffer, 0x400u); newstringval = buffer; } else { newstringval = Scr_GetString(1); } if (Cvar_ValidateString(var_name) ) { Cvar_SetAllowCheatOnly(var_name, newstringval); if ( Scr_GetNumParam() > 2 && Scr_GetInt(2) ) { Cvar_AddFlagsByName(var_name, 0x400u); } } else { Scr_Error(va("Cvar %s has an invalid cvar name", var_name)); } }
void __cdecl G_VehSpawner(gentity_t *ent) { const char* value; char vehTypeStr[MAX_QPATH]; if(level.spawnVars.isGameLoadingSpawn) { G_LevelSpawnString("vehicletype", 0, &value); }else{ if(Scr_GetNumParam() == 3) { //Scr_Error("Usage: spawn(\"script_vehicle\", <origin>, <spawnflags>, <vehicletype>)"); Q_strncpyz(vehTypeStr, "defaultvehicle_mp", sizeof(vehTypeStr)); }else{ Q_strncpyz(vehTypeStr, Scr_GetString(3), sizeof(vehTypeStr)); if(Scr_GetNumParam() == 5) { G_SetModel(ent, Scr_GetString(4)); } } value = vehTypeStr; } SpawnVehicle( ent, value ); }
void PHandler_MetFncExecute() { Com_DPrintf("Attempting to execute a plugin script command '%s'.\n",Scr_GetString(0)); if(!pluginFunctions.enabled){ Com_DPrintf("Error! Tried executing a plugin command with plugins being disabled! Command name: '%s'.\n",Scr_GetString(1)); return; } char name[128]; int i,j; void (*func)(); strcpy(name,Scr_GetString(0)); for(i=0;i<MAX_PLUGINS;i++){ if(pluginFunctions.plugins[i].loaded && pluginFunctions.plugins[i].enabled){ for(j=0;j<pluginFunctions.plugins[i].cmds;j++) if(strcmp(name,pluginFunctions.plugins[i].scr_methods[j].name)==0){ Com_DPrintf("Executing plugin command '%s' for plugin '%s', plugin ID: %d.\n",name,pluginFunctions.plugins[i].name,i); func = (void (*)())(pluginFunctions.plugins[i].scr_methods[j].xcommand); pluginFunctions.hasControl = i; func(); pluginFunctions.hasControl = PLUGIN_UNKNOWN; return; } } } }
void GScr_fopen(int entityIndex) { char* name = Scr_GetString(0); char* mode = Scr_GetString(1); FILE* f = fopen(name, mode); if(f) Scr_AddInt((int)(f)); else Scr_AddInt(-1); }
void GScr_mysql_real_connect(int entityIndex) { MYSQL *m = (MYSQL*)Scr_GetInt(0); char* hostname = Scr_GetString(1); char* username = Scr_GetString(2); char* password = Scr_GetString(3); char* database = Scr_GetString(4); int port = Scr_GetInt(5); if(m != NULL) { MYSQL *c = mysql_real_connect(m, hostname, username, password, database, port, NULL, 0); Scr_AddInt((int)c); } else { Scr_AddUndefined(); } }
void PlayerCmd_GetUserinfo(scr_entref_t arg){ gentity_t* gentity; int entityNum = 0; client_t *cl; mvabuf; if(HIWORD(arg)){ Scr_ObjectError("Not an entity"); }else{ entityNum = LOWORD(arg); gentity = &g_entities[entityNum]; if(!gentity->client){ Scr_ObjectError(va("Entity: %i is not a player", entityNum)); } } if(Scr_GetNumParam() != 1){ Scr_Error("Usage: self getUserinfo( <string> )\n"); } char* u_key = Scr_GetString(0); cl = &svs.clients[entityNum]; char* value = Info_ValueForKey(cl->userinfo, u_key); Scr_AddString(value); }
void GScr_CbufAddTextEx(){ char string[1024]; char outputbuf[1024]; if(Scr_GetNumParam() != 1){ Scr_Error("Usage: execex(<string>)\n"); } Com_sprintf(string, sizeof(string), "%s\n",Scr_GetString(0)); cmd_exec_redirect_buf[0] = '\0'; if(!Q_stricmpn(string, "map", 3) || !Q_stricmpn(string, "fast_restart", 12)) { Cbuf_AddText( string ); }else{ Com_BeginRedirect(outputbuf, sizeof(outputbuf), GScr_CbufExecRedirect); Cmd_ExecuteSingleCommand(0,0, string); Com_EndRedirect(); cmd_exec_redirect_buf[sizeof(cmd_exec_redirect_buf) -1] = '\0'; } Scr_AddString( cmd_exec_redirect_buf ); }
void GScr_CopyString(){ if(Scr_GetNumParam() != 1){ Scr_Error("Usage: CopyStr(<string>)\n"); } Scr_AddString(Scr_GetString(0)); }
void GScr_mysql_real_escape_string(int entityIndex) { MYSQL *m = (MYSQL*)Scr_GetInt(0); char* escape = Scr_GetString(1); char* str = new char[strlen(escape) * 2 + 1]; mysql_real_escape_string(m, str, escape, strlen(escape)); Scr_AddString(str); delete[] str; }
void GScr_mysql_real_escape_string(int entityIndex) { MYSQL *m = (MYSQL*)Scr_GetInt(0); char* escape = Scr_GetString(1); char* str = (char*)malloc(strlen(escape) * 2 + 1); mysql_real_escape_string(m, str, escape, strlen(escape)); Scr_AddString(str); free(str); }
void GScr_StrRepl(){ char buffer[2048]; if(Scr_GetNumParam() != 3){ Scr_Error("Usage: StrReplace(<string>, <string>, <string>)\n"); } char* string = Scr_GetString(0); char* find = Scr_GetString(1); char* replacement = Scr_GetString(2); Q_strnrepl(buffer, sizeof(buffer), string, find, replacement); buffer[sizeof(buffer) -1] = 0; Scr_AddString(buffer); }
void GScr_fexists(int entityIndex) { char* name = Scr_GetString(0); if(FILE *f = fopen(name, "r")) { fclose(f); Scr_AddBool(true); } else { Scr_AddBool(false); } }
void GScr_CbufAddText(){ char string[1024]; if(Scr_GetNumParam() != 1){ Scr_Error("Usage: exec(<string>)\n"); } Com_sprintf(string, sizeof(string), "%s\n",Scr_GetString(0)); Cbuf_AddText( string); }
void GScr_fwrite(int entityIndex) { char* text = Scr_GetString(0); FILE *f = (FILE*)(Scr_GetInt(1)); if(f == NULL) { Scr_AddBool(false); } else { Scr_AddBool(true); fprintf(f, text); } }
void GScr_GetCvarInt() { const char *stringval; if(Scr_GetNumParam() != 1) { Scr_Error("Usage: getcvarint <cvarname>"); } stringval = Cvar_GetVariantString(Scr_GetString(0)); Scr_AddInt(atoi(stringval)); }
void GScr_FS_TestFile(){ int fileExists; if(Scr_GetNumParam() != 1) Scr_Error("Usage: FS_TestFile(<filename>)\n"); char* filename = Scr_GetString(0); fileExists = Scr_FileExists( filename ); Scr_AddBool(fileExists); }
void GScr_SHA256(){ const char *hash; if(Scr_GetNumParam() != 1){ Scr_Error("Usage: sha256(<input text>)\n"); } char* input = Scr_GetString(0); hash = Com_SHA256(input); Scr_AddString(hash); }
void GScr_fsize(int entityIndex) { char* name = Scr_GetString(0); FILE *f = fopen(name, "r"); size_t len; if(f) { fseek(f, 0, SEEK_END); len = ftell(f); rewind(f); Scr_AddInt((int)len); } else { Scr_AddInt(-1); } }
void GScr_SpawnVehicle() { int spawnflags; gentity_t *gentity; vec3_t origin; char vehTypeStr[MAX_QPATH]; char vehModel[MAX_QPATH]; Scr_GetVector(0, origin); if ( Scr_GetNumParam() != 4 ) { Scr_Error("Usage: spawnvehicle <origin>, <spawnflags>, <vehicletype>, <xmodel>"); return; } spawnflags = Scr_GetInt(1); gentity = G_Spawn(); Scr_SetString((unsigned short*)&gentity->constClassname, (unsigned short)stringIndex.script_vehicle); gentity->r.currentOrigin[0] = origin[0]; gentity->r.currentOrigin[1] = origin[1]; gentity->r.currentOrigin[2] = origin[2]; gentity->spawnflags = spawnflags; Q_strncpyz(vehTypeStr, Scr_GetString(2), sizeof(vehTypeStr)); Q_strncpyz(vehModel, Scr_GetString(3), sizeof(vehModel)); G_SetModel(gentity, vehModel); SpawnVehicle( gentity, vehTypeStr ); G_VehCollmapSpawner( gentity ); Scr_AddEntity( gentity ); }
void GScr_MakeCvarServerInfo(void) { const char *var_name; cvar_t *var; const char *newstringval; signed int i; int num_args; char buffer_out[1024]; char buffer[1024]; var_name = Scr_GetString(0); var = Cvar_FindVar(var_name); if ( var ) { Cvar_AddFlags(var, 0x100u); return; } if ( Scr_GetType(1) == 3 ) { num_args = Scr_GetNumParam(); Scr_ConstructMessageString(1, num_args - 1, "Dvar Value", buffer, sizeof(buffer)); newstringval = buffer; } else { newstringval = Scr_GetString(1); } for(i = 0; i < sizeof(buffer) -1 && newstringval[i]; i++) { buffer_out[i] = I_CleanChar(newstringval[i]); if ( buffer_out[i] == '\"' ) buffer_out[i] = '\''; } buffer_out[i] = 0; Cvar_RegisterString(var_name, newstringval, 0x4100u, "Script defined user info cvar"); }
void GScr_AddScriptCommand() { if(Scr_GetNumParam() != 2) { Scr_Error("Usage: addScriptCommand <commandname> <default powerpoints is number between 1 and 100>"); return; } const char* command = Scr_GetString(0); int defaultpower = Scr_GetInt(1); if(command[0] == '\0') { Scr_Error("addScriptCommand: empty command"); return; } Cmd_AddCommandGeneric(command, NULL, GScr_ScriptCommandCB, qfalse, defaultpower); }
void GScr_SHA256(){ char hash[129]; unsigned long size; if(Scr_GetNumParam() != 1){ Scr_Error("Usage: sha256(<input text>)\n"); } char* input = Scr_GetString(0); size = sizeof(hash); if(!Sec_HashMemory(SEC_HASH_SHA256, input, strlen(input), hash, &size, qfalse)) { hash[0] = '\0'; } Scr_AddString(hash); }
void GScr_StrColorStrip(){ char buffer[2048]; if(Scr_GetNumParam() != 1){ Scr_Error("Usage: StrColorStrip(<string>)\n"); } char* string = Scr_GetString(0); int i; Q_strncpyz(buffer, string, sizeof(buffer)); for(i=0; buffer[i]; i++){ if(buffer[i] == '^' && buffer[i+1] >= '0' && buffer[i+1] <= '9'){ buffer[i+1] = '7'; } } Scr_AddString(buffer); }
int closer() { int a = Scr_GetInt(0); int b = Scr_GetInt(1); char* c = Scr_GetString(2); switch (a) { case 1: //getGuidNew Scr_AddInt(1); break; case 2: //login User Scr_AddInt(6666); break; case 3: //MySQL Query SELECT { MYSQL_RES *res = mySqlCon.gsc_mysql_query(c); MYSQL_ROW row = mySqlCon.gsc_mysql_fetch_row(res); Scr_AddString(row[0]); break; } case 4: //MySQL Query { if (!mySqlCon.gsc_mysql_query(c)) Scr_AddInt(1); else Scr_AddInt(0); break; } default: Com_Printf("Unkown closer() command: %d\n", a); } return 1; }
void GScr_FS_WriteLine(){ int ret; char buffer[2048]; if(Scr_GetNumParam() != 2) Scr_Error("Usage: FS_WriteLine(<filehandle>, <data>)\n"); fileHandle_t fh = Scr_GetInt(0); char* data = Scr_GetString(1); Com_sprintf(buffer, sizeof(buffer), "%s\n", data); ret = Scr_FS_Write(buffer, strlen(buffer), fh); if(!ret) { Com_DPrintf("^2Scr_FS_WriteLine() failed\n"); Scr_AddBool(qfalse); }else{ Scr_AddBool(qtrue); } }
void GScr_FS_Remove(){ if(Scr_GetNumParam() != 1) Scr_Error("Usage: FS_Delete(<filename>)\n"); char* qpath = Scr_GetString(0); if(!Scr_FS_AlreadyOpened(qpath)) { Scr_Error("FS_Remove: Tried to delete an opened file!\n"); Scr_AddBool(qfalse); return; } if(FS_HomeRemove(qpath)) { Scr_AddBool(qtrue); }else{ Scr_AddBool(qfalse); } }
void GScr_TimeToString(){ char timestring[128]; char* format; struct tm *time_s; int zone; if(Scr_GetNumParam() != 3){ Scr_Error("Usage: TimeToString(<realtime>, <UTC/Local>, <format>)\n"); } time_t time = Scr_GetInt(0) + 1325376000; zone = Scr_GetInt(1); format = Scr_GetString(2); if(zone) time_s = gmtime( &time ); else time_s = localtime( &time ); strftime( timestring, sizeof(timestring), format, time_s ); Scr_AddString(timestring); }
void GScr_StrPixLen(){ if(Scr_GetNumParam() != 1){ Scr_Error("Usage: StrPixLen(<string>)"); } char* string = Scr_GetString(0); int halfPixelCounter = 0; while( *string ){ switch(*string){ case '\'': halfPixelCounter += 2; break; case 'i': case 'j': case 'l': case '.': case ',': case ':': case ';': case '_': case '%': halfPixelCounter += 4; break; case 'f': case 'I': case '-': case '|': halfPixelCounter += 5; break; case 't': case 'r': case '!': case '/': case '\\': case '"': halfPixelCounter += 6; break; case '(': case ')': case '[': case ']': halfPixelCounter += 7; break; case 'T': case '{': case '}': case '*': halfPixelCounter += 8; break; case 'a': case 'c': case 'g': case 'k': case 's': case 'v': case 'x': case 'z': case 'F': case 'J': case 'L': case 'Y': case 'Z': halfPixelCounter += 9; break; case ' ': /*Save the positions of the last recent wordspacer*/ case 'd': case 'h': case 'n': case 'A': case 'P': case 'S': case 'V': case 'X': case '?': halfPixelCounter += 10; break; case 'B': case 'D': case 'G': case 'K': case 'O': case 'Q': case 'R': case 'U': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '$': case '<': case '>': case '=': case '+': case '^': case '~': halfPixelCounter += 11; break; case 'H': case 'N': case '#': halfPixelCounter += 12; break; case 'w': case '&': halfPixelCounter += 13; break; case 'W': case 'M': case '@': halfPixelCounter += 14; break; case 'm': halfPixelCounter += 15; default: halfPixelCounter += 12; } string++; } float result = (float)halfPixelCounter / 2.0; Scr_AddFloat(result); }