Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Compartilhe
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 02:39

    Código:

    SCRIPT_START
    {
        NOP
        LVAR_INT jogador, marcador, marcador2, conta1int, conta2int, conta3int, conta4int, conta5int, conta6int
        LVAR_FLOAT x, y, z, conta1, conta2, conta3, conta4, conta5, conta6
        GET_PLAYER_CHAR 0 jogador // Só para usar o jogador em scripts, embora dê para usar 0

        WAIT 0 // Para outros scripts do jogo poderem ser carregados
        CREATE_USER_3D_MARKER 2502.695, -1712.153, 13.568, 0, marcador // Criar primeiro marcador, no exterior
        CREATE_USER_3D_MARKER 2503.819, -1707.867, 2.731, 0, marcador2 // Criar segundo marcador, no interior

        main_loop: // Começar loop
        GET_CHAR_COORDINATES jogador, x, y, z // Pegar coordenadas do jogador para fazer contas e teleportes

        // ** MARCADOR 1 **
        // Fazer  contas com as coordenadas que estão em float
        conta1 = x - 2502.695
        conta2 = y - -1712.153
        conta3 = z - 13.568

        // Transformar em INT
        conta1int =# conta1
        conta2int =# conta2
        conta3int =# conta3
       
        // Teleportar 1
        IF conta1int = 0
            IF conta2int = 0
                IF conta3int = 0
                    SET_CHAR_COORDINATES jogador, 2506.623, -1706.550, 2.731
                ENDIF
            ENDIF
        ENDIF

        // ** MARCADOR 2 **
        // Fazer  contas com as coordenadas que estão em float
        conta4 = x - 2503.81
        conta5 = y - -1706.275
        conta6 = z - 2.731

        // Transformar em INT
        conta4int =# conta4
        conta5int =# conta5
        conta6int =# conta6
       
        // Teleportar 2
        IF conta4int = 0
            IF conta5int = 0
                IF conta6int = 0
                    SET_CHAR_COORDINATES jogador, 2505.458, -1712.173, 13.536
                ENDIF
            ENDIF
        ENDIF

        PRINT_FORMATTED_NOW "Coordenadas: %.3f %.3f %.3f", 500, x, y, z
        wait 500
        GOTO main_loop // Repetir o que aconteceu

        // Teleporte do marcador 1
        // Teleporte interior: 2506.623 -1706.550 2.731
        // Marca interior: 2503.819 -1707.867 2.731

        // Teleporte exterior: 2505.458 -1712.173 13.536
        // Marca exterior: 2502.695 -1712.153 13.568
    }
    SCRIPT_END

    É o seguinte, eu estou querendo fazer uma modificação de porão para o CJ e queria com uma boa qualidade. Estava até pensando em colocar na TC GTA Brasil, já que estou na pasta do Drive. Mas antes eu queria corrigir todos os problemas dessa modificação para não estragar o savegame de ninguém com marcadores 3D presos, ou quem sabe deixar o script mais leve.
    A parte do mapa é um IPL usando objetos do jogo.


    Última edição por DouglasB2310 em Sab 28 Jan 2017, 02:47, editado 1 vez(es)
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 02:43

    Eu ainda vou fazer a parte de destruir os marcadores, mas queria saber se estou no caminho certo. Tá muito grande, deve ter coisa errada :v:
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Deadstroke em Sab 28 Jan 2017, 02:52

    Sinceramente, não tenho certeza sobre o script, mas porque não usa o opcode CREATE_USER_3D_MARKER ao invés desse cálculo todo?
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 03:02

    O cálculo é para teleportar, só o CREATE_USER_3D_MARKER não teletransporta.
    Parece que o CREATE_USER_3D_MARKER é só visual.


    ____________________
    avatar
    AguiaX2
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 609
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil
    Link : https://www.youtube.com/watch?v=lMB18XPgEWA

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por AguiaX2 em Sab 28 Jan 2017, 03:02

    1
    2
    3
    4
    5
    6
    7
        IF conta1int = 0
           IF conta2int = 0
               IF conta3int = 0
                   SET_CHAR_COORDINATES jogador,   2506.623, -1706.550, 2.731
               ENDIF
           ENDIF
       ENDIF


    Desnecessário usar 3 ifs era só usar assim:

    1
    2
    3
    4
    5
        IF conta1int = 0
       AND conta2int = 0
       AND conta3int = 0
          SET_CHAR_COORDINATES jogador, 2506.623, -1706.550, 2.731
       ENDIF


    mas de resto não vi mais nada, so é desnecessário mas se quer quiser fazer pode fazer :)


    Última edição por AguiaX2 em Sab 28 Jan 2017, 03:03, editado 1 vez(es)


    ____________________


    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 03:03

    E precisa destruir os marcadores para não ficar preso no savegame?


    ____________________
    avatar
    AguiaX2
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 609
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil
    Link : https://www.youtube.com/watch?v=lMB18XPgEWA

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por AguiaX2 em Sab 28 Jan 2017, 03:04

    Não sei se marcadores ficam preso no save mas seria melhor destruir neh :)


    ____________________


    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 03:17

    Imagens da modificação:
    Spoiler:




    Coloquei na TC GTA Brasil, espero que não dê nenhum erro e não cause problemas em GTAs alheios.
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21614
    Reputação : 633
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Junior_Djjr em Sab 28 Jan 2017, 05:00

    Olha, o GTA Brasil, como eu disse, vai precisar ter main.scm (usar scripts cleos numa tc é totalmente no sense). Então, não precisa se importar com isso, já que o main.scm foi FEITO pra essa coisa de "ficar preso no save". Quando você dá New Game, os marcadores são criados, e quando você dará Save Game, ele ficará preso no save pra sempre e nunca será criado (só será criado lá no New Game ou situações especificas, tipo após uma missão etc).


    ____________________

    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 967
    Reputação : 68
    Desde : 04/03/2013

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Nex' em Sab 28 Jan 2017, 10:40

    Eu faria assim:
    Código:
    SCRIPT_START
    {
        NOP

        LVAR_INT marcadores[2], raioCheck, jogador
       
        GET_PLAYER_CHAR 0 jogador
        raioCheck = TRUE
     
        main_loop: // Começar loop
        WAIT 0

        IF LOCATE_CHAR_ANY_MEANS_2D jogador, 2502.695, -1712.153, 50.0, 50.0, 0 // verifico se o player está em um raio de 50.0 parar criar os marcadores ou remover..
            IF raioCheck = TRUE
                GOSUB criar_marcadores
            ENDIF
        ELSE //se o player n esta por perto, remover os marcadores..
            IF raioCheck = FALSE
                GOSUB remover_marcadores
            ENDIF
            GOTO main_loop // Já que o player não esta perto, o script n precisa fazer o resto abaixo...
        ENDIF

        IF LOCATE_CHAR_ON_FOOT_3D jogador 2502.695, -1712.153, 13.568, 0.5, 0.5, 0.5, 0 // verifico se o player está em um raio de 0.5 do primeiro marcador
            SET_CHAR_COORDINATES jogador, 2506.623, -1706.550, 2.731 // se sim, teleporta
        ENDIF
       
        IF LOCATE_CHAR_ON_FOOT_3D jogador 2503.819, -1707.867, 2.731, 0.5, 0.5, 0.5, 0 // idem a cima...
            SET_CHAR_COORDINATES jogador, 2505.458, -1712.173, 13.536
        ENDIF

        GOTO main_loop

        criar_marcadores:
        CREATE_USER_3D_MARKER 2502.695, -1712.153, 13.568, 0, marcadores[0] // Criar primeiro marcador, no exterior
        CREATE_USER_3D_MARKER 2503.819, -1707.867, 2.731, 0, marcadores[1] // Criar segundo marcador, no interior
        raioCheck = FALSE
        RETURN

        remover_marcadores:
        REMOVE_USER_3D_MARKER marcadores[0]
        REMOVE_USER_3D_MARKER marcadores[1]
        raioCheck = TRUE
        RETURN
    }
    SCRIPT_END
    Testa ai pra ver se tá funcionando pokerface


    Última edição por Nex' em Sab 28 Jan 2017, 11:15, editado 2 vez(es) (Razão : Fiz umas melhorias e correções)


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Deadstroke em Sab 28 Jan 2017, 10:50

    @Nex' escreveu:Eu faria assim:

    Testa ai pra ver se tá funcionando pokerface

    Qual a diferença de GOTO e GOSUB nesse caso do script, parece que são a mesma coisa do jeito que fez...

    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 967
    Reputação : 68
    Desde : 04/03/2013

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Nex' em Sab 28 Jan 2017, 10:54

    @Deadstroke escreveu:
    @Nex' escreveu:Eu faria assim:

    Testa ai pra ver se tá funcionando pokerface

    Qual a diferença de GOTO e GOSUB nesse caso do script, parece que são a mesma coisa do jeito que fez...
    Acabei de corrigir, eu tinha confundido :) muito tempo sem fazer scripts..


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sab 28 Jan 2017, 14:25

    Tinha um GOTO em baixo de outro GOTO e depois do ELSE não precisava ter outro IF, já que se o IF é verdadeiro o contrário é falso.
    Código:

    /*

        Feito por DouglasB, melhorado, corrigido e aprimorado por NEX

    */
    SCRIPT_START
    {
        NOP

        LVAR_INT marcadores[2], raioCheck, jogador

        GET_PLAYER_CHAR 0 jogador
        raioCheck = TRUE

        main_loop: // Começar loop
        WAIT 0

        IF LOCATE_CHAR_ANY_MEANS_2D jogador, 2502.695, -1712.153, 50.0, 50.0, 0 // verifico se o player está em um raio de 50.0 parar criar os marcadores ou remover..
            IF raioCheck = TRUE
                GOTO criar_marcadores
            ENDIF
        ELSE //se o player n esta por perto, remover os marcadores..
            GOTO remover_marcadores
        ENDIF

        IF LOCATE_CHAR_ON_FOOT_3D jogador 2502.695, -1712.153, 13.568, 0.5, 0.5, 0.5, 0 // verifico se o player está em um raio de 0.5 do primeiro marcador
            SET_CHAR_COORDINATES jogador, 2506.623, -1706.550, 2.731 // se sim, teleporta
        ENDIF

        IF LOCATE_CHAR_ON_FOOT_3D jogador 2503.819, -1707.867, 2.731, 0.5, 0.5, 0.5, 0 // idem a cima...
            SET_CHAR_COORDINATES jogador, 2505.458, -1712.173, 13.536
        ENDIF
        GOTO main_loop

        criar_marcadores:
        CREATE_USER_3D_MARKER 2502.695, -1712.153, 13.568, 0, marcadores[0] // Criar primeiro marcador, no exterior
        CREATE_USER_3D_MARKER 2503.819, -1707.867, 2.731, 0, marcadores[1] // Criar segundo marcador, no interior
        raioCheck = FALSE
        RETURN

        remover_marcadores:
        REMOVE_USER_3D_MARKER marcadores[0]
        REMOVE_USER_3D_MARKER marcadores[1]
        raioCheck = TRUE
        GOTO main_loop // Já que o player não esta perto, o script não precisa fazer o resto.
        RETURN
    }
    SCRIPT_END


    ____________________

    Nex'
    Scripter CLEO - Básico
    Scripter CLEO - Básico

    Título : Imposto é roubo
    Mensagens : 967
    Reputação : 68
    Desde : 04/03/2013

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Nex' em Sab 28 Jan 2017, 17:25

    Rapaz, tu cagou o script.
    GOSUB != GOTO
    GOSUB é pra ir ate uma subrotina e voltar pro mesmo lugar em que foi chamado assim que encontrar um RETURN
    https://en.wikipedia.org/wiki/GOSUB

    E aquele GOTO ali dentro do ELSE é pra economizar processamento, pois se cair no ELSE significa que o player não está perto, e se ele não está perto não tem porque ficar checando se o player está perto dos marcadores...

    e o IF dentro do ELSE não é inútil, ele serve pra evitar que jogo fique apagando os marcadores a cada frame (D)


    ____________________
    PC Specs
    CPU: Intel Core i3-6100 Skylake
    GPU: HD Intel 530
    RAM: Crucial Ballistix Elite 4GB 2133MHz DDR4
    PSU: Corsair CX-430W
    MOBO: Gigabyte GA-H110M-H DDR4
    avatar
    DouglasB2310
    Mensagens Nível 4
    Mensagens Nível 4

    Mensagens : 383
    Reputação : 12
    Desde : 12/01/2016
    Localização : 127.0.0.1:25565

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por DouglasB2310 em Sex 03 Fev 2017, 14:23

    kkkkkjj
    Corrigido. Achei que gosub era coisa da Sanny Builder Fuch That Guy
    Ainda bem que o ThePedro004 não colocou o mod na pasta Modloader da TC.

    Só vou colocar meu script que você escolhe a cidade e se teletransporta para uma casa aleatória na cidade escolhida ao entrar no jogo. Aquele sim eu tenho noção do que fiz.

    Conteúdo patrocinado

    Re: Meu script deve estar uma porcaria, por favor, me digam todos problemas que acharem

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg 26 Jun 2017, 04:10