GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 16 Octobre 2010, 18:57:55
-
Bonjour à toutes et à tous,
pour éviter de flood, je cree un topic général.
je recomence le pawn, j'aimerasi savoir comment bloquer le bouton spawn dans le onplayerrequestclass.
Quand quand on clique dessus rien ne se passe.
Merci
-
Merci Dizi. Mais pourquoi return 0; ?
Comme je l'ai dit je recommence un GM de A à Z,
j'ai toujours fait la 2eme manniere de cette page
http://wiki.sa-mp.com/wiki/Using_strcmp%28%29 (http://wiki.sa-mp.com/wiki/Using_strcmp%28%29)
j'amerais savoir quel maniere est la meilleur, la plus rapide d'exécution.
Il en existe d'autre mais je ne les connais plus.
-
Arf, je l'ai fait, mais bon ça m'empêche de spawn maintenant xd
-
Salut,
Arf, je l'ai fait, mais bon ça m'empêche de spawn maintenant xd
au lieu de renvoyer une constante, passe par une variable qui te permettra d'autorisé le spawn lorsque tu le désirera.
Pour les commandes, le meilleur système actuellement est zcmd. Avec un petit nombre de commande, il n'est pas vraiment plus rapide (voir plus lent), par contre en augmentant le nombre de commandes il ne perd pas en vitesse, contrairement à tous les autres systèmes. De plus, il est très facile d'utilisation et permet un plein contrôle des commandes.
++Sim++
-
Un rp avec la méthode que j'utilise, ça va?
Double post
Désolé pour le double post, mais bon
Certaine fois quand je redémarre mon serveur, ça m'affiche " You are banned from this server ", obligé de deco reco, existe t il une solution?
Est il possible de désactiver la barre respect total qui s'affiche des fois? Car elle me fait crash.
Pour la méthode de dizi, j'ai fait return false; et dans mon dialogue de spawn un setspawninfo, puis spawn player et ça marche bien
-
J'ai le même problème. C'est chiant hein?
Edit: Fait /rcon gmx, mais tu rédemarres pas tout le serveur.
-
Une question,
Qu'est ce qui serais le mieux, niveau rapidite, et pratique,
un fichier pour chaque biz et maison,
avec
ValeurA=Z
ValeurB=Y
ValeurC=X
ou un fichier pour tout les bizs et un pour toutes les maisons?
Z,X,Y....
Merci d'avance
-
J'ai le même problème. C'est chiant hein?
Edit: Fait /rcon gmx, mais tu rédemarres pas tout le serveur.
En étant banni , tu ne peux pas utiliser les commande rcon ( ou alors dans la console ..)
Mais la commande "gmx" redémarre le serveur entièrement .
Oui entierement mais sa quitte les filterscripts et sa les relance pas.
-
Oui, mais la commande loadfs marche pas bien avec des maps, ils s'affichent à moitié!
-
Svp vous ecartez pas du sujet ^^
-
Une question,
Qu'est ce qui serais le mieux, niveau rapidite, et pratique,
un fichier pour chaque biz et maison,
avec
ValeurA=Z
ValeurB=Y
ValeurC=X
ou un fichier pour tout les bizs et un pour toutes les maisons?
Z,X,Y....
Merci d'avance
Un fichier pour chaque biz et un pour chaque maison.
L'avantage c'est que lors de la lecture (et de l'écriture), les accès aux fichiers sont simplifiés et seules les données concernées seront lues (ou écrites). C'est un gain de temps non négligeable.
De plus, si tu dois aller modifier à la main les données d'un biz ou d'une maison, leur recherche sera grandement facilité si tu n'as pas à chercher dans un fichier de plusieurs kilooctets.
++
Syg
-
Je me disait bien Syg. Merci !
Par contre lors du chargement :D ça sera moins cool je pense xD
-
Par contre lors du chargement :D ça sera moins cool je pense xD
Pas forcément, si tu nommes tes fichiers correctement (mais01, mais02, ...) tu peux les charger dans une boucle en construisant le nom du fichier dynamiquement (format (NomFichier, sizeof (NomFichier), "Mais%02d", i);).
Maintenant, si chaque nom à un format différent (LaPetiteMaisonBlanche, LaGrandeMaisonAvecUnToitAQuatrePans, LaCabaneEnBois...) se sera effectivement pas cool (long et chiant).
++
Sgy
-
Salut,
Par contre lors du chargement :D ça sera moins cool je pense xD
Pas forcément, si tu nommes tes fichiers correctement (mais01, mais02, ...) tu peux les charger dans une boucle en construisant le nom du fichier dynamiquement (format (NomFichier, sizeof (NomFichier), "Mais%02d", i);).
Maintenant, si chaque nom à un format différent (LaPetiteMaisonBlanche, LaGrandeMaisonAvecUnToitAQuatrePans, LaCabaneEnBois...) se sera effectivement pas cool (long et chiant).
++
Syg
en utilisant des noms complètement différent, c possible avec le plugin y_files. Suffit de mettre une extension particulière, les mettre dans un dossier.... enfin, un truc qui permet de les distinguer des autres fichiers. En utilisant ffind, on est capable de retrouver aisément tous les fichiers ayant un certain format dans un dossier.
++Sim++
-
J'ai pas chercher midi a quatorze heure, j'ai tout mis dans un dossier Maison, avec des nom Maison01.maison Maison02.maison
comme ça petite boucle et s'est bon ^^.
Je disais moins cool, car s'est lourd à charger ^^
Double post
Bonjour à toutes et à tous, j'ai un soucis,
j'ai crée ceci
if(strcmp(nom, MaisonInfos[JoueurInfos[playerid][jMaison]][mProprio], true) == 1) { Message(playerid,"~r~Vous n'etes pas proprietaire mais locataire."); return 1; }
pour savoir si le nom du proprietaire est le meme que celui qui tape la commande.
J'ai tester en lan,
Proprietaire Maxence_Aus
Nom du joueur Maxence_Aussems
et ça m'a mis qu'il etait les meme :s
-
tu peut utiliser cette astuce la
if(strcmp(nom, MaisonInfos[JoueurInfos[playerid][jMaison]][mProprio], true, strlen( nom )) == 1)
-
La seule valeur de retour testable de la fonction strcmp est 0 qui indique deux chaînes identiques.
strcmp ne renvoie 1 que dans de très rares cas (cas où les chaînes ne diffèrent que par leur dernier caractère).
Donc tester si le retour de strcmp vaut 1 conduira indéniablement à des erreurs.
Démonstration :
#include <a_samp>
main ()
{
}
public OnGameModeInit ()
{
new chaine1[128] = "chaine 0123456";
new chaine2[128] = "chaine 0123";
new chaine3[128] = "chaine 0123";
printf ("Result 1 : %d", strcmp (chaine1, chaine2));
printf ("Result 2 : %d", strcmp (chaine2, chaine3));
return 1;
}
Ce script produit l'affichage suivant :
[23:15:17] Result 1 : 3
[23:15:17] Result 2 : 0
Dans le cas où les deux chaînes ne sont pas identiques, la valeur de retour est 3 !! (je peux donner un explication du code retour de cette fonction si certains le veulent).
Donc je te conseille de remplacer ta ligne par celle-ci :
if(strcmp(nom, MaisonInfos[JoueurInfos[playerid][jMaison]][mProprio], true) != 0) { Message(playerid,"~r~Vous n'etes pas proprietaire mais locataire."); return 1; }
++
Syg
-
Merci Syg
Double post
J'ai un soucis
dans des callback de ce type
OnVehiclePaintjob(playerid, vehicleid, paintjobid)
le vehicleid commence a 1
Or moi dans mes new ça commence a 0.
J'ai bidouiller un carid = vehicleid-1,
mais y aurait il une solution, plus propre?
Merci d'avance
-
ah, oui désolé je n'avais pas remarqué qu'il avait mis strcmp() == 1
-
J'ai un soucis
dans des callback de ce type
OnVehiclePaintjob(playerid, vehicleid, paintjobid)
le vehicleid commence a 1
Or moi dans mes new ça commence a 0.
J'ai bidouiller un carid = vehicleid-1,
mais y aurait il une solution, plus propre?
Merci d'avance
Je n'ai peut-être pas compris ton problème mais je donne une réponse quand même.
Les ID de véhicules commencent effectivement à 1, on ne peut pas changer ça.
Si on veut faire correspondre chaque véhicule à un élément d'un tableau, il n'y a que 2 solutions :
1 - La tienne (vehicleid-1)
2 - Faire un tableau avec un élément supplémentaire et ne pas se servir de l'élément 0
++
Syg
-
je suis un boulet, j'ai fait une erreur dans mon save de veh, je commençait a 0 au lieux de 1
-
Bonjour a toute et a tous,
j'ai un soucis avec mes pickup et mes 3dtext
Quand je lance le serveur j'ai mic ça
CreatePickup(1273, 1, MaisonInfos[mEntreeX],MaisonInfos[mEntreeY],MaisonInfos[mEntreeZ], 0);
ça me cree le pickup et le 3d text mais en décalé sur la droite et avec +- 1 en dessous du Z que j'ai dans mon fichier stats.
Pourtant quand je le fait ig,
/entree maison
j'ai mis la meme chose
CreatePickup(1273, 1, MaisonInfos[mEntreeX],MaisonInfos[mEntreeY],MaisonInfos[mEntreeZ], 0);
et la le pick up et le 3d text se mette au bon endroit :s
Merci d'avance
-
quelqu'un a une solution?
-
Est il possible de désactiver la barre respect total qui s'affiche des fois? Car elle me fait crash.
J'ai vu que Scott avait posé la question dans ce Topic, mais que personne n'a répondu à celle là. J'en profite donc pour Redemander, Savez-vous s'il est possible d'enlever cette maudite Barre de respect total qui s'affiche de temps en temps et qui fait tant crash ? Si oui comment ?
Merci d'avance.
-
Salut, utilise sa : EnableStuntBonusForAll(0);
-
Salut, utilise sa : EnableStuntBonusForAll(0);
ça n'a rien avoir,
quelqu'un a une idée pour mon soucis de pickup?
-
Scott c'était pas pour toi mais pour kekey- ...
-
up
Double post
Quelqu'un a une solution?
-
Up ?
-
Récupe la position IG du pickup pour vérifier si c'est vraiment décaler.
Tu utilise une boucle pour récupérer l'id du pickup ou ton joueur est puis tu prend ses positions et tu les affiches :
for(new p = 0; p<sizeof(MaisonInfos); ++p)
{
format(string, sizeof(string), "X: %.3f Y: %.3f Z : %.3f" ,MaisonInfos[h][mEntreeX], MaisonInfos[h][mEntreeY], MaisonInfos[h][mEntreeZ]);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}
Pour informations le %.3f sert à afficher un nombre float avec 3 chiffres après la virgule.(pour mettre une meilleur comparaison )
A+, Sam.
:cheers
-
Voici le résultat.
[03:01:16] X: 1421.000 Y: -885.000 Z : 50.640 // Moi
[03:01:16] X: 1421.000 Y: -885.000 Z : 50.000 // Maison
Double post
Quand je fait ma commande ig pour déplacer une maison j'obtiens:
EntreeX=1421.000000
EntreeY=-885.000000
EntreeZ=50.640632
Bizard
-
Fait voir ton code pour placer une maison.
C'est la première fois que j'vois ça ^^ Quand on place un pickup la position se change auto..
Ta essayer dans placé plusieurs ? Voir si ça a toujours la même différence ou s'est aléatoire ?
-
Toujours la même diifference
if(strcmp(maison,"entree",true) == 0)
{
if(JoueurInfos[playerid][jAdmin]<5) { Message(playerid,"~r~Vous n'avez pas acces a cette commande."); return 1; }
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,grisbleu,"[Usage] (/a)dmin (ma)ison entree [IdMaison]");
return 1;
}
new idmaison = strval(tmp);
if(idmaison< 1 || idmaison >= MAX_MAISONS) { format(string,sizeof(string),"~r~La maison Id: ~y~%d ~r~n'existe pas. L'id de la derniere maison est: ~y~%d~r~.",idmaison,MAX_MAISONS-1); Message(playerid,string); return 1; }
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
MaisonInfos[idmaison][mEntreeX] = x;
MaisonInfos[idmaison][mEntreeY] = y;
MaisonInfos[idmaison][mEntreeZ] = z;
format(string,sizeof(string),"[Admin] L'admin %s à déplacé l'entrée de la maison %d.",nom,idmaison);
MessageAdminService(jauneclair,5,string);
LogAdmin(string);
SauvegardeMaison(idmaison);
UpdateTextMaison(idmaison);
return 1;
}
public UpdateTextMaison(maison)
{
new string[256];
DestroyPickup(MaisonInfos[maison][mPickup]);
Delete3DTextLabel(Text3D:MaisonInfos[maison][mTexte]);
if(MaisonInfos[maison][mVendue] == 0)
{
MaisonInfos[maison][mPickup] = CreatePickup(1273, 1, MaisonInfos[maison][mEntreeX],MaisonInfos[maison][mEntreeY],MaisonInfos[maison][mEntreeZ], 0);
format(string,sizeof(string),"Maison en vente: %s\nPrix: %d$",MaisonInfos[maison][mDescription],MaisonInfos[maison][mPrix]);
}
else
{
MaisonInfos[maison][mPickup] = CreatePickup(1239, 1, MaisonInfos[maison][mEntreeX],MaisonInfos[maison][mEntreeY],MaisonInfos[maison][mEntreeZ], 0);
if(MaisonInfos[maison][mLocation] == 0) { format(string,sizeof(string),"Maison de %s",MaisonInfos[maison][mProprio]); }
else { format(string,sizeof(string),"Maison de %s\nLocation: %d$/mois",MaisonInfos[maison][mProprio],MaisonInfos[maison][mPrixLocation]); }
}
Create3DTextLabel(string, textmaison,MaisonInfos[maison][mEntreeX],MaisonInfos[maison][mEntreeY],MaisonInfos[maison][mEntreeZ]+0.7,10.0,0,1);
return 1;
}
-
Là, je sèche. Essaye de chercher la différence dans le GM voir si quelque part on enleve 0.604
-
HS : Maintenant c'est commencé mais par convention, on mets les variables, les fonctions ... en anglais :)
-
HS : Maintenant c'est commencé mais par convention, on mets les variables, les fonctions ... en anglais :)
Par convention? Et moi par faciliter pour m'y retrouver dans ma langue maternelle je les met en fraçais.
Si non personne ne sais d'ou pourrais venir l'erreur, car mon code est juste je ne vois pas l'erreur.
-
Soucis de pick up résolut, en fait, au chargement du fichier, çj'avais mis strval au lieux de floatstr
:boulet
Si non, j'ai un soucis,
quand je fait un SetPlayerSkin dans un véhicule le joueur se retrouve droit avec les pied hors du véhicule, j'ai essayer des setplayerpos et des puttplayerinvehicle, mais rien n'y fait.
Il reste droit comme un poteau. Que faire?
Soucis 2: ^^, j'aimerais faire un SetPlayerHoldingObject
le soucis s'est que dans un véhicule, l'objet ne se met pas. Que faire?
Merci d'avance
-
Salut,
Soucis de pick up résolut, en fait, au chargement du fichier, çj'avais mis strval au lieux de floatstr
:boulet
Si non, j'ai un soucis,
quand je fait un SetPlayerSkin dans un véhicule le joueur se retrouve droit avec les pied hors du véhicule, j'ai essayer des setplayerpos et des puttplayerinvehicle, mais rien n'y fait.
Il reste droit comme un poteau. Que faire?
Soucis 2: ^^, j'aimerais faire un SetPlayerHoldingObject
le soucis s'est que dans un véhicule, l'objet ne se met pas. Que faire?
Merci d'avance
2 possibilité:
- chercher encore afin de trouver
- abandonner et simplement contourner le problème en interdisant ces choses en véhicule.
++Sim++
-
- chercher encore afin de trouver
Justement l'objet ne doit etre mis que dans le véhicule.
Je cherche xD, mais est ce possible?
-
je recherche toujours, quelqu'un n'aurais pas une solution car je seche la :s
-
Bonjour à toute et à tous,
j'aimerais savoir comment faire pour crypter mes mot de passe.
J'ai fait une recherche j'ai vu qu'il y en avait dans le register systeme de mc30
mais j'aime pas trop, et celle sur samp, hum, à 128 caractère ça fait beaucoup :D
Merci d'avance
-
Pour le cryptage des mots de passe, va voir dans mon topic.
Pour ton SetPlayerSkin dans un véhicule, tu applique tout simplement une animation (une anim ped, je te laisse trouver laquelle, c'est du genre 158 je crois).
Myk3L.
-
Pour le cryptage des mots de passe, va voir dans mon topic.
Pour ton SetPlayerSkin dans un véhicule, tu applique tout simplement une animation (une anim ped, je te laisse trouver laquelle, c'est du genre 158 je crois).
Myk3L.
Pas con :D, merci j'ai pas pensé a lui faire jouer l'animation ^^.
J'ai un autre soucis avec un système de mail en HTTP,
dans mon code quand j'essaye d'envoyer un texte avec des espace dans le body, il arrete, il n'envoi que ce qu'il y a avant l'espace.
J'ia essayé \n des astuce trouvé sur internet, mais rien en va.
Quelqu'un a une idée? Merci d'avance
-
up ? ^^
-
Salut,
sans vouloir te décevoir, je pense que très peu de gens ont utilisé les fonctions HTTP, très peu de chance que tu ait une réponse valable.
Tu serais mieux d'aller voir sur le forum officiel de sa-mp pour cette question.
++Sim++
-
Elle n'est pas bien cette fonction? Car pour un sendmail je ne vois pas d'autre solution, un plugin pour envoyer des mails sous linux j'en ai pas vu de bon
Merci
-
Salut,
Elle n'est pas bien cette fonction? Car pour un sendmail je ne vois pas d'autre solution, un plugin pour envoyer des mails sous linux j'en ai pas vu de bon
Merci
je n'ai pas dit que cette fonction n'est pas bien, j'ai simplement dit que peu de gens s'en servent. Déjà la plupart des gens n'ont pas le site web qui va avec. Ensuite, il faut avoir besoin de faire un lien direct avec le site. Pour la plupart des utilisations, on peut très bien le faire avec une base de données (par exemple la gestion des comptes).
++Sim++
-
S'est bon, je me suis fait un ptit fichier php ;)
Comme ça le texte je le met pas dans la requête mais directement dans le fichier.