• 10 Juin 2024, 22:47:10


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

0 Membres et 1 Invité sur ce sujet

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #390 le: 14 Janvier 2012, 14:09:25 »
Code corrigé, merci à vous tous :)


<?php // Ne mettez surtout pas ça, c'est juste pour que le code soit en couleur ;)

new Float:vie// Definissez ces news tout en haut de votre script, en haut de " if desfined filterscript "
new bool:IsPlayerAfk;

// là y'a tout votre code

/* Mettez les commandes suivante dans 
public OnPlayerCommandText(playerid, cmdtext[]) */


if (strcmp("/afk"cmdtexttrue4) == 0)
{
new name[MAX_PLAYER_NAME], string[35+MAX_PLAYER_NAME];
GetPlayerName(playeridnamesizeof(name)); // On prend le nom du joueur
GetPlayerHealth(playerid,vie); // On prend la vie actuelle du joueur ( avant qu'il fasse /afk ) 
TogglePlayerControllable(playerid,0); // Le joueur ne peut plus bouger
format(stringsizeof(string), "%s est maintenant AFK !"name); // On dit à tout le monde que le joueur se met AFK
SendClientMessageToAll(VERTstring);
AFK Create3DTextLabel("Mode AFK"VERT30.040.050.040.00); // Ici le joueur a sur sa tête :
        
Attach3DTextLabelToPlayer(AFKplayerid0.00.00.7); //             " Mode AFK "
GameTextForPlayer(playerid" Vous etes maintenant AFK, tapez /back pour revenir au jeu.",60005);
SetPlayerHealth(playerid,9999.999); // On lui met la vie infinie pour qu'on ne puisse pas le tuer pendant son absence
IsPlayerAfk true// On passe IsPlayerAfk a true pour permettre le joueur de passer en /back plus tard
        
return 1;
}

if (strcmp("/back"cmdtexttrue10) == 0)
{
if (IsPlayerAfk == true)
{
   
new name[MAX_PLAYER_NAME], string[35+MAX_PLAYER_NAME];
GetPlayerName(playeridnamesizeof(name)); // On prend le nom du joueur
TogglePlayerControllable(playerid,1); // Le joueur peut bouger à nouveau
format(stringsizeof(string), "%s est de retour sur son ordinateur !"name); // On dit à tout le monde que le joueur est revenu
SendClientMessageToAll(VERTstring);
Delete3DTextLabel(Text3D:AFK); // On enleve le "Mode AFK de la tête du joueur "
GameTextForPlayer(playerid"  Vous etes maintenant de retour, bon jeu sur [VotreServeurIci] !.",60005);
SetPlayerHealth(playeridvie); // On remet au joueur la vie qu'il avait avant de faire /afk ( pour pas qu'il se heal en utilisant ces commandes )
IsPlayerAfk false// On remet IsPlayerAfk false sinon la commande /back pourra s'executer même en n'étant pas AFK
        
return 1;
        }

        else
        {
        
SendClientMessage(playeridROUGE_CLAIR" Vous ne pouvez pas être de retour si vous n'êtes pas afk...");
return 1;
}

}


Et voilà :) Je viens de tester le code, il marche très bien !  ;)
« Modifié: 14 Janvier 2012, 14:35:35 par Antonio.C »
Scripteur débutant.

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #391 le: 14 Janvier 2012, 14:35:07 »
D'accord, je connais pas tout ça :blink Merci de m'avoir corrigé  :)
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #392 le: 14 Janvier 2012, 15:01:06 »
La variable IsPlayerAfk va être attribué à tout les joueurs, je veux dire que un joueur peut changer la variable qui est *normalement* destiné à une par joueur, pour cela, créer un tableau à la place d'une simple variable.

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #393 le: 14 Janvier 2012, 16:23:03 »
Ah d'accord, et comme je dois faire ?  :-[
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #394 le: 14 Janvier 2012, 16:31:30 »
Tu déclare un tableau:

new bool:IsPlayerAFK[MAX_PLAYERS];
Et ensuite, tu utilise l'indice du joueur pour indice du tableau.

IsPlayerAFK[playerid] = true;
« Modifié: 14 Janvier 2012, 18:11:22 par Xartrick »

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #395 le: 14 Janvier 2012, 18:10:38 »
C'est quoi la différence entre ma proposition et celle là ?
Car la mienne marche et quand je met celle là, ça me met une erreur de compilation
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #396 le: 14 Janvier 2012, 18:12:30 »
J'ai expliqué pourquoi ta solution ne fonctionne pas.

Ta variable va être utilisé par l'ensemble des joueurs, donc ce n'est pas vraiment ce que tu désire.

Quel est ton erreur de compilation ?

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : codes/scripts utiles
« Réponse #397 le: 14 Janvier 2012, 18:16:53 »
Il a du faire ca :

new bool:IsAfk[MAX_PLAYERS];

IsAfk = true; // Sans mettre l'index

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #398 le: 14 Janvier 2012, 18:40:40 »
J'ai mis ça :

new bool:IsPlayerAfk[MAX_PLAYERS]
Et tout les IsPlayerAfk = true ( ou false )  je les ai remplacés par :

IsPlayerAfk[playerid] = true ( ou false )
Et l'erreur : C:\Program Files (x86)\Rockstar Games\Samp server\pawno\GM.pwn(183) : error 033: array must be indexed (variable "IsPlayerAfk")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Voilà ...
Desolé d'être aussi lourd, je débute :p
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #399 le: 15 Janvier 2012, 12:17:02 »
Montre nous le code complet (sur Pastebin).

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #400 le: 15 Janvier 2012, 17:08:15 »
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #401 le: 15 Janvier 2012, 17:17:06 »
if (IsPlayerAfk == true)
if (IsPlayerAfk[playerid] == true)

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Re : codes/scripts utiles
« Réponse #402 le: 15 Janvier 2012, 17:33:08 »
Il a du faire ca :

new bool:IsAfk[MAX_PLAYERS];

IsAfk = true; // Sans mettre l'index

Gagné :)

Hors ligne Antonio.C

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : codes/scripts utiles
« Réponse #403 le: 15 Janvier 2012, 18:14:52 »
Ah oui merci, je l'avvais pas vu celui-là ^^
Scripteur débutant.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : codes/scripts utiles
« Réponse #404 le: 27 Février 2012, 21:26:33 »
La fonction StringCompare permet de comparer deux chaînes et retourne vrai si les deux chaînes sont exactement les mêmes.
Cette fonction peut être utilisé, par exemple, pour la comparaison de commandes dans la fonction évènementielle OnPlayerCommandText car grand nombre d'entre vous ne savent pas utiliser les arguments de la fonction strcmp mais aussi, utiliser sa valeur de retour.
Ici, il suffit simplement d'indiquer les deux chaînes et de dire si la comparaison doit être faite de façon sensible à la case ou non.


/*
    fStringCompare
    
    @sString1:    First string to compare.
    @sString2:    Second string to compare.
    @bIgnoreCase: true:  case insensitive
                  false: case sensitive.
*/

public bool: fStringCompare(sString1[], sString2[], bool:bIgnoreCase)
{
    new iLength1 = strlen(sString1),
        iLength2 = strlen(sString2);
    
    if (iLength1 == iLength2)
        if (strcmp(sString1, sString2, bIgnoreCase, iLength1) == 0)
            return true;
    
    return false;
}

Et pour l'utilisation:

fStringCompare("XARTRICK", "xartrick", true);  // true
fStringCompare("XARTRICK", "xartrick", false); // false
fStringCompare("xar",      "xartrick", true);  // false
fStringCompare("xartrick", "xar",      true);  // false
« Modifié: 27 Février 2012, 21:32:22 par Xartrick »