GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: lilem le 22 Janvier 2008, 16:56:42
-
Salut, Sa fait un petit moment que je cherche ce FS il y et sur SFTDM
-
Facile,
Je te donne le code mais essaye de le comprendre au moins...
new AdminVehicle1; /* Tout en haut, Définition du premier véhicule admin */
new AdminVehicle2; /* Tout en haut, Définition du deuxième véhicule admin */
public OnGameModeInit(){
AdminVehicle1=AddStaticVehicle(ID,X,Y,Z,Couleur1,Couleur2); /* 1er Véhicule admin */
AdminVehicle2=AddStaticVehicle(ID,X,Y,Z,Couleur1,Couleur2); /* 2e Véhicule admin */
}
public OnPlayerEnterVehicle(playerid,vehicleid){
if(vehicleid==AdminVehicle1){ /* Si le joueur entre dans le premier véhicule admin */
/* Actions */
}
if(vehicleid==AdminVehicle2){ /* Si le joueur entre dans le deuxième véhicule admin */
/* Actions */
}
}
Si tu veux ajouter des véhicules il suffit de définir plus de véhicules en haut de ton script, Ajouter un véhicule avec AdminVehicleX== devant, Et le mettre dans OnPlayerEnterVehicle, (Tu peut aussi utiliser OnPlayerStatChange pour éxécuter les actions une fois que le joueur est DANS le véhicule...).
-
J'ai essayer ton code mais il marche pas pour moi
ps : mon code
1.AdminVehicle1=AddStaticVehicle(545,2329.3374,-1253.2600,22.3334,264.0271,1,1); /* 1er Véhicule admin */
-
il ne faut pas seulement mettre AdminVehicle1=AddStaticVehicle(545,2329.3374,-1253.2600,22.3334,264.0271,1,1); /* 1er Véhicule admin */
Au début de ton script dans <float> tu met ça
new AdminVehicle1; // Tout en haut, Définition du premier véhicule admin
new AdminVehicle2; //Tout en haut, Définition du deuxième véhicule admin
etc..., pour tout les véhicules que tu veu mettre admin
Ensuite dans ton public GameModeInit tu met "AdminVehicle1=" devant le(s) véhicule(s) que tu veu mettre admin par exemple
AdminVehicle1=AddStaticVehicle(411,-1986.9916,271.2776,35.2723,63.3029,6,0); (pour une infernusqui se trouve au wang)
Après dans public OnPlayerEnterVehicle(playerid,vehicleid){
tu met ça
if(vehicleid==AdminVehicle1){
GameTextForPlayer(playerid,"blablabla",10000,3);
} //par exemple, après tu met ce que tu veu...
et ainsi de suite pour tout les véhicules que tu as choisi pour qu'ils soient exclusivement admin.
tu peu essayer ça
public OnPlayerEnterVehicle(playerid,vehicleid){
if(vehicleid==AdminVehicle1){
if(IsPlayerAdmin(playerid) == 1){
GameTextForPlayer(playerid,"~g~bonjour Admin.",10000,3); // 10000 pour 10 seconde texte affiché a l'écran
}else{
if(IsPlayerAdmin(playerid) == 0){
GameTextForPlayer(playerid,"~r~Tu n'est pas Admin",15000,3);
//tu peu rajouter une téléportation pour le player, comme ça il ne sera pas dans la voiture, ou alors tu le met en taule
}
}
}
Voila ^^
-
Vous pouvez arrêter de poster des codes dans l'air X_X, Utilisez la fonction Codes ou GeSHi du forum
-
Voici une solution plus jolie pour le cas où on a beaucoup de véhicules admins :
new AdminVehicle1;
new AdminVehicle1;
..
public OnGameModeInit ()
{
/* Code du début de la callback */
...
/* Véhicules admins (ils doivent tous être déclarés ici entre AdminVehicle1= et AdminVehicle2=) */
AdminVehicle1 = CreateVehicle (...); // Premier véhicule admin
CreateVehicle (....); // Un autre véhicule admin
CreateVehicle (....); // Puis un autre
...
AdminVehicle2 = CreateVehicle (...); // Le dernier vehicule admin
/* Le reste de la callback */
...
}
public OnPlayerEnterVehicle(playerid,vehicleid)
{
/* Si c'est un véhicule admin */
if (vehicleid>= AdminVehicle1 && vehicleid<=AdminVehicle2)
{
/* Actions */
}
}
Ceci permet d'éviter que la callback OnPlayerEnterVehicle devienne énorme au fur et à mesure qu'on rajoute des véhicules admins.
++
Syg
-
merci a [StAfF]mAn et Syg sa m'aide je vais essayer
est sinon celui qui est pas admin ne peut pas rentrer ?
Sa peut Marcher pour une gTeam ?
-
Arf jarrive pas 2 choses
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(109) : warning 225: unreachable code
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(832) : error 029: invalid expression, assumed zero
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(853) : error 030: compound statement not closed at the end of file (started at line 830)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
-
Et il y a quoi a ces lignes ?? (109) (832) (853)
-
Maintenant c'est
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(110) : warning 225: unreachable code
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(851) : error 030: compound statement not closed at the end of file (started at line 832)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Ligne 832 = if(vehicleid==AdminVehicle1){
-
Tu peu pas nous filer les lignes qui sont mises entre parenthèse stp ^^ parce que sinon on peu pas t'aider :p !!
Allé, la ligne 110 et la ligne 853 pleas ^^
pour la 110 tu doit avoir une "{" en trop
-
110 = if(strcmp(dini_Get("Sad",PName),"ValidSad",true)==0)
851 = Ya rien
832 = if(vehicleid==AdminVehicle1){
-
Ben oui, Mets un { à la fin de if(strcmp(dini_Get("Sad",PName),"ValidSad",true)==0), if(strcmp(dini_Get("Sad",PName),"ValidSad",true)==0){
-
Aie !
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(110) : warning 225: unreachable code
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(114) : error 029: invalid expression, assumed zero
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(114) : warning 215: expression has no effect
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(114) : error 001: expected token: ";", but found "if"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(124) : error 029: invalid expression, assumed zero
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(124) : error 004: function "OnPlayerSpawn" is not implemented
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(129) : warning 225: unreachable code
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(129) : error 029: invalid expression, assumed zero
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(129) : error 004: function "OnPlayerCommandText" is not implemented
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(132) : warning 219: local variable "string" shadows a variable at a preceding level
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(144) : warning 219: local variable "PName" shadows a variable at a preceding level
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(145) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(150) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(181) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(214) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(241) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(268) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(295) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(322) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(429) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(457) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(486) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(512) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(527) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(542) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(573) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(628) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(647) : error 004: function "Sad_Yes" is not implemented
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(665) : error 017: undefined symbol "cmdtext"
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(684) : error 004: function "Sad_Yes" is not implemented
D:\PROGRA~1\ROCKST~1\GTASAN~1\FILTER~1\sad.pwn(702) : error 017: undefined symbol "cmdtext"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
Fodrai plutot refaire la ligne 832 = if(vehicleid==AdminVehicle1){
-
manque surment une accolade ;)
++
R@f
-
Non toujour pareil :(
-
Tu sais ce que c'est au moins ? ???
-
Bas des espaces je crois ..
-
Hey !
"{" > "}"
:D
NV.
-
Merci jvé voir si sa marche
-
public OnPlayerEnterVehicle(playerid,vehicleid)
{
if (vehicleid>= Policecar)
{
SendClientMessage(playerid, COLOR_RED, "Ceci est une voiture d'exposition, tu ne peux pas monter dedans.");
RemovePlayerFromVehicle(playerid);
}
}
Bonjour, voila mon script. Mon problème : je monte dans la voiture, il ya bien le message mais le joueur ne s'éjècte pas !
J'ai essayer ca :
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER)
{
if (IsPlayerInAnyVehicle(vehicleid))
{
SendClientMessage(playerid, COLOR_RED, "Tu n'as pas ton permis !");
RemovePlayerFromVehicle(playerid);
}
}
}
Mais il n'y a pas le "vehicleid" dans OnPlayerStateChange. Si vous savez comment le metre... Merci de me le dire :D!
-
Au début de ton script dans <float> tu met ça
Mais où tu voit ton F.L.O.A.T
sa commence a m'énerver ce float :spam :spam :spam
:wall
:wall
:wall
-
0_o Un float ? Pour faire quoi 0_o ?
-
Je c pas où c'est ni qu'es que c'est float
-
Float c'est le truck qui à tous en haut de ton GM c'est (on va dire) là que tu met tes "new"....
Bon nan je crois pas que c'est ça... :blink
-
Float c'est le truck qui à tous en haut de ton GM c'est (on va dire) là que tu met tes "new"....
Bon nan je crois pas que c'est ça... :blink
jen est pas moi :wall :rules :spam :boulz
-
Bon enfete ca sert à rien ok ?
Pourquoi tu veux savoir ? Moi je sais pas et puis je m'en fiche
-
En haut de ton script NORMALEMENT tu as ça :
//------------------------------------------------------------------------------
//
// San Fierro TDM. A Team Deathmtach script for SA-MP 0.1
//
//------------------------------------------------------------------------------
#include <a_samp>
#define MAX_STRING 256
enum SavePlayerPosEnum
{
Float:LastX,
Float:LastY,
Float:LastZ
}
new SavePlayerPos[MAX_PLAYERS][SavePlayerPosEnum];
new Text:Speedometer[MAX_PLAYERS];
//new Text:staffteam;
#include <core>
#include <float>
#define CreatPickup
//Global stuff and defines for our gamemode
static gTeam[MAX_PLAYERS]; // Tracks the team assignment for each player
new gPlayerClass[MAX_PLAYERS];
//Color Defines
etc...
Si tu regarde dedans il y a un <a_samp> un <core> et un <float>, ils sont en bleu
-
Pour répondre à Rivoal29 :
1) - Float est un tag qui permet de transformer un variable normalement entière en un nombre à virgule flottante (nombre décimal).
Exemple :
new X1; // Ceci est un nombre entier (sans virgule)
new Float:X2; // Ceci est un nombre décimal (avec virgule)
X1 = 17;
X2 = 54.66;
2) - #include <float> permet de donner au compilateur la déclaration de toutes les fonctions utilisées pour faire des calculs sur les floats (nombre décimaux).
Exemple de fonction déclarée dans float.inc : floatsqrt qui permet de calculer la racine carrée d'un nombre.
Pour LePro :
Il y a la fonction GetPlayerVehicleId pour trouver le vehicleid du véhicule dans lequel est le joueur. (mais je ne vois pas pourquoi tu as besoin du vehicleid)
Sinon, ton test IsPlayerInAnyVehicle n'est pas nécessaire car tu a déjà tester que le joueur est conducteur (et si il est conducteur, il est forcément dans un véhicule).
Soit :
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER)
{
if (/* Le joueur n'a pas son permis */) -> Test a écrire par toi-même, je ne connais pas les variables que tu utilises
{
SendClientMessage(playerid, COLOR_RED, "Tu n'as pas ton permis !");
RemovePlayerFromVehicle(playerid);
}
}
}
++
Syg
-
Syg ==> moi je voudrais que si il monte dans le véhicule "Policecar" et il soit éjecter.
-
C'est assès facile...
if(GetVehicleModel(vehicleid)== /*ID du Policecar*/){
RemovePlayerFromVehicle(playerid);
}
-
Oui mais pour le "vehiculeid" il va me mettre une erreur !
-
Oui mais pour le "vehiculeid" il va me mettre une erreur !
tu mets tout simplement
new vehicleid;
++
R@f
-
Nan :
new vehicleid=GetPlayerVehicleID(playerid);