GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jerome02 le 07 Novembre 2010, 22:47:16
-
bonsoir je crée ce topic pour éviter d'en crée plein pour rien :-[
1- Question : Voila j'ai ouvert mon serveur et quelques heures après il y a un cheater qui ce connecte et ce ajoute plein d'argent arme etc, en suite j'ai étés télécharger JunkBuster sur samp.com je l'ais installé et sa me donne un warning :
C:\Documents and Settings\Administrateur\Bureau\[GM] En Cours\gamemodes\....pwn(19365) : warning 219: local variable "mod" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Header size: 13896 bytes
Code size: 1803096 bytes
Data size: 9620136 bytes
Stack/heap size: 16384 bytes; estimated max. usage=5557 cells (22228 bytes)
Total requirements:11453512 bytes
1 Warning.
je l'ais traduit mais j'ai pas trop compris :( Si vous pouvez m'expliquer comment le régler ou d'où sa peu venir je vous remercie
2 Question : Voila j'ai le job Camionneur et quand le joueur vas sur le ' i ' faire /acheterproduit sa met : Produits: 0/0 et on y peu pas en acheter meme si on fait /acheterproduit 50, j'ai essayer de modifier la commandes mais rien toujours le meme probleme,
Voici la commande :
http://pastebin.com/3xe53ABw (http://pastebin.com/3xe53ABw)
Merci de votre reponse, bonne soirée :-[
-
la variable mod a déjà été définie, cela veut dire que tu dois avoir 2
new mod
si ça viens de ton include, renome tout les "mod" dans ton gm par "mod2" ou autre
a coup sur ça v eind de la PlayerHaul[tmpcar][pCapasity]
tu ne dois pas avoir defini la papacité max donc il concidere qu'elle est de 0
-
la variable mod a déjà été définie, cela veut dire que tu dois avoir 2
new mod
si ça viens de ton include, renome tout les "mod" dans ton gm par "mod2" ou autre
a coup sur ça v eind de la PlayerHaul[tmpcar][pCapasity]
tu ne dois pas avoir defini la papacité max donc il concidere qu'elle est de 0
okey Merci de ta reponse, c'est bon c'est regler =D Merci,
et pour le PlayerHaul[tmpcar][pCapasity] je doit le enlever c'est sa ? car elle est meme sur /charger
Salut,
Juste un petit conseil hors sujet :
Fais des réglage de ton script avec
#pragma dynamic
++
Beno
#pragma dynamic si je me trompe pas je doit le mettre en dessous des include ou il y a un endroit ou le mettre ?
Et avant de mettre sa pourrez tu m'expliquer a quoi sa sert ??
Merci de votre Reponse, Bonne fin de journée :-[
-
Okey :D :D Merci beaucoup Pour ton aide :D
EDIT : et je peu le mettre n'importe ou ? ( si oui je le met toute en haut du scripte)
Bonne fin de journée :-[
-
Et pour Le /Acheterproduit ? ::) :-[
Merci de votre reponse bonne soirée
-
Desoler du Double Poste, :-[
Pour la Commande /acheterproduit j'ai enfin compris ce qu'il ma dit Scott et c'est regler mais j'ai des autre petites question :-[
1.Question : J'ai Ajouter une Système de plaque D'immatriculation, tout marche nikel mais le soucis c'est que j'ai deux warning, on me dit que c'est pas trop grave mais j'aime pas sa ^^
Voici les warning :
C:\Documents and Settings\Administrateur\Bureau\[GM] En Cours\gamemodes\....(10844) : warning 213: tag mismatch
C:\Documents and Settings\Administrateur\Bureau\[GM] En Cours\gamemodes\....(10845) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Warnings.
Voici les Ligne :
Vehicleplaque[veh] = Create3DTextLabel(message, 0xFF0000AA, 0.0, 0.0, 0.0, 50.0, 0, 1 );
Attach3DTextLabelToVehicle(Vehicleplaque[veh], vehid, 0.0, 0.0, 2.0);
Voila, Merci pour votre aide d'avance, et bonne soirée ;)
EDIT :
Enfaite non c'est pas sa =/ :(
-
Tu as bien fait un new Text3D:Vehicleplaque
sans oublié le Text3D: ?
-
Bonsoir,
Merci de ta réponse mais c'est resolue, je me suis aider avec le a_Samp ^^
Mais par contre j'ai des autre petites question ^^
1.Question voila j'ai un /braquer j'ai ajouter ceci :
if(OnDuty[playerid] == 1 && IsACop(playerid) == 3)
{
SendClientMessage(playerid,COLOR_GREY," Il Doit y avoir 3 Policier de connecter pour pouvoir braquer !");
return 1;
}
sa me donne pas de warning rien mais quand ji vais in gamme bah je peu toujours braquer meme sans flics ???
Si quelqu'un pourrais m'expliquer pourquoi sa ne marche sa sa serrais gentil :-[
Merci de vos reponse, Bonne soirée ;)
-
Logique, la tu verifi avec IsACop si la personne et un flic, moi je ferai une variable, avec des qu'un flic se met en service on rajoute +1, apres tu fait
if(mavariable <= 3)
{
SendClientMessage(playerid,COLOR_GREY," Il Doit y avoir 3 Policier de connecter pour pouvoir braquer !");
return 1;
}
-
Hummm Okey !! :bangin ji vais faire sa et je vous dit des nouvelle ^^ :D
Merci de ton aide, bonne soirée ;)
-
a oui oublie pas : quand un flic se retire de son service de fait mavariable--; :)
Bonne soirée a toi aussi
Brian++
-
Bonsoir,
Voila j'ai crée mavariable :
if(nombreflics <= 3)
{
SendClientMessage(playerid,COLOR_GREY," Il Doit y avoir 3 Policier de connecter pour pouvoir braquer !");
return 1;
}
Et sa Marche Nikel :D Merci Brian Turner
Une autre petite question ^^
J'utilise le GVEH et j'aimerais que les flics puise prendre les voitures verrouiller des joueurs mais je ne sais pas trop comment faire :-[
je voudrais ajouter un Playerinfo[playerid][pMember] = 1 || Playerinfo[playerid][pLeader] ==1
Si quelqu'un pourrez m'expliquer comment faire ^^
Voici ou je voudrais l'ajouter :
else if(VehiculeInfo[vehicleid][Alarme] == 1)
{
PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1;
format(string,sizeof(string),"Ce vehicule (%s) appartient a %s et est proteger par une alarme vous ne pouvez pas l'utiliser!",VehiculeInfo[vehicleid][Nom],VehiculeInfo[vehicleid][Proprio]);
SendClientMessage(playerid,COL_GREEN,string);
RemovePlayerFromVehicle(playerid);
return 1;
}
Merci de vos reponse, bonne soirée
-
if(PlayerInfo[playerid][pMember] != 1 || PlayerInfo[playerid][pLeader] != 1)
la tu fait
removeplayerfromvehicle
si non, rien
-
bonjour,
Merci de ton aide mais pourrais tu un peu mieux expliquer sil te plait car j'ai rien compris ???
Merci de vos reponse bonne journée
-
Petit Up :-[
-
Salut,
Ton GVEH tu l'utilise en FS ? Car si c'est le cas, tu ne peux pas interagir entre ton GM et le FS donc même si tu rajoutais : PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1; ça ne fonctionnera pas.
Pour que ça fonctionne, tu dois intégré ton FS dans ton GM. Après si c'est fait, bah j'ai rien dit :P
Après tu fait comme scott1 l'as dit, en mettant
else if(VehiculeInfo[vehicleid][Alarme] == 1)
{
if PlayerInfo[playerid][pMember] != 1 || PlayerInfo[playerid][pLeader] != 1;
{
format(string,sizeof(string),"Ce vehicule (%s) appartient a %s et est proteger par une alarme vous ne pouvez pas l'utiliser!",VehiculeInfo[vehicleid][Nom],VehiculeInfo[vehicleid][Proprio]);
SendClientMessage(playerid,COL_GREEN,string);
RemovePlayerFromVehicle(playerid);
}
return 1;
}
Et ça devrait marché. Biensûr, attention à bien mettre != et pas ==
Car si tu met == Les flics ne pourrons pas les prendres...
++ Franky
-
Bonsoir,
Heuu non je l'utilise en include, :)
Ah Merci pour ton aide voila je savais que fallait ajouter if PlayerInfo[playerid][pMember] != 1 || PlayerInfo[playerid][pLeader] != 1; mais je ne savais pas comment le positionner ^^ :-[
Merci pour ton aide
PS : Merci pour les petits erreurs sa évitera au débutant de le prendre :lmao
PS 2 ;: Heuu j'ai ajouter ce code, sa me donne pas d'erreur ni rien mais IG le FLIC peu toujours pas prendre les Voiture Acheter :( :-[ Normal ?
Bonne soirée
-
bonsoir,
voila j'ai ce code pour le cheat argent :
public PlayerTimer()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerMoney(i) != PlayerCash[i])
{
OldCash[i] = GetPlayerMoney(i);
ResetPlayerMoney(i);
GivePlayerMoney(i,PlayerCash[i]);
return 1;
}
}
}
return 1;
}
sa nous met l'argent a Zero mais j'aimerais que sa nous mette l'argent a Zero que quand on utilise un cheat et pas quand on fait par exemple " /retirer , /payer , ou quand on fini une mission "
si quelqu'un pourrais m'expliquer comment je peu faire pour cella :-[
PS : Pour le code plus haut j'ai toujours pas trouver :(
Merci de votre aide bonne soirée
-
Pour détecter une personne qui se rajoute de l'argent, je pense que tu devrais ajouter une genre de marge dans tes commandes, par exemple, il faudra que tu limite toute les actions avec l'argent avec une valeur.
Je m'explique, admettons que ta marge à ne pas dépasser est de 100. On va prendre pour exemple, un gamemode roleplay (comme toi), il faudra limiter les dons d'argent, le retrait à la banque, (...) à 100. Tu créer une boucle qui vérifie toute les millisecondes de combien augmente l'argent, et si l'argent à augmenté de plus de 100, tu exécute ton action.
Je pense, mais j'en suis sûr que cette méthode n'est pas la meilleurs car il y a une marge d'erreurs très importantes, mais c'est une idée comme une autre !
-
Xartrik, ton idée sert par exemple à l'usage des doubles competes etc.. mais sinon pour l'anticheat le timer là est le meilleur moyen de détecter les cheaters ^^
-
Sinon ce que tu peux faire, tu créer une variable qui contiendra l'argent du joueur en plus de l'argent affiché en haut.
Chaque fois que tu rajoute ou enlève de l'argent au joueur, tu l'enlève également dans la variable.
Puis tu utilise un timer qui compare toute le X seconde, la variable et l'argent affiché en haut.
Si ce n'est pas égal, tu retires l'excédent ou tu ban le joueur, selon ton souhait.
++
Steve
-
dans chacune des commande dans ton script ou a chaque fois que tu ajoute de l'argent ajoute OldCash[playerid]=montant;
-
dans chacune des commande dans ton script ou a chaque fois que tu ajoute de l'argent ajoute OldCash[playerid]=montant;
public DonnerArgent(playerid, argent)
{
if(argent== 0) { return 1; }
if(argent> 0) {GivePlayerMoney(playerid,argent); OldCash[playerid] = GetPlayerMoney(playerid);}
else if(argent< 0) {GivePlayerMoney(playerid,-argent); OldCash[playerid] = GetPlayerMoney(playerid);}
return 1;
}
S'est codé sur le forum ;)
-
J'ai idité mon erreur ;) Coder sur un forum pas facile xD
-
dans chacune des commande dans ton script ou a chaque fois que tu ajoute de l'argent ajoute OldCash[playerid]=montant;
public DonnerArgent(playerid, argent)
{
if(argent== 0) { return 1; }
if(argent> 0) {GivePlayerMoney(playerid,argent); OldCash[playerid] = GetPlayerMoney(playerid);}
else if(argent< 0) {GivePlayerMoney(playerid,-argent); OldCash[playerid] = GetPlayerMoney(playerid);}
return 1;
}
S'est codé sur le forum ;)
on peu toujour cheater avec cette fonction ^^
un extrait du mien
function_DonneArgent(playerid,Montant)
{
Argent[playerid]=Argent[playerid]+Montant;
function_SetArgent(playerid,Argent[playerid]);
return Argent[playerid];
}
function_RetireArgent(playerid,Montant)
{
Argent[playerid]=Argent[playerid]-Montant;
function_SetArgent(playerid,Argent[playerid]);
return Argent[playerid];
}
function_SetArgent(playerid,Montant)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,Montant);
Argent[playerid]=Montant;
return 1;
}
function_GetArgent(playerid)
{
return Argent[playerid];
}
public Money()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
ArgentEnPoche[i]=GetPlayerMoney(i);
if(ArgentEnPoche[i]< Argent[i])
{
Argent[i]=ArgentEnPoche[i];
function_SetArgent(i,Argent[i]);
}
if(ArgentEnPoche[i]> Argent[i])
{
function_SetArgent(i,Argent[i]);
}
}
}
je rapelle c'est juste un extrait
-
Bonjour,
Merci beaucoup pour vos idée plus haut :-[
Javais commencer a faire ce que cristab a dit de faire mais quand j'ai ajouter le public de Scott1 sava plus vite et sa marche aussi Merci ^^
mais le seul soucis c'est que quand je reboot le serveur on ce connecte et sa nous remet l'argent a Zero mais pas quand on deco reco =S
Si quelqu'un pourrais m'expliquer d'ou sa peu venir ^^ j'ai penser dans OnPlayerconnect mais non vu que quand on deco reco on a toujours l'argent sauf quand je reboot =S
PS : Cristab quand j'ai ajouter le Public de Scott1 j'ai etes tester et sa marcher, j'ai tester avec S... :P
Merci de vos reponse bonne journée :-[
-
tu n'as pas tester comme il faut enfaite il suffit de s'envoyer de l'argent avec le log puis de retirer ou deposer a la bank et hop tu as ouvert la faille ;)
voila la faille enfaite
OldCash[playerid] = GetPlayerMoney(playerid)
pour la corriger au pire tu peu proceder de la sorte
public DonnerArgent(playerid, argent)
{
if(argent== 0) { return 1; }
if(argent> 0) {GivePlayerMoney(playerid,argent); OldCash[playerid] = OldCash[playerid]
argent;}
else if(argent< 0) {GivePlayerMoney(playerid,-argent); OldCash[playerid] = OldCash[playerid] -argent;}
return 1;
}
-
J'ai donné une methode pour ne pas rajouter les oldcash partout
Si non j'avais posté une ébauche d'anti cheat, il peux rechercher
-
j'ai jamais vu ton topic sur les anti cheat zut je lui est corriger
-
public DonnerArgent(playerid, argent)
{
if(argent== 0) { return 1; }
if(argent> 0) {GivePlayerMoney(playerid,argent); OldCash[playerid] += argent}
else if(argent< 0) {GivePlayerMoney(playerid,-argent); OldCash[playerid] -= argent}
return 1;
}
if(GetPlayerMoney(playerid) != OldCash[playerid]) { BanEx(playerid, "Triche Argent"); }
J'ai pas fait mon anti cheat comme ça, mais ça devrai fonctionner
-
Merci de votre aide :D sa marche :)
mais le seul soucis c'est que quand je reboot le serveur et on ce reco bh sa nous met l'argent a Zero, mais pas quand je deco, reco, :( pouvez vous m'expliquer comment faire s'il vous plait
PS : il y a un autre petit soucis :( j'utilise le Gveh et quand je me fait flasher bh sa enleve m'argent de l'amende mais sa ce remet a l'argent que javais :( j'ai essayer d'ajouter le OldCash[playerid] mais sa le reconnais pas sa me donne une erreur =S
Merci de vos reponse bonne soirée
-
il faut aussi modifier le Gveh
-
Bonjour,
Voila j'ai un petit soucis avec une commende, sa doit etre tout con mais c'est sont celle les plus compliquer a trouver ^^
je m'explique j'ai crée le commende suivant :
if (strcmp("/dm", cmdtext, true, 10) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(1.5, playerid, -2022.6145,-482.3669,38.7344))
{
new name[MAX_PLAYER_NAME], string[44];
new rand = random(sizeof(RandomSpawn));
SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);
SetPlayerArmour(playerid,100);
SetPlayerHealth(playerid,100);
GivePlayerWeapon(playerid, 31, 9999);
GivePlayerWeapon(playerid, 26, 9999);
GivePlayerWeapon(playerid, 34, 9999);
SetTimer("time", 900, 1);
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s A rejoint la map DM ",name);
SendClientMessageToAll(0xFFFF00AA, string);
GameTextForPlayer(playerid, "~y~Bienvenue dans la map ~r~DM Type: /quitterdm Pour Quitter la map", 3000, 3);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Vous etes pas sur le ''i'' pour rejoindre cette map");
return 1;
}
}
return 1;
}
pour moi personnellement il y a aucun problème, mais pourtant si voila l'erreur que sa me donne et que j'arrive pas a trouver depuis 17h15 =/
C:\Documents and Settings\Administrateur\Bureau\....\Gamemodes\...pwn(127) : error 004: function "PlayerToPoint" is not implemented
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
je ne vois pas d'ou sa vient je l'ais traduite pour mieux comprendre car l'anglais et moi sa fait deux ^^ et je ne comprend pas pourquoi elle n'est pas mise en oeuvre :(
Merci pour vos reponse bonne journée ;)
-
la fonction PlayerToPoint n'est pas implanter dans ton script utilise IsPlayerRangeOfPoint un truc du genre
-
Merci pour ta reponse mais sur wiki Sa-mp je ne trouve pas " IsPlayerRangeOfPoint " si cella n'est pas trop demander pourrais tu etre plus précis s'il te plait
Merci de vos reponse bonne journée
-
comme je disait je n'etait pas sur de l'orthographe http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint (http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint)
-
je ne savais pas qu'il exister 2 fonction pour un peu prêt la meme chose, je dormirais moins con ce soir :lmfao
Merci pour ton aide bonne soirée ;)
-
Salut,
je ne savais pas qu'il exister 2 fonction pour un peu prêt la meme chose, je dormirais moins con ce soir :lmfao
Merci pour ton aide bonne soirée ;)
Si tu parle de la dualité PlayerToPoint - IsPlayerInRangeOfPoint, c'est qu'avant IsPlayerInRangeOfPoint n'existait pas, elle a été rajouté par la team sa-mp à la 0.3a si ma mémoire est bonne.
ps. IsPlayerInRangeOfPoint est meilleur que PlayerToPoint à tous les niveaux.
++Sim++
-
bonsoir,
Merci beaucoup pour ton explication Sim,
J'ai une petite question cela ne concerne pas le scripte ( enfin je pense Xd ),
Voila es-que quelqu'un pourra m'expliquer a quoi servira le " samp.img " ?? car on ma dit que c'est pour le mapping chepa quoi mais je doute que c'est pour sa.
Merci pour vos reponse bonne soirée