Jump to content

[ Tutorial ] Anti Drive-by na 3 body


_Martin_

Recommended Posts

Hore medzi newy:

new driveby[MAX_PLAYERS]; // vyvvoríme premennú na ukladanie driveby killov

 

Do public OnPlayerCommandText(playerid, cmdtext[])

public OnPlayerCommandText(playerid, cmdtext[])
{
 	if (strcmp(cmdtext, "/stats", true) == 0) // ak zadá príkaz stats pošle mu správu s počtom jeho drive-by killov
 	{
	new dform[50];
	format(dform,sizeof(dform),"Máš %d/3 drive-by killov",driveby[playerid]);
	SendClientMessage(playerid,COLOR_****,dform);
 		return 1;
}
       return 0;
}

 

Do public OnPlayerDeath(playerid,killerid)

public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInAnyVehicle(killerid)) // zisťuje či je vrah vo vozidle
{
    if(GetPlayerVehicleSeat(killerid) == 0) // ak áno a rovná sa jeho sedadlo 0 (vodič)
    {
	        if(driveby[killerid] == 2) // musí to ísť od najvläčšieho po najmenší pretože by mu to pripočítalo hneď 3 body a kicklo by ho to
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(3/3)"); // pošle mu správu že mu bol prirátaný bod driveby
       		new dbform[100];
       		format(dbform,sizeof(dbform),"Hráč %s bol vyhodený za Drive-by",PlayerName(killerid)); // vyhodí hráča za driveby ak má už 2 body
       		SendClientMessageToAll(COLOR_****,dbform);
       		Kick(killerid); // vyhodenie
		}
	        if(driveby[killerid] == 1) // ak je drive by 1, teda ak zabil niekoho už 1x drive by killom
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(2/3)");//  pošle mu správu že má už 2 drive by
            driveby[killerid] = 2; // nastaví mu drive by na 2
		}
        if(driveby[killerid] == 0) // ak ešte ikoho nezabil a niekoho zabije
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(1/3)"); pošle mu správu že mu bol prirátaný bod driveby
            driveby[killerid] = 1; // nastaví driveby na 1
		}
		}
}
return 1;
}

 

Viem, že by to išlo aj kratšie ale toto je pre začiatočníkov aby to pochopili

Link to comment
Share on other sites

Hore medzi newy:

new driveby[MAX_PLAYERS]; // vyvvoríme premennú na ukladanie driveby killov

 

Do public OnPlayerCommandText(playerid, cmdtext[])

public OnPlayerCommandText(playerid, cmdtext[])
{
 	if (strcmp(cmdtext, "/stats", true) == 0) // ak zadá príkaz stats pošle mu správu s počtom jeho drive-by killov
 	{
	new dform[50];
	format(dform,sizeof(dform),"Máš %d/3 drive-by killov",driveby[playerid]);
	SendClientMessage(playerid,COLOR_****,dform);
 		return 1;
}
       return 0;
}

 

Do public OnPlayerDeath(playerid,killerid)

public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInAnyVehicle(killerid)) // zisťuje či je vrah vo vozidle
{
    if(GetPlayerVehicleSeat(killerid) == 0) // ak áno a rovná sa jeho sedadlo 0 (vodič)
    {
	        if(driveby[killerid] == 2) // musí to ísť od najvläčšieho po najmenší pretože by mu to pripočítalo hneď 3 body a kicklo by ho to
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(3/3)"); // pošle mu správu že mu bol prirátaný bod driveby
       		new dbform[100];
       		format(dbform,sizeof(dbform),"Hráč %s bol vyhodený za Drive-by",PlayerName(killerid)); // vyhodí hráča za driveby ak má už 2 body
       		SendClientMessageToAll(COLOR_****,dbform);
       		Kick(killerid); // vyhodenie
		}
	        if(driveby[killerid] == 1) // ak je drive by 1, teda ak zabil niekoho už 1x drive by killom
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(2/3)");//  pošle mu správu že má už 2 drive by
            driveby[killerid] = 2; // nastaví mu drive by na 2
		}
        if(driveby[killerid] == 0) // ak ešte ikoho nezabil a niekoho zabije
        {
            SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(1/3)"); pošle mu správu že mu bol prirátaný bod driveby
            driveby[killerid] = 1; // nastaví driveby na 1
		}
		}
}
return 1;
}

 

Viem, že by to išlo aj kratšie ale toto je pre začiatočníkov aby to pochopili

omg další script "Okopírujte si mě"

co takhle to alespo víc popsat? a taky náký ty odkazy na wiki.....

Link to comment
Share on other sites

Guest Dr.Ondrej

Klidek!

 

Anti-Lams team

Řešíme lams help topicy stylem:

• Nebudeme ti dělat kód na přání

• Nebudeme postovat celý script do tvého helpu

• Opravíme ti tvůj kód, když u tebe uvidíme snahu

Pokud souhlasíš, zkopíruj si to do podpisu

Link to comment
Share on other sites

  • 3 weeks later...

Nehovorím že to nefunguje... ale robíš to moc zložito...

 

public OnPlayerDeath(playerid, killerid, reason)
{
  if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER){
  driveby[killerid]++;
  new dbform[100];
  if(driveby == 3){   
           SendClientMessage(killerid,COLOR_****,"[ Anti Drive-by ] Za usmrtenie hráča z vozidla ti bol pripočítaný varovný bod(3/3)");
             format(dbform,sizeof(dbform),"Hráč %s bol vyhodený za Drive-by",PlayerName(killerid)); // vyhodí hráča za driveby ak má už 2 body
             SendClientMessageToAll(COLOR_****,dbform);
             Kick(killerid); 
        }else{
  format(dbform,100,"Spravil si bike/car kill ! %d/3",driveby[killerid]);
  SendClientMessage(killerid,COLOR_****,dbform);
  }
  }
  return 1;
}

 

nehovoriac že si mohol použiť PVar...

Link to comment
Share on other sites

No co k tomu napsat, opět takhle by tut neměl vypadat, spíš bych to nechal přesunout do sekce "Vaše scripty".

 

Máš %d/3 drive-by killov

Proč takto blbě?

"Máš 35/3 drive-by killov" Nechápu logiku této blbosti.

 

if(IsPlayerInAnyVehicle(killerid)) // zisťuje či je vrah vo vozidle

{

if(GetPlayerVehicleSeat(killerid) == 0) // ak áno a rovná sa jeho sedadlo 0 (vodič)

{

Zbytečné 2 podmínky, stačí pouze ta druhá, ty potřebuješ pouze pokud je řidič a když se ti bude splňovat podmínka II tak automaticky musí být splněná podmínka I. Logika omg.

 

 

switch ti také nic neříká? if + else if také ne.

Stejně ty podmínky tam jsou úplně na ho*no, stačí 1 + else

 

Viem, že by to išlo aj kratšie ale toto je pre začiatočníkov aby to pochopili

Nejdementnější chyba, jakou jsi mohl vypustit.

 

Nečetl jsem QWERa, takže se omlouvám za opakování :d

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...