GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Nomis le 15 Juillet 2008, 18:08:54
-
Bonjour,
c'est re-moi!
Je voudrais savoir comment on crée des groupes comme "Worker" "FBI" "Fire" "Trilad" "Mafia"...
-
Ce n'est pas très compliquer non plus ;) :
tu définis tes TEAM en haut de ton script :
#define TEAM_ADMIN 0
#define TEAM_FBI 1
#define TEAM_ALCOOLIQUES 2
#define TEAM_HORS_LA_LOI 3
Après tu va dans onGameModeInit
AddPlayerClass(272, -1433.7158,2612.1035,55.8359,243.7729, 22, 9990, 25, 9990, 30, 9990);//ADMIN
AddPlayerClass(179, -1433.7158,2612.1035,55.8359,243.7729, 22, 9990, 25, 9990, 30, 9990);//FBI
AddPlayerClass(247, -1433.7158,2612.1035,55.8359,243.7729, 22, 9990, 25, 9990, 30, 9990);//ALCOOLIQUES
AddPlayerClass(285, -1480.0541,2636.3113,58.7879,156.9787, 24, 9990, 27, 9990, 31, 9990);//HORS_LA_LOI
Fait bien attention a ce qu'ils soient de le bon orde hein, sinon les teams seront mélanger et c'est galère :s
Après tu va dans OnPlayerRequestClass
if(classid == 0)
{
GameTextForPlayer(playerid, "~r~ADMIN", 2000, 5);
SetPlayerColor(playerid,COLOR_RED);
gTeam[playerid] = TEAM_ADMIN;
}
else if(classid == 1)
{
GameTextForPlayer(playerid, "~B~FBI", 2000, 5);
SetPlayerColor(playerid,COLOR_BLEU);
gTeam[playerid] = TEAM_FBI;
}
else if(classid == 2)
{
GameTextForPlayer(playerid, "~y~ALCOOLIQUES", 2000, 5);
SetPlayerColor(playerid,COLOR_YELLOW);
gTeam[playerid] = TEAM_ALCOOLIQUES;
}
else if(classid == 3)
{
GameTextForPlayer(playerid, "~w~HORS LA LOI", 2000, 5);
SetPlayerColor(playerid,COLOR_INDIGO);
gTeam[playerid] = TEAM_HOR_LA_LOI;
}
//-------------------------------ADMIN
if(classid == 0)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid, -1298.9540,2519.3376,87.2696);
SetPlayerFacingAngle(playerid,190);
SetPlayerCameraPos(playerid, -1297.5790,2514.3801,87.0745);
SetPlayerCameraLookAt(playerid, -1298.9540,2519.3376,87.2696);
}
//-------------------------------FBI
else if(classid == 1)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid, -1298.9540,2519.3376,87.2696);
SetPlayerFacingAngle(playerid,190);
SetPlayerCameraPos(playerid, -1297.5790,2514.3801,87.0745);
SetPlayerCameraLookAt(playerid, -1298.9540,2519.3376,87.2696);
}
//-------------------------------ALCOOLIQUES
else if(classid == 2)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid, -1298.9540,2519.3376,87.2696);
SetPlayerFacingAngle(playerid,190);
SetPlayerCameraPos(playerid, -1297.5790,2514.3801,87.0745);
SetPlayerCameraLookAt(playerid,-1298.9540,2519.3376,87.2696);
}
//-------------------------------HORS LA LOI
else if(classid == 3)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid, -1250.1986,2523.0615,107.5154);
SetPlayerFacingAngle(playerid,260);
SetPlayerCameraPos(playerid, -1245.6306,2523.0740,110.6277);
SetPlayerCameraLookAt(playerid, -1250.1986,2523.0615,107.5154);
}
Fais très attention a ce que les team ne soient pas mélanger aussi ;)
Et pour finir tu va dans OnPLayerSpawn
if(gTeam[playerid] == TEAM_ADMIN)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, X, Y, Z);
}
if(gTeam[playerid] == TEAM_FBI)
{
SetPlayerColor(playerid,COLOR_BLEU);
SetPlayerPos(playerid, X, Y, Z);
}
if(gTeam[playerid] == TEAM_ALCOOLIQUES)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, X, Y, Z);
}
if(gTeam[playerid] == TEAM_HOR_LA_LOI)
{
SetPlayerColor(playerid,COLOR_INDIGO);
SetPlayerPos(playerid, X, Y, Z);
}
Et hop tes classes sont faites ;)
-
Merci pour ta réponse ;)
EDIT: J'ai essayé et il y a une erreur ligne 124 ...
G:\PC_GTA.SanAndreas -(rip)-(ToeD)\GTA.San.Andreas\samp022server\gamemodes\Multi-Team.pwn(124) : error 017: undefined symbol "gTeam"
G:\PC_GTA.SanAndreas -(rip)-(ToeD)\GTA.San.Andreas\samp022server\gamemodes\Multi-Team.pwn(124) : warning 215: expression has no effect
G:\PC_GTA.SanAndreas -(rip)-(ToeD)\GTA.San.Andreas\samp022server\gamemodes\Multi-Team.pwn(124) : error 001: expected token: ";", but found "]"
G:\PC_GTA.SanAndreas -(rip)-(ToeD)\GTA.San.Andreas\samp022server\gamemodes\Multi-Team.pwn(124) : error 029: invalid expression, assumed zero
G:\PC_GTA.SanAndreas -(rip)-(ToeD)\GTA.San.Andreas\samp022server\gamemodes\Multi-Team.pwn(124) : fatal error 107: too many error messages on one line
HS: J'ai créé une Ile pour les admin en hauteur mais je ne sait pas comment y aller xD
-
lu,
static gTeam[MAX_PLAYERS]; ;) en haut du GM.
++
nikko
-
Et pour mettre plusieurs Skins dans une team ? Quand j'en mets plusieurs sa se mélange...
Sinon, merci pour ta réponse Nikko ;)
-
Tu met ce code dans ton OnePlayerRequestClass:
if(classid == 0 || classid == 1) << cela signifie que on parlera du premier skin qu'on voi et du second
{
GameTextForPlayer(playerid, "Civil", 2000, 5); << On affiche un game text pour dire au joueur qu'on parle des civils
SetPlayerColor(playerid,COLOR_GREEN); << On lui donne la couleur verte
gTeam[playerid] = TEAM_CIVIL; << et on dit que pour les 2 skins qu'on vien de voir, il seront dans la team civils (vert)
}
++
nikko
-
Et comment on fait pour que la team ADMIN ne soit que pour les Admins (par ex: avec un code) comme un serveur qui disait qu'on devait être Admin pour entrer dans la team :)
-
Pour ce que tu demande ça se passe dans OnPlayerSpawn, dans la team que tu choisi d'être admin, tu met un second if en dessous du 1 (qui serait if(gTeam[playerid]== TEAM_ADMIN) )
Se second if est
if(IsPlayerAdmin(playerid)== 1)
{
Donc avec ce if, tu dis
Si le player est admin, il spawn
DOnc tu met la suite du code dans les accolades, et tu ferme les accolades ;)
A la fin du If qui concerne les Admin tu met un else avec des testes dedans + un SetPlayerClassSelection ce qui va forcer le joueur a retourner dans la sélection des class, oubli pas le SetPlayerHealth(playerid, 0) car sinon ton classSelect ne fonctionnera pas ;)
-
Très intéressant, ça peux etre pratique !
-
Quand je met le SetPlayerClassSelection sa me met 1 erreur
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(222) : error 017: undefined symbol "SetPlayerClassSelection"
Quand je le retire plus d'error mais la personne qui est pas Admin est qui choisie ce Skin Meurt , Meurt , Meurt , Meurt , ect...
(DSL DE LE UP)
EDIT : Enfaite sa tue chaque classes
{
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
if(IsPlayerAdmin(playerid)== 1)
{
if(gTeam[playerid] == TEAM_ADMIN)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
} else {
SetPlayerHealth(playerid, 0);
SetPlayerClassSelection
}
-
Utilise ForceClassSelection Dans ton else des admins ;)
++
nikko
-
Merci de ta reponse rapide mais bon ^^
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(221) : error 076: syntax error in the expression, or invalid function call
Je suis Nul :'(
Est sa tue Toujours toute les classe XD
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
if(IsPlayerAdmin(playerid)== 1)
{
if(gTeam[playerid] == TEAM_ADMIN)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
} else {
ForceClassSelection;
SetPlayerHealth(playerid, 0);
}
-
Faut mettre ForceClassSelection(playerid); ;)
Et pas besoin de SetPlayerHealth ;)
++
nikko
-
Merci encore une fois
Mais Désolé d'abusé de ton temps mais normal que si on est pas admin on ses Prendre le skin ?
-
if(gTeam[playerid] == TEAM_ADMIN)
{
if(!IsPlayerAdmin(playerid))
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, X, Y, Z);
}
else//sinon
{
//La tu le tue et le respawn
}
}
if(gTeam[playerid] == TEAM_FBI)
{
SetPlayerColor(playerid,COLOR_BLEU);
SetPlayerPos(playerid, X, Y, Z);
}
if(gTeam[playerid] == TEAM_ALCOOLIQUES)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, X, Y, Z);
}
if(gTeam[playerid] == TEAM_HOR_LA_LOI)
{
SetPlayerColor(playerid,COLOR_INDIGO);
SetPlayerPos(playerid, X, Y, Z);
}
-
Regarde ton code coco, ya une erreur au niveau de l'admin Mais sinon, le principe est bon.
Voici le bon code:
if(gTeam[playerid] == TEAM_ADMIN)
{
if(IsPlayerAdmin(playerid)== 1)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
} else {
SetPlayerHealth(playerid, 0);
ForceClassSelection;
}
++
nikko
-
Merci coco mais j'avais oublié de dire que j'avais trouvé mais j'ai comme meme un probleme
Je selection le skin de la TEAM_ADMIN il meurt ( je me dit Chouette sa marche)
Apres je selection le de la TEAM_YAKUZA ou TEAM_RIDERS il meurt (Je me dit est Mince)
Apres je me rcon plus personne meurt donc sa veux dire que toute les classe sont pour les admin XD
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
if(IsPlayerAdmin(playerid)== 1)
{
if(gTeam[playerid] == TEAM_ADMIN)
{
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
} else {
SetPlayerHealth(playerid, 0);
ForceClassSelection(playerid);
}
GangZoneShowForPlayer(playerid, Yakuza, 0xFF000096);
GangZoneShowForPlayer(playerid, Riders, 0x00800096);
return 1;
}
-
Met
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
if(gTeam[playerid] == TEAM_ADMIN)
{
if(!IsPlayerAdmin(playerid))
{
SetPlayerHealth(playerid, 0);
ForceClassSelection;
} else {
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
GangZoneShowForPlayer(playerid, Yakuza, 0xFF000096);
GangZoneShowForPlayer(playerid, Riders, 0x00800096);
return 1;
}
++
nikko
-
:laugh
Je prefere avant ^^
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(218) : error 076: syntax error in the expression, or invalid function call
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(228) : warning 217: loose indentation
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(228) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(228) : error 004: function "OnPlayerDeath" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(230) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(232) : error 017: undefined symbol "reason"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(236) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(240) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(242) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(244) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(256) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(258) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(260) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(262) : error 017: undefined symbol "killerid"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(270) : warning 225: unreachable code
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(270) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(270) : error 004: function "OnVehicleSpawn" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(275) : warning 225: unreachable code
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(275) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(275) : error 004: function "OnVehicleDeath" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(280) : warning 225: unreachable code
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(280) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(280) : error 004: function "OnPlayerText" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(285) : warning 225: unreachable code
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(285) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(285) : error 004: function "OnPlayerPrivmsg" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(290) : warning 225: unreachable code
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(290) : error 029: invalid expression, assumed zero
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(290) : error 004: function "OnPlayerCommandText" is not implemented
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(292) : error 017: undefined symbol "cmdtext"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(304) : error 017: undefined symbol "cmdtext"
C:\Program Files\Serveur Neo\gamemodes\gg.pwn(314) : error 017: undefined symbol "cmdtext"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
Je continue a cherché je sens que je suis proche ^^
-
hum ^^
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
if(gTeam[playerid] == TEAM_ADMIN)
{
if(!IsPlayerAdmin(playerid))
{
SetPlayerHealth(playerid, 0);
ForceClassSelection;
} else {
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
GangZoneShowForPlayer(playerid, Yakuza, 0xFF000096);
GangZoneShowForPlayer(playerid, Riders, 0x00800096);
}
return 1;
}
^^ oubli Nikko :p
-
Voici une alternative qui empêchera le joueur d'apparaitre si il choisit le personnage des administrateurs et qu'il en est pas un.
public OnPlayerRequestSpawn(playerid)
{
if ( gTeam[playerid] == TEAM_ADMIN && !IsPlayerAdmin(playerid) )
{
SendClientMessage(playerid, COLOR_RED, "Skin Réservé pour les Administrateurs.");
return 0;
}
return 1;
}
-
Javais oublié une acolade :) je sais ou tu doit la mettre, regarde bien au niveau de la selection de l'admin ;)
Conte celle qui s'ouvre et celle qui se ferme, au total tu doit arriver a 0 ;)
++
nikko
-
Merci mais retour case départ
Soite sa tue toute les classe
Soite sa tue Aucun classe
Soite les error ^^
Merci a tous
Je crois que je suis pas doué XD bon ses pas grave pas de classe admin je met comme meme le bou de OnplayerSpawn
if(gTeam[playerid] == TEAM_ADMIN)
{
if(!IsPlayerAdmin(playerid))
{
SetPlayerHealth(playerid, 0);
ForceClassSelection(playerid);
} else {}
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
return 1;
}
-
Esseye ca:
if(gTeam[playerid] == TEAM_ADMIN)
{
if(!IsPlayerAdmin(playerid))
{
SetPlayerHealth(playerid, 0);
ForceClassSelection(playerid);
} else {
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
}
return 1;
}
++
nikko
-
Marche pas non plus lool Il tue pas le classe
-
else if(gTeam[playerid] == TEAM_ADMIN){
if(IsPlayerAdmin(playerid) == 1){
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}else{
SetPlayerHealth(playerid, 0);
ForceClassSelection(playerid);
}
}
Ta oublié les Else devant les if :
public OnPlayerSpawn(playerid)
{
GangZoneShowForPlayer(playerid, Yakuza, 0xFF000096);
GangZoneShowForPlayer(playerid, Riders, 0x00800096);
if(gTeam[playerid] == TEAM_YAKUZA)
{
SetPlayerColor(playerid,COLOR_RED);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}
else if(gTeam[playerid] == TEAM_RIDERS)
{
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerPos(playerid, -2461.9336,-128.4964,25.7375);
}
else if(gTeam[playerid] == TEAM_ADMIN){
if(IsPlayerAdmin(playerid)){
SetPlayerColor(playerid,COLOR_YELLOW);
SetPlayerPos(playerid, -2176.0010,657.5301,49.4375);
}else{
SetPlayerHealth(playerid, 0);
ForceClassSelection(playerid);
}
}
return 1;
}