Szerző Téma: Trafipax probléma  (Megtekintve 734 alkalommal)

Trafipax probléma
« Dátum: 2015. július 11. - 13:02:21 »
0 Show voters
Sziasztok van egy trafipax kódom és az a probléma hogy nem a sofőrtől vonja le a pénzt hanem a mellete lévő anyósülésen ülő személytől, és többször is levonja a 100$-t.
 
forward trafilekap(playerid);
SetTimer(\"trafilekap\", 1000, 1);
new Float:Traffipax[4][3] =
{
{1931.7089,354.3225,20.7599},
    {376.9446,120.6273,5.9113},
    {784.4890,-165.7152,18.5214},
    {1429.1204,34.3188,31.7118}
};
public trafilekap(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
for(new ii = 0; ii < sizeof Traffipax; ii++)
{
   new ids = GetPlayerVehicleID(playerid);
   if(IsPlayerInRangeOfPoint(playerid, 40.0, Traffipax[ii][0], Traffipax[ii][1], Traffipax[ii][2]) && GetVehicleSpeed(ids) != 40)
   {
      SCM(playerid, COLOR_WHITE, \"Túl gyorsan hajtottál, ezért levontunk tőled 100 dollárt!\");
      Kifizet(playerid, -100);
   }
}
}
}
« Utoljára szerkesztve: 2015. július 25. - 09:46:14 írta divkn »

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Trafipax probléma
« Válasz #1 Dátum: 2015. július 11. - 17:45:42 »
0 Show voters
Először is használj ciklust mert igy nem kérdezi le mindeni sebességét.
Aztán az isplayerinrageofpontnál a 40.0-t írd át 25 re.
Aztán azért kapja le többször a traffi, mert tegyük fel mész 20 al és kizárt hogy 1 másodperc alatt elhagyd a 40 méteres zónát mert azt kérdezted le. Írd át erre: GetVehicleSpeed(ids) <= 40 re.

Trafipax probléma
« Válasz #2 Dátum: 2015. július 14. - 00:29:17 »
0 Show voters
new ids = GetPlayerVehicleID(playerid);
Ez pedig rossz helyen van ez az IsPlayerInRangeOfPoint alatt legyen
GetVehicleSpeed(ids) != 40 ez pedig külön változóban így: GetVehicleSpeed(ids) >= 40

Nem elérhető AnthonyGates

  • 546
  • AnthonyGates
    • Profil megtekintése
Trafipax probléma
« Válasz #3 Dátum: 2015. július 14. - 01:54:37 »
0 Show voters

forward onTraffipaxShot();
forward resetTraffipax();
#define MAX_SPEED 50
#define RESET 20 //másodperc
SetTimer(\"onTraffipaxShot\", 1000, true);
SetTimer(\"resetTraffipax\", RESET*1000, true);
new bool:Elkapta[MAX_PLAYERS];
new Float:Traffipax[5][3] =
{
{1931.7089,354.3225,20.7599},
    {376.9446,120.6273,5.9113},
    {784.4890,-165.7152,18.5214},
    {1429.1204,34.3188,31.7118}
};
public resetTraffipax(){
new i;
i = -1;
for(; i<MAX_PLAYERS; i++){
if(Elkapta)
   Elkapta == false;
}
}
public onTraffipaxShot(){
new i;
i = -1;
for(; i<MAX_PLAYERS; i++){
if(isPlayerNearTraffipax(i) && !Elkapta){
   if(GetPlayerState(i) == PLAYER_STATE_DRIVER){
      new vehid = GetPlayerVehicleID(i);
      if(GetVehicleSpeed(vehid) >= MAX_SPEED){
         SCM(playerid, -1, \"Túl gyorsan hajtottál, ezért levontunk tőled 100 dollárt!\");
         Kifizet(playerid, -100);
      }
   }
}
}
return 1;
}
isPlayerNearTraffipax(playerid){
new i, count;
i = -1, count=0;
for(; i<sizeof(Traffipax); i++){
if(IsPlayerInRangeOfPoint(playerid, Traffipax[0],Traffipax[1],Traffipax[2])){
   count++;
   break;
   return true;
}
else continue;
}
if(count == 0) return false;
}

 
Remélem használható, munka után vagyok, nincs idegzetem tesztelni. Ha nem menne, szólj!
Ha pedig idiótaság, azért se haragudj. Fáradtság :)
« Utoljára szerkesztve: 2015. július 14. - 01:56:16 írta Anthony Gates »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal