GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: natsu00 le 02 Avril 2013, 17:12:28

Titre: système d'alliance
Posté par: natsu00 le 02 Avril 2013, 17:12:28
salut,
je suis à la recherche d'idée sympa pour mon serveur, je ne viens pas demandé ici un code tout fait non mais juste savoir si quelques chose et posssible et comment.

je souhaite en effet créé sur mon serveur normalement 1 VS 1 en gros chacun pour soit, un système d'alliance, c'est à dire qu'il font parti d'une même équipe (par exemple ils changent de skin, ou juste un message d'alerte) et surtout ne peuvent plus se tirer dessus (c'est possible?)
j'ai deja fait un systeme pour donner de l'argent, manque pus qu'une officialisation d'une alliance, genre"... et ... sont allié !"

je sais pas si vous avez compris ^^ je ne veux surtout pas faire un concept gang war étant donné qu'on est pas beaucoup dessus mais juste pour etre 2-3
merci une idée?

(j'ai aussi mis un systeme de mp donc pas de soucis)

EDIT : et aussi que le 1er joueur qui rejoins la team, choisit un mot de passe que devra entrer les autres joueurs pour join
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 17:40:45
en ce qui concerne le fait d'empecher les dommage dans la même team tu peux avoir ça
http://wiki.sa-mp.com/wiki/SetPlayerTeam (http://wiki.sa-mp.com/wiki/SetPlayerTeam)
tous les pplayers de la même team sont incapable de s'entretuer (sauf si il s'egorge a coup de couteau d'après la note).

pour le mot de passe il suffi que celui qui fera une commande type /createalliance nomTeam
si celle ci n'est pas déjà crée de demander un nouveau pass.
Titre: Re : système d'alliance
Posté par: natsu00 le 02 Avril 2013, 17:48:27
ok merci beaucoup par contre je n'ai pas très bien compris la deuxieme partie

"pour le mot de passe il suffi que celui qui fera une commande type /createalliance nomTeam
si celle ci n'est pas déjà crée de demander un nouveau pass."

je souhaite en effet mettre un mot de passe, mais il faut utiliser quelle commande?
et pour la commande type, je sais la faire avec une commande genre /v et ca ouvre un truc
mais avec le nom qui varie non...
quelqu'un peut m'expliquer merci  :happy:
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 17:54:24
Bien enfaite y'as plusieurs solutions tout dépend de divers paramètres XD.
Solution 1 : Stockage dans un tableau des noms de team si quand un mec tape /CreateTeam NomTeam (Nom de Team etant une variable tu peux la récuperé directement ou en passant par une boite de dialogue) si le nom est déjà dans le tableau alors tu dit au joueur que la team existe déjà sinon tu la crée et tu fait appraitre une 2e boite de dialogue avec une demande de mot de passe que tu stocke dans un autre tableau avec comme indice le nom de la team .
Le problème de cet solution c'est que en cas de redémarrage serveur tout est reset (pas de sauvegarde des valeurs).
c'est pas forcément idéal sauf si tes alliances ne sont pas voué a durée dans le temps.

la solution 2 qui est identique sauf que au lieu de stocker tes valeurs dans un tableau tu les stock dans un fichier texte.

Solution 3 remplacer le fichier texte par une base sql
Titre: Re : système d'alliance
Posté par: natsu00 le 02 Avril 2013, 18:38:57
bha j'aimerai avoir une liste de team dans une boite de dialogue (je sais faire) et quand le 1er choisi une des teams, ils demandent un mot de passe choisi par le createur de la team, possible?
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 18:50:57
Oui en passant toujours par la même méthode sauf que ton tableau qui contiendra le nom des teams sera fixe.
Titre: Re : système d'alliance
Posté par: natsu00 le 02 Avril 2013, 19:13:19
Ok comoment je faid un système de mots de passe ? Des qu'il est choisi on le rentré....?
Merci x)
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 19:20:18
un tableau vide ayant le meme nombre de case que celui des teams.
dans lequel si aucun pass et setter et demander au moment de rejoindre puis quand tous les joueurs ont quitté la team un reset a blanc du password.

P.S:
Je ne compte pas écrire de pawn.
Je n'ai plus forcément toutes les habitude du c pour écrire correctement.
Je suis sur le codage Web a cause du boulot (PHP MySql ,Javascript ...).
Après sur le fonctionnement d'un système les principes sont les mêmes

Et puis si tu trouve par toi-même tu en sera d'autant plus satisfait ;)

Titre: Re : système d'alliance
Posté par: Ssk le 02 Avril 2013, 19:59:42
Ce qui dit rafffel est bon, par contre je privilégierai plus le fait d'aller lire le pass de ton alliance dans le fichier ou la BDD puis de le comparer au mot de passe entré.

Car on est limité à la déclaration de variable statique en pawn, on peut pas (du moins sans tricher) allouer de la mémoire pour une centaine de team lol.
Titre: Re : système d'alliance
Posté par: natsu00 le 02 Avril 2013, 20:06:31
ok je voulais juste savoir comment on fait un mot de passe?
on le créé?
comment on le reset? c'est tout apres faire la boite de dialogue je sais faire
ecrire une commande je sais faire


je veux faire ça :

/jointeam


un tableau avec 5-6 team quand on clique sur un (je sais faire)ca demande un mot de passe, (je sais pas faire) , un message s'affiche pour tout le monde (je sais faire) et on peut plus s'entretuer entres team(maintenant je sais faire )


voila donc juste comment on fait un systeme de pass?, au pire pas besoin de compliquer juste savoir comment on le demande et on faire la variable si le mot de passe est bon alors ....

merci beaucoup je sais j'ai parfois des idées bizarres
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 20:39:56
Tu ne sais pas faire une simple boite de dialogue qui demande un mot de passe?
car il suffit une fois que l'utilisateur a choisi une team d'aller vérifier dans le fichier ou le tableau si un mot de passe est affecté.
Si il ne l'est pas tu affiche une boite de dialogue de demande de nouveaux mot de passe.
sinon tu demande le mot de passe et tu compare avec celui affecté.
et pour le reset ben tu lui met la valeur null ou tu met une string sans caractère a la place de l'ancien mot de passe.

Et comme ssk l'as dit il est en général préférable de travailler sur fichier ou BDD pour ce genre de travail
Titre: Re : système d'alliance
Posté par: natsu00 le 02 Avril 2013, 20:53:09
Oui j'ai compris j'ai trouvert un truc mais je voudrai seulement savoir comment on fait pour ddemander un mot de passe ? Quelle fonction en script pour afficher une fenêtre de chat après avoir choisit là teams ?
Et quelle fonction pour dire
Id le mot de passe est vrai
Alors


Merci !
Titre: Re : système d'alliance
Posté par: rafffel le 02 Avril 2013, 21:21:07
http://wiki.sa-mp.com/wiki/SendClientMessage (http://wiki.sa-mp.com/wiki/SendClientMessage)
http://wiki.sa-mp.com/wiki/ShowPlayerDialog (http://wiki.sa-mp.com/wiki/ShowPlayerDialog)
http://wiki.sa-mp.com/wiki/Dialog (http://wiki.sa-mp.com/wiki/Dialog)

XD
Titre: Re : système d'alliance
Posté par: Ssk le 02 Avril 2013, 22:26:36
Fais un minimum de recherche et tu as tout ce que tu veux.
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 07:23:23
Ha merci
J'ai trouce comment on faut un password avec la.fonotion onedialoguereponse je lavais pas vu sur le wiki voici la fonction[
[Spoiler] // In some command ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Please enter your password:", "Login", "Cancel");

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_LOGIN) { if(!response) // If they clicked 'Cancel' or pressed esc { SendClientMessage(playerid, COLOR_RED, "You MUST login to play here. Please change your name."); Kick(playerid); } else // Pressed ENTER or clicked 'Login' button { if(CheckPassword(playerid, inputtext)) { SendClientMessage(playerid, COLOR_RED, "You are now logged in!"); } else { SendClientMessage(playerid, COLOR_RED, "LOGIN FAILED.");

// Re-show the login dialog ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Please enter your password:", "Login", "Cancel"); } } return 1; // We handled a dialog, so return 1. Just like OnPlayerCommandText. }

return 0; // You MUST return 0 here! Just like OnPlayerCommandText. [Spoiler]
Titre: Re : système d'alliance
Posté par: Gzsume le 03 Avril 2013, 11:29:43
Oui enfin, je te conseille quand-même d'indenter ton code. Ce sera plus lisible. ;)
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 11:35:40
oui parce que la je comprend pas tout,
donc je fait
-commande /jointeam (oneplayercommand un truc comme ca mais je sais ^^)
-une boite de dialogue pour le nom des team (onedialoguereponse)
-on clique sur ne team === >  nouvelle boite de dialogue avec un mot de passe
-si le mot de passe est bon alors
-le joueur rejoins la team (message ) et ne peut plus tirer sur ses coequipier, et un message


Par contre je l'a créé comment la team? faut bien que j'attribue la team aux joueurs?
merci je sais je suis nul
Titre: Re : système d'alliance
Posté par: Gzsume le 03 Avril 2013, 11:47:26
Tu crées un tableau de cette forme :
Code: (pawn) [Sélectionner]
new TeamJoueur[MAX_PLAYERS] = {0};Ceci va créer un tableau d'une case, et d'un nombre de lignes égal au nombre maximum de joueurs. Pour attribuer une team à un joueur, tu feras :
Code: (pawn) [Sélectionner]
TeamJoueur[playerid] = TEAM_BALLAS;Ce n'est qu'un exemple, et tu peux utiliser des chiffres plutôt que des directives de préprocesseur (dans mon exemple, ça requiert un #define TEAM_BALLAS 1 en haut de ton script, et pour les autres teams, tu modifie le 1 en 2, puis 3...).
Enfin, pour la vérification de l'équipe...
Code: (pawn) [Sélectionner]
if(TeamJoueur[playerid] == TEAM_BALLAS) { ... }C'est aussi simple que ça.

Sinon, une autre technique (dont je ne suis plus très sûr, vérifies sur le wiki que les fonctions existent) consiste à utiliser SetPlayerTeam(playerid, teamid) et GetPlayerTeam(playerid). Tu évites ainsi de consommer de la mémoire avec un tableau. Les tirs alliés seront impossibles avec cette technique.

EDIT - Après vérification, cette seconde technique fonctionne. Je ne me souvenais plus de si les fonctions étaient présentes nativement sous SA:MP ou non. Voici les liens vers le wiki :
Enfin, pour un meilleur fonctionnement en interne du serveur, tu peux utiliser SetTeamCount (http://wiki.sa-mp.com/wiki/SetTeamCount), dans la callback OnGameModeInit(). C'est recommandé, mais pas obligatoire.
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 12:13:59
Ok merci beaucoup pour ton explcitation clair ! Je vais y réfléchir et le fairé apres !
Ensuite e ferai le mor de passe mas je préfère finir les team sans mot de passe on vera après merci
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 15:06:29
hum sur un tout autres sujet j'ai un probleme pour enregistrer avec samp editor, je fait show code, je le met dans mon gamemode? si oui bha quand je fait import avec le logiciel il le reconnait mais dans le jeu rien n'est modifier....
merci
Titre: Re : système d'alliance
Posté par: Ssk le 03 Avril 2013, 15:07:38
Les doubles post sont interdits !
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 15:23:37
ha oui désolé x)
j'ai trouvé je l'avais pas mis dans oneplayerconnect  :happy:

quelqu'un connais la solution pour ajouter de l'eau ?
Titre: Re : système d'alliance
Posté par: vincentdu90 le 03 Avril 2013, 16:06:19
Ça n'est possible que sur MTA pas sur SA:MP.  :wink:
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 17:51:04
ok c'est dommage ^^
Titre: Re : Re : système d'alliance
Posté par: Infu le 03 Avril 2013, 20:08:29
j'ai trouvé je l'avais pas mis dans oneplayerconnect  :happy:



Non mais à la base, le mapping c'est mieux de le charger au lancement du gamemode ^^
Titre: Re : système d'alliance
Posté par: natsu00 le 03 Avril 2013, 20:35:47
ok merci je vais rectifier !
Titre: Re : système d'alliance
Posté par: natsu00 le 05 Avril 2013, 17:18:43
bonjour,
j'ai un nouveau probleme, je viens de terminer mon aréne et maintenant je vais enregistrer des positions, donc je vais sur mon serveur et je vais sur mon aréne et j'enregistre avec /save position...

mais quand je rentre les positions dans mon gamemod, bha y a rien qui marche; ca ce compile mais avec 1 warning et surtout il me teleporte dans le ciel et je tombe au nord de las ventura....

qui soais pourquoi?

ensuite je souhaite désactiver le marqueur donc pour cela j'utilise cette fonction
http://wiki.sa-mp.com/wiki/SetPlayerMarkerForPlayer (http://wiki.sa-mp.com/wiki/SetPlayerMarkerForPlayer)

mais le probleme c'est que je veux pas activer un id en particulier mais désactiver pour tous les joueurs ?
comment je fais? merci
Titre: Re : système d'alliance
Posté par: Kiloutre le 05 Avril 2013, 17:28:00
Tu utilises une boucle qui va passer par tout les joueurs :

for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        //L'action que tu veux effectuer
    }
}

(Si tu es dans une callback où l'id playerid est déjà défini, tu changes le nom de la variable dans la boucle par "id", où comme tu veux, mais n'oublie pas de tout remplacer dans la boucle, y compris l'id inscrit dans la fonction.
Exemple d'utilisation :

for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        SendClientMessage(playerid, #FFFFFF, "Ce message a été envoyé a tout les joueurs");
    }
}
Titre: Re : système d'alliance
Posté par: natsu00 le 05 Avril 2013, 17:42:28
ok cool merci beaucoup,
mais je souhaiterais desactiver
donc je met ta boucle, mais la fonction je me laquelle ?
parce que setplayermarker ne fonctionne pas car elle active le marker e moi je veux les désactiver
merci
Titre: Re : Re : système d'alliance
Posté par: vincentdu90 le 05 Avril 2013, 18:12:18
Tu utilises une boucle qui va passer par tout les joueurs :

for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        //L'action que tu veux effectuer
    }
}

(Si tu es dans une callback où l'id playerid est déjà défini, tu changes le nom de la variable dans la boucle par "id", où comme tu veux, mais n'oublie pas de tout remplacer dans la boucle, y compris l'id inscrit dans la fonction.
Exemple d'utilisation :

for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        SendClientMessage(playerid, #FFFFFF, "Ce message a été envoyé a tout les joueurs");
    }
}

Bonjour,

    Attention tout de même de penser à initialiser playerid à 0.

Code: (Pawn) [Sélectionner]

for(new playerid = 0; playerid <= MAX_PLAYERS; playerid++)

Titre: Re : système d'alliance
Posté par: natsu00 le 05 Avril 2013, 18:24:37
ok dac donc là j'ai ma commande mais celle ci est dans le sens
desactiver ==> désactiver

moi je veux l'inverse, pouvoir la désactiver, or dans gamemod init il est noté ceci
 ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);


je dois le laisser car je ne joue pas toujours en arene, je veux juste connaitre la commande our désactiver et quand il respawn, l'activer

j'ai essayer avec
ShowPlayerMarkers(0);

mais vu qu'il y a dans le gamemod  ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
cela ne fonctionne pas, je voudrai que lorsqu'il soit teleporte dans l'arene (ou au pire je rentre une commande) le marqueur se désactive
merci


edit: je viens d'essayer de le faire mais ca marche pas.
.. vous moquez pas je tente au moins  :king:


[spoiler]public OnPlayerCommandText(playerid, cmdtext[])
{
   if (strcmp("/marqueur", cmdtext, true, 10) == 0)
   {
      for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        SetPlayerMarkerForPlayer( 42, 1, 00 );
    }
}
      return 1;
   }
   if (strcmp("/nonmarqueur", cmdtext, true, 10) == 0)
   {
      for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
    if(IsPlayerConnected(playerid))
    {
        ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
    }
}
      return 1;
   }
   return 0;
}[/spoiler]

bon il est effectivement nul ^^ je vais reflechir comment inverser la commande mais j'en sais rien...
Titre: Re : système d'alliance
Posté par: Kiloutre le 05 Avril 2013, 20:13:19
Essaie avec PLAYER_MARKERS_MODE_OFF  :happy:

Bon et déjà je vais identer un peu ton code pour qu'il soit plus lisible  :closedeyes:

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/marqueur", cmdtext, true, 10) == 0)
    {
        for(new playerid; playerid <= MAX_PLAYERS; playerid++)
        {
            if(IsPlayerConnected(playerid))
           {
               SetPlayerMarkerForPlayer( 42, 1, 00 );
           }
        }
      return 1;
   }

   if (strcmp("/nonmarqueur", cmdtext, true, 10) == 0)
   {
       for(new playerid; playerid <= MAX_PLAYERS; playerid++)
      {
          if(IsPlayerConnected(playerid))
          {
              ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
          }
      }
      return 1;
   }
   return 0;
}

Là, tu veux activer où désactiver le marqueur pour tout les joueurs si j'ai bien compris ?
Titre: Re : système d'alliance
Posté par: vincentdu90 le 05 Avril 2013, 20:19:32
Dans le Wiki :

Code: (Pawn) [Sélectionner]

// Make the players marker invisible to the player while keeping chat colour the same. Will only work correctly if SetPlayerColor has been used:
SetPlayerMarkerForPlayer( 42, 1, ( GetPlayerColor( 1 ) & 0xFFFFFF00 ) );


Ça rend le marqueur du joueur invisible sans changer la couleur dans le tchat, et ça ne fonctionne que si tu as utilisé SetPlayerColor auparavant.
Titre: Re : système d'alliance
Posté par: natsu00 le 05 Avril 2013, 20:27:26
ok merci d'avoir simplifier mon code x)

donc ca donne ça ??

[spoiler]
Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/marqueur", cmdtext, true, 10) == 0)
    {
        for(new playerid; playerid <= MAX_PLAYERS; playerid++)
        {
            if(IsPlayerConnected(playerid))
           {
           SetPlayerColor(playerid, 0xFFFF00AA);
               ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);
           }
        }
      return 1;
   }

   if (strcmp("/nonmarqueur", cmdtext, true, 10) == 0)
   {
       for(new playerid; playerid <= MAX_PLAYERS; playerid++)
      {
          if(IsPlayerConnected(playerid))
          {
          SetPlayerColor(playerid, 0xFFFF00AA);
              ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
          }
      }
      return 1;
   }
   return 0;
}
[/spoiler]

comme ca j'ai mis la commande setplayercolor comme tu m'as dit ?
je veux juste une commande pour activer et desactiver le marqueur c'est tout ^^

merci x) je sais je suis nul mais je le fait pas exprès je cherche!
Titre: Re : système d'alliance
Posté par: natsu00 le 07 Avril 2013, 10:55:31
je me permet de faire un up car je ne sais toujours pas si mon pawn est correct, il se compile
Titre: Re : système d'alliance
Posté par: rafffel le 07 Avril 2013, 11:09:24
tu l'as testé en jeu?
si oui et qu'il semble réagir comme tu le souhaite c'est que certainement bon.
Titre: Re : système d'alliance
Posté par: natsu00 le 07 Avril 2013, 11:18:43
alors non dès que je rentre /nonmarqueur bha ca met tous les marqueurs en jaune  :unsure: mais pas invisible...
Titre: Re : système d'alliance
Posté par: rafffel le 07 Avril 2013, 11:23:56
T'as peut être inversée les 2 ShowPlayerMarkeralors.

car /nonmarqueur a un ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);

 PLAYER_MARKERS_MODE_GLOBAL vaut 1 est donc affichera des marqueurs.

et /marqueurs c'est l'inverse tu as mis  ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);

PLAYER_MARKERS_MODE_OFF qui vaut 0 est qui surement fait disparaître les marqueurs
Titre: Re : système d'alliance
Posté par: natsu00 le 07 Avril 2013, 11:29:48
/nonmarqueur ==> marqueur jaune

/marqueur ===> rien dutout

edit: 0xFFFF00AA c'est le code pour le jaune que je suis bête

bha je met quoi alors dedans? 0? si oui ca marche pas je sais vraiment pas je cherche pourtant

j'ai essaye avec plein de trucs mais rien

c'est quoi l'id de la couleur "invisible"?

j'ai trouvé ça
http://wiki.sa-mp.com/wiki/Colors_List (http://wiki.sa-mp.com/wiki/Colors_List)

mais la couleur 0xRRGGBB00 ne fonctionne pas
Titre: Re : système d'alliance
Posté par: natsu00 le 07 Avril 2013, 13:30:40
je me permet de creer un nouveau post pour montrer mon code qui fonctionne maintenant, j'ai en lisant, en anglais  :grin: trouvé que si on met 00 a la fin bha la couleur est invisible MAIS on ne peut toujours pas le reactiver
[spoiler]
Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/marqueur", cmdtext, true, 10) == 0)
    {
        for(new playerid; playerid <= MAX_PLAYERS; playerid++)
        {
            if(IsPlayerConnected(playerid))
           {
           ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
           }
        }
      return 1;
   }

   if (strcmp("/nonmarqueur", cmdtext, true, 10) == 0)
   {
       for(new playerid; playerid <= MAX_PLAYERS; playerid++)
      {
          if(IsPlayerConnected(playerid))
          {
          SetPlayerColor(playerid, 0xF4F7FCFF00);
          SetPlayerMarkerForPlayer( 42, 1, ( GetPlayerColor( 1 ) &0xF4F7FCFF00 ) );

       
          }
      }
      return 1;
   }
   return 0;
}
[/spoiler]
Titre: Re : système d'alliance
Posté par: rafffel le 07 Avril 2013, 14:48:38
il suffit de rechanger la couleur en changeant :
Code: (pawn) [Sélectionner]
if(IsPlayerConnected(playerid))
{
     ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
}
par
if(IsPlayerConnected(playerid))
{
           SetPlayerColor(playerid, 0xF4F7FCFF);
           ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
}

Par contre pour s'embetter avec la couleur alors qu'il suffirai de faire un ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL) pour afficher
et
ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF) pour désactiver tes marqueurs

car jouer avec la transparence pour afficher ou cacher c'est pas le top
Titre: Re : système d'alliance
Posté par: natsu00 le 07 Avril 2013, 15:02:51
je sais mais ca marchais pas x)
je vais tester merci x)

ok ca fonctionne tranquille par contre avant y a avait plusieurs couleurs de marqueurs, tandis que maintenant ils sont tous blanc, on peux changer ça?
Titre: Re : système d'alliance
Posté par: Interceptor le 08 Avril 2013, 10:49:36
Natsu le roi du doublepost  :king:
Titre: Re : système d'alliance
Posté par: Ssk le 08 Avril 2013, 11:06:51
Test avec ça

Code: (pawn) [Sélectionner]
if (strcmp("/marqueur", cmdtext) == 0)
{
for(new playerid; playerid <= MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid))
{
ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
SetPlayerColor(playerid, GetPlayerColor(playerid) | 0xFF);
}
}
return 1;
}
Titre: Re : système d'alliance
Posté par: rafffel le 08 Avril 2013, 12:08:35
euh ils seront toujours unicolor la non?
vu que tu fais une boucle du joueur 0 au max_Player et que tu met une seul couleur.
si tu veux différencier chaque gang par exemple il faut que dans cette boucle tu vienne voir l’appartenance d'un joueur a un gang et définir sa couleur en conséquence enfin je sens que l'on va te revoir bientôt en demandant comment l'on fait? XD
Titre: Re : système d'alliance
Posté par: natsu00 le 08 Avril 2013, 15:40:16
ouai merci  :king:

bha je vais testé ce soir avec un pot alors merci on verra bien!
merci x)
Titre: Re : système d'alliance
Posté par: vincentdu90 le 08 Avril 2013, 16:28:15
Si on reviens à ton problème , si tu souhaites que le quand le joueur entre dans un DM son marqueur devienne invisible tu devras faire dans ta commande :

Code: (Pawn) [Sélectionner]

new i = 0; //variable pour ta boucle for

for(i=0;i<MAX_PLAYERS;i++) //ta boucle pour appliquer le changement de curseur du [i]playerid[/i] à tous les joueurs connectés
{
    if(IsPlayerConnected(playerid))
    {
        SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );//ta fonction pour modifier le marqueur
    }
}


En ayant défini au préalable SetPlayerColor(); pour chaque joueur lorsque ce dernier Spawn ou se connecte par exemple.

Ensuite lorsque le joueur sort du DM tu lui appliques la même fonction ,de la même manière en changeant les paramètres ,en particulier le troisième ( tu supprimes "0xFFFFFF00" normalement).

Voilà , si j'ai pas dis de bétises  :smile:
Titre: Re : système d'alliance
Posté par: natsu00 le 08 Avril 2013, 16:59:54
okay je vais reflechir à ca merci beaucoup de vos conseils
 :happy:j'aurai surement d'autres question j'ai trop d'imagination ^^
Titre: Re : système d'alliance
Posté par: natsu00 le 09 Avril 2013, 17:24:42
bonjour
j'ai un petit soucis, pour les coordonnées d'un lieu, j'ai modifier ma map et j'ai mis un sphinx mais avec le debug bha il n'y est pas ^^ vu que dans le debug la map est pas modifer donc je ne peux pas enregistrer la poistion!
comment faire?
Titre: Re : système d'alliance
Posté par: Kiloutre le 09 Avril 2013, 19:34:27
Bah tu enregistres la position depuis ton serveur où est le mapping  :happy:
Titre: Re : système d'alliance
Posté par: natsu00 le 09 Avril 2013, 19:48:30
bha oui je l'ai fait depuis mon serveur mais....
quand je rentre les coordonnés dans mon gamemod, comme d'habitude quoi et il me teleporte ou??
bha dans le nord en l'air et je tom..........be
malheur  :mad:
Titre: Re : système d'alliance
Posté par: Kiloutre le 10 Avril 2013, 11:20:48
Tu veux te téléporter dans un bâtiment où dans un mapping ?
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 13:09:08
Dans le mapping c'est a dire lendroit que j ai modifié !


donc je l'ai refait et même constat
regardez voici le code dans le fichier des position:
AddPlayerClass(281,1744.9462,772.1533,26.8446,125.1994,0,0,0,0,0,0);
SetPlayerPos(SelectedPlayer[playerid],281,1744.9462,772.1533,26.8446,125.1994);

voila et bhen rien je me teleporte pas là....
Titre: Re : système d'alliance
Posté par: Infu le 10 Avril 2013, 14:13:15
Lol si tu donnes ton ID de skin pour te téléporter t'iras pas loin ^^'

Code: (pawn) [Sélectionner]
SetPlayerPos(SelectedPlayer[playerid],1744.9462,772.1533,26.8446,125.1994);
Là ça ira mieux
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 14:49:41
ha il faut retirer le premier nombre je savais pas je faisais pas comme ça ^^
merci
Titre: Re : système d'alliance
Posté par: vincentdu90 le 10 Avril 2013, 17:23:56
Oui car sur cette fonction le premier nombre (entier) correspond au modèle (skin)  :happy:.

(cf : AddPlayerClass() (http://wiki.sa-mp.com/wiki/AddPlayerClass) )
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 17:55:21
ok je suis un boulet merci beaucoup de m'eclairer dans mes questions idiotes ^^
 :bye:
Titre: Re : système d'alliance
Posté par: Kiloutre le 10 Avril 2013, 18:02:37
Mais non, c'est tout à fait normal de faire des erreurs pour un débutant, et même quelqu'un d'expérimenté, une faute d'inattention est vite arrivée  :rolleyes:
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 18:19:44
bon je viens de faire un script, encore et bha oui je m'entaine ^^
alors je veux que quand le rcon (admin) tape /arme bha il choisit l'arme à donner à tous les joueurs (pour mon arene)
Mais pour l'instant je comprend pas il ne donne pas d'arme mais le script est bon je pense

[spoiler]
Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/arme", cmdtext, true, 10) == 0)
{
if(IsPlayerAdmin(playerid))
     ShowPlayerDialog(playerid,999,DIALOG_STYLE_LIST,"{FF0000}Donner une arme","batte de baseball\nkatana\ntronconeuse\n9mm\ndesert eagle\nshootgun\nMP5\nM4\nlanceflamme\nsniper\nlance roquette\nC4\n{FF0000}Back","Donate","Cancel");
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(dialogid == 999 && response)
  {
switch(listitem)
    {
            case 0:
            {
               GivePlayerWeapon(playerid,5,1);
}
case 1:
{
   GivePlayerWeapon(playerid,8,1);
}
case 2:
{
    GivePlayerWeapon(playerid,9,1);
}
case 3:
{
    GivePlayerWeapon(playerid,22,500);
}
case 4:
{
       GivePlayerWeapon(playerid,24,500);
    }
case 5:
{
    GivePlayerWeapon(playerid,27,500);
    }
case 6:
{
    GivePlayerWeapon(playerid,29,500);
}
case 7:
{
GivePlayerWeapon(playerid,31,500);
}
case 8:
{
GivePlayerWeapon(playerid,37,500);
}
case 9:
{
GivePlayerWeapon(playerid,34,30);
}
case 10:
    {
GivePlayerWeapon(playerid,35,5);
}
case 11:
{
GivePlayerWeapon(playerid,39,10);
GivePlayerWeapon(playerid,40,1);
}
}
        }
return 1;
    }
return 0;
}
[/spoiler]

merci du fond du coeur ca prend du temps d'étudier un script et c'est gentil  :happy:
Titre: Re : système d'alliance
Posté par: Infu le 10 Avril 2013, 18:49:56
Tu as oublié une accolade, je te laisse deviner où :)
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 18:51:37
pour qu'il fonctionne?
pourtant il se compile non
Titre: Re : système d'alliance
Posté par: Infu le 10 Avril 2013, 18:59:55
Essaye avec les accolades qu'il te manque, je pense que ça devrait résoudre.
Titre: Re : système d'alliance
Posté par: vincentdu90 le 10 Avril 2013, 19:05:07
Le problème se trouve dans ta fonction pour donner l'arme  :biggrin:
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 19:53:00
ok je m'en doutais ^^

comme ceci ?

[spoiler]public OnPlayerCommandText(playerid, cmdtext[])
{
   if (strcmp("/arme", cmdtext, true, 10) == 0)
   {
    if(IsPlayerAdmin(playerid))
     ShowPlayerDialog(playerid,999,DIALOG_STYLE_LIST,"{FF0000}Donner une arme","batte de baseball\nkatana\ntronconeuse\n9mm\ndesert eagle\nshootgun\nMP5\nM4\nlanceflamme\nsniper\nlance roquette\nC4\n{FF0000}Back","Donate","Cancel");
    return 1;
   }
   return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(dialogid == 222){
if(!response){
SendClientMessage(playerid, -1, "You canceled");}
switch(listitem){
               case 0:{
               GivePlayerWeapon(playerid,5,1);}
            case 1:{
               GivePlayerWeapon(playerid,8,1);}
            case 2:{
                GivePlayerWeapon(playerid,9,1);}
            case 3:{
                GivePlayerWeapon(playerid,22,500);}
            case 4:{
       GivePlayerWeapon(playerid,24,500);}
            case 5:{
    GivePlayerWeapon(playerid,27,500);}
            case 6:{
    GivePlayerWeapon(playerid,29,500);}
            case 7:{
            GivePlayerWeapon(playerid,31,500);}
            case 8:{
            GivePlayerWeapon(playerid,37,500);}
            case 9:{
            GivePlayerWeapon(playerid,34,30);}
            case 10:{
            GivePlayerWeapon(playerid,35,5);}
            case 11:{
            GivePlayerWeapon(playerid,39,10);
            GivePlayerWeapon(playerid,40,1);}}}
return 1;}
return 0;}[/spoiler]

bh ca marche toujourrs pas, je vois la boite de dialogue mais quand je selectionne une arme bha je reste sans rien, vulnérable... :kiss:
Titre: Re : système d'alliance
Posté par: Infu le 10 Avril 2013, 20:05:20
c'est pire  :laugh:
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 20:06:10
alalalala bha je sais pas pourtant j'ai pas de warning rien.... :mad:

serieusement il me manque 1 acolade oO et ça ne marche pas  :mellow:
Titre: Re : système d'alliance
Posté par: vincentdu90 le 10 Avril 2013, 20:14:05
Le problème concerne les paramètres de ta fonction  :happy:.
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 20:21:05
ca t'amuses en plus  :happy:
bha y a un probleme? c'est pas giveplayerweapon?
je l'ai bien utilisé pourtant non?
c'est ça une fonction enfin sur le wiki quoi
Titre: Re : système d'alliance
Posté par: vincentdu90 le 10 Avril 2013, 20:29:48
 :laugh:

Dans ton code tu fais une boucle pour "parcourir" tous les IDs disponibles sur le serveur mais tu ne t'en sert pas.
L'idée est donc bonne cependant tu dois déplacer ta boucle car ici elle ne servira à rien. Le mieux est donc de la mettre après le switch() et de créer une variable que tu utiliseras dans chaque case afin d'affecter l'ID de l'arme à donner selon le choix.
Ensuite tu mets ta fonction GivePlayerWeapon() avec les paramètres adéquats  :happy:.

PS : Dans ta boucle tu devrais ajouter IsPlayerConnected() afin de ne pas donner une arme à un joueur qui n'existe pas.
Titre: Re : système d'alliance
Posté par: natsu00 le 10 Avril 2013, 20:52:36
ok merci pour ton explication
donc apres le switch je met ma boucle ok mais y a 4 erreur (je vais chercher  :happy:)
pas contre pour la variable je fais
new var 1
new vars 0
? désolé j'ai jamais fais je suis sur le tuto de gilux là ^^

bon je post mon premier jet qui a 4 erreurs mais j'éspere que le principe est bon ^^

[spoiler]// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
   print("\n--------------------------------------");
   print(" Blank Filterscript by your name here");
   print("--------------------------------------\n");
   return 1;
}

public OnFilterScriptExit()
{
   return 1;
}

#else

main()
{
   print("\n----------------------------------");
   print(" Blank Gamemode by your name here");
   print("----------------------------------\n");
}

#endif

new i = 0;
public OnPlayerCommandText(playerid, cmdtext[])
{
        if (strcmp("/arme", cmdtext, true, 10) == 0)
        {
         if(IsPlayerAdmin(playerid))
     ShowPlayerDialog(playerid,999,DIALOG_STYLE_LIST,"{FF0000}Donner une arme","batte de baseball\nkatana\ntronconeuse\n9mm\ndesert eagle\nshootgun\nMP5\nM4\nlanceflamme\nsniper\nlance roquette\nC4\n{FF0000}Back","Donate","Cancel");
         return 1;
        }
        return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
if(dialogid == 999 && response)
  {
        switch(listitem)
      {
for(new i=0; i<MAX_PLAYERS; i++)
        {
    if(IsPlayerConnected(playerid))
    {
   case 0:
                    {
                   
               GivePlayerWeapon(playerid,5,1);
                                }
                                case 1:
                                {
                                   GivePlayerWeapon(i,8,1);
                                }
                                case 2:
                                {
                                    GivePlayerWeapon(i,9,1);
                                }
                                case 3:
                                {
                                    GivePlayerWeapon(i,22,500);
                                }
                                case 4:
                                {
       GivePlayerWeapon(i,24,500);
    }
                                case 5:
                                {
    GivePlayerWeapon(i,27,500);
    }
                                case 6:
                                {
    GivePlayerWeapon(i,29,500);
                                }
                                case 7:
                                {
                                GivePlayerWeapon(i,31,500);
                                }
                                case 8:
                                {
                                GivePlayerWeapon(i,37,500);
                                }
                                case 9:
                                {
                                GivePlayerWeapon(i,34,30);
                                }
                                case 10:
    {
                                GivePlayerWeapon(i,35,5);
                                }
                                case 11:
                                {
                                GivePlayerWeapon(i,39,10);
                                GivePlayerWeapon(i,40,1);
                                 }
                                 }
        }

[/spoiler]

j'ai tout bien fait mais voici les erreurs:
error 002: only a single statement (or expression) can follow each "case"
 error 029: invalid expression, assumed zero

 warning 215: expression has no effect
 error 001: expected token: ";", but found ")"
 fatal error 107: too many error messages on one line
Titre: Re : système d'alliance
Posté par: vincentdu90 le 10 Avril 2013, 21:03:21
La boucle doit se trouver après l'accolade fermante de ton switch.
Titre: Re : système d'alliance
Posté par: Infu le 10 Avril 2013, 21:31:56
Code: (pawn) [Sélectionner]
new i = 0; revient à
Code: (pawn) [Sélectionner]
for(new i=0; i<MAX_PLAYERS; i++)
Un des deux est inutile, à toi de choisir lequel ;).
Titre: Re : système d'alliance
Posté par: natsu00 le 11 Avril 2013, 09:04:01
ok je viens d'essayer mais j'ai toujours ces trois erreurs  :mad:
Titre: Re : système d'alliance
Posté par: vincentdu90 le 11 Avril 2013, 09:08:38
Il manque des accolades ( cf : Infu)  :happy:.
Titre: Re : système d'alliance
Posté par: natsu00 le 11 Avril 2013, 09:10:45
oui je sais mais je sais pas ou ^^
je tente au pif là ca m'enerve ^^

donc ces 4 erreurs partent si je met cette acolade ^^

bon vu que j'arrive pas et que ma patience a des limites  :rolleyes:
je vais faire autrement
/desert eagle ==> tout le monde a un desert eagle
/m5==> tout le monde a un m5.....


[spoiler]public OnPlayerCommandText(playerid, cmdtext[])
{
   if (strcmp("/batte", cmdtext, true, 10) == 0)
        {
      if(IsPlayerAdmin(playerid))
for(new i = 0; i < MAX_PLAYERS; i++) {
            if(IsPlayerConnected(i)) {
                GivePlayerWeapon(i,5,1); //Change weap && ammo to what your weapon and ammo should be.
            }
        }
}
return 0;}[/spoiler]
plus simple vu que j'arrive pas....
Titre: Re : système d'alliance
Posté par: vincentdu90 le 11 Avril 2013, 09:27:31
Les accolades de la première condition de ta première commande.
De plus il y a des playerid que tu devrais remplacer par i avec un peu de logique tu devrais savoir où.
Titre: Re : système d'alliance
Posté par: natsu00 le 11 Avril 2013, 09:32:58
ok merci c'est gentil je vais voir ça alors x)

j'ai reussi le plus simple, il tourne sans soucis a present je vais essayer de réparer celui ci qui est plus pratique mais plus chian tà faire  :dry:

edit:
quand tu dis premiere commande c'est dans oneplayercommand text??
il manque des acolades au if(condition) alors?
Titre: Re : système d'alliance
Posté par: vincentdu90 le 11 Avril 2013, 12:12:32
Oui au IsPlayerAdmin(), sans ça le compilateur le considère comme une instruction d'où le fait que le rapport d'erreur te signale un ; manquant.
Titre: Re : système d'alliance
Posté par: Infu le 11 Avril 2013, 14:40:22
Par contre pour tes c/c de Pawn, utilise la bonne balise, car là c'est moche et pas indenté :smile:

[code=pawn][/code]
Titre: Re : système d'alliance
Posté par: natsu00 le 12 Avril 2013, 15:32:47
bonjour,
merci beaucoup, hier un pot, qui joue a samp m'a expliquer pas mal de choses, que je ne comprennais pas maintenant ça va un peu mieux
le filescript tourne je sais pas cmment j'ai fait je l'ai lancé j'ai testé au pif et c'est bon (en suivant vos conseils)
maintenant (oui encore  :tongue:)
je vais faire un système de grille qui s'ouvre et ce ferme
donc voici le début mais j'ai un petit soucis, je voudrais bouger la grille avec moveobject donc
voici le debut de mon pawn :
Code: (pawn) [Sélectionner]
new grille;
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/ouvrir", true) == 0)
    {
         MoveObject(grille, 1577.76831, 718.88159, 2.00000,-90.00000,10);//grille ouverte
         return 1;
}
if(strcmp(cmdtext, "/fermer", true) == 0)
    {
        MoveObject(grille, 1577.27612, 719.01080, 9.79250,   0.00000, 0.00000, -91.00000,10);//grille fermée
        return 1;}
        return 0;}


public OnPlayerConnect(playerid)
{
grille =CreateObject(987, 1577.76831, 718.88159, 9.80010,   0.00000, 0.00000, -90.00000);

alors je vois la grille bouger mais très rapidement, avec des bug de ouf Oo mais elle ne se ferme pas!
(ceci a été placé dans mon gamemod et tout ce compile)
Titre: Re : système d'alliance
Posté par: S!m le 20 Avril 2013, 23:48:09
Salut,

en premier lieu: Tu devrais créer ton objet lors du lancement du serveur, pas lors de la connexion d'un joueur (tu risque d'en créer plusieurs copies).

Je remarque aussi que pour deux fois la même fonction (MoveObject), tu n'as pas le même nombre de paramètres, c'est assez bizarre. Référence: http://wiki.sa-mp.com/wiki/MoveObject (http://wiki.sa-mp.com/wiki/MoveObject)

En gros, Il te manque des paramètres dans la commande /ouvrir. Tu devrais diminuer un peu la vitesse de ta grille pour être bien sur de la voir bouger correctement.

Personnellement, j'irais vers ce genre de chose (vérifie les positions pour être sûr):

        MoveObject(grille, 1577.76831, 718.88159, 2.00000, 0.00000, 0.00000, -90.00000, 1);//grille ouverte

        MoveObject(grille, 1577.76831, 718.88159, 9.80010, 0.00000, 0.00000, -90.00000, 1);//grille fermée

Bonne chance

PS. Fait attention à l'indentation, le code est difficile à lire (tuto : Quelques règles de base pour mieux scripter (http://www.gtaonline.fr/forums/index.php?topic=6250.0))


++Sim++