GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Dark57 le 27 Janvier 2010, 21:44:32
-
Bonsoir, boujour.
Je suis en train de créer un DeathMatch Requins VS Humains.
J'ai des problèmes :
les requins tue pas
les requins peuvent encore aller sur la terre ferme
les requins ne saute pas assez haut
pour qu'un joueur est requin j'ai fais :
shark[playerid] = 1;
TogglePlayerControllable(playerid,true);
SetCameraBehindPlayer(playerid);
new rand = random(4);
SetPlayerPos(playerid, SharkPlayerSpawns[rand][0], SharkPlayerSpawns[rand][1], SharkPlayerSpawns[rand][2]);
SetPlayerHealth(playerid,100);
SetPlayerSkin(playerid,252);
ResetPlayerWeapons(playerid);
format(string,256,"%s à join Death Match 7 : SharkAttack (Shark)",name);
SendClientMessageToAll(COLOR_GREY,string);
SendClientMessage(playerid, COLOR_WHITE,"Fais /fin pour quitter");
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerFacingAngle(playerid, A);
GetPlayerPos(playerid, X, Y, Z);
DestroyPlayerObject(playerid,sharkobject[playerid]);
sharkobject[playerid] = CreatePlayerObject( playerid, 1608, X, Y, Z, 0, 0, A );
Timer1[playerid] = SetTimer("SharkPos", 5, 0);
Plus bas :
public SharkPos(playerid)
{
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
SetPlayerObjectPos( playerid, sharkobject[playerid], X, Y, Z );
SetPlayerObjectRot( playerid, sharkobject[playerid], 0, 0, A );
if(X && Y && Z >= -0.10) //hors de l'eau
{
SetTimer("Kill", 5000, 0);
E[playerid] = 1;
}
else if(X && Y && Z <= -0.10) //dans l'eau
{
E[playerid] = 0;
}
SetTimer("SharkPos", 5, 0);
return 1;
}
public Kill(playerid) //temps avant la mort
{
if(E[playerid] == 1)
{
new Float:H;
GetPlayerHealth(playerid,H);
SetPlayerHealth(playerid,H - 10);
SetTimer("Kill", 5000, 0);
}
return 1;
}
public OnPlayerToutchShark(playerid) //si on touche un requin on meurt
{
new Float:H;
new Float:X, Float:Y, Float:Z;
new Float:x, Float:y, Float:z;
GetPlayerHealth(playerid,H);
GetObjectPos(shark1, x, y, z); //shark1 est un objet (requin) pour tester se scripte
GetPlayerPos(playerid, X, Y, Z);
new xmax = x + 2;
new xmin = x - 2;
new ymax = y + 2;
new ymin = y - 2;
new zmax = z + 2;
new zmin = z - 2;
if(X < xmax && X > xmin && Y < ymax && Y > ymin && Z < zmax && Z > zmin)
{
if (shark[playerid] == 0)
{
SetPlayerHealth(playerid,H - 40);
}
}
return 1;
}
Si un requin sort de l'eau sa vie baisse, mais si on retourne dans l'eau on continu toujours a perdre de la vie et donc mourir.
Si je vais dans la zone (X < xmax && X > xmin && Y < ymax && Y > ymin && Z < zmax && Z > zmin) il ne se passe rien. Or moi je veut que me personnage perd 40 PDV à chaque entré dans cette zone, je cherche aussi l'id de la fumé rouge du stuntplane pour faire le sang.
Je veut que les requin vont plus vite et saute plus haut (pour pouvoir choper le gars qui sont sur la terre ferme). J'avais essayé un scripte avec velocity, sans succès...
Je veut que met requin ont apnée infini (ouais sa serais mieux^^)
Aidez moi SVP :(
-
Et ba t'en veux des choses :0
-
Et ba t'en veux des choses :0
Evite de poster pour ne rien dire ...
-
Exactement ce que tu vien de faire...
-
Le freepost tu évite kawa sil te plait, merci.
Alors pour l'apnée infinie c'est impossible a ma connaissance; pour la vitesse et le saut, il faut faire GetPlayerVelocity puis un SetPlayerVelocity je te laisse te renseigner sur le wiki pour plus d'information sur ces fonctions; La fumée rouge du stuntplane je n'ai jamais vu sa dans map editor ou quoi que ce soit donc je pense pas que sa soit possible; et pour la vie du personnage quand il retourne dans l'eau vérifie tes condition dans ta callback. J'espère que j'ai répondu clairement a tes questions, sinon bah je laisse les autres compléter ^^.
-
Et ba t'en veux des choses :0
Oui mais ton poste ne sert à rien, cette section du forum est fait pour l'entre-aide, donc si la personne a beacoup de problème elle peut les poster et ont a pas besoin de commentaire comme les tient :closedeyes
Sinon pour l'apnée infinie peut être possible mais assez long à réaliser...
Pour que ton joueur perde des vies une fois dans la zones utilise un timer qui vérifie sa position et si tu y est bah enlève des vies ;)
-
j'ai beaucoup cherché avant de reposter
mon SetPlayerVelocity ne fonctionne pas :
new Float:x, Float:y, Float:z;
GetPlayerVelocity(playerid, x, y, z);
SetPlayerVelocity(playerid,x*10 ,y*10 ,z);
il n'est pas dans un timer
sinon pour mon "si on touche un requin on meurt" je suis bloqué...
il ne se passe rien quand j'entre dans un requin