Sign in to follow this  
Dadex

Funzione ogni volta che si mira.

Recommended Posts

Salve a tutti,

devo creare uno script che produca un suono ogni volta che miro (ad esempio con il cecchino). Qualcuno può dirmi l'evento da utilizzare per fare ciò ?

P.S. = ho già provato con onClientPlayerTarget ma riproduce un suono solo quando trova un elemento valido.

Grazie in anticipo,

saluti.

Share this post


Link to post

Altre informazioni ?

Cmq visto che devi usare il mouse destro per mirare io inizierei da qui.

Poi fai il controllo Dell arma e se hai ad esempio il cecchino ti parte il suono,se hai un altra arma non suona.

Se inizi la script posso aiutarti,ma se devo fartela io puoi scordartelo :/

Ho dei brutti precedenti.

Tipo un frocio di merda dal nome monty o stolka.

Mi fece fare una script ed ora la sta vendendo.

Vendendo per modo di dire.

Share this post


Link to post

Ciao,

grazie della risposta.

Comunque, in pratica volevo creare uno script che, appena il giocatore mirava con il cecchino, riproduceva il battito del cuore. (Sì, mi sono ispirato a C.O.D. :lol: )

Allora ho deciso di controllare nella Wiki gli eventi Client-Side ma ho trovato solo un evento che è in grado di svolgere una funzione solo quando trovava un elemento valido (veicoli, pedoni, giocatori, ecc.) che è "OnClientPlayerTarget".

Ho seguito il tuo consiglio, Hunterix. Direi che sono riuscito a fare ciò che volevo:

battito = playSound("heartbeat.wav", true) -- Il suono che deve essere riprodotto 
setSoundPaused(battito, true) -- Lo mette in pausa all'inizio 
setSoundSpeed(battito, 0.85) -- Lo rallenta di un po' 
local giocatore = getLocalPlayer() 
function controllo() 
    local arma = getPedWeapon(giocatore) -- Ricava l'arma che sta usando il giocatore 
    local stato = getControlState ("aim_weapon") -- Ricava lo stato del giocatore 
    if (arma==34) then -- Se è uno Sniper Rifle 
    if (stato) then -- Se lo stato è "true" (se sta mirando) 
         
        if (isSoundPaused(battito)) then -- Se il suono è in pausa 
        setSoundPaused(battito, false) -- Lo riproduce 
        end 
         
         
     
    else 
    setSoundPaused(battito, true) -- Se non sta mirando il suono rimane in pausa 
    end 
    else 
    setSoundPaused(battito, true) -- Se l'arma non è uno Sniper Rifle il suono rimane in pausa 
    end 
     
     
end 
  
setTimer(controllo, 500, 0) -- Timer che controlla lo stato del giocatore 

In poche parole c'è un Timer che controlla sia se l'arma è uno Sniper Rifle e sia se il giocatore sta mirando. Se si verificano entrambe le condizioni allora riproduce il suono altrimenti lo rimane in pausa.

So che è un po' un pasticcio ma almeno riesce a riprodurre il suono quando voglio.

Saluti. :fadein:

Share this post


Link to post

Che soddisfazione vedere un altro italiano che scrive funzioni :)

Ad esser sincero avevo in mente un altra soluzione basata sul bindkey "down" e "up"

Se hai risolto mi fa piacere.

Share this post


Link to post

Wow, hai ragione, non ci avevo proprio pensato.

Intendevi utilizzare la funzione bindKey sul tasto destro del mouse e fare sempre i controlli da me scritti in precedenza ?

Se è così proverò :)

Grazie Hunterix.

Share this post


Link to post

Giusto.

La tua soluzione è un po' scontata.

Con il setTimer la funzione circola sempre e questo può causare lag,invece con il bindkey la funzione parte solo se premi il tasto.

Quindi io ti consiglierei di fare per prima cosa le due funzioni enableSound disableSound

Poi fai la funzione funzione principale.

Quindi se hai l arma specifica bindkey enableSound unbindkey disableSound.

Però se proprio vuoi imitare call of duty fallo per bene ;D

Ovvero,se premi il tasto destro si mette a mirare e fai partire un suono di fondo + fai muovere la camera,se premi maiuscolo si ferma la camera e parte il battito.

Se ti serve una mano basta dirlo.

Share this post


Link to post

Bene,

anche se è la seconda volta che uso la funzione "bindKey" credo che stia procedendo bene:

function attiva(key, keyState) 
    battito = playSound("heartbeat.wav", true) -- Il suono viene riprodotto quando c'è il click destro del mouse 
end 
  
function disattiva(key, keyState) 
    stopSound(battito) -- Quando lascio il click destro del mouse si ferma il suono 
end 
bindKey("mouse2","down",attiva) -- Lega il click destro del mouse alla funzione che riproduce il suono 
bindKey("mouse2","up",disattiva) -- Lega il rilascio del click destro del mouse alla funzione che ferma il suono 

È tutto OK, per ora ?

Se è così procedo e aggiungo un paio di condizioni per vedere se l'arma è il cecchino che desidero e se il giocatore in quel momento sta mirando.

EDIT: Ok, credo di avere un piccolo problema.

Mi spiego:

1) Ho legato il click del mouse alle funzioni;

2) Ho messo la condizione dell'arma (ovvero controlla se è uno Sniper Rifle);

3) Ho messo la condizione dello stato del giocatore (se sta mirando o no);

3) Entro su MTA e provo se funziona e mi accorgo che il controllo dello stato avviene prima che io mirassi, per questo risulta "false" e non accade nulla;

4) Decido quindi di utilizzare la funzione "isPedOnGround" in modo da evitare la riproduzione del suono quando il giocatore è in aria, nuota, cade, vola, guida, ecc. (Sì lo so sono un perfettino, ma quando "programmo" per me deve essere tutto al suo posto);

5) Controllo di nuovo il tutto e mi accorgo che, dopo una caduta, quando il giocatore tenta di rialzarsi e preme il click destro del mouse, il suono viene riprodotto prima che mira.

Quindi, c'è un modo definitivo per risolvere questo stupido dilemma ? :|

Beh, se non c'è rimedio posso anche rimanere tutto così. Chi è che pensa a mirare con il cecchino mentre cade dal cielo ? :lol:

Share this post


Link to post

Posta la risorsa che hai fatto fin ora qui o in PM te la finisco io.

i snipers pro sparano al volo :D

Share this post


Link to post

Anche se non ti conosco mi piaci ragazzo :wink:

Comunque, ecco tutto quello che ho fatto fino ad ora:

local giocatore = getLocalPlayer() 
function attiva(key, keyState) 
    local arma = getPedWeapon(giocatore) -- Ricava l'arma in uso 
    if (arma==34) then -- Se è uno Sniper Rifle 
        if (isPedOnGround(giocatore)) then 
            battito = playSound("heartbeat.wav", true) -- Il suono che deve essere riprodotto 
            setSoundSpeed(battito, 0.85) 
        end 
    end 
  
end 
  
function disattiva(key, keyState) 
    stopSound(battito) 
end 
bindKey("mouse2","down",attiva) 
bindKey("mouse2","up",disattiva) 

Secondo te si può migliorare o abbellire ?

Share this post


Link to post

Ovviamente :mrgreen:

  
function sniperSound ( _, keyState ) 
local giocatore = getLocalPlayer() 
local arma = getPedWeapon(giocatore) 
if (isPedOnGround(giocatore)) and arma == 34 then 
if ( keyState == "down" ) then 
battito = playSound("heartbeat.wav", true)   
elseif ( keyState == "up" ) then 
stopSound ( battito )        
end 
end 
end 
bindKey ( "mouse2", "both", sniperSound) 
  

Share this post


Link to post

Perfetto :D

Tutto OK, funziona tutto alla perfezione. ;)

Grazie del tuo aiuto Hunterix. Ora grazie a te so dove e a chi rovolgermi.

Ci si vede al prossimo Topic, anche perchè ho molte cose ancora da chiedere.

Saluti :fadein:

Share this post


Link to post

Sono qui per questo,anzi mi fa molto piacere aiutarti visto che sei quasi l'unico a scrivere le funzioni da solo (a parte me :D ).

Share this post


Link to post
Sono qui per questo,anzi mi fa molto piacere aiutarti visto che sei quasi l'unico a scrivere le funzioni da solo (a parte me :D ).

ç_ç

Share this post


Link to post
Sono qui per questo,anzi mi fa molto piacere aiutarti visto che sei quasi l'unico a scrivere le funzioni da solo (a parte me :D ).

ç_ç

Cosa?

Se mi trovi un post contenente una funzione scritta da te ti chiedo scusa.

Sinceramente ne dubito :D

Share this post


Link to post
Mi servirebbe anche a me uno script così, potreste fornirmelo? Grazie

Scusate un po' per il necropost, ma ci tenevo a postare questo piccolo lavoretto perchè ho intenzione di migliorarlo ancora di più un giorno. È una community, no? Finchè si può ci si aiuta.

Ho fatto l'upload dello script: https://community.multitheftauto.com/in ... ls&id=7816 (ovviamente con il permesso di Hunterix, ho messo anche i ringraziamenti dappertutto <.<, se qualcosa non va ti prego di contattarmi)

Buon snippaggio a tutti quelli che lo voglio provare. :)

Share this post


Link to post

Non c era bisogno del credit,cmq aggiungi la descrizione in inglese senó ti danno un rate basso.

Share this post


Link to post

Cmq se proprio vuoi trasformare questa resource in qualcosa di unico io ho in mente delle idee che nessuno ha mai fatto.

Gia sto creando qualcosa di simile con le skin e weapon.

In pratica dai la possibilità al player di personalizzare tutto tramite fetchremote (link immagine e suoni)

Se vuoi farlo fammi sapere.

Share this post


Link to post

Fatto, grazie dei tuoi consigli :)

EDIT: scusa adesso ho letto il tuo post. Ci scriviamo in PM, allora ?

Share this post


Link to post

Meglio su steam :/

Share this post


Link to post

Pensandoci bene :/ non vedo come potresti aiutarmi,perche la script lo faccio io,immagini e suoni non ce ne vogliono perche li seleziona il player tramite url.

Alla fine quando la finisco in community metto hunterix,dadex.

Cmq ci sentiamo su steam stasera e ne parliamo.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.