GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: The Bird le 30 Novembre 2009, 19:21:57

Titre: Commande à objet => rien n'apparait
Posté par: The Bird le 30 Novembre 2009, 19:21:57
Bonjour,

J'ai mis au point un commande pour ouvrir et fermer les accès.
Ceci est la commande ( temporaire ) :

if(strcmp(cmd, "/fermerroute", true) == 0)
{
        if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader] == 1)
        {
   bdr1 = CreateObject
bdr2 = CreateObject
bdr3 = CreateObject
bdr4 = CreateObject
bdr5 = CreateObject
        bdr6 = CreateObject
        bdr7 = CreateObject
        bdr8 = CreateObject
        bdr9 = CreateObject
        bdr10 = CreateObject
        bdr11 = CreateObject
        bdr12 = CreateObject
        bdr13 = CreateObject
        routeferme = 1;
SendClientMessageToAll(COLOR_WHITE, "|___________ Annonce du Gouvernement ___________|");
SendClientMessageToAll(COLOR_BLUE, "Tous les accès principaux de la ville ont été fermés ");
        }
        else
        {
        SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas policier ");
        }
        return 1;
        }
        if(strcmp(cmd, "/ouvrirroute", true) == 0)
   {
        if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader] == 1)
        {
   DestroyObject(bdr1);
        DestroyObject(bdr2);
        DestroyObject(bdr3);
        DestroyObject(bdr4);
        DestroyObject(bdr5);
        DestroyObject(bdr6);
        DestroyObject(bdr7);
        DestroyObject(bdr8);
        DestroyObject(bdr9);
        DestroyObject(bdr10);
        DestroyObject(bdr11);
        DestroyObject(bdr12);
        DestroyObject(bdr13);
        routeferme = 0;
        SendClientMessageToAll(COLOR_WHITE, "|___________ Annonce du Gouvernement ___________|");
SendClientMessageToAll(COLOR_BLUE, "Tous les accès principaux de la ville ont été ouverts ");
        }
        else
        {
        SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas policier ");
        }
        return 1;
        }

( Suite de CreateObject volontairement supprimé )

Mais quand je fais la CMD, rien ne se passe.
Donc avant d'aller plus loin, il me faudrai comprendre ce problème.

routeferme corresponds à une variable pour empêcher l'utilisation des péage lors de la fermeture des accès

Merci de vos réponses
Titre: Re : Commande à objet => rien n'apparait
Posté par: Dark4ng3L le 01 Décembre 2009, 17:18:31
normal qu'ils ne se créent pas

       bdr1 = CreateObject
la rien n'es crée

           bdr1 = CreateObject(982,1306.9628,-1825.6549,13.2616,0.000000,0.000000,0);

la un objet ce crée

en espérant t'avoir aider

++ D4 ++
 8) 8)
Titre: Re : Commande à objet => rien n'apparait
Posté par: Jeffreeeey le 01 Décembre 2009, 17:23:18
D4 ->

Citer
( Suite de CreateObject volontairement supprimé )

Il l'a pourtant bien dit.

EDIT : Pardon D4
Titre: Re : Commande à objet => rien n'apparait
Posté par: Dark4ng3L le 01 Décembre 2009, 17:26:19
oops pas vu xD
beh j'sais pas alors DSL

PS: Jeff ici moi c'es D4 ;)
Titre: Re : Commande à objet => rien n'apparait
Posté par: Syg le 01 Décembre 2009, 17:27:59
Non, ce n'est pas ça, il a volontairement supprimé les paramètres de CreateObject (certainement pour éviter que quelqu'un lui vole). Il le dit dans son post.

Parmi les choses qui pourrait expliquer pourquoi tes objets n'apparaissent pas (du plus probable au moins probable) :
1 - Le test if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader] == 1) n'est pas vérifié donc on saute le bloc qui suit.
2 - Les coordonnées de tes objets ne sont pas correctes et les objets sont créés ailleurs que là où tu penses.
3 - Les ID de tes objets sont invalides (SAMP 0.3 filtre les ID des objets et ne crée pas les objets avec des ID invalides).
4 - Ta carte graphique n'arrive pas à afficher les objets.
5 - Ton chat les a mangé.

++
Syg
Titre: Re : Re : Commande à objet => rien n'apparait
Posté par: Dark4ng3L le 01 Décembre 2009, 17:30:01

5 - Ton chat les a mangé.

Expldr toujours de l'humour avec toi
Titre: Re : Re : Commande à objet => rien n'apparait
Posté par: The Bird le 01 Décembre 2009, 19:52:34
Citer

1 - Le test if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader] == 1) n'est pas vérifié donc on saute le bloc qui suit. Possible, comment vérifié ?
2 - Les coordonnées de tes objets ne sont pas correctes et les objets sont créés ailleurs que là où tu penses. Je n'ai pas encore eu de problèmes avec MTA, peu probable
3 - Les ID de tes objets sont invalides (SAMP 0.3 filtre les ID des objets et ne crée pas les objets avec des ID invalides). Il s'agit des roadblock ( id 4514 4508 16437 1282 ), donc peu probable
4 - Ta carte graphique n'arrive pas à afficher les objets. Nvidia Geforce 9500 GT 512mo DDR2, non je pense pas  :lmao
5 - Ton chat les a mangé. Le comique n'a jamais tué personne

++
Syg

Double post
Bien donc suite à des tests :

=> suppression de la condition " si le joueur est policier "
=> suppression de la partie else

Résultat ( pas d'erreur de compile ) : Aucun objet créer.
Titre: Re : Commande à objet => rien n'apparait
Posté par: cristab le 01 Décembre 2009, 20:36:34
pourquoi tu n'utilise pas le MoveObject ??
Titre: Re : Commande à objet => rien n'apparait
Posté par: The Bird le 01 Décembre 2009, 21:15:02
Sa serai aussi envisagée, mais j'aimerai quand même comprendre pourquoi cela ne marche pas
Titre: Re : Commande à objet => rien n'apparait
Posté par: cristab le 01 Décembre 2009, 21:32:16
if(strcmp(cmdtext, "/fermerroute", true) == 0)
{
       
    bdr1 = CreateObject
bdr2 = CreateObject
bdr3 = CreateObject
bdr4 = CreateObject
bdr5 = CreateObject
        bdr6 = CreateObject
        bdr7 = CreateObject
        bdr8 = CreateObject
        bdr9 = CreateObject
        bdr10 = CreateObject
        bdr11 = CreateObject
        bdr12 = CreateObject
        bdr13 = CreateObject
        routeferme = 1;
SendClientMessageToAll(COLOR_WHITE, "|___________ Annonce du Gouvernement ___________|");
SendClientMessageToAll(COLOR_BLUE, "Tous les accès principaux de la ville ont été fermés ");
       
        return 1;
        }

et comme ceci
Titre: Re : Commande à objet => rien n'apparait
Posté par: Diablo62 le 01 Décembre 2009, 21:57:03
Salut.

Je ne connais pas la bien différence entre CreateObject et CreateStreamObject, mais vu que le CreateStreamObject sert pour faire bouger les Objets (et donc que la personne le vois bouger ou non), ce ne serait plutôt pas celui là à utiliser ?

Sinon, (je ne sais pas comment tu as procédé, mais c'est une idée qui me passe comme ça), il ne serait pas plus simple de créer les Objets dans public OnGameModeInit() en mettant CreateStreamObject et faire que lorsque le flic fait sa commande, les Barrières/Herses/Poteau ou autres sort du Sol (pour faire Style que ça apparait) ou du coté (si tu prévoit une barrière coulissante par exemple) ?
Titre: Re : Commande à objet => rien n'apparait
Posté par: Syg le 01 Décembre 2009, 22:38:27
Diablo, si il se sert de CreateObject, c'est qu'il ne doit pas utiliser de streamer d'objets.
De plus, CreateStreamObject ne sert pas à faire bouger un objet mais à créer un objet "streamé", c'est à dire un objet qui n'apparait au joueur que quand ce dernier en est proche.

The Bird, montre au moins un de tes CreateObject avec tous les paramètres, un dont tu es sur qu'il n'apparait pas, peut-être que ton erreur saute aux yeux.

++
Syg
Titre: Re : Commande à objet => rien n'apparait
Posté par: The Bird le 02 Décembre 2009, 07:56:43
bdr2 = CreateObject(4508, -1679.3513183594, 539.49700927734, 39.65845489502, 0, 0.48788452148438, 221.1962890625);

Double post
J'ai finalement utilisé des MoveObject, sa marche.

Question : Il y'a une liùite d'objet dans samp, depuis que le streamer est integrer ?
Titre: Re : Commande à objet => rien n'apparait
Posté par: S!m le 03 Décembre 2009, 16:01:58
Salut,

oui, le "streamer intégré" comme tu dit, ne concerne que les voitures, les pickups etc.... bref pratiquement tout sauf les objets

de très bon streamer d'objets existent néanmoins

++Sim++
Titre: Re : Commande à objet => rien n'apparait
Posté par: Syg le 03 Décembre 2009, 16:17:06
Et pour compléter le post de Sim et répondre à ta question, la limite théorique est de 254 objets.
Mais sur certaines bonnes configurations (client), on peut aller jusqu'à 300 et sur d'autres, moins performantes, le jeu (client) plante quand il y a plus de 150 objets.
SAMP conseille donc de ne pas dépasser 150 objets.
NB : Tous ceci devient obsolète si on utilise un streamer d'objet qui permet de ne pratiquement plus avoir de limite.

Voici le lien pour les limites : http://wiki.sa-mp.com/wiki/Limits (http://wiki.sa-mp.com/wiki/Limits)

++
Syg
Titre: Re : Commande à objet => rien n'apparait
Posté par: S!m le 03 Décembre 2009, 17:05:40
Salut,

je croyais que SA-MP ne créais plus les objets après la dite limite

je vais essayer un test pour voir

++Sim++
Titre: Re : Commande à objet => rien n'apparait
Posté par: Ssk le 03 Décembre 2009, 17:07:05
On peut toujours en crée plus que la limite ^^


Mais moi je vous conseille un plugin qui est sur le forum samp qui permet de streamer les objets ^^

J' ai pas encore essayez ( et je le ferais pas lol ) mais ca doit toujours etre plus rapide qu' un code pawn ^^
Titre: Re : Re : Commande à objet => rien n'apparait
Posté par: Syg le 03 Décembre 2009, 21:42:13
Salut,

je croyais que SA-MP ne créais plus les objets après la dite limite

je vais essayer un test pour voir

++Sim++
En fait, c'était le cas avec le version 0.2 de SAMP, il était possible avec une grosse machine de créer 250 objets (alors que la limite officielle était de 200).
Par contre, je n'ai jamais testé de dépasser la limite de 254 objets avec la 0.3 mais j'ai extrapolé. Il se peut que le serveur stoppe la création des objets lorsque 254 objets ont déjà été créés pour justement éviter les plantages que les joueurs n'arrivent pas à expliquer.
Je serais content de connaître les résultats de tes tests Sim.

++
Syg
Titre: Re : Commande à objet => rien n'apparait
Posté par: S!m le 03 Décembre 2009, 23:09:58
Salut,

après une petite vérification, il semble que seuls 254 objets puissent être créés.

voici la partie intéressante de mon log:

Citer
[17:05:53] Object ID: 249
[17:05:53] Object ID: 250
[17:05:53] Object ID: 251
[17:05:53] Object ID: 252
[17:05:53] Object ID: 253
[17:05:53] Object ID: 254
[17:05:53] Object ID: 255
[17:05:53] Object ID: 255
[17:05:53] Object ID: 255
[17:05:53] Object ID: 255

255 correspondant à INVALID_OBJECT_ID...

++Sim++
Titre: Re : Commande à objet => rien n'apparait
Posté par: Ssk le 04 Décembre 2009, 07:53:43
Ouais je vois que cela à été ajouter à leur antibug ^^

Comme celui du crash a cause des skin etc .....
Titre: Re : Commande à objet => rien n'apparait
Posté par: Syg le 04 Décembre 2009, 09:30:28
Oui, ce n'est pas plus mal, ça évite les surprises.
Il y a même un filtre sur le modèle des objets, si on essaie de créer un objet avec un modèle invalide, l'objet n'est pas créé et je crois que le log contient une ligne qui dit que le modèle est invalide.

++
Syg