GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: BuBuNo le 01 Septembre 2009, 20:15:07
-
Salut all,
Donc voila je cherche un code qui fait que quand on meur a /dm on est respawner au /dm et non pas autre part. et aussi qu'il y est une commande /quitte qui enleve toutes les armes et le respawn a l'endroit ou il etait avant de faire /dm.
Donc voila j'esper que vous pourrez m'aider
-
La meilleur réponse: Un tableau global suffit =)
-
:blink désoler masi j'ai aps tres bien compris
-
new DM[MAX_PLAYERS];
avec cette variable tu peut le faire
-
par exemple au début du script :
new dm[MAX_PLAYERS] = 0;
ensuite quand le joueur rentre dans le DM la premiere fois :
dm[playerid] = 1;
Et puis lorsque le joueur spawn tu regarde à combien est la variable 'dm', si elle est a 1 tu le remet au DM.
Et aussi dans le OnPlayerDisconnect n'oublie pas de remettre la variable à 0.
++
-
OUH LA c'est chaud ton truc ;D
mais je ne comprens pas ou je le place : dm[playerid] = 1;
-
bon on resume
on declare la variable en haut du script
DM[MAX_PLAYERS];
dans le onplayerconnect
DM[playerid] = 0;
dans ta commande pour aller au dm
ajoute
DM[playerid] = 1;
dans le onplayerspawm
rajoute ceci
if(DM[playerid] == 1)
{
//ta position
} else
{ //ton code normale
}
-
Alors voila j'ai mis comme sa :
En haut :
#include core
#include float
#define couleur_orange 0xFF8000FF
#define couleur_jaune 0xFFFF00FF
#define couleur_rouge 0xFF3E3EFF
#define couleur_bleu 0x0080C0FF
#define couleur_brun 0x886762FF
#define CreateObject CreateStreamObject
#define DestroyObject DestroyStreamObject
#if defined FILTERSCRIPT
DM[MAX_PLAYERS];
#else
main()
{
print("\n----------------------------------");
print(" Xtreme Stunting By Team XST ");
print("----------------------------------\n");
}
Dans on playerconnect :
public OnPlayerConnect(playerid)
{
DM[playerid] = 0;
return 1;
}
Dnas on payerspawm :
public OnPlayerSpawn(playerid)
{
if(DM[playerid] == 1)
{
203.442474, 1884.305298, 17.053812 //ta position
} else
{ if(strcmp(cmdtext, "/dm", true) == 0)
{
SetPlayerInterior(playerid,0);
SetPlayerColor(playerid, 0xFFFFFF00);
GivePlayerWeapon(playerid, 31, 120);
GivePlayerWeapon(playerid, 32, 372);
GivePlayerWeapon(playerid, 23, 372);
GivePlayerWeapon(playerid, 17, 1);
SetPlayerPos(playerid,203.442474, 1884.305298, 17.053812);
GameTextForPlayer(playerid,"DeathMatch",500,1);
SendClientMessage(playerid, couleur_bleu,"Bienvenu(e) à DeathMatch");
return 1; //ton code normale
} et voila ma commande :
if(strcmp(cmdtext, "/dm", true) == 0)
{
SetPlayerInterior(playerid,0);
DM[playerid] = 1;
SetPlayerColor(playerid, 0xFFFFFF00);
GivePlayerWeapon(playerid, 31, 120);
GivePlayerWeapon(playerid, 32, 372);
GivePlayerWeapon(playerid, 23, 372);
GivePlayerWeapon(playerid, 17, 1);
SetPlayerPos(playerid,203.442474, 1884.305298, 17.053812);
GameTextForPlayer(playerid,"DeathMatch",500,1);
SendClientMessage(playerid, couleur_bleu,"Bienvenu(e) à DeathMatch");
return 1;
}Ensuite je compile et :wall
C:\DOCUME~1\BrunoLB\Bureau\ULTIMA~1\GAMEMO~1\xtrem.pwn(903) : error 017: undefined symbol "DM"
C:\DOCUME~1\BrunoLB\Bureau\ULTIMA~1\GAMEMO~1\xtrem.pwn(903) : warning 215: expression has no effect
C:\DOCUME~1\BrunoLB\Bureau\ULTIMA~1\GAMEMO~1\xtrem.pwn(903) : error 001: expected token: ";", but found "]"
C:\DOCUME~1\BrunoLB\Bureau\ULTIMA~1\GAMEMO~1\xtrem.pwn(903) : error 029: invalid expression, assumed zero
C:\DOCUME~1\BrunoLB\Bureau\ULTIMA~1\GAMEMO~1\xtrem.pwn(903) : fatal error 107: too many error messages on one lineet la ligne corespond a sa :
public OnPlayerConnect(playerid)
{
Ligne 903 : DM[playerid] = 0;
return 1;
}
-
Ton OnPlayerSpawn doit ressembler à sa :
public OnPlayerSpawn(playerid)
{
if(DM[playerid] == 1)
{
/* Tu téléporte le joueur dans le DM */
}
else
{
/* Tu met le joueur à l'endroit normal */
}
return 1;
}
Faut pas remettre la cmd dans OnPlayerSpawn.
++
-
:wall :wall :wall :wall :wall :wall non désoler j'ai encor la meme chose
-
montre moi ce que tu à changer.
-
Bas !! regarde par toi meme voila mon GM : http://pastebin.com/d72ec67a2 (http://pastebin.com/d72ec67a2)
-
Ta des erreurs encore ?
Et ta même pas compléter ce que je t'ai donner... :boulz
-
oups désoler mais je ne comprend en rien vos truc il y a plutot un truc du genre :
SetPlayerKillPos(playerid,203.442474, 1884.305298, 17.053812);
-
Dans OnPlayerSpawn :
if(DM[playerid] == 1)
{
SetPlayerInterior(playerid,0);
SetPlayerColor(playerid, 0xFFFFFF00);
GivePlayerWeapon(playerid, 31, 120);
GivePlayerWeapon(playerid, 32, 372);
GivePlayerWeapon(playerid, 23, 372);
GivePlayerWeapon(playerid, 17, 1);
SetPlayerPos(playerid,203.442474, 1884.305298, 17.053812);
}
else
{
/* ICI TU MET L'ENDROIT OU LE JOUEUR ATTERIT S'IL N'EST PAS EN DM */
}
-
Salut,
alors on recommence tout du début....
1. Déclaration de la variable (ou plutôt du tableau)
new DM[MAX_PLAYERS];je te conseille de placer cette variable au-dessus du #if defined FILTERSCRIPT
MAX_PLAYERS est le nombre de valeurs différentes que peut contenir la variable au même moment (1 valeur pour chaque joueur dans ce cas)
2. Callback OnPlayerConnect
DM[playerid] = 0;seul commentaire sur cette partie, indente ton code
3. Callback OnPlayerSpawn
je crois que tout à été dit....
mais néanmoins:
public OnPlayerSpawn(playerid)//lorsque le joueur apprait
{
if(DM[playerid] == 1)//si le joueur est en combat
{
/* Tu téléporte le joueur dans le DM */
//ps. tu aura donc un SetPlayerPos, SetPlayerInterior (ceux de ta commande en fait...), exactement comme ghm94 le dit
}
else
{
/* Tu met le joueur à l'endroit normal */
//en gros c'est le code que contenait déjà ta callback qui va ici
}
return 1;
}
4. La commande
elle me semble correcte, mais encore une fois fais attention à ton indentation...
5. Bonne chance ;)
++Sim++