Jump to content

Recommended Posts

Ghost Mode 1.0 by Mubby

Ahoj, toto téma mně inspirovalo k vytvoření funkce "Ghost mode"

 

Není to Ghost Mode jako v MTA, ale pouze Vám změní interior když jste blízko nějakého hráče.

 

#include <a_samp>
new Shoda[50];

stock Float:GetDistanceBetweenPlayers(playerid,id)
{
   new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
   if(!IsPlayerConnected(playerid) || !IsPlayerConnected(id)) {
    return -1.00;
   }
   GetPlayerPos(playerid,x1,y1,z1);
   GetPlayerPos(id,x2,y2,z2);
   return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

public OnFilterScriptInit()
{
   print("\n--------------------------------------");
   print("		    Ghost Mode By Mubby");
   print("				 Loaded..");
   print("--------------------------------------\n");
   return 1;
}

public OnFilterScriptExit()
{
   print("\n--------------------------------------");
   print("		    Ghost Mode By Mubby");
   print("				 Unloaded..");
   print("--------------------------------------\n");
   return 1;
}

public OnPlayerUpdate(playerid)
{
   Shoda[playerid]=0;
   for(new id; id<50; id++)
   {
    if(GetDistanceBetweenPlayers(playerid, id) > 30)
       {
       Shoda[playerid]++;
       }
   }
   //-
   if(Shoda[playerid] > 0)
   {
   SetPlayerVirtualWorld(playerid, playerid+1);
   SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), playerid+1);
   }else{
   SetPlayerVirtualWorld(playerid, 0);
   SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
   }
   return 1;
}


Vždy když je někdo pobliž Vás, tak Vás to hodí do VirtualWorldu a to do VašeID+1 (př.: Vaše id je 0, tak Vas to da do VW 1)

 

Script jsem netestoval, pokud něco nejde, nebo nefunguje, napište SZ.

 

Rate (0-10) & Comment

Edited by Mubby
Link to comment
Share on other sites

  • Globální moderátor

if(Shoda[playerid > 0)

 

- chybí ti tam ]

- a dej podmínku jestli je v autě ... jinak jsem nic nenašel :)

 

//EDIT udělal bych Shoda[MAX_PLAYERS_EX];

 

a používal všude.. takhle to musíš měnit všude, jinak měníš je jedno číslo v definici ;)

Link to comment
Share on other sites

if(Shoda[playerid > 0)

 

- chybí ti tam ]

- a dej podmínku jestli je v autě ... jinak jsem nic nenašel :)

 

//EDIT udělal bych Shoda[MAX_PLAYERS_EX];

 

a používal všude.. takhle to musíš měnit všude, jinak měníš je jedno číslo v definici ;)

To jsem si všiml(])

Možná ve verzi 2.0 :d

Shoda[50] máš jako Shoda[MAX_PLAYERS_EX] ale do max_players_ex si muzes vdefinovat cislo, a ja tam dal 50, mozna tam nahoru dam #define max_players_ex 50

ale ted se mi nechce

Link to comment
Share on other sites

Nestačilo by to takto?

 

public OnPlayerUpdate(playerid)
{
 for(new id; id<50; id++)
 {
		 if(GetDistanceBetweenPlayers(playerid, id) > 30)
		 {
SetPlayerVirtualWorld(playerid, playerid + 1);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), playerid + 1);
}else{
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
		 }
 }
 return 1;
}

 

Inač si to mal dosť na**** ked to furt nastavovalo interior na 0 lebo ked je v interiori 1 a dá mu to na 0, takže do promenej zapisať predošlu hodnotu pred tym jak to zmeni a potom mu to nastaviť...

Link to comment
Share on other sites

Nestačilo by to takto?

 

public OnPlayerUpdate(playerid)
{
 for(new id; id<50; id++)
 {
		 if(GetDistanceBetweenPlayers(playerid, id) > 30)
		 {
SetPlayerVirtualWorld(playerid, playerid + 1);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), playerid + 1);
}else{
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
		 }
 }
 return 1;
}

 

Inač si to mal dosť na**** ked to furt nastavovalo interior na 0 lebo ked je v interiori 1 a dá mu to na 0, takže do promenej zapisať predošlu hodnotu pred tym jak to zmeni a potom mu to nastaviť...

Co to meleš? Tam neni nic o interierech, tam je Virtual World,a nevidim co jsi zmenil

 

Striker, ano OnPlayerUpdate... ja vim...

Link to comment
Share on other sites

Můžu se zeptat na co je proměna Shoda? A jaké má využití?

Proměnná "Shoda" najde počet hráčů v blízkosti 30 metru.

Pokud jich najde 1 nebo vic, nastavi Oboum hracum jiny VirtualWorld

 

 

 

Nestačilo by to takto?

 

public OnPlayerUpdate(playerid)
{
 for(new id; id<50; id++)
 {
		 if(GetDistanceBetweenPlayers(playerid, id) > 30)
		 {
SetPlayerVirtualWorld(playerid, playerid + 1);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), playerid + 1);
}else{
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
		 }
 }
 return 1;
}

 

Inač si to mal dosť na**** ked to furt nastavovalo interior na 0 lebo ked je v interiori 1 a dá mu to na 0, takže do promenej zapisať predošlu hodnotu pred tym jak to zmeni a potom mu to nastaviť...

Ty .. skus uvažovat, co když hráč(posledni) s id 49 (pŕíklad) bude vzdálenej pd hráče více jako 30 m?

No přece mu to nastavi VirtualWorld 0,

proto tam je ta proměnná "Shoda"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...