Пример #1
0
_MEMBER_FUNCTION_IMPL(xml, constructor)
{
    const char * filename;
    sq_getstring(pVM, -1, &filename);

    if(filename)
    {
        CXML * pXML = new CXML();
        String strFileName(filename);
        SharedUtility::RemoveIllegalCharacters(strFileName);
        String strPath(SharedUtility::GetAbsolutePath("files/%s", strFileName.Get()));
        pXML->load(strPath);

        if(!pXML || SQ_FAILED(sq_setinstance(pVM, pXML)))
        {
            CLogFile::Print("Failed to load the xml.");
            SAFE_DELETE(pXML);
            sq_pushbool(pVM, false);
            return 1;
        }

        _SET_RELEASE_HOOK(xml);
        sq_pushbool(pVM, true);
        return 1;
    }

    sq_pushbool(pVM, false);
    return 1;
}
Пример #2
0
_MEMBER_FUNCTION_IMPL(xml, nodeNew)
{
    CXML * pXML = sq_getinstance<CXML *>(pVM);

    if(!pXML)
    {
        CLogFile::Print("Failed to get the XML instance.");
        sq_pushbool(pVM, false);
        return 1;
    }

    SQBool linkNewXml;
    const char * XmlName;

    sq_getbool(pVM, -2, &linkNewXml);
    sq_getstring(pVM, -1, &XmlName);

#pragma warning(disable:4800)
    bool linkXml = (bool)linkNewXml;

    pXML->newNode(XmlName, linkXml);
    sq_pushbool(pVM, true);
    return 1;

}
Пример #3
0
_MEMBER_FUNCTION_IMPL(timer, isActive)
{
	CScriptTimer * pTimer = sq_getinstance<CScriptTimer *>(pVM);

	if(!pTimer)
	{
		CLogFile::Print("Failed to get the timer instance.");
		sq_pushbool(pVM, false);
		return 1;
	}

	if(CScriptTimerManager::GetInstance()->contains(pTimer))
	{
		if(pTimer->IsDead())
		{
			sq_setinstance(pVM, NULL);
			sq_pushbool(pVM, false);
			return 1;
		}

		sq_pushbool(pVM, true);
		return 1;
	}

	sq_pushbool(pVM, false);
	return 1;
}
Пример #4
0
_MEMBER_FUNCTION_IMPL(timer, constructor)
{
	// Check the param count
	CHECK_PARAMS_MIN("timer", 3);

	//
	if( sq_gettype( pVM, 2 ) != OT_NATIVECLOSURE )
		CHECK_TYPE("timer", 1, 2, OT_CLOSURE);

	// Check the params
	CHECK_TYPE("timer", 2, 3, OT_INTEGER);
	CHECK_TYPE("timer", 3, 4, OT_INTEGER);

	SQInteger iInterval = 0;
	SQInteger iRepeations = 0;

	// Get the params
	sq_getinteger( pVM, 3, &iInterval );
	sq_getinteger( pVM, 4, &iRepeations );

	// Invalid repeations?
	if( iRepeations < -1 || iRepeations == 0 )
	{
		sq_pushbool( pVM, false );
		return 1;
	}

	// Get the timer end function
	SQObjectPtr pFunction = stack_get( pVM, 2 );

	// Create the arguments
	CSquirrelArguments * pArguments = new CSquirrelArguments( pVM, 5 );

	// Get the current script instance
#ifdef _CLIENT
	CSquirrel * pScript = pCore->GetClientScriptingManager()->GetScriptingManager()->Get( pVM );
#else
	CSquirrel * pScript = pCore->GetScriptingManager()->Get( pVM );
#endif

	// Create the timer instance
	CTimer * pTimer = new CTimer( pScript, pFunction, iInterval, iRepeations, pArguments );

	// Did it fail to set the timer instance?
	if( SQ_FAILED( sq_setinstance( pVM, pTimer) ) )
	{
		// Delete the timer
		SAFE_DELETE( pTimer );

		sq_pushbool( pVM, false );
		return 1;
	}

	// Add the timer into the manager
	pCore->GetTimerManager()->push_back( pTimer );

	sq_pushbool( pVM, true );
	return 1;
}
/*
 * Check if the sandbox is enabled
 */
SQInteger emoRuntimeIsSandboxEnabled(HSQUIRRELVM v) {
#ifdef EMO_WITH_SANDBOX
    sq_pushbool(v, true);
#else
    sq_pushbool(v, false);
#endif    
    return 1;
}
Пример #6
0
int app_sqlang_return_boolean(HSQUIRRELVM J, int b)
{
	if(b==SRSQLANG_FALSE)
		sq_pushbool(J, SRSQLANG_FALSE);
	else
		sq_pushbool(J, SRSQLANG_TRUE);
	return 1;
}
Пример #7
0
Файл: io.c Проект: njlg/mod_sq
// write
SQInteger file_put_contents(HSQUIRRELVM v) {
	// function parameters
	const SQChar* filename;
	const SQChar* contents;

	// internal structures
	apr_file_t* file;
	apr_size_t nbytes;
	apr_status_t status;
	request_rec* r = get_request_rec(v);

	// for error messages
	char error[120];
	char errorMessage[120];

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "file_put_contents()");

	// grab filename param
	if( sq_gettype(v, 2) != OT_STRING ) {
		return SQ_ERROR;
	}
	else if( SQ_FAILED(sq_getstring(v, 2, &filename)) ) {
		return SQ_ERROR;
	}

	// grab contents param
	if( sq_gettype(v, 3) != OT_STRING ) {
		return SQ_ERROR;
	}
	else if( SQ_FAILED(sq_getstring(v, 3, &contents)) ) {
		return SQ_ERROR;
	}

	nbytes = strlen(contents);

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_put_contents('%s', '%s') %d", filename, contents, (int)nbytes);
	if( (status = apr_file_open(&file, filename, APR_WRITE|APR_CREATE, APR_OS_DEFAULT, r->pool)) != APR_SUCCESS ) {
		apr_strerror(status, error, sizeof error);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_put_contents() failed: %s", error);
		sprintf(errorMessage, "file_put_contents() failed: %s", error);
		errorfunc(v, errorMessage);
		sq_pushbool(v, SQFalse);
	}
	else if( (status = apr_file_write(file, contents, &nbytes)) != APR_SUCCESS ) {
		apr_strerror(status, error, sizeof error);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_put_contents() failed: %s", error);
		sprintf(errorMessage, "file_put_contents() failed: %s", error);
		errorfunc(v, errorMessage);
		sq_pushbool(v, SQFalse);
	}
	else {
		sq_pushinteger(v, nbytes);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_put_contents() wrote %d bytes", (int)nbytes);
	}

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "file_put_contents() returning 1");
	return 1;
}
Пример #8
0
Файл: io.c Проект: njlg/mod_sq
// read
SQInteger file_get_contents(HSQUIRRELVM v) {
	// function parameters
	const SQChar* filename;
	char* contents;

	// internal structures
	apr_file_t* file;
	apr_finfo_t finfo;
	apr_size_t nbytes;
	apr_status_t status;
	request_rec* r = get_request_rec(v);

	// for error messages
	char error[120];
	char errorMessage[120];

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "file_get_contents()");

	// grab filename param
	if( sq_gettype(v, 2) != OT_STRING ) {
		return SQ_ERROR;
	}
	else if( SQ_FAILED(sq_getstring(v, 2, &filename)) ) {
		return SQ_ERROR;
	}

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_get_contents('%s')", filename);
	if( (status = apr_file_open(&file, filename, APR_READ, APR_OS_DEFAULT, r->pool)) != APR_SUCCESS ) {
		apr_strerror(status, error, sizeof error);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_get_contents() failed: %s", error);
		sprintf(errorMessage, "file_get_contents() failed: %s", error);
		errorfunc(v, errorMessage);
		sq_pushbool(v, SQFalse);
		return 1;
	}

	// figure out file size and allocate enough room to read it all in
	status = apr_file_info_get(&finfo, APR_FINFO_NORM, file);
	nbytes = finfo.size;
	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "file_get_contents() file is %d", (int)nbytes);
	contents = apr_palloc(r->pool, finfo.size);

	if( (status = apr_file_read(file, contents, &nbytes)) != APR_SUCCESS ) {
		apr_strerror(status, error, sizeof error);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_get_contents() failed: %s", error);
		sprintf(errorMessage, "file_get_contents() read %d bytes, but failed: %s", (int)nbytes, error);
		errorfunc(v, errorMessage);
		sq_pushbool(v, SQFalse);
	}
	else {
		contents[nbytes] = '\0';
		sq_pushstring(v, contents, -1);
		ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "    file_get_contents() read %d bytes", (int)nbytes);
	}

	ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "file_get_contents() returning 1");
	return 1;
}
Пример #9
0
static SQInteger container_rawexists(HSQUIRRELVM v)
{
	if(SQ_SUCCEEDED(sq_rawget(v,-2))) {
		sq_pushbool(v,SQTrue);
		return 1;
	}
	sq_pushbool(v,SQFalse);
	return 1;
}
Пример #10
0
// GUIImage
_MEMBER_FUNCTION_IMPL(GUIImage, constructor)
{
	const char * filename;
	sq_getstring(pVM, -1, &filename);

	// check file size
	/*FILE* pFile = fopen(filename, "rb");
	fseek(pFile, 0L, SEEK_END);
	int len = ftell(pFile);
	if(len == 0) {
		sq_pushbool(pVM, false);
		fclose(pFile);
		return 1;
	}
	fclose(pFile);*/

	// Get our GUI
	CGUI * pGUI = g_pClient->GetGUI();

	String szName = pGUI->GetUniqueName();

	// Try to load the image
	try
	{

		CEGUI::ImagesetManager::getSingleton().createFromImageFile(szName.C_String(), filename, "resources");
		CGUIStaticImage * pImage = pGUI->CreateGUIStaticImage(CEGUI::String(szName.C_String()));
		
		pImage->setProperty("FrameEnabled", "false");
		pImage->setProperty("BackgroundEnabled", "false");
		pImage->setProperty("Image", String("set:%s image:full_image", szName.C_String()).C_String());

		if(!pImage || SQ_FAILED(sq_setinstance(pVM, pImage)))
		{
			CLogFile::Printf("Can't create GUIImage.");
			sq_pushbool(pVM, false);
			return 1;
		}

		//_SET_RELEASE_HOOK(GUIElement);
		CClientScriptManager * pClientScriptManager = g_pClient->GetClientScriptManager();
		pClientScriptManager->GetGUIManager()->Add(pImage, pClientScriptManager->GetScriptingManager()->Get(pVM));

		SubscribeGuiEvents(pImage);

		pImage->setVisible(true);
		sq_pushbool(pVM, true);
		return 1;
	}
	catch(CEGUI::Exception e)
	{
		// Failed to load, might not exist
		CLogFile::Printf("Can't create GUIImage (%s does not exist)", filename);
		sq_pushbool(pVM, false);
		return 1;
	}
}
Пример #11
0
static SQRESULT sq_mysql_result_eof(HSQUIRRELVM v){
	SQ_FUNC_VARS_NO_TOP(v);
	GET_mysql_result_INSTANCE();
    sq_pushstring(v, _curr_row_key, -1);
    if(sq_get(v, 1) == SQ_OK){
        SQ_GET_INTEGER(v, -1, curr_row);
        sq_pushbool(v, curr_row < dlmysql_num_rows(self));
    }
	else sq_pushbool(v, SQTrue);
	return 1;
}
Пример #12
0
/**
 * TJSオブジェクトの有効確認
 * 引数1 オブジェクト
 */
SQRESULT
TJSObject::tjsIsValid(HSQUIRRELVM v)
{
    tTJSVariant instance;
    if (getVariant(v,1,&instance) && instance.Type() == tvtObject) {
        SQBool ret = instance.AsObjectClosureNoAddRef().IsValid(0, NULL, NULL, NULL) == TJS_S_TRUE ? SQTrue : SQFalse;
        sq_pushbool(v, ret);
        return 1;
    }
    sq_pushbool(v, SQFalse);
    return 1;
}
Пример #13
0
SQInteger SFXed(HSQUIRRELVM v)
{
    if (AppXed())
    {
        sq_pushbool(Scripts.vm, SQTrue);
    }
    else
    {
        sq_pushbool(Scripts.vm, SQFalse);
    }
    return 1;
}
Пример #14
0
_MEMBER_FUNCTION_IMPL(GUIElement, getVisible)
{
	CGUIFrameWindow * pWindow = sq_getinstance<CGUIFrameWindow *>(pVM);
	if(!pWindow)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	sq_pushbool(pVM, pWindow->isVisible());
	return 1;
}
Пример #15
0
static SQInteger _regexp_match(HSQUIRRELVM v)
{
	SETUP_REX(v);
	const SQChar *str;
	sq_getstring(v,2,&str);
	if(sqstd_rex_match(self,str) == SQTrue)
	{
		sq_pushbool(v,SQTrue);
		return 1;
	}
	sq_pushbool(v,SQFalse);
	return 1;
}
Пример #16
0
_MEMBER_FUNCTION_IMPL(GUICheckBox, isChecked)
{
	CEGUI::Checkbox * pWindow = sq_getinstance<CEGUI::Checkbox *>(pVM);

	if(!pWindow)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	sq_pushbool(pVM, pWindow->isSelected());
	return 1;
}
Пример #17
0
// deletePickup(pickupid)
SQInteger CPickupNatives::Delete(SQVM * pVM)
{
	SQInteger pickupid;
	sq_getinteger(pVM, -1, &pickupid);
	if(g_pPickupManager->DoesExist(pickupid))
	{
		g_pPickupManager->Delete(pickupid);
		sq_pushbool(pVM, true);
		return 1;
	}
	sq_pushbool(pVM, false);
	return 1;
}
Пример #18
0
// removeRule(name)
SQInteger CServerNatives::RemoveRule(SQVM * pVM)
{
	if(!g_pQuery)
	{
		// If <query> is disabled on server.
		sq_pushbool(pVM, false);
		return 1;
	}

	const char* rule;
	sq_getstring(pVM, -1, &rule);
	sq_pushbool(pVM, g_pQuery->RemoveRule(rule));
	return 1;
}
Пример #19
0
// setPickupValue(pickupid, value)
SQInteger CPickupNatives::SetValue(SQVM * pVM)
{
	SQInteger pickupid;
	sq_getinteger(pVM, 2, &pickupid);
	if(g_pPickupManager->DoesExist(pickupid))
	{
		SQInteger pvalue;
		sq_getinteger(pVM, 3, &pvalue);
		sq_pushbool(pVM, g_pPickupManager->SetValue(pickupid, pvalue));
		return 1;
	}
	sq_pushbool(pVM, false);
	return 1;
}
Пример #20
0
// setPickupRotation(Pickupid, x, y, z)
SQInteger CPickupNatives::SetRotation(SQVM * pVM)
{
	SQInteger pickupid;
	sq_getinteger(pVM, 2, &pickupid);
	if(g_pPickupManager->DoesExist(pickupid))
	{
		CVector3 vecPosition;
		sq_getvector3(pVM, 3, &vecPosition);
		sq_pushbool(pVM, g_pPickupManager->SetRotation(pickupid, vecPosition));
		return 1;
	}
	sq_pushbool(pVM, false);
	return 1;
}
Пример #21
0
_MEMBER_FUNCTION_IMPL(xml, save)
{
    CXML * pXML = sq_getinstance<CXML *>(pVM);

    if(!pXML)
    {
        CLogFile::Print("Failed to get the XML instance.");
        sq_pushbool(pVM, false);
        return 1;
    }

    sq_pushbool(pVM, pXML->save());
    return 1;
}
Пример #22
0
SQInteger SFKeyPressed(HSQUIRRELVM v)
{
    int key;
    sq_getinteger(Scripts.vm, 2, &key);
    if (InputKeyPressed(key))
    {
        sq_pushbool(Scripts.vm, SQTrue);
    }
    else
    {
        sq_pushbool(Scripts.vm, SQFalse);
    }
    return 1;
}
Пример #23
0
_MEMBER_FUNCTION_IMPL(GUIElement, deactivate)
{
	CGUIFrameWindow * pWindow = sq_getinstance<CGUIFrameWindow *>(pVM);

	if(!pWindow)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	pWindow->deactivate();
	sq_pushbool(pVM, true);
	return 1;
}
Пример #24
0
// setDayOfWeek(day)
SQInteger CWorldNatives::SetDayOfWeek(SQVM * pVM)
{
	SQInteger iDay;
	sq_getinteger(pVM, 2, &iDay);

	if(iDay >= 0 && iDay <= 6)
	{
		CTime::GetInstance()->SetDayOfWeek(iDay);
		sq_pushbool(pVM, true);
		return 1;
	}

	sq_pushbool(pVM, false);
	return 1;
}
Пример #25
0
_MEMBER_FUNCTION_IMPL(xml, save)
{
    // Get the xml instance pointer
    CXML * pXML = sq_getinstance< CXML* >( pVM );

    // Is the xml instance invalid?
    if( !pXML )
    {
        sq_pushbool( pVM, false );
        return 1;
    }

    sq_pushbool( pVM, pXML->Save() );
    return 1;
}
Пример #26
0
_MEMBER_FUNCTION_IMPL(xml, nodeClear)
{
    CXML * pXML = sq_getinstance<CXML *>(pVM);

    if(!pXML)
    {
        CLogFile::Print("Failed to get the XML instance.");
        sq_pushbool(pVM, false);
        return 1;
    }
    pXML->nodeClear();

    sq_pushbool(pVM, true);
    return 1;
}
Пример #27
0
// deleteActor(actorid)
SQInteger CActorNatives::Delete(SQVM * pVM)
{
	EntityId actorId;
	sq_getentity(pVM, -1, &actorId);

	if(g_pActorManager->DoesExist(actorId))
	{
		g_pActorManager->Delete(actorId);
		sq_pushbool(pVM, true);
		return 1;
	}

	sq_pushbool(pVM, false);
	return 1;
}
Пример #28
0
static SQRESULT sq_libclang_loadlib(HSQUIRRELVM v)
{
	SQ_FUNC_VARS_NO_TOP(v);
	SQ_GET_STRING(v, 2, libname);
	sq_pushbool(v, load_dynamicLib(libname));
	return 1;
}
Пример #29
0
_MEMBER_FUNCTION_IMPL(GUIElement, setVisible)
{
	CGUIFrameWindow * pWindow = sq_getinstance<CGUIFrameWindow *>(pVM);
	if(!pWindow)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	SQBool visible;
	sq_getbool(pVM, -1, &visible);

	pWindow->setVisible(visible != 0);
	sq_pushbool(pVM, true);
	return 1;
}
Пример #30
0
_MEMBER_FUNCTION_IMPL(GUIElement, getPosition)
{
	SQBool relative;
	sq_getbool(pVM, -1, &relative);

	CGUIFrameWindow * pWindow = sq_getinstance<CGUIFrameWindow *>(pVM);

	if(!pWindow)
	{
		sq_pushbool(pVM, false);
		return 1;
	}

	CEGUI::Vector2 pos;

	if(relative != 0)
	{
		pos = pWindow->getPosition().asRelative((CEGUI::Size(g_pClient->GetGUI()->GetDisplayWidth (), g_pClient->GetGUI()->GetDisplayHeight())));
	}
	else
	{
		pos = pWindow->getPosition().asAbsolute((CEGUI::Size(g_pClient->GetGUI()->GetDisplayWidth (), g_pClient->GetGUI()->GetDisplayHeight())));
	}

	CSquirrelArguments args;
	args.push(pos.d_x);
	args.push(pos.d_y);
	sq_pusharg(pVM, CSquirrelArgument(args, true));
	return 1;
}