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
-
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..
-
Tu veux que sa s'applique sur un joueur ou tout les joueur
-
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$
-
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$
-
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]
}
-
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..
-
dans OnPlayerSpawn :
if(GetPlayerMoney(playerid) > 60000)
{
SetPlayerMoney(playerid, 60000);
}
-
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.
-
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..
-
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$.
-
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
-
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
-
Oui mais SetPlayerMoney ne marche pas..
-
Bah logiquement ces sa :-[
-
Bah comment faire fonctionner cette function? :/
-
Salut,
au pire suffit de la créer:
SetPlayerMoney(playerid, money)
{
ResetPlayerMoney(playerid);
return GivePlayerMoney(playerid, money);
}
allez, bonne chance
++Sim++
-
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é
-
Tu a quelque part oublié un ";".
Donne nous ta ligne 343.
-
La ligne 343 c'est RemovePlayerWeapon(playerid, weaponid)
-
Rajoute ";" à la fin de cette ligne.
-
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.
-
Salut,
tente plutôt avec ce qu'il y a avant, c'est souvent là que se trouve le problème
++Sim++
-
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 ; ;)
-
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++
-
Je viens de régler le problème, mais le script ne marche toujours pas..
-
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 ;)