• 17 Mai 2024, 07:18:49


Auteur Sujet: codes/scripts utiles  (Lu 123042 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #120 le: 20 Août 2009, 09:24:49 »
tu peu retirer ceci sa ne sert pas HideMenuForPlayer(carte, playerid);//Quitter

pourquoi faire sa ?

ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne R@f

  • *
  • GTAOnline Addict
  • Messages: 4655
    • Voir le profil
Re : codes/scripts utiles
« Réponse #121 le: 20 Août 2009, 13:26:34 »
Le mieux serait de poster un bout de code correct. Donc vérifiez ou demandez à quelqu'un ayant de l'expérience avant...

++
R@f

Hors ligne 69scorpion

  • MrCorona
  • *
  • Tueur en série
  • Messages: 125
    • Voir le profil
    • Scorpion City
Re : Re : codes/scripts utiles
« Réponse #122 le: 20 Août 2009, 13:56:39 »

pourquoi faire sa ?

ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);

Pour les serveur RP sa désigne une action
[RP] 69scorpion [100%]


Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #123 le: 20 Août 2009, 14:24:46 »
et de quel genre car la je voit qu'apparement sa envoie un message en violler pour ceus qui serais a 30 metres mais le string vient d'ou
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne 69scorpion

  • MrCorona
  • *
  • Tueur en série
  • Messages: 125
    • Voir le profil
    • Scorpion City
Re : codes/scripts utiles
« Réponse #124 le: 20 Août 2009, 23:39:44 »
Ok j'aurait pas du le mettre c'était dans mon GM je l'ai enlever du code va voir !
[RP] 69scorpion [100%]


Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : codes/scripts utiles
« Réponse #125 le: 17 Septembre 2009, 19:18:27 »
Voila 2 petite fonction qui vous seront ptet utile

Code: (pawn) [Sélectionner]
SetPlayerTag(playerid,const tag[],bool:beforepseudo = true)
{
new playername[MAX_PLAYER_NAME];
if(!strlen(tag) || strlen(tag) > MAX_SIZE_TAG || strlen(PlayerTag[playerid]) > 0) //Si tag est vide ou trop long ou si le joueur a deja un tag
   return false;

GetPlayerName(playerid,playername,sizeof(playername));
if(beforepseudo) //Si beforepseudo = true
   strins(playername,tag,0,sizeof(playername)); //On ajoute le tag au debut du pseudo
else //Sinon
   strins(playername,tag,strlen(playername),sizeof(playername)); // On ajoute le tag a la fin du pseudo

strmid(PlayerTag[playerid],tag,0,strlen(tag),sizeof(PlayerTag[])); //On stocke le tag
SetPlayerName(playerid,playername);//On aplique le pseudo au joueur
return true;
}

RemovePlayerTag(playerid)
{
    new playername[MAX_PLAYER_NAME];
if(!strlen(PlayerTag[playerid])) //Si aucun tag na été defini
   return false;

GetPlayerName(playerid,playername,sizeof(playername));
new postag = strfind(playername,PlayerTag[playerid]);
if(postag == -1)//Si le tag n'est pas trouvé dans le pseudo (au cas ou le pseudo aurait été modifier ailleur dans le script)
{
   strdel(PlayerTag[playerid],0,sizeof(PlayerTag[])); // On vide la variable contenant le tag
   return false;
}
strdel(playername,postag,(postag+strlen(PlayerTag[playerid]))); //On retire le tag
strdel(PlayerTag[playerid],0,sizeof(PlayerTag[])); // On vide la variable contenant le tag
SetPlayerName(playerid,playername); //On aplique le pseudo au joueur
return true;
}

Bon attention l'instalation de c'est fonction nececsite quelque petite chose

En haut de votre script ajouter:
Code: (pawn) [Sélectionner]
#define MAX_SIZE_TAG 10 // Nombre de caractere maximum que peux avoir un tag
new PlayerTag[MAX_PLAYERS][MAX_SIZE_TAG];

Dans OnPlayerConnect ajouter:
Code: (pawn) [Sélectionner]
strmid(PlayerTag[playerid],"",0,sizeof(PlayerTag[]),sizeof(PlayerTag));

Maintenant des explication sur le fonctionement:

SetPlayerTag permet d'ajouter un tag dans le nom du joueur les parametre sont:

playerid - ID du joueur a qui on veux apliquer le tag
tag[]    - Le tag a ajouter
beforepseudo - Si vaut true (valeur par defaut) le tag sera ajouter avant le pseudo, si vaut false, le tag sera ajouter a la fin du pseudo


RemovePlayerTag permet de suprimer le tag dans le nom du joueur, elle prend uniquement le playerid en parametre



Voila j'ai fait c'est 2 ptite fonction en vitesse pour mon prochain GM et j'me suis dit que sa pourait être utile pour d'autre personne :)

ps: Ya surment moyen de l'optimiser mais j'ai un peux la fleme la ^^

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : codes/scripts utiles
« Réponse #126 le: 17 Septembre 2009, 23:24:48 »
Salut,

tu devrais mentionner la nécessite de la variable globale PlayerTag[MAX_PLAYERS] et recommander de la réinitialiser à la connexion/déconnexion ...
sinon très belles fonctions, bravo

++Sim++





Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Re : codes/scripts utiles
« Réponse #127 le: 17 Septembre 2009, 23:27:33 »
Je l'ai fait


Bon attention l'instalation de c'est fonction nececsite quelque petite chose

En haut de votre script ajouter:
Code: (pawn) [Sélectionner]
#define MAX_SIZE_TAG 10 // Nombre de caractere maximum que peux avoir un tag
new PlayerTag[MAX_PLAYERS][MAX_SIZE_TAG];

Dans OnPlayerConnect ajouter:
Code: (pawn) [Sélectionner]
strmid(PlayerTag[playerid],"",0,sizeof(PlayerTag[]),sizeof(PlayerTag));

 :P ::)

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #128 le: 18 Septembre 2009, 18:28:07 »
Je vous presente une fonction pour les vehicules en gros sa sert pas a grand chose mais sa evite d'avoir des centaine de lignes dans la OnGameModeInit

en faite on va passer de ceci

AddStaticVehicle(411, -2015.9924, -146.3494, 35.0474, 90.3450, 64, 1);
a ceci

AddVehicle(1, 411, -2015.9924, -146.3494, 35.0474, 90.3450, 64, 1, 0, "coucou");
expliquation AddVehicle(ID,IDVEHICLE,X,Y,Z,ANGLE,COULEUR1,COULEUR2,INTERIOR,PLAQUE);

ID on augmente de 1 a chaque ligne ajouter

en haut de vos GM ajouter ceci

#define MAX_IDV 700
new Pveh[MAX_IDV];

en bas ajouter ceci

AddVehicle(IDV,VehId,Float:X,Float:Y,Float:Z,Float:A,Col1,Col2,Int,Plate[])
{
Pveh[IDV] = AddStaticVehicle(VehId,Float:X,Float:Y,Float:Z,Float:A,Col1,Col2);
SetVehicleNumberPlate(Pveh[IDV], Plate);
LinkVehicleToInterior(Pveh[IDV], Int);
SetVehicleToRespawn(Pveh[IDV]);
new string[256];
format(string, sizeof(string),"Vehicule cree(Numero :%d,Id: %d,PosX:%f,PosY: %f,PosZ: %f,Angle %f,Couleur1: %d,Couleur2: %d,Plaque: %s,Interiore: %d);",IDV,VehId,Float:X,Float:Y,Float:Z,Float:A,Col1,Col2,Plate,Int);
printf(string);
}

Vspawn(vehicleid,Int,Plate[])
{
SetVehicleNumberPlate(vehicleid, Plate);
LinkVehicleToInterior(vehicleid, Int);
}

Ensuite dans votre OnGameModeInit

AddVehicle(1,411,-2015.9924,-146.3494,35.0474,90.3450,64,1,0,"voiture1");
AddVehicle(2,411,-2013.9924,-146.3494,35.0474,90.3450,64,1,0,"voiture2");

ensuite dans la callback OnVehicleSpawn(vehicleid)

public OnVehicleSpawn(vehicleid)
{
    if(vehicleid == Pveh[1])
  {
      Vspawn(vehicleid,0,"voiture1");
}
   if(vehicleid == Pveh[2])
  {
      Vspawn(vehicleid,0,"voiture2");
}
   return 1;
}

en faite je poste le code ici peu etre qu'il serviras a une personne mais aussi j'aimerais qu'on m'explique si il existerait une fonction qui permettrais d'eviter la callback OnVehicleSpawn et je suis prenneur de toutes optimisation :)
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : codes/scripts utiles
« Réponse #129 le: 20 Septembre 2009, 14:30:19 »
Petite fonction qui verifie si une email est valide (elle cherche le signe @ et . , verifie ensuite que ya du texte avant le @ , que ya du texte entre le @ et le . et que le texte apres le . fait minimum 2 caractere)

Code: (pawn) [Sélectionner]
IsValidEmail(const email[])
{
new atpos = strfind(email,"@");
if(atpos == -1)
    return false;
   
new pointpos = strfind(email,".",false,atpos);
if(pointpos == -1)
    return false;
   
new str[2][256];
strmid(str[0],email,0,atpos,sizeof(str[]));
strmid(str[1],email,atpos+1,pointpos,sizeof(str[]));
if(!strlen(str[0]) || !strlen(str[1]) || strlen(email[pointpos+1]) < 2)
    return false;
   
return true;
}

Vla j'sais pas si ya une meilleur methode pour verifier qu'une email est valide si c'est le cas dite le moi ^^

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #130 le: 21 Septembre 2009, 23:27:36 »
Bonsoir voila je sus entrain de faire un Fs est seulement la j'ai remarquer qu'il avait penser a la fonction BanEx mais pas de KickEx alors voila ce que j'ai fait si sa peu aider

KickEx(playerid,raison[])
{
print(raison);
ecrfic(raison);
Kick(playerid);
}

ecrfic(contenue[])
{
new File:Fic;
Fic = fopen ("kicklog.ini", io_readwrite);
fwrite(Fic,contenue);
fclose (Fic);
}

il suffit de l'utiliser comme le BanEx

exemple pour une commande kick avec la raison

KickEx(giveplayerid,raison);
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : codes/scripts utiles
« Réponse #131 le: 22 Septembre 2009, 14:23:19 »
Pour un fonction qui journalise (écrit des chose les unes à la suite des autres) dans un fichier, il vaut mieux utiliser le mode io_appendl sinon ton fichier ne contiendra que la dernière chaîne écrite :
ecrfic(contenue[])
{
new File:Fic;
Fic = fopen ("kicklog.ini", io_append);
fwrite(Fic, contenue);
fclose (Fic);
}

Autre solution avec le mode io_readwrite :
ecrfic(contenue[])
{
new File:Fic;
Fic = fopen ("kicklog.ini"); // NB : le mode io_readwrite est le mode par défaut il n'est donc pas utile de le mettre
fseek (Fic, 0, seek_end); // Se positionne à la fin du fichier
fwrite(Fic, contenue);
fclose (Fic);
}

Ensuite, pour éviter que ce fichier ne deviennent trop gros, il faut le purger de temps en temps.

++
Syg
Courtesy of GtaManiac

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #132 le: 22 Septembre 2009, 14:34:35 »
ah je vient de comprendre Merci pour cette eclairage car mon idee est de faire une include pour faciliter les fonctions
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne rafffel

  • *
  • Bandit
  • Messages: 493
    • Voir le profil
Re : codes/scripts utiles
« Réponse #133 le: 22 Octobre 2009, 17:10:06 »
Signalisation en cas de joueur derrière ou devant (pratique en course):

au debut du FS :

forward ScanTimer();
#define AHEAD_OF_CAR_DISTANCE    40.0
#define BEHIND_OF_CAR_DISTANCE    20.0
#define SCAN_RADIUS     20.0
A placer dans le coin fonction du filescript :

stock GetXYInfrontOfMe(i,Float:distance, &Float:x, &Float:y)
{
    new Float:z, Float:angle, currentveh;
    GetPlayerPos(i,x,y,z);
    currentveh = GetPlayerVehicleID(i);
    GetVehicleZAngle(currentveh, angle);
    x += (distance * floatsin(-angle, degrees));
    y += (distance * floatcos(-angle, degrees));
}
stock GetXYBehindOfMe(i,Float:distance, &Float:x, &Float:y)
{
    new Float:z, Float:angle, currentveh;
    GetPlayerPos(i,x,y,z);
    currentveh = GetPlayerVehicleID(i);
    GetVehicleZAngle(currentveh, angle);
    x -= (distance * floatsin(-angle, degrees));
    y -= (distance * floatcos(-angle, degrees));
}

A placer dans le coin fonction de votre FS :

public ScanTimer()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(playerid))
{
for(new j=0;j<MAX_PLAYERS;j++)
{
if(IsPlayerStreamedIn(i,j))
{
GetPlayerPos(i, Xs, Ys, Zs);
GetXYInfrontOfMe(i,AHEAD_OF_CAR_DISTANCE,Xs,Ys);
if(IsPlayerInRangeOfPoint(j,40.0,Xs,Ys,Zs))
{
if(avantaffiche != 1)
{
// SendClientMessage(i, COLOR_GREEN, "ya du monde devant");
TextDrawShowForPlayer(i,Textdraw0);
avantaffiche = 1;
}
}
else
{
TextDrawHideForPlayer(i,Textdraw0);
avantaffiche = 0;
}
GetPlayerPos(i, Xs, Ys, Zs);
GetXYBehindOfMe(i,BEHIND_OF_CAR_DISTANCE,Xs,Ys);
if(IsPlayerInRangeOfPoint(j,SCAN_RADIUS,Xs,Ys,Zs))
{
if(derriereaffiche != 1)
{
//SendClientMessage(i, COLOR_GREEN, "ya du monde derriere");
TextDrawShowForPlayer(i,Textdraw2);
derriereaffiche = 1;
}
}
else
{
TextDrawHideForPlayer(i,Textdraw2);
derriereaffiche = 0;
}
}
}
}
}
}
}

A placer dans  OnFilterScriptInit():

       SetTimer("ScanTimer",500,1);
Textdraw0 = TextDrawCreate(348.000000,32.000000,"ATTENTION");
Textdraw2 = TextDrawCreate(233.000000,345.000000,"Attention");
TextDrawAlignment(Textdraw0,0);
TextDrawAlignment(Textdraw2,0);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawBackgroundColor(Textdraw2,0x000000ff);
TextDrawFont(Textdraw0,1);
TextDrawLetterSize(Textdraw0,0.799999,3.400002);
TextDrawFont(Textdraw2,1);
TextDrawLetterSize(Textdraw2,1.000000,3.400000);
TextDrawColor(Textdraw0,0xff0000ff);
TextDrawColor(Textdraw2,0xff0000ff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetOutline(Textdraw2,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetProportional(Textdraw2,1);
TextDrawSetShadow(Textdraw0,5);
TextDrawSetShadow(Textdraw2,1);


Si il manque quelque chose ou qu'il y a une erreur a la compile , ou que vous souhaitez plus d'info faites signes
« Modifié: 22 Octobre 2009, 17:12:32 par rafffel »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : codes/scripts utiles
« Réponse #134 le: 24 Octobre 2009, 21:01:43 »
bonsoir je vous presente deux petites fonction pour spawn les boots


dans le onplayerconnect ajouter ceci pour un bot en voiture


ConnectcarNPC(playerid,"bot1",voiturebot1,47);
pour un bot a pied


Connectped(playerid,"bot2",136);

ajouter ceci en bas de votre GM

ConnectcarNPC(playerid,nombot[],nomcar,skinid)
{
if(IsPlayerNPC(playerid))
       {
           new npcname[MAX_PLAYER_NAME];
           GetPlayerName(playerid, npcname, sizeof(npcname));
       if(!strcmp(npcname, nombot, true))
           {
              PutPlayerInVehicle(playerid, nomcar, 0);
              SetPlayerColor(playerid,0xFFFFFFAA);
              SetPlayerSkin(playerid, skinid);
           }
       }
 }
Connectped(playerid,nombot[],skinid)
{
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname));
    if(!strcmp(npcname, nombot, true))
{
SetPlayerSkin(playerid, skinid);
  }
}

n'est ce pas plus simple
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici