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
-
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
-
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)
-
D4 ->
( Suite de CreateObject volontairement supprimé )
Il l'a pourtant bien dit.
EDIT : Pardon D4
-
oops pas vu xD
beh j'sais pas alors DSL
PS: Jeff ici moi c'es D4 ;)
-
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
-
5 - Ton chat les a mangé.
Expldr toujours de l'humour avec toi
-
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.
-
pourquoi tu n'utilise pas le MoveObject ??
-
Sa serai aussi envisagée, mais j'aimerai quand même comprendre pourquoi cela ne marche pas
-
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
-
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) ?
-
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
-
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 ?
-
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++
-
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
-
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++
-
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 ^^
-
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
-
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:
[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++
-
Ouais je vois que cela à été ajouter à leur antibug ^^
Comme celui du crash a cause des skin etc .....
-
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