GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Lucifer le 14 Novembre 2010, 09:01:00

Titre: Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 09:01:00
Bonjour,

Je pense que je vais faire comme Myk3L, un topic général ou je poserais toutes mes questions :).

Donc, première question :

1. Je possède l'include de Dixon pour le permis automatique, j'aimerais savoir comment faire pour que le joueur puisse seulement /passercode que si il y a 0 instructeurs de connecté ? (J'ai une idée mais j'aimerais savoir comment vous feriez vous) ?

Merci d'avance de vos aides.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 09:34:57
Tu fais une fonction pour savoir si les membres d'une faction sont connectés avec boucle for de ce genre.:

forward IsMemberConnected(idfaction);

public IsMemberConnected(idfaction)
{
for(new i = 0; i < MAX_PLAYER; i++)
{
   if(IsPlayerConnected(i))
     {
        if(PlayerInfo[pMember] == idfaction || PlayerInfo[pLeader] == idfaction)
         {
             return 1;
         }
        else
        {       
             return 0;
        }
     }
}
}

PS : Code fait sur un portable ;)

Myk3L.

HS : T'as raison de faire un topic ;)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 10:09:18
D'accord, je vois le truc et après dans la commande, il faut que je mette quoi ?
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 10:28:45
Bah tu mets quelque chose du genre

Ta commande
{
  if(IsAMemberConnected(11))
    {
        SendClientMessage(playerid, COLOR_WHITE, "Des instructeurs sont disponibles, pour les contactez, attendez ici ((Ou tappez /instructeur))");
        return 1;
    }
    else
    {
        Fonction de Dixon
    }
  return 1;
}

Voilà, et tu pourras te servir de cette fonction pour toutes les factions. (11 est l'id de la faction instructeurs je crois)

Myk3L.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 10:36:40
D'accord merci bien..

J'ai juste ce warning à régler :

38525 : warning 209: function "IsAMemberConnected" should return a value

public IsAMemberConnected(idfaction)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i))
      {
        if(PlayerInfo[i][pMember] == idfaction || PlayerInfo[i][pLeader] == idfaction)
          {
              return 1;
          }
        else
        {
              return 0;
        }
      }
}
Ligne 38525 : }

Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 10:43:46
Oui :)

Donc, j'ai aucune erreur....juste que sa marche pas correctement.

Que je soit dans la faction 5, 6, 11 ou 32, sa me dit toujours qu'il y a un instructeur de connecté.

Voici ma commande :

    if(strcmp(cmdtext, "/passercode",true)==0)
    {
        if(IsPlayerConnected(playerid))
        {
if(PlayerToPoint(5.0, playerid, -2027.1587,-114.5045,1035.1719)) // DMV
    {
        if(PlayerInfo[playerid][pLevel] > 0)
        {
        if(PlayerInfo[playerid][pCarLic] < 1)
        {
            if(IsAMemberConnected(11))
{
                if(pTest[playerid] == 0)
                {
        if(GetPlayerMoney(playerid) >= 500)
        {
        SetPlayerInterior(playerid,3);
        TogglePlayerControllable(playerid, 0);
        GameTextForPlayer(playerid, "~r~Suivez les instructions !",5000,3);
        pTest[playerid] = 1;
                                   /* ClearChatbox(playerid, 8);
    SendClientMessage(playerid, COLOR_LIGHTRED, "The Information Outline Course");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, "Welcome to the Information Outline course. In this course you");
SendClientMessage(playerid, COLOR_YELLOW, "will learn about the things that will be tested later on.");
SendClientMessage(playerid, COLOR_YELLOW, " "); */
IO1(playerid);
//SetTimerEx("IO1", 10000, 0, "d", playerid);
SetTimerEx("IO2", 20000, 0, "d", playerid);
SetTimerEx("IO3", 40000, 0, "d", playerid);
SetTimerEx("IO4", 60000, 0, "d", playerid);
SetTimerEx("IO5", 80000, 0, "d", playerid);
SetTimerEx("IO6", 60000, 0, "d", playerid);
SetTimerEx("IO7", 100000, 0, "d", playerid);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas 500$ assez d'argent pour passer le test!");
return 1;
}
}
else
{
    SendClientMessage(playerid, COLOR_GREY, "Vous êtes déjà en train de le passer !");
return 1;
}
}
else
    {
    SendClientMessage(playerid,COLOR_GREY,"  Instructeur de Disponible /instructeur");
return 1;
}
}
    else
{
    SendClientMessage(playerid, COLOR_GREY, "Vous avez déjà votre permis de conduire !");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas le niveau requis.");
return 1;
}
    }
                return 1;
        }
        return 1;
}
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 11:11:51
C'est normal car tu vérifie si un instructeur est connecté, si oui, tu balance le test, en gros, l'inverse de ce que j'avais dit.
Avec ça, tu devrais y arrivé : http://pastebin.com/dpF9JBG0 (http://pastebin.com/dpF9JBG0)

Myk3L.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 11:35:07
C'est bizarre.....sa marche toujours pas
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 11:43:27
Essaye de le faire avec juste un truc comme ça :

   if(strcmp(cmdtext, "/yadesinstru",true)==0)
    {
                       if(IsAMemberConnected(11))
{
   SendClientMessage(playerid,COLOR_GREY,"Instructeur de Disponible /instructeur");
   return 1;
}   
                else SendClientMessage(playerid, COLOR_RED, "Il n'y a pas d'instructeurs en ligne :D");
    }
      return 1;
}

Myk3L.

PS : Au lieu de faire des copié/collé bêtes de ce que j'ai fais, essaye de réfléchir, de modifier des trucs ... ça marchera un jour ;)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 12:02:39
Citer
PS : Au lieu de faire des copié/collé bêtes de ce que j'ai fais, essaye de réfléchir, de modifier des trucs ... ça marchera un jour Clin d'oeil

C'est ce que je fais ;)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Katou76 le 14 Novembre 2010, 14:42:51
Salut,

Essaye plutôt ca:

if(!IsAMemberConnected(11))
a la place de if(IsAMemberConnected(11)
J'espère t'avoir aidé ;)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 15:14:00
J'y ai pensé après, mais je le laissais réfléchir un peux, si il aurait vraiment rien trouvé, je lui aurais filé un coup de (pied ? :P) main !

Myk3L.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Eloctro le 14 Novembre 2010, 15:23:03

 ;D c'est pire

Si un membre de la faction ID 11 est connecté ça renvoi la valeur 1=true sinon 0=false .
La le fait de mettre un "!" inversse le résultat en remplaçant 1 par 0 soit passe de true à false donc ça n'a aucun interet
Enfin bref l'erreur vient de la fonction .
Avant la boucle de pouvait faire qu'un tour et passer par le joueur id 0 car il y avait un return dans les deux cas .
Ce qui revenait à faire :
public IsAMemberConnected(idfaction)
{
if(IsPlayerConnected(0))
{
       if(PlayerInfo[0][pMember] == idfaction || PlayerInfo[0][pLeader] == idfaction)
{
return 1;
}
  else
  {
return 0;
}
}
}

Tout pour en venir à te dire que la fonction est fausse et de vérifié que même si tu change de faction que tu n'est pas encore leader de la 11 .
Correction :
public IsAMemberConnected(idfaction)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
     {
         if(PlayerInfo[i][pMember] == idfaction || PlayerInfo[i][pLeader] == idfaction)
         {
             return 1;
         }
     }
}
return 0;
}
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 16:50:12
Je me coucherais moins con ce soir, je faisais des fonctions avec else return 0; mais en fait pas besoin du else :)

Myk3L.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 14 Novembre 2010, 18:03:57
Merci de vos aides, sa marche niquel ;)

C'est juste que je testais mal :). Du coup j'ai mis un NPC instructeur pour voir et sa marche :P
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 14 Novembre 2010, 18:16:10
Ah les NPC, c'est trop bien ces machins là, surtout que moi ça va me servir pour mon système de job (:P)

Myk3L.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 15 Novembre 2010, 17:07:07
Ah bon, pour faire quoi ?
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Myk3L le 15 Novembre 2010, 17:23:08
... ils v:)ont même interagir avec les joueurs :)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 15 Novembre 2010, 17:51:01
C'est à dire ? Sa m'intéresse ton truc :)

2. Quel est la fonction qui permet d'attacher un objet dans le dos d'un joueur par exemple ?

Merci.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Karting06 le 16 Novembre 2010, 07:19:07
NPC==> est un robot, ou tu peux faire quelques trucs avec. Il peuvent marcher, piloter, conduire, parler dans le chatbox etc.
Ta deuxième question: Le truc pour mettre des objets est très complexe à mettre!
Titre: Re : Re : Lucifer - Topic Général d'aide
Posté par: Djellali_Ibrahim le 16 Novembre 2010, 07:25:15
NPC==> est un robot, ou tu peux faire quelques trucs avec. Il peuvent marcher, piloter, conduire, parler dans le chatbox etc.
Ta deuxième question: Le truc pour mettre des objets est très complexe à mettre!

Du tout, tient : http://forum.sa-mp.com/showthread.php?t=186796 (http://forum.sa-mp.com/showthread.php?t=186796) fs déjà tout près.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 17 Novembre 2010, 06:51:34
Ah merci, c'est sympa :)

La fonction à par l'air trop compliqué encore :)

3. Comment faire pour créer un NPC avec un TramWay ?
Titre: Re : Re : Lucifer - Topic Général d'aide
Posté par: Djellali_Ibrahim le 17 Novembre 2010, 10:48:05
Ah merci, c'est sympa :)

La fonction à par l'air trop compliqué encore :)

3. Comment faire pour créer un NPC avec un TramWay ?

Il faut faire un recording pour sa après il y a un tuto pour sa.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 17 Novembre 2010, 13:48:29
Citer
Il faut faire un recording pour sa après il y a un tuto pour sa.

??? ...je sais qu'il faut faire un recording...mais comme on peut pas conduire un TramWay je voulais savoir comment justement enregistrer le parcours d'un Tramway :)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: scott1 le 17 Novembre 2010, 15:08:35
Si on peux conduire le tramway
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Djellali_Ibrahim le 17 Novembre 2010, 16:07:29
Tu va dans le tram et tu lance le record . . .
Titre: Re : Lucifer - Topic Général d'aide
Posté par: chneubeul le 17 Novembre 2010, 16:28:01
Salut, si tu veux rentrer plus facilement dans le tram, tu te créé un petit script.

new tram;

OnGameModeInit :

tram = AddStaticVehicle(ID du tram, ...

Ensuite on peut mettre une touche

OnPlayerKeyStateChange :

Si le joueur appuie sur entrer (KEY_SECONDARY_ATTACK)
On prend la position du tram : GetVehiclePos(tram, X, Y, Z);
ensuite on test si il est au alentour :
IsPlayerInRangeOfPoint(playerid, 5.0, X, Y Z);
et donc là si c'est vérifier
PutPlayerInVehicle(playerid, tram);


Avec ce code, tu ne pourras pas sortir, je te laisse faire. :)

A+ Sam.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 17 Novembre 2010, 18:06:19
On peut rentrer ? O_o....je suis c** ou quoi  :P

Quand j'appuie sur entrer, je peux pas rentrer...quand j'appuie sur G, il ce met en passager mais c'est tous

C'est quoi l'astuce ? Je spawn mon véhicule /veh et ensuite ?  :-\

Je ferais un script si et seulement si on peut pas autrement xD, mais merci de l'astuce :)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Pixect le 17 Novembre 2010, 18:35:52
Salut,

Avec le code de Chneubeul, tu peux rentrer, mais pas sortir.
Tu spawn ton véhicule avec /veh IG, ensuite, si tu as inséré le bout de code que t'as donné Chneubeul, tu peux rentrer et le conduire, mais tu ne peux pas sortir.
Si tu veux pouvoir sortir, il faut que tu vérifies si le joueur appuies encore une fois sur la touche ENTRÉE (KEY_SECONDARY_ATTACK), et ensuite  tu l'éjectes.

++
Lloyd
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 17 Novembre 2010, 19:04:29
Ok, bien je vais mettre ce bout de code en place alors, merci bien Lloyd :)
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 20 Novembre 2010, 07:36:04
Besoin d'aide  ;)

Voilà, j'ai un soucis avec mon système d'inscription / connexion. Quand je m'inscris, et que je me connecte, sa marche. Si je me déconnecte et reconnecte, il me demande de me ré-enregistrer et j'arrive pas à trouver comment régler ce soucis, quel code vous faut-il ?

Merci de votre aide..
Titre: Re : Lucifer - Topic Général d'aide
Posté par: leo3412 le 20 Novembre 2010, 07:57:28
Je n'ai jamais trouvé comment réparer ce bug, mais cependant, j'ai remarqué que (avec mon ancien GM), au bout de 5, 10 connections (de moi même), le système remarche correctement et il n'y a plus ce bug. Mais je pense que cela vient de ton système d'enregistrement qui ne répond plus, au pire, tu crée (dans ton PlayerInfo si tu en as enfin je suppose) pFini, tu le rajoute au système d'enregistrement et de login, et tu met PlayerInfo[playerid][pFini] = 1; a la fin du tuto. Et dans ton SetPlayerSpawn(je suppose toujours que tu en as un), tu met:

if(PlayerInfo[playerid][pTuto] ==1)
{
// Ton endroit de spawn
// Avec tout ce qui faut bien sur ^^
}
else
{
// Ton endroit de spawn pour le tuto
}
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 20 Novembre 2010, 08:06:55
Je pense pas que se soit la bonne solution çà....

D'autres proposition s'il vous plait ?  :-[

Quand je clique sur " Spawn " puisque sa spawn pas le joueur directement :S, sa me met : ** Ce server demande de se logué pour apparaitre (Kick) **" et sa me kick.

Titre: Re : Re : Lucifer - Topic Général d'aide
Posté par: Djellali_Ibrahim le 20 Novembre 2010, 10:02:57
Salut,

je crois avoir la solution pour ton problème d'ident/enreg, tu Utilise un larp ou autre du même genre ? si c'est sa va dans public onplayerconnection puis tu cherche le new string[MAX_PLAYER_NAME]; et tu le change pas sa new string[50]; en espèrent t avoir aider.
Titre: Re : Lucifer - Topic Général d'aide
Posté par: Lucifer le 20 Novembre 2010, 10:51:48
Non sa venait pas de çà, j'avais fais une sauvegarde du GM avant modification, j'ai remis celle-ci et j'avais fait une erreur dans OnDialogResponse

Merci quand même