GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jcvag44800 le 26 Février 2011, 15:17:31
-
Salut tout le monde !
Voila, j'ouvre mon topic !
J'ai donc une première question
A quoi sert ces chiffres :
{1958.3783,1343.1572,15.3746},
Par exemple, j'ai tout ces chiffres :
new Float:gRandomPlayerSpawns[23][3] = {
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2483.5977,1222.0825,10.8203},
{2637.2712,1129.2743,11.1797},
{2000.0106,1521.1111,17.0625},
{2024.8190,1917.9425,12.3386},
{2261.9048,2035.9547,10.8203},
{2262.0986,2398.6572,10.8203},
{2244.2566,2523.7280,10.8203},
{2335.3228,2786.4478,10.8203},
{2150.0186,2734.2297,11.1763},
{2158.0811,2797.5488,10.8203},
{1969.8301,2722.8564,10.8203},
{1652.0555,2709.4072,10.8265},
{1564.0052,2756.9463,10.8203},
{1271.5452,2554.0227,10.8203},
{1441.5894,2567.9099,10.8203},
{1480.6473,2213.5718,11.0234},
{1400.5906,2225.6960,11.0234},
{1598.8419,2221.5676,11.0625},
{1318.7759,1251.3580,10.8203},
{1558.0731,1007.8292,10.8125},
//{-857.0551,1536.6832,22.5870}, Out of Town Spawns
//{817.3494,856.5039,12.7891},
//{116.9315,1110.1823,13.6094},
//{-18.8529,1176.0159,19.5634},
//{-315.0575,1774.0636,43.6406},
{1705.2347,1025.6808,10.8203}
};
Voila, je n'ai jamais trop compris à quoi ça servais
Merci de m’éclaircir dessus s'il vous plait
-
Les coordonnées de position X, Y, Z
-
Oui merci , mais
Enfin je voulais dire, pourquoi entre accolade ? et dans un new ??
-
Ba logiquement, c'est les positions aléatoires ("random") ou tes joueurs vont spawn
-
Oui mais pourquoi plusieurs pos ???
-
Elles sont entre { } car ce sont des valeurs d'un tableau qui est déclarer ici :
new Float:gRandomPlayerSpawns[23][3]
Avec le nombre 23 étant le nombre de cellules du tableau.
Ce sont des positions aléatoires où va spawn ton joueur.
En espérant t'avoir aidé ;)
-
Ah d'accord merci !
C'est donc , par exemple
Je clique sur spawn, je vais spawn à la pos 1
Et si je reclique sur spawm, je vais spaw à la pos 2 ??
-
De rien ! ;)
Je voyais pas çà comme sa moi xD.
En gros, il spawn au hasard quoi, j'avais au même endroit..sa change. Enfin je crois que c'est sa ^^
-
Oui, à mon avis tu as raison, je pensais un peut comme toi
Quelqu'un pour confirmer s'il vous plait ?
-
Je vais expliqué avec des mots plus technique.
Ceci est un tableau, mais pas un simple tableau, un tableau multidimensionnel.
Ici, tu ne fais que déclarer le tableau, donc pas encore de notion de nombre aléatoire (qui ne sont pas réellement aléatoire).
Voici un exemple sous forme de code.
new TableauMultiDimensionnel[5][2] = {
{0, 1}, // 0
{2, 3}, // 1
{4, 5}, // 2
{6, 7}, // 3
{8, 9} // 4
};
TableauMultiDimensionnel[0][0]; // = 0
TableauMultiDimensionnel[0][1]; // = 1
TableauMultiDimensionnel[1][0]; // = 2
TableauMultiDimensionnel[1][1]; // = 3
TableauMultiDimensionnel[2][0]; // = 4
TableauMultiDimensionnel[2][1]; // = 5
TableauMultiDimensionnel[3][0]; // = 6
TableauMultiDimensionnel[3][1]; // = 7
TableauMultiDimensionnel[4][0]; // = 8
TableauMultiDimensionnel[4][1]; // = 9
-
Voila tout le monde,
J'ai voulu faire une commande de "makeadmin" en m'aidant du modèle d'une commande de LARP :blink
La voici
if(strcmp(cmdtext, "/makeadmin", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new tmp[256];
new idx;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xC0C0C0FF, "{00FF00}USAGE: {C0C0C0}/makeadmin [playerid/Nom] [level]");
return 1;
}
para1 = ReturnUser(tmp);
new para1;
new level;
level = strval(tmp);
tmp = strtok(cmdtext, idx);
if(PlayerInfo[playerid][pAdminLevel] >= 5)
{
if(IsPlayerConnected(para1))
{
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdminLevel] = level;
printf("AdmCmd: %s a mis %s level %d admin.", sendername, giveplayer, level);
new string[256];
format(string, sizeof(string), " Tu es maintenant level {00FF00}%d{FFFFFF} admin.", level);
SendClientMessage(para1, 0xFFFFFFFF, string);
format(string, sizeof(string), " Vous avez mis {00FF00}%s{FFFFFF} level {00FF00}%d{FFFFFF} admin.", giveplayer,level);
SendClientMessage(playerid, 0xFFFFFFFF, string);
}
}
else
{
SendClientMessage(playerid, 0xC0C0C0FF, "Vous n'êtes pas autorisé à utiliser cette commande !");
}
}
return 1;
}
J'ai n'ai aucune érreur & aucun warning,
Cependant ,
Quand je vais IG :
Quand je ne suis pas admin : Sa me dit bien que la commande n'est pas autorisé à bibi
Quand je suis admin : rien ne se passe :'(
J'aurais penser à une érreur dans les strings ?
Merci à vous
PS : Mettez moi sur le chemin au lieu de me donner la réponse, sa m'aideras pour les autres commande :cheers
-
Salut,
Concernant ton tableau, quand tu dit au hasard, jamais au même endroit....
Au hasard oui, jamais au même endroit ... non.
Tu peut apparaitre plusieurs fois de suite au même endroit, puis apparaitre à d'autres positions... c'est ça du hasard.
En ce qui concerne le tableau, et non pas le hasard:
Chaque ligne correspond à une position. Donc, dans ton tableau, tu as 23 positions différentes où les joueurs peuvent apparaitre.
Ensuite, quand tu veut faire ton spawn aléatoire, tu vas choisir, au hasard, une de ces 23 positions. C'est là que le hasard intervient, via la fonction random(max).
Pour ta commande de makeadmin, le strtok cause problème, il commence là lecture au premier caractère et donc ne donne pas la bonne information. Tu devrais ajuster la valeur initiale de idx.
Il peut y avoir d'autres erreurs, mais celle ci empêche clairement ta commande de fonctionner.
++Sim++
-
Ok merci pour ta réponse Sim
Mais je ne comprend pas quand tu dit " Tu devrais ajuster la valeur initiale de idx. "
C'est à dire ? Faire comme ceci : new idx = 9;
Je ne sais pas vraiment ^^'
Merci .
-
Salut,
Ok merci pour ta réponse Sim
Mais je ne comprend pas quand tu dit " Tu devrais ajuster la valeur initiale de idx. "
C'est à dire ? Faire comme ceci : new idx = 9;
De rien.
Tout à fait, mais 9 n'est pas la bonne valeur. Sinon, tu peut toujours faire deux appel à strtok. Au moment de l'exécution ce sera un peu plus lent, mais vu la différence....
++Sim++
-
C'est bon j'ai réussi !
Merci encore Sim ;)
Et maintenant, je viens de faire une commande /mute, je prossédé comme ça :
if(strcmp(cmd, "/mute", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xC0C0C0FF, "USAGE: /mute [idjoueur]");
return 1;
}
new playa;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdminLevel] >= 1)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
new giveplayer[MAX_PLAYERS];
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playa][pMuted] == 0)
{
PlayerInfo[playa][pMuted] = 1;
printf("AdmCmd: %s a muté %s",sendername, giveplayer);
new string[256];
format(string, sizeof(string), "AdmCmd: %s a été muté %s",giveplayer ,sendername);
ABroadCast(0xFF7575FF,string,1);
}
else
{
PlayerInfo[playa][pMuted] = 0;
printf("AdmCmd: %s démute %s",sendername, giveplayer);
new string[256];
format(string, sizeof(string), "AdmCmd: %s a démuté %s",giveplayer ,sendername);
ABroadCast(0xFF7575FF,string,1);
}
}
}
}
else
{
SendClientMessage(playerid, 0xC0C0C0FF, "Tu n'es pas autorisé à utiliser cette commande !");
}
}
return 1;
}public OnPlayerText(playerid, text[])
{
new Muted[MAX_PLAYERS];
if(Muted[playerid] == 1) return 0;
return 1;
}
Et je peut toujours parler ...
La encore, pouvez vous me mettre sur le chemin svp ?
Merci
-
Tu peut apparaitre plusieurs fois de suite au même endroit, puis apparaitre à d'autres positions... c'est ça du hasard.
C'est ce que j'ai voulu dire mais avec mes mots :P. Mais sinon oui je suis d'accord avec cela Sim ;).
-
Merci à toi :D
PS : Le beug commande /mute est réglé ::)
Maintenant j'aimerais crée une course ( /race )
Mais je ne sait pas vraiment bien m'y prendre
J'ai regardé ici :
http://wiki.sa-mp.com/wiki/SetPlayerRaceCheckpoint (http://wiki.sa-mp.com/wiki/SetPlayerRaceCheckpoint)
http://wiki.sa-mp.com/wiki/IsPlayerInCheckpoint (http://wiki.sa-mp.com/wiki/IsPlayerInCheckpoint)
Mais je n'ai sais pas trop par ou commencer :S
J'ai aussi regardé ceci http://wiki.sa-mp.com/wiki/YSI:Races (http://wiki.sa-mp.com/wiki/YSI:Races)
Mais je n'ai pas trop compris ^^
Merci à vous
-
Tu as un FS vraiment bien qui s'appelle YRACE. Tu peux t'aider de celui là pour faire le tient ;).
-
Salut tout le monde !
J'ai voulu faire un système d'annonce automatique.
J'ai donc procédé comme ceci :
forward Annonce();public OnGameModeInit()
{
print("Démarrage du Timer...");
SetTimer("Annonce",1000,false);
....public Annonce()
{
SendClientMessageToAll(0xFFFF00FF, "=============================================================================================================");
SendClientMessageToAll(0x009D00FF, "Vous jouez sur {FF0000}******{009D00}. Merci de votre confience !");
SendClientMessageToAll(0x009D00FF, "Vous pouvez aussi aller sur notre site web, {FF0000}*****");
SendClientMessageToAll(0xFFFF00FF, "=============================================================================================================");
return 1;
}
Malgré tout, rien ne se passe
Merci à vous.
-
pourtant apparement sa se passe tres bien mais c'est tellement rapide que tu na pas le temps de te connecter pour le voir remplace false par true
-
Ah oui merci :)
Par contre j'ai changé le Timer xD parce que le message toute les 1 seconde ... :ninja
-
Salut tout le monde !
Voila, j'aimerais savoir si c'est possible d'enlever le " pion " dans la carte l'hors qu'on utilise SetPlayerColor (http://wiki.sa-mp.com/wiki/SetPlayerColor).
Merci à vous.
-
Il suffit d'ajouter ça dans OnGameModeInit: ShowPlayerMarkers(0);
Si tu veux l'enlever en utilisant juste SetPlayerColor, il te faudra trouver une couleur hexadécimal invisible.
-
Merci à toi Tux !
-
Salut tout le monde !
Voila j'ai plusieurs questions !
Le casque où l'on peut mettre quand on va par exemple sur un scooter y est toujours dans la version 0.3 de SA:MP ?
Et je ne comprend pas se que veut dire " index " , a quoi ça sert
http://wiki.sa-mp.com/wiki/SetPlayerAttachedObject (http://wiki.sa-mp.com/wiki/SetPlayerAttachedObject)
Merci à vous
-
message supprimé , nouvelle page non vue
-
index, ou plus couramment appelé, id.
Utilisé pour:
- http://wiki.sa-mp.com/wiki/RemovePlayerAttachedObject (http://wiki.sa-mp.com/wiki/RemovePlayerAttachedObject)
- http://wiki.sa-mp.com/wiki/IsPlayerAttachedObjectSlotUsed (http://wiki.sa-mp.com/wiki/IsPlayerAttachedObjectSlotUsed)
-
Wiki marche po chez moi ;D LoooL
++
-
Salut tout le monde !
Voila,
J'ai un problème ><
Je viens de faire ceci :
http://pastebin.com/Eg899hQC (http://pastebin.com/Eg899hQC)
Pourtant, sa me marque toujours pas, la variable de mon compte est pourtant à : Langage = 2 ...
Merci à vous
-
:laugh Salut tout le monde :laugh
Voila, j'une question
J'aimerais savoir, comment montrer que, tant de joueur son dans un DM, par exemple
J'ai donc faire la variable pDM ( etc )
Enfaîte, j'aimerais montrer combien de joueur en ligne on la variable pDM = 1;
Merci à vous
-
tu peut faire un truc de ce genre ^^
GetPlayerCountInDM( )
{
new number = 0;
for( new i = 0; i < MAX_PLAYERS; i++ )
{
if( IsPlayerConnected( i ) && DM[i] != 0 )
{
number++;
}
}
return number;
}
-
Merci à toi Ssk,
Je n'ai pas trop compris comment utiliser ce code, aucune défine à faire, new ???
-
Ah d'accord,
Merci à vous deux :)