Compartilhe
avatar
Mensagens Nível 2
Mensagens Nível 2
Título : Kick
Mensagens : 60
Reputação : 12
Desde : 03/07/2015
Idade : 19
Localização : Egypt
Ver perfil do usuário

Gangs CarColor Customizer

em Ter 11 Jul 2017, 20:48
Since this wasn't done before and i would love to do it actually since i like Saints Row style , decided to make all the gangs car colors ( even the unused gangs )  completely customizable including the  primary and secondary color with a simple INI file. ;)

Just like that :

GangsCC.ini:

Código:

;--------------------
; Configuration file for mod Gangs CarColor Customizer created by Crspy
;
; you can check the color ids here : http://wiki.sa-mp.com/wiki/Vehicle_Color_IDs
;
; just put the id of your desired color :)
;
;--------------------
;
[Ballas]
Primary = 85
Secondary = 85
;
[Grove]
Primary = 86
Secondary = 86
;
[Vagos]
Primary = 6
Secondary = 6
;
[SFRifa]
Primary = 2
Secondary = 2
;
[DaNangBoys]
Primary = 69
Secondary = 69
;
[ItalianMafia]
Primary = 127
Secondary = 127
;
[Triads]
Primary = 17
Secondary = 17
;
[Aztecas]
Primary = 2
Secondary = 2
;
[RussianMafia]
Primary = 118
Secondary = 118
;
[Bikers]
Primary = 0
Secondary = 0

Source:
Código:

{$cleo}
0000:

if 8AAB:  not file_exists "CLEO\GANGSCC.INI"
then
    0ACD: show_text_highpriority "UNABLE TO LOAD ~B~'CLEO/GANGSCC.INI'" time 4000
    0A93: end_custom_thread
end

if 8AF0:  not 1@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BALLAS" key "PRIMARY"
then
    1@ = -1
end

if 8AF0:  not 2@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BALLAS" key "SECONDARY"
then
    2@ = -1
end

if 8AF0:  not 3@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "GROVE" key "PRIMARY"
then
    3@ = -1
end

if 8AF0:  not 4@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "GROVE" key "SECONDARY"
then
    4@ = -1
end

if 8AF0:  not 5@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "VAGOS" key "PRIMARY"
then
    5@ = -1
end

if 8AF0:  not 6@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "VAGOS" key "SECONDARY"
then
    6@ = -1
end

if 8AF0:  not 7@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "SFRIFA" key "PRIMARY"
then
    7@ = -1
end

if 8AF0:  not 8@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "SFRIFA" key "SECONDARY"
then
    8@ = -1
end

if 8AF0:  not 9@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "DaNangBoys" key "PRIMARY"
then
    9@ = -1
end

if 8AF0:  not 10@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "DaNangBoys" key "SECONDARY"
then
    10@ = -1
end

if 8AF0:  not 11@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "ITALIANMAFIA" key "PRIMARY"
then
    11@ = -1
end

if 8AF0:  not 12@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "ITALIANMAFIA" key "SECONDARY"
then
    12@ = -1
end

if 8AF0:  not 13@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "TRIADS" key "PRIMARY"
then
    13@ = -1
end

if 8AF0:  not 14@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "TRIADS" key "SECONDARY"
then
    14@ = -1
end

if 8AF0:  not 15@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "AZTECAS" key "PRIMARY"
then
    15@ = -1
end

if 8AF0:  not 16@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "AZTECAS" key "SECONDARY"
then
    16@ = -1
end

if 8AF0:  not 17@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "RUSSIANMAFIA" key "PRIMARY"
then
    17@ = -1
end

if 8AF0:  not 18@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "RUSSIANMAFIA" key "SECONDARY"
then
    18@ = -1
end

if 8AF0:  not 19@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BIKERS" key "PRIMARY"
then
    19@ = -1
end

if 8AF0:  not 20@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BIKERS" key "SECONDARY"
then
    20@ = -1
end


{
A loop that passes through all cars (on the street) structures and check if their Driver's Pedtype is one of the gangs' then execute the car color change, once !
0xB74494 - Contains a pointer to main struct
31@ : Car
21@ : Driver
22@ : pedtype
}

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@
            046C: 21@ = car 31@ driver
            03F3: get_car 31@ primary_color_to 23@ secondary_color_to 24@
            056D:  actor 21@ defined
            jf continue
           
            089F: get_actor 21@ pedtype_to 22@
            if 22@ == 7
            then
                if or
                803B: not 23@ == 1@
                803B: not 24@ == 2@
                then                   
                    0229: set_car 31@ primary_color_to 1@ secondary_color_to 2@
                end
            end
            if 22@ == 8
            then
                if or
                803B: not 23@ == 3@
                803B: not 24@ == 4@
                then
                    0229: set_car 31@ primary_color_to 3@ secondary_color_to 4@
                end
            end
            if 22@ == 9
            then
                if or
                803B: not 23@ == 5@
                803B: not 24@ == 6@
                then
                    0229: set_car 31@ primary_color_to 5@ secondary_color_to 6@
                end
            end
            if 22@ == 10
            then
                if or
                803B: not 23@ == 7@
                803B:not 24@ == 8@
                then                             
                    0229: set_car 31@ primary_color_to 7@ secondary_color_to 8@
                end
            end
            if 22@ == 11
            then
                if or
                803B:not 23@ == 9@
                803B:not 24@ == 10@
                then
                    0229: set_car 31@ primary_color_to 9@ secondary_color_to 10@
                end
            end
            if 22@ == 12
            then
                if or
                803B: not 23@ == 11@
                803B: not 24@ == 12@
                then                                         
                    0229: set_car 31@ primary_color_to 11@ secondary_color_to 12@
                end
            end
            if 22@ == 13
            then
                if or
                803B: not 23@ == 13@
                803B: not 24@ == 14@
                then
                    0229: set_car 31@ primary_color_to 13@ secondary_color_to 14@
                end
            end
            if 22@ == 14
            then
                if or
                803B: not 23@ == 15@
                803B: not 24@ == 16@
                then
                    0229: set_car 31@ primary_color_to 15@ secondary_color_to 16@
                end
            end
            if 22@ == 15
            then
                if or
                803B: not 23@ == 17@
                803B: not 24@ == 18@
                then
                    0229: set_car 31@ primary_color_to 17@ secondary_color_to 18@
                end
            end
            if 22@ == 16
            then
                if or
                803B: not 23@ == 19@
                803B: not 24@ == 20@
                then         
                    0229: set_car 31@ primary_color_to 19@ secondary_color_to 20@
                end
            end
        end
    end
end

Download Link : GangsCC Customizer


Última edição por crspo2020 em Qui 03 Ago 2017, 01:59, editado 4 vez(es)
avatar
Mensagens Nível 2
Mensagens Nível 2
Título : Kick
Mensagens : 60
Reputação : 12
Desde : 03/07/2015
Idade : 19
Localização : Egypt
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qua 02 Ago 2017, 10:12
Mod updated fixed the bug that prevented the DaNangboys cars from getting colors due to a small mistake " getting float number instead of integer " .

Made more optimization to the script ,previously it would change the cars color no matter if it was already changed or not ... now it will check if the car was already changed or not before doing that... which results in the script very light weight ;)

Source available at the first post.
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qua 02 Ago 2017, 23:58
Nice, but the source code is a bit confused, you put every if-statement inside another if-statement without necessity. So, I made small changes in the code structure and indentation:
Código:
{$cleo}
0000:

if 8AAB:   not file_exists "CLEO\GANGSCC.INI"
then
    0ACD: show_text_highpriority "UNABLE TO LOAD ~B~'CLEO/GANGSCC.INI'" time 4000
    0A93: end_custom_thread
end

if 8AF0:   not 1@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BALLAS" key "PRIMARY"
then
    1@ = -1
end

if 8AF0:   not 2@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BALLAS" key "SECONDARY"
then
    2@ = -1
end

if 8AF0:   not 3@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "GROVE" key "PRIMARY"
then
    3@ = -1
end

if 8AF0:   not 4@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "GROVE" key "SECONDARY"
then
    4@ = -1
end

if 8AF0:   not 5@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "VAGOS" key "PRIMARY"
then
    5@ = -1
end

if 8AF0:   not 6@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "VAGOS" key "SECONDARY"
then
    6@ = -1
end

if 8AF0:   not 7@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "SFRIFA" key "PRIMARY"
then
    7@ = -1
end

if 8AF0:   not 8@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "SFRIFA" key "SECONDARY"
then
    8@ = -1
end

if 8AF0:   not 9@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "DaNangBoys" key "PRIMARY"
then
    9@ = -1
end

if 8AF0:   not 10@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "DaNangBoys" key "SECONDARY"
then
    10@ = -1
end

if 8AF0:   not 11@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "ITALIANMAFIA" key "PRIMARY"
then
    11@ = -1
end

if 8AF0:   not 12@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "ITALIANMAFIA" key "SECONDARY"
then
    12@ = -1
end

if 8AF0:   not 13@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "TRIADS" key "PRIMARY"
then
    13@ = -1
end

if 8AF0:   not 14@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "TRIADS" key "SECONDARY"
then
    14@ = -1
end

if 8AF0:   not 15@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "AZTECAS" key "PRIMARY"
then
    15@ = -1
end

if 8AF0:   not 16@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "AZTECAS" key "SECONDARY"
then
    16@ = -1
end

if 8AF0:   not 17@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "RUSSIANMAFIA" key "PRIMARY"
then
    17@ = -1
end

if 8AF0:   not 18@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "RUSSIANMAFIA" key "SECONDARY"
then
    18@ = -1
end

if 8AF0:   not 19@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BIKERS" key "PRIMARY"
then
    19@ = -1
end

if 8AF0:   not 20@ = get_int_from_ini_file "CLEO\GANGSCC.INI" section "BIKERS" key "SECONDARY"
then
    20@ = -1
end


{
A loop that passes through all cars (on the street) structures and check if their Driver's Pedtype is one of the gangs' then execute the car color change, once !
0xB74494 - Contains a pointer to main struct
31@ : Car
21@ : Driver
22@ : pedtype
}

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@
            046C: 21@ = car 31@ driver
            03F3: get_car 31@ primary_color_to 23@ secondary_color_to 24@
            056D:   actor 21@ defined
            jf continue
            
            089F: get_actor 21@ pedtype_to 22@
            if 22@ == 7
            then
                if or
                803B: not 23@ == 1@
                803B: not 24@ == 2@
                then                    
                    0229: set_car 31@ primary_color_to 1@ secondary_color_to 2@
                end
            end
            if 22@ == 8
            then
                if or
                803B: not 23@ == 3@
                803B: not 24@ == 4@
                then
                    0229: set_car 31@ primary_color_to 3@ secondary_color_to 4@
                end
            end
            if 22@ == 9
            then
                if or
                803B: not 23@ == 5@
                803B: not 24@ == 6@
                then
                    0229: set_car 31@ primary_color_to 5@ secondary_color_to 6@
                end
            end
            if 22@ == 10
            then
                if or
                803B: not 23@ == 7@
                803B:not 24@ == 8@
                then                              
                    0229: set_car 31@ primary_color_to 7@ secondary_color_to 8@
                end
            end
            if 22@ == 11
            then
                if or
                803B:not 23@ == 9@
                803B:not 24@ == 10@
                then
                    0229: set_car 31@ primary_color_to 9@ secondary_color_to 10@
                end
            end
            if 22@ == 12
            then
                if or
                803B: not 23@ == 11@
                803B: not 24@ == 12@
                then                                          
                    0229: set_car 31@ primary_color_to 11@ secondary_color_to 12@
                end
            end
            if 22@ == 13
            then
                if or
                803B: not 23@ == 13@
                803B: not 24@ == 14@
                then
                    0229: set_car 31@ primary_color_to 13@ secondary_color_to 14@
                end
            end
            if 22@ == 14
            then
                if or
                803B: not 23@ == 15@
                803B: not 24@ == 16@
                then
                    0229: set_car 31@ primary_color_to 15@ secondary_color_to 16@
                end
            end
            if 22@ == 15
            then
                if or
                803B: not 23@ == 17@
                803B: not 24@ == 18@
                then
                    0229: set_car 31@ primary_color_to 17@ secondary_color_to 18@
                end
            end
            if 22@ == 16
            then
                if or
                803B: not 23@ == 19@
                803B: not 24@ == 20@
                then          
                    0229: set_car 31@ primary_color_to 19@ secondary_color_to 20@
                end
            end
        end
    end
end

Edit: You can also put a "continue" after changing the car color.


Última edição por Nex' em Qui 03 Ago 2017, 02:11, editado 1 vez(es)
avatar
Mensagens Nível 2
Mensagens Nível 2
Título : Kick
Mensagens : 60
Reputação : 12
Desde : 03/07/2015
Idade : 19
Localização : Egypt
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 01:36
Oh yeah you are right , Thanks....... but you made a mistake  in this part , where is the if statement ? i know Sanny will compile it , but it's not clear for someone who reads the Source to learn.
Código:

  056D:   actor 21@ defined
  jf continue


Última edição por crspo2020 em Qui 03 Ago 2017, 01:52, editado 1 vez(es)
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 01:51
crspo2020 escreveu:the IF statements inside each other didn't make a difference anyway.  (WINK)
An easy-to-understand source code is important, even if it makes no difference in the bytecode.

Edit:
crspo2020 escreveu:Oh yeah you are right , Thanks....... but you made a mistake  in this part , where is the if statement ?
Código:

  056D:   actor 21@ defined
  jf continue
Is the same as
Código:
if 856D: not actor 21@ defined
then
    continue
end
jf = jump in false


Última edição por Nex' em Qui 03 Ago 2017, 05:23, editado 1 vez(es)
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 01:55
You can do it with any conditional opcode
avatar
Mensagens Nível 2
Mensagens Nível 2
Título : Kick
Mensagens : 60
Reputação : 12
Desde : 03/07/2015
Idade : 19
Localização : Egypt
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 01:58
i know Sanny will compile it , but it's not clear for someone who reads the Source to learn. i didn't even know that only jf  alone can do that until now  despite reading all the tutorials out there :V  ....... doesn't make a difference anyway  since   if   end  is more clear   than  jf

Also thanks for the tip , it will speed up my writing at some parts :D
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 02:03
The first 3 spaces on the opcode description means this is a conditional opcode
Código:
01F3:  car $HJ_PLAYER_CAR in_air
0118:  actor 0@ dead
0AB0:  key_pressed 0x73
So it's easy to know that is a condition.
avatar
Mensagens Nível 2
Mensagens Nível 2
Título : Kick
Mensagens : 60
Reputação : 12
Desde : 03/07/2015
Idade : 19
Localização : Egypt
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 02:14
yeah i know that already  since it's mentioned in almost all cleo tutorials  :D   Thanks
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: Gangs CarColor Customizer

em Qui 03 Ago 2017, 02:19
crspo2020 escreveu:yeah i know that already  since it's mentioned in almost all cleo tutorials  :D   Thanks
you're welcome :)
Conteúdo patrocinado

Re: Gangs CarColor Customizer

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum