GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: LePtitClown le 07 Mai 2009, 19:42:55

Titre: LePtitClown : différentes questions
Posté par: LePtitClown le 07 Mai 2009, 19:42:55
Slt

J'ai décidé de créer ce topic ( comme l'a fait précédemment Startoflo ) pour ne pas créer de nombreux topic inutile.
J'ai un problème avec la fonction isplayerinarea
Je n'arrive pas à rentrer les bons coordonnées pourtant je prend bien(Xmin ,Ymin, Xmax, Ymax
En prenant mes coordonnés à ces encdroit là

             N
-------------------------X
-                        -
-                        -
-                        -
-                        -
X-----------------------


A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 08 Mai 2009, 11:52:01
voila j' espere que ca t aidera http://forum.sa-mp.com/index.php?topic=14702.0 (http://forum.sa-mp.com/index.php?topic=14702.0)
Titre: Re : LePtitClown : différentes questions
Posté par: Nikko™ le 08 Mai 2009, 11:54:13
Et pour mieux comprendre la théorique ... pour pas faire ca et rester bete  :P

http://forum.sa-mp.com/index.php?topic=90445.0 (http://forum.sa-mp.com/index.php?topic=90445.0)

++
nikko
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 09 Mai 2009, 12:56:22
Merci à vous deux, 2 techniques très différentes mais la 2eme marche pour la première ça a l'air de simplifier la vie, j'avais déja entendu parler de ce logiciel mais je ne le trouvais pas
A+++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 17 Mai 2009, 15:08:02
Salut

Autres problèmes:
J'ai crée un DM qui marche parfaitement dans mon Game Mode
J'ai suivi à la lettre les tutos pour réapparaitres dans le DM ( toujours aucun soucis )
Mais le problème c'est que lorsque je suis dand le dm et que je meurs je ne réapparais pas dans le dm
Je sais d'où vient le problème mais je ne sais pas comme le résoudre
Le problème survient car pour créer une redirection dans le dm j'ai ajouté un setplayerpos dans one player spawn mais j'ai déja un setplayerpos dans ce public
Donc je ne sais pas comment faire pour réapparaitre dans ce dm malgré le fait que j'ai plusieurs setplayterpos dans oneplayerspawn
PS: j'ai essayé avec un timer mais ça ne corrige pas le problème

Merci d'avance pour votre aide :D
A++
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 17 Mai 2009, 15:56:02
fait tout en haut de onplayerspawn

if( ici t as var de dm)
{
 setplayerpos( pos du dm);
return 1; //surtout met le return 1;
}
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 17 Mai 2009, 17:04:22
Merci pour ton aide, mais ça ne marche toujours pas :'(

public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid,0);
PlayerPlaySound(playerid, 1187+1, 0.0, 0.0, 0.0);  //rajouter pour arrêter la musique
    GangZoneShowForPlayer(playerid, gangzone, 0xFF80FF96);//gangzone
Spawned[playerid] = 1;

if(InDm[playerid] ==1)//si la variable = 1
{
SetPlayerPos(playerid,1383.6260,2185.7075,11.0234);
}
else if(InDm[playerid] ==0)
{
return 1;
}

if(gTeam[playerid] == TEAM_FLICS)
{
SetPlayerColor(playerid,COLOR_BLUE);
SetPlayerPos(playerid, 2348.4797,2455.0640,14.9742);
}
else if(gTeam[playerid] == TEAM_HORS_LA_LOI)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, 2621.3303,1824.2733,11.0234);
}
else if(gTeam[playerid] == TEAM_MAFIEUX)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, 2148.6624,1683.4133,10.8203);
}
else if(gTeam[playerid] == TEAM_CIVIL)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, 2137.4758,1451.4338,10.8203);
}

return 1;
}


Voici le code que j'ai ( voir plus haut ), mais ça ne marche toujours pas
A++
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 17 Mai 2009, 17:06:01
public OnPlayerSpawn(playerid)
{
   SetPlayerInterior(playerid,0);
   PlayerPlaySound(playerid, 1187+1, 0.0, 0.0, 0.0);  //rajouter pour arrêter la musique
    GangZoneShowForPlayer(playerid, gangzone, 0xFF80FF96);//gangzone
   Spawned[playerid] = 1;
   
   if(InDm[playerid] ==1)//si la variable = 1
   {
   SetPlayerPos(playerid,1383.6260,2185.7075,11.0234);
   return 1;
   }
   
   if(gTeam[playerid] == TEAM_FLICS)
   {
   SetPlayerColor(playerid,COLOR_BLUE);
   SetPlayerPos(playerid, 2348.4797,2455.0640,14.9742);
   }
   else if(gTeam[playerid] == TEAM_HORS_LA_LOI)
   {
   SetPlayerColor(playerid,COLOR_YELLOW);
   SetPlayerPos(playerid, 2621.3303,1824.2733,11.0234);
   }
   else if(gTeam[playerid] == TEAM_MAFIEUX)
   {
   SetPlayerColor(playerid,COLOR_RED);
   SetPlayerPos(playerid, 2148.6624,1683.4133,10.8203);
   }
   else if(gTeam[playerid] == TEAM_CIVIL)
   {
   SetPlayerColor(playerid,COLOR_GREEN);
   SetPlayerPos(playerid, 2137.4758,1451.4338,10.8203);
   }
   
   return 1;
}essaye ca =D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 17 Mai 2009, 17:34:24
Re:

Un énrome merci à toi, ça marche nickel, mon DM est maintenant opérationnel :cheers
Mais au fait, tu as changé quoi? ???
A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 17 Mai 2009, 17:43:13
if(InDm[playerid] ==1)//si la variable = 1
{
SetPlayerPos(playerid,1383.6260,2185.7075,11.0234);
}
else if(InDm[playerid] ==0)
{
return 1;
}

ici tu a mis le return 1; si le joueur et pas dans le dm donc c' est pas bon ca va continuer tout ce qui reste dans la fonction

et dans mon code

if(InDm[playerid] ==1)//si la variable = 1
{
SetPlayerPos(playerid,1383.6260,2185.7075,11.0234);
return 1;
}
ici si le joueur est dans un Dm ca fait le setplayerpos et puis le reste de la fonction ne s execute pas =D voila
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 17 Mai 2009, 17:45:45
OK merci  :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 22 Mai 2009, 20:48:09
Une petite question:

Slt, je cherche à réaliser une petit feux d'artifice sur mon serveur.
Vous allez me dire de prendre firewrokd mais moi je préfère réaliser une script beaucoup plus simple avec juste quelques fusée et un seul site de lancement.
Donc je souhaiterai avoir l'ID de ces petite fusée et s'il est possible d'activer le feux d'artifice à l'aide d'une commande.
PS: si cette ID d'objet existe car je ne l'ai jamais vu.

Merci d'avance pour vos réponses
A++  :D
Titre: Re : LePtitClown : différentes questions
Posté par: Nikko™ le 22 Mai 2009, 21:15:29
Bah regarde dans le script de fireworks et regarde l'id et tout ..  :king

++
nikko
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 22 Mai 2009, 21:36:07
C' est de objet de fuset qui son lancer avec moveobject a et un certain hauteur boum =D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 22 Mai 2009, 21:44:33
C'est ce que je viens de vérifier donc en gors c'est trop compliquer pour moi affaire classé, j'utiliserai firewrok comme tout le monde.

2 eme problème moins difficle je pense:
J'ai un petit problème avec mes petites voiture de flic réservés juste au flics.
Lorsque je sors de la caisse de flic, ce message s affiche: vous n'êtes pas un flic
Et je peux rentrer dans la voiture de flic bien que je ne soit pa flic
Voici mon script:
   
if(newstate == PLAYER_STATE_DRIVER) // Si le joueur est dans l'etats de conducteur
{
if(gTeam[playerid] == TEAM_FLICS)
{
   new vehicleid = GetPlayerVehicleID(playerid); // On recupere l'id du vehicule dans lequel est le joueur //rajouter pour le marqueur
    if(vehicleid == 60 || vehicleid == 61 || vehicleid == 62 || vehicleid == 63 || vehicleid == 64 || vehicleid == 65 || vehicleid == 101 || vehicleid == 102 || vehicleid == 103 || vehicleid ==104 || vehicleid == 105 || vehicleid == 162 || vehicleid == 163)//MODIFICATION A EFFECTUER
{
SendClientMessage(playerid, COLOR_GREEN, "Bienvenue cher Officier, fais respecter la loi");
   }
}
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_RED, "Tu n'es pas policier");
  }
return 1;
}


A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Azz45 le 23 Mai 2009, 00:18:52
Salut,

Ta ajouté ou supprimé des véhicules ( AddStaticVehicle ou AddStaticVehicleEx ) donc ta liste de carid est dérégler, tu dois tout refaire


Good Luck
Titre: Re : Re : LePtitClown : différentes questions
Posté par: S!m le 23 Mai 2009, 00:32:51
Salut,

Salut,

Ta ajouté ou supprimé des véhicules ( AddStaticVehicle ou AddStaticVehicleEx ) donc ta liste de carid est dérégler, tu dois tout refaire


Good Luck

pas nécessairement, si l'on regarde son code on y voit très bien la signification: si le nouveau statut n,est pas conduecteur, on le retire du véhicule et lui envoie le message, bref tu dois le restructuré....

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: Azz45 le 23 Mai 2009, 00:57:05
la cause parfois de sa, sont les carid déréglé.
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 23 Mai 2009, 01:17:07
Salut,

je vais simplement faire peser mon point de vue à l'aide de commentaires :-[
if(newstate == PLAYER_STATE_DRIVER) // Si le joueur est dans l'etats de conducteur
{
if(gTeam[playerid] == TEAM_FLICS)//si le joueur est flic
{
  new vehicleid = GetPlayerVehicleID(playerid); // On recupere l'id du vehicule dans lequel est le joueur //rajouter pour le marqueur
    if(vehicleid == 60 || vehicleid == 61 || vehicleid == 62 || vehicleid == 63 || vehicleid == 64 || vehicleid == 65 || vehicleid == 101 || vehicleid == 102 || vehicleid == 103 || vehicleid ==104 || vehicleid == 105 || vehicleid == 162 || vehicleid == 163)//CARID (peut-être invalide)
{
SendClientMessage(playerid, COLOR_GREEN, "Bienvenue cher Officier, fais respecter la loi");//le joueur est policier et il entre dans une voiture de police
    }//on est maintenant hors de la condition véhicules de police
}//le test concernant la team du joueur arrête ici
}//le test concernant sont statut fini ici
else//si le nouveau statut du joueur n,est pas conducteur
{
RemovePlayerFromVehicle(playerid);//s'il n'est pas conducteur, on l'enlève de son véhicule et on lui envoie le message (c là que le problème apparait...)
SendClientMessage(playerid, COLOR_RED, "Tu n'es pas policier");
  }
return 1;

voilà, tu devrais donc voir ce qui cloche dans ce bout de code (+ les carid incertains)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 23 Mai 2009, 22:15:30
Slt

Les car id marchent car lorsque je suis flic j'ai bien le message qui me confirme que je suis dans un véhicule de flic

Nikko, je te remercie pour ton aide ( et aussi aux autre ) mais je ne vois vraiment d'où peut venir mon erreur.

La ligne que tu me dis ne me semble pas poser de problème, je ne vois pas quoi changer sur cette ligne

Pourrais avoir plus d'informations car ce code sera fort util pour mon serveur ?

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Nikko™ le 23 Mai 2009, 23:49:20
A propos de quoi ? quel erreur ?

++
nikko
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Mai 2009, 13:07:20
Slt

Pour les erreurs, j' en ai aucune ni de warnings d'ailleurs, mais dans le jeux lorsque je réalise des modifications, soit le message s' affiche lorsque je ne suis pas dans un véhicule ou soit je ne peux rentrer dans aucun véhicule.
Malgré mes tentatives, toujours un de ces deux problèmes persistent.

if(newstate == PLAYER_STATE_ONFOOT)
{
        TextDrawHideForPlayer(playerid, Speedo[playerid]);
}

else if(newstate == PLAYER_STATE_DRIVER) // Si le joueur est dans l'etats de conducteur
{
if(gTeam[playerid] == TEAM_FLICS) //si le joueur est flic
{
  new vehicleid = GetPlayerVehicleID(playerid); // On recupere l'id du vehicule dans lequel est le joueur //rajouter pour le marqueur
    if(vehicleid == 60 || vehicleid == 61 || vehicleid == 62 || vehicleid == 63 || vehicleid == 64 || vehicleid == 65 || vehicleid == 101 || vehicleid == 102 || vehicleid == 103 || vehicleid ==104 || vehicleid == 105 || vehicleid == 162 || vehicleid == 163)//CARID (peut-être invalide)
{
SendClientMessage(playerid, COLOR_GREEN, "Bienvenue cher Officier, fais respecter la loi");//le joueur est policier et il entre dans une voiture de police
    } //on est maintenant hors de la condition véhicules de police
}
} //le test concernant la team du joueur arrête ici //le test concernant sont statut fini ici
else //si le nouveau statut du joueur n,est pas conducteur
{
RemovePlayerFromVehicle(playerid); //s'il n'est pas conducteur, on l'enlève de son véhicule et on lui envoie le message (c là que le problème apparait...)
SendClientMessage(playerid, COLOR_RED, "Tu n'es pas policier");
}
return 1;
}

A++ :D


Double post
UP!

Adez moi SVP

A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Azz45 le 24 Mai 2009, 18:54:20
Les carid sont toujours la 1ére cause du bug de véhicule !

Donc vérifie bien les numéros etc..

Ps: Évite les double post.

Azz  8)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Mai 2009, 20:16:31
Dsl pour le double post je vooulais juste faire un petit up :'(
Les carid sont nickel le message s'affiche lorsque je sors de n'importe quel véhicule
Donc je ne vois vraiment pas où est le problème
Aidez moi :)

A+
Titre: Re : Re : LePtitClown : différentes questions
Posté par: MrFredo le 24 Mai 2009, 20:22:18
Code: (pawn) [Sélectionner]
if(newstate == PLAYER_STATE_ONFOOT)
{
TextDrawHideForPlayer(playerid, Speedo[playerid]);
}
else if(newstate == PLAYER_STATE_DRIVER)
{
    new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 60 || vehicleid == 61 || vehicleid == 62 || vehicleid == 63 || vehicleid == 64 || vehicleid == 65 || vehicleid == 101 || vehicleid == 102 || vehicleid == 103 || vehicleid ==104 || vehicleid == 105 || vehicleid == 162 || vehicleid == 163)//CARID (peut-être invalide)
{
if(gTeam[playerid] == TEAM_FLICS)
{
SendClientMessage(playerid, COLOR_GREEN, "Bienvenue cher Officier, fais respecter la loi");
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_RED, "Tu n'es pas policier");
}
}
return 1;
}

Vla t'avait inversé des condition ...
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 25 Mai 2009, 17:52:17
Slt


un grand merci à toi et à vous tous d'ailleurs le script marche nickel après quelques petites modifications d'accolades

A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 15 Juin 2009, 14:05:52
Slt

Je viens vous présenter une nouveau problème sur un script qui me paraissait simple à régler mais malgré le fait qu je n'ai aucune erreurs ni de warnings, mon killtimer ne marche pas. Losque je tape /test mon timer se lance normalment mais il ne s'arrête pas au bout des 5 secondes comme prévu. Un message s'affiche alors toutes les 5 seondes une fois la commande tapée. Voici mon code:

  new test; ( tout en haut avant main )
forward test(); ( pour définir mon timer )

(Dans le public one playercommand )
if(strcmp(cmd, "/test", true) == 0)
{
SetTimer("test",5000,1);
SendClientMessage(playerid, COLOR_GREEN, "La commande test a été activée");
KillTimer(test);

}
Merci d'avance pour vos réponses
A+++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: MrFredo le 15 Juin 2009, 14:33:52
C'est pas comme sa que sa marche un timer...


Il te faut pour commencer une variable

new timer;

il te faut ta fonction en public et sont forward:
Code: (pawn) [Sélectionner]
forward Test();
public Test()
{
 //Le code que fait ta fonction
}

Ensuite tu lance le timer de cette facon:
Code: (pawn) [Sélectionner]
timer = SetTimer("Test",5000,1);
Et pour kill le timer :
Code: (pawn) [Sélectionner]
KillTimer(timer);

vla
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 15 Juin 2009, 20:58:40
Slt

Meric pour ton aide
Mais en suivant tes modifications, j 'ai encore quleques problèmes. Que dois je mettre maintenant dans ma commande /test ?

A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 16 Juin 2009, 01:32:22
Salut,

il te suffit de suivre les instructions de MrFredo, tout est clair  ;)

sinon un petit peu d'aide:

en haut la première partie (jusqu'au forward, de la même façon que avait fais sauf que tu change le nom de ta variable)

puis dans ta commande tu place le timer tel que te l'as donné MrFreo

à la fin de ton code ajoute la fonction public contenant le code à exécuter (et le killtimer?, tout dépend du résultat escompté)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 16 Juin 2009, 10:22:41
Slt

En suivant les instructions de Fredo que je pense avoir comprise, j'arrive à ce résultat:

//===========================AVANT MAIN=========================================
new timer; //pour le test

forward Test();


//=================COMMANDE TEST================================================
if(strcmp(cmd, "/test", true) == 0)
{
SendClientMessage(playerid, COLOR_GREEN, "La commande test a été activée");
timer = SetTimer("timer",5000,1);
}

//===================TEST=======================================================

public Test()
{
SendClientMessageToAll(0x00FF00FF, "Les 30 secondes ont été écoulées");
KillTimer(timer);
return 1;
}

Or ce code ne marche pas hélas. Au bout des 5 secondes, rien ne se produit. Si vous pouviez encore m'aider un peu ^^
A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 16 Juin 2009, 10:25:21
un petit manque d'innatention
Citation de: pawno
//===========================AVANT MAIN=========================================
new timer; //pour le test

forward Test();


//=================COMMANDE TEST================================================
   if(strcmp(cmd, "/test", true) == 0)
   {
      SendClientMessage(playerid, COLOR_GREEN, "La commande test a été activée");
      timer = SetTimer("Test",5000,1);
   }
   
//===================TEST=======================================================

public Test()
{
SendClientMessageToAll(0x00FF00FF, "Les 30 secondes ont été écoulées");
KillTimer(timer);
return 1;
}
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 16 Juin 2009, 10:46:16
Merci beacoup à vous 3

A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Juin 2009, 16:42:02
Slt

J'ai un tout petit problème, je souhaite mettre un point noir à un skin pour le radar mais je ne trouve pas le code hexa de la couleur noir, j'ai trouvé darkred mais pas le noir tout simple sans mélange. Existe elle sur SA-MP ?
Si, oui pouvez vous me donner la réponse sous cette forme: #define COLOR_DARKRED 0x660000AA

A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 18 Juin 2009, 17:39:59
voila un petit truc sympas http://files.uploadffs.com/9e0739_Colour_Picker.rar (http://files.uploadffs.com/9e0739_Colour_Picker.rar)   

#define COLOR_Noir 0x000FF
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Juin 2009, 22:38:02
Slt

Merci à toi Rambo :D

Je cherche un AntiCheat pour l'argent car mon serveur est principalement basé sur l'argent. J'aimerai bien celui du SF DTM car à ce que je vois il est efficace mais vous ne voudrez pas donc si vous aviez un anti cheat efficace pour les cheat de tune, merci de me le faire savoir

A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 18 Juin 2009, 23:00:18
http://forum.sa-mp.com/index.php?topic=70644.0 (http://forum.sa-mp.com/index.php?topic=70644.0)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 19 Juin 2009, 00:29:37
Salut,

Cristab tu as fait une petite erruer dans le code pour la couleur noir le code correct est :
#define COLOR_NOIR 0x000000FF
(tu peut changer les deux F afin de modifier la transparence du marqueur (merci de voir Define - Pawn Center (http://pawn.gtaonline.fr/index.php/Define) pour de plus amples informations))

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Juin 2009, 11:22:53
Slt

Sim, c'est bizarre ce que tu dis car j'ai pris le code couleur de Cristab et je suis tombé sur exactement sur ce que je voulais, mais il doist exister plusieurs tranparence de noir comme tu le dis

A+
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 19 Juin 2009, 11:29:20
la couleur noir n'etant pas une couleur attention
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Juin 2009, 14:37:18
Slt

- Je cherche un AntiCheat pour l'argent car mon serveur est principalement basé sur l'argent. J'aimerai bien celui du SF DTM car à ce que je vois il est efficace mais vous ne voudrez pas ce que je comprend donc si vous aviez un anti cheat   efficace pour les cheat de tune, merci de me le faire savoir.
- Et si par hasard vous connaitriez des hébergerus gratuit gta sa mp faites le moi savoir, je sais que ça a déjà été traité mais les sujet n'ont pas été résolu

Merci d'avance
A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 19 Juin 2009, 16:22:33
Béh si dans ton serveur le systeme de gain d' argent en stunt est desactiver et qu' on peu gagner de l' argent qu' avec des commandes béh tu met une variable MoneyCheat[MAX_PLAYERS]; qui est à 0 avec un timer qui verifie si le joueurs gagner de l' argent si la variable est a 0 kick sinon tu ca ne fait rien mais oublie pas de mettre la variable a 1 pendant une cmd et dans le timer si on voit que la variable est a 1 on la remet a 0 voila c' est tout simple a faire est on est sur que ca fonctionne =)

J' espere t' avoir ;)

Si tu pige pas c' est que j ecris au college est j ai pas envie de rester sur trop sur gtaonline
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Juin 2009, 16:53:15
Slt

Je vois ce que tu veux dire ( d'ailleurs ça ressemble à la variable de mon DM ) mais au niveau du timer je ne voit pas du tout ce qu'il vient faire la. Si tu pouvais me préciser encore un peu ce serait sympa.
Sur mon serveur on peut gagner de l'argent en:
- tuant un joueur ce que rapporte 5000
- avec la commande /givecash
- en jouant au casino
- ou tout simplement en faisant une roue avant en moto ou une cascade de toute sorte

PS: Il y a d'autres transferts d'argent mais ce sont des commandes payantes donc je ne sais pas s'il faut les citer car je pense que ton anti cheat marche juste quand l'argent augmente ce qui est logique.

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 19 Juin 2009, 17:08:05
tien je l ai fait =)


bien sur tu l adapte en gm ;)

new MoneyCheat[MAX_PLAYERS];
new KillTimerCheat;
new OldMoney[MAX_PLAYERS];
forward Anticheat();
public Anticheat()
{
for(new i = 0;i <= MAX_PLAYERS;i++)
{
   if(MoneyCheat[i] == 1)
   {
       MoneyCheat[i] = 0;
       return 1;
   }
new money = GetPlayerMoney(i);
if(!(OldMoney[i] - money == 0))
{
   Kick(i);
   return 1;
   }
   OldMoney[i] = GetPlayerMoney(i);
}
return 0;
}


public OnFilterScriptInit()
{
KillTimerCheat = SetTimer("Anticheat",100,1);
return 1;
}
public OnFilterScriptExit()
{
KillTimer(KillTimerCheat);
return 1;
}
public OnPlayerConnect(playerid)
{
MoneyCheat[playerid] = 0;
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
MoneyCheat[playerid] = 0;
return 1;
}

et bien sur dans les cmd ou on gagne de l argent tu met MoneyCheat[playerid] = 1; voila tout


en esperant qu il n y est pas d erreur pck telecharger pawno au cllege et tout coder lol
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 20 Juin 2009, 00:33:52
Salut,

hélas ce code comprend 2 - 3 défaut....

1. tu change la variable a un dans la commande = simple retard pour la détection
2. tu retourne 1 dès qu'un joueur à le moneyCheat à 1
3. Tu ne tiens pas en compte de la bonne façon des ajouts d'argents

Tu devrais plutôt enregistrer l'argent du joueur dans une variable(oldmoney dans ce code), lorsqu'il y a un changement fait par le serveur, tu ajoute le montant à la variable en question, tu évite de faire un timer trop court (5 ou 10 secondes est bien suffisant)...

donc ca donnerais à peu près ceci:

#define GivePlayerMoney(%0,%1) gLastCash[%0] += %1;\
GivePlayerMoney(%0, %1)
#define DIFFERENCE_MAXIMALE 500//différence maximale autorisée entre l'argent prévu et réel
new gLastCash[MAX_PLAYERS];//argent supposé du joueur
public MoneyHackDetection()
{
new tmp[128], money;
for( new i = 0; i < MAX_PLAYERS; i++)
{
if((money = GetPlayerMoney(i)))
{
if((money-gLastCash[i]) >= DIFFERENCE_MAXIMALE)
{
GetPlayerName(playerid, tmp, MAX_PLAYER_NAME);
format(tmp, sizeof(tmp), "Le joueur %s est kické pour money hack!", tmp);
SendClientMessageToAll(0xFFFFFFFF, tmp);
Kick(i);
}
gLastCash[i] = money;
}
}
return 1;
}

voilà en espérant que ce code soit bon, tu dois faire à peu près comme avec le code de sasuke, tu ajoute l'argent à la variable gLastCash lorsque tu donne de l'argent à un joueur (voir le premier define, ps. j'ai bien peur qu'il faudrait changer tous tes GivePlayerMoney (dont le premier du define) afin d'éviter que le code fasse de la récursion...(voir ci-dessous)).

Que dire de plus? n'oublie pas le timer (de 5 ou 10 secondes)

#define sGivePlayerMoney(%0,%1) gLastCash[%0] += %1;\
GivePlayerMoney(%0, %1)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 20 Juin 2009, 11:12:58
Slt

tout d'abord merci pour votre aide après avoir adapté votre code il n'y a pas de warnings ni d'erreurs
Mais je ne suis en aucun cas kické si je cheat ma tune
Voivi le code exacte que j'ai inséré sur mon GM:
//=====ANTICHEATARGENT==========================================================
#define sGivePlayerMoney(%0,%1) gLastCash[%0] += %1;\
GivePlayerMoney(%0, %1)
#define DIFFERENCE_MAXIMALE 500//différence maximale autorisée entre l'argent prévu et réel
//==============================================================================
new gLastCash[MAX_PLAYERS];//argent supposé du joueur
new MoneyCheat[MAX_PLAYERS];
new KillTimerCheat;
//==============================================================================
forward MoneyHackDetection();
//==============================================================================
Main()
//==============================================================================
public OnGameModeInit()
{
KillTimerCheat = SetTimer("Anticheat",7000,1);                               //anticheatargent

//==============================================================================
public OnGameModeExit()
{
    KillTimer(KillTimerCheat);//anticheatargent
    return 1;
}

//==============================================================================
public OnPlayerConnect(playerid)
{
MoneyCheat[playerid] = 0;//anticheatargent

return 1;
}
//==============================================================================
public OnPlayerDisconnect(playerid, reason)
{
MoneyCheat[playerid] = 0;//anticheatargent
return 1;
}

//==============================================================================
public MoneyHackDetection()
{
new tmp[128], money;
for( new i = 0; i < MAX_PLAYERS; i++)
{
if((money = GetPlayerMoney(i)))
{
if((money-gLastCash[i]) >= DIFFERENCE_MAXIMALE)
{
GetPlayerName(i, tmp, MAX_PLAYER_NAME);
format(tmp, sizeof(tmp), "Le joueur %s est kické pour money hack!", tmp);
SendClientMessageToAll(0xFFFFFFFF, tmp);
Kick(i);
}
gLastCash[i] = money;
}
}
return 1;
}
//==============================================================================
Si vous pouviez encore m'aidez un peu. Merci d'avance
A++
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 20 Juin 2009, 11:17:49
KillTimerCheat = SetTimer("MoneyHackDetection",7000,1); 
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 20 Juin 2009, 12:32:23
Slt

Merci à vous, le script marche enfin. J'avais des problèmes à cause de cette ligne qui était définie à 500
En fait pour que l'anti cheat marche il faut bien l'adapter au serveur à l'aide du timer et de la limite d'argent de transaction


Si je met MoneyCheat[playerid] = 0;//anticheatargent dans ma commande /givecash, les joueurs ne seront plus kcické s'il donne de grosse somme?

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 23 Juin 2009, 13:24:09
ui mais le code comporte une faille que je ne citerais pas au risque que les cheater l utilise lol
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 23 Juin 2009, 15:21:10
Slt

Moi aussi j'ai trouvé une faille mais bon je pense que j'arrêterai déjà les cheaters inconsicents
Et puis il y aura des admins sur le sevreur. Enfin si le serveur est hébergé un jour

Si vous connaissez un hébergeur gratuit gta sa mp de 32 slots je suis partant. L'héberguer aura bien sûr des droits d'administrateurs sur le serveur s'il le souhaite et je pourrai coller une pub au démmarrage s'il le désire
A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Azz45 le 23 Juin 2009, 16:15:15
Mettre admin ton hébergeur, je pense que ton hébergeur sera pas très professionelle !

Azz   8)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Juin 2009, 12:27:17
Slt

Mdr, c'est peut être vrai mais ce sera toujours un hébergeur

PS: Mes problèmes d'hébergeur sont normalment résolu

A++ :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 27 Juin 2009, 12:16:34
Slt

J'ai un nouveau petit problème
Je cherche un code qui permettrait aux joueurs de ne pas pouvoir taper une commande s'ils n'ont pas une certains pourcentage de vie
Je pense qu'il faut commencer par prendre sa vie: GetPlayerHealth(playerid)
Mais après je ne sais pas trop comment faire pour refuser la commande si sa vie est inférieure à 75
Pour interdire la commande par contre je crois savoir faire: if (!strcmp(cmdtext, "/exemple", true) == 0)

Merci d'avance pour votre aide
A++ :)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 27 Juin 2009, 14:15:19
Salut,

tu dois d'abord te créer une variable (GetPlayerHealth récupère le résultat par référence, non pas via la valeur de retour):

new Float:Health;
Ensuite tu récupère la vie du joueur:

GetPlayerHealth(playerid, health);//il est à noter que playerid correspond au ID du joueur, dans certains cas tu devras tuiliser d'auters variables que playerid
Puis tu fais ton test:

if(health >= 75.0)
{
...//tu fais la commande, le joueur à au moins 75 de vie
}
else
{
//le joueur n'a pas 75 de vie, tu lui envoie un message d'erreur (ou pas)
}

voilà tu devrais tout avoir pour faire cette petite condition...

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 01 Juillet 2009, 18:11:27
Slt

Merci ça marche nickel

J'ai un autre petit problème, existe t-il un code permettant d'augmenter son niveau de rechercher par une commande?
J'en suis là
if (strcmp(cmd, "/etoiles", true))
  {
GetPlayerWantedLevel(playerid);
WantedLevel(playerid, +1); //je pensais à un code comme ça mais ça ne marche pas
return 1;
}

Merci d'avance pour vos réponses
A++
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 01 Juillet 2009, 18:29:34
if (strcmp(cmd, "/etoiles", true))
  {

WantedLevel(playerid,GetPlayerWantedLevel(playerid) +1); //je pensais à un code comme ça mais ça ne marche pas
return 1;
}


PS: je vais en vacance je serais donc encore plus absent pck deja etre present sans pc lol

Sinon j' aurais une connexion d une heure pas jour ou je vais ;) allez a plus les gars on se revoit au mois d Aout =D
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 02 Juillet 2009, 00:05:44
Salut,

le seul petit détail qui cause le dysfonctionnement de la commande de sasuke est l'inexistance de la fonction WantedLevel, il faut plutôt utiliser SetPlayerWantedLevel

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 02 Juillet 2009, 12:41:00
Slt

Merci pour votre aide la commande marche nickel mais j'ai un autre problème avec un code qui lui était associé
En effet, au bout de 6 etoiles les joueurs du serveurs sont censés être prévenu que le joueur a 6 étoiles
Voici le code qui ne comporte aucune erreur mais qui ne fonctionne pas sur le serveur
if (GetPlayerWantedLevel(playerid) == 6)
{
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "*** %s est devenu l'homme le plus recherché de San Andréas (ID:%d) ***",pidName,pid);
SendClientMessage(playerid, COLOR_GREEN, tmpp);
SendClientMessageToAll(0x33AA33AA  , "Toutes les forces de polices sont appelées pour intercepter cette homme");
                return 1;
}

Merci d'avance poru votre aide
A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 02 Juillet 2009, 13:42:03
oui mais peu etre c'est normale comment ce morceaux de code est censer ce lancer ?
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 02 Juillet 2009, 14:21:44
Slt

Ce code est censé se lancer lorsque le joueur a 6 étoiles ( sur mon serveur lorsqu'on tue un personne on a une étoile )
J ai mis ce code ds public one player info change

A+
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 02 Juillet 2009, 14:27:59
voila danc meme probleme enfaite moi j'ai du le mettre dans le onplayerdeath en changeant playerid avec killerid et 6 par 5
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 02 Juillet 2009, 15:16:37
Met ca dans OnplayerDeath:

if (GetPlayerWantedLevel(killerid) >= 6)
{
GetPlayerName(killerid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "*** %s est devenu l'homme le plus recherché de San Andréas (ID:%d) ***",pidName,pid);
SendClientMessage(killerid, COLOR_GREEN, tmpp);
SendClientMessageToAll(0x33AA33AA  , "Toutes les forces de polices sont appelées pour intercepter cette homme");
                 return 1;
}
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 02 Juillet 2009, 16:37:28
Slt

Mdr, merci Sasuke bien que j'avais compris avec Cristab
Le problème c'est que je peux pas tester ce script vu qu'il faut que je tue quelq'un et qu'il est pas hébergé
Merci à vous deux, problème résolu

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 02 Juillet 2009, 16:47:10
Béh tu peut demander a une de tes amis ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 02 Juillet 2009, 22:53:03
Slt

J'ai une nouvelle question
Je cherche un code me permettant de parler entre team ( je dispose de gTeam )
Je sais que vous en avez déja parler mais soit il ne marche pas dans le jeu soit il comporte des erreurs
J'ai chercher sur sa mp et en le prenant sur le SF DTM traduit mais toujours rien

Donc si vous avez un lien où je pourrai le trouver de manière concrète ce serait sympa
A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 02 Juillet 2009, 23:11:33
dans une commande tu met ( je ne te donne pas le code en entier essaye de reflechir par toi meme )

for(new msg;msg <= MAX_PLAYERS;msg ++)
{
if(Team[playerid] == Team[msg])
{
// tu envoie le msg
}
}

voila
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Juillet 2009, 13:14:14
Slt

J'ai réessaye d'extraire le code du SF DTM traduit trouve sur ce site dans le showrom d'ailleurs mais une ligne pose problème et je pense qu'elle est quand même indispensable
cmd(teamchatcmd); <=ligne 1854

les erreurs:
C:\Documents and Settings\Propriétaire\Bureau\samp02Xserver.win32\gamemodes\I.pwn(1854) : error 012: invalid function call, not a valid address
C:\Documents and Settings\Propriétaire\Bureau\samp02Xserver.win32\gamemodes\I.pwn(1854) : warning 215: expression has no effect
C:\Documents and Settings\Propriétaire\Bureau\samp02Xserver.win32\gamemodes\I.pwn(1854) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Propriétaire\Bureau\samp02Xserver.win32\gamemodes\I.pwn(1854) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Propriétaire\Bureau\samp02Xserver.win32\gamemodes\I.pwn(1854) : fatal error 107: too many error messages on one line
Et voici le code complet:
new teamchatcmd[]  = "/t";//CHAT
forward dteamchatcmd(playerid,params[]);//CHAT
forward GetPlayers();//CHAT

cmd(teamchatcmd); // dans public command text



//==================================Team Chat===================================
dteamchatcmd(playerid,params[])
{
    new team;
    team = GetPlayerTeam(playerid);
new players = GetPlayers();
new playername[256];
GetPlayerName(playerid,playername,256);
new temptext[256];
new count;
  for(count = 0;count <= players;count++)
  {
   if(IsPlayerConnected(count))
     {
    if(GetPlayerTeam(count) == team)
      {
format(temptext,256,"[TEAM]%s: %s",playername,params);
         SendClientMessage(count,COLOR_BLUE,temptext);
}
}
}
return true;
}

//------------------------------------------------------------------------------
public GetPlayers() //By rapidZ
{
new i;
new player;
player = 0;
for (i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
player++;
}
}
return player;
}


Si vous voyez d'où peut venir l'erreur, merci de me faire signe
A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 03 Juillet 2009, 15:47:10
apparement tu veut un team chat celui du sftdm personnelement n'as pas fonctionner chez moi regarde dans ma signature mon GM conquetes du nouveaux village dans la callback OnPlayerText tu peu voir un chat team qui utilise le gTeam ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Juillet 2009, 19:00:17
Slt

Merci pour ton aide, ce script est largement plus court et plus pratique mais un problème persiste, la pharse est écrite deux fois, une fois avec la phrase pour la team et une autre pour tous le serveur
ex:
[TEAM]Bonjour les copains  <= pour la team
!Bonjour les copains <= pour tous le serveur

Voici le code une fois adpaté à mon GM:
public OnPlayerText(playerid, text[])
{
if(text[0] == '!')
{
new string[256],name[24];
GetPlayerName(playerid,name,24);
format(string,256,"[TEAM] %s: %s",name,text[1]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(gTeam[i] == gTeam[playerid])
SendClientMessage(i, GetPlayerColor(playerid), string);
}
}
return 1;
}
return 0;
}

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 03 Juillet 2009, 19:25:44
Béh voila c 'est bien ce que je t ai expliquer =)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Juillet 2009, 19:31:02
Slt

oui ça y ressemble beaucoup mais je n'y arrivais pas tout seul, mais il me reste encore le problème de la double phrase

PS: Sasuke en essayant de cliquer sur la bannière de ta team avast m'a signalé un virus

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 03 Juillet 2009, 19:33:24
Comment ca ?
Titre: Re : Re : LePtitClown : différentes questions
Posté par: S!m le 03 Juillet 2009, 19:46:58
Salut,

PS: Sasuke en essayant de cliquer sur la bannière de ta team avast m'a signalé un virus

je dirais pas PS mais HS, les pm sont la pour ce genre de remarque...

pour ton emssage double il s'agit d'un simple problème de valeur de retour

sinon, tu veut bien dire que ca écrit le message pour la team et le message normal?

Étrangement, le script me semble correct...

essaie ces petites modifications coté optimisation (par contre ton problème n'est pas changé), assure toi de bien avoir cette version compilé et chargée

public OnPlayerText(playerid, text[])
{
if(text[0] == '!')
{
new string[128], color;
color = GetPlayerColor(playerid);
GetPlayerName (playerid, string, MAX_PLAYER_NAME);
format (string, sizeof(string), "[TEAM] %s: %s", string, text[1]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gTeam[i] == gTeam[playerid])
{
SendClientMessage(i, color, string);
}
}
return 1;
}
return 0;
}

si tu veut éviter d'envoyer au joueur son propre message (inutile mais bon) tu devras ajouter un if(playerid != i) dans ta boucle

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 03 Juillet 2009, 19:59:03
je vient de comprendre ce que tu voulais mais dans ce cas la le team chat n'est plus un team chat :s

Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 04 Juillet 2009, 11:18:52
Slt

Voici le problème mieux expliqué (enfin je pense ) ça sera plus compréhensible
[TEAM]: Slt les copains  <= le message est envoyé à la team flic
!Slt les copains <= juste en dessous le message est aussi envoyé à tout le serveur

A+
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 04 Juillet 2009, 11:56:20
Essaye ca ;)


if(text[0] == '!')
{
new string[128], color;
color = GetPlayerColor(playerid);
GetPlayerName (playerid, string, MAX_PLAYER_NAME);
format (string, sizeof(string), "[TEAM] %s: %s", string, text[1]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gTeam[i] == gTeam[playerid])
{
SendClientMessage(i, color, string);
}
}
return 0;
}
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 04 Juillet 2009, 12:29:25
Slt

ça y est le problème est résolu, merci à tous.
Voici le code exact inséré à la suite de la réponse de Sasuke

public OnPlayerText(playerid, text[])
{
if(text[0] == '!')
{
new string[128], color;
color = GetPlayerColor(playerid);
GetPlayerName (playerid, string, MAX_PLAYER_NAME);
format (string, sizeof(string), "[TEAM] %s: %s", string, text[1]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gTeam[i] == gTeam[playerid])
{
SendClientMessage(i, color, string);
}
}
}
return 0;
}



A+ et encore merci :D
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 04 Juillet 2009, 14:54:15
Salut,

par contre ce code bloquera tous les messages, pas seulement ceux de team, déplace ton return  0 et place un return 1 ou ton return 0 est présentement

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 05 Juillet 2009, 11:33:55
Slt

Je vois ce que tu veux dire mais après plusieurs essais soit le message s'affiche deux fois, soit le message ne s'affiche pas du tout
Pourrais tu prèciser un peu plus?

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 05 Juillet 2009, 13:56:22
En faite il serait plus judicieux de faire ca


public OnPlayerText(playerid, text[])
{
if(text[0] == '!')
{
new string[128], color;
color = GetPlayerColor(playerid);
GetPlayerName (playerid, string, MAX_PLAYER_NAME);
format (string, sizeof(string), "[TEAM] %s: %s", string, text[1]);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gTeam[i] == gTeam[playerid])
{
SendClientMessage(i, color, string);
}
}
     return 0;
        }
return 1;
}
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 05 Juillet 2009, 15:59:57
Salut,

exactement mais fais attention à ton indentation, ton return 1 n'est pas aligné avec l'accolade au dessus

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 05 Juillet 2009, 16:05:03
Oui mais j ai juste ajouter le return dans le forum lol c' est un peu compliquer pour indenter. Merci pour la remarque
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 05 Juillet 2009, 18:43:33
Merci beaucoup, j'avais ce code mais j'avais inversé return 1 et return 0 je ne savais pas que le return 0 pouvait être avant le return 1

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 12 Juillet 2009, 11:48:37
Slt

Je viens vous exposer un nouveau problème.
J' ai voulu réaliser un script admin simple d'utilisation, donc je me suis fortement inspiré du RAS de r@f ( en respectant les crédits ) mais l'ajout d'une variable pour être admin a provoquer un problème au niveau des commandes.
En effet, il n'y a que la commande /announce [MESSAGE] qui marche dans le jeu. Pour les autres commandes c'est comme si je n'avais rien taper. Le script ne comporte aucune erreur ni de warnings
Voici le lien pastebin: http://pastebin.com/m7e2a6bf6 (http://pastebin.com/m7e2a6bf6)

Je vous remercie d'avance pour vos réponses
A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 12 Juillet 2009, 15:45:49
Salut,

tu devrais inverser tes conditions, dans ton code tu stop l'exécution immédiatement après avoir testé si la variable est à 1...donc que le joueur ait tapé /annonce ou pas, le reste du code n'est pas exécuté

essaie d'arranger tes commandes de la façon suivante:

Code: (exemple de commande) [Sélectionner]
if(!strcmp(cmd, "/announce", true))
{
if(varadmin ==1)
{
SendClientMessage(playerid,COLOR_GREEN, "La commande Admin max level a bien été activé");
tmpp = strtok(cmdtext, idx);
format(tmpp, sizeof(tmpp), "%s",cmdtext[9]);
GameTextForAll(tmpp,2500,3);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Tu n'est pas admin.");
}
  return 1;
  }

et puis tu devrais plutôt utiliser un tableau, sinon tous les joueurs peuvent le faire...
new varadmin[MAX_PLAYERS];
//puis tu changera ta condition par:
if(varadmin[playerid] == 1)
//et pour cahnger la valeur de la variable
varadmin[playerid] = 1;//par exemple

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 14 Juillet 2009, 11:23:17
Slt

En mettant la variable en deuxième condition la commande /announce fait crasher le server et les autres commandes ne marchent plus non plus
Pour le tableau je ne vois pas excatement ce que tu veux dire. Peux tu préciser?

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 14 Juillet 2009, 11:40:45
un peu comme sa http://pastebin.com/me54969a (http://pastebin.com/me54969a)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 15 Juillet 2009, 11:29:49
Slt

Merci à vous tous pour vos réponses mais le serveru crash toujours lors d'une commnande
Mais après avoir intégré ces même commandes dans mon GM en virant /announce car elle ne marchait toujours pas mais commande de bases marchent /jail /unjail /goto /gethere /fric etc.....

J'ai une autre petite question
Lorsqu'on crée une variable par exemple varadmin comme dans mon cas:
- si la variable est varadmin[playerid] = 1, elle est à 1 juste pour le joueur ou pour tous le serveur?

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 15 Juillet 2009, 14:45:28
juste le joueur
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 15 Juillet 2009, 17:00:39
le pb pour les commande qui ne fonctionnent pas viens d ici


   if(!strcmp(cmd, "/announce", true))

remplace le par ca

if(strcmp(cmd, "/announce", true))

enfin c' est ce que je pense
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 15 Juillet 2009, 19:11:12
Slt

Si j'enlève le ! , j ai UNKNOW COMMANDS
Mais bon c est pas gave ma commande /say marche

A+
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 16 Juillet 2009, 03:57:07
Salut,

non le problème ne vient pas des !, par conter il aurait pu mettre  == 0 à la fin en remplacement...

as-tu pris simplement le script donné par rambo ou l'as tu modifié? si modifié, montre le via pastebin s'il te plait...

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 16 Juillet 2009, 11:41:44
Slt

Problème résolu grâce à Cristab, maintenant la commande /announce marhce nickel:
//=================================/ANNOUNCE====================================

  if(strcmp(cmd, "/announce", true) == 0)
{
    if(varadmin[playerid] ==1)
    {
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[256];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_ORANGE, "USAGE: /announce [message]");
return 1;
}
format(string, sizeof(string), "~y~%s", result);
GameTextForAll(string,5000,4);
}
else
{
    SendClientMessage(playerid, COLOR_RED, "Vous n'êtes pas Admin.");
}
return 1;
}

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 17 Juillet 2009, 17:18:08
Slt

Je suis en train d'essayer de créer un Derby simplifié mais j'ai quelques soucis dès le début. En fait lorsque je tape la commande /derby je suis téléporté dans le Derby mais je ne vois rien autour de moi, même pas la voiture, pourtant je susi bien dans la voiture car je vois des étincelles quand je fonce dans un mur
Voici le code:


public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp (cmdtext, "/derby", true) == 0)
{
new carid;
new Float:X, Float:Y, Float:Z, Float:a;
GetPlayerInterior(playerid);
LinkVehicleToInterior(carid, 15);
GameTextForPlayer(playerid,"~b~Bienvenue ~w~au ~r~Derby",5000,6);
ResetPlayerWeapons(playerid);
SetPlayerInterior(playerid, 15);
carid = CreateVehicle(504,X,Y,Z,a,-1,-1,86400000);
SetVehiclePos(playerid, -1362.3027,931.7820,1036.3176);
PutPlayerInVehicle(playerid,carid,0);
TogglePlayerControllable(playerid,1);
return 1;
}
return 0;
}

Donc si vous avez une réponses à ce problème faites moi signe
A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 18 Juillet 2009, 17:23:23
ajoute

SetPlayerInterior(playerid,15);
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Juillet 2009, 11:55:44
Slt

Merci quand même, mais cette ligne est déjà présente dans mon code

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 19 Juillet 2009, 14:30:41
Salut,

ton problème c'est que le véhicule est créé à l'endroit ou le joueur se trouvait avant de taper la commande, tu as d'abord récupérer sa position pour y créer un véhicule, lors de l'utilisation de PutPlayerInVehicle, le joueur y est déplacé, bref il se ramasse à son ancienne position mais dans l'intérieur....

il te suffit de créer le véhicule à la bonne position  ;)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Juillet 2009, 15:57:09
Slt

Après plusieurs essais pas très concluant j'ai finalement décidé de faire ce Derby à l'extérieur ce qui n'est en faite pas si mal au final.
Le Derby a l'air de marcher
Merci à tous le monde et particulièrement à Rambo qui m'a aidé à le réaliser

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: [F2G]Sc0rpi0n le 23 Juillet 2009, 21:52:24
On est dans le forum a question je croit donc autant pas faire 50 topic a flood inutiles :)

Alors voila j'aimerais qu'on m'explique :

http://www.gtaonline.fr/forums/index.php/topic,6172.0.html (http://www.gtaonline.fr/forums/index.php/topic,6172.0.html)

Dans les deux codes [sans compter le foward] Sommes-nous obliger d'utiliser le deuxieme ?
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 23 Juillet 2009, 23:15:19
Salut,

tu peut utiliser le premier, par contre le second est plus judicieux.

La définition d'un PlayerToPoint c'est "si le joueur est à porter d'un point", or la première fonction vérifie si le joueur est trop loin en x, puis en y puis en z, donc pas réellement la distance entre le joueur et le point, elle fais un cube au lieu d'une sphère (tous les points extérieurs d'une sphère sont à la même distance de son centre)

bref, la seconde fonction est plus précise. De plus elle est plus rapide (testé par Y_Less, voir son topic sur l'optimisation)

mais je préfère encore l'implantation que j'aie écrite tantôt:

Code: (PlayerToPoint) [Sélectionner]
PlayerToPoint(Float:radius, playerid, Float:X, Float:Y, Float:Z)
{
new Float:px, Float:py, Float:pz;
if(GetPlayerPos(playerid, px, py, pz))
{
px -= X;
py -= Y;
pz -= Z;
if((px * px) + (py * py) + (pz * pz) <= (radius * radius))
{
return 1;
}
}
return 0;
}

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: [F2G]Sc0rpi0n le 24 Juillet 2009, 10:42:48
Merci Sim :)

Double post
Rebonjour, Suite a ce topic qui est le même probleme que moi je rencontre plusieurs erreurs :s

http://www.gtaonline.fr/forums/index.php/topic,6597.msg101941.html#msg101941 (http://www.gtaonline.fr/forums/index.php/topic,6597.msg101941.html#msg101941)

J'aimerais que vous me donniez une aide pour m'indiquer les new... & Forward... a mettre

C:\Program Files\Bonjour\GTA San Andreas\gamemodes\SFTDM2(2).pwn(1747) : error 001: expected token: ",", but found "-identifier-"
C:\Program Files\Bonjour\GTA San Andreas\gamemodes\SFTDM2(2).pwn(1747) : error 017: undefined symbol "X"
C:\Program Files\Bonjour\GTA San Andreas\gamemodes\SFTDM2(2).pwn(1747) : error 029: invalid expression, assumed zero
C:\Program Files\Bonjour\GTA San Andreas\gamemodes\SFTDM2(2).pwn(1747) : fatal error 107: too many error messages on one line

_________________________________________________________________________________ __________________________

Second probleme :

J'ai une erreur souvent rencontrer avec des probleme de fermeture des invalides mais quand je ferme sa fait tout bugger le compilateur :s

if(strcmp(cmd, "/toit", true) == 0)
{
(PlayerToPoint(8.0, playerid,-1479.3142,454.9642,7.1875))
SetPlayerPos(playerid,-1471.3809,447.5398,31.0797);
  return 1;
 
  }



Et le forward :

forward PlayerToPoint(Float:radi,playerid,Float:x,Float:y,Float:z);
Merci d'avance
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 26 Juillet 2009, 23:31:26
essaye comme ceci

if(strcmp(cmd, "/toit", true) == 0)
{
if(PlayerToPoint(8.0, playerid,-1479.3142,454.9642,7.1875))
{
SetPlayerPos(playerid,-1471.3809,447.5398,31.0797);
}
  return 1;
 
  }

Tout en indentent bien sur ^^
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 05 Septembre 2009, 19:28:37
Slt

J'ai un petit problème.
Ayant le saut unique au casino, mon cheat risquait de ne pas marcher quand je voulais, j'ai donc désactiver les intérieurs ( DisableInteriorEnterExits(); )
J'ai ensuite réalise un pick up devant un ammu pour se téléporter dans l'ammu ce qui ne m'a pas posé pb.
Le problème c'est que lorsque je rentre dans l'ammunation à l'aide du pick up, j'apparais dans l'ammunation mais le vendeur d'armes n'est pas là.

Donc voici la question: Comment faire pour pouvroir acheter des armes au vendeur en ayant désactiver les intérieurs standards ( ceux où il faut rentrer en marchant sur la flèche jaune )?

Merci d'avance pour vos réponses
A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Xoss le 10 Septembre 2009, 08:05:34
SI tu veux au pire tu peux creer un menu, ce qui sera mieu car tu pourra mettre les armes que tu veux !
( le menu peut etre dans cette ammunation)
Ca peut sous forme de pickup ou checkpoint et le menu s'affiche avec tous les armes possble et leur prix ^^
++ Xoss
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Septembre 2009, 23:14:09
Slt

Merci pour ta réponse
Au, final j'ai fini par faire ça

J'ai une autre question
Des petis malins testent pleins de rcon sur mon serveur, j 'aimerai les bannir au bout de 3 mauvais mdps avec la commande /rcon login. J'ai fais le tour sur le forum et j'ai vu que la callback onerconcommand ne marchait pas.
Donc la question est: quel est le moyen pour bannir un joueur au bout de 3 mauvais rcon? :)
Titre: Re : LePtitClown : différentes questions
Posté par: Xoss le 18 Septembre 2009, 23:55:34
Oui possible mais je sais pas comment tres bien le faire dsl ...
Mais pour ça rien a faire ...., les cons restent des cons et ils peuvent essayer autant de fois qu'ils veulent  en faisant clique droit et remote console ...
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 19 Septembre 2009, 10:17:39
mabako a fait un pluning dispo sur le wiki samp et le forum ainsi que son site perso ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Septembre 2009, 21:46:14
Slt

Merci pour vos réponses, nottament à Critsab avec son plugin. L'essayer,c'est l'approuvé ^^.

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: gtaspeed34 le 20 Septembre 2009, 20:50:24
salut all voila j'ai un ti probleme j'avai mi un menu dans mon script, le serv marchai bien et le menu ossi mais depui que j'ai rajouter le un 2eme menu, le serv ne marche plus pourtant quand le script compile il n'y a aucune erreur  je suis perdu :s
new Menu:banks;
new Menu:arme;
public OnGameModeInit()
{
banks = CreateMenu("~g~Bank",1,125,150,300);
    SetMenuColumnHeader(arme ,0, "Selection de l'operation");
       AddMenuItem(arme ,0,"retrait: 1$");
       AddMenuItem(arme ,0,"retrait: 10$");
       AddMenuItem(arme ,0,"retrait: 100$");
       AddMenuItem(arme ,0,"retrait: 1000$");
 arme = CreateMenu("~r~Street ~r~Ammu",1,125,150,300);
SetMenuColumnHeader(arme ,0, "Selection des armes");
       AddMenuItem(arme ,0,"Sawnoff ShotG./200 balles-prix: 300$");
       AddMenuItem(arme ,0,"Combat ShotG./200 balles-prix: 300$");
       AddMenuItem(arme ,0,"AK-47/200 balles-prix: 300$");
       AddMenuItem(arme ,0,"M4/200 balles-prix: 300$");
       AddMenuItem(arme ,0,"exit");
}
public OnPlayerSelectedMenuRow(playerid, row)
{
new Menu:Current = GetPlayerMenu(playerid);
if (Current == arme){
        if (row == 0){
          GivePlayerWeapon(playerid,26,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 1){
          GivePlayerWeapon(playerid,27,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerWeapon(playerid,30,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerWeapon(playerid,31,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          TogglePlayerControllable(playerid,1);
  return 1;
    }
  }
new Menu:Currents = GetPlayerMenu(playerid);
if (Currents == banks){
        if (row == 0){
          GivePlayerMoney(playerid,1);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerMoney(playerid,10);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerMoney(playerid,100);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          GivePlayerMoney(playerid,1000);
          TogglePlayerControllable(playerid,1);
         }
   }
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{   
    switch(getCheckpointType(playerid))
{
                case CP_BANK: {
                       TogglePlayerControllable(playerid,0);
                       ShowMenuForPlayer(banks,playerid);
}
case CP_BANK_2: {
TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(banks,playerid);
}
case CP_BANK_3: {
TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(banks,playerid);
}
                case CP_AMMU: {
                TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(arme,playerid);
        }
        }
return 0;
}
voila si quelqu'un veut m'aidé c pas de refus  :D
Titre: Re : LePtitClown : différentes questions
Posté par: Dark4ng3L le 20 Septembre 2009, 21:01:06
new Menu:banks;
new Menu:arme;
public OnGameModeInit()
{
banks = CreateMenu("~g~Bank",1,125,150,300);
    SetMenuColumnHeader(banks ,0, "Selection de l'operation");
       AddMenuItem(banks ,0,"retrait: 1$");
       AddMenuItem(banks ,0,"retrait: 10$");
       AddMenuItem(banks ,0,"retrait: 100$");
       AddMenuItem(banks ,0,"retrait: 1000$");
 arme = CreateMenu("~r~Street ~r~Ammu",1,125,150,300);
SetMenuColumnHeader(arme ,0, "Selection des armes");
       AddMenuItem(arme ,0,"Sawnoff ShotG./200 balles-prix: 300$");
       AddMenuItem(arme ,0,"Combat ShotG./200 balles-prix: 300$");
       AddMenuItem(arme ,0,"AK-47/200 balles-prix: 300$");
       AddMenuItem(arme ,0,"M4/200 balles-prix: 300$");
       AddMenuItem(arme ,0,"exit");
}
public OnPlayerSelectedMenuRow(playerid, row)
{
new Menu:Current = GetPlayerMenu(playerid);
if (Current == arme){
        if (row == 0){
          GivePlayerWeapon(playerid,26,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 1){
          GivePlayerWeapon(playerid,27,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerWeapon(playerid,30,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerWeapon(playerid,31,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          TogglePlayerControllable(playerid,1);
  return 1;
    }
  }
new Menu:Currents = GetPlayerMenu(playerid);
if (Currents == banks){
        if (row == 0){
          GivePlayerMoney(playerid,1);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerMoney(playerid,10);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerMoney(playerid,100);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          GivePlayerMoney(playerid,1000);
          TogglePlayerControllable(playerid,1);
         }
   }
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{   
    switch(getCheckpointType(playerid))
{
                case CP_BANK: {
                       TogglePlayerControllable(playerid,0);
                       ShowMenuForPlayer(banks,playerid);
}
case CP_BANK_2: {
TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(banks,playerid);
}
case CP_BANK_3: {
TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(banks,playerid);
}
                case CP_AMMU: {
                TogglePlayerControllable(playerid,0);
                        ShowMenuForPlayer(arme,playerid);
        }
        }
return 0;
}

++ D4 ++
8) 8)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 20 Septembre 2009, 22:02:47
sa sert a rien de rajouter un s a current



<?php
new Menu:banks;
new 
Menu:arme;
public 
OnGameModeInit()
{
banks CreateMenu("~g~Bank",1,125,150,300);
   
SetMenuColumnHeader(arme ,0"Selection de l'operation");
       
AddMenuItem(arme ,0,"retrait: 1$");
       
AddMenuItem(arme ,0,"retrait: 10$");
       
AddMenuItem(arme ,0,"retrait: 100$");
       
AddMenuItem(arme ,0,"retrait: 1000$");
 
arme CreateMenu("~r~Street ~r~Ammu",1,125,150,300);
SetMenuColumnHeader(arme ,0"Selection des armes");
       
AddMenuItem(arme ,0,"Sawnoff ShotG./200 balles-prix: 300$");
       
AddMenuItem(arme ,0,"Combat ShotG./200 balles-prix: 300$");
       
AddMenuItem(arme ,0,"AK-47/200 balles-prix: 300$");
       
AddMenuItem(arme ,0,"M4/200 balles-prix: 300$");
       
AddMenuItem(arme ,0,"exit");
}
public 
OnPlayerSelectedMenuRow(playeridrow)
{
new 
Menu:Current GetPlayerMenu(playerid);
if (
Current == arme){
        if (
row == 0){
          
GivePlayerWeapon(playerid,26,200);
          
GivePlayerMoney(playerid, -300);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 1){
          
GivePlayerWeapon(playerid,27,200);
          
GivePlayerMoney(playerid, -300);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 2){
          
GivePlayerWeapon(playerid,30,200);
          
GivePlayerMoney(playerid, -300);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 3){
          
GivePlayerWeapon(playerid,31,200);
          
GivePlayerMoney(playerid, -300);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 4){
          
TogglePlayerControllable(playerid,1);
  return 1;
    }
  }

else if (
Current == banks){
        if (
row == 0){
          
GivePlayerMoney(playerid,1);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 2){
          
GivePlayerMoney(playerid,10);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 3){
          
GivePlayerMoney(playerid,100);
          
TogglePlayerControllable(playerid,1);
        }
        else if (
row == 4){
          
GivePlayerMoney(playerid,1000);
          
TogglePlayerControllable(playerid,1);
         }
   }
return 
1;
}

}
Titre: Re : LePtitClown : différentes questions
Posté par: Ssk le 20 Septembre 2009, 22:27:39
Ca


new Menu:Current = GetPlayerMenu(playerid);
ca ce change pas par ca ??

new Current = GetPlayerMenu(playerid);
Titre: Re : LePtitClown : différentes questions
Posté par: gtaspeed34 le 20 Septembre 2009, 22:58:19
non je bug toujours, ya toujours pas d'erreur a la compile mais quand je lance le serv il s'éteint presque aussitôt et ce depuis que j'ai rajouter ce bout de code 
banks = CreateMenu("~g~Bank",1,125,150,300);
       SetMenuColumnHeader(arme ,0, "Selection de l'operation");
           AddMenuItem(arme ,0,"retrait: 1$");
           AddMenuItem(arme ,0,"retrait: 10$");
           AddMenuItem(arme ,0,"retrait: 100$");
           AddMenuItem(arme ,0,"retrait: 1000$");
quand je le retire le serv remarche normalement donc peut etre que je ne peut pas mettre 2 menu dans le GameModeInit
ps: je suis sur la version 0.3 d'SAMP
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 20 Septembre 2009, 23:33:08
pardon sazuke j'avais pas preter attention


public OnPlayerSelectedMenuRow(playerid, row)
{
new Current = GetPlayerMenu(playerid);
if (Current == arme){
        if (row == 0){
          GivePlayerWeapon(playerid,26,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 1){
          GivePlayerWeapon(playerid,27,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerWeapon(playerid,30,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerWeapon(playerid,31,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          TogglePlayerControllable(playerid,1);
  return 1;
    }


else if (Current == banks){
        if (row == 0){
          GivePlayerMoney(playerid,1);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerMoney(playerid,10);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerMoney(playerid,100);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          GivePlayerMoney(playerid,1000);
          TogglePlayerControllable(playerid,1);
         }
   }
}
return 1;
}

j pense meme qu'il y avait une accolade mal placer


gtaspeed si sa ne fonctionne toujours pas attend demain que je mette ton code sur pawn et corriger sa ;)
Titre: Re : Re : LePtitClown : différentes questions
Posté par: S!m le 20 Septembre 2009, 23:45:28
Salut,

regardons d'abord ce code:

banks = CreateMenu("~g~Bank",1,125,150,300);
       SetMenuColumnHeader(arme ,0, "Selection de l'operation");
           AddMenuItem(arme ,0,"retrait: 1$");
           AddMenuItem(arme ,0,"retrait: 10$");
           AddMenuItem(arme ,0,"retrait: 100$");
           AddMenuItem(arme ,0,"retrait: 1000$");

tu crée le menu banks puis tu ajoute des items au menu arme?

sinon pour le Current, je suis pratiquement sûr qu'il doit comporter le tag Menu puisqu'il est comparé avec les variables arme et banks qui elles l'ont.

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: gtaspeed34 le 21 Septembre 2009, 00:58:22
ouai j'me suis trompé pour le menu banks  ;D sinon c bon les 2 menu marche  :D, merci a vous
Titre: Re : Re : Re : LePtitClown : différentes questions
Posté par: Ssk le 21 Septembre 2009, 07:48:29
Salut,

regardons d'abord ce code:

banks = CreateMenu("~g~Bank",1,125,150,300);
       SetMenuColumnHeader(arme ,0, "Selection de l'operation");
           AddMenuItem(arme ,0,"retrait: 1$");
           AddMenuItem(arme ,0,"retrait: 10$");
           AddMenuItem(arme ,0,"retrait: 100$");
           AddMenuItem(arme ,0,"retrait: 1000$");

tu crée le menu banks puis tu ajoute des items au menu arme?

sinon pour le Current, je suis pratiquement sûr qu'il doit comporter le tag Menu puisqu'il est comparé avec les variables arme et banks qui elles l'ont.

++Sim++

Arg ta etait plus rapide que moi lol GG
Titre: Re : LePtitClown : différentes questions
Posté par: gtaspeed34 le 21 Septembre 2009, 23:05:50
bonsoir tout le monde,
voila y se trouve que j'ai un petit probleme avec mon script,quand je passe sur le checkpoint le menu s'afiche comme prevu avec les item mais lorsque je sélectionne une item je sort du menu donc je doit ressortir du checkpoint et ré entré dedans pour réaffiché le menu.ce que j'aimerai c'est que le menu reste afficher jusqu'à ce que je le quitte,pour faire sa il faut mettre une boucle je croit mais sa je sais pas faire ^^' donc si quelqu'un pouvai m'expliquer s.v.p   :happy
{
new cash[MAX_PLAYERS];
new Menu:Current = GetPlayerMenu(playerid);
if (Current == arme){
        if (row == 0){
            if(cash[playerid] < 700){
              TextDrawShowForPlayer(playerid, loading);
     TogglePlayerControllable(playerid,1);
            }
            else {
              GivePlayerWeapon(playerid,26,200);
              GivePlayerMoney(playerid, -700);
              TogglePlayerControllable(playerid,1);
            }
        }
        else if (row == 1){
          GivePlayerWeapon(playerid,27,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerWeapon(playerid,30,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerWeapon(playerid,31,200);
          GivePlayerMoney(playerid, -300);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          TogglePlayerControllable(playerid,1);
          return 1;
    }
  }
else if (Current == banks){
        if (row == 0){
          GivePlayerMoney(playerid,1);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 1){
          GivePlayerMoney(playerid,10);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 2){
          GivePlayerMoney(playerid,100);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 3){
          GivePlayerMoney(playerid,1000);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 4){
          GivePlayerMoney(playerid,10000);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 5){
          GivePlayerMoney(playerid,100000);
          TogglePlayerControllable(playerid,1);
        }
        else if (row == 6){
          TogglePlayerControllable(playerid,1);
        }
   }
return 1;
}

Double post
petit up
(dsl double post)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 22 Septembre 2009, 22:24:21
mais si le menu s'affiche sans arret tu ne pourrat jamais quitter le CP
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 22 Septembre 2009, 23:44:50
Salut,

ce que tu peut faire, c'est regarder ton code et modifier les conditions pour que le menu soit ouvert lors de certains choix (ShowMenuForPlayer),

tu pourrais aussi ajouté une ligne fermer le menu et assure toi que la façon traditionnelle de quitter le menu (même touche que pour entrer dans un véhicule) soit toujours fonctionnelle (callback OnPlayerExitedMenu impliquée)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 23 Septembre 2009, 19:57:24
Slt

PB résolu grâce à Cristab :D

A+
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 22 Octobre 2009, 20:32:53
Slt

Je fais appel à vos services pour un problème au niveau d'un bot que je suis en train de créer
- j'ai sauvegardé en .rec grâce au FS de Cristab
-J'ai bien un fichier en amx dans npc mode comme il faut
- il est bien lancé ( je le vois sur la console )
- le .cfg m'a bien l'air configuré ( nbre de bot respecté )
- les condition du type si c'est un bot il spawn direct sont aussi mises dans mon GM

Mais le problème c'est que ce bot ne veut pas faire la trajectoire qu'il doit faire
(soit il n'apparait pas du tout ou soit il est bloqué au spawn )
Donc si vous aviez un tutorial simple à comprendre pour réaliser un bot à pied ( plus simple pour moi pour le moment à mon avis ) je suis preneur.
PS: J'ai déjà lu le tutos créer ici mais ça ne marchait pas non plus et ce tutos ne mettait pas les scripteurs d'accord d'où ma requête.

Merci d'avance
A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 22 Octobre 2009, 20:36:37
HS petit clown attention a toutes t'es publiciter  ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 28 Novembre 2009, 14:21:48
Slt

J'ai encore besoin de votre aide pour un petit problème. :wall
Je cherche à mettre l'ID d'un joueur dans un message qui a été trouvé à l'aide d'une boucle démarré par une commande du type:
dcmd_idjoueur(const playerid,const params[])
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
J'ai essayé d'utiliser la fonction GetPlayerID que j'ai utilisé comme celà: new id = GetplayerID(playerid);
Pour mettre cet ID dans un message:
format(string,sizeof(string),"[%d] %s petit message au joueur", id,Nombre(i));
SendClientMessage(playerid,COLOR,string);
Lors de la compilation, il me dise qu'aucune fonction n'est appelé. J'ai donc ajouté un stock pour la fontion GetPlayerID, mais ça ne marche toujours pas.
Donc si l'un de vous à la solution pour obtenir l'ID d'un joueur et l'insérer dans un message, j'aimerai bien qu'il m'explique
Merci d'avance pour votre aide
A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 28 Novembre 2009, 14:32:49
pas besoin de GetPlayerId pour sa

exemple


new id;
id=PID;
format(string,sizeof(string),"[%d] %s petit message au joueur", id,Nombre(i));
SendClientMessage(playerid,COLOR,string);

ou j'ai rien compris

Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 28 Novembre 2009, 19:06:51
Re

Je ne comprend pas cette ligne id=PID. Mon pid n'est défini nulle part donc ça voudrait dire que id=PID sont égaux mais ils seront tous les 2 définis comme cela: new id; / new pid;
C'est normal , ou est ce que je dois définir le pid autrement, si oui comment ? :)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 28 Novembre 2009, 20:36:30
mais en gros tu veut l'id du joueur exemple /idjoueur 5 et sa te met 5 donc juste PID ou giveplayerid
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 29 Novembre 2009, 12:57:07
Slt

Non justement je ne trouve pas les joueurs recherchés comme ça, je les rechercher grâce à une boucle qui me dit qui a combien d'étoiles. Moi j'aimerai rajouter l'id des joueurs dans le message qui me dit combien d'étoiles les joueurs ont

A+ :)
Titre: Re : Re : LePtitClown : différentes questions
Posté par: The Bird le 29 Novembre 2009, 14:09:05
voila j' espere que ca t aidera http://forum.sa-mp.com/index.php?topic=14702.0 (http://forum.sa-mp.com/index.php?topic=14702.0)

Sa vient de moi ou :

corleon = GangZoneCreate(-2000,689, -230,4358, -1730,301, 250,8499);
    japonais = GangZoneCreate(-2437,172, 503,3276, -2077,942, 874,1542);

C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11332) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11332) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11332) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11332) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11333) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11333) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11333) : warning 202: number of arguments does not match definition
C:\Users\*\Documents\SAMP script\gamemodes\larp.pwn(11333) : warning 202: number of arguments does not match definition
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 29 Novembre 2009, 16:53:46
Salut,

pour ton problème petit clown c'est que de la faire dans le format

j'imagine que tu as une boucle semblable à ceci:

new level = 0, tmp[128];
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i))
    {
        if((level = GetPlayerWantedLevel(i)))
        {
            format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)" i, level);
            SendClientmessageToAll(COLOR_RED, tmp);
        }
    }
}

tu devrais avoir un truc du genre (ps. je préfère donné le nom que l'ID)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 02 Décembre 2009, 15:05:30
Slt

Merci beaucoup, je vais essayer ça

RE:
J'ai quelque soucis avec le code que tu m'a fait. Il y a beaucoup d'erreurs à une ligne mais je ne sais pas les résoudre vu que je ne connais pas bien les tmp et je ne sais pas mettre les id dans un message. Je ne connais donc pas la structure exact pour corriger.
Voivi le code une fois mis dans une commande défini en dcmd:
dcmd_recherche(const playerid,const params[])
{
    #pragma unused params
    SendClientMessage(playerid,COLOR_ORANGE,"Voici la liste des joueurs recherchés");
    new level = 0, tmp[128];
    for(new i = 0; i <= MAX_PLAYERS; i++)
   {
   if(IsPlayerConnected(i))
   {
       if((level = GetPlayerWantedLevel(i)))
       {
           format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)" i, level); <========= ligne 4822 où sont détectées les erreurs
           SendClientmessageToAll(COLOR_RED, tmp);
       }
         }
}
return 1;
}

Et voici les erreurs:

C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : error 001: expected token: "-string end-", but found "-identifier-"
C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : warning 215: expression has no effect
C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : warning 215: expression has no effect
C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Propriétaire\Bureau\Dossier ******\GTA SA-MP\samp 0.3\gamemodes\AAG.pwn(4822) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.



Aidez moi svp

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Alan le 02 Décembre 2009, 17:06:54
Regarde a cette ligne (4822) Supprime Ce qu'il y a.
Titre: Re : LePtitClown : différentes questions
Posté par: » Lukubi™ le 02 Décembre 2009, 17:17:53
Alan, la pub est interdite dans les signature, vas lire les règles (;
Titre: Re : LePtitClown : différentes questions
Posté par: Alan le 02 Décembre 2009, 17:20:35
Ok, Je suppr.
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 02 Décembre 2009, 20:04:30
if((level = GetPlayerWantedLevel(i))) sa c'est pas bon if(level = GetPlayerWantedLevel(i)) sa c'est bon
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 03 Décembre 2009, 16:09:19
Salut,

non, c'est bon, suffit de tester et tu verra, c'est en quelque sorte une compression de :

level = GetPlayerWantedLevel(i);
if(level)
{
}

Le code
if(level = GetPlayerWantedLevel(i))causera un warning (ou une erreur je ne suis pas certains) indiquant que tu n'utilise pas le = dans un endroit approprié..il suffit d'ajouter un () pour contourner ce problème.

le problème vient du format, une simple erreur de frappe, cherche un peu et tu trouvera, d'ailleurs le simple fait que tu n'ai pas trouvé par toi-même montre que tu ne met pas beaucoup d'efforts à arranger tes problèmes seul... :(

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Décembre 2009, 20:31:17
Slt

Si si j'ai cherché, je me suis même inspiré du RAS mais sans succès d'où ma demande d'aide. Malgré vos propositions les 4 erreurs persistent
format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)" i, level);

Dsl en réécrivant la ligne j'ai réussi à corriger les dernières erreurs restantes. La forme de ce message pourra être bénéfique à d'autres joueurs, je l'espère
Il y a juste une ligne que je ne comprend pas dans ce que vous m'avez montré. new level = 0; . A quoi sert ce 0 ? Moi j'aurai plutôt mis new level;
Je demande ça car en jeu, la commande recherche ne trouve aucun joueur recherché

A+ :)
Titre: Re : LePtitClown : différentes questions
Posté par: Syg le 03 Décembre 2009, 21:52:36
Il manque une virgule avant la variable i dans ton format :
format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)", i, level);

C'est ça qui cause toutes les erreurs que tu as.

Cristab, les doubles parenthèses c'est juste pour éviter un warning du compilateur.

++
Syg
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 03 Décembre 2009, 21:58:43
ah mais ok lol je juste de comprendre sa condition  :lmfao

mais euh enfaite j'en voit pas l'utilité

if(level == GetPlayerWantedLevel(i))

la on a le meme resultat que sa

if((level = GetPlayerWantedLevel(i)))

bizard je trouve pas sa tres claire enfaite

Comme je dit toujours si je trouve pas tres claire j'imagine meme pas le compilo

enfin si sa fonctionne c'est deja sa :)

Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 03 Décembre 2009, 22:55:25
Salut,

il y a une grande différence dans le fonctionnement, le code suivant:
if(level == GetPlayerWantedLevel(playerid))ne fait que tester si level est égal à la valeur retournée par la fonction GetPlayerWantedLevel

tandis que le code suivant:
if((level = GetPlayerWantedLevel(playerid)))modifie la valeur de la variable level, lui donne la valeur retournée par la fonction PUIS teste la valeur en question (grâce à la  parenthèse supplémentaire le compilo comprend que c'est la valeur en question qui est testé et non pas si l'expression est égale)
bref, ce code est équivalent à celui ci:
level = GetPlayerWantedLevel(i);//on assigne la valeur à level
if(level)//on test la valeur en question
{
}

j'espère que c'est clair ;)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 03 Décembre 2009, 23:19:51
Citer
level = GetPlayerWantedLevel(i);//on assigne la valeur à level
if(level)//on test la valeur en question
{
}

sa c'est plus claire deja pour moi :)
Titre: Re : LePtitClown : différentes questions
Posté par: Syg le 04 Décembre 2009, 09:34:04
Il est plus prudent de décomposer ce test en 2 lignes.

Si on garde la ligne
if((level = GetPlayerWantedLevel(playerid)))on risque de se poser des questions si on revient dessus dans quelques semaines et on risque de corriger (en remplaçant le = par ==), ce qui fera que le code ne fonctionnera plus comme il doit.

++
Syg
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 04 Décembre 2009, 18:47:49
Slt

Bien dit Syg vu que j'ai fais l'erreur
Pour la virgule, je l'avais mise. Je vais tester comme ça et je vous redis

A+ :D
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Janvier 2010, 19:32:54
Slt

Je viens vous exposer un nouveau problème que je n'arrive pas à résoudre ( je ne sais même pas si c'est possible sur samp )
Comment puis je vérifier qu'une remorque est bien attachée à un linerunner ?
J'arrive à vérifier que le linerunner est sur le checkpoint mais pour la remorque, vu qu'on ne la conduit pas, je ne vois pas comment on peut vérifier qu'elles est bien présente sur le chekpoint en même temps que le linerunner.
Merci d'avance pour vos réponses est vos explications

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 18 Janvier 2010, 20:37:39
mmm a la base ce n'est pas possible mais tu peu recupere le carid des remorque et voir si la remarque est pas loin du playerid
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Janvier 2010, 20:41:36
Re:

Merci pour ta réponse rapide.
J'y avais pensé mais je voulais être sur qu'il n'y avait pas plus simple.
Donc plus qu'à me lancer sur cette technique
Merci :D

A+
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 18 Janvier 2010, 21:23:25
Salut,

probablement qu'en combinant IsTrailerAttachedToVehicle et GetVehicleTrailer tu devrais obtenir un bon résultat

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Janvier 2010, 20:34:01
Slt

Jamais entendu parler de cette fonction, peut être nouvelle avec samp 0.3 ???
Mais je vais aller voir tout ça.
Merci à vous deux

RE:
Alors j'ai utiliser la petite fonction sans problème. J'ai bien défini mes véhicules du type new rr1; en haut et dans onegamemodeinit rr1 = addstatic.......
Mais le probème c'est que la remorque n'est pas reconnue une fois dans le jeu.
Voilà la condition que j'ai utilisé:
if(IsTrailerAttachedToVehicle(rr1 || rr2 || rr3 || rr4 || rr5 || rr6 || rr7 || rr8 || rr9 || rr10 || rr11))
{
Les rr étant toutes des remorques comme rr1 et j ai bien mis un vehicleid = GetPlayerVehicleID(playerid) au dessus de ma condition
Donc encore quelques soucis ???


A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 19 Janvier 2010, 20:50:48
Salut,

ta condition devrait ressembler à ceci:

if(IsTrailerAttachedToVehicle(rr1) || IsTrailerAttachedToVehicle(rr2) || IsTrailerAttachedToVehicle(rr3)....)
;)
fais attention, cette fonction ne fait que vérifier qu'une remorque, peu importe laquelle, est attachée au véhicule rr1 (ou rr2 etc...)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Janvier 2010, 20:53:32
Merci ça marche parfaitement, tout simplement ce que je voulais :D

J'ai une autre question mais ce serait plutôt du côté protection serveur.
En effet les doubles compte comme vous le savez ce n'est pas très facile à reperer etc.
Donc je voudrai intégrer un système vérifiant le rang du joueur ex 25.58.**.** pour vérifier si une ip ayant crée un compte existe déjà.

Mais 3 problèmes se posent:

le 1er: Comment faire pour comparer l'ip d'un joueur enregistré à un joueur non enregistré.

le 2ème: Mes fichiers sauvegarde sont enregistrés en .dudb avec mdp hach, argent et score docn je voudrai savoir comment  y intégrer l'ip du joueur

le 3ème: il faudra que j'enregistre les ips des joueurs ayant déjà un compte durant la commande /login

Mais j'ai du mal pour sauvegarder des données dans un fichier comme ici .dudb donc j'aimerai que vous me donniez quelques renseignements. Voici quelesques données pour que vous puissez m'aider

Ex de fichier .dudb d'une save de compte:
password_hash=54564813
Money=3745719
Score=3745719
Kills=-1812395550
Deaths=41529779
PS: les kills bug mais ne faites pas attention à ça :lmfao

Mes commandes login et register:
 dcmd_register(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte existe déjà '/login mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Usage correct: '/register mot de passe'");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Compte crée '/login mot de passe.");
    return true;

 }

  dcmd_login(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte n'existe pas '/register mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Tapez '/login mot de passe'");
    if (udb_CheckLogin(PlayerName(playerid),params)) {
       // Status
       GivePlayerCash(playerid,dUserINT(PlayerName(playerid)).("money")+GetPlayerMoney(playerid));
       SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("Score")+GetPlayerScore(playerid));
       pkills[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Kills")+pkills[playerid]);
       pdeaths[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Deaths")+pdeaths[playerid]);
       PLAYERLIST_authed[playerid]=true;
       KillTimer(protectionOK[playerid]);//protection
       logged[playerid] = 1;
       return SystemMsg(playerid,"Vous êtes logué avec succès!");
    }


Merci d'avance pour votre aide  ;)

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 19 Janvier 2010, 21:43:47
Salut,

sans doute que la meilleure méthode consiste à sauvegarder tous les IP ayant un compte sur le serveur dans un fichier,

ainsi il ne te resterais qu'à ouvrir ce fichier et vérifier les IP une à une.

par contre, fais attention, ce genre de système peut nuire au serveur en empêchant de nouveaux joueurs de ce créer un compte (disons que moi et mon frère sommes sur le même pc....), puisque tu semble vouloir utiliser les deux premiers nombre de l'IP seulement, tu risque également de bloquer beaucoup de gens...

sinon en ce qui concerne la méthode, pour lire le fichier, il serait plus judicieux d'utiliser directement les fonctions de gestions de fichier de sa-mp:

if(fexist(FICHIER))
{
    new File:file;
    file = fopen(FICHIER, io_read);
    if(file)
    {
        new tmp[32];//un IP par ligne, pas besoin d'un string long (serait mieux de mettre 128 au cas où...)
        while(fread(file, tmp, 32))
        {
            if(strcmp(IP, tmp, false, 16))
            {
                fclose(file);
                //l'ip est déjà enregistré
            }
        }
        fclose(file);
    }
}

pour faire la liste, il te suffirait de ce format : "%s\r\n" et simplement un petit fopen (mode io_append), un fwrite et un fclose
et de récupérer l'IP du joueur au moment de son inscription (GetPlayerIP)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Janvier 2010, 21:54:03
Re:

Slt

Tu m'as convaincu, on va éviter de faire comme ça
Pourrais tu m'expliquer comment faire pour que lorsque un joueur s'enregistre ( donc /register mdp en général ) son pseudo suivi de son ip soit sauvegarder dans un fichier texte dans scriptfile. Comme ça on peut voir qui est nouveau et on peut vérifier les comptes facilement. D'après une grande aide de rambo pour sauvegarder j en arrive là:
#define FileSaveLPCIP "IP.txt"//LPCIP //tout en haut du GM

public OnGameModeInit()
{
//LPCIP
SetGameModeText("Blank Script");
new File:SaveD;
SaveD = fopen(FileSaveLPCIP, io_readwrite);
if(!fexist(FileSaveLPCIP))
{
fopen(FileSaveLPCIP, io_readwrite);
print("fichier"#FileSaveLPCIP"cree");
fclose(SaveD);
}
else
{
   print("fichier"#FileSaveLPCIP"charger");
   fclose(SaveD);
}
                 return 1;
}

//puis à la suite de ma commande register:

new File:Ficher = fopen(FileSaveLPCIP, io_append);
                 new ip[30];
                 new name[MAX_PLAYER_NAME];
                 new VTR[128];
                 GetPlayerIp(playerid,ip,128);
GetPlayerName(playerid,name,sizeof(name));
printf ("IP du joueur %s: %d",name,ip);//??????
fwrite(Ficher, VTR);
fclose(Ficher);
    return true;

Comme vous pouvez vous en douter, si je suis là c'est que ça ne marche pas :D. Donc j'aimerai avoir de l'aide avec par exemple un exemple car là je sèche :P

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 21 Janvier 2010, 01:15:02
Salut,

dans ton OnGameModeInit, tu devrais modifier l'ordre de tes actions:

 1 - vérifie si le fichier existe
 2 - s'il n'existe pas, on en crée un nouveau (+ le fermer (io_write ferait pareil))

Ensuite, il pourrait être plus pratique de placer le reste du code dans une fonction du genre:

IsIPAndPseudoSaved(pseudo[], IP[])
{
    new tmp[64], tmpp[64], len;
    format(tmp, 64, "%s %s", pseudo, IP);
    len = strlen(tmp);//permet de ne pas tenir compte des \r\n à la fin de chaque ligne
    new File:file = fopen(fichier, io_read);
    while(fread(file, tmpp, 64))
    {
        if(!strcmp(tmp, tmpp, true, len))
        {
            //trouvé
            fclose(file);
            return 1;
        }
    }
    fclose(file);
    return 0;
}

dans le cas de cette fonction, ton fichier devrait contenir les données structurées comme ceci:

Citer
NOM1 IP1
NOM2 IP2
NOM3 IP3
NOM4 IP4

essaie de t'en inspiré pour le faire à ta façon si tu le veut et de faire le code qui générerais le fichier correspondant
bonne chance

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 21 Janvier 2010, 20:53:20
Slt

Tu pourrais me donner quelques précisions de plus car dsl mais je n'y arrive vraiment pas. ???
Ce que je comprend ddans ce que tu dis c'est:
Citer
1 - vérifie si le fichier existe
 2 - s'il n'existe pas, on en crée un nouveau (+ le fermer (io_write ferait pareil))
if(!fexist(file))
{
fopen(file, io_readwrite);
fclose(file);
}
else
{
   fclose(file);
}
Et dans register je met la fonction que tu m'as donné mais une fois en jeu ce code ne marche pas :(
Donc je n'ai pas encore tout compris ;D

A+
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 21 Janvier 2010, 21:11:56
Salut,

comme tu n'ouvre pas le fichier s'il existe, le else ...(fermer le fichier) est inutile (il n'est pas ouvert)

La fonction qui te permettrais de stocker les IP et pseudo dans le fichier (qui auraient étés testés avec l'autre function), ressemblerais à ceci:

function(playerid)
{
    new tmp[64], tmpp[16];
    GetPlayerIP(playerid, tmpp, 16);
    GetPlayerName(playerid, tmp, MAX_PLAYER_NAME);
    format(tmp, sizeof(tmp), "%s %s\r\n", tmp, tmpp);//donc on format les informations à entrer
    new File:file = fopen("fichier", io_append);//io_append permet de se placer à la fin du fichier afin d'ajouter des choses à la suite
    fwrite(file, tmp);
    fclose(file);
    return 1;
}

voilà, en vérifiant de bien placé le tout comme tu le désire, tu as une fonction pour ajouter le joueur à la liste, une pour savoir s'il est dans la liste (simple à modifier pour récupérer de la liste)

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 22 Janvier 2010, 18:19:17
Slt

Toujours pas, j'ai pas l'habitude de demander ça mais, tu peux me le faire car là je vois vraiment pas, je regarderai comment tu as fait car là je pense te faire perdre du temps :-[

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 22 Janvier 2010, 18:43:12
Salut,

en reprenant les fonctions précédentes

OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME], ip[16];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerIP(playerid, ip, 16);
    if(IsIPAndPseudoSaved(name, ip))
    {//le joueur est dans le fichier
    }
    else
    {//le joueur n'y est pas
        function(playerid);//on ajoute le joueur au fichier (la liste)
    }
}

ps. si tu veut tester seulement l'IP (donc le pseudo on s'en fou un peu), il te suffirait de faire un strtok avant de comparé le string dans la fonction (IsIPAndPseudoSaved)

faudrait voir selon ce que tu désire faire...
par contre, je ne te recommande pas de regarder dans le fichier si le joueur est déjà enregistrer au lieu de ton fexist, le fexist sera toujours bien plus rapide (du fait qu'il est native)
si ce n'est pas du tout ce dont tu parle, essaie de ré expliquer XD

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 22 Janvier 2010, 18:47:34
Moi qui croyait que ce serait super simple
je réexplique. En gros une personne arrive sur mon serveur, il décide de s'enregistrer. Lorsqu'il s'enregistre son pseudo suivi de son ip sont sauvegardés dans un dossier rien de plus rien de moins :D
ex:
LePtitClown: 50.69.78.69
Sim: 25.37.12.95

A+
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 22 Janvier 2010, 19:50:01
Salut,

dans ce cas tu n'as besoin que d'une seule fonction, la dernière que j'ai donné

comme ça les noms seront stockés dans un fichier de ton choix:

ListPlayer(playerid)
{
    new tmp[64], tmpp[16];
    GetPlayerIP(playerid, tmpp, 16);
    GetPlayerName(playerid, tmp, MAX_PLAYER_NAME);
    format(tmp, sizeof(tmp), "%s: %s\r\n", tmp, tmpp);//donc on format les informations à entrer
    new File:file = fopen("fichier", io_append);//io_append permet de se placer à la fin du fichier afin d'ajouter des choses à la suite
    if(file)
    {
        fwrite(file, tmp);
        fclose(file);
    }
    return 1;
}

il te suffirais de placer ça au moment où le joueur s'enregistre (si tu as un système de compte)

si tu n'en as pas (système de compte), il te suffit de tester si le joueur est dans la liste (avec IsIPAndPseudoSaved) et l'ajouter à la liste avec cette fonction s'il n'y est pas déjà

ps. ajuste la forme dans les deux fonctions si tu les utilisent les deux

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Janvier 2010, 11:16:39
Slt

J'ai enfin réussi à faire marcher la dernière méthode grâce à ton aide mais ce script s'obstine  à enregistrer les ip à la connexion alors que moi je voudrai que ce soit à la commande /register. Pourtant le code se trouve bien dans la commande /register. ???
De quoi ça peut venir ?

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: ApocKalipsS le 24 Janvier 2010, 11:50:22
Dit nous ta commande /login
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Janvier 2010, 16:02:50
je pense que tu voulais dire /register, donc la voilà ( /register car l ip doit être rengristré lors de l'enregistrement )
  dcmd_register(playerid,params[]) {
    //if (autoriserregister[playerid] ==0) return SystemMsg(playerid,"Pour vous créer un compte avec /register [Mot de passe de votre choix], vous devez contacter un Admin en Jeu pour qu'il vous autorise à en créer un.");//rajoutertest
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (indm[playerid] > 0) return SystemMsg(playerid,"Vous ne pouvez pas vous enregistrer dans un DM.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte existe déjà '/login mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Usage correct: '/register mot de passe'");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Compte crée '/login mot de passe.");
//===SIMIP==
    new name[MAX_PLAYER_NAME], ip[16];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerIp(playerid, ip, 16);
    if(IsIPAndPseudoSaved(name, ip))
    {//le joueur est dans le fichier
    }
    else
    {//le joueur n'y est pas
        function(playerid);//on ajoute le joueur au fichier (la liste)
    }
//==SIMIP==


Voilà :D
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 24 Janvier 2010, 17:07:18
Salut,

et tu es certains que le code ne se retrouve pas ailleurs dans le script?

sinon ce serait que cette commande est appelée au moment de la connexion... c'est curieux

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 24 Janvier 2010, 17:26:17
Non non, je viens d'ailleurs de faire de nombreux testss, voici les résultats:
PS: j 'ai mis la fonction qui enregistre en stock ce qui ne change rien, je précise
- lorsque je met la fonction dans register, rien ne se passe
- lorsque je met cette même fonction dans oneplayerconnect, tout marche

A+ :(
Titre: Re : LePtitClown : différentes questions
Posté par: ApocKalipsS le 24 Janvier 2010, 18:11:38
Passe nous plutôt le /login, si il tape /login et que ça enregistre l'IP...
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 25 Janvier 2010, 16:48:14
Si tu veux mais je comprend pas ton raisonnement :D:
//REGISTER

  dcmd_register(playerid,params[]) {
    //if (autoriserregister[playerid] ==0) return SystemMsg(playerid,"Pour vous créer un compte avec /register [Mot de passe de votre choix], vous devez contacter un Admin en Jeu pour qu'il vous autorise à en créer un.");//rajoutertest
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (indm[playerid] > 0) return SystemMsg(playerid,"Vous ne pouvez pas vous enregistrer dans un DM.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte existe déjà '/login mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Usage correct: '/register mot de passe'");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Compte crée '/login mot de passe.");
if (!udb_Exists(PlayerName(playerid))) return protectionregister(playerid);//SIMIP La je susi censé save l ip si e joueur est inconnu mais ça ne marche pas :(
    return 1;

 }
//LOGIN
  dcmd_login(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte n'existe pas '/register mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Tapez '/login mot de passe'");
    if (indm[playerid] > 0) return SystemMsg(playerid,"Vous ne pouvez pas vous loguer dans un DM.");
    if (udb_CheckLogin(PlayerName(playerid),params)) {
       // Status
       GivePlayerCash(playerid,dUserINT(PlayerName(playerid)).("money")+GetPlayerMoney(playerid));
       SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("Score")+GetPlayerScore(playerid));
       pkills[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Kills")+pkills[playerid]);
       pdeaths[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Deaths")+pdeaths[playerid]);
       PLAYERLIST_authed[playerid]=true;
       KillTimer(protectionOK[playerid]);//protection
       logged[playerid] = 1;
       return SystemMsg(playerid,"Vous êtes logué avec succès!");
    }

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 27 Janvier 2010, 12:35:42
Up !

Aidez moi svp  :)
Titre: Re : Re : LePtitClown : différentes questions
Posté par: ghm94 le 27 Janvier 2010, 13:58:01
Salut,

et tu es certains que le code ne se retrouve pas ailleurs dans le script?

sinon ce serait que cette commande est appelée au moment de la connexion... c'est curieux

++Sim++

Moi aussi je pense que l'enregistrement de l'IP doit être autre part.

Je pense aussi que sa doit être la variable PLAYERLIST_authed ou  logged qui doit en être la cause.
Essaye de faire une recherche sur ces variables pour voir les conditions dans lesquels elles sont utilisées.
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 27 Janvier 2010, 14:59:16
Alors tout da'bord, merci pour ta réponse. Voici quleques renseignements de plus:
PLAYERLIST_authed  ets utilisé à:
- la connexion  (onplayerconnect )
if (!PLAYERLIST_authed[playerid])
{
if (udb_Exists(PlayerName(playerid)))
{
  SendClientMessage(playerid, COLOR_ORANGE, "Vous avez 30 SECONDES pour vous LOGUER ( /login [Mot De Passe] )");
  SendClientMessage(playerid, COLOR_ORANGE, "Après ça, vous serez KICKE par le système de protection de pseudo! ! ! ");
CountProtection(playerid,30);
}
}
//REGISTER
PLAYERLIST_authed[playerid]=false;
  if (udb_Exists(PlayerName(playerid))) return SendClientMessage(playerid, COLOR_SYSTEM, "Bienvenue, ce compte existe déjà (/Login mot de passe)");
return 1;
}

- la déconnexion ( onplayerdisconnect )
if (PLAYERLIST_authed[playerid])
{
     // save
    dUserSetINT(PlayerName(playerid)).("Money",GetPlayerMoney(playerid));
    dUserSetINT(PlayerName(playerid)).("Score",GetPlayerScore(playerid));
    dUserSetINT(PlayerName(playerid)).("Kills",pkills[playerid]);
    dUserSetINT(PlayerName(playerid)).("Deaths",pdeaths[playerid]);
  }
  PLAYERLIST_authed[playerid]=false;
- lors de la fermeture du game mode ( gamemodeexit )
if (PLAYERLIST_authed[i])
{
     // save
    dUserSetINT(PlayerName(i)).("Money",GetPlayerMoney(i));
    dUserSetINT(PlayerName(i)).("Score",GetPlayerScore(i));
    dUserSetINT(PlayerName(i)).("Kills",pkills[i]);
    dUserSetINT(PlayerName(i)).("Deaths",pdeaths[i]);
  }
  PLAYERLIST_authed[i]=false;
}
- à l'enregistrement ( /register ) et au logue ( /login )
  dcmd_register(playerid,params[]) {
    //if (autoriserregister[playerid] ==0) return SystemMsg(playerid,"Pour vous créer un compte avec /register [Mot de passe de votre choix], vous devez contacter un Admin en Jeu pour qu'il vous autorise à en créer un.");//rajoutertest
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (indm[playerid] > 0) return SystemMsg(playerid,"Vous ne pouvez pas vous enregistrer dans un DM.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte existe déjà '/login mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Usage correct: '/register mot de passe'");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Compte crée '/login mot de passe.");
if (!udb_Exists(PlayerName(playerid))) return protectionregister(playerid);//SIMIP La je susi censé save l ip si e joueur est inconnu mais ça ne marche pas :(
    return 1;

 }
//LOGIN
  dcmd_login(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte n'existe pas '/register mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Tapez '/login mot de passe'");
    if (indm[playerid] > 0) return SystemMsg(playerid,"Vous ne pouvez pas vous loguer dans un DM.");
    if (udb_CheckLogin(PlayerName(playerid),params)) {
       // Status
       GivePlayerCash(playerid,dUserINT(PlayerName(playerid)).("money")+GetPlayerMoney(playerid));
       SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("Score")+GetPlayerScore(playerid));
       pkills[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Kills")+pkills[playerid]);
       pdeaths[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Deaths")+pdeaths[playerid]);
       PLAYERLIST_authed[playerid]=true;
       KillTimer(protectionOK[playerid]);//protection
       logged[playerid] = 1;
       return SystemMsg(playerid,"Vous êtes logué avec succès!");
    }
logged est utilisé dans les même condition en gros cette variaible est inutile mais elle me sert juste à "discuter" avec un autre FS lorsqu'il ets activé. De plus, les variable PLAYERLIST_authed et logged retounrent à 0 à la déconnexion, à la connexion et lors de la fermeture du gamemode ( ongamemodeexit )

A+ et merci d'avance pour votre aide ;)
Titre: Re : LePtitClown : différentes questions
Posté par: ghm94 le 27 Janvier 2010, 15:05:57
Bon bah c'est pas ce que je pensais  :wall
Désoler  :P
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 27 Janvier 2010, 15:12:27
C'est l'intention qui compte comme on dit :lmfao

C'est quand même bizarre ce bug ;D, surtout que ça marche bien si je let met en onplayerconnect
Aidez moi :D

A+
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 28 Janvier 2010, 21:15:02
Up !

Ce script me tient vraimet à coeur. Personne ( dernière tentative pour ce sujet  :( )

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Février 2010, 17:23:11
Slt

Je viens vous exposer un autre problème beaucoup plus grave cette fois-ci. :ohmy
Je me suis fait hacker par un hacker utilisant la méthode Ddos ( envoi de paquet sur un serveur pour qu'il crash en gros pour ceux qui ne connaissent pas )
J'aimerai savoir s'il y a quelques chose à faire pour éviter ça sur samp.
J'ai lu quelques postes sur le Ddos mais ils ne donnent pas vraiment de solutions ;D

Merci d'avance pour vos réponses
A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 03 Février 2010, 20:11:00
voila pour toi

http://www.securiteinfo.com/attaques/hacking/ddos.shtml (http://www.securiteinfo.com/attaques/hacking/ddos.shtml)

a lire Contre-mesures
Titre: Re : LePtitClown : différentes questions
Posté par: Dark_revan le 03 Février 2010, 20:34:02
Télecharge un malware.
Personnellement sa me soule c'est vieux hacker voila encore une menace de plus pour se faire piquer notre travail ou bousiller le matériel. >:(
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 06 Février 2010, 12:16:37
Ok merci je vais regarder ça
Bizare il a arrêté, il a dû se lasser :lmao

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 06 Février 2010, 16:46:29
Salut,

sinon pour ton ancien problème, si ce n'est pas réglé, on peut y revenir:

es-tu certains que cette façon de faire:

    dUserSetINT(PlayerName(i)).("Money",GetPlayerMoney(i));
est juste, car je ne me rapelle pas d'avoir déjà vu des fonctions avec un '.' au milieu c'est comme: test().strval(text);

j'ai l'impression que ce n'est pas la bonne forme

++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 06 Février 2010, 23:29:31
Slt

Si si pourtant ça marche nickel normalement le système de login
J'avais d'ailleurs pensé à passer par un système de login avec menu à la connexion etc mais j'ai eu quelques soucis avec le fs de c30
( voir mon pb sur le topic du tuto à C30 => http://www.gtaonline.fr/forums/index.php/topic,9373.msg163960.html#msg163960 (http://www.gtaonline.fr/forums/index.php/topic,9373.msg163960.html#msg163960) )

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: S!m le 07 Février 2010, 01:15:16
Salut,

d'après ce que je voit dans le fs de c30, la bonne forme est plutôt:

    dUserSetINT(PlayerName(i), "Money", GetPlayerMoney(i));
++Sim++
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 07 Février 2010, 12:11:34
Slt

Oula je dois avoir la mauvaise version de son FS car dans celui que j'ai il n'y a aucune ligne avec l'argent:
                stats[playerid][level] = dini_Int((st), "level");
                stats[playerid][skinid] = dini_Int((st), "skinid");
                stats[playerid][death] = dini_Int((st), "death");
                stats[playerid][kill] = dini_Int((st), "kill");

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: Mr_C30 le 07 Février 2010, 12:18:37
je crois que javais fait une mise a jours quelque jours après la 1er ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 08 Février 2010, 18:00:25
Slt

Ouais j'ai vu mais le lien de dl le plsu récent était inactif donc j'ai pris le 2ème :D
Mais bon si le deuxième marche pas c'est dommage pour moi :(

A+
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 13 Février 2010, 21:20:09
Slt

J'ai un nouveau problème avec un anti cheat argent que j'ai crée, enfin tenter de créer, car il y a un problème :lmfao
Voici le code:
//==============================================================================
public OnPlayerDeath(playerid, killerid, reason)
{
if(indm[killerid] == 0)
{
if(GetPlayerWeapon(killerid) == 35 || GetPlayerWeapon(killerid) == 36 ||GetPlayerWeapon(killerid) == 37 ||GetPlayerWeapon(killerid) == 38)
{
new string[128];
new pname[30];
GetPlayerName(killerid, pname, sizeof(pname));
format(string, sizeof(string), "== ANTI-CHEAT: %s a été banni pour avoir cheaté une arme. Honte à lui.", initialname[killerid]);
SendClientMessageToAll(COLOR_GREEN, string);
Ban(killerid);
SendClientMessage(killerid,COLOR_RED,"Vous avez été banni pour avoir cheaté une arme");
}
return 1;
}
return 0;
}
//==============================================================================

Ce code ne marche pas une fois en jeu:
ex, le joueur n'est pas banni avec un minigun.
Pourtant, si le joueur n'est pas dans un DM et qu'il tue un autre joueur, le code regarde ses armes et les vérifient, donc je ne vois pas pourquoi ça ne marche pas
Aidez moi
Merci d'avance pour vos réponses

A+ ;)

Double post
Up !

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: scott1 le 15 Février 2010, 21:27:58
Je te conseil d'utiliser

if(indm[killerid] == 0)
{
if(reason == 35)
{

....

Reason == id (( Id de l'arme ))
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 15 Février 2010, 21:29:21
mais en cas de fake kill c'est la vistime qui seras bannie ;)
Titre: Re : LePtitClown : différentes questions
Posté par: vincentdu90 le 16 Février 2010, 08:13:10
Par contre ne serait-il pas mieux de mettre le SendClientMessage avant le Ban parce que le joueur va être banni mais il ne reçevra pas le message .

Ban(killerid);
SendClientMessage(killerid,COLOR_RED,"Vous avez été banni pour avoir cheaté une arme");
Titre: Re : Re : LePtitClown : différentes questions
Posté par: scott1 le 16 Février 2010, 19:42:16
mais en cas de fake kill c'est la vistime qui seras bannie ;)

if(reason == 38)
{
new Armes[13];
new munitions[13];
new armes;
for(new i = 1;i <= 12;i++)
{
    new nomtueur[MAX_PLAYER_NAME];
    GetPlayerName(killerid, nomtueur, sizeof(nomtueur));
    format(string, sizeof(string), "Attention: %s vient de tueur quelqu'un avec un minigun",nomtueur);
    ABroadCast(COLOR_LIGHTRED,string,1);
    format(string, sizeof(string), "Voici les armes du joueur pour verifier si ce n'est pas un fakekill");
    ABroadCast(COLOR_LIGHTRED,string,1);
    format(string, sizeof(string), "Arme de %s", nomtueur);
    ABroadCast(COLOR_LIGHTRED,string,1);
GetPlayerWeaponData(giveplayerid,killerid,Armes[killerid],munitions[killerid]);
                if(Player_Weapons[killerid] != 0)
{
new weaponName[256];
GetWeaponName(Armes[killerid],weaponName,255);
format(string, sizeof(string), "Arme: %s avec %d munitions",weaponName,munitions[killerid]);
ABroadCast(COLOR_LIGHTRED,string,1);
armes ++;
}
    if(armes == 0)
{
SendClientMessage(playerid, COLOR_GREY, "Arme: Aucune");
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}

J'ai fait ça vite fait je ne suis pas sur que s'est correct

Double post
J'ai oublié ceci

forward ABroadCast(color,const string[],level);
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 18 Février 2010, 22:08:22
Il n'y a pas plus simple ?
Qu'est ce qui est faux dans mon code ?

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: scott1 le 18 Février 2010, 23:39:36
remplace tes getplayerweapon par reason
Mais si s'est des fake kill comme la si bine souligné Cristab il y aura des bans insute
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 19 Février 2010, 11:44:13
en gros, je rajoute une condition pour dire s'il est dans un véhicule, comme ça au revoir l'explosion qui pourrait être pris pour un lance rocket et le minigun de l hunter pris pour un vrai minigun

A+
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 03 Mars 2010, 17:22:54
Slt

je viens vous exposer un nouveau problème.
J'ai un petit projet qui nécessite de lancer un timer à une heure fixé pour que l'action se déroule. J'ai donc réalisé ce code:
new Hours;
new Minutes;
new Seconds;
gettime(Hours, Minutes,Seconds);
if( Hours == 17 && Minutes == 22 && Seconds == 37 ) return SendClientMessage(playerid,rouge,"On lance le Script");

Evidemment si je poste ici, c'est que le script ne marche pas du tout malgré que je n'ai aucune erreur ni de warnings
Avez vous une idée pour réparer ça ? Quelle erreur ai je fais ?

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: scott1 le 03 Mars 2010, 18:29:06
Il faut que tu cree un timer qui toute les X temps verifie l'heure
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 04 Mars 2010, 18:41:07
Merci pour ton aide, mais ce code est déjà dans un timer qui lance le code toutes les 5 secondes :wall
Résolu grâce à Sim :D
Le problème, c'est que je demandais les secondes alors qu'il ne fallait pas car lorsque le timer lançait le code, la seconde demandé n'était pas forcément la bonne

A+ ;)

Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 30 Avril 2010, 19:40:54
Salut,

Je suis là pour vous exposer un petit problème que je recontre sur une modifications que je veux faire sur mon serveur.

En effet, j'aimerai ajouter du texte dans une boite de dialogue du type: DIALOG_STYLE_MSGBOX
Voici le rendu en image que la boite devrai avoir avec un exemple de texte:
http://wiki.sa-mp.com/wiki/Dialog (http://wiki.sa-mp.com/wiki/Dialog)

Mais le problème, c'est que lors de la compilation, ce texte est considéré comme trop long, pourtant, j'ai vu des textes aussi long voir plus sur certains serveur.
Je ne vous demande donc pas comment faire car je le sais, mais plutôt connaitre la méthode me permettant de mettre des phrases plus longues que ci dessous.

ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Menu Aide par LePtitClown","blablablablablabblablablabla \n blablablabablabla2","Valider","Annuler");

Merci d'avance pour votre aide,

A+ &nbsp;;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 30 Avril 2010, 19:48:11
Oui bien sûr comme dans l'exemple écrit sauf que c'est plus long évidemment :happy
Mon texte doit faire ça environ ( je n'ai pas le bon sous la main ):
SendClientMessage(playerid,COLOR_INFO,"Bienvenue dans la partie Règles");
SendClientMessage(playerid,COLOR_AIDE,"Le spawnkill / carkill / motokill / driveby / nofairplay sont sanctionnés");
SendClientMessage(playerid,COLOR_AIDE,"Il existe une exception au driveby, carkill: si vous avez acheté un tank, un hunter, ou un hydra");
SendClientMessage(playerid,COLOR_AIDE,"Les joueurs doivent se respecter entres eux ( pas d'insulte, même si vous vous connaissez, de propos racial etc..)");
SendClientMessage(playerid,COLOR_AIDE,"Le cheat est formellement interdit sur ce serveur ( banni direct sans prévenir )");
SendClientMessage(playerid,COLOR_AIDE,"Ne vous plaignez pas si un joueur vous tue lorsque vous écrivez, mettez vous à l'abri");
SendClientMessage(playerid,COLOR_AIDE,"Le C Bug ainsi que le Switch sont autorisés. Un seul compte doit être crée par joueur.");
SendClientMessage(playerid,COLOR_AIDE,"Ne tuez pas un joueur qui est en prison");
SendClientMessage(playerid,COLOR_AIDE,"Tout manquement à ces règles sera sanctionné");
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 01 Mai 2010, 11:40:25
Ah j'avais pas pensé au bouton suite merci

EDIT: J'ai réussi mais je trouve que la structure n'est pas très optimisé:
if (strcmp("/aide", cmdtext, true) == 0)
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX ,"Menu Aide par LePtitClown","blabla","Suite","Annuler");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 3 && response)
{
ShowPlayerDialog(playerid,4,DIALOG_STYLE_MSGBOX,"Objectif du Serveur","blabla","Suite","Annuler");
return 1;
}
if(dialogid == 4 && response)
{
ShowPlayerDialog(playerid,5,DIALOG_STYLE_MSGBOX,"Termes à connaitre","blabla","Suite","Annuler");
return 1;
}
if(dialogid == 5 && response)
{
ShowPlayerDialog(playerid,6,DIALOG_STYLE_MSGBOX,"Termes à connaitre (suite)","blabla","Suite","Annuler");
return 1;
}
if(dialogid == 6 && response)
{
ShowPlayerDialog(playerid,7,DIALOG_STYLE_MSGBOX,"Commandes du serveur","blabla","Suite","Annuler");
return 1;
}
if(dialogid == 7 && response)
{
ShowPlayerDialog(playerid,8,DIALOG_STYLE_MSGBOX,"Partie crédits","blabla","Valider","Annuler");
return 1;
}
return 0;
}

Si vous savez comment faire plus simple je suis partant bien que ce code marche très bien mais peut être un peu trop compliqué pour rien

A+ ;)
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 01 Mai 2010, 12:42:04
C'est vrai que c'est déjà plus claire :D
Mais je suis obligé de donner une id différentes à toutes mes boites de dialogue ?
Titre: Re : LePtitClown : différentes questions
Posté par: cristab le 01 Mai 2010, 14:51:18
en gros sa sert a a identifier le tableau a afficher donc oui sa sert meme en pratique
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 01 Mai 2010, 16:49:07
C'est ce que je pensais pas très util mais obligatoire
Merci pour votre aide ;)

A+
Titre: Re : Re : LePtitClown : différentes questions
Posté par: Syg le 01 Mai 2010, 22:58:10
C'est ce que je pensais pas très util mais obligatoire
Au contraire, très utile mais pas obligatoire, surtout dans ton cas où chaque boite de dialogue permet d'ouvrir la suivante.
Si toutes tes boites ont le même ID, tu pourras pas faire la différence entre la réponse à la boite sur les crédits et la réponse à la boite sur commandes par exemple.

Sur Lalu's Stunt, toutes les boites de dialogue dans lesquelles le joueur peut interagir ont un ID qui leur est propre.
Les boites de dialogues qui ne servent qu'à l'affichage d'information ont, par contre, toutes le même ID (car aucun traitement particulier n'est fait pour ces boites là).

++
Syg
Titre: Re : LePtitClown : différentes questions
Posté par: LePtitClown le 28 Avril 2012, 15:51:48
Slt

Désolé de revenir vous voir ici, mais j'ai un grave problème de doubles comptes. Le sujet du post 11 ne marche hélas pas du tout, je viens donc demander votre aide. L'objectif est de stopper les multi comptes. Je n'arrive pas à faire ce système correctement

//au moment du login
saveip(playerid)// on sauvegarder toutes les IP
{
    new tmp[64], tmpp[32];
    GetPlayerIp(playerid, tmpp, 32);
    
    new IP[50];
    new File:file = fopen("fichier.txt", io_append);//io_append permet de se placer à la fin du fichier afin d'ajouter des choses à la suite
    while(fread(file, tmpp, 32))
    {
   if(!strcmp(IP, tmpp, false, 16))
   {
   format(tmp, sizeof(tmp), "%s\r\n",tmpp);//donc on format les informations à entre
   fwrite(file, tmp);
   fclose(file);
}
}
fclose(file);

}


//Au moment de l'enregistrement
verifip(playerid)// On vérifie si cette IP est présente dans le fichier texte
{
if(fexist("fichier.txt"))
{
   new File:file = fopen("fichier.txt", io_read);
   new IP[50];
   if(file)
   {
       new tmpp[32];//un IP par ligne, pas besoin d'un string long (serait mieux de mettre 128 au cas où...)
       while(fread(file, tmpp, 32))
       {
           if(strcmp(IP, tmpp, false, 16))
           {
               fclose(file);
               ERRORMSG("Ip déjà enregistré, tu ne peux donc pas créer de nouveau compte");
           }
       }
       fclose(file);
   }
}
}

A+ ;)