GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Infu le 04 Octobre 2011, 21:42:31

Titre: [RÉSOLU-AIDE] Car Spawner [AIDE]
Posté par: Infu le 04 Octobre 2011, 21:42:31
Bonjour, (Bonsoir :o )

Je débute en Pawn, et je ne sais pas comment créer une commande, pour créer un bus[vID:437] principalement.

Voici les conditions:

- La commande doit être en ZCMD (si vous ne connaissez pas faites autrement)
- Quand la commande est tapée, le bus spawn DEVANT le joueur.
- Quand la commande est faite une 2e fois, elle supprime l'ancien bus.


Un grand merci à vous pour votre réponse, qui je l'espère sera rapide.



Solution du problème au dernier post !


Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: herq le 05 Octobre 2011, 07:51:01
Salut,
Te le faire servirais a rien.. Tu ne vas pas apprendre sinon..

Sinon si cela peut t'aider :

Aide toi de :

-         new Float:x, Float:y, Float:z, ;
         GetPlayerPos(playerid, x, y, z);

-                       CreateVehicle(437, x, y, z, 0, -1, -1, -1);

-                       Pour le fait que si elle est déjà spawn, je te laisse chercher, il y a rien de plus simple..


++
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 10:58:28
Merci, cependant il y a une erreur, le véhicule spawn, il affiche le message comme quoi il est bien spawn, mais il y a toujours le SERVER: UNKNOW COMMAND ...

La commande:
(PS Je ne l'ai pas faite en ZCMD :p)
Code: (php) [Sélectionner]
<?php  // Ne pas copier.
if(strcmp(cmdtext"/bus"true) == 0)
{
        new 
Float:xFloat:yFloat:z;
        
GetPlayerPos(playeridxyz);
        
CreateVehicle(437xyz0, -1, -1, -1);
        
SendClientMessage(playerid0x00AFFF"Bus Spawn !");
        }
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 11:39:18
Merci, je test ça.


EDIT: J'obtiens ça.

Citer
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(99) : error 008: must be a constant expression; assumed zero
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(99) : error 009: invalid array size (negative, zero or out of bounds)
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(99) : error 036: empty statement
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(99) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.

Voici la ligne en question:
Code: (php) [Sélectionner]
<?php 

new bus[playerid], veh;
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: mehdi-jumper le 05 Octobre 2011, 11:54:59
Essaye en separant divisant en 2 new comme ceci:

new bus[playerid];
new veh;
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: mehdi-jumper le 05 Octobre 2011, 11:58:06
Oui desole j'avais pas vu ton poste.
Merci
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: spiirou le 05 Octobre 2011, 13:27:04
Pour le faire spawner devant le joueur il te suffit de calculer un point symetrique a la position de la camera par rapport a la position du joueur en X,Y, et Z.

Tu sais que pour calculer le point X millieu d'un segment [AB] dans un repere c'est

xX = (xA + xB) / 2

Dans le cas ou xA < xB

Bonne chance :)

Spiirou
Titre: Re : Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 14:14:32
Pour le faire spawner devant le joueur il te suffit de calculer un point symetrique a la position de la camera par rapport a la position du joueur en X,Y, et Z.

Tu sais que pour calculer le point X millieu d'un segment [AB] dans un repere c'est

xX = (xA + xB) / 2

Dans le cas ou xA < xB

Bonne chance :)

Spiirou

 ;D :blink :ninja
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: spiirou le 05 Octobre 2011, 14:23:35
Je t'aiderai sur Xfeu, la je suis sur portable donc chaud d'écrire
Titre: Re : Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 14:41:25
Je t'aiderai sur Xfeu, la je suis sur portable donc chaud d'écrire

Pas de soucis.


EDIT:

Avec ton nouveau code Dizzy (Camil), j'obtiens:

Citer
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(102) : warning 217: loose indentation
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(102) : error 032: array index out of bounds (variable "bus")
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(102) : error 029: invalid expression, assumed zero
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(107) : error 029: invalid expression, assumed zero
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(107) : warning 215: expression has no effect
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(107) : error 001: expected token: ";", but found "if"
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(107) : error 032: array index out of bounds (variable "bus")
C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\gm.pwn(107) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.


Code: (php) [Sélectionner]
<?php // Ne pas utiliser.

(ligne 102) if(bus[MAX_PLAYERS] == 0]
(
ligne 107)  else if (bus[MAX_PLAYERS] == 0]
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Xartrick le 05 Octobre 2011, 15:03:06
Pour ce qui est de l'erreur lors de l'exécution de la commande, il ne faut pas oublier de retourner une valeur !
Titre: Re : Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 15:09:43
il faut seulement mettre max players dans la definition avec new bus[max_players] apres faut mettre playerid jeune homme et une condition sa se termine par )

(J'ai copié sur ton code)
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 15:16:31
J'ai fais le changement, etc etc...

Il y a toujours Server Unknow Command

Et il ne détruit pas le véhicule :s
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Xartrick le 05 Octobre 2011, 15:26:37
Citation de: Xartrick
Pour ce qui est de l'erreur lors de l'exécution de la commande, il ne faut pas oublier de retourner une valeur !
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: mehdi-jumper le 05 Octobre 2011, 15:27:29
I'll manquerait pas le return 1; par hasard?
Titre: Re : Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 15:37:38
Citation de: Xartrick
Pour ce qui est de l'erreur lors de l'exécution de la commande, il ne faut pas oublier de retourner une valeur !

C'est gentil de me le dire, mais je comprends pas, je débute ^^.
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Xartrick le 05 Octobre 2011, 16:19:55
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!(strcmp(cmdtext, "/commande1", true, 11))) // Bloc numéro 1
    {
        // Instructions ...
       
        return 1;
    }
    else if (!(strcmp(cmdtext, "/commande2", true, 11))) // Bloc numéro 2
    {
        // Instructions ...
       
        return 1;
    }
   
    return 0;
}
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 17:14:46
Ah merci je viens de comprendre.


Maintenant, il n'y aurait pas un sujet où il y a quelques couleurs hexadécimales (0x******), car le peut de site que je trouve, ne donne que des couleurs HTML/PHP.

Merci.



J'ai fais les " return 1; ".
Le problème, c'est qu'il ne supprime toujours pas le véhicule précédent ...   :ohmy:dry

++.
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Xartrick le 05 Octobre 2011, 18:01:22
Un simple exemple, à toi de l'adapter !

new bCar = false,
    iCar = 0;

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!(strcmp(cmdtext, "/car", true, 4)))
    {
        if (bCar)
        {
            DestroyVehicle(iCar);
            
            bCar = false;
        }
        
        iCar = CreateVehicle(424, 0.0, 0.0, 0.0, 0.0, 0, 0, 0);
        bCar = true;
       
        return 1;
    }

    return 0;
}
Titre: Re : [AIDE] Car Spawner [AIDE]
Posté par: Infu le 05 Octobre 2011, 19:08:41
Voilà, PB résolu, (merci Spiirou):

Code: (php) [Sélectionner]
<?php // A supprimer, ne pas mettre dans le script.
CMD:veh(playeridparams[]) // declaration d'une commande avec zcmd
{
// J'ai mit des print() mais tu remplacera par des SendCLientMessage ;p

new vehid// On stock l'id du model du vehicule
if(sscanf(params"i"vehid)) print("");// SendMessage : "Pas bien faut mettre un id !" - le "i" signifie qu'on attend un integer ( nombre )
else if(vehid 400 || vehid 611) print("");// Message : "Pas bien faut que ca soit entre 400 et 611 "!
else
{
new Float:xFloat:yFloat:zFloat:a// On initialise les variables de position ( type Float )
GetPlayerPos(playeridxyz); // On recupere les positions du joueur
GetPlayerFacingAngle(playerida); // On recupere l'angle pour faire plus propre :p
SendClientMessage(playerid0xffa333" Véhicule spawn avec succes. ATTENTION: Si tu spawn une autre voiture, celle-ci sera supprimée."); // On dit au joueur qu'on lui spawn une voiture
if(GetVehicleModel(VehID[playerid]) != 0// Si le vehicule existe, on le détruit.
{
DestroyVehicle(VehID[playerid]); // On le detruit
SendClientMessage(playerid0xffa333" Tu avais déjà spawn une voiture, l'ancienne a donc été supprimé pour évité les surcharges."); // On l'informe
            
return 1;
}
VehID[playerid] = CreateVehicle(vehidxyza, -1, -1, -1); // On crée le veh avec l'id que le joueur a entré !
PutPlayerInVehicle(playeridVehID[playerid], 0); // On mets le joueur dedans
}
return 1;
}