GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Boubou29 le 20 Mai 2012, 19:44:28
-
Bonsoir à tous,
J'ai un bug récurent et je n'arrive pas à le résoudre.
Il arrive parfois lorsque des joueurs veulent garer un de leur véhicule via la commande "/v garer", celui disparait complétement du serveur et il est remplacé aléatoirement par un autre véhicule... A savoir que ce bug n'apparait qu'une fois sur 10...
Je ne peux plus TP le véhicule ni aller à sa position.. Le seul moyen est de redémarrer le serveur..
Voici le code :
if(strcmp(subcmd, "park", true) == 0 || strcmp(subcmd, "garer", true) == 0 || strcmp(subcmd, "parquer", true) == 0)
{
new Float:x, Float:y, Float:z, Float:a;
new getcarid = GetPlayerVehicleID(playerid);
GetPlayerName(playerid, playername, sizeof(playername));
new Float:health;
GetVehicleHealth(getcarid, health);
if(health < 850)
{SendClientMessage(playerid, COLOR_VEHICULE, "[Vehicule] Votre véhicule est gravment endommagé, vous ne pouvez pas le garer !"); return 1;}
if(!IsPlayerInAnyVehicle(playerid))
{SendClientMessage(playerid, COLOR_VEHICULE, "[Vehicule] Vous n'êtes pas dans une voiture."); return 1;}
if(GetVehicleVirtualWorld(getcarid) != 0)
{SendClientMessage(playerid, COLOR_VEHICULE, "[Vehicule] Ce véhicule est dans un virtual world particulier, retournez à l'exterieur."); return 1;}
if(CarInfo[getcarid][cOwned] !=1 || strcmp(CarInfo[getcarid][cOwner], playername, true)!=0)
{
if(!pack_isAdmin(playerid, 3))
{SendClientMessage(playerid, COLOR_VEHICULE, "[Vehicule] Vous n'êtes pas le propriétaire de ce vehicule."); return 1;}
else if(aDuty[playerid])
{SendClientMessage(playerid, COLOR_ADMIN, "[Admin] Voiture parquée.");}
else
{SendClientMessage(playerid, COLOR_ADMIN, "[Admin] En ServiceAdmin pour pourriez la parquer."); return 1;}
}
GetVehiclePos(getcarid, x, y, z);
GetVehicleZAngle(getcarid, a);
new panels,doors,lights,tires,Float:damage;
GetVehicleHealth(getcarid, damage);
DestroyVehicle(getcarid);
CarInfo[getcarid][cLocationx] = x;
CarInfo[getcarid][cLocationy] = y;
CarInfo[getcarid][cLocationz] = z;
CarInfo[getcarid][cAngle] = a;
CeintureNotUpdate[playerid]=3;
GetVehicleDamageStatus(getcarid,panels,doors,lights,tires);
CreateVehicle(CarInfo[getcarid][cModel],x,y,z+1.0,a,CarInfo[getcarid][cColorOne],CarInfo[getcarid][cColorTwo],-1);
PutPlayerInVehicle(playerid,getcarid, 0);
UpdateVehicleDamageStatus(getcarid, panels, doors, lights, tires);
SetVehicleHealth(getcarid, damage);
//CarInfo[getcarid][cHealth] = damage;
format(sql, 256, "UPDATE XXXXXXXXX_cars SET park_x=%f, park_y=%f, park_z=%f, park_angle=%f WHERE id=%d", x, y, z, a, getcarid);
MySQLCheckConnection();
mysql_query(sql);
//SQLLog(sql);
tuning_applyDbTuning(getcarid);
GameTextForPlayer(playerid, "~w~Vehicule parque", 1000, MSG_STYLE);
SaveSQLCar(getcarid,false);
car_Engine(getcarid);
return 1;
}
Si quelqu'un à une idée s'il vous plait.. Je galère..
-
si c'est juste /v garer pourquoi tu crfeer un vehicule STP ???
CreateVehicle(CarInfo[getcarid][cModel],x,y,z+1.0,a,CarInfo[getcarid][cColorOne],CarInfo[getcarid][cColorTwo],-1);
-
Justement. Sans détruire et recreer le véhicule dans la foulée, sa position n'est pas sauvegardée.. Enfin si mais après le reboot du serveur.
Lorsque je respawn la voiture, elle apparait à son emplacement précédent.
-
mais je voit que tu save la nouvelle position et que tu met a jour tes variable donc il y a un probleme autre tu ne pense pas
tente de regarder comment j'ai fait dans mon script de voiture essaie de t'en inspirer
-
J'ai beau tourner le truc dans tout les sens, impossible à sauvegarder la position de la voiture sans qu'elle soit respawn. Même en me basant sur ton système...
-
la c'est bizard car c'est une chose ultra simple a faire
-
Oui c'est pas le plus compliqué à faire mais là ca ne sauvegarde la position qu'après un reboot.. Allez comprendre...