forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Логово Тайна Конопли (http://forum.boolean.name/showthread.php?t=2549)

Leito 13.08.2007 01:21

это демонстрация меню. а не игры.

то что осталось за кадром) оброботка команд скриптовой системы. я добрый учитесь))
Код:

Function GameScript(Command$)

If Left(command$,9)="setreport" Then
        b=11
        a$=""
        c$=""
        d$=""
        g$=""       
        e=0
        f=0
        While a<>"."
                c$=c$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend       
        a$=""
        While a<>"."
                d$=d$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend
        a$=""
        While a<>"."
                g$=g$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend
        p$=Mid(Command$,b,Len(Command$)-b+1)
        setreport(p$,Int(c$),Int(d$),Int(g$))
End If

If Left(command$,2)="if" Then
        QDSL=0
        b=4
        a$=""
        c$=""
        d$=""
        e=0
        While c$<>"then"
                If c$="and"
                        QDSL=QDSL+1: DimScrLet(QDSL)=1
                End If
                If c$="or"
                        QDSL=QDSL+1: DimScrLet(QDSL)=0
                End If
                c$=""
                While Mid(command$,b,1)<>"("
                        b=b+1
                Wend
                b=b+1
                While Mid(command$,b,1)<>")"
                        a$=Mid(command$,b,1)
                        c$=c$+a$
                        b=b+1
                Wend
                e=ControlCondition(c$)
                QDSL=QDSL+1
                If e=1
                        DimScrLet(QDSL)=1
                Else
                        DimScrLet(QDSL)=0
                End If
                b=b+1
                While Mid(command$,b,1)=" "
                        b=b+1
                Wend
                c$=Mid(command$,b,1)
                a$=""
                While a$<>" "
                        c$=c$+a$
                        b=b+1
                        a$=Mid(command$,b,1)
                        If a$="" a$=" "
                Wend
        Wend
        If QDSL=1
                ScrLet=DimScrLet(QDSL)
        Else
                i=0
                While QDSL>i+2
                        i=i+2
                        If DimScrLet(i)=0
                                If DimScrLet(i-1)=1 Or DimScrLet(i+1)=1 DimScrLet(i-1)=1 Else DimScrLet(i-1)=0
                                For j=i To QDSL-2
                                        DimScrLet(j)=DimScrLet(j+2)
                                Next
                                i=i-2
                                QDSL=QDSL-2
                        End If
                Wend
                While QDSL>1
                        If DimScrLet(1)=1 And DimScrLet(3)=1 DimScrLet(1)=1 Else DimScrLet(1)=0
                        For j=2 To QDSL-2
                                DimScrLet(j)=DimScrLet(j+2)
                        Next
                        QDSL=QDSL-2
                Wend
                ScrLet=DimScrLet(1)
        End If
End If

If Left(command$,4)="!end" Then
        ScrLet=1
End If

If Left(command$,5)="trade" Then
        If gamescr=7
                norep=8
                TalkUD1=0
                TalkUD2=0
                TalkNum=-2
                ;Bagtime()
                ;pppp$="qt"
                TalkIS=0
                Menu10Com$=Command$
        Else
                GameScr=11       
                c$=Mid(command$,7,Len(command$)-6)
                For i=1 To QN
                        If NPC(i)\ID$ = c$ f=i
                Next       
                Menu11NTN=f
       
                TargetBx1=0
                TargetBy1=0
                TargetBx2=0
                TargetBy2=0                       
                Bup1=0
                Bup2=0                       
                WhoseInv=2
                Submenu10status=0
                QSellThings=0
                QBuyThings=0
                For i=1 To Qthings
                        InvImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+Inventory(i)\ID+".bmp")
                        ScaleImage InvImage(i),GK#,GK#
                Next
               
                For i=1 To NPC(Menu11NTN)\Qthings
                        InvImage2(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+NPC(Menu11NTN)\Inv[i]\ID+".bmp")
                        ScaleImage InvImage2(i),GK#,GK#
                Next
       
                Ib1=LoadImage("data\textures\menu\Menu11\b1.bmp")
                Ib2=LoadImage("data\textures\menu\Menu11\b2.bmp")                       
                ScaleImage ib1,GK#,GK#
                ScaleImage ib2,GK#,GK#
                Ib3=LoadImage("data\textures\Menu\Menu11\b41.bmp")
                Ib4=LoadImage("data\textures\Menu\Menu11\b42.bmp")
                Ib5=LoadImage("data\textures\Menu\Menu11\b51.bmp")
                Ib6=LoadImage("data\textures\Menu\Menu11\b52.bmp")
                Ib7=LoadImage("data\textures\Menu\Menu11\b61.bmp")
                Ib8=LoadImage("data\textures\Menu\Menu11\b62.bmp")
                Ib9=LoadImage("data\textures\Menu\Menu11\b71.bmp")
                Ib10=LoadImage("data\textures\Menu\Menu11\b72.bmp")
                Ib17=LoadImage("data\textures\Menu\Menu11\b81.bmp")
                Ib18=LoadImage("data\textures\Menu\Menu11\b82.bmp")                       
                Ib19=LoadImage("data\textures\Menu\Menu11\b3.bmp")
                Ib20=LoadImage("data\textures\Menu\Menu11\b11.bmp")                       
                Ib21=LoadImage("data\textures\Menu\Menu11\b9.bmp")

                Ib23=LoadImage("data\textures\Menu\Menu11\b101.bmp")
                Ib24=LoadImage("data\textures\Menu\Menu11\b102.bmp")
                Ib25=LoadImage("data\textures\Menu\Menu11\d11.bmp")
                Ib26=LoadImage("data\textures\Menu\Menu11\d12.bmp")                       
                ScaleImage ib3,GK#,GK#
                ScaleImage ib4,GK#,GK#
                ScaleImage ib5,GK#,GK#
                ScaleImage ib6,GK#,GK#
                ScaleImage ib7,GK#,GK#
                ScaleImage ib8,GK#,GK#
                ScaleImage ib9,GK#,GK#
                ScaleImage ib10,GK#,GK#
                ScaleImage ib17,GK#,GK#
                ScaleImage ib18,GK#,GK#
                ScaleImage ib19,GK#,GK#                                               
                ScaleImage ib20,GK#,GK#                               
                ScaleImage ib21,GK#,GK#

                ScaleImage ib23,GK#,GK#
                ScaleImage ib24,GK#,GK#                                                                                                                               
                ScaleImage ib25,GK#,GK#
                ScaleImage ib26,GK#,GK#       
                       
                Ib11=LoadImage("data\textures\Menu\Menu11\c1.bmp")
                Ib12=LoadImage("data\textures\Menu\Menu11\c2.bmp")
                Ib13=LoadImage("data\textures\Menu\Menu11\c12.bmp")
                Ib14=LoadImage("data\textures\Menu\Menu11\c22.bmp")
                Ib15=LoadImage("data\textures\Menu\Menu11\c3.bmp")
                Ib16=LoadImage("data\textures\Menu\Menu11\c4.bmp")
                ScaleImage ib11,GK#,GK#
                ScaleImage ib12,GK#,GK#
                ScaleImage ib13,GK#,GK#
                ScaleImage ib14,GK#,GK#
                ScaleImage ib15,GK#,GK#
                ScaleImage ib16,GK#,GK#
                               
                ;------???? ???? ? ????------
                ppa=MilliSecs()-pa
                For i=1 To QN
                        eea(i)=MilliSecs()-ea(i)
                Next
                ;--------------------------------
        End If

End If

If Left(command$,2)="nt" Then
        norep=2
        TalkUD1=0
        TalkUD2=0
        TalkNum=Mid(Command$,4,Len(Command$)-3)
;        pppp$="nt"
        TalkIS=0
End If

If Left(command$,2)="qt" Then
        norep=8
        TalkUD1=0
        TalkUD2=0
        If TalkNum<>-2 TalkNum=-1
;        Bagtime()
;        pppp$="qt"
        TalkIS=0
End If

If Left(command$,9)="addrecord" Then
        b=11
        a$=""
        c$=""
        d$=""
        e=0
        f=0
        While a<>"."
                c$=c$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend
        d$=Mid(command$,b,Len(command$)-b+1)

        For i=1 To Qrec
                If Records(i,0)=Int(c$) e=i
        Next
       
        If e=0
                Qrec=Qrec+1
                Records(Qrec,0)=Int(Float(c$))               
                Records(Qrec,1000)=Records(Qrec,1000)+1
                Records(Qrec,Records(Qrec,1000))=Int(d$)               
        Else
                For i=1 To Records(e,1000)
                        If Records(e,i)=Int(d$) f=1
                Next
                If f=0
                        Records(e,1000)=Records(e,1000)+1
                        Records(e,Records(e,1000))=Int(d$)
                End If
        End If
End If

If Left(command$,12)="changerecord" Then
        b=14
        a$=""
        c$=""
        d$=""
        e=0
        f=0
        While a<>"."
                c$=c$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend
        d$=Mid(command$,b,Len(command$)-b+1)

        For i=1 To Qrec
                If Records(i,0)=Int(c$) e=i
        Next
       
        If e<>0
                Records(e,1001)=Int(d$)
        End If
        command$=""
End If

If Left(command$,9)="addscript" Then
        e=0
        d$=Right(command$,Len(command$)-10)
        For i=1 To QSL
                If ScriptsList(i)=Int(Float(d$)) e=1
        Next
        If  ScriptsControlStatus=0
                If e=0
                        QSL=QSL+1
                        ScriptsList(QSL)=Int(Float(d$))
                End If
        Else
                If e=0
                        QTARS=QTARS+1
                        TempAddRemoveScripts(QTARS,1)=Int(Float(d$))
                        TempAddRemoveScripts(QTARS,2)=1                       
                End If
        End If
End If

If Left(command$,12)="removescript" Then
        e=0
        d$=Right(command$,Len(command$)-13)
        For i=1 To QSL
                If ScriptsList(i)=Int(Float(d$)) e=i
        Next
        If  ScriptsControlStatus=0       
                If e<>0
                        QSL = QSL - 1
                        For i=e To QSL
                                ScriptsList(i)=ScriptsList(i+1)
                        Next
                        ScriptsList(QSL+1)=0
                End If
        Else
                If e<>0
                        QTARS=QTARS+1
                        TempAddRemoveScripts(QTARS,1)=Int(Float(d$))
                        TempAddRemoveScripts(QTARS,2)=0               
                End If
        End If
End If

If Left(command$,7)="addtalk" Then
        b=8
        a$=""
        c$=""
        d$=""
        f=0
        e=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
        For i=1 To QN
                If NPC(i)\ID$ = c$
                        f=i
                End If
        Next       
        For i=1 To NPC(f)\QT
                If NPC(f)\Talk[i]=Int(Float(d$)) e=1
        Next
        If e=0 And f<>0
                NPC(f)\QT = NPC(f)\QT + 1
                NPC(f)\Talk[NPC(f)\QT]=Int(Float(d$))
        End If
End If

If Left(command$,10)="removetalk" Then
        b=11
        a$=""
        c$=""
        d$=""
        f=0
        e=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
        For i=1 To QN
                If NPC(i)\ID$ = c$
                        f=i
                End If
        Next       
        For i=1 To NPC(f)\QT
                If NPC(f)\Talk[i]=Int(Float(d$)) e=i
        Next
        If e<>0 And f<>0
                NPC(f)\QT = NPC(f)\QT - 1
                For i=e To NPC(f)\QT
                        NPC(f)\Talk[i]=NPC(f)\Talk[i+1]
                Next
                NPC(f)\Talk[NPC(f)\QT+1]=0
        End If
End If

If Left(command$,14)="changemaintalk" Then
        b=15
        a$=""
        c$=""
        d$=""
        f=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
        For i=1 To QN
                If NPC(i)\ID$ = c$
                        f=i
                End If
        Next       
        If f<>0
                NPC(f)\maintalk=Int(Float(d$))
        End If
        command$=""
End If

If Left(command$,10)="addbuyitem" Then
        PriceRel=0
        b=11
        a$=""
        c$=""
        d$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
       
        For i=1 To QBuyThings
                If BuyThings(i)\ID = Int(Float(c$)) And d$<>"" Then
                        BuyThings(i)\quantity = BuyThings(i)\quantity+Int(Float(d$))
                        d$=""
                End If
        Next
        If d$<>"" Then
                QBuyThings=QBuyThings+1
                BuyThings(QBuyThings)=New TypeInventory
                BuyThings(QBuyThings)\ID=Int(Float(c$))
                BuyThings(QBuyThings)\quantity=Int(Float(d$))
        End If
        If (gamescr=11) And d$<>""
                For i=1 To QBuyThings
                        If i<>QBuyThings FreeImage BuyThingsImage(i)
                        BuyThingsImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+BuyThings(i)\ID+".bmp")
                        ScaleImage BuyThingsImage(i),GK#,GK#
                Next       
        End If               
End If

If Left(command$,11)="addsellitem" Then
        PriceRel=0
        b=12
        a$=""
        c$=""
        d$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
       
        For i=1 To QSellThings
                If SellThings(i)\ID = Int(Float(c$)) And d$<>"" Then
                        SellThings(i)\quantity = SellThings(i)\quantity+Int(Float(d$))
                        d$=""
                End If
        Next
        If d$<>"" Then
                QSellThings=QSellThings+1
                SellThings(QSellThings)=New TypeInventory
                SellThings(QSellThings)\ID=Int(Float(c$))
                SellThings(QSellThings)\quantity=Int(Float(d$))
        End If
        If (gamescr=11) And d$<>""
                For i=1 To QSellThings
                        If i<>QSellThings FreeImage SellThingsImage(i)
                        SellThingsImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+SellThings(i)\ID+".bmp")
                        ScaleImage SellThingsImage(i),GK#,GK#
                Next       
        End If               
End If

If Left(command$,13)="removebuyitem" Then
        PriceRel=0
        b=14
        a$=""
        c$=""
        d$=""
        h=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
       
        For i=1 To QBuyThings
                If BuyThings(i)\ID = Int(Float(c$)) And d$<>"" Then
                        BuyThings(i)\quantity = BuyThings(i)\quantity-Int(Float(d$))
                        If BuyThings(i)\quantity<=0 Then
                                QBuyThings=QBuyThings-1
                                TargetBx1=0
                                TargetBy1=0
                                Bup1=0                                       
                                For j=i To QBuyThings
                                        BuyThings(j)\ID = BuyThings(j+1)\ID
                                        BuyThings(j)\quantity = BuyThings(j+1)\quantity
                                Next
                                h=1
                        End If
                        d$=""
                End If
        Next       
        If gamescr=11 And h=1
                For i=1 To QBuyThings
                        FreeImage BuyThingsImage(i)                       
                        BuyThingsImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+BuyThings(i)\ID+".bmp")
                        ScaleImage BuyThingsImage(i),GK#,GK#
                Next       
                FreeImage BuyThingsImage(QBuyThings+1)                       
        End If
End If

If Left(command$,14)="removesellitem" Then
        PriceRel=0
        b=15
        a$=""
        c$=""
        d$=""
        h=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
       
        For i=1 To QSellThings
                If SellThings(i)\ID = Int(Float(c$)) And d$<>"" Then
                        SellThings(i)\quantity = SellThings(i)\quantity-Int(Float(d$))
                        If SellThings(i)\quantity<=0 Then
                                QSellThings=QSellThings-1
                                TargetBx2=0
                                TargetBy2=0
                                Bup2=0                                       
                                For j=i To QSellThings
                                        SellThings(j)\ID = SellThings(j+1)\ID
                                        SellThings(j)\quantity = SellThings(j+1)\quantity
                                Next
                                h=1
                        End If
                        d$=""
                End If
        Next       
        If gamescr=11 And h=1
                For i=1 To QSellThings
                        FreeImage SellThingsImage(i)                       
                        SellThingsImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+SellThings(i)\ID+".bmp")
                        ScaleImage SellThingsImage(i),GK#,GK#
                Next       
                FreeImage SellThingsImage(QSellThings+1)                       
        End If
End If

If Left(command$,7)="additem" Then
        b=8
        a$=""
        c$=""
        d$=""
        c1$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        c1$=c$
        a$=""
        c$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend       
        d$=Mid(command$,b+1,Len(command$)-b)
        If c1$="hero"
                For i=1 To Qthings
                        If Inventory(i)\ID = Int(Float(c$)) And d$<>"" Then
                                Inventory(i)\quantity = Inventory(i)\quantity+Int(Float(d$))
                                d$=""
                        End If
                Next
                If d$<>"" Then
                        Qthings=Qthings+1
                        Inventory(Qthings)=New TypeInventory
                        Inventory(Qthings)\ID=Int(Float(c$))
                        Inventory(Qthings)\quantity=Int(Float(d$))
                End If
                If (gamescr=6 Or gamescr=10 Or gamescr=11 Or gamescr=12) And d$<>""
                        For i=1 To Qthings
                                If i<>Qthings FreeImage InvImage(i)
                                InvImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+Inventory(i)\ID+".bmp")
                                ScaleImage InvImage(i),GK#,GK#
                        Next       
                End If       
        Else
                f=0
                For i=1 To QN
                        If NPC(i)\ID$ = c1$
                                f=i
                        End If
                Next       
                If f<>0
                        For i=1 To NPC(f)\Qthings
                                If NPC(f)\Inv[i]\ID = Int(Float(c$)) And d$<>"" Then
                                        NPC(f)\Inv[i]\quantity = NPC(f)\Inv[i]\quantity+Int(Float(d$))
                                        d$=""
                                End If
                        Next                       
                        If d$<>"" Then
                                NPC(f)\Qthings=NPC(f)\Qthings+1
                                NPC(f)\Inv[NPC(f)\Qthings]=New TypeInventory
                                NPC(f)\Inv[NPC(f)\Qthings]\ID=Int(Float(c$))
                                NPC(f)\Inv[NPC(f)\Qthings]\quantity=Int(Float(d$))
                        End If       
                        If (gamescr=10 Or gamescr=11) And d$<>""
                                For i=1 To NPC(f)\Qthings
                                        If i<>NPC(f)\Qthings FreeImage InvImage2(i)
                                        InvImage2(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+NPC(f)\Inv[i]\ID+".bmp")
                                        ScaleImage InvImage2(i),GK#,GK#
                                Next       
                        End If                                               
                Else
                        For i=1 To QC
                                If cont(i)\ID$ = c1$
                                        f=i
                                End If
                        Next                       

                        If f<>0
                                For i=1 To cont(f)\Qthings
                                        If cont(f)\Inv[i]\ID = Int(Float(c$)) And d$<>"" Then
                                                cont(f)\Inv[i]\quantity = cont(f)\Inv[i]\quantity+Int(Float(d$))
                                                d$=""
                                        End If
                                Next                       
                                If d$<>"" Then
                                        cont(f)\Qthings=cont(f)\Qthings+1
                                        cont(f)\Inv[cont(f)\Qthings]=New TypeInventory
                                        cont(f)\Inv[cont(f)\Qthings]\ID=Int(Float(c$))
                                        cont(f)\Inv[cont(f)\Qthings]\quantity=Int(Float(d$))
                                End If       
                                If gamescr=12 And d$<>""
                                        For i=1 To cont(f)\Qthings
                                                If i<>cont(f)\Qthings FreeImage InvImage2(i)
                                                InvImage2(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+cont(f)\Inv[i]\ID+".bmp")
                                                ScaleImage InvImage2(i),GK#,GK#
                                        Next       
                                End If                                               
                        End If                               
                End If
        End If
End If

If Left(command$,10)="removeitem" Then
        b=11
        a$=""
        c$=""
        d$=""
        c1$=""
        h=0
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        c1$=c$
        a$=""
        c$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
        d$=Mid(command$,b+1,Len(command$)-b)
        If c1$="hero"
                For i=1 To Qthings
                        If Inventory(i)\ID = Int(Float(c$)) And d$<>"" Then
                                Inventory(i)\quantity = Inventory(i)\quantity-Int(Float(d$))
                                If inventory(i)\quantity<=0 Then
                                        Qthings=Qthings-1
                                        TargetBx=0
                                        TargetBy=0
                                        Bup=0
                                        TargetBx1=0
                                        TargetBy1=0
                                        Bup1=0                                       
                                        For j=i To Qthings
                                                Inventory(j)\ID = Inventory(j+1)\ID
                                                Inventory(j)\quantity = Inventory(j+1)\quantity
                                        Next
                                        h=1
                                End If
                                d$=""
                        End If
                Next       
                If (gamescr=6 Or gamescr=10 Or gamescr=11 Or gamescr=12) And h=1
                        For i=1 To Qthings
                                FreeImage InvImage(i)                       
                                InvImage(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+Inventory(i)\ID+".bmp")
                                ScaleImage InvImage(i),GK#,GK#
                        Next       
                        FreeImage InvImage(Qthings+1)                       
                End If
        Else
                f=0
                For i=1 To QN
                        If NPC(i)\ID$ = c1$
                                f=i
                        End If
                Next       
                If f<>0       
                        For i=1 To NPC(f)\Qthings
                                If NPC(f)\Inv[i]\ID = Int(Float(c$)) And d$<>"" Then
                                        NPC(f)\Inv[i]\quantity = NPC(f)\Inv[i]\quantity-Int(Float(d$))
                                        If NPC(f)\Inv[i]\quantity<=0 Then
                                                NPC(f)\Qthings=NPC(f)\Qthings-1
                                                TargetBx2=0
                                                TargetBy2=0
                                                Bup2=0
                                                For j=i To NPC(f)\Qthings
                                                        NPC(f)\Inv[j]\ID = NPC(f)\Inv[j+1]\ID
                                                        NPC(f)\Inv[j]\quantity = NPC(f)\Inv[j+1]\quantity
                                                Next
                                                h=1
                                        End If
                                        d$=""
                                End If
                        Next
                        If gamescr=10 Or gamescr=11 And h=1
                                For i=1 To NPC(f)\Qthings
                                        FreeImage InvImage2(i)                       
                                        InvImage2(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+NPC(f)\Inv[i]\ID+".bmp")
                                        ScaleImage InvImage2(i),GK#,GK#
                                Next       
                                FreeImage InvImage2(NPC(f)\Qthings+1)
                        End If
                Else
                        For i=1 To QC
                                If cont(i)\ID$ = c1$
                                        f=i
                                End If
                        Next                       
                        If f<>0
                                For i=1 To cont(f)\Qthings
                                        If cont(f)\Inv[i]\ID = Int(Float(c$)) And d$<>"" Then
                                                cont(f)\Inv[i]\quantity = cont(f)\Inv[i]\quantity-Int(Float(d$))
                                                If cont(f)\Inv[i]\quantity<=0 Then
                                                        cont(f)\Qthings=cont(f)\Qthings-1
                                                        TargetBx2=0
                                                        TargetBy2=0
                                                        Bup2=0
                                                        For j=i To cont(f)\Qthings
                                                                cont(f)\Inv[j]\ID = cont(f)\Inv[j+1]\ID
                                                                cont(f)\Inv[j]\quantity = cont(f)\Inv[j+1]\quantity
                                                        Next
                                                        h=1
                                                End If
                                                d$=""
                                        End If
                                Next
                                If gamescr=12 And h=1
                                        For i=1 To cont(f)\Qthings
                                                FreeImage InvImage2(i)                       
                                                InvImage2(i)=LoadImage("DATA\textures\Image\Inventory\Things\"+cont(f)\Inv[i]\ID+".bmp")
                                                ScaleImage InvImage2(i),GK#,GK#
                                        Next       
                                        FreeImage InvImage2(cont(f)\Qthings+1)
                                End If
                        End If               
                End If
        End If
End If

If Left(command$,6)="change" Then
        b=8
        a$=""
        c$=""
        d$=""
        g$=""       
        e=0
        f=0
        While a<>"." And a<>"="
                c$=c$+a$
                a$=Mid(Command$,b,1)
                b=b+1
        Wend
        e=1
        If a<>"="
                e=2
                a$=""
                While a<>"." And a<>"="
                        d$=d$+a$
                        a$=Mid(Command$,b,1)
                        b=b+1
                Wend
                If a$<>"="
                        e=3
                        a$=""
                        While a<>"="
                                g$=g$+a$
                                a$=Mid(Command$,b,1)
                                b=b+1
                        Wend
                End If
        End If
        p$=Mid(Command$,b,Len(Command$)-b+1)
        Select e
        Case 1
                Select c$
                Case "QH"
                        QH=CalcExp(p$)
                        If QH>24 QH=QH-24
                        Select QH
                        Case 1                        licol=50:licol2=1
                        Case 2                        licol=67:licol2=1
                        Case 3                        licol=84:licol2=1               
                        Case 4                        licol=101:licol2=1               
                        Case 5                        licol=118:licol2=1               
                        Case 6                        licol=135:licol2=1                       
                        Case 7                        licol=152:licol2=1               
                        Case 8                        licol=169:licol2=1               
                        Case 9                        licol=186:licol2=1               
                        Case 10                        licol=203:licol2=1               
                        Case 11                        licol=221:licol2=1               
                        Case 12                        licol=238:licol2=1               
                        Case 13                        licol=255:licol2=0               
                        Case 14                        licol=238:licol2=0
                        Case 15                        licol=221:licol2=0
                        Case 16                        licol=203:licol2=0
                        Case 17                        licol=186:licol2=0
                        Case 18                        licol=169:licol2=0
                        Case 19                        licol=152:licol2=0
                        Case 20                        licol=135:licol2=0
                        Case 21                        licol=118:licol2=0
                        Case 22                        licol=101:licol2=0
                        Case 23                        licol=84:licol2=0
                        Case 24                        licol=67:licol2=0
                        End Select
                End Select
                If Right(c$,1)="#"
                        ScriptsVar#(Int(Left(c$,Len(c$)-1)))=CalcExp(p$)
                End If
        Case 2
                Select c$
                Case "hero"
                        Select d$
                                Case "anim" Player(0)\Anim=CalcExp(p$)
                                Case "st" Player(0)\St=CalcExp(p$)
                                Case "con" Player(0)\con=CalcExp(p$)
                                Case "dex" Player(0)\dex=CalcExp(p$)
                                Case "sd" Player(0)\sd=CalcExp(p$)
                                Case "gd" Player(0)\gd=CalcExp(p$)
                                Case "la" Player(0)\la=CalcExp(p$)
                                Case "ha" Player(0)\ha=CalcExp(p$)
                                Case "ac" Player(0)\ac=CalcExp(p$)
                                Case "ev" Player(0)\ev=CalcExp(p$)
                                Case "tr" Player(0)\tr=CalcExp(p$)
                                Case "dam" Player(0)\dam=CalcExp(p$)
                                Case "asp" Player(0)\asp=CalcExp(p$)
                                Case "speed" Player(0)\speed#=CalcExp(p$)
                                Case "def" Player(0)\def=CalcExp(p$)
                                Case "realhp" Player(0)\realhp=CalcExp(p$)
                                Case "maxhp" Player(0)\maxhp=CalcExp(p$)
                                Case "crit" Player(0)\crit=CalcExp(p$)
                                Case "weight" Player(0)\weight=CalcExp(p$)
                                Case "wed" Player(0)\wed=CalcExp(p$)
                                Case "wec" Player(0)\wec=CalcExp(p$)
                                Case "was" Player(0)\was=CalcExp(p$)
                                Case "wet" Player(0)\wet=CalcExp(p$)
                                Case "ard" Player(0)\ard=CalcExp(p$)
                                Case "art" Player(0)\art=CalcExp(p$)
                                Case "distat" Player(0)\distat=CalcExp(p$)
                                Case "dac" Player(0)\dac=CalcExp(p$)
                                Case "dev" Player(0)\dev=CalcExp(p$)
                                Case "ex" Player(0)\Ex=CalcExp(p$)
                                Case "lvlexp" Player(0)\lvlexp=CalcExp(p$)
                                Case "level" Player(0)\Level=CalcExp(p$)
                                Case "charpoints" Player(0)\CharPoints=CalcExp(p$)
                                Case "skillpoints" Player(0)\SkillPoints=CalcExp(p$)
                                Case "deadmovietime" Player(0)\DeadMovieTime=CalcExp(p$)
                                Case "movetype" Player(0)\MoveType=CalcExp(p$)
                                Case "qthings" Qthings=CalcExp(p$)
                                Case "yaw"
                                Player(0)\Yaw#=CalcExp(p$)
                                RotateEntity Player(0)\mesh1,0,Player(0)\Yaw#,0
                                Case "x" PositionEntity Player(0)\mesh1,CalcExp(p$),EntityY#(Player(0)\mesh1),EntityZ#(Player(0)\mesh1)
                                Case "y" PositionEntity Player(0)\mesh1,EntityX#(Player(0)\mesh1),CalcExp(p$),EntityZ#(Player(0)\mesh1)
                                Case "z" PositionEntity Player(0)\mesh1,EntityX#(Player(0)\mesh1),EntityY#(Player(0)\mesh1),CalcExp(p$)
                                Case "scalex"
                                Player(0)\ScaleX#=CalcExp(p$)
                                ScaleEntity Player(0)\mesh1,Player(0)\ScaleX,Player(0)\ScaleY,Player(0)\ScaleZ
                                Case "scaley"
                                Player(0)\ScaleY#=CalcExp(p$)
                                ScaleEntity Player(0)\mesh1,Player(0)\ScaleX,Player(0)\ScaleY,Player(0)\ScaleZ
                                Case "scalez"
                                Player(0)\ScaleZ#=CalcExp(p$)
                                ScaleEntity Player(0)\mesh1,Player(0)\ScaleX,Player(0)\ScaleY,Player(0)\ScaleZ
                                Case "alpha"
                                Player(0)\alpha#=CalcExp(p$)
                                EntityAlpha Player(0)\mesh1,Player(0)\alpha#
                        End Select
                End Select
        Case 3
                Select c$
                Case "NPC"
                        For i=1 To QN
                                If NPC(i)\ID$ = d$
                                        f=i
                                End If
                        Next               
                        Select g$
                                Case "usetalk" NPC(f)\UseTalk=CalcExp(p$)
                                Case "anim" NPC(f)\Anim=CalcExp(p$)
                                Case "typeai" NPC(f)\TypeAI=CalcExp(p$)
                                Case "dam" NPC(f)\Dam=CalcExp(p$)
                                Case "asp"  NPC(f)\Asp=CalcExp(p$)
                                Case "speed"  NPC(f)\Speed#=CalcExp(p$)
                                Case "def"  NPC(f)\Def=CalcExp(p$)
                                Case "realhp"  NPC(f)\realhp=CalcExp(p$)
                                Case "maxhp"  NPC(f)\MaxHp=CalcExp(p$)
                                Case "crit"  NPC(f)\Crit=CalcExp(p$)
                                Case "distat"  NPC(f)\distat=CalcExp(p$)
                                Case "ex"  NPC(f)\Ex=CalcExp(p$)
                                Case "look"  NPC(f)\look=CalcExp(p$)
;                                Case "number"  NPC(f)\Number=CalcExp(p$)
                                Case "weight"  NPC(f)\weight=CalcExp(p$)
                                Case "alive"  NPC(f)\Alive=CalcExp(p$)
                                Case "aggr"  NPC(f)\aggr=CalcExp(p$)
                                Case "maintalk"  NPC(f)\maintalk=CalcExp(p$)
                                Case "qt"  NPC(f)\QT=CalcExp(p$)
                                Case "qthings"  NPC(f)\Qthings=CalcExp(p$)
                                Case "yaw"
                                NPC(f)\Yaw#=CalcExp(p$)
                                RotateEntity NPC(f)\mesh1,0,NPC(f)\Yaw#,0
                                Case "x" PositionEntity NPC(f)\mesh1,CalcExp(p$),EntityY#(NPC(f)\mesh1),EntityZ#(NPC(f)\mesh1)
                                Case "y" PositionEntity NPC(f)\mesh1,EntityX#(NPC(f)\mesh1),CalcExp(p$),EntityZ#(NPC(f)\mesh1)
                                Case "z" PositionEntity NPC(f)\mesh1,EntityX#(NPC(f)\mesh1),EntityY#(NPC(f)\mesh1),CalcExp(p$)
                                Case "scalex"
                                NPC(f)\ScaleX#=CalcExp(p$)
                                ScaleEntity NPC(f)\mesh1,NPC(f)\ScaleX,NPC(f)\ScaleY,NPC(f)\ScaleZ
                                Case "scaley"
                                NPC(f)\ScaleY#=CalcExp(p$)
                                ScaleEntity NPC(f)\mesh1,NPC(f)\ScaleX,NPC(f)\ScaleY,NPC(f)\ScaleZ
                                Case "scalez"
                                NPC(f)\ScaleZ#=CalcExp(p$)
                                ScaleEntity NPC(f)\mesh1,NPC(f)\ScaleX,NPC(f)\ScaleY,NPC(f)\ScaleZ       
                                Case "alpha"
                                NPC(f)\alpha#=CalcExp(p$)
                                EntityAlpha NPC(f)\mesh1,NPC(f)\alpha#                                               
                        End Select
                Case "cont"
                       
                        For i=1 To QC
                                If Cont(i)\ID$ = d$
                                        f=i
                                End If
                        Next
                       
                        Select g$
                                Case "yaw"
                                cont(f)\Yaw#=CalcExp(p$)
                                RotateEntity cont(f)\mesh,0,cont(f)\Yaw#,0
                                Case "x" PositionEntity cont(f)\mesh,CalcExp(p$),EntityY#(cont(f)\mesh),EntityZ#(cont(f)\mesh)
                                Case "y" PositionEntity cont(f)\mesh,EntityX#(cont(f)\mesh),CalcExp(p$),EntityZ#(cont(f)\mesh)
                                Case "z" PositionEntity cont(f)\mesh,EntityX#(cont(f)\mesh),EntityY#(cont(f)\mesh),CalcExp(p$)
                                Case "scalex"
                                cont(f)\ScaleX#=CalcExp(p$)
                                ScaleEntity cont(f)\mesh,cont(f)\ScaleX,cont(f)\ScaleY,cont(f)\ScaleZ
                                Case "scaley"
                                cont(f)\ScaleY#=CalcExp(p$)
                                ScaleEntity cont(f)\mesh,cont(f)\ScaleX,cont(f)\ScaleY,cont(f)\ScaleZ
                                Case "scalez"
                                cont(f)\ScaleZ#=CalcExp(p$)
                                ScaleEntity cont(f)\mesh,cont(f)\ScaleX,cont(f)\ScaleY,cont(f)\ScaleZ
                                Case "alpha"
                                cont(f)\alpha#=CalcExp(p$)
                                EntityAlpha cont(f)\mesh,cont(f)\alpha#
                        End Select
                Case "mesh"
                       
                        For i=1 To Qmesh
                                If Omesh(i)\ID$ = d$
                                        f=i
                                End If
                        Next
                       
                        Select g$
                                Case "yaw"
                                OMesh(f)\Yaw#=CalcExp(p$)
                                RotateEntity OMesh(f)\mesh,0,OMesh(f)\Yaw#,0
                                Case "x" PositionEntity OMesh(f)\mesh,CalcExp(p$),EntityY#(OMesh(f)\mesh),EntityZ#(OMesh(f)\mesh)
                                Case "y" PositionEntity OMesh(f)\mesh,EntityX#(OMesh(f)\mesh),CalcExp(p$),EntityZ#(OMesh(f)\mesh)
                                Case "z" PositionEntity OMesh(f)\mesh,EntityX#(OMesh(f)\mesh),EntityY#(OMesh(f)\mesh),CalcExp(p$)
                                Case "scalex"
                                OMesh(f)\ScaleX#=CalcExp(p$)
                                ScaleEntity OMesh(f)\mesh,OMesh(f)\ScaleX,OMesh(f)\ScaleY,OMesh(f)\ScaleZ
                                Case "scaley"
                                OMesh(f)\ScaleY#=CalcExp(p$)
                                ScaleEntity OMesh(f)\mesh,OMesh(f)\ScaleX,OMesh(f)\ScaleY,OMesh(f)\ScaleZ
                                Case "scalez"
                                OMesh(f)\ScaleZ#=CalcExp(p$)
                                ScaleEntity OMesh(f)\mesh,OMesh(f)\ScaleX,OMesh(f)\ScaleY,OMesh(f)\ScaleZ
                                Case "alpha"
                                OMesh(f)\alpha#=CalcExp(p$)
                                EntityAlpha OMesh(f)\mesh,OMesh(f)\alpha#                                                               
                        End Select                       
                End Select       
        End Select
End If

If Left(command$,8)="boatmove" Then
        b=9
        a$=""
        c$=""
        d$=""
        e=0       
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
       
        e=Int(Float(c$))
        c$=""
        a$=""
       
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(Command$,b,1)
        Wend
               
        boat(e)\X=Int(Float(c$))
       
        d$=Mid(command$,b+1,Len(command$)-b)
       
        boat(e)\Z=Int(Float(d$))
        boat(e)\moving=1
               
        For j=1 To QN
                If NPC(j)\ID$ = boat(e)\NPCname$
                        f=j
                End If
        Next

        Animate FindChild(NPC(f)\mesh2,"hero"),1,.25
        Animate FindChild(NPC(f)\mesh2,"weapon"),1,.25
        EntityAlpha FindChild(NPC(f)\mesh2,"hero"),1
        EntityAlpha FindChild(NPC(f)\mesh2,"weapon"),1
        EntityAlpha FindChild(NPC(f)\mesh1,"hero"),0
        EntityAlpha FindChild(NPC(f)\mesh1,"weapon"),0
       
End If

End Function

Остальная часть скриптов.
Код:

Function LoadScriptsCommand()
file=ReadFile("DATA\text\scripts.txt")
QSC=0
QHS=0
While Not Eof(file)
        QSC=QSC+1
        ScriptsCommand$(QSC)=ReadLine(file)
        If Left(ScriptsCommand$(QSC),11)="beginscript"
                QHS=QHS+1
                HeadScripts(QHS,1)=Int(Right(ScriptsCommand$(QSC),Len(ScriptsCommand$(QSC))-12))
                HeadScripts(QHS,2)=QSC
        End If
Wend
CloseFile(file)
End Function


Function ScriptsControl()
ScriptsControlStatus=1
For i=1 To QSL
        For j=1 To QHS
                If HeadScripts(j,1)=ScriptsList(i)
                        a=HeadScripts(j,2)
                        k=a+1
                        QTS=0
                        While ScriptsCommand$(k)<>"endscript"
                                TempScripts$(k-a)=ScriptsCommand$(k)
                                k=k+1
                                QTS=QTS+1
                        Wend
                        If QTS<>0
                                ScrLet=1
                                For k=1 To QTS
                                        If ScrLet=1
                                                GameScript(TempScripts$(k))
                                        Else
                                                GameScript("!"+TempScripts$(k))
                                        End If                                       
                                Next
                        End If
                End If
        Next
Next
ScriptsControlStatus=0

For i=1 To QTARS
        If TempAddRemoveScripts(i,2)=1
                gamescript("addscript."+Str(TempAddRemoveScripts(i,1)))
        Else
                gamescript("removescript."+Str(TempAddRemoveScripts(i,1)))
        End If
Next
QTARS=0
End Function

Function ControlCondition(Condition$)
e=0
a$=""
b=1
c$=""
d$=""
p1=0
p2=0
While e=0
        c$=c$+a$
        a$=Mid(Condition$,b,1)
        b=b+1
        If a$="=" Or a$="<" Or a=">" Or a="!" Or a="\" Or a="/" e=1
Wend
d$=Mid(Condition$,b,Len(Condition$)-b+1)

p1=CalcExp(c$)
p2=CalcExp(d$)

Select a$
Case "=" If p1=p2 Return 1 Else Return 0
Case "<" If p1<p2 Return 1 Else Return 0
Case ">" If p1>p2 Return 1 Else Return 0
Case "!" If p1<>p2 Return 1 Else Return 0
Case "\" If p1>=p2 Return 1 Else Return 0
Case "/" If p1<=p2 Return 1 Else Return 0
End Select
End Function

Function TransVar#(var$)
check=0
Select var$
Case "QH"
        Return QH
        check=1
Case "gamescr"
        Return GameScr
        check=1       
Case "millisecs"
        Return MilliSecs()
        check=1
End Select

If Right(var$,1)="#"
        Return ScriptsVar#(Int(Left(var$,Len(var$)-1)))
End If
               
If Left(var$,10)="searchitem" Then
        b=11
        e=0
        a$=""
        c$=""
        d$=""
        g$=""
        While a<>"."
                b=b+1
                g$=g$+a$
                a$=Mid(var$,b,1)
        Wend
        a$=""
        While a<>"."
                b=b+1
                c$=c$+a$
                a$=Mid(var$,b,1)
        Wend
        a=""
        d$=Mid(var$,b+1,Len(var$)-b)
        If g$="hero"
                For i=1 To Qthings
                        If inventory(i)\ID=Int(c$) And inventory(i)\quantity>=Int(Float(d$))
                                e=1
                        End If
                Next               
        Else
                f=0
                For i=1 To QN
                        If NPC(i)\ID$ = g$
                                f=i
                        End If
                Next       
                If f<>0
                        For i=1 To NPC(f)\Qthings
                                If NPC(f)\inv[i]\ID=Int(c$) And NPC(f)\inv[i]\quantity>=Int(Float(d$))
                                        e=1
                                End If
                        Next
                Else
                        For i=1 To QC
                                If Cont(i)\ID$ = g$
                                        f=i
                                End If
                        Next
                        If f<>0
                                For i=1 To cont(f)\Qthings
                                        If cont(f)\inv[i]\ID=Int(c$) And cont(f)\inv[i]\quantity>=Int(Float(d$))
                                                e=1
                                        End If
                                Next                               
                        End If
                End If       
        End If
        Return e
        check=1       
End If

If Left(var$,5)="equip"
        b=7
        c$=""
        a$=""
        d$=""
        While a$<>"."
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        d$=Mid(var$,b,Len(var$)-b+1)
        e=0
        If Int(c$)=0
                If equip(0)\ID=Int(d$) e=1
        Else
                If equip(1)\ID=Int(d$) e=1
        End If
        Return e
        check=1
End If

If Left(var$,8)="opencont"
        d$=Right(var$,Len(var$)-9)
        e=0
        If GameScr=12
                If cont(Menu12NTC)\ID$=d$ e=1
        End If
        Return e
        check=1
End If

If Left(var$,8)="tradeNPC"
        d$=Right(var$,Len(var$)-9)
        e=0
        If GameScr=11
                If NPC(Menu11NTN)\ID$=d$ e=1
        End If
        Return e
        check=1
End If

If Left(var$,10)="visibility"
        visib#=constant("visibility_degrees")
        b=12
        a$=""
        c$=""
        d$=""
        f=0
        While a$<>"."
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        d$=Mid(var$,b,Len(var$)-b+1)

        For i=1 To QN
                If NPC(i)\ID$=c$ f=i
        Next
        px1#=EntityX#(NPC(f)\mesh1,1)
        pz1#=EntityZ#(NPC(f)\mesh1,1)
        pyaw#=EntityYaw#(NPC(f)\mesh1,1)
        plook#=NPC(f)\look

        If d$="hero"
                px2#=EntityX#(player(0)\mesh1,1)
                pz2#=EntityZ#(player(0)\mesh1,1)
        Else
                For i=1 To QN
                        If NPC(i)\ID$=d$ f=i
                Next
                px2#=EntityX#(NPC(f)\mesh1,1)
                pz2#=EntityZ#(NPC(f)\mesh1,1)
        End If       
       
        dist#=Sqr((px1#-px2#)*(px1#-px2#)+(pz1#-pz2#)*(pz1#-pz2#))
        If dist<plook#
                rot#=180+rotate(px1#,pz1#,px2#,pz2#)
                pyaw1#=pyaw# - visib#/2
                pyaw2#=pyaw# + visib#/2
                If pyaw2#>=180 And rot#<0 rot#=rot# + 360
                If pyaw1#<-180 And rot#>0 rot#=rot# - 360
               
                If pyaw1#<rot# And pyaw2#>rot#
                        Return 1
                Else
                        Return 0
                End If
        Else
                Return 0
        End If
        check=1
End If

If Left(var$,3)="NPC"
        b=5
        a$=""
        c$=""
        d$=""
        f=0
        While a$<>"."
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        d$=Mid(var$,b,Len(var$)-b+1)
        For i=1 To QN
                If NPC(i)\ID$ = c$
                        f=i
                End If
        Next
        Select d$
        Case "usetalk" Return NPC(f)\UseTalk
        Case "anim" Return NPC(f)\Anim
        Case "typeai" Return NPC(f)\TypeAI
        Case "dam" Return NPC(f)\Dam
        Case "asp" Return NPC(f)\Asp
        Case "speed" Return NPC(f)\Speed#
        Case "def" Return NPC(f)\Def
        Case "realhp" Return NPC(f)\realhp
        Case "maxhp" Return NPC(f)\MaxHp
        Case "crit" Return NPC(f)\Crit
        Case "distat" Return NPC(f)\distat
        Case "ex" Return NPC(f)\Ex
        Case "look" Return NPC(f)\look
;        Case "number" Return NPC(f)\Number       
        Case "weight" Return NPC(f)\weight
        Case "scalex" Return NPC(f)\ScaleX#
        Case "scaley" Return NPC(f)\ScaleY#
        Case "scalez" Return NPC(f)\ScaleZ#
        Case "yaw" Return NPC(f)\Yaw#
        Case "alive" Return NPC(f)\Alive
        Case "maintalk" Return NPC(f)\maintalk
        Case "qt" Return NPC(f)\QT
        Case "qthings" Return NPC(f)\Qthings
        Case "x" Return EntityX#(NPC(f)\mesh1)
        Case "y" Return EntityY#(NPC(f)\mesh1)
        Case "z" Return EntityZ#(NPC(f)\mesh1)
        End Select
        check=1
End If

If Left(var$,4)="cont"
        b=6
        a$=""
        c$=""
        d$=""
        f=0
        While a$<>"."
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        d$=Mid(var$,b,Len(var$)-b+1)
        For i=1 To QC
                If cont(i)\ID$ = c$
                        f=i
                End If
        Next
        Select d$
        Case "scalex" Return cont(f)\ScaleX#
        Case "scaley" Return cont(f)\ScaleY#
        Case "scalez" Return cont(f)\ScaleZ#
        Case "yaw" Return cont(f)\Yaw#
        Case "x" Return EntityX#(cont(f)\mesh)
        Case "y" Return EntityY#(cont(f)\mesh)
        Case "z" Return EntityZ#(cont(f)\mesh)
        End Select
        check=1
End If

If Left(var$,4)="mesh"
        b=6
        a$=""
        c$=""
        d$=""
        f=0
        While a$<>"."
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        d$=Mid(var$,b,Len(var$)-b+1)
        For i=1 To Qmesh
                If Omesh(i)\ID$ = c$
                        f=i
                End If
        Next
        Select d$
        Case "scalex" Return Omesh(f)\ScaleX#
        Case "scaley" Return Omesh(f)\ScaleY#
        Case "scalez" Return Omesh(f)\ScaleZ#
        Case "yaw" Return Omesh(f)\Yaw#
        Case "x" Return EntityX#(Omesh(f)\mesh)
        Case "y" Return EntityY#(Omesh(f)\mesh)
        Case "z" Return EntityZ#(Omesh(f)\mesh)
        End Select
        check=1
End If

If Left(var$,4)="hero"
        d$=Mid(var$,6,Len(var$)-5)

        Select d$
        Case "anim" Return Player(0)\Anim
        Case "st" Return Player(0)\St
        Case "con" Return Player(0)\con
        Case "dex" Return Player(0)\dex
        Case "sd" Return Player(0)\sd
        Case "gd" Return Player(0)\gd
        Case "la" Return Player(0)\la
        Case "ha" Return Player(0)\ha
        Case "ac" Return Player(0)\ac
        Case "ev" Return Player(0)\ev
        Case "tr" Return Player(0)\tr
        Case "dam" Return Player(0)\dam
        Case "asp" Return Player(0)\asp
        Case "speed" Return Player(0)\speed#
        Case "def" Return Player(0)\def
        Case "realhp" Return Player(0)\realhp
        Case "maxhp" Return Player(0)\maxhp
        Case "crit" Return Player(0)\crit
        Case "weight" Return Player(0)\weight
        Case "wed" Return Player(0)\wed
        Case "wec" Return Player(0)\wec
        Case "was" Return Player(0)\was
        Case "wet" Return Player(0)\wet
        Case "ard" Return Player(0)\ard
        Case "art" Return Player(0)\art
        Case "distat" Return Player(0)\distat
        Case "dac" Return Player(0)\dac       
        Case "dev" Return Player(0)\dev
        Case "ex" Return Player(0)\Ex
        Case "lvlexp" Return Player(0)\lvlexp
        Case "level" Return Player(0)\Level
        Case "charpoints" Return Player(0)\CharPoints
        Case "skillpoints" Return Player(0)\SkillPoints
        Case "deadmovietime" Return Player(0)\DeadMovieTime
        Case "movetype" Return Player(0)\MoveType
        Case "qthings" Return Qthings
        Case "x" Return EntityX#(Player(0)\mesh1)
        Case "y" Return EntityY#(Player(0)\mesh1)
        Case "z" Return EntityZ#(Player(0)\mesh1)       
        Case "scalex" Return Player(0)\ScaleX#
        Case "scaley" Return Player(0)\ScaleY#
        Case "scalez" Return Player(0)\ScaleZ#
        Case "yaw" Return Player(0)\Yaw#
        End Select       
        check=1
End If
If check=0 Return Float#(var$)
End Function

Function CalcExp#(var$)
QDCE=0
b=1
a$=" "
c$=""
While b=<Len(var$)+1
        Select a$
        Case "+"
        QDCE=QDCE+1: DimCalcExp(QDCE)=1
        Case "-"
        QDCE=QDCE+1: DimCalcExp(QDCE)=2
        Case "*"
        QDCE=QDCE+1: DimCalcExp(QDCE)=3
        Case "/"
        QDCE=QDCE+1: DimCalcExp(QDCE)=4
        End Select
        a$=""
        c$=""       
        While a$<>"+" And a$<>"-" And a$<>"*" And a$<>"/" And b=<Len(var$)+1
                c$=c$+a$
                a$=Mid(var$,b,1)
                b=b+1
        Wend
        QDCE=QDCE+1
        DimCalcExp(QDCE)=TransVar(c$)
Wend
                i=0
                While QDCE>i+2
                        i=i+2
                        If DimCalcExp(i)=4
                                DimCalcExp(i-1)=DimCalcExp(i-1)/DimCalcExp(i+1)
                                For j=i To QDCE-2
                                        DimCalcExp(j)=DimCalcExp(j+2)
                                Next
                                i=i-2
                                QDCE=QDCE-2
                        End If
                Wend
                i=0
                While QDCE>i+2
                        i=i+2
                        If DimCalcExp(i)=3
                                DimCalcExp(i-1)=DimCalcExp(i-1)*DimCalcExp(i+1)
                                For j=i To QDCE-2
                                        DimCalcExp(j)=DimCalcExp(j+2)
                                Next
                                i=i-2
                                QDCE=QDCE-2
                        End If
                Wend
                i=0
                While QDCE>i+2
                        i=i+2
                        If DimCalcExp(i)=2
                                DimCalcExp(i-1)=DimCalcExp(i-1)-DimCalcExp(i+1)
                                For j=i To QDCE-2
                                        DimCalcExp(j)=DimCalcExp(j+2)
                                Next
                                i=i-2
                                QDCE=QDCE-2
                        End If
                Wend
                i=0
                While QDCE>i+2
                        i=i+2
                        If DimCalcExp(i)=1
                                DimCalcExp(i-1)=DimCalcExp(i-1)+DimCalcExp(i+1)
                                For j=i To QDCE-2
                                        DimCalcExp(j)=DimCalcExp(j+2)
                                Next
                                i=i-2
                                QDCE=QDCE-2
                        End If
                Wend               
                Return DimCalcExp#(1)
End Function


Leito 24.02.2008 23:44

Re: Логово Тайна Конопли
 
ап...

ABTOMAT 24.02.2008 23:47

Ответ: Логово Тайна Конопли
 
Ты бы хоть пару каментов оставил! А то тут чёрт не разберёт...

Leito 07.12.2008 01:21

Re: Логово Тайна Конопли
 
ыыыыы

ABTOMAT 07.12.2008 01:44

Ответ: Логово Тайна Конопли
 
ыыыыы

Tadeus 07.12.2008 02:04

Ответ: Логово Тайна Конопли
 
аЫЫЫЫ?

impersonalis 07.12.2008 03:53

Ответ: Логово Тайна Конопли
 
фак мой моск!
почём генератор-обфускатор кода, результат работы которого продемонстрирован выше?

tormoz 07.12.2008 18:19

Ответ: Логово Тайна Конопли
 
какая компрессия данных !

ABTOMAT 07.12.2008 19:03

Ответ: Логово Тайна Конопли
 
Ну, дайте и я пиписькой померяюсь
Код:

Function LoadDialogPresets(filename$)
        ; Функция, загружающая пресеты из текстового файла.
        Local Comment ; Отвечает за каменты. Текст внутри камертов не учитывается
        Local Quot ; Отвечает за кавычки. Текст в кавычках, даже соответствующий операторам, не учитывается.
        File = OpenFile(filename)
        If File Then
                ; Читаем строки по очереди
                Repeat
                        L$ = ReadLine(File)
                       
                        CommentStart = 1 ; символ начала длинного камента
                        ; Ищем каменты и выкидываем их.
                        For i = 1 To Len(L)
                                S$ = Mid(L, i,1)
                                Select S
                                        Case Chr(34) ; Кавычки
                                                If Not Comment Then
                                                        Quot = Not Quot ; Открываем или закрываем кавычки
                                                End If
                                        Case "{" ; Открыт длинный камент
                                                If Not Quot Then
                                                        If Comment = 0 Then Comment = 1
                                                        CommentStart = i
                                                End If
                                        Case "}" ; Закрыт длинный камент
                                                If Not Quot Then
                                                        If Comment = 1 Then Comment = 0 ; Если был включен длинный камент, выключаем его
                                                        L = Mid(L,1,CommentStart-1)+Mid(L,i+1, Len(L)) ; Выкидываем его нахер
                                                        i = CommentStart-1
                                                End If
                                        Case "/" ; Возможно, короткий камент                                               
                                                S$ = Mid(L, i,2)
                                                Select S
                                                        Case "//" ; Если это короткий камент, то отрезаем полностью строку справа от этого знака.
                                                                L = Mid(L,1,i-1)
                                                                Exit
                                                End Select
                                End Select
                                If i = Len(L) And Comment Then
                                        L = Mid(L,1,CommentStart-1)
                                End If                               
                        Next
                        If Not L = "" Then ; Непосредственно ищем и выполняем команды.
                                Quot = 0
                                CommandStart = 1
                                ParametersStart = 1                               
                                For i = 1  To Len(L)
                                        S$ = Mid(L, i,1)
                                                Select S
                                                        Case Chr(34) ; Кавычки
                                                                Quot = Not Quot
                                                        Case "(" ; Команда окончена, начаты параметры
                                                                If Not Quot
                                                                        Command$ = Mid(L,CommandStart, i-CommandStart)
                                                                        ParametersStart = i+1
                                                                End If
                                                        Case ")" ; Параметры оконцены, можно их читать                                                               
                                                                If Not Quot                                                               
                                                                        Parameters$ = Mid(L,ParametersStart, i-ParametersStart)
                                                                        CommandStart = i+1
                                                                        ; Обрабатываем команду
                                                                        ; Выкидываем пробелы
                                                                        Command = Replace(command," ","")
                                                                        ScriptParseParameters(parameters, 1)
                                              ; тут выполняем команду
                                                                                        Select Upper(command)
                                                  Case "VERSION"
                                                      If Upper(ScriptParameters(0)) <> Upper(GameVersion) Then
                                                            MB = api_MessageBox (0, "Версия файла диалога: "+Chr(34)+filename+Chr(34)+" - "+Chr(34)+ScriptParameters(0)+Chr(34)+Chr(13)+"Версия игры: "+Chr(34)+GameVersion+Chr(34)+Chr(13)+"Несовпадение версий игры и скрипта может быть причиной ошибок!"+Chr(13)+"Желаете продолжить загрузку данного скрипта?","Несовпадение версий", 48+4)
                                                                                                                                    If MB = 7 Then
                                                                Return 0
                                                            End If
                                                      End If
                                                  Case "GAME"
                                                      If Upper(ScriptParameters(0)) <> Upper(GameName) Then
                                                            MB = api_MessageBox (0, "Файла диалога: "+Chr(34)+filename+Chr(34)+" создан для игры "+Chr(34)+ScriptParameters(0)+Chr(34)+Chr(13)+"Игра: "+Chr(34)+GameName+Chr(34)+Chr(13)+"Несовпадение версий игры и скрипта может быть причиной ошибок!"+Chr(13)+"Желаете продолжить загрузку данного скрипта?","Несовпадение версий", 48+4)
                                                            If MB = 7 Then
                                                                Return 0
                                                            End If
                                                      End If
                                                  Case "DIALOG"
                                                      If DialogProc = 0 Then
                                                            DialogProc = 1
                                                            ; Обнуляем массив параметров ответов
                                                            For k=1 To 10
                                                                For j=0 To 2
                                                                      LDP(k,j)= ""
                                                                Next
                                                            Next
                                                            ; Выкидываем все прошлые значения
                                                            DPQuest$ = ""
                                                            DPDuration$ = ""
                                                            If ScriptParameters(0) <> "" Then
                                                                DPID$ = ScriptParameters(0)
                                                            Else
                                                                api_MessageBox (0, "Ошибка в файле "+Chr(34)+filename+Chr(34)+" в строке №"+Lnum+Chr(13)+"При объявлении диалога ОБЯЗАТЕЛЬНО нужно указать его идентификатор!","Ошибка в синтаксисе", 16)
                                                            End If
                                                      Else
                                                            api_MessageBox (0, "Ошибка в файле "+Chr(34)+filename+Chr(34)+" в строке №"+Lnum+Chr(13)+"Объявление одного диалога невозможно внутри объявления другого!","Ошибка в синтаксисе", 16)
                                                      End If
                                                  Case "SETQUEST"
                                                      DPQuest$ = ScriptParameters(0)
                                                  Case "SETDURATION"
                                                      DPDur$ = Int(ScriptParameters(0))
                                                  Case "ADDANSWER"
                                                                                                          ; Выясняем ближайшее пустое значенеи массива
                                                      For k=1 To 10
                                                                                                                        If LDP(k,0) = "" Then
                                                                                                                                LDP(k,0)=ScriptParameters(0)
                                                                                                                                LDP(k,1)=ScriptParameters(1)
                                                                                                                                LDP(k,2)=ScriptParameters(2)
                                                                                                                                Exit
                                                                                                                        End If
                                                      Next
                                                  Case "END"
                                                                                                      Select Upper(ScriptParameters(0))
                                                            Case "DIALOG"
                                                                CreateDialogPreset(DPID, DPQuest, DPDur, LDP(1,0),Int(LDP(1,1)),LDP(1,2), LDP(2,0),Int(LDP(2,1)),LDP(2,2), LDP(3,0),Int(LDP(3,1)),LDP(3,2), LDP(4,0),Int(LDP(4,1)),LDP(4,2), LDP(5,0),Int(LDP(5,1)),LDP(5,2), LDP(6,0),Int(LDP(6,1)),LDP(6,2), LDP(7,0),Int(LDP(7,1)),LDP(7,2), LDP(8,0),Int(LDP(8,1)),LDP(8,2), LDP(9,0),Int(LDP(9,1)),LDP(9,2), LDP(10,0),Int(LDP(10,1)),LDP(10,2))
                                                                                                                                DialogProc = 0
                                                            Case ""
                                                                ; Конец всея
                                                                Return
                                                            Default
                                                                api_MessageBox (0, "Неизвестная команда: "+Chr(34)+command+" "+ScriptParameters(0)+Chr(34)+Chr(13)+"в файле: "+Chr(34)+filename+Chr(34)+Chr(13)+"Проверьте синтаксис!","Моя твоя не понимай!", 16)
                                                        End Select
                                                  Default
                                                      api_MessageBox (0, "Неизвестная команда: "+Chr(34)+command+Chr(34)+Chr(13)+"в файле: "+Chr(34)+filename+Chr(34)+Chr(13)+"Проверьте синтаксис!","Моя твоя не понимай!", 16)
                                            End Select
                                                                End If
                                                End Select
                                Next
                        End If
                Until Eof(File)
        Else
                ; Файл по какой-то причине не был загружен
                api_MessageBox (0, "Не найден файл диалогов: "+Chr(34)+filename+Chr(34)+Chr(13)+"Проверьте путь!","Савсем нет файлу, насяйника (", 16)
        End If
End Function


Leito 27.01.2009 22:57

Re: Логово Тайна Конопли
 
Ну просто ЫЫЫЫЫ, и не ипет как говориться

Dzirt 28.01.2009 21:30

Ответ: Логово Тайна Конопли
 
Пиписька у тебя немного короче на вид,но не менее крута...(вы уж извените за такой пост:) )

Leito 28.01.2009 21:36

Re: Логово Тайна Конопли
 
закройте чтоли тему:D

SBJoker 28.01.2009 22:11

Ответ: Логово Тайна Конопли
 
Сам тут некропостингом занимается, а потом закрыть просит..чудно...

Leito 28.01.2009 22:27

Re: Ответ: Логово Тайна Конопли
 
Цитата:

Сообщение от SBJoker (Сообщение 96233)
Сам тут некропостингом занимается, а потом закрыть просит..чудно...

"некропостингом" - :D

вот такие чудности бывают...

ABTOMAT 28.01.2009 23:35

Ответ: Логово Тайна Конопли
 
Цитата:

Сообщение от Dzirt (Сообщение 96225)
Пиписька у тебя немного короче на вид,но не менее крута...(вы уж извените за такой пост:) )

C момента последнего поста та пиписька заметно выросла: начала поддерживать кавычкий, различает простые функции типа 2+1, 3*2 и т.д.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot