Brazilian Modding Studio
Olá, seja bem vindo à Comunidade BMS!

Para se registrar no fórum, siga os passos:

1 - Clique em "Registrar-se" aqui em baixo;
2 - Aceite os termos de serviço;
3 - Escolha um nome de usuário e senha;
4 - Realize o login no fórum clicando em "Conectar-se".

Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
  • Reputação da mensagem: 100% (2 votos)
em Sex 23 Out 2015, 18:23
Estes são snippets extremamente úteis, até mesmo indispensável. São particularmente os snippets que eu mais uso nos meus scripts.

É um "helper" para iniciantes, criado pelo DK22Pac.
Eu resolvi não publicar literalmente como ele publicou, pois é coisa básica demais, como pra "for player car", afinal, qualquer um sabe como pegar o carro do player e trabalhar com ele, né? Também pelo fato de que ele usou arquivos e $Include, não acho necessário, se você quiser, fique a vontade.




Bem, esses pedaços de códigos loopam na pool dos carros, pedestres ou objetos, procurando pelos criados, e ali no meio você tem o controle sobre o atual dentro do loop, no caso, o loop irá passar por todos, e todos sofrerá o que você colocar ali no meio.


For all cars (para todos os carros)
Código:
0A8D: 29@ = read_memory 0xB74494 size 4 virtual_protect 0
29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 27904 step 0x100
    0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
    000A: 29@ += 0x1
    if and
        0029: 31@ >= 0x00
        001B: 0x80 > 31@
    then
        005A: 31@ += 30@
        
        //31@ = Carro
    end
end

For all peds (para todos os pedestres)
Código:
0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
000A: 29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 35584 step 0x100
    0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
    000A: 29@ += 0x1
    if and
        0029:  31@ >= 0x00
        001B:  0x80 > 31@
    then
        005A: 31@ += 30@
        
        //31@ = Pedestre
    end
end

For all objects (para todos os objetos)
Código:
0A8D: 29@ = read_memory 0xB7449C size 4 virtual_protect 0
000A: 29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 89344 step 0x100
    0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
    000A: 29@ += 0x1
    if and
        0029:  31@ >= 0x00
        001B:  0x80 > 31@
    then
        005A: 31@ += 30@
        
        //31@ = Objeto
    end
end

For all pickups (para todos os pickups)
Código:
for 30@ = 0x9788C0 to 0x97D620 step 0x20
    if
        30@ > 0
    then
        0A8E: 31@ = 30@ + 0x1A
        0A8D: 31@ = read_memory 31@ size 2 virtual_protect 0
        31@ *= 0x10000
        0A8F: 29@ = 30@ - 0x9788C0
        29@ /= 0x20
        005A: 31@ += 29@

        //31@ = pickup
    end
end




Exemplo de uso (for all cars):
Código:
{$cleo}
0000:

while true    
    wait 0
    0A8D: 29@ = read_memory 0xB74494 size 4 virtual_protect 0
    29@ += 0x4
    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
    for 30@ = 0 to 27904 step 0x100
        0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
        000A: 29@ += 0x1
        if and
            0029: 31@ >= 0x00
            001B: 0x80 > 31@
        then
            005A: 31@ += 30@
            
            04BA: set_car 31@ speed_to 30.0
        end
    end
end
Aqui eu setei a velocidade 30.0 para todos os carros, em loop, sem parar. Coloque isso no seu jogo e você verá algo como isso.

Exemplo de uso (for all objects):
Código:
{$cleo}
0000:

while true    
    wait 0
    
    if 0@ == true
    then 0@ = false
    else 0@ = true
    end
    
    0A8D: 29@ = read_memory 0xB7449C size 4 virtual_protect 0
    000A: 29@ += 0x4
    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
    for 30@ = 0 to 89344 step 0x100
        0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
        000A: 29@ += 0x1
        if and
            0029:  31@ >= 0x00
            001B:  0x80 > 31@
        then
            005A: 31@ += 30@
        
            0750: set_object 31@ visibility 0@
        end
    end
end
Aqui, todos os objetos do jogo vão ficar piscando. Em um loop todos aparecem, no loop seguinte todos somem.
Isso é bom também para você aprender o que é ou não um objeto, pois coisas como casas não são considerados objetos, mas objetos "pequenos" como postes, bancos, lixeiras etc, são e você pode controlar eles usando esse snippet.



Eu recomendo muitíssimo usar esses códigos ao invés de opcodes de pegar carro etc num raio, pois este método é mais leve e infalível! Enquanto o opcode faz vários cálculos pra encontrar o veículo desejado e ainda precisa de checagem.

Se você faz coisas muito complexas com, por exemplo, os carros, o script pode ficar pesado e tirar alguns poucos FPS, portanto coloque um "wait 0" embaixo do "for 30@ = 0 to (...)", assim o script andará mais lentamente.
Faça isso só caso seu script não precise fazer as coisas imediatamente, pois se colocar este wait e você estiver à 30 FPS, irá demorar uns 3 segundos para o script rodar todos os carros. Se você quer mais rápido e ainda super leve, coloque o "wait 0" embaixo de "005A: 31@ += 30@", e logo em seguida, cheque se o carro, pedestre ou objeto existe (está definido), senão causará crashes em poucos segundos (pois durante o "wait 0" o tal carro pode ter sumido, certo?).


Última edição por Junior_Djjr em Seg 04 Jan 2016, 18:20, editado 5 vez(es)

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Sex 23 Out 2015, 18:29
Perfeito !


Não conhecia nenhum destes, ajudará muito em meus futuros scripts.


Última edição por israel em Sab 14 Nov 2015, 01:29, editado 1 vez(es)

______________________________
Everyone gonna remember my name !
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Sex 23 Out 2015, 18:41
Adicionei mais um exemplo

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 266
Reputação : 38
Desde : 27/09/2015
Localização : Cps - SP
Link : goo.gl/BgNT9p
Ver perfil do usuário
em Sex 23 Out 2015, 19:09
Vlw djjr

______________________________
Não importa o quão pequeno você
comece, apenas comece algo que
importa.


Mods cleo de minha autoria: https://db.tt/91oW1EWC
Jogos de minha autoria: nenhum por enquanto
ModLoader VIsual Editor WIP
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Sab 31 Out 2015, 02:20
Tah certo q eu disse q eh leve, mas tbm não pense em querer fazer uma coisa assim denilson gostoso
Código:
{$cleo}
0000:

while true
    wait 0
    0A8D: 1@ = read_memory 0xB74490 size 4 virtual_protect 0
    000A: 1@ += 0x4
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    for 2@ = 0 to 35584 step 0x100
        0A8D: 31@ = read_memory 1@ size 1 virtual_protect 0
        000A: 1@ += 0x1
        if and
            0029:  31@ >= 0x00
            001B:  0x80 > 31@
        then
            005A: 31@ += 2@
           
            0A8D: 3@ = read_memory 0xB74490 size 4 virtual_protect 0
            000A: 3@ += 0x4
            0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
            for 4@ = 0 to 35584 step 0x100
                0A8D: 28@ = read_memory 3@ size 1 virtual_protect 0
                000A: 3@ += 0x1
                if and
                    0029:  28@ >= 0x00
                    001B:  0x80 > 28@
                then
                    005A: 28@ += 4@
                   
                    if 051A:  actor 31@ damaged_by_actor 28@
                    then
                        0ACD: show_text_highpriority "ta batendu bixu" time 100
                    end
                end
            end
        end
    end
end
Isso despencou meu FPS

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 266
Reputação : 38
Desde : 27/09/2015
Localização : Cps - SP
Link : goo.gl/BgNT9p
Ver perfil do usuário
em Sab 31 Out 2015, 04:54
Agr comenta td ;)

______________________________
Não importa o quão pequeno você
comece, apenas comece algo que
importa.


Mods cleo de minha autoria: https://db.tt/91oW1EWC
Jogos de minha autoria: nenhum por enquanto
ModLoader VIsual Editor WIP
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 25
Localização : São Paulo - SP
Ver perfil do usuário
em Ter 05 Jan 2016, 14:28
Alguém sabe como trabalhar com esse script só que aplicando uma única vez para todo ped/veículo/objeto que surgir?
Ou então inserir uma variável nesses que não afetem suas funções iniciais e que possa usada como condição futuramente?
Vlw!
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Ter 05 Jan 2016, 15:11
Não, eh, nada, fácil
Vc precisa, de algum modo, armazenar q o ped jah foi usado
Oq exatamente vc está fazendo com ele? Se por exemplo vc está tirando o cabelo dele eh soh antes checar se ele está ou não careca, se está careca eh pq jah tirou o cabelo, mas há coisas q seriam difíceis de saber e isso não daria pra fazer...

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 25
Localização : São Paulo - SP
Ver perfil do usuário
em Ter 05 Jan 2016, 15:44
No caso é uma coisa um "pouquinho" mais complicada mesmo.

Queria verificar se surge um ped perto do player: se surgir, ele desaparece; mas se estiver de longe, queria que ele não desaparecesse caso se aproximasse do player. Se eu só verificar peds que estão perto do CJ, vai acabar ocorrendo que os que se aproximarem dele iriam desaparecer, não queria que isso ocorresse (por motivos óbvios).

Conseguiu entender mais ou menos como funciona?
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Ter 05 Jan 2016, 16:48
Mas praq isso?
MixSets:
Código:
PedSpawnOnScr    = 100.0      ; Distância para o pedestre aparecer (na tela).  [50.5 é padrão].
PedSpawnOnScrMn  = 80.0       ; Distância mínima para o pedestre aparecer (na tela). [42.5 é padrão]. - Aumentar isso pode também aumentar número de pedestres aparecendo fora da tela.
Único problema eh q ainda faz aparecer pedestres meio perto de vc atrás da câmera

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 25
Localização : São Paulo - SP
Ver perfil do usuário
em Ter 05 Jan 2016, 17:30
O que eu quero exatamente é tentar evitar aqueles policiais que surgem do meio do nada quando está sendo procurado a partir de três estrelas. Quero evitar que apareçam tão perto e precisa ser especificamente eles, e não qualquer ped.
E sim, essas funções do Mix Sets não são perfeitas, surgem carros, peds, etc., do nada atrás de você, é uma droga...
avatar
Modelador - Básico
Modelador - Básico
Mensagens : 889
Reputação : 20
Desde : 16/08/2016
Idade : 14
Localização : Mississippi
Ver perfil do usuário
em Seg 27 Fev 2017, 12:59
Tem como fazer For All no GTA3script?
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Seg 27 Fev 2017, 13:22
@Mak47 escreveu:Tem como fazer For All no GTA3script?
Basta você passar pra gta3script.
Basicamente seria isso :
Código:
0A8D: 29@ = read_memory 0xB74494 size 4 virtual_protect 0
29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 27904 step 0x100
    0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
    000A: 29@ += 0x1
    if and
        0029: 31@ >= 0x00
        001B: 0x80 > 31@
    then
        005A: 31@ += 30@
        
        //31@ = Carro
    end
end
↓↓
Código:
READ_MEMORY 0xB74494 4 0 (p)
p += 0x04
READ_MEMORY p 4 0 (p)
i = 0
WHILE i <= 27904
    READ_MEMORY p 1 0 (car)
    p++
    IF car >= 0x00
    AND car < 0x80
        car += i
        
        //car = Carro
    ENDIF
    i += 256
ENDWHILE


Última edição por israel em Qui 20 Abr 2017, 22:27, editado 2 vez(es) (Razão : passat)

______________________________
Everyone gonna remember my name !
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 42
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário
em Seg 27 Fev 2017, 13:28
Juninho, atualiza ai:
Scripts para GTA3Script:

Código:
//For all vehicles
READ_MEMORY 0xB74494 4 0 lv_tempi_1
lv_tempi_1 += 4
READ_MEMORY lv_tempi_1 4 0 lv_tempi_1
REPEAT 110 lv_tempi_2
    lv_tempi_2 *= 0x100
        READ_MEMORY lv_tempi_1 4 0 lv_vehicle
        lv_tempi_1 += 0x1
        IF lv_vehicle >= 0x00
        AND NOT lv_vehicle >= 0x80
            lv_vehicle += lv_tempi_2
            // Start: lv_vehicle -> your object
                // Keep doing your script
            // End: lv_vehicle -> your object
        ENDIF
    lv_tempi_2 /= 0x100
ENDREPEAT

//For all chars
READ_MEMORY 0xB74490 4 0 lv_tempi_1
lv_tempi_1 += 4
READ_MEMORY lv_tempi_1 4 0 lv_tempi_1
REPEAT 140 lv_tempi_2
    lv_tempi_2 *= 0x100
        READ_MEMORY lv_tempi_1 4 0 lv_char
        lv_tempi_1 += 0x1
        IF lv_char >= 0x00
        AND NOT lv_char >= 0x80
            lv_char += lv_tempi_2
            // Start: lv_char -> your object
                // Keep doing your script
            // End: lv_char -> your object
        ENDIF
    lv_tempi_2 /= 0x100
ENDREPEAT

//For all objects
READ_MEMORY 0xB7449C 4 0 lv_tempi_1
lv_tempi_1 += 4
READ_MEMORY lv_tempi_1 4 0 lv_tempi_1
REPEAT 350 lv_tempi_2
    lv_tempi_2 *= 0x100
        READ_MEMORY lv_tempi_1 4 0 lv_object
        lv_tempi_1 += 0x1
        IF lv_object >= 0x00
        AND NOT lv_object >= 0x80
            lv_object += lv_tempi_2
            // Start: lv_object -> your object
                // Keep doing your script
            // End: lv_object -> your object
        ENDIF
    lv_tempi_2 /= 0x100
ENDREPEAT

//For all pickups
lv_tempi_1 = 0x9788C0
WHILE lv_tempi_1 <= 0x97D620
    IF lv_tempi_1 > 0
        lv_pickup = lv_tempi_1 + 0x1A
        READ_MEMORY lv_pickup 2 0 lv_pickup
        lv_pickup *= 0x10000
        lv_tempi_2 = lv_tempi_1 - 0x9788C0
        lv_tempi_2 /= 0x20
        lv_pickup += lv_tempi_2
        // Start: lv_pickup -> your object
            // Keep doing your script
        // End: lv_pickup -> your object
    ENDIF
    lv_tempi_1 += 0x20
ENDWHILE

//Example: for all vehicles
SCRIPT_START
{
    LVAR_INT lv_tempi_1
    LVAR_INT lv_tempi_2
    LVAR_INT lv_vehicle

    loop:
        WAIT 0
        READ_MEMORY 0xB74494 4 0 lv_tempi_1
        lv_tempi_1 += 4
        READ_MEMORY lv_tempi_1 4 0 lv_tempi_1
        REPEAT 110 lv_tempi_2
            lv_tempi_2 *= 0x100
                READ_MEMORY lv_tempi_1 4 0 lv_vehicle
                lv_tempi_1 += 0x1
                IF lv_vehicle >= 0x00
                AND NOT lv_vehicle >= 0x80
                    lv_vehicle += lv_tempi_2
                    // Start: lv_vehicle -> your object
                        SET_CAR_FORWARD_SPEED lv_vehicle 30.0
                    // End: lv_vehicle -> your object
                ENDIF
            lv_tempi_2 /= 0x100
        ENDREPEAT
    GOTO loop
}
SCRIPT_END

//Example: for all objects
SCRIPT_START
{
    LVAR_INT lv_tempi_1
    LVAR_INT lv_tempi_2
    LVAR_INT lv_object
    LVAR_INT lv_tempi_3

    loop:
        WAIT 0

        IF lv_tempi_3 = 1
            lv_tempi_3 = 0
        ELSE
            lv_tempi_3 = 1
        ENDIF

        READ_MEMORY 0xB7449C 4 0 lv_tempi_1
        lv_tempi_1 += 4
        READ_MEMORY lv_tempi_1 4 0 lv_tempi_1
        REPEAT 350 lv_tempi_2
            lv_tempi_2 *= 0x100
                READ_MEMORY lv_tempi_1 4 0 lv_object
                lv_tempi_1 += 0x1
                IF lv_object >= 0x00
                AND NOT lv_object >= 0x80
                    lv_object += lv_tempi_2
                    // Start: lv_object -> your object
                        SET_OBJECT_VISIBLE lv_object lv_tempi_3
                    // End: lv_object -> your object
                ENDIF
            lv_tempi_2 /= 0x100
        ENDREPEAT
    GOTO loop
}
SCRIPT_END

@Mak47 tá ai, é só usar!
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Seg 27 Fev 2017, 14:08
O do Israel não funcionou? O dele ficou bem mais bonito.
Só aqui:
Código:
WHILE i < 27904
Eu acho que devia ser "<="

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Seg 27 Fev 2017, 14:29
@Junior_Djjr escreveu:O do Israel não funcionou? O dele ficou bem mais bonito.
Não testei e não posso testar, mas deve funcionar.
Só aqui:
Código:
WHILE i < 27904
Eu acho que devia ser "<="
Sim, ficou faltando um. philosoraptor
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 42
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário
em Seg 27 Fev 2017, 14:43
Oxê, só pq eu usei lv_ antes das variáveis??? Ou foi por causa do while? Nesse último pode ser até melhor porque o processamento é um pouco melhor do que o meu, nesse caso concordo.

Scripts:

Código:
//For all vehicles
READ_MEMORY 0xB74494 4 0 tempi_1
tempi_1 += 4
READ_MEMORY tempi_1 4 0 tempi_1
tempi_2 = 0
WHILE tempi_2 <= 0x6D00
    READ_MEMORY tempi_1 4 0 vehicle
    tempi_1 += 0x1
    IF vehicle >= 0x00
    AND 0x80 > vehicle
        vehicle += tempi_2
        //vehicle -> your object
        // Keep doing your script
    ENDIF
    tempi_2 += 0x100
ENDWHILE

//For all chars
READ_MEMORY 0xB74490 4 0 tempi_1
tempi_1 += 4
READ_MEMORY tempi_1 4 0 tempi_1
tempi_2 = 0
WHILE tempi_2 <= 0x8B00
    READ_MEMORY tempi_1 4 0 char
    tempi_1 += 0x1
    IF char >= 0x00
    AND 0x80 > char
        char += tempi_2
        // char -> your object
        // Keep doing your script
    ENDIF
    tempi_2 += 0x100
ENDWHILE

//For all objects
READ_MEMORY 0xB7449C 4 0 tempi_1
tempi_1 += 4
READ_MEMORY tempi_1 4 0 tempi_1
tempi_2 = 0
WHILE tempi_2 <= 0x15D00
    READ_MEMORY tempi_1 4 0 object
    tempi_1 += 0x1
    IF object >= 0x00
    AND 0x80 > object
        object += tempi_2
        // object -> your object
        // Keep doing your script
    ENDIF
    tempi_2 += 0x100
ENDWHILE

//For all pickups
tempi_1 = 0x9788C0
WHILE tempi_1 <= 0x97D620
    IF tempi_1 > 0
        pickup = tempi_1 + 0x1A
        READ_MEMORY pickup 2 0 pickup
        pickup *= 0x10000
        tempi_2 = tempi_1 - 0x9788C0
        tempi_2 /= 0x20
        pickup += tempi_2
        // pickup -> your object
        // Keep doing your script
    ENDIF
    tempi_1 += 0x20
ENDWHILE

//Example: for all vehicles
SCRIPT_START
{
    LVAR_INT tempi_1
    LVAR_INT tempi_2
    LVAR_INT vehicle

    loop:
        WAIT 0

        READ_MEMORY 0xB74494 4 0 tempi_1
        tempi_1 += 4
        READ_MEMORY tempi_1 4 0 tempi_1
        tempi_2 = 0
        WHILE tempi_2 <= 0x6D00
            READ_MEMORY tempi_1 4 0 vehicle
            tempi_1 += 0x1
            IF vehicle >= 0x00
            AND NOT vehicle >= 0x80
                vehicle += tempi_2
                // Start: vehicle -> your object
                    SET_CAR_FORWARD_SPEED vehicle 30.0
                // End: vehicle -> your object
            ENDIF
            tempi_2 += 0x100
        ENDWHILE

    GOTO loop
}
SCRIPT_END

//Example: for all objects
SCRIPT_START
{
    LVAR_INT tempi_1
    LVAR_INT tempi_2
    LVAR_INT object
    LVAR_INT tempi_3

    loop:
        WAIT 0

        IF tempi_3 = 1
            tempi_3 = 0
        ELSE
            tempi_3 = 1
        ENDIF

        READ_MEMORY 0xB7449C 4 0 tempi_1
        tempi_1 += 4
        READ_MEMORY tempi_1 4 0 tempi_1
        tempi_2 = 0
        WHILE tempi_2 <= 0x15D00
            READ_MEMORY tempi_1 4 0 object
            tempi_1 += 0x1
            IF object >= 0x00
            AND NOT object >= 0x80
                object += tempi_2
                // Start: object -> your object
                    SET_OBJECT_VISIBLE object tempi_3
                // End: object -> your object
            ENDIF
            tempi_2 += 0x100
        ENDWHILE

    GOTO loop
}
SCRIPT_END

Edit.: não vejo necessidade de testar, está igual ao script normal, nem é difícil de copiar esse...
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Seg 27 Fev 2017, 15:36
@Deadstroke escreveu:Oxê, só pq eu usei lv_ antes das variáveis???
What, claro que não pokerface
Foi necessário gambiarra de multiplicar e depois dividir o número para "voltar pra trás", e ficou mais linhas dentro do loop. WHILE parece mais adequado pra isso.

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 42
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário
em Seg 27 Fev 2017, 16:05
@Junior_Djjr escreveu:What, claro que não
Foi necessário gambiarra de multiplicar e depois dividir o número para "voltar pra trás", e ficou mais linhas dentro do loop. WHILE parece mais adequado pra isso.
Foi isso mesmo que mencionei...

Aproveitando, vc entendeu pq o script que mostrei na seção GOSUB e CLEO_CALL nos tutoriais não deu certo?
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sex 21 Abr 2017, 20:21
Não sei se foi só aqui, mas nenhum dos exemplos em gta3script deu certo. Mesmo colocando os WAIT faltando (HMM)

______________________________

.::
Os mods que crio serão colocados no meu workshop link
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Sex 21 Abr 2017, 20:47
@Um Geek escreveu:Não sei se foi só aqui, mas nenhum dos exemplos em gta3script deu certo. Mesmo colocando os WAIT faltando (HMM)
Qual o problema ? Dê mais detalhes...
E não tá faltando WAIT em nenhum dos exemplos.

______________________________
Everyone gonna remember my name !
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sex 21 Abr 2017, 21:30
faltava uns wait dentro dos while, consegui usar o do @israel, não sei se ficou bom mudado para ped, mas funcionou  (BG)

codigo:
Código:

SCRIPT_START
{
NOP

LVAR_INT actor
GET_PLAYER_CHAR 0 actor

LVAR_INT p
LVAR_INT i
LVAR_INT char

char = actor // <-------<< Gambiarra para poder usar char como var tipo ped no VS
char = 0

loop:
    WAIT 0

    READ_MEMORY 0xB74490 4 0 (p)
    p += 0x04
    READ_MEMORY p 4 0 (p)
    i = 0
    WHILE i <= 27904
        WAIT 0 // <---------<< WAIT que faltava
        READ_MEMORY p 1 0 (char)
        p++
        IF char >= 0x00
        AND char < 0x80
            char += i
            
            IF DOES_CHAR_EXIST char
                //-- PRINT_FORMATTED_NOW "~p~Um ped existente: %d" 600 char
                //-- WAIT 500
                IF NOT char = actor
                    SET_CHAR_HEALTH char 0
                ENDIF
            ENDIF
        ENDIF
        i += 256
    ENDWHILE
GOTO loop
}
SCRIPT_END
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Sex 21 Abr 2017, 21:38
Não precisa de WAIT aí. :)

______________________________
Everyone gonna remember my name !
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sex 21 Abr 2017, 21:50
@israel: Não tinha visto a sua resposta antes de atualizar a pagina (ONO)

tenho mania de por wait 0 dentro de qualquer loop, no seu exemplo não fez falta mesmo, parece que o loop se resolve muito rápido então não chega fazer diferença, vou ficar usando seu exemplo como modelo. vlw (BG)

______________________________

.::
Os mods que crio serão colocados no meu workshop link
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 846
Reputação : 134
Desde : 22/09/2015
Ver perfil do usuário
em Sex 21 Abr 2017, 21:54
De nada. :)

______________________________
Everyone gonna remember my name !
Conteúdo patrocinado
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum