GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Oscar le 28 Janvier 2010, 22:10:56

Titre: Respawn le joueur avec un tel argent
Posté par: Oscar le 28 Janvier 2010, 22:10:56
Bonsoir,

Voici un schèma de ce que je voudrais faire:

Connection 1 -> Joueur a 70.000$ sur lui -> Il se déconnecte -> Il se reconnecte -> On lui enlève 10.000$ car on l'a dépouillé

C'est à dire que je veux que les joueurs n'est pas plus de 60.000$ sur eux à leur reconnection.

Je pense le mettre dans le OnPlayerSpawn
Mais je ne sais pas quel fonction y mettre, par quoi commencer.. Je débute dans le PAWN..
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Alan le 30 Janvier 2010, 07:33:25
Tu veux que sa s'applique sur un joueur ou tout les joueur
Titre: Re : Respawn le joueur avec un tel argent
Posté par: ApocKalipsS le 30 Janvier 2010, 09:09:36
Déjà, à sa reconnection, il a 0$, si tu n'a aucun système d'enregistrement de compte.
Donc, à sa connection, quand il spawn, donc dans OnPlayerSpawn :

SetPlayerMoney(playerid, 60000);
Là, tu met l'argent(et non pas donne) à "playerid" (le joueur), 60.000$.

Si tu veux donner, et non pas lui en donner :

GivePlayerMoney(playerid, 1000);//On lui donne 1000$

Mais fait attention, à la connection du joueur, même si il s'est déjà déconnecté avec plein d'argent, il aura toujours 0$

Titre: RE: Respawn le joueur avec un tel argent
Posté par: Oscar le 30 Janvier 2010, 12:29:16
Alors, mon mode est RP.

Donc je réexplique car j'ai été confus dans mon explication.

Je veux que quand le joueur et qu'il meurt et quand il respawn, s'il a plus de 60.000$, on le dépouille. Genre le mec il meurt avec 150.000$ et quand il respawn, ça lui affiche un message comme quoi il a été dépouillé. Donc, on le SetPlayerMoney (à mon avis), on lui met 60.000$ Compris? Pareille, quand il se déconnecte, et qu'il a par exemple 80.000$, on lui dit qu'il a été dépouillé, à sa reconnection, et on lui enlève 20.000$ pour qu'il est 60.000$
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Alan le 30 Janvier 2010, 12:57:00
Ah Oké, Tu utilise LARP?

Double post
Pour moi c'est ici

callback: public ReleaseFromHospital(playerid)
{ [/code ]

Regarde si tu a cette ligne : GivePlayerCash(playerid, -500);

ici -500 c'est l'argent que le joueur aura en moi toi tu veux -10000 donc c'est sa

GivePlayerCash(playerid, -10000);

Double post
Si ta LARP c'est pas sa!

Moi perso c'est sa!

Peut-etre sa, attend la comfirmation de quelqu'un qui si connait mieux que moi.
             PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
SafeGivePlayerMoney(killerid, -suecost);
SafeGivePlayerMoney(playerid, suecost[b]+100[/b]);//[b]+100pays hospital bill[/b]
}
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 30 Janvier 2010, 13:11:35
Non, ce n'est pas ça. C'est pas à l'hôpital que je veux que ça retire, mais en plus.
C'est un système quoi..
Titre: Re : Respawn le joueur avec un tel argent
Posté par: ghm94 le 30 Janvier 2010, 13:18:05
dans OnPlayerSpawn :
if(GetPlayerMoney(playerid) > 60000)
{
    SetPlayerMoney(playerid, 60000);
}
Titre: Re : Respawn le joueur avec un tel argent
Posté par: ApocKalipsS le 30 Janvier 2010, 13:25:13
Ghettoman, là ca va lui enlever l'argent même si il est pas mort.
Donc regarde quand tu meurs, il y a un message, par exemple "Docteur : votre facture est de..." tu cherche dans ton script où elle est cette phrase et tu met le script de Ghm dedans.
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 10:57:50
Ok, merci, mais un petit problème.. Je viens de changer LARP par NYRP, donc, j'ai une erreur quand je mets le script. La voici:

C:\Users\Oscar\Desktop\GTA SAMP\gamemodes\nyrp.pwn(2566) : error 004: function "SetPlayerMoney" is not implemented
J'ai essayé de mettre un:

forward SetPlayerMoney(playerid, money);
Rien n'y change..
Titre: Re : Respawn le joueur avec un tel argent
Posté par: ApocKalipsS le 31 Janvier 2010, 12:35:19
Je viens en fait de remarqué que SetPlayerMoney ne marche pas.
Je te propose de faire comme ceci :

ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, 250000);//L'argent du joueur sera à 250.000$.
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 12:38:32
Non, ce n'est pas ça que je veux faire..

Je cite ce que je voudrais.

lors, mon mode est RP.

Donc je réexplique car j'ai été confus dans mon explication.

Je veux que quand le joueur et qu'il meurt et quand il respawn, s'il a plus de 60.000$, on le dépouille. Genre le mec il meurt avec 150.000$ et quand il respawn, ça lui affiche un message comme quoi il a été dépouillé. Donc, on le SetPlayerMoney (à mon avis), on lui met 60.000$ Compris? Pareille, quand il se déconnecte, et qu'il a par exemple 80.000$, on lui dit qu'il a été dépouillé, à sa reconnection, et on lui enlève 20.000$ pour qu'il est 60.000$


Voici un schéma vite fait:

public OnPlayerSpawn

Si le joueur a plus de 60.000$, on lui remet son argent à 60.000

Pareille quand on meurt
Titre: Re : Respawn le joueur avec un tel argent
Posté par: BuBuNo le 31 Janvier 2010, 13:06:15
Bah ces assez simple tu utilse
if (GetPlayerMoney(playerid) >= 60000) // si il a plus de 60000$
{
SetPlayerMoney(playerid,60000); // sont argent sera de 60000$
SendClientMessage(playerid,COLOR,"Tu as été depouilller"); // on lui le signal
}

sa eter coder sur place je ne garantie pas son fonctionnement
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 15:37:32
Oui mais SetPlayerMoney ne marche pas..
Titre: Re : Respawn le joueur avec un tel argent
Posté par: BuBuNo le 31 Janvier 2010, 15:54:38
Bah logiquement ces sa  :-[
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 16:13:08
Bah comment faire fonctionner cette function? :/
Titre: Re : Respawn le joueur avec un tel argent
Posté par: S!m le 31 Janvier 2010, 16:36:14
Salut,

au pire suffit de la créer:

SetPlayerMoney(playerid, money)
{
    ResetPlayerMoney(playerid);
    return GivePlayerMoney(playerid, money);
}

allez, bonne chance

++Sim++
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 16:53:23
Oui, merci, mais maintenant, une erreur se présente:



C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(343) : error 001: expected token: ";", but found "-identifier-"
RemovePlayerWeapon(playerid, weaponid)
{
if(!IsPlayerConnected(playerid) || weaponid < 0 || weaponid > 50)
    return;

new
    saveweapon[13],
    saveammo[13];

for(new slot = 0; slot < 13; slot++)
    GetPlayerWeaponData(playerid, slot, saveweapon[slot], saveammo[slot]);

ResetPlayerWeapons(playerid);

for(new slot; slot < 13; slot++)
{
if(saveweapon[slot] == weaponid || saveammo[slot] == 0)
continue;

GivePlayerWeapon(playerid, saveweapon[slot], saveammo[slot]);
}

GivePlayerWeapon(playerid, 0, 1);

}

Pourtant, je n'ai rien modifié, juste pris le code que Sim m'a donné
Titre: Re : Re : Respawn le joueur avec un tel argent
Posté par: ApocKalipsS le 31 Janvier 2010, 17:12:26
Tu a quelque part oublié un ";".
Donne nous ta ligne 343.
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 17:30:09
La ligne 343 c'est RemovePlayerWeapon(playerid, weaponid)
Titre: Re : Respawn le joueur avec un tel argent
Posté par: ApocKalipsS le 31 Janvier 2010, 17:39:54
Rajoute ";" à la fin de cette ligne.
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 31 Janvier 2010, 17:50:50
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(343) : error 001: expected token: ";", but found "-identifier-"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(344) : error 055: start of function body without function header
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(345) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(346) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(352) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(355) : error 021: symbol already defined: "ResetPlayerWeapons"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(357) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(359) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(360) : error 010: invalid function or declaration
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(362) : error 021: symbol already defined: "GivePlayerWeapon"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(365) : error 021: symbol already defined: "GivePlayerWeapon"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(367) : error 054: unmatched closing brace ("}")
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(385) : error 004: function "RemovePlayerWeapon" is not implemented
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(1938) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(1984) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(2568) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(3278) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(3673) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(3686) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(3700) : warning 217: loose indentation
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(25212) : warning 203: symbol is never used: "SetPlayerMoney"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(25212) : warning 203: symbol is never used: "saveammo"
C:\Users\Valentin\Desktop\GTA SAMP\gamemodes\nyrp.pwn(25212) : warning 203: symbol is never used: "saveweapon"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


13 Errors.
Titre: Re : Respawn le joueur avec un tel argent
Posté par: S!m le 31 Janvier 2010, 18:16:25
Salut,

tente plutôt avec ce qu'il y a avant, c'est souvent là que se trouve le problème

++Sim++
Titre: Re : Respawn le joueur avec un tel argent
Posté par: BuBuNo le 31 Janvier 2010, 19:37:08
Non l'erreur de l'accolade ne vien pas de la ligne 343 mais de celle si : for(new slot = 0; slot < 13; slot++) rajoute un ; ;)
Titre: Re : Respawn le joueur avec un tel argent
Posté par: S!m le 31 Janvier 2010, 19:58:15
Salut,

il n'y a pas d'erreur dans cette boucle, l'erreur pointe la première ligne, la déclaration de la fonction. Dans le cas des ; manquants, le compilo indique souvent la ligne de code suivante puisqu'une seule instruction peut occuper plusieurs lignes
Bref, il faut regarder les lignes au-dessus du code posté

++Sim++
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 01 Février 2010, 14:12:55
Je viens de régler le problème, mais le script ne marche toujours pas..
Titre: Re : Respawn le joueur avec un tel argent
Posté par: Oscar le 28 Février 2010, 21:47:57
Depuis un mois, je suis un peu plus expérimenté dans le script ;)
J'ai donc trouver la solution qui est tout bête.. M'enfin, quand on débute, on comprend pas grand chose :p

La solution:

if (GetPlayerMoney(playerid) >= 60000)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,60000);
SendClientMessage(playerid,COLOR_RED,"Vous aviez plus de 60.000$ sur vous et vous venez d'être dépouillé! Faites attention la prochaine fois!");
}

Pour ceux qui chercherait le code ;)