Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <scl_conext>
- #include <cstrike>
- #pragma semicolon 1
- #pragma newdecls required
- public Plugin myinfo =
- {
- name = "Test SCL",
- author = "milutinke",
- description = "Test SCL",
- version = "1.0.0",
- url = ""
- };
- forward void Scl_Parsed(char[] szContext, char[] szFunctionName, any aParameters, int iPlayer);
- native int Scl_Parse(char[] szContext, char[] szCode, int iPlayer);
- native int Scl_Validate_Parameter_Type_N(char[] szContext, char[] szFunction, any aParameters, int iParameter, int iType);
- #define SCL_PARSED_START(%0) public void Scl_Parsed(char[] szContext, char[] szFunctionName, any anyParameters, int iPlayer) {\
- ArrayList aParameters = view_as<ArrayList>(anyParameters); \
- \
- if (! % 0.IsValid)\
- return; \
- if (! % 0.Equal(szContext))\
- return;
- #define SCL_PARSED_END() }
- Scl_Context g_scContext;
- public void OnAllPluginsLoaded() {
- Handle hDynamicsPluginHandle = INVALID_HANDLE;
- if ((hDynamicsPluginHandle = FindPluginByFile("dynamic.smx")) != INVALID_HANDLE) {
- if (GetPluginStatus(hDynamicsPluginHandle) != Plugin_Running) {
- ThrowError("This plugin requires dynamic.smx to be loaded!");
- return;
- }
- } else {
- ThrowError("This plugin requires dynamic.smx to exists on the server! Download it from: https://forums.alliedmods.net/showthread.php?t=270519");
- return;
- }
- if (!ObtainContext("Test Context").IsValid) {
- PrintToServer("Invalid Context in TestSCL");
- return;
- }
- Execute("Test:Functions(abc,123,more:strings,1,@Getter(1,2,3,@Nested))):ThirdFunction(1,2,3)");
- }
- public void Scl_Parsed(char[] szContext, char[] szFunctionName, any anyParameters, int iPlayer) {
- PrintToServer("============================================================");
- PrintToServer(" SCL Parsed ");
- PrintToServer("============================================================");
- PrintToServer("Context: %s", szContext);
- PrintToServer("Function: %s", szFunctionName);
- PrintToServer("Player: %d", iPlayer);
- PrintToServer("Parameters:");
- if (!g_scContext.IsValidContext) {
- PrintToServer("INVALID CONTEXT");
- PrintToServer("============================================================");
- return;
- }
- ArrayList aParameters = view_as<ArrayList>(anyParameters);
- if (aParameters == INVALID_HANDLE) {
- PrintToServer("INVALID ARRAY LIST HANDLE");
- PrintToServer("============================================================");
- return;
- }
- char[] szParam = new char[g_scContext.ParameterMaxLength];
- for (int i = 0; i < aParameters.Length; i++) {
- aParameters.GetString(i, szParam, g_scContext.ParameterMaxLength);
- PrintToServer("#%d - %s", i, szParam);
- }
- PrintToServer("============================================================");
- if (!g_scContext.IsValid) {
- PrintToServer(">>>>>>>>>>>>>> INVALID CONTEXT");
- return;
- }
- if (!g_scContext.Equal(szContext)) {
- char szCtx[128];
- g_scContext.GetContextName(szCtx, sizeof(szCtx));
- PrintToServer(">>>>>>>>>>>>>> DIFFERENT CONTEXT - %s - %s - %d", szContext, szCtx, g_scContext.Equal(szContext) ? 1 : 0);
- return;
- }
- if (StrEqual(szFunctionName, "Functions")) {
- if (!Scl_Validate_Parameter_Type(szContext, szFunctionName, aParameters, 2, Scl_Type_String)) {
- PrintToServer(">>>>>>>>>>>>>> INVALID TYPE");
- return;
- }
- char[] szParameterValue = new char[g_scContext.ParameterMaxLength];
- aParameters.GetString(2, szParameterValue, g_scContext.ParameterMaxLength);
- PrintToServer(">>>>>>>>>>>>>> Yay, works!");
- Execute(szParameterValue);
- return;
- }
- }
- stock void Execute(char[] szInput) {
- if (!Scl_Parse("Test Context", szInput, 0)) {
- PrintToServer("Failed to execute in SclTest");
- return;
- } else PrintToServer("Parsed...");
- }
- /*#pragma tabsize 0
- SCL_PARSED_START(g_scContext)
- if (StrEqual(szFunctionName, "Cvabke")) {
- if (!Scl_Validate_Parameter_Type(szContext, szFunctionName, aParameters, 1, Scl_Type_Integer)) {
- PrintToServer(">>>>>>>>>>>>>> INVALID TYPE");
- return;
- }
- PrintToServer(">>>>>>>>>>>>>> Yay, works");
- return;
- }
- SCL_PARSED_END()*/
- public void OnPluginEnd() {
- if (g_scContext.IsValidContext)
- g_scContext.Dispose();
- }
- stock Scl_Context ObtainContext(char[] szName) {
- if (g_scContext.IsValidContext)
- g_scContext.Dispose();
- g_scContext = NewContext(szName);
- if (!g_scContext.IsValidContext)
- return Scl_Invalid_Context;
- return g_scContext;
- }
- stock Scl_Context NewContext(char[] szName) {
- Scl_Context scContext = Scl_Context();
- scContext.SetContextName(szName);
- return scContext;
- }
- stock int Scl_Validate_Parameter_Type(char[] szContext, char[] szFunction, any aParameters, int iParameter, Scl_Types iType) {
- return Scl_Validate_Parameter_Type_N(szContext, szFunction, aParameters, iParameter, view_as<int>(iType));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement