• 23 Avril 2025, 00:05:11


Auteur Sujet: codes/scripts utiles  (Lu 132520 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Re : codes/scripts utiles
« Réponse #75 le: 25 Avril 2009, 23:38:42 »
NB : Ce n'est pas une critique, juste une question à laquelle je n'ai pas pu trouver de réponse.

J'avous, un KillAll est utiles, mais un BanAll, quand j'y pense, c'est vrais que c'est pas très utiles lol...

++ Franky


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne » Lukubi™

  • *
  • Soy el bico loco
  • Messages: 3282
    • Voir le profil
Re : Re : codes/scripts utiles
« Réponse #76 le: 26 Avril 2009, 03:19:19 »
Sinon, dans quel cas est-il utile de bannir tous les joueurs ?

Et bien a vrai dire moi même je ne sait pas, ce code m'est venu a l'idée par hasard  :-X

Mais on lui trouvera bien un contexte dans le quel il est utile  :)

++
MrT®

“Si la Terre est un endroit dangereux ce n’est pas à cause des hommes mauvais mais à cause des hommes bons qui ne font rien pour les empêcher.” (Albert Einstein).

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : codes/scripts utiles
« Réponse #77 le: 26 Avril 2009, 04:16:36 »
en le modifiant ;légèrement, on obtient un "lock serveur":

new bool: lockedl //à placer en haut

//OnPlayerConnect:
    if(locked)
    {
        Kick(playerid);
    }

    dcmd(lockserver, 10, cmdtext);//à placer dans OnPlayerCommandText

//à la fin du script
dcmd_lockserver(playerid, params[])
{
    #pragma unused params
    if(IsPlayerAdmin(playerid))
    {
        if(locked)
        {
            locked = false;
            SendClientMessage(playerid, COLOR_WHITE, "Vous avez levé l'interdiction!");
        }
        else
        {
            locked = true;
            SendClientMessage(playerid, COLOR_WHITE, "Vous avez interdit le serveur à tous les joueurs");
            KickAll();
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_RED, "Vous n'êtes pas admin!");
    }
    return 1;
}

stock KickAll()
{
     SendClientMessageToAll(0xF47A00FF, "Un admin a kické tous les joueurs connectés!");
     for(new i = 0; i < MAX_PLAYERS; i++)
     {
          if(IsPlayerAdmin(i))continue;
          Kick(i);
     }
}

ainsi on obtient un lock serveur ^^ (ce code est approximatif)

++Sim++
« Modifié: 23 Mai 2009, 23:25:48 par Sim »





Hors ligne » Lukubi™

  • *
  • Soy el bico loco
  • Messages: 3282
    • Voir le profil
Re : codes/scripts utiles
« Réponse #78 le: 26 Avril 2009, 21:45:38 »
Bien joué mais tu a fait une petite erreur d'étourderie :P

Tu kick tout les joueur lorsque tu retire l'interdiction et tu ne les kick pas lorsque tu interdit l'accès au serveur. ::)

++
MrT®

“Si la Terre est un endroit dangereux ce n’est pas à cause des hommes mauvais mais à cause des hommes bons qui ne font rien pour les empêcher.” (Albert Einstein).

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : codes/scripts utiles
« Réponse #79 le: 26 Avril 2009, 22:30:11 »
effectivement, je corrige de ce pas...





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : codes/scripts utiles
« Réponse #80 le: 26 Avril 2009, 22:33:34 »
Pour l'utilité de KickAll(), je pensais effectivement à quelque comme ça.
Par contre, je ne vois toujours pas dans quel cas utiliser BanAll() ...

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : codes/scripts utiles
« Réponse #81 le: 26 Avril 2009, 22:39:36 »
Salut,

on se crée un serveur cheat et lorsqu'il y en a suffisamment.... :lmfao

mais sinon faut avouer que c'est plutôt limité...

++Sim++





Hors ligne Klobbs

  • L'homme qui parlait à l'oreille des AT400.
  • *
  • Tueur
  • Je fais peur o/
  • Messages: 73
    • Voir le profil
Re : Re : codes/scripts utiles
« Réponse #82 le: 02 Mai 2009, 12:35:07 »
Salut,

on se crée un serveur cheat et lorsqu'il y en a suffisamment.... :lmfao

mais sinon faut avouer que c'est plutôt limité...

++Sim++
Bah ils sont bannis de ton serveur cheat, ça les empêche pas de venir cheater ailleurs. x)
I'm gonna slep tonight.



Userbars by MisterT <33

Hors ligne Dark4ng3L

  • *
  • Bandit
  • Messages: 480
    • Voir le profil
    • DecaWeb.ch - L'informatique comme vous ne l'avez jamais vu!
Re : Re : codes/scripts utiles
« Réponse #83 le: 03 Mai 2009, 11:33:44 »
new bool: lockedl //à placer en haut

//OnPlayerConnect:
    if(locked)
    {
        Kick(playerid);
    }

    dcmd(lockserver, 10, cmdtext);//à placer dans OnPlayerCommandText

//à la fin du script
dcmd_lockserver(playerid, params[])
{
    #pragma unused params
    if(IsPlayerAdmin(playerid))
    {
        if(locked)
        {
            locked = false;
            SendClientMessage(playerid, COLOR_WHITE, "Vous avez levé l'interdiction!");
        }
        else
        {
            locked = true;
            SendClientMessage(playerid, COLOR_WHITE, "Vous avez interdit le serveur à tous les joueurs");
            KickAll();
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_RED, "[b]Yous[/b] n'êtes pas admin!");
    }
    return 1;
}

stock KickAll()
{
     SendClientMessageToAll(0xF47A00FF, "Un admin a kické tous les joueurs connectés!");
     for(new i = 0; i < MAX_PLAYERS; i++)
     {
          if(IsPlayerAdmin(i))continue;
          Kick(i);
     }
}

depuis quand c'est Yous et pas Vous :p ?
 :jesors
Cordialement Dark4ng3L aussi connu sous le nom de Mathias_Martinez, Matthias_Angelo et lugia !




Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : codes/scripts utiles
« Réponse #84 le: 03 Mai 2009, 15:08:59 »
Pas la peine de poster pour ca.

Sim, je comprend pas trop ce code. Pourquoi un "lock serveur" ? Ca kick mais les joueurs peuvent revenir ... ? Non ?

++
nikko

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : codes/scripts utiles
« Réponse #85 le: 03 Mai 2009, 15:46:59 »
Beh non ca les kick a la connexion



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

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : codes/scripts utiles
« Réponse #86 le: 03 Mai 2009, 15:49:25 »
Effectivement, j'avais pas vu ;)

++
nikko

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : codes/scripts utiles
« Réponse #87 le: 23 Mai 2009, 23:35:15 »
Bonjour,

je viens vous présenter la fonction que j'ai développée hier soir, une nouvelle implentation de strtok qui devrais, être plus rapide et sécuritaire, voici le monstre :

strtok(const source[], &index, dest[], separator = ' ')
strtok(const source[], &index, dest[], separator = ' ')
{
new i = 0;
while(source[index])//tant qu'on est pas à la fin du texte
{
if(source[index] != separator)//si l'on est pas encore rendu au séparateur
{
if((dest[i] = source[index]))//on copie l'information directement dans la destination
{
index++;//on augmente les deux
i++;
}
else
{
return 0;
}
}
else//on est rendu au séparateur
{
index++;//on saute le séparateur
break;
}
}
dest[i] = EOS;
return 1;
}

pour le test de rapidité, vous pouvez trouver le code source dans le pastebin sous le nom de strtok par Sim (il comporte malencontreusement une erreur (while(idx < 25) au lieu de while(idx <  et ne contient pas de test sur la copie des données dans le string de destination...)

Usage
Son utilisation diffère légèrement de l'implantation habituelle, au lieu de retourner le string, elle le sauvegarde dans la chaine passer en paramètre. Voici un exemple basé sur une commande usuelle, prise dans mon script d'admin en développement:

Quelques définitions utilisées ici....
#define SendTypoMessage(%0,%1) SendClientMessage(%0, 0xffffffff, "FORMULATION: "%1)
#define SendLevelErrorMessage(%0) SendClientMessage(%0, 0xFF0000FF, "Tu n'as pas le niveau requis pour effectuer cette action!")
Maintenant la commande:
// COMMANDE POUR KICKER LES JOUEURS //
if(!strcmp(cmdtext, "/kick ", true, 6))
{
if(IsPlayerAdmin(playerid))
{
if(!cmdtext[6])
{
SendTypoMessage(playerid, "/kick [joueur] [raison (optionnel)]");
return 1;
}
new cmd[128], idx = 6, pid;
strtok(cmdtext, idx, cmd);//remarquez ici l'utilisation du strtok, au lieu de cmd = strtok(cmdtext, idx);
if(IsNumeric(cmd))
{
pid = strval(cmd);
}
else
{
pid = ReturnPlayerID(cmd);
}
if(!IsPlayerConnected(pid))
{
SendErrorMessage(playerid, "Ce joueur n'est pas connecté!");
return 1;
}
new AName[MAX_PLAYER_NAME], PName[MAX_PLAYER_NAME];
GetPlayerName(playerid, AName, MAX_PLAYER_NAME);
GetPlayerName(pid, PName, MAX_PLAYER_NAME);
if(cmdtext[idx])
{
format(cmd, sizeof(cmd), "Admin %s a kické %s car %s", AName, PName, cmdtext[idx]);
}
else
{
format(cmd, sizeof(cmd), "Admin %s a kické %s", AName, PName);
}
SendClientMessageToAll(COLOR_KICK, cmd);
Kick(pid);
}
else
{
SendLevelErrorMessage(playerid);
}
return 1;
}

EDIT: merci à Syg pour ses commentaires :P

++Sim++
« Modifié: 24 Mai 2009, 01:10:19 par Sim »





Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : codes/scripts utiles
« Réponse #88 le: 02 Juin 2009, 11:21:58 »
J'sais pas si sa a déja été mit avant mais j'vous donne une petite commande qui peux être util une commande /afk qui freeze et rajoute [AFK] au pseudo et defreeze et retire [AFK] du pseudo quand on la retape :)



Code: (pawn) [Sélectionner]
if(strcmp(cmd, "/afk", true) == 0)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
if(strfind(playername,"[AFK]",true) != -1)// Si le joueur a le tag [AFK] dans sont pseudo
{
  strdel(playername,strlen(playername)-5,strlen(playername)); //On retire [AFK] du pseudo
SetPlayerName(playerid,playername); //On lui met le pseudo sans le tag [AFK]
format(string,sizeof(string),"%s n'est plus AFK",playername);
SendClientMessageToAll(0xFFFFFFFF,string); // On envoi le message, n'oublier pas de mettre la couleur de votre choix
TogglePlayerControllable(playerid,1); // On defreeze le joueur
}
else
{
format(string,sizeof(string),"%s est AFK",playername);
SendClientMessageToAll(0xFFFFFFFF,string); //On envoi le message, n'oublier pas de mettre la couleur de votre choix
strcat(playername,"[AFK]",sizeof(playername)); // On ajoute [AFK] au pseudo
SetPlayerName(playerid,playername); // On lui met le pseudo avec le tag [AFK]
TogglePlayerControllable(playerid,0); // On freeze le joueur
}
return 1;
}

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : codes/scripts utiles
« Réponse #89 le: 03 Juin 2009, 11:04:13 »
Très bien MrFredo.
Il faut juste vérifier à la connexion que le joueur n'a pas déjà [AFK] dans son pseudo (genre un petit malin) sinon ta commande ne va pas fonctionner.
Si c'est le cas, on peut par exemple la kicker avec un message lui indiquant que c'est interdit sur le serveur :
public OnPlayerConnect (playerid)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName (playerid,playername,sizeof(playername));
if (strfind (playername,"[AFK]",true) != -1)// Si le joueur a le tag [AFK] dans sont pseudo
{
SendClientMessageToAll(0xFFFFFFFF,"L'usage de [AFK] dans un pseudo n'est pas autorisé ici");
Kick (playerid);
}
}

++
Syg
Courtesy of GtaManiac