Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > PureBasic

PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач.

Ответ
 
Опции темы
Старый 13.05.2007, 08:22   #1
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
PB 4.0 + JS скрипты

вопрос по сабжу - можно как нибудь заставить прогу на Пурике использовать js-скрипты? Хочу написать FLV-конвертер, спер с vixy.net js-скрипт, который конвертирует это дело, но поскольку с явой не дружу, написать тоже самое в пурике не смогу. Может быть ктото сможет помочь?
(Offline)
 
Ответить с цитированием
Старый 13.05.2007, 16:21   #2
Chrono Syndrome
 
Сообщений: n/a
Re: PB 4.0 + JS скрипты

Ознакомься: http://www.purebasic.fr/english/viewtopic.php?p=62775
Примечания:
1) Метод с Userlib не сработает.
2) Структуру Variant придется переименовать.
3) "vbscript", естественно, надо заменить на "jscript".
4) Вместо "tmp.vbs" прописываешь путь до файла со скриптом.
5) Ну и можешь еще мусор всякий вычистить оттуда.
Вроде все.
 
Ответить с цитированием
Старый 13.05.2007, 17:31   #3
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

вот ведь блин... а на русском нету? С англицким у меня проблемы
(Offline)
 
Ответить с цитированием
Старый 13.05.2007, 17:42   #4
Chrono Syndrome
 
Сообщений: n/a
Re: PB 4.0 + JS скрипты

вот ведь блин...
Аналогично...

а на русском нету?
Есть:

Structure Variant 
    Type.w 
    Reserved1.w 
    Reserved2.w    
    Reserved3.w 
    String.l 
EndStructure 
 
#VT_BSTR = 8 
x.Variant\Type = #VT_BSTR 
 
DataSection 
meine_vbs: 
  IncludeBinary "tmp.vbs" 
  Data.b 0 
EndDataSection 
 
Procedure.l Ansi2Uni(ansi.s) 
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0) 
  Dim unicode.w(size) 
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size) 
  ProcedureReturn @unicode()  
EndProcedure 
 
Procedure.s Uni2Ansi(*Unicode.l) 
  size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null) 
  ansi.s=Space(size) 
  WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null) 
  ProcedureReturn ansi  
EndProcedure 
 
Enumeration ; ScriptControlStates 
  #Initialized = 0 
  #Connected = 1 
EndEnumeration 
 
; DispInterfaces 
 
Interface IScriptProcedure Extends IDispatch 
  get_Name(a) 
  get_NumArgs(a) 
  get_HasReturnValue(a) 
EndInterface 
 
Interface IScriptProcedureCollection Extends IDispatch 
  get__NewEnum(a) 
  get_Item(a,b,c,d,e) 
  get_Count(a) 
EndInterface 
 
Interface IScriptModule Extends IDispatch 
  get_Name(a) 
  get_CodeObject(a) 
  get_Procedures(a) 
  AddCode(a) 
  Eval(a,b) 
  ExecuteStatement(a) 
  Run(a,b,c) 
EndInterface 
 
Interface IScriptModuleCollection Extends IDispatch 
  get__NewEnum(a) 
  get_Item(a,b,c,d,e) 
  get_Count(a) 
  Add(a,b,c) 
EndInterface 
 
Interface IScriptError Extends IDispatch 
  get_Number(a) 
  get_Source(a) 
  get_Description(a) 
  get_HelpFile(a) 
  get_HelpContext(a) 
  get_Text(a) 
  get_Line(a) 
  get_Column(a) 
  Clear() 
EndInterface 
 
Interface IScriptControl Extends IDispatch 
  get_Language(a) 
  put_Language(a) 
  get_State(a) 
  put_State(a) 
  put_SitehWnd(a) 
  get_SitehWnd(a) 
  get_Timeout(a) 
  put_Timeout(a) 
  get_AllowUI(a) 
  put_AllowUI(a) 
  get_UseSafeSubset(a) 
  put_UseSafeSubset(a) 
  get_Modules(a) 
  get_Error(a) 
  get_CodeObject(a) 
  get_Procedures(a) 
  _AboutBox() 
  AddObject(a,b,c) 
  Reset() 
  AddCode(a) 
  Eval(a,b) 
  ExecuteStatement(a) 
  Run(a,b,c) 
EndInterface 
 
CoInitialize_(0) 
If CoCreateInstance_(?CLSID_ScriptControl,0,1,?IID_IScriptControl,@Object.IScriptControl) = 0 
 
object\reset() 
object\put_Language(Ansi2Uni("vbscript")) 
object\AddCode(Ansi2Uni(PeekS(?meine_vbs))) 
; 
object\Eval(Ansi2Uni("soft"),@x) 
meine_variX.s = UCase(uni2ansi(x\String)) 
; 
object\reset() 
; 
object\release() 
 
EndIf 
CoUninitialize_() 
 
MessageRequester("vbs variable",meine_variX,#PB_MessageRequester_Ok) 
 
DataSection 
  CLSID_ScriptControl: 
  Data.l $0e59f1d5 
  Data.w $1fbe,$11d0 
  Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc 
 
  IID_IScriptControl: 
  Data.l $0e59f1d3 
  Data.w $1fbe,$11d0 
  Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc 
EndDataSection
 
Ответить с цитированием
Старый 13.05.2007, 18:45   #5
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

Лады, будем пробовать
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 14:31   #6
Chrono Syndrome
 
Сообщений: n/a
Re: PB 4.0 + JS скрипты

Это, у меня тут одна идейка появилась... Дело в том, что если тебе требуется всего-навсего запустить один скрипт, то, в принципе, вполне достаточно следующего кода :
RunProgram("путь до файла со скриптом")
 
Ответить с цитированием
Старый 14.05.2007, 14:46   #7
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

Дело в том что код довольно обьемный, и наверняка получает какие то данные из вне. Но если хочешь подмочь, то вот код (js)
var jsv = 0;
var winIe = 0;
var macIe = 0;
/*@cc_on jsv = @_jscript_version; @if (@_win64 || @_win32 || @_win16) winIe = 1; @elif (@_mac && (@_PowerPC || @_mc680x0)) macIe = 1; @end @*/

var procStatus = 0;

window.onbeforeunload = function(event)
{
    if (procStatus == 1)
    {
        event = event || window.event; 
        event.returnValue = "It's still processing the conversion.";
    }
}

///////////////////////////////////////////////////////////////////////////////////////
function get_hex2(val)
{
    val = parseInt(val);
    if (val == 0) return '00';

    var out='';
    while (val) 
    {
        out = '0123456789abcdef'.substr(val % 16, 1) + out;
        val = parseInt(val / 16);
    }
    
    if (val.length == 1) return '0' + out;
    return out;
}

///////////////////////////////////////////////////////////////////////////////////////
function FlvdlBase(url)
{
    this.id = '';
    this.url = url;
    this.ext = '.mov';
    this.is_fecthing = false;
    this.size = 0;
    this.ui = null;
    this.dl_base_url = null;
}

FlvdlBase.prototype =
{
    set_ui : function(ui)
    {
        this.ui = ui;
    },

    set_ext : function(ext)
    {
        this.ext = ext;
    },

    _get_dl_url : function()
    {
        return this.dl_base_url + '?c=dl&id='+this.id;
    },
    
    _get_process_frame_url : function()
    {
        var svurl = svurls[Math.floor(Math.random() * svurls.length)];
        return svurl + '?c=process&u=' + escape(this.url) + '&e='+this.ext;
    },
    
    kick_cancel : function()
    {
        set_process_frame(null);
    },
    
    kick_process : function()
    {
        set_process_frame(this._get_process_frame_url());
    },
    
    on_recieve_json : function(obj)
    {
        var s = (obj.status == 'ok');
        switch(obj.process)
        {
        case 'connected':
            this.ui.on_connected();
            break;
        case 'initial':
            if (s)
            {
                this.size = obj.size;
                this.url = obj.url;
                this.id = obj.id;
                this.ui.on_file_info_end(obj.size, null);
            }
            else this.ui.on_file_info_end(0, obj.reason);
            break;
        case 'start':
            if (!s)
            {
                this.ui.on_start_failed(obj.reason);
            }
            break;
        case 'fetching':
            this.ui.on_fetching(s, obj.size==undefined?0:obj.size, this.size);
            break;
        case 'fetched':
            this.ui.on_fetch_end(s);
            break;
        case 'converted':
            this.dl_base_url = obj.dl_base_url;
            this.ui.on_convert_end(s, this._get_dl_url());
            break;
        }
    }
}

/////

function FlvdlUI()
{
    this.base = null;
}

FlvdlUI.prototype =
{
    _is_valid_url : function(url) 
    {
        return url.match(/^http:\/\//);
    },
    
    _inputs_disabled : function(dis)
    {
        $('start_button').disabled = dis;
    },
    
    _html_reset : function()
    {
        Element.hide('process');
        Element.hide('download');
        Element.hide('input-button-back');
        Element.show('input-button');
        Element.show('inputbox');
        this._set_process_msg(TITLE_INIT);
        this._show_process_progress(false);
        this._set_progress(0,0,0);
        this._inputs_disabled(false);
        set_download_frame(null);
        $('url').focus();
        procStatus = 0;
    },
    
    _show_initialize : function()
    {
        this._set_process_msg(TITLE_CONNECTING);
        this._show_process_progress(true);
        $('source-url').innerHTML = $('url').value;
        $('conv-format').innerHTML = $('format').value;
    },
    
    _show_process_progress : function(show)
    {
        if (show)
        {
            Element.show('panim');
        }
        else
        {
            Element.hide('panim');
        }
    },
        
    _set_process_msg : function(msg)
    {
        $('title').innerHTML = msg;
    },
    
    _set_progress : function(percent, size, totalsize)
    {
        var ps = String(percent) + '%';
        var ptag = $('progress');
        if (percent > 10)
        {
            ptag.innerHTML = ps;
        }
        else
        {
            ptag.innerHTML = '';
        }
        
        ptag.style.width = ps;
        
        var cs;
        if (totalsize > 0)
        {
            cs = this._kb(size) + '/' + this._kb(totalsize) + 'KB';
        }
        else
        {
            cs ='-/-KB';
        }
        
        $('conv-size').innerHTML = cs;
    },
    
    _send_cancel : function()
    {
        if (this.base)
        {
            this.base.kick_cancel();
            this.base = null;
        }
    },

    _clear : function()
    {
        this.base = null;
        this._html_reset();
    },
    
    _kb : function(size)
    {
        return String(Math.floor(Number(size) / 1024));
    },
    
    _start_download : function(url)
    {
        set_download_frame(null);

        if (winIe)
        {
            this._set_process_msg(TITLE_COMPL_DL);
        }
        else
        {
            this._set_process_msg(TITLE_COMPL_AT);
            set_download_frame(url);
        }
        
        Element.hide('process');
        Element.hide('input-button');
        Element.hide('inputbox');

        $('download_a').href = url;
        
        //insert_468x60_cjad('download_ad');

        Element.show('download');
    
        if(navigator.userAgent.indexOf("Safari")!=-1)
        {
            // for safari
            $('input-button-back').innerHTML = '<p style="text-align:center;"><a href="http://vixy.net/">Back</a></p>';
        }

        Element.show('input-button-back');
    
        $('url').value = '';
        
//        urchinTracker('/flvtc_trakcing/dl/'+escape(url));
        procStatus = 2;
    },
        
    /////
    
    // from base
    on_connected : function()
    {
        this._set_process_msg(TITLE_RESLV);
    },
    
    on_file_info_end : function(size, err)
    {
        if (size > 0)
        {
            this._set_process_msg(TITLE_STARTING);
        }
        else
        {
            this._show_process_progress(false);
            var html = "<span style='color:red;'>Error: " + err + "</span>";
            this._set_process_msg(html);
            procStatus = 0;
        }
    },
    
    on_start_failed : function(err)
    {
        this._show_process_progress(false);
        var html = "<span style='color:red;'>Error: " + err + "</span>";
        this._set_process_msg(html);
        procStatus = 0;
    },
    
    on_fetching : function(suceeded, size, filesize)
    {
        if (suceeded)
        {
            this._set_process_msg(TITLE_PROCESS);
            var p = Math.floor(size * 100 / filesize);
            this._set_progress(p, size, filesize);
        }
    },

    on_fetch_end : function(succeeded)
    {
        if (succeeded)
        {
        }
        else
        {
            this._show_process_progress(false);
            this._set_process_msg(TITLE_PROC_FAILED);
            procStatus = 0;
        }
    },
    
    on_convert_end : function(suceeded, dlurl)
    {
        this._show_process_progress(false);
        if (suceeded)
        {
            this._set_progress(100, 0, 0);
            this._start_download(dlurl);
        }
        else
        {
            this._set_process_msg(TITLE_CONV_FAILED);
            procStatus = 0;
        }
    },
    
    /////
    // from html
    on_load : function()
    {
    },
    
    on_unload : function()
    {
        this._send_cancel();
    },
    
    on_start : function()
    {
        this.base = null;

        var url = $('url').value;
        url = url.replace(/\s/ig,'');
        if (this._is_valid_url(url)) 
        {
            this._inputs_disabled(true);
            
            Element.hide('inputbox');
            Element.show('process');

            this.base = new FlvdlBase(url);
            this.base.set_ui(this);
            this.base.set_ext($('format').value);
            this.base.kick_process();

            this._show_initialize();
            
//            urchinTracker('/flvtc_trakcing/start/'+escape(url));
            procStatus = 1;
        } 
        else 
        {
            this._html_reset();
        }
    },
    
    on_cancel : function()
    {
        this._send_cancel();
        this._clear();
    },
    
    on_back : function()
    {
        location.href="http://vixy.net/";
    },
    
    /////
    // from process_frame
    on_recieve_json : function(obj)
    {
        if (this.base)
        {
            this.base.on_recieve_json(obj);
        }
    }
    
}

/////

function get_query_url()
{
    var q = String(location.href).split('?');
    if (q[1] == undefined) return '';

    var qs = q[1].split('&');
    for(var i = 0; i < qs.length; i++)
    {
        var qu = qs[i].split('=');
        if (qu[0] == 'u')
        {
            return unescape(qu[1]);
        }
    }
    return '';
}

var flvdlui = new FlvdlUI();

function on_body_load() 
{
    $('url').focus();
    var url = get_query_url();
    if (url != '') $('url').value = url;
    
    flvdlui.on_load();
}

function on_body_unload()
{
    flvdlui.on_unload();
}

function set_process_frame(url)
{
    if (url)
    {
        $('process_frame').src = url;
    }
    else
    {
        $('process_frame').src = 'about:blank';
    }
}

function set_download_frame(url)
{
    if (url)
    {
        $('download_frame').src = url;
    }
    else
    {
        $('download_frame').src = 'about:blank';
    }
}

var recieve_json = function(obj)
{
    flvdlui.on_recieve_json(obj);
}
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 15:53   #8
Chrono Syndrome
 
Сообщений: n/a
Re: PB 4.0 + JS скрипты

Ах вон оно как... Так вам, уважаемый, надо было бы для начала с самим скриптом разобраться, а уже потом думать, как его из Пурика запустить.
 
Ответить с цитированием
Старый 14.05.2007, 17:45   #9
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

Так помаленьку и разбираюсь... и там и там...
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 17:53   #10
Chrono Syndrome
 
Сообщений: n/a
Сообщение от [TY]ran
Так помаленьку и разбираюсь... и там и там...
Совет: разберись сначала со скриптом. По крайней мере настолько, чтобы понять, нужны ему входные данные или нет.

Хорошо приведем наши доводы, надеюсь все верят AG.RU
Я вот не верю. Наидебильнейший ресурс, ИМХО.

ароч тест непродуман.
Честно говоря, я тоже так считаю ...

Хм, а может кто подсказать хороший сервер с рейтами >1k ?

Как в пуре определить координаты курсора крысы в 3Д???
Ну, если ты решил использовать в качестве движка встроенную пародию на OGRE, то это будет проблематично... Если что-то другое - напиши что именно.

Кто-нибудь здесь еще, кроме меня, играл в эту замечательную TBS ?

Сообщение от alcoSHoLiK
Линки?
http://www.triumphstudios.com/shadowmagic/index.php подойдет ?
Вот еще центральный фан-сайт, для комплекта: http://aow2.heavengames.com/

прикольно, но герои мну больше нравяцо
Чем же ? ИМХО, они (сужу по 1-3 частям, остальных не видела) практически по всем статьям проигрывают AoW...

Гляньте на тот же Warhammer: Online ну дубликат WoW, только они додумались от себя добавить нового, и пробуют переплюнуть WoW, хотя уже 2 раза облажались, один из разов, это из-за недостатка финансов, студия отказалась от разработки.
А еще Толкиен, гад, нагло стырил из WoW орков с эльфами.

Почти в тему: http://www.cyty.com/robocom/

Я вот тут думаю: может стоит почистить тему ?


Говорят, что есть Виста совместимый PureBasic v4.10
Не совсем так: пока есть только его первая бета-версия.

есть ли существенные изменения
Гм, вроде же список представлен: http://www.purebasic.fr/english/viewtopic.php?t=27343 ?

а помоему она уже давно доступна вроде
Давно, но не для всех: раньше тестирование было закрытым.

Естественно, читал, но хочется узнать человеческое, "живое" мнение, а не сухие строки листа изменений.
Ну это уж точно не к Maxus'у ()...

Maxus, а вот можно поинтересоваться: нафига ты это написал ? Тебя немного о другом спрашивали, это-то все мы и сами знаем.

Добавила обновление до версии 4.02 (см. первый пост).

Значит так:
До тех пор, пока Maxus будет паразитировать здесь на должности модератора, я отказываюсь посещать данный раздел (с модерацией, я надеюсь, справятся СМы).
Имейте ввиду.
 
Ответить с цитированием
Старый 15.05.2007, 09:24   #11
kvitaliy
Оператор ЭВМ
 
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений
(для 5 пользователей)
Re: PB 4.0 + JS скрипты

Если вопрос стоит только в работе с flv файлами, то замем нужен этот скрипт? Проанализировав способы проигрования на сайтах пришёл к выводу, что flv воспроизводиться обыкновенной Flash(.swf) программой, которая в свою очередь воспроизводиться обыкновенным Flash Player. PB умеет через ShockwaveFlash (ActiveX) воспроизводить swf файлы, Найди флешку(сграбь с сайта, где она используеться) которая умеет воспроизводить flv файлы. Осталось только всё это обьединить в одно целое и можно создать flvplayer на PureBasic! Ну, а всё что можно воспроизвести на экране монитора, то можно и захватить и сконвертировать в другой формат, если надо.
(Offline)
 
Ответить с цитированием
Старый 15.05.2007, 15:45   #12
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

хм, похоже на идею... интереснее конечно сделать без ActiveX, на чистом коде, но для первого раза пойдет
(Offline)
 
Ответить с цитированием
Старый 15.05.2007, 16:35   #13
kvitaliy
Оператор ЭВМ
 
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений
(для 5 пользователей)
Re: PB 4.0 + JS скрипты

Готовое решение уже есть вот тут:

http://pbasic.spb.ru/phpBB2/viewtopic.php?t=115
(Offline)
 
Ответить с цитированием
Старый 15.05.2007, 16:58   #14
jimon
 
Сообщений: n/a
Re: PB 4.0 + JS скрипты


flv ето сокращение от Flash Video
и вообще к современым плеерам уже понаделывали плагины которые позволяют flv декодировать ... к примеру jetAudio может
 
Ответить с цитированием
Старый 15.05.2007, 19:36   #15
[TY]ran
Нуждающийся
 
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Re: PB 4.0 + JS скрипты

Все равно своего охота! Kvitalliy ты не против если я поизваращаюсь с этим кодом и попробую сделать реальный flv плеер с конвертацией? Если получицца конечно...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
php скрипты Lelick Основной форум 18 23.07.2008 16:28
Скрипты и скриптовые ролики. Тарас Шевченко 2D-программирование 18 11.06.2007 00:42
PHP Скрипты и BMax johnk FAQ и уроки 6 18.05.2007 16:44
UserBars2 - дурим скрипты jimon Болтовня 0 02.11.2006 21:01
скрипты для Blitz Akima 3D-программирование 17 13.01.2006 21:59


Часовой пояс GMT +4, время: 17:50.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com