GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Ludo43 le 03 Janvier 2012, 21:32:42
-
Bonsoir à tous !
Après une bonne soirée de script, je reviens avec un question concernant mon derby. J'ai un problème, si une map est élue après un vote, lorsque je spawn dessus, aucune texture apparait, il doit me manquer quelque chose. Ce que je comprends pas si je remplace les résultats de mon vote par une simple commande "/map2" là je vois les textures...
J'avoue que je ne comprends pas toujours ^^.
Merci de vos réponses & merci de celui que je me suis inspiré.
voici le code :
else if((Bvotes >= Cvotes) && (Cvotes >= Avotes))
{
if(qderbyplaying == 1)
{
SendClientMessage(playerid, 0xB4B5B7AA, "Le derby est déjà lancé!");
return 1;
}
if(playerinminigame[playerid] == 1)
{
SendClientMessage(playerid, 0xB4B5B7AA, "Vous êtes déjà dans un minigame");
return 1;
}
new pname[256];
GetPlayerName(playerid, pname, 256);
if(qderbyon == 0)
{
Respawnqbloodrings();
qderbyon = 1;
playerinminigame[playerid] = 1;
playerinqderby[playerid] = 1;
qderbyrank = 1;
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,7);
SetVehicleVirtualWorld(qbloodring[0],7);
qbloodringfull[0] = 1;
PutPlayerInVehicle(playerid, qbloodring[0], 0);
playerinqbloodring[playerid] = 0;
TogglePlayerControllable(playerid, 0);
startvar[3] = 1;
qdtimer = SetTimer("StartqDerby", 60000, 0);
format(string, sizeof(string), "%s vient de créer un derby fait /rejoindrederby pour le rejoindre!", pname);//
SendClientMessageToAll(0x33AA33AA,string);
return 1;
} else if(qderbyon == 1 && qderbyrank < 15) {
playerinminigame[playerid] = 1;
playerinqderby[playerid] = 1;
qderbyrank++;
SetPlayerInterior(playerid,0);
for(new i=0; i<15; i++)
{
if(qbloodringfull[i] == 0)
{
SetPlayerVirtualWorld(playerid,7);
SetVehicleVirtualWorld(qbloodring[i],7);
qbloodringfull[i] = 1;
PutPlayerInVehicle(playerid, qbloodring[i], 0);
TogglePlayerControllable(playerid, 0);
playerinqbloodring[playerid] = i;
format(string, sizeof(string), "%s vient de rejoindre le derby", pname);//
SendClientMessageToAll(0x33AA33AA,string);
return 1;
}
}
} else if(qderbyon == 1 && qderbyrank >= 15) {
format(string, sizeof(string), "Le derby est full !", pname);//
SendClientMessage(playerid,0x33AA33AA,string);
return 1;
}
}
Merci.
-
C'est pas au niveau de l'interior? On peut voir ta commande /map2 ?
-
Ma commande /map2 correspond au nombre de vote donc rien à voir.
Sinon tu me conseilles quoi pour l'intérieur ?
-
C'est un bug qui survient seulement sur SA-MP je ne l'ai jamais compris.
Ce qu'il faut faire si le joueur se téléporte à la map avec un véhicule, il faire le faire descendre pour qu'il touche les objets puis remonter sur son véhicule.
-
Ok merci mais ... ^^
"il faire le faire descendre" ?? Il faut le faire ?
Si oui, comment faut-il faire ?
Encore merci de ton aide.
-
Tu téléporte le joueur puis quelque seconde après tu téléporte son véhicule et le met dans le véhicule.
Tu peux utiliser SetPlayerPos, GetPlayerVehicleID, GetPlayerPos, SetVehiclePos et SetTimerEx pour tout ça et normalement tu pourra régler ton problème.
-
ou pas :boulet
-
???
-
Ne te tracasses pas , c'est moi le :boulet
-
Ok mais je comprends pas pourquoi tu postes ici :s
Ssk, pourrais-tu m'aider en MP s'il te plait ?
Merci.
-
Petit UP :( toujours bloqué, Merci :D
-
Toujours bloqué ? montre ce que tu as essayé de codé et on te dira ce qui ne va pas
-
Bonjour,
Voici mon code :
if(aderbyon == 0)
{
aderbyon = 1;
aplayerinderby[playerid] = 1;
aderbyrank = 1;
SetPlayerInterior(playerid,17);
SetPlayerVirtualWorld(playerid,7);
SetVehicleVirtualWorld(abloodring[0],7);
abloodringfull[0] = 1;
PutPlayerInVehicle(playerid, abloodring[0], 0);
aplayerinbloodring[playerid] = 0;
TogglePlayerControllable(playerid, 0);
startvar[0] = 1;
dtimer = SetTimer("StartDerby", 3000, 0);
return 1;
} else if(aderbyon == 1 && aderbyrank < 15) {
playerinminigame[playerid] = 1;
aplayerinderby[playerid] = 1;
aderbyrank++;
SetPlayerInterior(playerid,15);
for(new i=0; i<15; i++)
{
if(abloodringfull[i] == 0)
{
SetPlayerVirtualWorld(playerid,7);
SetVehicleVirtualWorld(abloodring[i],7);
abloodringfull[i] = 1;
PutPlayerInVehicle(playerid, abloodring[i], 0);
TogglePlayerControllable(playerid, 0);
aplayerinbloodring[playerid] = i;
return 1;
}
}
return 1;
} // 2eme TRUC
}
Et pour le TP des autres personnes :
public aStartDerby()
{
new delay = 1000;
new string[32];
if(startvar[0] == 1)
{
if( aderbyrank <= 1 )
{
SendClientMessageToAll(0x33AA33AA, "Derby annulé , nombres de joueurs insuffisant. (minimum = 2)");
aderbyplaying = 0;
aderbyrank = 0;
aderbyon = 0;
startvar[0] = 0;
aRespawnbloodrings();
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (aplayerinderby[i] == 1)
{
aplayerinderby[i] = 0;
aplayerinminigame[i] = 0;
aplayerinbloodring[i] = -1;
SetPlayerVirtualWorld(i,0);
SetPlayerInterior(i, 0);
SetPlayerPos(i, spawnX, spawnY, spawnZ);
TogglePlayerControllable(i, 1);
}
}
}
return 1;
}
format(string, sizeof(string), "~r~Ready");
aderbyplaying = 1;
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (aplayerinderby[i] == 1)
{
GameTextForPlayer(i, string, delay, 6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
}
}
}
startvar[0] = 2;
SetTimer("StartDerby", delay, 0);
} else if(startvar[0] == 2) {
format(string, sizeof(string), "~r~Set");
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (aplayerinderby[i] == 1)
{
GameTextForPlayer(i, string, delay, 6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
}
}
}
startvar[0] = 3;
SetTimer("StartDerby", delay, 0);
} else if(startvar[0] == 3) {
format(string, sizeof(string), "~g~RAM!");
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (aplayerinderby[i] == 1)
{
GameTextForPlayer(i, string, delay, 6);
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
TogglePlayerControllable(i, 1);
}
}
}
startvar[0] = 0;
}
return 1;
}
EDIT : je crois que je viens de trouver une faille, je vous tient au courant ;)
Merci beaucoup de votre aide.