Página 1 de 1

[SA] Início aleatório

Enviado: 28 Jun 2019, 09:56
por nadalao
ImagemImagemImagem

Esse mod é pra quem mais abre o jogo do que joga, que fica só testando coisas e está enjoado dos save games.
Sempre que você iniciar um jogo você aparecerá em um lugar aleatório do mapa, mas nunca num lugar remoto e o cj será substituído por um ped aleatório, assim você pode apreciar melhor o mapa do jogo mesmo sem tempo de ficar andando por aí.

Atualizei o que sei
-Agora o mod é desativado ao iniciar um novo jogo;
-Corrigido crash com ids de ped 0 e 1;
-Velocidade de carregar o mapa aumentada (agora é a mesma de iniciar o jogo normalmente);
-Agora você não irá aparecer em uma cidade que ainda não foi desbloqueada no seu jogo salvo;
Agora tem um .ini simples pra você configurar o intervalo de ids dos peds e horário que o jogo inicia;
- Deixe o id inicial ou o final em -1 pra iniciar sempre com o CJ;
- Deixe a hora inicial ou a final em -1 pra iniciar na hora original do seu jogo salvo;


Atualizei o que sei²
-Refiz o sistema de selecionar o lugar, agora é mais baleancado e menos repetitivo;
-Refiz o sistema de sortear a skin;
-Adicionei configuração pra spawnar em qualquer lugar (menos água e em cima de prédios);

Código: Selecionar tudo

SCRIPT_START
{
LVAR_INT scplayer rand iStat id_inicial id_final hora_inicial hora_final aleatório lugar
LVAR_FLOAT x y z a b c z2 angulo progresso

GET_PLAYER_CHAR 0 scplayer

GET_PROGRESS_PERCENTAGE progresso
IF progresso = 0.0
    TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF


IF NOT READ_INT_FROM_INI_FILE "cleo\início_aleatório.ini" "IDs" "ID inicial" id_inicial
    id_inicial = 0
    WRITE_INT_TO_INI_FILE id_inicial "cleo\início_aleatório.ini" "IDs" "ID inicial"
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\início_aleatório.ini" "IDs" "ID final" id_final
    id_final = 289
    WRITE_INT_TO_INI_FILE id_final "cleo\início_aleatório.ini" "IDs" "ID final"
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\início_aleatório.ini" "Horas" "Hora inicial" hora_inicial
    hora_inicial = 6
    WRITE_INT_TO_INI_FILE hora_inicial "cleo\início_aleatório.ini" "Horas" "Hora inicial"
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\início_aleatório.ini" "Horas" "Hora final" hora_final
    hora_final = 18
    WRITE_INT_TO_INI_FILE hora_final "cleo\início_aleatório.ini" "Horas" "Hora final"
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\início_aleatório.ini" "Lugar" "lugar" lugar
    lugar = 0
    WRITE_INT_TO_INI_FILE lugar "cleo\início_aleatório.ini" "Lugar" "lugar"
ENDIF
hora_final += 1
id_final += 1

timerb = 0
WHILE NOT CAN_PLAYER_START_MISSION 0
OR NOT IS_PLAYER_CONTROL_ON 0
OR timerb < 40
    WAIT 0
    IF IS_BUTTON_PRESSED 0 0
    OR IS_BUTTON_PRESSED 0 1
    OR IS_BUTTON_PRESSED 0 6
    OR IS_BUTTON_PRESSED 0 14
    OR IS_BUTTON_PRESSED 0 15
    OR IS_BUTTON_PRESSED 0 16
    OR IS_BUTTON_PRESSED 0 17
        TERMINATE_THIS_CUSTOM_SCRIPT
    ENDIF
ENDWHILE

DISPLAY_ZONE_NAMES TRUE

novo_lugar:
GET_PLAYER_CHAR 0 scplayer
GET_INT_STAT 181 (iStat)
IF lugar = 2
    SWITCH iStat
        CASE 0
            GENERATE_RANDOM_FLOAT_IN_RANGE -1022.879517 2849.330078 x //ls
            GENERATE_RANDOM_FLOAT_IN_RANGE -2958.146973 378.348389 y //ls
            IF x < 36.830322
            AND y < -294.642822
                GOTO novo_lugar
            ENDIF
            BREAK
        CASE 1
            GENERATE_RANDOM_FLOAT_IN_RANGE -2979.910645 2974.888672 x //LS + SF
            GENERATE_RANDOM_FLOAT_IN_RANGE -2936.384277 1566.964355 y
            IF x > -1155.133911
            AND y > 508.928711
                GOTO novo_lugar
            ENDIF
            BREAK
        DEFAULT
            GENERATE_RANDOM_FLOAT_IN_RANGE -2700.0 2700.0 x
            GENERATE_RANDOM_FLOAT_IN_RANGE -2700.0 2700.0 y
            TASK_JUMP scplayer 1
            //PRINT_FORMATTED_NOW "%f %f" 10000 x y
            BREAK
    ENDSWITCH
ELSE
    GENERATE_RANDOM_INT_IN_RANGE 0 11 aleatório
    SWITCH aleatório
        CASE 0//LS
        CASE 1
        CASE 2
            GENERATE_RANDOM_FLOAT_IN_RANGE 143.973145 2812.500000 x
            GENERATE_RANDOM_FLOAT_IN_RANGE -1851.562500 264.508789 y
            BREAK
        CASE 3//SF
        CASE 4
        CASE 5
            GENERATE_RANDOM_FLOAT_IN_RANGE -2712.053711 -1667.410645 x
            GENERATE_RANDOM_FLOAT_IN_RANGE -197.544678 1282.366089 y
            IF iStat = 0
                GOTO novo_lugar
            ENDIF
            BREAK
        CASE 6//LV
        CASE 7
        CASE 8
            GENERATE_RANDOM_FLOAT_IN_RANGE 2564.732422 1349.330078 x
            GENERATE_RANDOM_FLOAT_IN_RANGE 2491.071533 967.633911 y
            IF iStat < 2
                GOTO novo_lugar
            ENDIF
            BREAK
        CASE 9//cidades pequenas
        CASE 10
            GENERATE_RANDOM_INT_IN_RANGE 0 9 aleatório
            SWITCH aleatório
                CASE 0
                    GENERATE_RANDOM_FLOAT_IN_RANGE -308.725983 10.044678 x //fort carson
                    GENERATE_RANDOM_FLOAT_IN_RANGE 1075.241455 1208.705322 y
                    IF iStat < 2
                        GOTO novo_lugar
                    ENDIF
                    BREAK
                CASE 1
                    GENERATE_RANDOM_FLOAT_IN_RANGE -2645.089355 -2347.098145 x //bayside
                    GENERATE_RANDOM_FLOAT_IN_RANGE 2531.250000 2246.651855 y
                    IF iStat < 2
                        GOTO novo_lugar
                    ENDIF
                    BREAK
                CASE 2
                    GENERATE_RANDOM_FLOAT_IN_RANGE -2216.517822 -2072.544678 x //angel pine
                    GENERATE_RANDOM_FLOAT_IN_RANGE -2531.250000 -2229.911377 y
                    IF iStat = 0
                        GOTO novo_lugar
                    ENDIF
                    BREAK
                CASE 3
                    GENERATE_RANDOM_FLOAT_IN_RANGE 133.885300 318.082062 x //blueberry
                    GENERATE_RANDOM_FLOAT_IN_RANGE -229.476852 -33.481964 y
                    BREAK
                CASE 4
                    GENERATE_RANDOM_FLOAT_IN_RANGE 619.419678 812.703430 x //dillimore
                    GENERATE_RANDOM_FLOAT_IN_RANGE -585.937500 -486.644135 y
                    BREAK
                CASE 5
                    GENERATE_RANDOM_FLOAT_IN_RANGE 1208.296021 1395.810303 x //montgomery
                    GENERATE_RANDOM_FLOAT_IN_RANGE 210.886078 354.861176 y
                    BREAK
                CASE 6
                    GENERATE_RANDOM_FLOAT_IN_RANGE 2223.214355 2517.858154 x //palomino creek
                    GENERATE_RANDOM_FLOAT_IN_RANGE -73.660645 117.187607 y
                    BREAK
                CASE 7
                    GENERATE_RANDOM_FLOAT_IN_RANGE -1548.360962 -1412.946411 x //el quebrados
                    GENERATE_RANDOM_FLOAT_IN_RANGE 2548.903809 2675.225098 y
                    IF iStat < 2
                        GOTO novo_lugar
                    ENDIF
                    BREAK
                CASE 8
                    GENERATE_RANDOM_FLOAT_IN_RANGE -300.444183 -194.196625 x //a payasadas
                    GENERATE_RANDOM_FLOAT_IN_RANGE 2643.598877 2755.580322 y
                    IF iStat < 2
                        GOTO novo_lugar
                    ENDIF
                    BREAK
            ENDSWITCH
            BREAK
    ENDSWITCH
ENDIF

GET_GROUND_Z_FOR_3D_COORD x y z z
CLEO_CALL fast_teleport 0 x y

WAIT 0

SWITCH lugar
    CASE 0
        GET_CLOSEST_CHAR_NODE x y 100.0 x y z
        GET_GROUND_Z_FOR_3D_COORD x y z z
        CLEO_CALL fast_teleport 0 x y
        BREAK
    CASE 1
        GET_CLOSEST_CAR_NODE x y 100.0 x y z
        GET_GROUND_Z_FOR_3D_COORD x y z z
        CLEO_CALL fast_teleport 0 x y
        BREAK
    CASE 2
        GET_WATER_HEIGHT_AT_COORDS x y 1 z
        IF NOT z = -1000.0
            GOTO novo_lugar
        ENDIF
        GET_CLOSEST_CAR_NODE x y z a b c
        GET_CHAR_COORDINATES scplayer x y z
        GET_DISTANCE_BETWEEN_COORDS_3D x y c a b c z2
        IF z2 < 25.0
            z -= c
            IF z > 5.0
            OR z < -5.0
                GOTO novo_lugar
            ENDIF
        ENDIF
        BREAK
ENDSWITCH

WAIT 0

IF LOCATE_CHAR_ANY_MEANS_2D scplayer -422.375000 299.000000 80.0 10.0 0
OR LOCATE_CHAR_ANY_MEANS_2D scplayer 0.000000 0.000000 10.0 10.0 0
OR LOCATE_CHAR_ANY_MEANS_2D scplayer -536.125000 293.875000 80.0 20.0 0
OR LOCATE_CHAR_ANY_MEANS_2D scplayer -1955.000000 -986.625000 20.0 20.0 0
OR LOCATE_CHAR_ANY_MEANS_2D scplayer -1488.420532 -379.580566 190.0 190.0 0
    GOTO novo_lugar
ENDIF

IF NOT hora_inicial = -1
AND NOT hora_final = -1
    IF hora_inicial = hora_final
        IF NOT hora_inicial > 23
            GENERATE_RANDOM_INT_IN_RANGE 0 30 hora_final
        ENDIF
    ELSE
        GENERATE_RANDOM_INT_IN_RANGE hora_inicial hora_final hora_inicial
        GENERATE_RANDOM_INT_IN_RANGE 0 59 hora_final
    ENDIF
    SET_TIME_OF_DAY hora_inicial hora_final
ENDIF

SET_WEATHER_TO_APPROPRIATE_TYPE_NOW
MANAGE_ALL_POPULATION
GET_CHAR_COORDINATES scplayer x y z
GET_CLOSEST_CAR_NODE x y z a b c
CLEO_CALL FindAngle 0 (x,y) (a,b) (angulo) //LightVelox
SET_CHAR_HEADING scplayer angulo
RESTORE_CAMERA
SET_CAMERA_BEHIND_PLAYER

IF IS_CHAR_MODEL scplayer 0
    CLEO_CALL skin 0 id_inicial id_final
    DISABLE_CHAR_SPEECH scplayer TRUE
ENDIF

DISPLAY_ZONE_NAMES FALSE
TERMINATE_THIS_CUSTOM_SCRIPT
}
{
LVAR_FLOAT x y z[3]
LVAR_INT var char area
fast_teleport:
GET_PLAYER_CHAR 0 char
GET_CHAR_AREA_VISIBLE char area
IF NOT area = 0
    SET_AREA_VISIBLE 0
    SET_CHAR_AREA_VISIBLE char 0
ENDIF
LOAD_SCENE x y 100.0
REQUEST_COLLISION x y
GET_GROUND_Z_FOR_3D_COORD x y 900.0 z[1]
GET_WATER_HEIGHT_AT_COORDS x y 0 z[2]
WHILE z[1] = 0.0
AND var = 0
    LOAD_SCENE x y 100.0
    REQUEST_COLLISION x y
    GET_GROUND_Z_FOR_3D_COORD x y 900.0 z[1]
    GET_WATER_HEIGHT_AT_COORDS x y 0 z[2]
    IF z[2] >= 0.0
        var = 1
    ENDIF
ENDWHILE
IF z[0] = 0.0
    IF z[1] < z[2]
        timera = 0
        WHILE NOT z[1] > z[2]
            WAIT 0
            SET_CHAR_COORDINATES char x y -100.0
            GET_CHAR_COORDINATES char x y z[1]
            IF timera > 500
                CLEO_RETURN 0
            ENDIF
        ENDWHILE
    ELSE
        SET_CHAR_COORDINATES char x y z[1]
    ENDIF
ELSE
    SET_CHAR_COORDINATES char x y z[0]
ENDIF
IF LOCATE_CHAR_ANY_MEANS_2D char 1198.1 -1334.9 50.0 50.0 FALSE
    SET_CHAR_HEADING char 270.0
ELSE
    SET_CHAR_HEADING char 0.0
ENDIF
CLEO_RETURN 0
}
{
LVAR_INT random id_inicial id_final var
skin:
    IF id_inicial  = id_final
        random = id_inicial
    ELSE
        GENERATE_RANDOM_INT_IN_RANGE id_inicial id_final random
    ENDIF
    IF IS_MODEL_AVAILABLE random
    AND IS_MODEL_IN_CDIMAGE random
        CALL_FUNCTION_RETURN 0x00403DA0 1 1 (random)(var)
        READ_MEMORY var 4 FALSE var
        var += 0x10
        READ_MEMORY var 4 FALSE var
        CALL_FUNCTION_RETURN var 1 1 0 var
        IF NOT var = 7
            random += 1
            GOTO skin
        ENDIF
    ELSE
        random += 1
        GOTO skin
    ENDIF
    REQUEST_MODEL random
    LOAD_ALL_MODELS_NOW
    SET_PLAYER_MODEL 0 random
CLEO_RETURN 0
}
{
FindAngle:
    LVAR_FLOAT cx cy ex ey
    LVAR_FLOAT dx dy theta m_pi q1 q2 r
    m_pi = 3.1415926
    dy = ey
    dy -= cy
    dx = ex
    dx -= cx
    q1 = dx
    q1 *=dx
    q2 = dy
    q2 *=dy
    q1 +=q2
    SQRT q1 r
    dx /= r
    dy /= r
    GET_HEADING_FROM_VECTOR_2D dx dy theta
CLEO_RETURN 0 theta
}
SCRIPT_END
início aleatório.zip
Download
(2.68 KiB) Baixado 237 vezes

Re: [SA] Início aleatório

Enviado: 28 Jun 2019, 10:31
por Grinch_
Nice concept.I've given it a try. t seems to work fine for me. But you should check if its a new game or not tough.

Re: [SA] Início aleatório

Enviado: 28 Jun 2019, 12:18
por Dowglas de Azevedo
Hum...semelhante ao Load Mod...
Interessante.

Re: [SA] Início aleatório

Enviado: 28 Jun 2019, 13:37
por Kr0n0s800
muy util  :peepo6: , seria bueno que agregaras la posibilidad de escojer los peds con los que puede iniciar la partida, y tambien una opcion para usar solo a cj, asi seria util para jugar y no solo para realizar pruebas

Re: [SA] Início aleatório

Enviado: 28 Jun 2019, 15:55
por nadalao
Kr0n0s800 escreveu:
28 Jun 2019, 13:37
muy util :peepo6: , seria bueno que agregaras la posibilidad de escojer los peds con los que puede iniciar la partida, y tambien una opcion para usar solo a cj, asi seria util para jugar y no solo para realizar pruebas
Adicionei um .ini pra pequenas configurações, incluindo essa que você sugeriu.

Re: [SA] Início aleatório

Enviado: 29 Jun 2019, 15:02
por Legacy
Uma vez havia feito um mod similar, mas o seu está com mais variedade. Não há coordenadas predefinidas. Seu mod funciona pegando pontos dos caminhos por onde os pedestres circulam e trocando a skin do CJ por uma de número aleatório em um intervalo.
SpoilerAbrir

(esse vídeo não é da versão final)

Um dos problemas do meu script era ele não checar se o jogador estivesse com Las Venturas e San Fierro desbloquedas no save, fazendo o jogador ganhar estrelas caso escolhesse uma cidade na qual não tivesse desbloqueado. Outro era não checar quais casas foram compradas ingame e o último, era não checar se o jogador estivesse criando um novo save.
Como funciona nesse? O jogo só gera pedestre nas cidades desbloquedas e esse mod acaba não tendo o primeiro problema?
 

Re: [SA] Início aleatório

Enviado: 29 Jun 2019, 15:39
por Kr0n0s800
cuando inicio una partida nueva, gano de forma inmediata 4 estrellas, deberias corregirlo para que funcione solo en partidas guardadas y quedaria perfecto  :peepo6:

Re: [SA] Início aleatório

Enviado: 29 Jun 2019, 19:09
por nadalao
Legacy escreveu:
29 Jun 2019, 15:02
Uma vez havia feito um mod similar, mas o seu está com mais variedade. Não há coordenadas predefinidas. Seu mod funciona pegando pontos dos caminhos por onde os pedestres circulam e trocando a skin do CJ por uma de número aleatório em um intervalo.
SpoilerAbrir

(esse vídeo não é da versão final)

Um dos problemas do meu script era ele não checar se o jogador estivesse com Las Venturas e San Fierro desbloquedas no save, fazendo o jogador ganhar estrelas caso escolhesse uma cidade na qual não tivesse desbloqueado. Outro era não checar quais casas foram compradas ingame e o último, era não checar se o jogador estivesse criando um novo save.
Como funciona nesse? O jogo só gera pedestre nas cidades desbloquedas e esse mod acaba não tendo o primeiro problema?

o meu tem os mesmos problemas do seu, mas acho que sei resolver todos eles, alguma hora eu conserto ele.

Re: [SA] Início aleatório

Enviado: 03 Jul 2019, 12:00
por nadalao
Corrigi todos os problemas conhecidos do mod, agora este é um mod completo e não apenas pra testes;

Re: [SA] Início aleatório

Enviado: 14 Set 2019, 13:11
por nadalao
atualizei o mod, agora ta mais topper ainda :daora: