Jump to content

Конвертер скриптов SAMP -> MTASA


Recommended Posts

for(new i; i < 10; i ++) { 
   // something 
} 

На

for i = 0, 10 do 
   -- something 
end 

Ну это уже совсем смешно... С таким подходом ты за 5 минут напишешь любой конвертер с любого на любой язык.

Затрать свои 5 минут на регулярку, для преобразования подобного из pawn в Lua.

Примитивный пример кода:

new 
    gStrings[3][6, 3, 3] = 
    { 
        {'H', 'e',  'l', 'l', 'o', '\0'}, 
        {'H', 'i', '\0'}, 
        {'Y', 'o', '\0'} 
    }; 
  
stock Func1(...) 
{ 
    static const 
            STATIC_ARGS = 0; 
    new 
        n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL; 
    if (n) 
    { 
        new 
            arg_start, 
            arg_end; 
        #emit CONST.alt        8 
        #emit LCTRL          5 
        #emit ADD 
        #emit STOR.S.pri        arg_start 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit STOR.S.pri        arg_end 
        do 
        { 
            #emit LOAD.I 
            #emit PUSH.pri 
            arg_end -= BYTES_PER_CELL; 
            #emit LOAD.S.pri      arg_end 
        } 
        while (arg_end > arg_start); 
        n += BYTES_PER_CELL * STATIC_ARGS; 
        #emit PUSH.S          n 
        #emit SYSREQ.C         printf 
        n += BYTES_PER_CELL; 
        #emit LCTRL          4 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit SCTRL          4 
    } 
} 
  

Link to comment

Затрать свои 5 минут на регулярку, для преобразования подобного из pawn в Lua.

Примитивный пример кода:

new 
    gStrings[3][6, 3, 3] = 
    { 
        {'H', 'e',  'l', 'l', 'o', '\0'}, 
        {'H', 'i', '\0'}, 
        {'Y', 'o', '\0'} 
    }; 
  
stock Func1(...) 
{ 
    static const 
            STATIC_ARGS = 0; 
    new 
        n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL; 
    if (n) 
    { 
        new 
            arg_start, 
            arg_end; 
        #emit CONST.alt        8 
        #emit LCTRL          5 
        #emit ADD 
        #emit STOR.S.pri        arg_start 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit STOR.S.pri        arg_end 
        do 
        { 
            #emit LOAD.I 
            #emit PUSH.pri 
            arg_end -= BYTES_PER_CELL; 
            #emit LOAD.S.pri      arg_end 
        } 
        while (arg_end > arg_start); 
        n += BYTES_PER_CELL * STATIC_ARGS; 
        #emit PUSH.S          n 
        #emit SYSREQ.C         printf 
        n += BYTES_PER_CELL; 
        #emit LCTRL          4 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit SCTRL          4 
    } 
} 
  

Мне кажется, что такой код в скрипте для SAMP (да, да, а вы что подумали?) могут додуматься написать только тупые люди, т.к. ни одному нормальному человек не придет в голову управлять стеком и опкодами виртуальной машины Pawn в SAMP скрипте. Даже на оф. форуме так написано :lol:

Бред по сути, читайте ровно, да.

Link to comment

Конвертер нужен обычным скриптерам на базовый функционал. Если конвертер вдруг будет иметь успех, то можно углубиться до чего угодно. И нанять AirKit'a тестером ))

Link to comment
Мне кажется, что такой код в скрипте для SAMP (да, да, а вы что подумали?) могут додуматься написать только тупые люди, т.к. ни одному нормальному человек не придет в голову управлять стеком и опкодами виртуальной машины Pawn в SAMP скрипте. Даже на оф. форуме так написано :lol:

Бред по сути, читайте ровно, да.

Кто, где, когда на официальном форуме говорил об этом?

p.s. Код скопипастен с официального форума, от Y_Less. см YSI библиотеки, а так же официальные примеры на вики сампа.

UPD:

Конвертер нужен обычным скриптерам на базовый функционал. Если конвертер вдруг будет иметь успех, то можно углубиться до чего угодно. И нанять AirKit'a тестером ))

Единственный возможный конвертер, это мозг скриптера.

Link to comment

My dear sceptic ^^ Ну хотя бы ради прикола можно попробовать, 1х если какие-то штуки встанут ребром, что поставит под сомнение идею, то можно и не продолжать.

Link to comment
p.s. Код скопипастен с официального форума, от Y_Less. см YSI библиотеки, а так же официальные примеры на вики сампа.

Кто, где, когда на официальном форуме говорил об этом?

Y_Less, 3 марта 2012 года. Сообщение от него сам найдешь.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...