Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SnowBall] Allows you to pick up snowballs. #46

Open
1 task done
Thomysr opened this issue Jan 5, 2023 · 13 comments · May be fixed by #74
Open
1 task done

[SnowBall] Allows you to pick up snowballs. #46

Thomysr opened this issue Jan 5, 2023 · 13 comments · May be fixed by #74
Labels
New Feature Creation of new functionality.

Comments

@Thomysr
Copy link
Contributor

Thomysr commented Jan 5, 2023

Is there an existing issue for this?

  • I have searched the existing issues

What feature are you suggesting?

Ajout de la posibilité de ramasser / jeter des snowballs

Explain all the steps and mechanics clearly and precisely.

Si le joueur est dans les bonnes conditions, il peut ramasser des boules-de-neige par terre (limite de 3 ), puis il peut les jeter à pied ou en véhicule.
Image :
snow1
snow2

Vidéo test :
https://streamable.com/o9m7ic

La branche ( Snowball ) est disponnible ici

Why would this feature be useful?

Tout le monde aime jeter des boules de neige.

@NariieL
Copy link
Member

NariieL commented Jan 5, 2023

Hello !

L'une des contraintes de SOZ est de ne jamais appuyer sur E.

Malheureusement, ta feature proposée va à l'encontre de cette contrainte étant donné que le Joueur doit ramasser la neige à l'aide du bouton E.

Si tu trouves une solution - adapte, pourquoi pas !

@NariieL NariieL added the New Feature Creation of new functionality. label Jan 5, 2023
@NariieL NariieL changed the title Ajout des snowballs [SnowBall] Allows you to pick up snowballs. Jan 5, 2023
@Thomysr
Copy link
Contributor Author

Thomysr commented Jan 5, 2023

Peut-être un B-target, je vais faire des tests pour voir ce qui rend le mieux

@Zocaxu
Copy link
Contributor

Zocaxu commented Jan 5, 2023

Via une animation de "ramasser par terre" ça serait top

@Thomysr
Copy link
Contributor Author

Thomysr commented Jan 5, 2023

Via une animation :
snow3

Vidéo test : https://streamable.com/6rwsbx

@NariieL
Copy link
Member

NariieL commented Jan 5, 2023

Complète à l'aide des informations suivantes :

  • "Boule de neige" est un objet, considéré comme une arme (C'est le cas dans GTA de base), donc elle doit pouvoir être bind dans les accès rapides.

  • Tu dois y ajouter une image produite avec MidJourney, en 200x200 DXT5 mipmaps 1 dans soz-items.ytd

  • Finalement, ajoute lui un poids et une description.

  • L'animation doit aussi pouvoir être bind sur le pavé numérique.

Par ailleurs, la source de ton code provient sûrement de FiveM, on devra donc vérifier que l'identique n'existe pas ailleurs, sinon ça ne pourra pas être accepté.

@Zocaxu
Copy link
Contributor

Zocaxu commented Jan 17, 2023

@Thomysr Est-ce que tu es toujours dessus ? Est-ce que tu as besoin d'aide ?

@Thomysr
Copy link
Contributor Author

Thomysr commented Jan 20, 2023

@Zocaxu

Hey, désolé j'ai pas vu les réponses. Je suis entrain de refaire tout ça autrement de façon plus clean ( et plus simple ).

L'idée c'est : Ramassé une boule sous forme d'item depuis le menu annimation, et pouvoir se l'équiper et pouvoir séléectionné des raccourcis.

Concernant le code, c'est plus la partie item qui me pose problème ( give de la snowball en item OK, par contre les munitions restent à 0 )

@Laikker
Copy link
Contributor

Laikker commented Jan 20, 2023

@Thomysr

Hey, désolé j'ai pas vu les réponses. Je suis entrain de refaire tout ça autrement de façon plus clean ( et plus simple ).

L'idée c'est : Ramassé une boule sous forme d'item depuis le menu annimation, et pouvoir se l'équiper et pouvoir séléectionné des raccourcis.

Concernant le code, c'est plus la partie item qui me pose problème ( give de la snowball en item OK, par contre les munitions restent à 0 )

Il faut que tu gères la gestion d'inventaire coté server
par exemple ajoute dans gta-server/resources/[soz]/soz-core/src/server/weapon/weapon.provider.ts

@OnEvent(ServerEvent.GET_SNOW)
public snow(source: number) {
    const weapon = this.inventoryManager.getFirstItemInventory(source, 'weapon_snowball');
    if (weapon) {
        if (weapon.metadata.ammo >= 40) {
            this.notifier.notify(source, 'Tu as trop de boules de neige sur toi !', 'error');
            return;
        }
        this.inventoryManager.updateMetadata(source, weapon.slot, {
            ammo: weapon.metadata.ammo + 2,
        });
    } else {
        this.inventoryManager.addItemToInventory(source, 'weapon_snowball', 1, { ammo: 2 });
    }
    this.notifier.notify(source, 'Tu as ramassé deux boules de neige');
}

coté client dans gta-server/resources/[soz]/soz-core/src/client/weapon/weapon.provider.ts

@On('snowball')
public async snow() {
    const playerPedId = PlayerPedId();
    const playerId = PlayerId();
    if (
        IsPedInAnyVehicle(playerPedId, true) ||
        IsPlayerFreeAiming(playerId) ||
        IsPedSwimming(playerPedId) ||
        IsPedSwimmingUnderWater(playerPedId) ||
        IsPedRagdoll(playerPedId) ||
        IsPedFalling(playerPedId) ||
        IsPedRunning(playerPedId) ||
        IsPedSprinting(playerPedId) ||
        GetInteriorFromEntity(playerPedId) ||
        IsPedShooting(playerPedId) ||
        IsPedUsingAnyScenario(playerPedId) ||
        IsPedInCover(playerPedId, false)
    ) {
        return;
    }

    const { completed } = await this.progressService.progress('snow', 'Ramassage de neige...', 2000, {
        dictionary: 'anim@mp_snowball',
        name: 'pickup_snowball',
    });

    if (completed) {
        TriggerServerEvent(ServerEvent.GET_SNOW);
    }
}

Pour la désactivation des dégats, tu peux utiliser le fichier gta-server/resources/[weapon]/soz-weapon-metaconfig/stream/weapons.meta
Tu ajoutes la custo du projectile boule de neige à coté de celle de la grenade par exemple:

    <Item type="CAmmoThrownInfo">
      <Name>AMMO_SNOWBALL</Name>
      <Model>w_ex_snowball</Model>
      <Audio />
      <Slot />
      <AmmoMax value="40" />
      <AmmoMax50 value="40" />
      <AmmoMax100 value="40" />
      <AmmoMaxMP value="40" />
      <AmmoMax50MP value="40" />
      <AmmoMax100MP value="40" />
      <AmmoFlags>FixedAfterExplosion</AmmoFlags>
      <Damage value="0.000000" />
      <LifeTime value="10.000000" />
      <FromVehicleLifeTime value="2.500000" />
      <LifeTimeAfterImpact value="0.001000" />
      <LifeTimeAfterExplosion value="0.000000" />
      <ExplosionTime value="0.250000" />
      <LaunchSpeed value="25.000000" />
      <SeparationTime value="0.000000" />
      <TimeToReachTarget value="0.000000" />
      <Damping value="0.050000" />
      <GravityFactor value="1.000000" />
      <RicochetTolerance value="0.000000" />
      <PedRicochetTolerance value="0.000000" />
      <VehicleRicochetTolerance value="0.000000" />
      <Explosion>
        <Default>EXP_TAG_SNOWBALL</Default>
        <HitCar>DONTCARE</HitCar>
        <HitTruck>DONTCARE</HitTruck>
        <HitBike>DONTCARE</HitBike>
        <HitBoat>DONTCARE</HitBoat>
        <HitPlane>DONTCARE</HitPlane>
      </Explosion>
      <FuseFx>proj_snowball_fuse</FuseFx>
      <FuseFxFP />
      <TrailFx>proj_snowball_trail</TrailFx>
      <TrailFxUnderWater />
      <TrailFxFadeInTime value="0.000000" />
      <TrailFxFadeOutTime value="0.000000" />
      <PrimedFx />
      <DisturbFxDefault />
      <DisturbFxSand />
      <DisturbFxWater />
      <DisturbFxDirt />
      <DisturbFxFoliage />
      <DisturbFxProbeDist value="0.000000" />
      <DisturbFxScale value="0.000000" />
      <LightOnlyActiveWhenStuck value="false" />
      <LightFlickers value="false" />
      <LightBone />
      <LightColour x="0.000000" y="0.000000" z="0.000000" />
      <LightIntensity value="0.000000" />
      <LightRange value="0.000000" />
      <LightFalloffExp value="0.000000" />
      <LightFrequency value="0.000000" />
      <LightPower value="0.000000" />
      <CoronaSize value="0.000000" />
      <CoronaIntensity value="0.000000" />
      <CoronaZBias value="0.000000" />
      <ProjectileFlags>DestroyOnImpact ProcessImpacts NoPullPin DoubleDamping ApplyDamageOnImpact DontFireAnyEvents</ProjectileFlags>
      <ThrownForce value="0.000000" />
      <ThrownForceFromVehicle value="5.000000" />
    </Item>

Avec ca plus besoin de ton code en lua dans une ressource dédiée

@Thomysr
Copy link
Contributor Author

Thomysr commented Jan 20, 2023

Au top @Laikker ! Merci pour tout ça, je partais sur cette voie la justement, je creusait le fonctionnement de l'InventoryManager

@Zocaxu
Copy link
Contributor

Zocaxu commented Jan 20, 2023

Comme la boule de neige est une arme, il faut que tu équipes le joueur du nombre de boule de neige qu'il a sur lui via GiveWeaponToPed quand il utilise l'item dans son inventaire (ou via le raccourcis) et que tu t'assures qu'il perde bien les boules de neige qu'il lance, puis que les boules de neiges sont deséquipees quand il n'en a plus dans l'inventaire.

@Laikker
Copy link
Contributor

Laikker commented Jan 20, 2023

Comme la boule de neige est une arme, il faut que tu équipes le joueur du nombre de boule de neige qu'il a sur lui via GiveWeaponToPed quand il utilise l'item dans son inventaire (ou via le raccourcis) et que tu t'assures qu'il perde bien les boules de neige qu'il lance, puis que les boules de neiges sont deséquipees quand il n'en a plus dans l'inventaire.

Non, comme la boule de neige est déjà déclarée comme une arme, tout est déjà géré par le code existant

@Zocaxu
Copy link
Contributor

Zocaxu commented Jan 20, 2023

Super alors ! Encore plus facile

@Thomysr
Copy link
Contributor Author

Thomysr commented Jan 24, 2023

Hello, j'ai implémenté tout ça, les fichiers sont dispo sur la branche Snowball de mon repo.

Voici une démo :
https://streamable.com/55s4bj

@Thomysr Thomysr linked a pull request Jan 27, 2023 that will close this issue
@NariieL NariieL linked a pull request Feb 1, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
New Feature Creation of new functionality.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants