GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: natsu00 le 21 Mai 2013, 18:31:09
-
salut les gens, je suis aujourd’hui confronté a un problème vraiment bizarre, ceci se passe depuis longtemps !
quand je spawn un véhicule via mon magasin ou mon système d’administration bha il spawn en une fois sans soucis!
et 5 minutes après je revient au même endroit et je vois mon tank spawner y a 5 minutes!!!
je precise que ce vehicule est deja pris /detruit par un autres joueur!
est ce un bug? ou une erreur de script?
merci
-
Montre ta commande /detruit ?
-
bha ce n'est pas une commande detruit, le joueur prend la voiture et se balade et quand elle a plus de vie elle disparait ^^
cela me donne exactement la même chose avec un spawn admin ou avec mon magasin
-
Dans ce cas c'est normal, le véhicule respawn... Il faut faire en sorte qu'une fois le véhicule explose, il ne respawn pas :smile:
-
Ok donc je fait une commande quand le véhicule spwne est détruit alors il ne spawnpas.....
Je connais destroyvehicule , ensuite je cree une variable correspondant au véhicule spawne mais comment je fait pout dire qu il ne respawn pas ?
Ce serait simple si i (variable) est detruit alors il ne respawn pas !
Merci
-
Ok donc je fait une commande quand le véhicule spwne est détruit alors il ne spawnpas.....
Tu n'as strictement rien compris de ce que j'ai écrit. Relis bien ce que j'ai écris et ensuite lis ce que tu viens de dire. :closedeyes:
-
Bha si m a dit de faire en sorte que le vehicule ne respawn pas une fois eplose !
Donc si i ( nom.des vehicule spawne ) explose alors il n est plus respawne!
Non? Sinon jai pas compris !
Merci
-
http://wiki.sa-mp.com/wiki/OnVehicleDeath (http://wiki.sa-mp.com/wiki/OnVehicleDeath)
http://wiki.sa-mp.com/wiki/DestroyVehicle (http://wiki.sa-mp.com/wiki/DestroyVehicle)
-
En utilisant les fonctions que Spiirou a eu la gentillesse de te noter, tu peux procéder de la sorte:
Quand le véhicule meurt (OnVehicleDeath), il faut le détruire. Tout simple, il y a juste une ligne à mettre dans ta Callback...
PS: Si tu pouvais faire un petit effort dans ton écriture, que ce soit grammaticalement ou orthographiquement, ça ferai moins mal aux yeux, et ce serait plus compréhensible.
++
-
Désolé j'etait sur mon telephone ^^ et le correcteur Me saoule ^^
Merci je regatre ça ce soir
voici mon pawn :
[spoiler]public OnVehicleDeath(vehicleid, killerid)
{
new tank;
tank = GetPlayerVehicleID(432);
DestroyVehicle(tank);
new helico;
helico = GetPlayerVehicleID(447);
DestroyVehicle(helico);
new hunter;
hunter = GetPlayerVehicleID(425);
DestroyVehicle(hunter);
new hydra;
hydra = GetPlayerVehicleID(520);
DestroyVehicle(hydra);
return 1;
}[/spoiler]
je pense qu'il fonctionne ^^
maintenant j'aurai envie d'une autre commande que j'ai presque fini et comprise. Je voudrai faire en sorte que le joueur puisse acheter une trousse de soin automatique, en gros il recupere de la vie petit à petit (comme dans les nouveau fps ) bien sur cet atout coutera cher.
Voici mon idée :
Je fait un timer qui se repete et qui dit que tous les 3 secondes on donne +2 points de vie au joueur par exemple mais pouvez vous m'expliquer le sytème de repetition j'avais pensais à cette commande :
http://wiki.sa-mp.com/wiki/SetTimerEx (http://wiki.sa-mp.com/wiki/SetTimerEx)
merci
EDIT: dnc j'ai reussi à faire un timer, mais je voudrait lui ajouter petit a petit de la vie et setplayerhealt ne le fait pas faut faire quelle fonction?
voici mon FS
http://pastebin.com/b4fqmESV (http://pastebin.com/b4fqmESV)
il se compile pas de soucis je fait repeter la commande pour gagner de la vie cotinuellement mais il me met juste la santé à 5 --'
-
salut, je me permet de faire un double post car sinon mon message serait trop long et incompréhensible
donc j'ai reussi ma commande pou ce que ça interresse la voici :
http://pastebin.com/JgWDPtHn (http://pastebin.com/JgWDPtHn)
Mais je voudrait que lorsque le joueur meurt le timer s'arrete donc j'ai betement pris kill timer MAIS quand je met
public OnPlayerDeath(playerid, killerid, reason)
{
KillTimer(live);
return 1;
}
bha il me met une erreur :
syntax error in the expression, or invalid function call
donc apparrement ce serait un problème dû au non du timer mais je l'ai appelé live non??
-
KillTimer("live");
-
okay merci x) j'ai changé mais maintenant j'ai une autres erreur jamais vu :
error 035: argument type mismatch (argument 1) à la même ligne que le kill timer
-
KillTimer(live[playerid]);
-
bha si je met les guillemets même erreur si je ne les met pas j'ai 4 erreurs:
error 028: invalid subscript (not an array or too many subscripts): "live"
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
j'éspere que j'y arriverai je suis trop content de moi là ^^
meme ligne que le killtimer
edit: j'en profite pour vous montrer tous les elements du timer (plus simple que mon s complet)
[spoiler]
forward live(playerid);//en haut
case 19:{ //c'est une case dans mon dialogue reponse
if(GetPlayerMoney(playerid) < 900) return SendClientMessage(playerid,0xEE3B3B, "You do not have $ 900");
SetTimer("live", 2000, true);
GivePlayerMoney(playerid,-900);}}}}
public live(playerid)
{
new Float:health;
GetPlayerHealth(playerid,health);
if (health < 100)
{
SetPlayerHealth(playerid, health +2);
}
return 1;}
public OnPlayerDeath(playerid, killerid, reason)
{
KillTimer("live");
return 1;
}[/spoiler]
-
En même temps tu nous a montré SetTimerEx(); alors que tu utilises actuellement SetTimer(); :closedeyes:
Avec ce code là, quand la personne meurt le timer se coupe pour tous le monde :thumbup:
-
bha j'ai testé avec les deux et il ne s'arrete jamais...
-
Utilises While.
Sachant que While veut dire "tant que..."
While(health < 100.0)
{
//ton code...
}
Mais faut vraiment que tu apprennes à lire le Wiki SA:MP et lire les tutos de Gilux qui sont très bien expliqués. Car ça va pas être possible de t'aider à chaque fois. Dès qu'on te trouve un truc, bim il te faut un autre truc...
-
Bha la y a que pour le killtimer que j arive pas je met pourtant bien le nom du timer ,je vois pas l intérêt de while moi je veux completement avec while le timer reprendra des que la vie sera en dessous de 100
Or moi je veux le stopper car c'est un magasin et que ça doit temporaire, donc je void pas d ou tu me dit que je ne cherche pas !
Le tutoriel je L ai lu j ai pas tout compris mais je cherché je suis juste pas doue! C'est souvent le cas sur le forum ! On debute c'est pas simple!
Bref je voulais juste une astuce pour résoudre l erreur ! Je ne L ai jamais vu !
-
Bah oui tu ne cherches pas, ce sont des trucs pourtant simples... Faut réfléchir et ne te braque pas, je dis ça car c'est l'impression que j'ai (je ne dois pas être le seul) ...
Allons bon... Ma bonté me perdra :laugh:
new bool:Mavariable = true;
new float:vie = GetPlayerHealth(playerid, vie);
while(Mavariable == true && vie < 100.0)
{
vie + 2.0;
}
J'ai pas testé mais si ça marche pas je pense que tu réussiras à résoudre le problème, comme tu cherches... :wink:
Il te reste à inclure le Timer qui mettra la valeur du booléen à false pour que la boucle while cesse.
-
Bha merci mais je vois pas le soucis j ai trouve plusieurs filescript et j ai fait pareiL pour le killtimer et moi ça marche pas ! (je prefère les exemples)
Je vais test merci
edit: infu merci mais j'ai fait autrement en cherchant :happy: j'ai refait completement mon timer à l'aide d'un tuto et ça marche, merci de votre patience