GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Komolos le 16 Novembre 2010, 19:43:34

Titre: Aide petit problème
Posté par: Komolos le 16 Novembre 2010, 19:43:34
Bonsoir,

Ce soir encore je vais encore appele à certaines de vos connaissance, j'ai un problème.

J'ai crée un public, mais le problème ses que en jeux, sa marche, mais ça me fait comme ça : * a le ventre qui gargouille.

alors, que j'ai bien définie ma variable nomjoueur.

Ensuite j'aimerai aussi que vous m'aidiez à kick le joueur si il ne ce connecte pas, il as 15 secondes pour ça.

voici mon code :

public Manger()
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(gPlayerSpawned[i] == 1)
            {
                new nomjoueur[MAX_PLAYER_NAME];
                new string[256];
            new Float:health;
            GetPlayerHealth(i, health);
            if(health <= 35)
            {
    {
                  format(string, sizeof(string), "* %s a le ventre qui gargouille.", nomjoueur);
ProxDetector(30.0, i, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 50.0, 10000);
                        SendClientMessage(i, COLOR_WHITE, "Vous avez faim, allez mangé quelques choses");

                    }
             }
            }
        }
    }
    return 1;
}

Titre: Re : Aide petit problème
Posté par: Komolos le 16 Novembre 2010, 19:55:39
Merci beaucoup Dizzy !

pour mon deuxième problème ? :

Ensuite j'aimerai aussi que vous m'aidiez à kick le joueur si il ne ce connecte pas, il as 15 secondes pour ça.

Merci d'avance
Titre: Re : Aide petit problème
Posté par: Komolos le 16 Novembre 2010, 20:02:19
Ah, on sera 2 à attendre une réponse d'un autre membre alors ^^

Merci beaucoup, je te doit presque tout de mon savoir faire Dizzy.
Titre: Re : Aide petit problème
Posté par: Brian Turner le 16 Novembre 2010, 20:04:28
Salut
Dans ton OnPlayerConnect tu fait un SetTimerEx de 15 sec (biensur tu lui donne un nom par exemple timerconnection donc, en haut de ton GM: new timerconnection et pour ton timer : timerconnection = SetTimerEx(......);). Apres, dans ta fonction qui connecte le joueur, tu mets que lorsque le joueur a reussi a se loger(donc le mdp est bon un KillTimer(timerconnection); ). Apres tu creer une fonction par exemple : fonctionkick(playerid) avec dedans : Kick(playerid);


Si tu as pas compris dis le.
Titre: Re : Aide petit problème
Posté par: Mr_C30 le 16 Novembre 2010, 20:05:30
tu fait un timer ou est ta difficulté ?  ???

++C30
Titre: Re : Aide petit problème
Posté par: Komolos le 16 Novembre 2010, 20:08:01
J'ai compris, je le ferai demain, je vous tien au courant merci beaucoup.
Titre: Re : Re : Aide petit problème
Posté par: scott1 le 17 Novembre 2010, 03:07:31
Salut
Dans ton OnPlayerConnect tu fait un SetTimerEx de 15 sec (biensur tu lui donne un nom par exemple timerconnection donc, en haut de ton GM: new timerconnection et pour ton timer : timerconnection = SetTimerEx(......);). Apres, dans ta fonction qui connecte le joueur, tu mets que lorsque le joueur a reussi a se loger(donc le mdp est bon un KillTimer(timerconnection); ). Apres tu creer une fonction par exemple : fonctionkick(playerid) avec dedans : Kick(playerid);


Si tu as pas compris dis le.


Vous allez me dire qu eje vais loin mais bon ^^

new timerconnection
n'est pas forcement neccesaire,

dans la plu saprt des gm en libre circulation larp ....

il y a un gPlayerLogged

donc tu fait juste le settimerex

et quand la fonction est appellée

public fonctionkick(playerid)
{
     if(gPlayerLogged[playerid] == 1) { return 1; }
     Kick(playerid);
}


Titre: Re : Re : Re : Aide petit problème
Posté par: S!m le 17 Novembre 2010, 04:17:40
Salut,

Vous allez me dire qu eje vais loin mais bon ^^

new timerconnection
n'est pas forcement neccesaire,

dans la plu saprt des gm en libre circulation larp ....

il y a un gPlayerLogged

donc tu fait juste le settimerex

et quand la fonction est appellée

public fonctionkick(playerid)
{
     if(gPlayerLogged[playerid] == 1) { return 1; }
     Kick(playerid);
}

effectivement, toutefois l'un n'est pas vraiment plus avantageux que l'autre, et la méthode en ajoutant la variable a l'avantage d'être compatible avec tous les scripts ayant un système de comptes.

komolos, à l'avenir donne un titre clair à ton topic ou je devrai m'en mêler. Comprend moi, il faut pouvoir s'y retrouver parmis tous ces topics...

cordialement,

++Sim++
Titre: Re : Aide petit problème
Posté par: Komolos le 17 Novembre 2010, 14:20:31
Aucun soucis Sim, voilà ce que j'ai fait :

timerconnection = SetTimerEx("timerconnection", 15000, 1);

//===========================[Connection]===================
//forward fonctionkick();
public fonctionkick(playerid)
{
     if(gPlayerLogged[playerid] == 1) { return 1; }
     Kick(playerid);
}



C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(15354) : warning 202: number of arguments does not match definition
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(33352) : warning 202: number of arguments does not match definition
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(53759) : warning 235: public function lacks forward declaration (symbol "fonctionkick")
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(53763) : warning 209: function "fonctionkick" should return a value

Titre: Re : Aide petit problème
Posté par: S!m le 17 Novembre 2010, 14:25:01
Salut,

sinon, je viens de remarquer concernant la fonction en elle même, il serait plus "propre" de la faire ainsi:

Code: (pawn) [Sélectionner]
forward fonctionkick();
public fonctionkick(playerid)
{
    if(gPlayerLogged[playerid] != 1)
    {
        Kick(playerid);
    }
    return 1;
}

En plus, tu aura deux avertissement en moins. (le problème de fonction non pré-déclarée (forward) et de retour de valeur)

++Sim++
Titre: Re : Aide petit problème
Posté par: Komolos le 17 Novembre 2010, 14:45:55
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(15354) : warning 202: number of arguments does not match definition
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(33352) : warning 202: number of arguments does not match definition
C:\Users\haddou\Desktop\teste\gamemodes\dirthy.pwn(53759) : error 025: function heading differs from prototype

[code]

Voilà sa que ça me fait.
[/code]
Titre: Re : Aide petit problème
Posté par: scott1 le 17 Novembre 2010, 15:08:02
SetTimerEx("timerconnection", 15000, 1);
est faux

SetTimerEx("timerconnection", 15000, 0,"d",playerid);
est juste.

Pourquoi?

Car "1" ferais que le timer se répette, or il ne faut pas

"d", car tu appelle un public qui demande une variable

playerid, car s'est la variable nécessaire au public
Titre: Re : Aide petit problème
Posté par: Komolos le 17 Novembre 2010, 16:50:12
Merci beaucoup scoot, mais je doit pas rename ce public ? en timerconnection ?