GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Vprimo le 27 Mars 2011, 20:35:47
-
Bon voila j'ai passé presque 2Jours a essayé de créer un /handsup performant, parce que quand on fait /handsup et on est freeze par un admin /Ligoter ou menotter il peu faire l'anim et appuyé sur ENTRER puis se UNfreese
Je voudrait faire genre si le mec est ligoté on lui envoie un message et on lui dit, Vous ne pouvez pas faire sa, car vous êtes Freeze/Menotté/Ligoté
Sinon des gens vont abusé de ce bug
Merci d'avance
P.S: désolé je suis débutant alors je connais pas toute les expressions
-
Pour arreté l'anim évite de faite la touche entrés fait un truc genre /sa mes quand on et freeze sa dit vous ne pouvez pas utilisé cette cmds car vous êtes freeze plus facile à scripté
-
Aerotun , c'est exactement pareils , sauf qu'il faut utilisé les Key . Tu rajoutes une condition .
# En haut du script #
new menote[MAX_PLAYERS];
# Dans le script de la touche ENTRER #
if(menote[playerid]==1)
{
SendClientMessage(playerid,COULEUR,"Vous ne pouvez pas sortir de l'animation en etant menoté.");
return 1;
}
# Dans le code /menoter #
.... Si le joueur est menoté ....
menote[playerid]=0;
.... Si le joueur n'est pas menoté ....
menote[playerid]=1;
-
Je croie pour sa c'est , bon mais quand on est freeze ou ligotté?
P.S: J'ai pas trouvé le scripte de ENTRER et j'ai pas compris comment mètre le truc de:
menote[playerid]=0;
-
Tu peux me montré la calback :
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
-
Voila:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
new string[256];
new sendername[MAX_PLAYER_NAME];
new pveh = GetVehicleModel(GetPlayerVehicleID(playerid));
new newcar = GetPlayerVehicleID(playerid);
if (newkeys & 16 && InShamal[playerid])
{
new Float:X, Float:Y, Float:Z, Float:A;
GetVehiclePos(InShamal[playerid], X, Y, Z);
GetVehicleZAngle(InShamal[playerid], A);
X += (5 * floatsin(-floatsub(A, 45.0), degrees)),
Y += (5 * floatcos(-floatsub(A, 45.0), degrees));
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, X, Y, floatsub(Z, 0.94));
SetPlayerFacingAngle(playerid, A);
SetCameraBehindPlayer(playerid);
InShamal[playerid] = 0;
}
if(newkeys == KEY_JUMP)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsPlayerConnected(playerid))
{
if(!engineOn[GetPlayerVehicleID(playerid)])
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
return 1;
}
/*if(IsAnOwnableCar(newcar))
{
if(PlayerInfo[playerid][pPvehkey] == newcar) { }
else if(PlayerInfo[playerid][pPvehkey2] == newcar) { }
else if(PlayerInfo[playerid][pPvehkey3] == newcar) { }
else if(PlayerInfo[playerid][pPvehkey4] == newcar) { }
else { return 1; }
}*/
if(pveh == 510 || pveh == 462 || pveh == 481 || pveh == 509)
{
return 1;
}
if(VoitureASabot[newcar] == 1)
{
return 1;
}
if(gEngine[playerid] == 1) { return 1; }
PutPlayerInVehicle(playerid, newcar, 0);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s tourne ses clefs et essaye de démarrer le moteur de son véhicule.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetTimerEx("StartingTheVehicle",2500,0,"i",playerid);
GameTextForPlayer(playerid, "~w~Le Moteur demarre...",2500,3);
gEngine[playerid] = 1;
desactivetext[playerid] = 1;
SetTimerEx("DesactiverSpeedo", 5000, 0, "i", playerid);
return 1;
}
}
}
}
else if ((newkeys == KEY_SECONDARY_ATTACK))
{
if(IsAtCandySprunk(playerid))
{
if(TookSprunk[playerid] == 0)
{
new Float:health;
GetPlayerHealth(playerid, health);
if(health != 0)
{
SafeGivePlayerMoney(playerid, -25);
SendClientMessage(playerid, COLOR_GREY, " Vous venez de payer 25$ pour votre Soda ");
TookSprunk[playerid] = 1;
SetTimerEx("SetHP",3750,false, "i", playerid);
}
}
}
}
else if(newkeys == KEY_SECONDARY_ATTACK)// KEY_SPRINT
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(gEngine[playerid] == 0 && engineOn[newcar] == 0)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
return 1;
}
else if(NoFuel[playerid] == 1)
{
TogglePlayerControllable(playerid, 1);
RemovePlayerFromVehicle(playerid);
NoFuel[playerid] = 0;
return 1;
}
}
}
else if(newkeys == KEY_CROUCH && GetPlayerState(playerid) == 2)// H
{
if(grilleouverte[playerid] == 0)
{
if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 3)
{
if (PlayerToPoint(15, playerid,1599.053344,-1638.123168,14.122960))
{
MoveStreamObject(pdgate1,1599.053344,-1638.123168,14.122960, 0.8);
SetTimer("GateClose", 12000, 0);
SetTimerEx("OuvertureGrille", 25000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"La grille du garage du commissariat s'ouvre, elle se refermera dans 7 secondes.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 0;
format(string, sizeof(string), " %s prend sa télécommande et ouvre le garage.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
PlayerPlaySound(playerid, 1153, 1589.053344,-1638.123168,14.122960);
}
else if (PlayerToPoint(15, playerid,1544.700317,-1630.735717,13.096980))
{
DestroyStreamObject( pdgate2 );
pdgate3 = CreateObject(968,1544.700317,-1630.735717,12.924660,0.000000,0.000000,270.972869);
SetTimer("GateClose5", 6000, 0);
SetTimerEx("OuvertureGrille", 13000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"La barrière est ouverte, elle se fermera dans 6 secondes.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 0;
format(string, sizeof(string), " %s prend sa télécommande et ouvre la barrière.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
/*}
else if (PlayerToPoint(15, playerid,2720.3772,-2409.7523,12.6))
{
MoveStreamObject(armygate1,2720.3772, -2401.2523, 12.6, 3.5);
SetTimer("GateClose2", 7000, 0);
SetTimerEx("OuvertureGrille", 25000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"The Army gate Nr. 1 is opened and will close in 7 seconds.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 1;
format(string, sizeof(string), " %s takes his/her remote and opens the army gate #1.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else if (PlayerToPoint(15, playerid,2720.3772,-2508.3069,12.6))
{
MoveStreamObject(armygate2,2720.3772, -2499.8069, 12.6, 3.5);
SetTimer("GateClose2", 7000, 0);
SetTimerEx("OuvertureGrille", 25000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"The Army gate Nr. 2 is opened and will close in 7 seconds.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 1;
format(string, sizeof(string), " %s takes his/her remote and opens the army gate #2.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);*/
}
else if (PlayerToPoint(15, playerid,1534.9020,-1451.5979,14.4882))
{
MoveStreamObject(fbigate,1534.9020,-1451.5979,20.4882, 1.5);
SetTimer("GateClose3", 7000, 0);
SetTimerEx("OuvertureGrille", 15000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"La grille du FBI est ouverte, elle se refermera dans 7 secondes.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 0;
format(string, sizeof(string), " %s prend sa télécommande et ouvre la grille.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else if (PlayerToPoint(15, playerid,1643.3379,-1714.9338,15.3067))
{
MoveStreamObject(hspdgate,1643.3379,-1705.9338,15.3067, 1.5);
SetTimer("GateClose4", 7000, 0);
SetTimerEx("OuvertureGrille", 15000, 0, "i", playerid);
SendClientMessage(playerid, COLOR_BLUE,"La grille du FBI est ouverte, elle se refermera dans 7 secondes.");
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 0;
format(string, sizeof(string), " %s prend sa télécommande et ouvre la grille.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else { SendClientMessage(playerid, COLOR_GREY,"Vous êtes trop loin de la grille."); }
}
else if(PlayerInfo[playerid][pMember] == 6 || PlayerInfo[playerid][pLeader] == 6)
{
if (PlayerToPoint(15, playerid,1246.0033,-767.3727,91.1473))
{
MoveStreamObject(lucianogate,1256.2033,-767.3727,91.1473, 2.2);
SetTimer("GateClose6", 7000, 0);
SetTimerEx("OuvertureGrille", 25000, 0, "i", playerid);
GetPlayerName(playerid, sendername, sizeof(sendername));
grilleouverte[playerid] = 0;
format(string, sizeof(string), " %s prend sa télécommande et ouvre la grille de La Famiglia Sinatra.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else { SendClientMessage(playerid, COLOR_GREY,"Vous êtes trop loin de la grille."); }
}
else
{
//SendClientMessage(playerid, COLOR_GREY,"Vous n'avez pas de télécommande.");
}
}
else
{
SendClientMessage(playerid, COLOR_RED,"Attendez que la grille soit fermée s'il vous plait.");
}
}
return 1;
}
-
Aerotun , c'est exactement pareils , sauf qu'il faut utilisé les Key . Tu rajoutes une condition .
# En haut du script #
new menote[MAX_PLAYERS];
# Dans le script de la touche ENTRER #
if(menote[playerid]==1)
{
SendClientMessage(playerid,COULEUR,"Vous ne pouvez pas sortir de l'animation en etant menoté.");
return 1;
}
# Dans le code /menoter #
.... Si le joueur est menoté ....
menote[playerid]=0;
.... Si le joueur n'est pas menoté ....
menote[playerid]=1;
Non, pour le /menotter il faut mettre
menote[giveplayerid]=X;
et non playerid, étant donné que c'est le giveplayerid qui doit être menotté!
-
On pourrait m'expliqué ou mètre le:
menote[giveplayerid]=X;
Merci bien
-
Dans ta commande /menotter
-
Bon voila j'ai fait le truc j vous montre ou:
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Vous avez été menotté par %s, jusqu'à ce qu'un policier vous démenotte.", sendername);
SendClientMessage(giveplayerid, COLOR_WHITE, string);
format(string, sizeof(string), "Vous avez menotté %s, jusqu'a ce qu'un policier vous démenotte.", giveplayer);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), " %s à menotté %s, il ne poura allez nul part.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
GameTextForPlayer(giveplayerid, "~r~Menotter", 2500, 3);
TogglePlayerControllable(giveplayerid, 0);
PlayerCuffed[giveplayerid] = 2;
menote[giveplayerid]=1; [color=green]//ICI[/color]
PlayerCuffedTime[giveplayerid] = 99999999999999;
Voila ce qu'on ma donné
C:\Documents and Settings\famille\Bureau\Serveur SAMP\gamemodes\RC-RP.pwn(58475) : error 028: invalid subscript (not an array or too many subscripts): "menote"
C:\Documents and Settings\famille\Bureau\Serveur SAMP\gamemodes\RC-RP.pwn(58475) : warning 215: expression has no effect
C:\Documents and Settings\famille\Bureau\Serveur SAMP\gamemodes\RC-RP.pwn(58475) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\famille\Bureau\Serveur SAMP\gamemodes\RC-RP.pwn(58475) : error 029: invalid expression, assumed zero
C:\Documents and Settings\famille\Bureau\Serveur SAMP\gamemodes\RC-RP.pwn(58475) : 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.