• 04 Juillet 2025, 18:26:24


Auteur Sujet: [Résolu] error 033: array must be indexed; GetPlayerName + Nouveau probleme GM  (Lu 4163 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Alexandre_Leborgn

  • *
  • Criminel
  • Messages: 35
    • Voir le profil
Bonjour ou bonsoir,
je poste car j'aurais besoin d'aide pour un filterscript de FLY. Je souhaite rendre une commande accessible que pour quelques personnes. Mais j'obtient toujours la même erreur. Comment m'y prendre s'il vous plait ?

Code: (pawn) [Sélectionner]
C:\Users\mercen\Documents\***\JEU\GTA\SAMP Server\filterscripts\flymode.pwn(62) : error 033: array must be indexed (variable "name")
1 Error.

Code: (pawn) [Sélectionner]
   if (strcmp("/flymode", cmdtext, true, 10) == 0)
    {
        new playername[MAX_PLAYER_NAME];
        new Bryan_Dawkins, Emilio_Maestro, Alexandre_Leborgne, Steven_Blind, Cameron_Kalaz;
ERREUR ==>
        GetPlayerName(playerid, playername, sizeof(playername));
----------        
        if(Bryan_Dawkins == playername || Emilio_Maestro == playername || Alexandre_Leborgne == playername || Steven_Blind == playername || Cameron_Kalaz== playername)
        {
    if(GetPVarInt(playerid, "Flymode") == 0)
         {
            SetPVarInt(playerid, "Flymode", 1);
                SetPlayerHealth(playerid, 50000);
                SendClientMessage(playerid, 0xFF0000AA, "Flymode activé. Presser SHIFT pour accéder au Flymode et ESPACE pour voler");
                return 1;
         }
         if(GetPVarInt(playerid, "Flymode") == 1)
         {
            SetPVarInt(playerid, "Flymode", 0);
                ClearAnimations(playerid);
                SetPlayerHealth(playerid, 100);
                SendClientMessage(playerid, 0xFF0000AA, "Flymode désactivé");
                return 1;
         }
     }
     else
     {
SendClientMessage(playerid, 0xFF0000AA, "[Admin] Vous n'etes pas autorisé a utilisé cette commande !");
}
    }
« Modifié: 06 Juillet 2012, 14:52:03 par Alexandre_Leborgn »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName
« Réponse #1 le: 05 Juillet 2012, 20:18:36 »
Salut :)

Tu as fait une mauvaise vérification au niveau des noms de joueur. Je te conseille de réviser les bases sur les variables afin de comprendre ton erreur. Et ensuite quand tu auras relu un peu et appris. Il existe une fonction qui permet de comparer 2 chaine de caractère "strcmp(..)"

A+, Sam.
 :cheers

Hors ligne Alexandre_Leborgn

  • *
  • Criminel
  • Messages: 35
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName
« Réponse #2 le: 05 Juillet 2012, 23:30:43 »
Merci de ton aide, j'ai effectivement trouvé mon bonheur sur un forum anglais explicant le strcmp.
Il reste néanmoins un problème : Lorsque j'ouvre mon filterscript appelé "Flymode", le GM "Alex" ne fonctionne plus correctement.
En effet, il ne reste plus qu'une commande et le motd qui fonctionne. Toutes les autres commandes ne font rien.
J'ai bien vérifier en enlevant le filterscript à nouveau et le GM re-fonctionne parfaitement. Je précise que dans tout les cas, le FS fonctionne parfaitement.


Voici mon server.cfg :

Code: (pawno) [Sélectionner]
echo Executing Server Config...
lanmode 0
rcon_password ***
maxplayers 3
port 7777
hostname [FR] SA-MP 0.3e Server
gamemode0 Alex 1
filterscripts gl_actions gl_property gl_realtime gl_mapicon ls_elevator test_cmds ls_mall attachments flymode
announce 0
query 1
weburl [url=http://www.sa-mp.com]www.sa-mp.com[/url]
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]


Voici le début de mon FS :

Code: (pawno) [Sélectionner]
#include <a_samp>
#include <file>
#include <a_players>

#define FLYMODESPEED GetPVarFloat(playerid, "FlymodeSpeed")

new PlayerToetsen, OmhoogLaag, LinksRechts;
new Float:x,Float:y,Float:z;
new Float:x2, Float:y2, Float:z2;

public OnFilterScriptInit()
{
        print("[FS] >> Flymode loaded & enable. <c>");
        return 1;
}

public OnFilterScriptExit()
{
        print("[FS] >> Flymode unloaded & disable. <c>");
        return 1;
}


Voici celui de mon GM :

Code: (pawno) [Sélectionner]
#include <a_samp>
#include <a_players>
#include <a_vehicles>
#include <j_achievements> //http://forum.sa-mp.com/showthread.php?t=175745

#define BLINK_RATE   400 // This is the rate of flash (also rate of timer in milliseconds, same for pflash)
#define PFLASH_RATE     300 // This controls the rate of flash for public vehicle lights, works for all police, fire, ambulance vehicles
#define LIGHT_KEY KEY_SUBMISSION // Set this to whatever key you want to turn the lights on

#undef MAX_PLAYERS
#define MAX_PLAYERS 50

// Macro from SAMP wiki Credits to the author
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
//==============================================================================
forward strtok(const string[], &index, const seperator[] = " ");
forward strcpy(dst[], src[]);
forward stock strrest(const string[], &index);
forward UpdatePlayerPos();
new Float:x, Float:y, Float:z;
new Float:ang;
new stop[MAX_PLAYERS];
new Menu:menuafk;
new playerafk[MAX_PLAYER_NAME]; // Pour le /afk et le menu correspondant
new grille;
new BlinkTime[MAX_PLAYERS];

main()
{
print("\n----------------------------------");
print("Lancement du serveur...");
print("----------------------------------\n");
}

public OnGameModeInit()
{
SetGameModeText("UMVRP");

menuafk = CreateMenu("~w~     Menu AFK",1,125,150,300);
        if(IsValidMenu(menuafk))
{
SetMenuColumnHeader(menuafk , 0, "Choisissez une option :");
         AddMenuItem(menuafk ,0,"Retour au jeu");
AddMenuItem(menuafk ,0,"Quitter le jeu");
}
return 1;
}

public OnGameModeExit()
{
return 1;
}


J'aurais besoin de votre aide s'il vous plait. :wall
« Modifié: 05 Juillet 2012, 23:33:10 par Alexandre_Leborgn »

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName
« Réponse #3 le: 05 Juillet 2012, 23:32:40 »
Il faut utiliser strcmp pour comparer les noms autorisés à lancer le mode fly et le nom du joueur qui tape la commande.
T'as pas le droit de déclarer des variables de type Texte comme tu le fais pour des nombres ("array must be indexed" c'est que l'index de ton array (le nombre entre crochets) n'est pas présent)
D'ailleurs ton système ne vaut pas grand-chose au niveau de la sécurité, tu devrais plutôt vérifier le rang admin (ça t'évitera ces problèmes-là d'ailleurs)
Désolé si c'est pas très clair mais j'ai pas codé depuis un bon moment et je m'y remets à peine.
++

Hors ligne Alexandre_Leborgn

  • *
  • Criminel
  • Messages: 35
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName
« Réponse #4 le: 05 Juillet 2012, 23:34:55 »
C'est bon pour l'erreur au niveau de l'array. Mais un nouveau probleme s'oppose a moi, je t'invite a lire mon 2eme message au dessus du tien, merci.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : error 033: array must be indexed; GetPlayerName + Nouveau probleme GM
« Réponse #5 le: 06 Juillet 2012, 09:04:16 »
Surement un conflit au niveau du nom des variables, essaye de ne pas avoir des variables de même nom sur les deux codes.

new Float:x, Float:y, Float:z;
et ...

new Float:x,Float:y,Float:z;

Hors ligne Alexandre_Leborgn

  • *
  • Criminel
  • Messages: 35
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName + Nouveau probleme GM
« Réponse #6 le: 06 Juillet 2012, 13:12:10 »
Ils ne sont pas indépendants l'un/l'autre ?

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : error 033: array must be indexed; GetPlayerName + Nouveau probleme GM
« Réponse #7 le: 06 Juillet 2012, 13:13:34 »
Je ne sais pas, mais c'est le seul problème que je vois.

Hors ligne Alexandre_Leborgn

  • *
  • Criminel
  • Messages: 35
    • Voir le profil
Re : error 033: array must be indexed; GetPlayerName + Nouveau probleme GM
« Réponse #8 le: 06 Juillet 2012, 13:39:06 »
J'ai passé les variables en locales, sa na pas résolu le probleme, une autre solution?

Double post
Bonjour,
J'ai résolu le problème, celui ci était un return 1; au lieu d'un return 0; à la fin du public OnPlayerCommandText.

Merci de m'avoir aider !  :-[
« Modifié: 06 Juillet 2012, 14:51:38 par Alexandre_Leborgn »