• 06 Juin 2026, 17:29:29


Auteur Sujet: Fonction pour attacher un joueur a un autre  (Lu 1737 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Fonction pour attacher un joueur a un autre
« le: 05 Février 2010, 12:24:12 »
Bonjour,

J'aimerai savoir si il existe une fonction pour attacher un joueur a un autre.

Merci d'avance
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #1 le: 05 Février 2010, 12:59:07 »
Il n' y a pas de fonction pour ^^
Mais tu peut te la codé en utilisant OnPlayerUpdate



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #2 le: 05 Février 2010, 13:15:26 »
Ce ne sera as asser fluide, la marche sera sacadée :/
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #3 le: 05 Février 2010, 13:36:24 »
#include <a_samp>


new AttachedTo[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
AttachedTo[playerid] = -1;
}

public OnPlayerDisconnect(playerid,reason)
{
AttachedTo[playerid] = -1;
}


public OnPlayerUpdate(playerid)
{
AttachPlayer_Update_Function(playerid);
}


forward AttachPlayerToPlayer(playerid,To_Player);
public AttachPlayerToPlayer(playerid,To_Player)
{
if(IsPlayerConnected(playerid) && IsPlayerConnected(To_Player))
{
AttachedTo[playerid] = To_Player;
return true;
}
return false;
}

forward AttachPlayer_Update_Function(playerid);
public AttachPlayer_Update_Function(playerid)
{
if(AttachedTo[playerid] != -1)
{
if(IsPlayerConnected(AttachedTo[playerid])){AttachedTo[playerid] = -1; return false;}
new Float:p[3];
GetPlayerPos(AttachedTo[playerid],p[0],p[1],p[2]);
SetPlayerPos(playerid,p[0],p[1],p[2]);
}
return false;
}

forward DettachPlayerToPlayer(playerid);
public DettachPlayerToPlayer(playerid)
{
AttachedTo[playerid] = -1;
}


Tien je vient juste de le codé sans testé ^^ normalement c' est bon et c' est hyper fluide enfin c' est la meilleur fluidité possible sur samp



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #4 le: 05 Février 2010, 15:14:50 »
Salut,

ouais c'est pas mal, mais tu n'as pas tenu compte de la possibilité de mettre un Offset (comme pour les objets) et tu as fais une petite erreur dans la fonction mère, tu détache le joueur si le joueur auquel il est attaché est connecté
voici à peu près comment je le ferais
(peut-être qu'un TogglePlayerControllable et un calcul de la vitesse (avec SetPlayerVelocity) pourrait permettre un résultat acceptable)

#include <a_samp>


new AttachedTo[MAX_PLAYERS];
new Float:p_OffX[MAX_PLAYERS];
new Float:p_OffY[MAX_PLAYERS];
new Float:p_OffZ[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
AttachedTo[playerid] = -1;
}

public OnPlayerDisconnect(playerid,reason)
{
AttachedTo[playerid] = -1;
}


public OnPlayerUpdate(playerid)
{
AttachPlayer_Update_Function(playerid);
return 1;
}


forward AttachPlayerToPlayer(playerid,To_Player, Float:OffX, Float:OffY, Float:OffZ);
public AttachPlayerToPlayer(playerid,To_Player, Float:OffX, Float:OffY, Float:OffZ)
{
if(IsPlayerConnected(playerid) && IsPlayerConnected(To_Player))
{
AttachedTo[playerid] = To_Player;
p_OffX[playerid] = OffX;
p_OffY[playerid] = OffY;
p_OffZ[playerid] = OffZ;
return true;
}
return false;
}

AttachPlayer_Update_Function(playerid)
{
if(AttachedTo[playerid] != -1)
{
if(IsPlayerConnected(AttachedTo[playerid]))
{
new Float:X, Float:Y, Float:Z, Float:Angle;
GetPlayerPos(AttachedTo[playerid], X, Y, Z);
if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleZAngle(GetPlayerVehicleID(AttachedTo[playerid]), Angle);
}
else
{
GetPlayerFacingAngle(AttachedTo[playerid], Angle);
}
X += floatcos(Angle, degrees) * p_OffX[playerid] - floatsin(Angle, degrees) * p_OffY[playerid];
Y += floatsin(Angle, degrees) * p_OffX[playerid] + floatcos(Angle, degrees) * p_OffY[playerid];
Z += p_OffZ[playerid];
SetPlayerPos(playerid, X, Y, Z);
GetPlayerVelocity(AttachedTo[playerid], X, Y, Z);
SetPlayerVelocity(playerid, X, Y, Z);
return true;
}
else
{
AttachedTo[playerid] = -1;
}
}
return false;
}

forward DettachPlayerFromPlayer(playerid);
public DettachPlayerFromPlayer(playerid)
{
AttachedTo[playerid] = -1;
return true;
}

bien sûr c'est loin d'être parfait
d'ailleurs je suis loin d'être sur en ce qui concerne les cos et sin, je les ai fait en essayant de le voir dans ma tête alors ce n'est pas évident...

++Sim++
« Modifié: 05 Février 2010, 18:33:12 par Sim »





Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #5 le: 05 Février 2010, 15:53:40 »
Autant la fonction de Sasuke j'ai tout compris, autant la tienne sim je n'ai rien compris :D

Double post
Par contre pour faire une commande avec ça xD

Comme je n'arrive pas avec la fonction de Sim, j'ai essayer avec celle de Sasuke, ça donne

if(strcmp(cmd, "/attach", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /attach [playerid/PartOfName]");
return 1;
}
new playa;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >=1)
{
    if(IsPlayerConnected(playa))
    {
        if(playa != INVALID_PLAYER_ID)
        {
        AttachPlayerToPlayer(playerid,playa);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas autorisé à utiliser cette commande!");
}
}
return 1;
}

Mais elle ne fonctionne pas, alors la je me tâte aiis je réellement compris ta fonction? xD

 :dejadehors

Merci pour votre aide
« Modifié: 05 Février 2010, 15:59:04 par scott1 »
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #6 le: 05 Février 2010, 16:18:12 »
Béh celle de sim c' est une amélioration de ma fonction il à ajouté des offset pour par exemple Si tu veut que le joueur 1 soit collé au 2 mais qu' il y est une distance de 2 M qui les sépare, il a aussi implanté la vitesse de déplacement mais j' aurais préféré prend celle du joueur 2 pis la Mettre à celle du joueur 1 ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #7 le: 05 Février 2010, 16:32:00 »
Ok merci.

J'ai donc pris celle de Sim ^^

Seulement le soucis, quand je compile

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(57) : error 017: undefined symbol "OffX"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(57) : warning 215: expression has no effect
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(57) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(57) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(57) : fatal error 107: too many error messages on one line

Et si je rajoute new Float:OffX[MAX_PLAYERS];
new Float:OffY[MAX_PLAYERS];
new Float:OffZ[MAX_PLAYERS];

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(31) : warning 219: local variable "OffX" shadows a variable at a preceding level
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(31) : warning 219: local variable "OffY" shadows a variable at a preceding level
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\Bon serv\filterscripts\Attachplayertoplayer2.pwn(31) : warning 219: local variable "OffZ" shadows a variable at a preceding level

La je n'ais pas compris l'erreur xD, je ne vois as de conflict :/
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #8 le: 05 Février 2010, 17:52:59 »
Salut,

pas besoin, j'avais seulement fais une petite erreur, oublié une partie du nom de mes varaibles, le p_
j'ai corrigé te suffit de la reprendre

++Sim++





Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #9 le: 05 Février 2010, 18:27:16 »
Pour celui qui aimerai la fonction de Sim, attention, une petite erreur. u a oublié un I

AttachPlayer_Update_Function(playerid)
{
if(AttachedTo[playerid] != -1)
{
if(sPlayerConnected(AttachedTo[playerid]))
{

par

AttachPlayer_Update_Function(playerid)
{
if(AttachedTo[playerid] != -1)
{
if(IsPlayerConnected(AttachedTo[playerid]))
{

S'est bien gentil, je n'ai plus qu'a travailler sur la commande. La tache s'annonce ardue xD

Merci !
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #10 le: 05 Février 2010, 19:43:32 »
Ardu? lol Au contraire



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Fonction pour attacher un joueur a un autre
« Réponse #11 le: 05 Février 2010, 20:15:35 »
Hey on est pas tous de grand maitre en pawn
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction