GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Dark_revan le 12 Octobre 2008, 11:44:39
-
Salut je cherche a faire un coffre je croit que j'avais déjà poster avant ont ma répondue mais brèvement ^^.
alors je relance un topic en plus sa permettera a certain de voir comment par se que c'est intéressant.
Donc voila je voudrait un coffre pour les gang mais je sais pas vraiment comment faire au niveau du script c'est un peu compliquer.
Je sais comment faire la correspondance avec un .cfg
Si quelqu'un pourrait m'aidait sa serait sympas.
Merci.
::)
-
Qu'est ce que tu entend par coffre ?? Un coffre fort avec des sous dedans, un coffre de voiture, un coffre quelconque ??
A savoir que si c'est un coffre de voiture c'est même pas la peine lol ^^
-
Il cherche un coffre avec des sousous dedant, du genre une banque pour un gang quio ...
++
nikko
-
Oui un coffre avec des sous pour chaque gang c'est a dire 3.
Mais je sais pas comment faire Xd.Si vous pouvez m'aidez ::)
>Edit:J'ai deja essayer plusieur systeme pour y arriver je m'inspire des deposer et retirer des maison ou de la commandes chariter avec le PayLog mais je n'y arrive pas faut trouver un autre moyent mais je ne trouve pas si vous pourrait m'aider.
-
Sert toi du system de banque du SFTDM ;)
++
nikko
-
Edit: Bon je met en pose se probleme car il n'est pas le plsu urget voila ce que j'ai fait:
C'est un systeme d'accident de voiture que je scripter mais j'ai pas mal d'eereur qui sont a mon avis a cause des acolade ou des return qui manque.
-
Ce stile d'erreur ("26 errors") cest qu'il doit manqué une acolade ;)
++
nikko
-
je sais mais je sais pas ou c'est sa le probleme. :(
-
suffit de regarder ce que tu a ajouté en dernier et tu compte e nombre d'acolade ouverte ce le nombre d'acolade fermé
++
nikko
-
J'ai regler toute les erreur j'ai plus qu'un probleme c'est:
error 035: argument type mismatch (argument 2)
et sa la ligne de l'erreur.
GetVehicleHealth(vehicleid,0);
-
Dsl pour le double post mais je vous dit ce que j'ai mit sa compile mais sa marche pas IG.
public accident()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new vehicleid = GetPlayerVehicleID(i);
new Float:vhp;
GetVehicleHealth(vehicleid,vhp);
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i))
{
if(vhp <= 500)
{
TogglePlayerControllable(i,0);
SendClientMessage(i, COLOR_RED,"Vous venz d'avoir un accident vous etes gravement blessez.");
SendClientMessage(i, COLOR_RED,"Taper /accident pour faire votre choix.");
}
}
}
}
return 1;
}
-
Qu'est ce que tu entend par coffre ?? Un coffre fort avec des sous dedans, un coffre de voiture, un coffre quelconque ??
A savoir que si c'est un coffre de voiture c'est même pas la peine lol ^^
Juste pour info c'est posible ^^ car sur la prochaine MAJ de mon serveur y'aura un coffre pour chaque vehicule et chaque coffre aura 10 slot (pour le moment il ne pouront contenir que des arme et leur munition mais avec les base que j'ai fait j'pourait modifier facilement pour i stocker d'autre objet :p) bon se systeme necesite une base donne j'croit pas que sa serait posible sans ;)
Sinon pour les coffre de gang il suffit d'une variable qui stock la valeur contenu dans le coffre et tu la sauvegarde dans un fichier (inspire toi de la sauvegarde du stuff.ini)
-
Merci pour ce qui est du coffre mais pour mon public accident comment sa se fait que sa amrche pas :wall
-
salut,
alors pour ton accident, je trouve qu'il est plutôt mal optimisé... tu devrais faire tes test en permier lieu..
exemple:
public accident()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnecte(i))
{
if(IsPlayerInAnyVehicle(i)){
new vehicleid = GetPlayerVehicleID(i);
new Float:vhp;
GetVehicleHealth(vehicleid,vhp);
if(vhp <= 500)
{
TogglePlayerControllable(i,0);
SendClientMessage(i, COLOR_RED,"Vous venz d'avoir un accident vous etes gravement blessez.");
SendClientMessage(i, COLOR_RED,"Taper /accident pour faire votre choix.");
}
}
}
}
return 1;
}
si ça ne fonctionne pas, regarde ailleur dans ton script.... tu met bien un timer qui lance cette fonction??
++Sim++
-
Non aucun timer si tu as bien vu sa sera soit si sa marche avec un lancement d'un menu ou avec une commandes pour activer le menu.et je vais tester ce que tu ma dit merci
-
salut,
mais pour que ta fonction test si les joueurs ont un véhicule endommagé, il faudrait que tu lance un timer de exemple 5 secondes qui effectu ce code, et puis, tu met une variable pour que l'on ne refreeze pas le joueur inutilement et qui doit être a cette meme valeur pour que le joueur puisse faire la commande, sauf si tu veut que le joueur puisse le faire n'importe quand...
++Sim++
-
Tu pourrait m'aider a faire sa ses justement ce que je recherche mais je n'arriverai pas a le faire.
et se que tu ma scripter marche toujour pas.
Si tu veut que je te file tout avec le public selecte menu row et la commande
Merci :D
-
Ps : si tu veut crée ton système de coffre déjà tout ce passe dans la banque au niveau de la banque et t'auras carrément un autre système de banque a faire !
a toi de voir :-\
-
Sa je sais sai pas trop un probleme.
Aussi non pour mon systeme d'accident RAS comment sa se fait que sa marche pas.
Merci de m'aider.
-
salut,
bon je veut bien jeter un coup d'œil à ton script, pm moi le, t'inquiète pas, je ne t'en volerai rien, c'est pas dans mon genre,
et puis pour ton système de banques.....faudrait encore voir le script... utilise tu de l'argent virtuel, un argent qui ne fonctionne qu'avec le serveur?
++sim++
-
Tkt c'est pas sa le probleme.
Je parlais pour mon menu d'accident qui etait le plus urgent car je devait le mettre dasn la prochaine MAJ comment sa se fait que se marche pas Ig les vie de mon vehicule que j'ai defini vhp regarde sur la premiere page j'ai poster mon public pour le declancher.
Et pour ce qui est du coffre je le ferai un peu plus tard.
pour te repondre c'est la meme argent que pour les banque donc la barrre de GTA ^^.
Voila mon systeme d'accident au complet:
forward accident();
public OnPlayerSelectedMenuRow(playerid, row)
{
new vehicleid = GetPlayerVehicleID(playerid);
new Menu:Current2 = GetPlayerMenu(playerid);
if (Current2 == blesser)
{
if (row == 0)
{
if(Medics < 1)
{
SendClientMessage(playerid, COLOR_GREY, " Il n'y a pas de médecin en service !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "** %s a besoin de secours. (utilisez /accepter secours)", sendername);
SendRadioMessage(4, TEAM_AZTECAS_COLOR, string);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Vous avez appelé les secours , attendez a votre position.");
}
else if (row == 1)
{
SendClientMessage(playerid,COLOR_RED, "(!) Vous etes mort avec l'explosion de votre vehicule (!)");
SetVehicleHealth(vehicleid,0);
TogglePlayerControllable(playerid,1);
}
}
return 1;
}
public accident()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i))
{
new vehicleid = GetPlayerVehicleID(i);
new Float:vhp;
GetVehicleHealth(vehicleid,vhp);
if(vhp <= 500)
{
TogglePlayerControllable(i,0);
SendClientMessage(i, COLOR_RED,"Vous venz d'avoir un accident vous etes gravement blessez.");
SendClientMessage(i, COLOR_RED,"Taper /accident pour faire votre choix.");
ShowMenuForPlayer(blesser,playerid);
}
}
}
}
return 1;
}
j'espere que vous trouverai la faute IG le menu s'affiche pas et donc je pense que c'est mon public qui est pas reconnu pour l'action ou sa les vie de vehicule qui vont pas aidez moi svp.
++
-
Desoler de up mais c'est quand meme assez urgent vous pouvez regarder et me dire ce qu'il vas pas et pourquoi sa marche pas IG.
Merci ++
-
Si vous pourriez me repondre s.v.p
parse que j'en ai vraiment besoin.
Merci
-
salut,
on voudrais bien t'aider, mais aide nous!!!!
qu'es-ce qui se passe exactement, es-ce que lorsque les véhicules arrivent a 500hp il se passe quelque chose??
si non, il te faut placer un timer !!!!!!!!!!
comment tu le lance ton code?
il faut bien que tu place accident dans une callback ou un timer pour qu'il fonctionne enfin....
et en passant, le triple post, c'est pas bien!
++Sim++
-
Je suis desoler vraiment pouyr le double post mais personne voulait me dire sa pour te repondre mon public sert a freezer le joueur lors d'un accident donc si le vehicule a moin de 500 vie alors la voiture est freezer et un menu se lance qui est le menu accident j'aimerai savoiir comment tu fait pour le callback et si il faut que je fasse un timer merci pour que sa se fasse a tout moment.
Merci sim de m'avoir repondu
est desoler pour le 3 post mais c'etait pour ma MAJ et c'est imporant pour mon serveur ;D
je vais essayer avec un timer.
EDIT:J'ai fait avec un timer mais comme je le penser l'action soit d'ouvrir le menu ou le message se repete a plain de fois comment je pourrait faire pour qu'il s'afiche qu'une seule fois.
genre j'ai un accident sa ouvre mon menu mais qu'une seule fois pas 50 car la je peut pas selectioner ce que je veut.
merci de me dire ce qu'il faut rajouter pour y arriver.
++
-
J'aimerais bien tester le script accident ça a l'air très interresant .
Faite moi signe quand vous aurez regler les problemes .
-
salut
pour éviter que la même action se répète plein de fois inutilement ( et même désagréablement dans ce cas),
tu crée une variable que tu met a 1 dès qu'on lui montre le menu et n'oublie aps de vérifier si elle est a un avant de te lancer dans l'action....
alors voici le code en gros... (y faudrait bien finir par y arriver...)
En haut de ton gm, tu initialise les variables...:
new IsPlayerFreezedForRepair[MAX_PLAYERS];
new TimerAccident;
forward accident();
puis tu ajoute dans ta callback OnGameModeInit() (c'est là que tu retrouve tes AddPlayerClass, AddStaticPickup, AddStaticVehicle ......)
TimerAccident = SetTimer("Accident",1000,1);
puis je te recommande à ajouter dans OnGameModeExit()
KillTimer(TimerAccident);
puis on arrive à tes codes.....
public OnPlayerSelectedMenuRow(playerid, row)
{
new vehicleid = GetPlayerVehicleID(playerid);
new Menu:Current2 = GetPlayerMenu(playerid);
if (Current2 == blesser)
{
if(IsPlayerFreezedForRepair[playerid] ==0)return 0;
if (row == 0)
{
if(Medics < 1)
{
SendClientMessage(playerid, COLOR_GREY, " Il n'y a pas de médecin en service !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "** %s a besoin de secours. (utilisez /accepter secours)", sendername);
SendRadioMessage(4, TEAM_AZTECAS_COLOR, string);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Vous avez appelé les secours , attendez a votre position.");
}
else if (row == 1)
{
SendClientMessage(playerid,COLOR_RED, "(!) Vous etes mort avec l'explosion de votre vehicule (!)");
SetVehicleHealth(vehicleid,0);
IsPlayerFreezedForRepair[playerid] = 0;
TogglePlayerControllable(playerid,1);
}
}
return 1;
}
public accident()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerFreezedForRepair[i])continue;
if(IsPlayerInAnyVehicle(i))
{
new vehicleid = GetPlayerVehicleID(i);
new Float:vhp;
GetVehicleHealth(vehicleid,vhp);
if(vhp <= 500)
{
TogglePlayerControllable(i,0);
SendClientMessage(i, COLOR_RED,"Vous venez d'avoir un accident vous etes gravement blessez.");
SendClientMessage(i, COLOR_RED,"Taper /accident pour faire votre choix.");
ShowMenuForPlayer(blesser,playerid);
IsPlayerFreezedForRepair[i] = 1;
}
}
}
}
return 1;
}
et n'oublie pas de remettre la variable a 0 lorsque le meccano le répare......
ah et important, lorsqu'un joueur se connecte...
public OnPlayerConnect(playerid)
{
IsPlayerFreezedForRepair[playerid] = 0;
return 1;
}
et voila, je crois que ca devrait être a peu près ca.... essaie de l'adapter un peu et bonne chance ;)
++sim++
-
Ok un gros merci a toi Sim.
je vais essayer ce que tu ma dit
-
j'espère bien avec l'effort que j'ai fait pour t'écrire ça... et en passant, ça se peut qu'il y est des erreurs, je l'ai écrit sur le forum alors.....
++Sim++
-
Je reouvre le topic pour dire quecomme j'avait un peu le temsp je suis revenue sur mon projet et voila ce que j'ai fait mais le probleme c'est sa :
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(6646) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(6655) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(13457) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(13465) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(13475) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(13476) : error 032: array index out of bounds (variable "CoffreInfo")
C:\Program Files\Rockstar Games\GTA San Andreas\serveur tierra Robada\gamemodes\Tierra-Robada.pwn(13483) : error 032: array index out of bounds (variable "CoffreInfo")
j'epere que vous pourrier m'aider a regler ses erreurs et comme sa je pourrait mieux comprendre ce systeme merci a tous :)
++
-
Desoler du double post mais j'ai trouver sa marche :D :D
Merci a tous.
Maintenant je vasi m'attaquer au save des armes ^^,
++