GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: mjlayak le 24 Novembre 2010, 15:56:29
-
Bonjours comme beaucoup de personne je vais faire mon topic .
Donc j'ai un probleme avec un systeme de Rang .
J'ai crée les commandes pour l'etre mais quand on tape la commande sa nous dis Tu passe rank 1 Tu passe rank 2 tu passe reank 3 .....( J'ai 500 de score )
J'ai crée pour que on puisse tapé la commande que quand on est entre 2 niveaux mais sa dis tout et on reste rank 1
Merci .
if(strcmp(cmdtext, "/rankup", true) == 0 || strcmp(cmdtext, "/montergrade", true) == 0)
{
new score;
GetPlayerScore(playerid,score);
{
if (score >= 1)
if (score <= 4)
rank[playerid] = 1;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 1");
}
{
if (score >= 5)
if (score <= 9)
rank[playerid] = 2;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 2");
}
{
if (score <= 10)
if (score >= 19)
rank[playerid] = 3;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 3");
}
{
if (score >= 20)
if (score <= 24)
rank[playerid] = 4;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 4");
}
{
if (score >= 25)
if (score <= 49)
rank[playerid] = 5;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 5");
}
{
if (score >= 50)
if (score <= 74)
rank[playerid] = 6;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 6");
}
{
if (score >= 75)
rank[playerid] = 7;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 7");
}
return 1;
}
if(strcmp(cmdtext, "/myrank", true) == 0 || strcmp(cmdtext, "/mongrade", true) == 0)
{
{
if(rank[playerid]==1)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 1");
}
{
if(rank[playerid]==2)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 2");
}
{
if(rank[playerid]==3)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 3");
}
{
if(rank[playerid]==4)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 4");
}
{
if(rank[playerid]==5)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 5");
}
{
if(rank[playerid]==6)
SendClientMessage(playerid,COLOR_GREEN,"Tu est rank 6");
}
-
et ça compile ça ? Oo
Indente ton code et reposte..
-
Désolé mais dans le script il est bien indenté c'est quand je le copie collé du script que sa fais sa .
-
{
if( ...
c'est correcte tu crois ?
-
j'en sais rien , comment tu veux que je le mettes comme sa ? :
if(strcmp(cmdtext, "/rankup", true) == 0 || strcmp(cmdtext, "/montergrade", true) == 0)
{
new score;
GetPlayerScore(playerid,score);
if (score >= 1)
if (score <= 4)
rank[playerid] = 1;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 1");
if (score >= 5)
if (score <= 9)
rank[playerid] = 2;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 2");
if (score <= 10)
if (score >= 19)
rank[playerid] = 3;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 3");
if (score >= 20)
if (score <= 24)
rank[playerid] = 4;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 4");
if (score >= 25)
if (score <= 49)
rank[playerid] = 5;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 5");
if (score >= 50)
if (score <= 74)
rank[playerid] = 6;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 6");
if (score >= 75)
rank[playerid] = 7;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 7");
return 1;
}
Double post
Désolé d'avoir poster en faite je viens de voir que mon script et totalement faux , je vais en refaire un autre .(Désolé double poste )
-
Il faut vraiment que t'aille apprendre comment utiliser les conditions,
if (score >= 1)
if (score <= 4)
rank[playerid] = 1;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 1");
C'est pas vraiment beau et ça fonctionnera pas, comme ça c'est mieu
if ( score >= 1 && score <= 4 )
{
rank[playerid] = 1;
SendClientMessage(playerid,COLOR_GREEN,"Tu passe rank 1");
}
-
Salut à toi mjlayak,
Je pense que tu devrais aller faire un tour sur l'un des très bons tutoriaux de Sim, plus particulièrement sur celui des opérateurs.
http://www.gtaonline.fr/forums/index.php/topic,6175.0.html (http://www.gtaonline.fr/forums/index.php/topic,6175.0.html)
De plus, il est stipulé qu'il faut obligatoirement mettre son code sur Pastebin si celui-ci contient plus de 20 lignes, or le tiens en contient près de 50.
http://www.gtaonline.fr/forums/index.php/topic,1098.0.html (http://www.gtaonline.fr/forums/index.php/topic,1098.0.html)
Je redis également ce qui à déjà été dit, mais tu indente vraiment mal ton code, et même un copier/coller ne déforme pas à se point un code !
-
Merci sa marche !
http://pastebin.gtaonline.fr/pastebin.php?show=939 (http://pastebin.gtaonline.fr/pastebin.php?show=939)
-
Merci sa marche !
http://pastebin.gtaonline.fr/pastebin.php?show=939 (http://pastebin.gtaonline.fr/pastebin.php?show=939)
Tu peut aussi utilise else if pour les autres conditions ^^
-
J'ai fais encore mieux , au lieu de tapé une commande et de crée un fichier qui sauvegarde le score ET le rank , j'ai crée un fichier qui sauvegarde que le score mais j'ai mis dans le OnPlayerSpawn le code comme sa des que le joueurs spawn il passe sont grade automatiquement .
-
Je te conseil également d'utiliser:
else ifC'est plus pratique et tu peux plus facilement gérer des erreurs ou tout simplement donner une explication.
http://pastebin.gtaonline.fr/pastebin.php?show=940 (http://pastebin.gtaonline.fr/pastebin.php?show=940)
-
Merci bien !
-
Petite question. Comment faut-il faire un fichier comme ça?
-
Utilise DINI et DUDB pour crée les fichier .
-
Syg à posté un très bon tutoriel à ce sujet.
http://www.gtaonline.fr/forums/index.php/topic,8555.0.html (http://www.gtaonline.fr/forums/index.php/topic,8555.0.html)
-
Salut , j'ai une question .
Donc en faite j'utilise le systeme normale pour les commandes , dans mon GM et Sscanf dans tout mes Filter Script , avec sscanf je peux prendres l'id d'une personne dans une commande pour lui faire une action ( Exemple Slap ) , alors que dans le systemes normales je ne sais pas comment faire et si il y en a la possibilité de recuperer l'id de UNE seul personne et de lui affligé un action ( Kick Slap ) .
-
Je comprend pas trop ce que tu essais de dire, mais je vais essayer de te répondre ^^
Tu utilise un tmp = strtok(cmdtext, idx); pour récupérer ce que tu va écrire apres le /kick ( par exemple )
tu verifie si on a bien entré quelque chose après.
if(!strlen(tmp)) SendClientMessage(playerid, COLOR_GRAD2, "UTILISE: /kick [ID du Joueur]");
Pour verifier si ce qui a été rentré est bien un joueur , tu met giveplayerid = ReturnUser(tmp);
et tu regarde enfin si le joueur existe : if(giveplayerid != INVALID_PLAYER_ID)
et tu met la fin de ta commande.
+Lychaos++Ster+
-
Merci !
-
Il te parle de sscanf et toi tu lui parle de strtok, il n'y à pas un problème là ?
-
Non en faite , j'utilise sscanf sur les FS , et le systeme "Normale" sur le GM , et je veux prendre l'id d'un joueurs avec le systeme normale sur le GM .
-
J'ai pourant chercher mais je ne trouves pas le moyen pour muté . je vous expliques je fais un syteme de mute par insulte . Et j'aimerais que si on insulte on soit mute . J'ai chercher dans plusieurs systeme admin/Gm j'ai trouvé que
new pmuted;
#define mute s_muted[%0]
..
Donc j'ai tenter des deux codes . Je savais que sa marcher pas mes peut etre par "Chance" sa l'aurait pus , mais non .
J'ai chercher une forward avec un code pour etre muté , rien trouvé les commandes juste mute(playerid); Donc qui aurait une idée pour muté
Edit : Ce que je cherchers c'est un code pour que si le joueurs est mute il ne puisse parler ( Peut etre dans OnPlayerText ) mais quel code ...
Re-Edit :
En faite j'avais oublier de mettre . return 0;
Dans le OnPlayerText
if(Mute(playerid))
{
SendClientMessage(playerid,COLOR_RED,"Tu est mute");
return 0;
}
-
Depuis hier je travailles sur un Insulte=>Mute , mais le probleme c'est que si le joueurs dit
"Tu est con" sa fait rien il faut qu'il dise con .
Comment faire pour que quand il dise une phrase avec le mot Con il soit mute . Quelques soit la phrase car je vais pas aller m'amuser a enumerer je ne sais combien de phrase pour finalement 1 mot .
-
Strfind http://wiki.sa-mp.com/wiki/Strfind (http://wiki.sa-mp.com/wiki/Strfind)
-
Merci ! .
-
Bonjours a tous , j'ai un petit probleme avec le nomoff , le nom disparait quelques secondes puis reaparait .
if(strcmp(cmd, "/nomoff", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pNomoff] == 0)
{
if(PlayerInfo[playerid][pLevel] >=5)
{
for(new i = 0; i < MAX_PLAYERS; i++)
ShowPlayerNameTagForPlayer(i, playerid, false);
PlayerInfo[playerid][pNomoff] = 1;
SendClientMessage(playerid, COLOR_WHITE, " Vous etes en nom off [Pour le remettre /nomon ].");
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Une personne devient meconaissable");
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Vous etes deja en nomoff!.");
return 1;
}
}
return 1;
}
Merci de vos aides .
-
N'ayant pas reçu de reponce pour le nomoff , je dessides de le mettre de coté en attendant , mais j'ai un autres soucis .
Je tapes une commande /poserradar , sa pose un create object , sa installe les positions du GPS , et si un joueur passe a plus de 100 sa le flash mais j'aimerais savoir comment retirer les positions , l'object je sais comment faire .
Mais pour retirer une GetPlayerPos , et l'action du joueur quand il fait un /repreradar tout les actions soit supprimé . ( Comme si il avait jamais tapé pas commande ) .
-
Alors personne a une idée ?
-
sans savoir comment est fait ton /poseradar sa va etre dur
Pour avoir des reponse veuillez bien formuler vos phrases ainsi que les codes qui peuvent nous aider a vous repondre
Merci
-
Quand je dis /poserradar c'etais un exemple , j'aimerais juste savoir dans l'ensemble si il exite une fonction ou quelque chose pour annulé l'effet d'une commande .
-
Pouvez vous m'indiquez ou ce trouve l'erreur dans ce petit code .
ratio = pia[playerid][tuer]/pia[playerid][mort];
scorea = pia[playerid][tuer]/pia[playerid][mort]*aht/5;
Quand je tapes la commande /stats sa dit server unknow commande . Si je retires le codes sa marche tres bien .
Hier cela marcher tres bien . De plus , quand je fais avec un floatdiv ; floatmul ... sa me donne des nombres comme 26806936783.000000 alors que si on fait le calcul avec la calculette dans nous donnes les bon nombres 1600 ...
-
Retourne tu une valeur ?
-
Oui 1 , mais sa marche que quand je retires le code du calcul ... ???
-
Petit up .
-
Personnne peut m'aider alors ?
-
S'il vous plait , un coup de main serait la bienvenu .
-
Salut,
si personne n'as posté, c'est qu'il y a clairement un manque d'information pour t'aider.
En upant le topic (trop tôt d'ailleurs), tu devrais donner des détails supplémentaires. Le code que tu as fourni semble parfaitement en règle, du moins pris hors contexte comme ça.
Fais attention à ce genre de chose quand tu up.
++Sim++
-
Je reup le sujet .
if(strcmp(cmdtext,"/stats",true) == 0)
{
new tmp[148];
new sarank[56];
new arank[56];
new aht;
aht = GetPlayerMoney(playerid);
pias[playerid][ratio] = (pia[playerid][tuer])/(pia[playerid][mort]);
pias[playerid][scorea] = pia[playerid][tuer]/pia[playerid][mort]*aht/4;
............
SendClientMessage(playerid, COLOR_GREY,"----------------------------------STATS---------------------------------------");
format(tmp, sizeof(tmp), "-Nombre de personne tuer : %d --- Nombre de fois mort : %d --- Argent : %d -",pia[playerid][tuer],pia[playerid][mort],GetPlayerMoney(playerid));
SendClientMessage(playerid, COLOR_BLUE,tmp);
format(tmp, sizeof(tmp), "-Mini gang : Aucun --- Ratio : %.4f --- Score Joueur : %d --- Rang Admin : %s-",pias[playerid][ratio] , pias[playerid][scorea] , arank );
SendClientMessage(playerid, COLOR_WHITE,tmp);
format(tmp, sizeof(tmp), "-Grade Millitaire :%s --- Event1 : %d --- Event2 : %d --- Event3 : %d -", sarank,pia[playerid][event1],pia[playerid][eventa2],pia[playerid][eventa3]);
SendClientMessage(playerid, COLOR_RED,tmp);
format(tmp, sizeof(tmp), "-Heure Jouer : %d-",pia[playerid][tempsjouer]);
SendClientMessage(playerid, COLOR_GREEN,tmp);
return 1;
}Et j'ai un probleme avec le Frace , quand je /saverace [Nom] ou meme sans nom sa m'affiche un menu mais j'ai beaux appuyé sur le menu de mon choix , et rien sa quitte le menu mais rien d'autre ( Aucun message , rien dans le dossier fRace )
Merci .
-
pour le ratio je fait pas comme sa moi
new Float:ratio=floatdiv(pia[playerid][tuer], pia[playerid][mort]);
format(str, 128, "%.2f", ratio);
apres je ne sais pas si c'est ce ue tu veutv^^
-
Quand je fais avec FloatDiv comme je les dis plus haut sa donne des nombres tres long ( Meme si c'est 4:2) sa me donne genre 956730696537
Et le probleme des calcules c'est que il marche mais 1 fois sur 5 .
-
regarde mieux mon format
-
J'ai bien chercher mais sa reponces .
J'ai un probleme , je ne vois aucun joueur bougé sur mon serveur . Eu non plus ne voille n'y moi n'y les autres joueurs .
Je les TP ( Je change les interieur et vw ) rien ne change il me voille pas je les vois pas . Il me tire dessus je perds rien ...
D'ou sa peut venir , merci .
-
Bug resolvé cela venais d'un If qui n'etais pas suivis une { .
Je plannes maintenant sur un autre probleme .
http://pastebin.com/aRZzkNND (http://pastebin.com/aRZzkNND)
Comment recupéré le GetPassword avant que le joueur soit connecté je vois pas dans LoadUserFile ou il est recupéré .
Source :
AdminOnDuty de Sim
J-Registeur de Xolokos
-
Salut , je ne vois pas d'ou vien le probleme :
Je fais le systeme de logs mais quand j'enregistre sa mes dans le fichier 102 alors que avec des printf l'or de la sauvegarde sa marque bien le mot de passe .
printf("3) %s",GetPassworda(playerid));
format(tmp, sizeof(tmp), "admin=%d\r\n", GetAdminLevel(playerid));
fwrite(user, tmp);
format(tmp, sizeof(tmp), "pass=%s\r\n", GetPassworda(playerid));
fwrite(user, tmp);
[16:54:55] 3) testmdp
j'ai mis d'autre printf ailleur rien ne change c'est le meme mot de passe .
D'ou sa peut venir , merci d'avance .