GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Xoss le 29 Mars 2009, 20:40:03

Titre: Début et besoin d'aide !
Posté par: Xoss le 29 Mars 2009, 20:40:03
Salut,
Peut être que celle la va vous faire rire, mais je suis pas trés fort en script !
Je me demande svp, si vous auriez la gentilleuse de me donner les codes des commandes que je voudrais !
Et merci d'avance de me préciser ou les mettre merci !!!

1) Je voudrais pouvoir un /goto + id pour aller vers l'id et le sens inverse pour que je l'oblige a venir vers moi !
2) Je voudrais que les pseudo soit protégés
3) Pouvoir Freezer / unfreezer / mettre en prison et l'enlever / le kik et le unkik / le ban et le Unbann
4) Faire une annonce
5) Avoir la voiture que je veux /call + id de la voiture
6) Sortir de l'argent de je ne sais pas ou !
7) De se tuer /kill

Ca serait super sympa de m'expliquer ça merci !  :)
Titre: Re : Début et besoin d'aide !
Posté par: Azz45 le 29 Mars 2009, 21:19:12
Salut,

Pour toutes tes questions : Prend le FS de R@f => Admin.
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 29 Mars 2009, 21:22:19
Ici, on ne donne pas de code mais si tu a un problème on peut t'aider a le résoudre.

Pour les commande /kick, /ban, /freeze, /unfreeze, /jail, /unjail, tu peut t'inspirer du FS de R@f qui comporte toutes ces commandes.

Pour la commande /kill, il faut que tu ajoute :

SetPlayerHealth(playerid, 0);

Dans ta commande.

Ensuite pour la commande /call [id], tu peut fouiller sur le Forum Samp dans le quel il y a des tonnes de script dans ce genre.

Tu peut aussi visiter le Wiki Samp.

Liens :
Forum Samp : http://forum.sa-mp.com/ (http://forum.sa-mp.com/)
Wiki Samp : http://wiki.sa-mp.com/wiki/Main_Page (http://wiki.sa-mp.com/wiki/Main_Page)


++
MrT
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 29 Mars 2009, 21:26:12
Merci mais en faites qaund je fouille et quand je prend lol apres tous devient did et ça marche plus !!!
POur les commandes il faut les mettre à combien d'endroits svp ?
Merci de m'avoir répondu !!!
Titre: Re : Début et besoin d'aide !
Posté par: ClaSh le 29 Mars 2009, 21:28:23
Salut,

Comme dit MrT, on ne donne pas de code mais tu peux télécharger le RAS de R@f ici : http://www.gtaonline.fr/forums/index.php/topic,1739.0.html .

ClaSh
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 29 Mars 2009, 21:36:59
Pour les commande, il faut en créer une nouvelle, puis ajouter les fonction dedant, et puis il y a plein de tuo, j'aurait aimer en avoir autant quand j'ai débuté,

profite en tu apprendra beaucoup plus vite avec les tutos plutôt qu'en prenant des FS que d'autre joueurs on codés et que tu ajoute bêtement a ton serveur.

Je vais te donner un petit exemple de commande qui donne de la vie au joueur

if (!strcmp("/Vie", cmdtext, true)) //si le joueur tape '/vie'

   {// On ouvre l'accolade

      SetPlayerHealth(playerid, 100); // On rend sa vie au joueur

      return 1;

   }// On referme l'accolade ouverte plus haut


NB : Les commandes se placent toutes dans le callback 'OnPlayerCommandText' avant le 'Return 0;'

++
MrT
 
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 29 Mars 2009, 21:41:51
ok et j'ai vus plein de choses tous en haut !
Comme new etc à chaque fois !
C'est chaud mais je verrais ça !
Merci MisterT
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 29 Mars 2009, 21:56:19
Les new servent a définir une variable qui peut être utilisé pour détruire un véhicule, faire un système de level ect...

Exemple :

new voiture1; (On définit la variable, voiture1 étant le nom de la variable)

voiture1 = CreateVehicle(416,1948.6825,-2110.8486,13.6937,271.0783,1,3,120); (On met la variable sur le vehicule)

if(!strcmp(cmdtext, "/suprvoiture1", true)) (Si le joueur tape /suprvoiture1)

   { (On ouvre l'accolade)

              DestroyVehicle(voiture1); (On détruit la voiture ayant la variable voiture1)

              return 1;
       
   } (On referme l'accolade)

NB : Pour detruire un véhicule, il faut utiliser CreateVehicle et non AddStaticVehicle ;)

Voila un petit exemple pour te montrer comment se servir d'une variable.

++
MrT
Titre: Re : Début et besoin d'aide !
Posté par: Azz45 le 29 Mars 2009, 21:58:42
Salut,

Dit donc MrT est chaud ce soir,

Je pense que si y'a un new il faudrait une callback non ?

Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 29 Mars 2009, 22:04:43
Les new ne servent pas a définir une callback, si c'est a sa que tu pense, pour définir une callback, on utilise un forward

Si par il ne devrait pas avoir une callback, tu voulait dire il faut placer CreateVehicle dans OnGameModeInit, alors , oui tu a raison, mais j'ai abregé car cela est connu de tous.

Comme je te l'ai dit Xoss si tu a besoin d'aide demande on est là pour sa, mais pense a chercher avant de poster bêtement, certain sujet pourrait avoir été déjà abordés ;)

PS : Azz je suis pas chaud, c'est juste que les demande de Xoss son a la porté de mon niveau en codage Pawn

++
MrT
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 29 Mars 2009, 22:08:15
Ah bah merci Mister T !
Je vois ça !
Je te montrerais
++
Et encore merci
Titre: Re : Début et besoin d'aide !
Posté par: Azz45 le 29 Mars 2009, 22:34:07
Mince je voulais mettre Forward j'ai mit callback xD !!
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 30 Mars 2009, 08:44:04
Voici le code
 //===================================Commands===================================
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256],tmp[256];
new idx;
new string[256];
new playername[MAX_PLAYER_NAME];
new tmp2[256];
new moneys[MAX_PLAYERS];
new giveplayerid;
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new playermoney[MAX_PLAYERS];
new level[MAX_PLAYERS];

cmd = strtok(cmdtext, idx);

/* Command /jail */
else if (!strcmp(cmd, "/jail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /jail [playerid]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "[RAS]You have jailed %s (ID:%d)",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,3);
SetPlayerPos(pid,197.6661,173.8179,1003.0234);
SetPlayerArmour(pid,0);
TogglePlayerControllable(pid,0);
ResetPlayerWeapons(pid);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
    format(tmpp, sizeof(tmpp), "jailed by %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}
/* Command /unjail */
else if (!strcmp(cmd, "/unjail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /unjail [playerid]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "[RAS]You have unjailed %s (ID:%d)",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,0);
SetPlayerPos(pid,1546.2803,-1675.6632,13.5620);
TogglePlayerControllable(pid,1);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
    format(tmpp, sizeof(tmpp), "unjailed by %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}

return 0

Et ce que l'on me dit en faisant F5
Citer
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2348) : error 029: invalid expression, assumed zero
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2348) : warning 215: expression has no effect
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2348) : error 001: expected token: ";", but found "if"
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2363) : error 017: undefined symbol "pidName"
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2363) : error 017: undefined symbol "pidName"
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2363) : error 029: invalid expression, assumed zero
C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2363) : fatal error 107: too many error messages on one line
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 30 Mars 2009, 18:28:17
Salut,

Remplace

else if   (!strcmp(cmd, "/jail", true)) & else if   (!strcmp(cmd, "/unjail", true))

par

if   (!strcmp(cmd, "/jail", true)) & if   (!strcmp(cmd, "/unjail", true)) 

Tu doit aussi definir le pidName, pour sa ajoute new pidName[MAX_PLAYER_NAME]; en dessous de tout les autres new.

Normalement sa devrait marcher (pas testé).

Si sa ne marche toujours pas fait le moi savoir ;)

NB : Le copier/coller ne marche pas toujours, il faut l'adapter a son mod ;)

++
MrT
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 30 Mars 2009, 18:48:45
ok merci je fais voir ça !
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 30 Mars 2009, 19:09:34
Pas de quoi, en espérant que sa marche et que tu ai compris ton erreur.

Si toute fois sa ne marche pas ou tu n'a pas compris ton erreur, demande le moi je t'expliquerais  ;)

++
MrT®
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 30 Mars 2009, 19:17:20
Oui pas de else car ce n'est pas adapter a mon gamemod !!!
Cependant dans le code je crois qu'il ne comprend pas Admin name  :-*
//===================================Commands===================================
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256],tmp[256];
new idx;
new string[256];
new playername[MAX_PLAYER_NAME];
new tmp2[256];
new moneys[MAX_PLAYERS];
new giveplayerid;
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new playermoney[MAX_PLAYERS];
new level[MAX_PLAYERS];
new pidName[MAX_PLAYER_NAME];

cmd = strtok(cmdtext, idx);

/* Command /jail */
if (!strcmp(cmd, "/jail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /jail [playerid]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "[RAS]You have jailed %s (ID:%d)",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,3);
SetPlayerPos(pid,197.6661,173.8179,1003.0234);
SetPlayerArmour(pid,0);
TogglePlayerControllable(pid,0);
ResetPlayerWeapons(pid);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
    format(tmpp, sizeof(tmpp), "jailed by %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}
/* Command /unjail */
if (!strcmp(cmd, "/unjail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /unjail [playerid]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "[RAS]You have unjailed %s (ID:%d)",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,0);
SetPlayerPos(pid,1546.2803,-1675.6632,13.5620);
TogglePlayerControllable(pid,1);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
    format(tmpp, sizeof(tmpp), "unjailed by %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}

return 0

Regarde le message d'erreur !
:Program FilesRockstar GamesGTA San Andreasgamemodessftm.pwn(2372) : error 017: undefined symbol "AdminName"
C:Program FilesRockstar GamesGTA San Andreasgamemodessftm.pwn(2372) : error 017: undefined symbol "AdminName"
C:Program FilesRockstar GamesGTA San Andreasgamemodessftm.pwn(2372) : error 029: invalid expression, assumed zero
C:Program FilesRockstar GamesGTA San Andreasgamemodessftm.pwn(2372) : fatal error 107: too many error messages on one line

Merci de m'aider c'est trés gentil de ta part !!!

Double post
J'ai donc creer
new Adminname[MAX_PLAYER_NAME]
Maisl la il me met un probleme a weather !
Un jeu sans fin  :lmfao
---------------------------------
J'ai donc essayer de voir le probleme !//===============================Weather=system=================================

if (strcmp(cmdtext, "/parking", true) == 0)
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid,-2040.251587, -97.368607, 34.482243);
GameTextForPlayer(playerid,"PRENDS UN VEHICULE!! ",2000,5);
if(IsPlayerInAnyVehicle(playerid))
{
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,-2047.597168, -97.544945, 34.489979);
}
return 1;
}
Le message d'erreur est : C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\sftm.pwn(2410) : error 001: expected token: ";", but found "if"
Pour mieux comprendre la ligne 2410 c'est celle là :   if (strcmp(cmdtext, "/parking", true) == 0)
Par inspection je crois qu'il dit qu'il n'y a pas de ; mais il trouve un if, c'est ça !
Bah oui mais je le met ou !!
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 30 Mars 2009, 19:31:54
Non, tu n'a pas compris ton erreur  :happy les else signifient sinon mais si il n'y a pas de première condition il ne peut en avoir une deuxième.

La fonction AdminName est une variable servent a enregistrer le pseudo de l'administrateur qui a tapé la commande en le récupérant avec

la fonction GetPlayerName(playerid, AdminName, sizeof(AdminName));

Il te suffit juste de le définir en ajoutant new AdminName[MAX_PLAYER_NAME]; avec les autres new après cela tu ne devrait plus avoir d'erreur...

En espérant que tu ai compris cette erreur qui était la même que celle pour le pidName

++
MrT®
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 30 Mars 2009, 19:38:02
Oups tu as posté quand j'editais !!!
J'ai résolus merci !
Mais ma console ne marche pas à cause du weather !
C'est juste en haut !
Je crois qu'il veut un" ;"
Titre: Re : Début et besoin d'aide !
Posté par: » Lukubi™ le 30 Mars 2009, 19:40:26
Non, pas du tout, problème tout simple, il ma fait marrer  :happy

regarde cette ligne :

!//===============================Weather=system=================================


Il faut supprimer le ! pour supprimer l'erreur.

++
MrT®
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 30 Mars 2009, 19:46:51
Dsl le ! n'ai apparu comme une fautes en recopiant ! :-[

L'erreur se trouve bien pour lui sur la ligne que j'ai donnais ! :-[
Titre: Re : Re : Début et besoin d'aide !
Posté par: S!m le 31 Mars 2009, 03:32:06
Salut,

sans vouloir faire mon rabat-joie,

Les new ne servent pas a définir une callback, si c'est a sa que tu pense, pour définir une callback, on utilise un forward

Si par il ne devrait pas avoir une callback, tu voulait dire il faut placer CreateVehicle dans OnGameModeInit, alors , oui tu a raison, mais j'ai abregé car cela est connu de tous.

Comme je te l'ai dit Xoss si tu a besoin d'aide demande on est là pour sa, mais pense a chercher avant de poster bêtement, certain sujet pourrait avoir été déjà abordés ;)

PS : Azz je suis pas chaud, c'est juste que les demande de Xoss son a la porté de mon niveau en codage Pawn

++
MrT


ceci est partiellement faux, tu ne semble pas comprendre le concept de forward, il s'agit de déclarer une fonctions au compilateur avec certaines informations (par exemple le tag de la valeur retournée (Float:, bool: ..., les paramètres)

en bref, ceci permet au compilateur d'identifier les fonctions (requis pour les fonctions public P.S. la différence entre une fonction public et une fonction normale est très petite: la public peut-être appelée par un processus externe (si on peut dire) ou plutôt indirectement, par exemple à l'aide d'un timer, CallRemoteFunction (utilisé une fonction d'un autre script tournant sur le serveur, exemple dans mon streamer (le .inc))

d'ailleurs, si tu ouvre ton fichier .amx tu pourra reconnaitre tes fonctions public dans tous les symboles étranges du fichier

j'ajouterais que si tu désire (possiblement comprendre certains opérateurs, tu devrais sans doute jeté un oeil à mon tuto (voir signature)

j'aimerais insister sur une phrase de MrT

Citation de: MisterT
NB : Le copier/coller ne marche pas toujours, il faut l'adapter a son mod Clin d'oeil

++Sim++
Titre: Re : Début et besoin d'aide !
Posté par: Xoss le 31 Mars 2009, 07:34:19
Merci pour ton tuto sur les opérateurs  :) :)
Même ci cela, n'arrange pas  ma faute dans la ligne d'en haut

Double post
J'ai encore cherché et je en trouve pas l'erreur de la ligne l
C'est bizard !