Pesquisa resultou em 10 ocorrências
Voltar para “Pedestres pegam dinheiro”
- 08 Mai 2018, 18:19
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
O script fica mais bonito mesmo. Só que no caso dos pickups acho que não tem um getAllPickups.
- 08 Mai 2018, 16:38
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Será?
Em CLEO também tem e nem por isso é mais leve (na verdade é caso você estiver usando um raio limite em vez de pegar todo mundo).
Mas o seu código é para pegar pickups não chars. Não entendi.
- 04 Mai 2018, 19:27
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Converte para decimal então. Use qualquer ferramenta online, ou coloque o código no Sanny Builder, cursor de digitação em cima do número e CTRL+H para converter.
Uma coisa, logo antes do
Não sei se você estudou sobre manuseamento de memória (especialmente sobre structs), mas:
Aparentemente em
Senão cheque o modelo do objeto, mas a forma acima é a mais correta (especialmente porque você não precisa pegar o objeto de todos os pickups do jogo né, você só quer o de dinheiro).
Edit: em
Uma coisa, logo antes do
// obtain pickup's object pointer
, na variável 1@ você tem o CPickup.Não sei se você estudou sobre manuseamento de memória (especialmente sobre structs), mas:
Código: Selecionar tudo
00000000 CPickup struc ; (sizeof=0x20, align=0x4, copyof_1198)
00000000 ; XREF: .data:CPickups::aPickUps/r
00000000 m_fRevenueValue dd ?
00000004 m_pObject dd ? ; XREF: CPickups::GenerateNewOne(CVector,uint,uchar,uint,uint,bool,char *)+285/r
00000004 ; CPickups::GenerateNewOne(CVector,uint,uchar,uint,uint,bool,char *)+292/r ... ; CObject *
00000008 m_nAmmo dd ?
0000000C m_nRegenerationTime dd ?
00000010 m_vecPos CompressedVector ? ; XREF: CPickup::GetPosn(void)+1/r
00000010 ; CPickup::GetPosn(void)+5/r ...
00000016 m_nMoneyPerDay dw ?
00000018 m_nModelIndex dw ?
0000001A m_nReferenceIndex dw ?
0000001C m_nPickupType db ? ; XREF: CRunningScript::ProcessCommands1100To1199(int)+AB4/r
0000001D m_nFlags db ? ; flags
0000001E _pad1E db 2 dup(?)
00000020 CPickup ends
+0x1C
você tem o tipo de pickup, e é lá que deve estar o tipo "dinheiro". Não sei qual o número do dinheiro mas você consegue descobrir com testes.Senão cheque o modelo do objeto, mas a forma acima é a mais correta (especialmente porque você não precisa pegar o objeto de todos os pickups do jogo né, você só quer o de dinheiro).
Edit: em
+0x18
também tem o ID do modelo é legal também.- 04 Mai 2018, 19:19
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
ATENÇÃO: CÓDIGO FINAL POSTADO AQUI
Está funcionando aqui.
Mas tá retornando mesmo que o pickup não exista mais:
Essas marcas são pickups "mortos", eles já existiram, não existem mais, mas continua os valores na memória (pois é assim que funciona).
Tem que fazer algo para checar se o tal pickup realmente existe, o
Adicionado após 5 minutos 44 segundos:
Funcionou 100%:
Sabendo que o objeto existe, você pode saber que o pickup também existe.
Agora passe tudo isso pra Lua
ATENÇÃO: CÓDIGO FINAL POSTADO AQUI
Está funcionando aqui.
Código: Selecionar tudo
{$cleo}
0000:
while true
wait 0
for 30@ = 0x9788C0 to 0x97D620 step 0x20
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@
if 09D1: does_pickup_exist 31@
then
065B: store_pickup 31@ position_to 1@ 2@ 3@
024F: create_corona_with_radius 1.0 type 2 lensflares 0 with_color 255 255 255 at 1@ 2@ 3@
end
end
end
Mas tá retornando mesmo que o pickup não exista mais:
Essas marcas são pickups "mortos", eles já existiram, não existem mais, mas continua os valores na memória (pois é assim que funciona).
Tem que fazer algo para checar se o tal pickup realmente existe, o
09D1: does_pickup_exist
não funciona, e o mesmo comando em Lua com certeza também não funcionará.Adicionado após 5 minutos 44 segundos:
Funcionou 100%:
Código: Selecionar tudo
{$cleo}
0000:
while true
wait 0
for 30@ = 0x9788C0 to 0x97D620 step 0x20
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@
if 09D1: pickup 31@ created
then
if 0AB1: call_scm_func @Pickup2Object 1 31@ 11@
then
01BB: store_object 11@ position_to 1@ 2@ 3@
024F: create_corona_with_radius 1.0 type 2 lensflares 0 with_color 255 255 255 at 1@ 2@ 3@
end
end
end
end
:Pickup2Object
// 0@ - input param (pickup handle)
// get pickup pointer
0085: 1@ = 0@
0A91: 3@ = 1@ / 65536
0A90: 4@ = 3@ * 65536
0062: 1@ -= 4@
1@ *= 32
1@ += 0x9788C0
// read index
0A8E: 4@ = 1@ + 0x1A
0A8D: 4@ = read_memory 4@ size 2 virtual_protect 0
if
003B: 3@ == 4@
then
// obtain pickup's object pointer
1@ += 4
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
if
1@ > 0
then
// convert object pointer to a handle
0A8D: 8@ = read_memory 0xB7449C size 4 virtual_protect 0
0AA8: call_function_method 0x465070 struct 8@ num_params 1 pop 0 1@ 1@
if
03CA: object 1@ exists
then
0485: return_true
0AB2: ret 1 1@
end
end
end
059A: return_false
0AB2: ret 1 0
Agora passe tudo isso pra Lua
ATENÇÃO: CÓDIGO FINAL POSTADO AQUI
- 04 Mai 2018, 18:57
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Ué, parece certo.
Mas como o script não está executando? Deu erro no código? (moonloader.log)
edit: na real esse código que passei não faz sentido, o início dele.
Mas como o script não está executando? Deu erro no código? (moonloader.log)
edit: na real esse código que passei não faz sentido, o início dele.
- 04 Mai 2018, 17:06
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Ah, eu esqueci que eu já postei isso...
http://brmodstudio.forumeiros.com/t4929 ... mente-util
Resolvido.
http://brmodstudio.forumeiros.com/t4929 ... mente-util
Código: Selecionar tudo
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
- 04 Mai 2018, 02:52
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Caramba tudo isso só pra pegar um pickup?
Eu tinha dado uma dica mas não funcionaria.
Onde você encontrou essa função acima?
Eu tinha dado uma dica mas não funcionaria.
Onde você encontrou essa função acima?
- 03 Mai 2018, 22:14
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Essa função que você mandou devia cuidar disso, deve ser tudo oque você precisa mesmo.
Também poderia pegar a posição do pickup diretamente sem converter pra objeto (tem que ver como fazer isso), mas se converter pra objeto também tá ok, e é isso que ela faz.
Também poderia pegar a posição do pickup diretamente sem converter pra objeto (tem que ver como fazer isso), mas se converter pra objeto também tá ok, e é isso que ela faz.
- 03 Mai 2018, 20:27
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
Caso tiver algum pickup de dinheiro próximo, e naquele local do pickup não tiver nenhuma pessoa próxima, vá até ele, olhe para os lados e pegue.
Logo após pegar, checar por outros próximos, igual acima, mas agora sem fazer a animação olhando.
Melhor pegar uns 3 pickups próximos em vez de só 1, senão vai ficar fazendo animação abaixando toda hora e não será natural.
Após pegar tudo próximo, volta pro primeiro caso, onde caso encontrar de novo, olhe para os lados.
Logo após pegar, checar por outros próximos, igual acima, mas agora sem fazer a animação olhando.
Melhor pegar uns 3 pickups próximos em vez de só 1, senão vai ficar fazendo animação abaixando toda hora e não será natural.
Após pegar tudo próximo, volta pro primeiro caso, onde caso encontrar de novo, olhe para os lados.
- 03 Mai 2018, 20:02
- Fórum: Ideias de mods & Procura
- Tópico: Pedestres pegam dinheiro
- Respostas: 24
- Exibições: 3111
- Gênero:
Pedestres pegam dinheiro
É realmente algo que demorou para alguém fazer...
É estranho ter dinheiro no chão e só você pegar.
Seria legal se ele antes fizesse animação de olhar pros lados para atravessar a rua, rapidamente, daí ele faz uma animação agachando para pegar algo (não sei qual, mas há mods que pegam armas do chão que usam alguma)
É estranho ter dinheiro no chão e só você pegar.
Seria legal se ele antes fizesse animação de olhar pros lados para atravessar a rua, rapidamente, daí ele faz uma animação agachando para pegar algo (não sei qual, mas há mods que pegam armas do chão que usam alguma)