Skip to content
This repository has been archived by the owner on Jun 5, 2024. It is now read-only.

Commit

Permalink
Extra utility functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Stuyk committed Apr 3, 2023
1 parent 94f5f1a commit 75aefbb
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
--- Command is /editor
- Fixed restrict function
- Athena.player.teleport
- Athena.player.appearance.setHeadBlendData
- Athena.player.appearance.setSkin
- Athena.player.appearance.clearSkin
--------------------------------------
--- Everything Below is Before April 2
Expand Down
62 changes: 62 additions & 0 deletions src/core/server/player/appearance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,27 @@ export async function setModel(player: alt.Player, isFeminine: boolean) {
await Athena.document.character.set(player, 'appearance', data.appearance);
}

/**
* Set player appearance to a skin / model / ped.
*
* @export
* @param {alt.Player} player
* @param {(string | number)} model
*/
export async function setSkin(player: alt.Player, model: string | number) {
Athena.systems.inventory.clothing.setSkin(player, model);
}

/**
* Clear player custom model.
*
* @export
* @param {alt.Player} player
*/
export async function clearSkin(player: alt.Player) {
Athena.systems.inventory.clothing.clearSkin(player);
}

/**
* Set an eye color on a player.
*
Expand All @@ -146,6 +167,45 @@ export async function setEyeColor(player: alt.Player, color: number) {
await Athena.document.character.set(player, 'appearance', data.appearance);
}

/**
* Change the player's face
*
* @export
* @param {alt.Player} player
* @param {{
* faceFather: number;
* faceMother: number;
* skinFather: number;
* skinMother: number;
* faceMix: number;
* skinMix: number;
* }} faceData
* @return {*}
*/
export async function setHeadBlendData(
player: alt.Player,
faceData: {
faceFather: number;
faceMother: number;
skinFather: number;
skinMother: number;
faceMix: number;
skinMix: number;
},
) {
if (Overrides.setHeadBlendData) {
return Overrides.setHeadBlendData(player, faceData);
}

const data = Athena.document.character.get(player);
if (!data || !data.appearance) {
return;
}

data.appearance = { ...data.appearance, ...faceData };
await Athena.document.character.set(player, 'appearance', data.appearance);
}

/**
* Used to update tattoos, and a hair overlay if present.
* Add the 'decorators' paramater to override player appearance.
Expand Down Expand Up @@ -186,12 +246,14 @@ interface AppearanceFuncs {
setModel: typeof setModel;
setEyeColor: typeof setEyeColor;
updateTattoos: typeof updateTattoos;
setHeadBlendData: typeof setHeadBlendData;
}

const Overrides: Partial<AppearanceFuncs> = {};

export function override(functionName: 'setHairStyle', callback: typeof setHairStyle);
export function override(functionName: 'setFacialHair', callback: typeof setFacialHair);
export function override(functionName: 'setHeadBlendData', callback: typeof setHeadBlendData);
export function override(functionName: 'setEyebrows', callback: typeof setEyebrows);
export function override(functionName: 'setModel', callback: typeof setModel);
export function override(functionName: 'setEyeColor', callback: typeof setEyeColor);
Expand Down
24 changes: 24 additions & 0 deletions src/core/server/player/permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@ export async function addPermission(player: alt.Player, permission: string) {
return await Athena.systems.permission.add('character', player, permission);
}

/**
* Add a permission to the given player's account.
*
* @export
* @param {alt.Player} player
* @param {string} permission
* @return {*}
*/
export async function addAcountPermissions(player: alt.Player, permission: string) {
return await Athena.systems.permission.add('account', player, permission);
}

/**
* Removes a permission from the given player character.
*
Expand All @@ -30,6 +42,18 @@ export async function removePermission(player: alt.Player, permission: string) {
return await Athena.systems.permission.remove('character', player, permission);
}

/**
* Remove a permission to the given player's account.
*
* @export
* @param {alt.Player} player
* @param {string} permission
* @return {*}
*/
export async function removeAccountPermission(player: alt.Player, permission: string) {
return await Athena.systems.permission.remove('account', player, permission);
}

/**
* Check if the current player character has a permission.
*
Expand Down

0 comments on commit 75aefbb

Please sign in to comment.