GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: cristab le 30 Janvier 2010, 20:28:45
-
Bonsoir j'ai eu l'idée aujourd'hui de reprendre un peu l'idée d'un site très connut de certain du Site du Zéro.
Ici nous ne verrons pas les callback ni les fonction étant donner que nous avons les TUTO proposer sur ce même forum.
Liste des Tuto a retenir
- Les fonctions de gestion des fichiers (http://www.gtaonline.fr/forums/index.php/topic,8555.0.html) By Syg
- [TUTO] Les menus (http://www.gtaonline.fr/forums/index.php/topic,1499.0.html) By UrbanGhetto
- Pourquoi ne pas utiliser 256 dans le tableau de votre chaine. (http://www.gtaonline.fr/forums/index.php/topic,7645.0.html) By R@f
- Quelques règles de base pour mieux scripter (http://www.gtaonline.fr/forums/index.php/topic,6250.0.html) By Syg
- Les différents opérateurs (http://www.gtaonline.fr/forums/index.php/topic,6175.0.html) By Sim
- [TUTO] Les CheckPoints (http://www.gtaonline.fr/forums/index.php/topic,1719.0.html) By UrbanGhetto
- [TUTO] Comment créer une map pour son serveur (http://www.gtaonline.fr/forums/index.php/topic,3657.0.html) By Nikko™
- [TUTO] Conseils concernant le codage SA-MP (http://www.gtaonline.fr/forums/index.php/topic,9575.0.html) By Sim
- [TUTO] Les bases de PAWNO et du PAWN (http://www.gtaonline.fr/forums/index.php/topic,9395.0.html) By FuSion
- tuto pour vos bot (http://www.gtaonline.fr/forums/index.php/topic,9219.0.html) By cristab
TP 1
Dans ce premier exercice nous souhaitons signaler a une personne qui se connecte si il y a un admin loger en RCON ou non
Pour cela il faut:
- Crée une variable
- Se servir de la callback OnPlayerConnect(playerid) et OnPlayerUpdate(playerid)
- Se servir de la fonction SendClientMessage(playerid,color,const string[])
- Se servir de la fonction IsPlayerAdmin(playerid)
- Se servir de condition
- Définir 2 couleurs (une pour si il y a un admin et une autre si il n'y en a pas)
Bon courage
Reponse
<?php
#include <a_samp>
#define COLOR_RED 0xFF0000FF//define couleur rouge
#define COLOR_GREEN 0x00FF00FF//define couleur vert
new NB_ADMINCO;// variable pour compter les administrateurs
public OnPlayerConnect(playerid)
{
if(NB_ADMINCO !=0)//si la variable n'est pas egale a 0
{
SendClientMessage(playerid,COLOR_GREEN,"Un administrateur est en ligne en ce moment.");// on signale ici en vert Administrateuyr en ligne
}
else//sinon
{
SendClientMessage(playerid,COLOR_RED,"Il y a aucun administrateur en ligne.");//on lui signale qu'il n'y a pas d'administrateur
}
return 1;
}
public OnPlayerUpdate(playerid)
{
NB_ADMINCO = 0;
for(new i=0;i<MAX_PLAYERS;i++)// une boucle pour tester tout les joueurs
{
if(IsPlayerAdmin(i))// si admin
{
NB_ADMINCO++;//on augmante la variable d'autant admin connecter
}
}
return 1;
}
TP2
Dans cette exercice nous allons faire deux commandes une premiere pour sauver un spawn au choix le joueur pourras donc respawn au spawn de sont choix la secondes commande annuleras la premiere
- Se servire de la callback OnPlayerCommandeText OnPlayerSpawn OnPlayerConnect
- Cree des variable dont un enumerateur
libre cours a vos imagination :)
pour ce topic j'aimerais que personne ne modifie sont propre message svp votre code doit être fonctionnel avant d'être poster
Ce topic a uniquement pour but de vous faire apprendre un peu plus sur le scriptage et de repérer par vous même vos erreure il est en aucun cas un concours
-
GG Cristab Sa regroupe un tres bon regroupement d'aide bien pour ce qui débute le PAWN , encore GG ;)
-
J'ai pas très bien. En fait, il faut faire un bout de code avec les conditions que tu donnes ?
-
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x9EC73DAA
public OnPlayerConnect(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerAdmin(i))
{
Admin ++;
}
}
}
if(Admin > 0)
{
SendClientMessage(playerid, COLOR_GREEN, "Il y a un ou plusieurs administrateurs connecté.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "Il n'y a pas d'administrateurs connecté.");
return 1;
}
}
Ou
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x9EC73DAA
public OnPlayerConnect(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerAdmin(i))
{
Admin ++;
}
}
}
if(Admin > 0)
{
format(string, sizeof(string), "Il y a %d administrateurs connecté", Admin);
SendClientMessage(playerid, COLOR_RED, string);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "Il n'y a pas d'administrateurs connecté.");
return 1;
}
}
Un peux a l'arrache pour aller vite qu'on ne croi spas que je copie ^^
-
juste un truc dans le code qui ne va pas c'est que si il y a l'id 0 est un admin da monte ta var Admin(non declarer en passant ) de 1 mais seulement si id 1 ce connecte il y auras un admin (le 0) si id2 se connecte il y auras 2 admin (euh oui il est ou le second???)
-
Je n'ai pas compris mon erreur, mis a pars que je n'ai pas défini le admin, qu'il est = 0 et tout ^^
-
erreure simple en realiter sur le serveur il y a 1 admin et 10 joueur ta variable va affiche 9admin car tu augmente a chaque connection
-
Ce n'est pas dans t'es conditions, mais c'est plus simple, (ou pas).
Et je ne suis peut être pas débutant, mais bon, juste pour vous montrer une autre solution ^^
#define COLOR_GREEN 0x9EC73DAA
new InfosAdmin[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/infosadmins", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, COLOR_GREEN, "Tu reçois maintenant un message quand un admin se connecte !");
InfosAdmin[playerid] = 1;
return 1;
}
return 0;
}
public OnRconLoginAttempt(ip[], password[], success)
{
if(sucess)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(InfosAdmin[i] == 1)
{
SendClientMessage(playerid, COLOR_GREEN, "Un admin s'est connecté !");
}
}
}
}
}
-
pour être générique:
countAdminOnline()
{
new count = 0;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerAdmin(i))
{
count++;
}
}
return count;
}
Bon j'ai codé direct sur le fofo ptet un risque de faute de frappe, l'utilisation est simple l'appel a la fonction renvoi le nombre d'admin en ligne vraiment tout con quoi
-
uep mais je voulais pas pousser trop loin en leur imposant de cree une fonction pour le premier exercice ^^ pour cela que je parle de variable et de OnPlayerUpdtae ^^ sa me permet de voir le niveau generale au quelle je doit faire face
je ne sais pas si je poste la reponse de suite ou plus tard ^^
-
Je voudrais savoir une chose
le return count sa va ecrire (s'il y a 3 admin connecter )
===========Bienvenue sur le serveur ========
== blabla , tes loguer ====
3
? Car j'ai toujours vu return 1; ou 0
-
Salut j'ai fais quelque petit truc en script j'ai un peu oublier car je n'et pas vrement appris mais plutot recopier ( re écrire et pas copier/coller !! )...
Donc sa fais comme si je suis nouveau en script et comment trouver tout sa ...
T'aurais plus mettre les bouts de script a utiiser mais tu les mes dans le desordre et avec sa on refait le bon script !!
En disant se que sais le bout de script sa serai plus simple ?? pour debuter et genre creer un post Debutant / En cours VIA Moyen / Moyen / En cours VIA Expert / Expert ???
++TZ++
-
Salut j'ai fais quelque petit truc en script j'ai un peu oublier car je n'et pas vrement appris mais plutot recopier ( re écrire et pas copier/coller !! )...
Donc sa fais comme si je suis nouveau en script et comment trouver tout sa ...
T'aurais plus mettre les bouts de script a utiiser mais tu les mes dans le desordre et avec sa on refait le bon script !!
En disant se que sais le bout de script sa serai plus simple ?? pour debuter et genre creer un post Debutant / En cours VIA Moyen / Moyen / En cours VIA Expert / Expert ???
++TZ++
Faudra s'y faire dès maintenant, des fois tu voudras scripter un truc que tu ne trouvera nul part et tu abondonnera ? Le mieux c'est d'apprendre sois même a coder en ayant les bases dans la tête, en plus ce n'est pas vraiment très dur ... ;)
-
Je trouve plus simple d'apprendre a la facon de cristab que par un tuto ... ou lire le tuto donner pour faire le script donner en exercice et grasse au tuto tu apprend tu essaye si sa marche pas tu recherche l'ereur et si tu arrive pas avoir une ptite aide et chercher encore !! Puis sa fait comme pour les math tu apprend ta lecon (TUTO) et tu fait des execices pour tentrainer ...
++TZ++
-
Comme le siteduzero ;)
-
Je voudrais savoir une chose
le return count sa va ecrire (s'il y a 3 admin connecter )
===========Bienvenue sur le serveur ========
== blabla , tes loguer ====
3
? Car j'ai toujours vu return 1; ou 0
un return sa dit bien se que sa dit sa retourne une valeur tu peux renvoyer n'importe quelle nombre mais pas seulement tu peux renvoyer un booléen ou aussi une chaine de caractere ;)
-
Salut,
par contre retourner une chaîne est peu recommandée, je ne sais pas pourquoi (sans doute le grand Syg pourrait éclairer nos lanternes), mais le fait de retourner des chaînes réduit la stabilité du serveur...
++Sim++
-
desoler ce soir je donnerais la reponse est un nouvelle exercice (probleme de connexion suite au intemperie chez moi )
-------------------------------------------------------------------------------
MAJ premier post correction EX1
Ex2 poser