Exercice en Pawn - Dйbutant
#21

Tenez, fais vite fait :

Code:
#include <a_samp> // Include de base.


#define DIALOG_*******_SOUND 666 // On dйfinie l'ID du dialogue.

new bool: SoundOn[MAX_PLAYERS]; // Variable boolйen parce qu'on va juste utilisй true ou false.


public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/musique", true) == 0)
    {
        if(!IsPlayerConnected(playerid)) return false; // Le joueur n'est pas connectй physiquement, donc une erreur se produit (false)
        {
            if(SoundOn[playerid] == false) // Si le joueur n'йcoute pas de son on ouvre le dialogue.
                ShowPlayerDialog(playerid,DIALOG_*******_SOUND, DIALOG_STYLE_INPUT, "Musique [*******]", "Entrez le lien de votre musique (exemple : wwww.youtube.com/watch?v=VID : VID = ID de la vidйo dans L'URL)", "Go", "Annuler");
            else // Sinon on lui coupe l'audio stream.
                StopAudioStreamForPlayer(playerid);  
        }
        return true;
    }
    return false;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_*******_SOUND)
    {
        if(response) // Si le joueur clique sur "go" et n'annule pas le dialogue avec йchap ou le bouton "annuler"
        {
            if(!strlen(inputtext)) return false; // Une erreur de produite, rien n'est entrer dans le champ.
            if(strfind(inputtext,"www.*******.com",true) == -1) return false; // Une erreur ses produite, ce n'est pas une vidйo *******

            new idSound*******[124], _str[256];
            strmid(idSound*******, inputtext, strfind(inputtext, "v=")+2,strfind(inputtext, "v=")+19); // Nous sauvegardons l'ID de la vidйo (les chiffres aprиs v= dans un tableaux STRING)
            format(localString, 128, "http://mwrserver.com/*******.php?videoid=%s",idSound*******); // Nous allons sur un site, qui va lire le son en MP3 selon l'id de la vidйo ******* rйcupйrйe plus tфt.
            PlayAudioStreamForPlayer(i, _str); // On lance l'audio Stream au joueur.
            SoundOn[playerid] = true; // Nous passons la variable SoundOn а true car il йcoute du son.
        }
        return true;
    }
    return true;
}

Le prochain devra faire un systиme de GPS mais utilisable via un tableau, au lieu d'ajouter chaque destinations dans le dialogue plus dans OnDialogResponses, sa s'ajoutera dans le un tableau.

Pour cela vous devez vous servir :

Des tableaux (https://sampforum.blast.hk/showthread.php?tid=562863),
Des boucles pour check les noms etc dans le tableau pour le dialogue.
De STRCAT pour enregistrer le nom de la destination sans йcrasй le string.

OnDialogResponse.
Reply
#22

[CENTER]
Code:
new chiffre;
new jeux;
public OnGameModeInit();
{
chiffre = random(100);
jeux = 1;
return 1;
}

public OnPlayerText(playerid, text[])
{
new sontext[100]
if(jeux == 1)
{
if(!strcmp(sontexte, chiffre, false))
                        {
                            new string[100], name[MAX_PLAYER_NAME];
                                GetPlayerName(playerid, name, sizeof(name));
                            SendClientMessageToAll(WHITE, "%s gagne 500$. »", name);
                            SendClientMessage(playerid, WHITE, "Vous gagnez 500$");
                            GivePlayerMoney(playerid, 500);
                            jeux = 0;
                        }
return 1;
}
return 1;
}
[/CENTER]
Je sais pas si j'ai rйussi ou pas.
Reply
#23

Salut,

J'ai conзu cet exercice pour les dйbutants. :)
-Dиs qu'un joueur se connecte sur le serveur, vous devez envoyй ce message au joueur :
''Le meilleur GM est celui qu'on fait soit mкme".
Ensuite, vous devez l'exclure du serveur. :p

Cependant, depuis la version 0.3X, la fonction Kick(); est en prioritй avant les messages, donc vous devez faire un timer.

Bonne chance. :)
Reply
#24

C'йtais pas trиs difficile cette exercice, j'ai fais зa en 5 min, et ca marche !

PHP Code:
public OnPlayerConnect(playerid)
{
    
attacheur[playerid] = -1// Faites pas attention а зa, c'est pour d'autre truc en dessous

    
SendClientMessage(playerid,0xFFFFFF,"Le meilleur GM est celui qu'on fait soit mкme !"); // On envoie le message dиs qu'un joueurs se connecte.
    
SetTimerEx("KickPlayer"5000false"i"playerid); // On crйe le timer avec un temps de 5 secondes.
    
return 1;
}

forward KickPlayer(playerid);

public 
KickPlayer(playerid)
{
    
Kick(playerid); // On kick le joueurs.
    
return 1;


Screen а l'appui : http://imagesia.com/sa-mp-001_xbu7

Voilа ! D'autre exo' ?
Reply
#25

Tu pouvais mettre 250 ou 500 millisecondes et non 5 secondes, зa aurait suffit.

Prochain exercice :

A partir de ce tutoriel : https://sampforum.blast.hk/showthread.php?tid=563016 vous devrez tenter d'inclure le fichier mon_include.inc et vйrifier si _myinclude_included existe. Si il n'existe pas vous arrкtez l'inclusion du fichier.
Reply
#26

LordFalcon;3448091 Wrote:C'йtais pas trиs difficile cette exercice, j'ai fais зa en 5 min, et ca marche !

PHP Code:
public OnPlayerConnect(playerid)
{
    
attacheur[playerid] = -1// Faites pas attention а зa, c'est pour d'autre truc en dessous

    
SendClientMessage(playerid,0xFFFFFF,"Le meilleur GM est celui qu'on fait soit mкme !"); // On envoie le message dиs qu'un joueurs se connecte.
    
SetTimerEx("KickPlayer"5000false"i"playerid); // On crйe le timer avec un temps de 5 secondes.
    
return 1;
}

forward KickPlayer(playerid);

public 
KickPlayer(playerid)
{
    
Kick(playerid); // On kick le joueurs.
    
return 1;


Screen а l'appui : http://imagesia.com/sa-mp-001_xbu7

Voilа ! D'autre exo' ?

Bravo :)
Reply
#27

Bien jouй. x)
Reply
#28

wsssssh

Dutheil;3448102 Wrote:Prochain exercice :

A partir de ce tutoriel : https://sampforum.blast.hk/showthread.php?tid=563016 vous devrez tenter d'inclure le fichier mon_include.inc et vйrifier si _myinclude_included existe. Si il n'existe pas vous arrкtez l'inclusion du fichier.
Reply
#29

@Dutheil
je n'ai pas trиs bien compris, mais si j'ai compris le tutoriel зa donne зa, n'est-ce pas?
(c'est la premiиre fois que j'utilise ces choses, je m'attends а des erreurs bien йvidement, mais essayons quand mкme. J'ai essayer de faire autre chose que celui du tutoriels, en espйrant que зa fonctionnera mкme si j'y crois pas)

Quote:[SIZE="3"]Directives » #endinput & #endscript:[/SIZE]
Ces directives exйcutent la mкme action mais ont des noms diffйrents. (allez savoir pourquoi ptdr).
Elles permettent seulement de pouvoir arrкter l'inclusion d'un fichier.

Je vais reprendre une parti du code de zcmd pour vous l'expliquer
PHP Code:
#if defined _zcmd_included // Si "_zcmd_included" est dйfini
    #endinput // On arrкte l'inclusion du fichier
#endif // Fin de la condition
#define _zcmd_included // On dйfini "_zcmd_included" puisque qu'il n'existe pas, sinon on aurait arrкtй d'inclure la suite 

PHP Code:
#1 (je comprends un peu, mais je me perds..)

#define test 1
    #if test < 1
    // si c'est infйrieure а 1 c'est qu'il est pas dйfinit?
    #define _include_included

    #else if test == 1
    // en revanche si il est йgale а un c'est qu'il est dйfinit?
    #endinput
#endif

#2 (on essaie une deuxiиme fois au cas ou..)

#if defined _include_included 
    #error L'include (include_included) n'existe pas.
    #endinput 
#endif 
Reply
#30

@dowze : Tu as presque rйussi, j'avais dit de tenter d'inclure l'include "mon_include.inc" pour зa tu dois utiliser #tryinclude.

Ensuite ton second code est ce que j'attendais sauf que tu n'as pas besoin de la directive #error.
Reply
#31

Jabern;3609067 Wrote:Un autre un autre :p aller

Avec #emit ? :mrgreen:
Reply
#32

Nooooo :o j'apprend toujours l'assembly
Reply
#33

Allez un exercice en assembleur :rolleyes:
Reply
#34

@Buthers : Rйsous dйjа celui que j't'ai donnй sur Skype, car c'que tu m'as envoyй est faux ! :mrgreen:
Reply
#35

Mais aller quoi un petit exercice
Reply
#36

Codez une fonction qui permet de dйtecter quand est-ce que le joueur lиve sa moto :p
Reply
#37

J'йtais plutфt sйrieux sur l'exercice
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)