Portal SAMP
[Ajuda] Carregar animações pra sincronizar sem logar - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Carregar animações pra sincronizar sem logar (/showthread.php?tid=2354)



Carregar animações pra sincronizar sem logar - hiwyn - 03/05/2022

Pra eu poder usar as animações sincronizadas eu preciso rodar isso no primeiro login do usuário:
Código:
stock CarregarAnims(playerid) {
  for(new i = 0; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}
Funciona, dps de usar isso no primeiro login as animações ficam todas boas e sincronizadas...

O problema é, que no meu PC isso laga uns 5 segundos e alguns mobile estão crashando ao logar depois que eu coloquei isso

Alguém sabe como fazer isso de forma mais leve?


RE: Carregar animações pra sincronizar sem logar - xbruno1000x - 03/05/2022

Tenta chamar essa stock na OnPlayerSpawn


RE: Carregar animações pra sincronizar sem logar - hiwyn - 04/05/2022

(03/05/2022 20:15)xbruno1000x Escreveu: Tenta chamar essa stock na OnPlayerSpawn

É lá que eu to chamando, mas tá atrasando o spawn no PC em 3 segundos (pelo menos no meu) e no mobile as vezes está crashando
(quando eu adiciono essa função)

Até separei ela num timer pra ver e era ela mesmo Sad


RE: Carregar animações pra sincronizar sem logar - xbruno1000x - 05/05/2022

Tenta fazer de uma forma mais devagar. Coloca um timer e chama as libs devagar.

Define para fazer isso:

Código:
#define PreloadAnimLib(%1,%2) ApplyAnimation(%1,%2,"null",0.0,0,0,0,0,0)


Como aplicar:
Código:
PreloadPlayerAnims(playerid)
{
       PreloadAnimLib(playerid,"BOMBER");
       PreloadAnimLib(playerid,"RAPPING");
       PreloadAnimLib(playerid,"SHOP");
    PreloadAnimLib(playerid,"BEACH");
    PreloadAnimLib(playerid,"SMOKING");
       PreloadAnimLib(playerid,"FOOD");
       PreloadAnimLib(playerid,"ON_LOOKERS");
       PreloadAnimLib(playerid,"DEALER");
    PreloadAnimLib(playerid,"CRACK");
    PreloadAnimLib(playerid,"CARRY");
    PreloadAnimLib(playerid,"COP_AMBIENT");
    PreloadAnimLib(playerid,"PARK");
    PreloadAnimLib(playerid,"INT_HOUSE");
    PreloadAnimLib(playerid,"FOOD");
    PreloadAnimLib(playerid,"PED");
}
No caso acima, todas libs foram carregadas de uma vez, porém você pode alterar a estrutura da stock para carregar 1 de cada vez de x em x tempo.


RE: Carregar animações pra sincronizar sem logar - hiwyn - 06/05/2022

(05/05/2022 01:03)xbruno1000x Escreveu: Tenta fazer de uma forma mais devagar. Coloca um timer e chama as libs devagar.

Define para fazer isso:

Código:
#define PreloadAnimLib(%1,%2) ApplyAnimation(%1,%2,"null",0.0,0,0,0,0,0)


Como aplicar:
Código:
PreloadPlayerAnims(playerid)
{
       PreloadAnimLib(playerid,"BOMBER");
       PreloadAnimLib(playerid,"RAPPING");
       PreloadAnimLib(playerid,"SHOP");
    PreloadAnimLib(playerid,"BEACH");
    PreloadAnimLib(playerid,"SMOKING");
       PreloadAnimLib(playerid,"FOOD");
       PreloadAnimLib(playerid,"ON_LOOKERS");
       PreloadAnimLib(playerid,"DEALER");
    PreloadAnimLib(playerid,"CRACK");
    PreloadAnimLib(playerid,"CARRY");
    PreloadAnimLib(playerid,"COP_AMBIENT");
    PreloadAnimLib(playerid,"PARK");
    PreloadAnimLib(playerid,"INT_HOUSE");
    PreloadAnimLib(playerid,"FOOD");
    PreloadAnimLib(playerid,"PED");
}
No caso acima, todas libs foram carregadas de uma vez, porém você pode alterar a estrutura da stock para carregar 1 de cada vez de x em x tempo.


Sabe um jeito fácil de dividir:
Código:
new const AnimLibs[][] = {
  "AIRPORT",      "ATTRACTORS",  "BAR",          "BASEBALL",    "BD_FIRE",
  "BEACH",        "BENCHPRESS",  "BF_INJECTION", "BIKE_DBZ",    "BIKED",
  "BIKEH",        "BIKELEAP",    "BIKES",        "BIKEV",        "BLOWJOBZ",
  "BMX",          "BOMBER",      "BOX",          "BSKTBALL",    "BUDDY",
  "BUS",          "CAMERA",      "CAR",          "CAR_CHAT",    "CARRY",
  "CASINO",      "CHAINSAW",    "CHOPPA",      "CLOTHES",      "COACH",
  "COLT45",      "COP_AMBIENT",  "COP_DVBYZ",    "CRACK",        "CRIB",
  "DAM_JUMP",    "DANCING",      "DEALER",      "DILDO",        "DODGE",
  "DOZER",        "DRIVEBYS",    "FAT",          "FIGHT_B",      "FIGHT_C",
  "FIGHT_D",      "FIGHT_E",      "FINALE",      "FINALE2",      "FLAME",
  "FLOWERS",      "FOOD",        "FREEWEIGHTS",  "GANGS",        "GFUNK",
  "GHANDS",      "GHETTO_DB",    "GOGGLES",      "GRAFFITI",    "GRAVEYARD",
  "GRENADE",      "GYMNASIUM",    "HAIRCUTS",    "HEIST9",      "INT_HOUSE",
  "INT_OFFICE",  "INT_SHOP",    "JST_BUISNESS", "KART",        "KISSING",
  "KNIFE",        "LAPDAN1",      "LAPDAN2",      "LAPDAN3",      "LOWRIDER",
  "MD_CHASE",    "MD_END",      "MEDIC",        "MISC",        "MTB",
  "MUSCULAR",    "NEVADA",      "ON_LOOKERS",  "OTB",          "PARACHUTE",
  "PARK",        "PAULNMAC",    "PED",          "PLAYER_DVBYS", "PLAYIDLES",
  "POLICE",      "POOL",        "POOR",        "PYTHON",      "QUAD",
  "QUAD_DBZ",    "RAPPING",      "RIFLE",        "RIOT",        "ROB_BANK",
  "ROCKET",      "RUNNINGMAN",  "RUSTLER",      "RYDER",        "SCRATCHING",
  "SEX",          "SHAMAL",      "SHOP",        "SHOTGUN",      "SILENCED",
  "SKATE",        "SMOKING",      "SNIPER",      "SNM",          "SPRAYCAN",
  "STRIP",        "SUNBATHE",    "SWAT",        "SWEET",        "SWIM",
  "SWORD",        "TANK",        "TATTOOS",      "TEC",          "TRAIN",
  "TRUCK",        "UZI",          "VAN",          "VENDING",      "VORTEX",
  "WAYFARER",    "WEAPONS",      "WOP",          "WUZI"
};

Código:
stock CarregarAnims(playerid) {
  for(new i = 0; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}

Em quatro partes ao invés de 2?
Código:
stock CarregarAnims1(playerid) {
  new END = sizeof(AnimLibs) / 2;
  for(new i = 0; i < END; i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}
stock CarregarAnims2(playerid) {
  new START = sizeof(AnimLibs) / 2;
  for(new i = START; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}



RE: Carregar animações pra sincronizar sem logar - xbruno1000x - 06/05/2022

(06/05/2022 01:28)hiwyn Escreveu: Sabe um jeito fácil de dividir:
Código:
new const AnimLibs[][] = {
  "AIRPORT",      "ATTRACTORS",  "BAR",          "BASEBALL",    "BD_FIRE",
  "BEACH",        "BENCHPRESS",  "BF_INJECTION", "BIKE_DBZ",    "BIKED",
  "BIKEH",        "BIKELEAP",    "BIKES",        "BIKEV",        "BLOWJOBZ",
  "BMX",          "BOMBER",      "BOX",          "BSKTBALL",    "BUDDY",
  "BUS",          "CAMERA",      "CAR",          "CAR_CHAT",    "CARRY",
  "CASINO",      "CHAINSAW",    "CHOPPA",      "CLOTHES",      "COACH",
  "COLT45",      "COP_AMBIENT",  "COP_DVBYZ",    "CRACK",        "CRIB",
  "DAM_JUMP",    "DANCING",      "DEALER",      "DILDO",        "DODGE",
  "DOZER",        "DRIVEBYS",    "FAT",          "FIGHT_B",      "FIGHT_C",
  "FIGHT_D",      "FIGHT_E",      "FINALE",      "FINALE2",      "FLAME",
  "FLOWERS",      "FOOD",        "FREEWEIGHTS",  "GANGS",        "GFUNK",
  "GHANDS",      "GHETTO_DB",    "GOGGLES",      "GRAFFITI",    "GRAVEYARD",
  "GRENADE",      "GYMNASIUM",    "HAIRCUTS",    "HEIST9",      "INT_HOUSE",
  "INT_OFFICE",  "INT_SHOP",    "JST_BUISNESS", "KART",        "KISSING",
  "KNIFE",        "LAPDAN1",      "LAPDAN2",      "LAPDAN3",      "LOWRIDER",
  "MD_CHASE",    "MD_END",      "MEDIC",        "MISC",        "MTB",
  "MUSCULAR",    "NEVADA",      "ON_LOOKERS",  "OTB",          "PARACHUTE",
  "PARK",        "PAULNMAC",    "PED",          "PLAYER_DVBYS", "PLAYIDLES",
  "POLICE",      "POOL",        "POOR",        "PYTHON",      "QUAD",
  "QUAD_DBZ",    "RAPPING",      "RIFLE",        "RIOT",        "ROB_BANK",
  "ROCKET",      "RUNNINGMAN",  "RUSTLER",      "RYDER",        "SCRATCHING",
  "SEX",          "SHAMAL",      "SHOP",        "SHOTGUN",      "SILENCED",
  "SKATE",        "SMOKING",      "SNIPER",      "SNM",          "SPRAYCAN",
  "STRIP",        "SUNBATHE",    "SWAT",        "SWEET",        "SWIM",
  "SWORD",        "TANK",        "TATTOOS",      "TEC",          "TRAIN",
  "TRUCK",        "UZI",          "VAN",          "VENDING",      "VORTEX",
  "WAYFARER",    "WEAPONS",      "WOP",          "WUZI"
};

Código:
stock CarregarAnims(playerid) {
  for(new i = 0; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}

Em quatro partes ao invés de 2?
Código:
stock CarregarAnims1(playerid) {
  new END = sizeof(AnimLibs) / 2;
  for(new i = 0; i < END; i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}
stock CarregarAnims2(playerid) {
  new START = sizeof(AnimLibs) / 2;
  for(new i = START; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}

Você pode dividir em enum's diferentes. AnimLibs1, AnimLibs2... etc. Daí você faz o processo normal da stock.


RE: Carregar animações pra sincronizar sem logar - hiwyn - 07/05/2022

(06/05/2022 14:48)xbruno1000x Escreveu:
(06/05/2022 01:28)hiwyn Escreveu: Sabe um jeito fácil de dividir:
Código:
new const AnimLibs[][] = {
  "AIRPORT",      "ATTRACTORS",  "BAR",          "BASEBALL",    "BD_FIRE",
  "BEACH",        "BENCHPRESS",  "BF_INJECTION", "BIKE_DBZ",    "BIKED",
  "BIKEH",        "BIKELEAP",    "BIKES",        "BIKEV",        "BLOWJOBZ",
  "BMX",          "BOMBER",      "BOX",          "BSKTBALL",    "BUDDY",
  "BUS",          "CAMERA",      "CAR",          "CAR_CHAT",    "CARRY",
  "CASINO",      "CHAINSAW",    "CHOPPA",      "CLOTHES",      "COACH",
  "COLT45",      "COP_AMBIENT",  "COP_DVBYZ",    "CRACK",        "CRIB",
  "DAM_JUMP",    "DANCING",      "DEALER",      "DILDO",        "DODGE",
  "DOZER",        "DRIVEBYS",    "FAT",          "FIGHT_B",      "FIGHT_C",
  "FIGHT_D",      "FIGHT_E",      "FINALE",      "FINALE2",      "FLAME",
  "FLOWERS",      "FOOD",        "FREEWEIGHTS",  "GANGS",        "GFUNK",
  "GHANDS",      "GHETTO_DB",    "GOGGLES",      "GRAFFITI",    "GRAVEYARD",
  "GRENADE",      "GYMNASIUM",    "HAIRCUTS",    "HEIST9",      "INT_HOUSE",
  "INT_OFFICE",  "INT_SHOP",    "JST_BUISNESS", "KART",        "KISSING",
  "KNIFE",        "LAPDAN1",      "LAPDAN2",      "LAPDAN3",      "LOWRIDER",
  "MD_CHASE",    "MD_END",      "MEDIC",        "MISC",        "MTB",
  "MUSCULAR",    "NEVADA",      "ON_LOOKERS",  "OTB",          "PARACHUTE",
  "PARK",        "PAULNMAC",    "PED",          "PLAYER_DVBYS", "PLAYIDLES",
  "POLICE",      "POOL",        "POOR",        "PYTHON",      "QUAD",
  "QUAD_DBZ",    "RAPPING",      "RIFLE",        "RIOT",        "ROB_BANK",
  "ROCKET",      "RUNNINGMAN",  "RUSTLER",      "RYDER",        "SCRATCHING",
  "SEX",          "SHAMAL",      "SHOP",        "SHOTGUN",      "SILENCED",
  "SKATE",        "SMOKING",      "SNIPER",      "SNM",          "SPRAYCAN",
  "STRIP",        "SUNBATHE",    "SWAT",        "SWEET",        "SWIM",
  "SWORD",        "TANK",        "TATTOOS",      "TEC",          "TRAIN",
  "TRUCK",        "UZI",          "VAN",          "VENDING",      "VORTEX",
  "WAYFARER",    "WEAPONS",      "WOP",          "WUZI"
};

Código:
stock CarregarAnims(playerid) {
  for(new i = 0; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}

Em quatro partes ao invés de 2?
Código:
stock CarregarAnims1(playerid) {
  new END = sizeof(AnimLibs) / 2;
  for(new i = 0; i < END; i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}
stock CarregarAnims2(playerid) {
  new START = sizeof(AnimLibs) / 2;
  for(new i = START; i < sizeof(AnimLibs); i++) {
      ApplyAnimation(playerid, AnimLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  }
  return 1;
}

Você pode dividir em enum's diferentes. AnimLibs1, AnimLibs2... etc. Daí você faz o processo normal da stock.

Como assim? Desculpa eu não entendi...


RE: Carregar animações pra sincronizar sem logar - xbruno1000x - 07/05/2022

Você precisa dividir manualmente, como eu fiz abaixo:

Código:
new const AnimLibs[][] = {
  "JST_BUISNESS", "KART",        "KISSING",
  "KNIFE",        "LAPDAN1",      "LAPDAN2",      "LAPDAN3",      "LOWRIDER",
  "MD_CHASE",    "MD_END",      "MEDIC",        "MISC",        "MTB",
  "MUSCULAR",    "NEVADA",      "ON_LOOKERS",  "OTB",          "PARACHUTE",
  "PARK",        "PAULNMAC",    "PED",          "PLAYER_DVBYS", "PLAYIDLES",
  "POLICE",      "POOL",        "POOR",        "PYTHON",      "QUAD",
  "QUAD_DBZ",    "RAPPING",      "RIFLE",        "RIOT",        "ROB_BANK",
  "ROCKET",      "RUNNINGMAN",  "RUSTLER",      "RYDER",        "SCRATCHING",
  "SEX",          "SHAMAL",      "SHOP",        "SHOTGUN",      "SILENCED",
  "SKATE",        "SMOKING",      "SNIPER",      "SNM",          "SPRAYCAN",
  "STRIP",        "SUNBATHE",    "SWAT",        "SWEET",        "SWIM",
  "SWORD",        "TANK",        "TATTOOS",      "TEC",          "TRAIN",
  "TRUCK",        "UZI",          "VAN",          "VENDING",      "VORTEX",
  "WAYFARER",    "WEAPONS",      "WOP",          "WUZI"
};

new const AnimLibs2[][] = {
  "AIRPORT",      "ATTRACTORS",  "BAR",          "BASEBALL",    "BD_FIRE",
  "BEACH",        "BENCHPRESS",  "BF_INJECTION", "BIKE_DBZ",    "BIKED",
  "BIKEH",        "BIKELEAP",    "BIKES",        "BIKEV",        "BLOWJOBZ",
  "BMX",          "BOMBER",      "BOX",          "BSKTBALL",    "BUDDY",
  "BUS",          "CAMERA",      "CAR",          "CAR_CHAT",    "CARRY",
  "CASINO",      "CHAINSAW",    "CHOPPA",      "CLOTHES",      "COACH",
  "COLT45",      "COP_AMBIENT",  "COP_DVBYZ",    "CRACK",        "CRIB",
  "DAM_JUMP",    "DANCING",      "DEALER",      "DILDO",        "DODGE",
  "DOZER",        "DRIVEBYS",    "FAT",          "FIGHT_B",      "FIGHT_C",
  "FIGHT_D",      "FIGHT_E",      "FINALE",      "FINALE2",      "FLAME",
  "FLOWERS",      "FOOD",        "FREEWEIGHTS",  "GANGS",        "GFUNK",
  "GHANDS",      "GHETTO_DB",    "GOGGLES",      "GRAFFITI",    "GRAVEYARD",
  "GRENADE",      "GYMNASIUM",    "HAIRCUTS",    "HEIST9",      "INT_HOUSE",
  "INT_OFFICE",  "INT_SHOP"
};

Creio que da forma que eu havia enviado anteriormente seja mais fácil.


RE: Carregar animações pra sincronizar sem logar - hiwyn - 11/05/2022

(07/05/2022 14:34)xbruno1000x Escreveu: Você precisa dividir manualmente, como eu fiz abaixo:

Código:
new const AnimLibs[][] = {
  "JST_BUISNESS", "KART",        "KISSING",
  "KNIFE",        "LAPDAN1",      "LAPDAN2",      "LAPDAN3",      "LOWRIDER",
  "MD_CHASE",    "MD_END",      "MEDIC",        "MISC",        "MTB",
  "MUSCULAR",    "NEVADA",      "ON_LOOKERS",  "OTB",          "PARACHUTE",
  "PARK",        "PAULNMAC",    "PED",          "PLAYER_DVBYS", "PLAYIDLES",
  "POLICE",      "POOL",        "POOR",        "PYTHON",      "QUAD",
  "QUAD_DBZ",    "RAPPING",      "RIFLE",        "RIOT",        "ROB_BANK",
  "ROCKET",      "RUNNINGMAN",  "RUSTLER",      "RYDER",        "SCRATCHING",
  "SEX",          "SHAMAL",      "SHOP",        "SHOTGUN",      "SILENCED",
  "SKATE",        "SMOKING",      "SNIPER",      "SNM",          "SPRAYCAN",
  "STRIP",        "SUNBATHE",    "SWAT",        "SWEET",        "SWIM",
  "SWORD",        "TANK",        "TATTOOS",      "TEC",          "TRAIN",
  "TRUCK",        "UZI",          "VAN",          "VENDING",      "VORTEX",
  "WAYFARER",    "WEAPONS",      "WOP",          "WUZI"
};

new const AnimLibs2[][] = {
  "AIRPORT",      "ATTRACTORS",  "BAR",          "BASEBALL",    "BD_FIRE",
  "BEACH",        "BENCHPRESS",  "BF_INJECTION", "BIKE_DBZ",    "BIKED",
  "BIKEH",        "BIKELEAP",    "BIKES",        "BIKEV",        "BLOWJOBZ",
  "BMX",          "BOMBER",      "BOX",          "BSKTBALL",    "BUDDY",
  "BUS",          "CAMERA",      "CAR",          "CAR_CHAT",    "CARRY",
  "CASINO",      "CHAINSAW",    "CHOPPA",      "CLOTHES",      "COACH",
  "COLT45",      "COP_AMBIENT",  "COP_DVBYZ",    "CRACK",        "CRIB",
  "DAM_JUMP",    "DANCING",      "DEALER",      "DILDO",        "DODGE",
  "DOZER",        "DRIVEBYS",    "FAT",          "FIGHT_B",      "FIGHT_C",
  "FIGHT_D",      "FIGHT_E",      "FINALE",      "FINALE2",      "FLAME",
  "FLOWERS",      "FOOD",        "FREEWEIGHTS",  "GANGS",        "GFUNK",
  "GHANDS",      "GHETTO_DB",    "GOGGLES",      "GRAFFITI",    "GRAVEYARD",
  "GRENADE",      "GYMNASIUM",    "HAIRCUTS",    "HEIST9",      "INT_HOUSE",
  "INT_OFFICE",  "INT_SHOP"
};

Creio que da forma que eu havia enviado anteriormente seja mais fácil.


Valeu mano, obrigado!