SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Archive

 
 
Thread Tools Display Modes
Old 22/11/2009, 07:36 PM   #1
Blantas
Huge Clucker
 
Blantas's Avatar
 
Join Date: Feb 2009
Posts: 340
Reputation: 8
Default Naudingos funkcijos!

Naudingos funkcijos

Taigi sukūriau naują temą, kurioje galėsime dalintis savo sukurtomis funkcijomis.

Taisyklės:
  • Ne spam'inti.
  • Nenukrypti nuo temos.
  • Jeigu funkcija nėra sukurta Jūsų, būtinai užrašykite jos autorių.


Funkcijos:
  • [iurl=#GPIW]GetPlayersInWorld[/iurl]
  • [iurl=#IBN]IsBotName[/iurl]
  • [iurl=#getName]GetName[/iurl]
  • [iurl=#Sppt]SetPlayerPosTimes[/iurl]
  • [iurl=#GSV]GetServerVehicles[/iurl]
  • [iurl=#RAV]RespawnAllVehicles[/iurl]
  • [iurl=#rsav]RespawnAllVehicles #2[/iurl]
  • ClearDeathList

Last edited by Blantas; 07/08/2011 at 09:50 PM.
Blantas is offline  
Old 22/11/2009, 07:40 PM   #2
Blantas
Huge Clucker
 
Blantas's Avatar
 
Join Date: Feb 2009
Posts: 340
Reputation: 8
Default Re: Naudingos funkcijos

[anchor=GPIW]GetPlayersInWorld(virtualworld)

Code:
stock GetPlayersInWorld(virtualworld)
{
  new PlayersInWorld;
  for(new p=0;p<MAX_PLAYERS;p++)
  {
    if(IsPlayerConnected(p))
    {
      if(GetPlayerVirtualWorld(p) == virtualworld)
      {
        PlayersInWorld++;
      }
    }
  }
  return PlayersInWorld;
}
Funkcija su kuria gauname žaidėjų skaičių pasirinktame virtualiame pasaulyje. Pavyzdys:

Code:
new Zaidejai, Stringas[64];
Zaidejai = GetPlayersInWorld(0);
format(Stringas, 64, "Pasaulyje: %d žaidėjų.", Zaidejai);
SendClientMessageToAll(spalva, Stringas);

__________________________________________________ __________________________________________________ ________________


[anchor=IBN]IsBotName(playerid, Name[])

Code:
stock IsBotName(playerid, Name[])
{
  new Bot[MAX_PLAYER_NAME];
  GetPlayerName(playerid, Bot, sizeof(Bot));
  if(!strcmp(Bot, Name, true)) return 1;
  return 0;
}
Su funkcija galima patikrinti konkretų NPC ( boto ) vardą. Pavyzdys:

Code:
public OnPlayerSpawn(playerid)
{
  if(IsPlayerNPC(playerid)) //Jei žaidėjas yra NPC
  {
    if(IsBotName(playerid, "Doctor")) //Jei jo vardas "Doctor"
    {
      SetPlayerSkin(playerid, 70); //Nustatome išvaizdą į daktaro
    }
    return 1;
  }
  return 1;
}
Blantas is offline  
Old 22/11/2009, 08:38 PM   #3
Dreftas
Gangsta
 
Join Date: May 2008
Posts: 643
Reputation: 0
Default Re: Naudingos funkcijos

Quote:
Originally Posted by Blantas ;P*~
IsBotName(playerid, Name[])

Code:
stock IsBotName(playerid, Name[])
{
  new Bot[MAX_PLAYER_NAME];
  GetPlayerName(playerid, Bot, sizeof(Bot));
  if(!strcmp(Bot, Name, true)) return 1;
  return 0;
}
Su funkcija galima patikrinti konkretų NPC ( boto ) vardą. Pavyzdys:
Kodėl būtent boto? Ji puikiai tiktų tikrinant žaidėjo vardą, o jei būtent boto nori, tuomet funkcija turėtų būti tokia:
Code:
stock IsBotName(botid, name[]) {
	if(!IsPlayerNPC(botid)) return false;
	new BotName[MAX_PLAYER_NAME];
	GetPlayerName(botid, BotName, MAX_PLAYER_NAME);
	if(strcmp(BotName, name, true)) return false;
	return true;
}
Dreftas is offline  
Old 22/11/2009, 08:57 PM   #4
Dreftas
Gangsta
 
Join Date: May 2008
Posts: 643
Reputation: 0
Default Re: Naudingos funkcijos

GetName(playerid);

Funkcija kuri iškarto grąžina(return) žaidėjo vardą, be jokio papildomo string'o, kaip kad GetPlayerName.

[anchor=getName]
Code:
stock GetName(playerid) {
	new GName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, GName, MAX_PLAYER_NAME);
	return GName;
}
Pavyzdys:
Code:
new str[64];
format(str,sizeof(str),"Tavo vardas yra %s",GetName(playerid));
SendClientMessage(playerid, 0x804000FF, str);
Taip pat galima pasidaryti ir GetPlayerIp funkciją.

--------------------------------------------------------------
[anchor=Sppt]
SetPlayerPosTimes(playerid, x, y, z, a, sekundes)

Funkcija kuri nustatytą sekundžių kiekį laiko žaidėją nurodytoje pozicijoje, taip pat pridėtas ir Angle nustatymas.
Funkcija:
Code:
new SpptTimer[MAX_PLAYERS], SpptTicks[MAX_PLAYERS];
stock SetPlayerPosTimes(playerid, Float:x, Float:y, Float:z, Float:a, sekundes) {
	KillTimer(SpptTimer[playerid]);
	SpptTicks[playerid] = 0;
	SpptTimer[playerid] = SetTimerEx("SpptFunc", 500, true, "dffffd", playerid, x, y, z, a, sekundes);
	SetPlayerPos(playerid, x, y, z);
	SetPlayerFacingAngle(playerid, a);
	return 1;
}
forward SpptFunc(playerid, Float:x, Float:y, Float:z, Float:a, sekundes);
public SpptFunc(playerid, Float:x, Float:y, Float:z, Float:a, sekundes) {
	SpptTicks[playerid]++;
	if(SpptTicks >= sekundes * 2) {
		KillTimer(SpptTimer[playerid]);
		SpptTicks[playerid] = 0;
	}
	SetPlayerPos(playerid, x, y, z);
	SetPlayerFacingAngle(playerid, a);
	return 1;
}
Pavyzdžio nerašau, susigalvokit patys
P.S. Šita netestuota
--------------------------------------------------------------
Dreftas is offline  
Old 22/11/2009, 09:01 PM   #5
Blantas
Huge Clucker
 
Blantas's Avatar
 
Join Date: Feb 2009
Posts: 340
Reputation: 8
Default Re: Naudingos funkcijos

[anchor=GSV]GetServerVehicles()

Code:
stock GetServerVehicles()
{
  new TotalVehicles = 0;
  for(new u=0;u<MAX_VEHICLES;u++)
	{
	  if(GetVehicleModel(u) >= 400 && GetVehicleModel(u) <= 611)
	  {
	    TotalVehicles++;
	  }
	}
	return TotalVehicles;
}
Funkcija, su kuria suskaičiuosite tranporto priemonių serveryje kiekį. Pavyzdys:

Code:
new Stringas[64], Masinos;
Masinos = GetServerVehicles();
format(Stringas, 64, "Serveryje yra %d transporto priemonių.", Masinos);
SendClientMessageToAll(spalva, Stringas);

__________________________________________________ __________________________________________________ ________________

[anchor=RAV]RespawnAllVehicles()

Code:
stock RespawnAllVehicles()
{
  new VehLimit = GetServerVehicles();
  VehLimit++;
  for(new vhs = 0; vhs < VehLimit; vhs++)
  {
    SetVehicleToRespawn(vhs);
  }
}
Funkcija nukelia visas serverio mašinas į pradinę poziciją. Būtina turėti prieš tai minėtą funkciją GetServerVehicles.
Blantas is offline  
Old 22/11/2009, 09:13 PM   #6
Dreftas
Gangsta
 
Join Date: May 2008
Posts: 643
Reputation: 0
Default Re: Naudingos funkcijos

Quote:
Originally Posted by Blantas ;P*~
Code:
stock RespawnAllVehicles()
{
  new VehLimit = GetServerVehicles();
  VehLimit++;
  for(new vhs = 0; vhs < VehLimit; vhs++)
  {
    SetVehicleToRespawn(vhs);
  }
}
Stupid. Use this:
[anchor=rsav]
Code:
stock RespawnAllVehicles() {
	for(new vhs = 0; vhs < MAX_VEHICLES; vhs++) {
		SetVehicleToRespawn(vhs);
  }
}
Paaiškinsiu kiek galima papraščiau, kodėl mano funkcija geresnė.
Blanto skripte ciklas for() vyksta MAX_VEHICLES kartų, sa-mp 0.3 tai yra 2000 kartų ties funkcija GetServerVehicles().
Paskui funkcijoje RespawnAllVehicles() blanto skripto ciklas for() vyksta dar tiek kartų, kiek yra GetServerVehicles().
Rezultatas: Jeigu žaidėjas turi 2000 mašinų, blanto funkcijos ciklas for() iš viso vyks 4000 kartų. Su mano funkcija ciklas for() iš viso vyks 2000 kartų. Dreft owned
Dreftas is offline  
Old 23/11/2009, 02:02 PM   #7
arnutisz
Huge Clucker
 
Join Date: Nov 2007
Posts: 388
Reputation: 0
Default Re: Naudingos funkcijos

Quote:
Originally Posted by Dreft
GetName(playerid);

Funkcija kuri iškarto grąžina(return) žaidėjo vardą, be jokio papildomo string'o, kaip kad GetPlayerName.

Code:
stock GetName(playerid) {
	new GName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, GName, MAX_PLAYER_NAME);
	return GName;
}
Pavyzdys:
Code:
new str[64];
format(str,sizeof(str),"Tavo vardas yra %s",GetName(playerid));
SendClientMessage(playerid, 0x804000FF, str);
Taip pat galima pasidaryti ir GetPlayerIp funkciją.

--------------------------------------------------------------
SetPlayerPosTimes(playerid, x, y, z, a, sekundes)

Funkcija kuri nustatytą sekundžių kiekį laiko žaidėją nurodytoje pozicijoje, taip pat pridėtas ir Angle nustatymas.
Funkcija:
Code:
new SpptTimer[MAX_PLAYERS], SpptTicks[MAX_PLAYERS];
stock SetPlayerPosTimes(playerid, Float:x, Float:y, Float:z, Float:a, sekundes) {
	KillTimer(SpptTimer[playerid]);
	SpptTicks[playerid] = 0;
	SpptTimer[playerid] = SetTimerEx("SpptFunc", 500, true, "dffffd", playerid, x, y, z, a, sekundes);
	SetPlayerPos(playerid, x, y, z);
	SetPlayerFacingAngle(playerid, a);
	return 1;
}
forward SpptFunc(playerid, Float:x, Float:y, Float:z, Float:a, sekundes);
public SpptFunc(playerid, Float:x, Float:y, Float:z, Float:a, sekundes) {
	SpptTicks[playerid]++;
	if(SpptTicks >= sekundes * 2) {
		KillTimer(SpptTimer[playerid]);
		SpptTicks[playerid] = 0;
	}
	SetPlayerPos(playerid, x, y, z);
	SetPlayerFacingAngle(playerid, a);
	return 1;
}
Pavyzdžio nerašau, susigalvokit patys
P.S. Šita netestuota
--------------------------------------------------------------
Šiaip tai galėtum patikrint funkciją prieš dėdamas ją į šią temą, kam klaidint žmones?
Beja, jei teisingai supratau ką tavo antra funkcija daro, tai kam reikia šitiek šūdo, jei užtenka "užšaldyt" ir "atšildyt" žaidėją? . Dreft owned .
arnutisz is offline  
Old 23/11/2009, 02:06 PM   #8
Dreftas
Gangsta
 
Join Date: May 2008
Posts: 643
Reputation: 0
Default Re: Naudingos funkcijos

Quote:
Originally Posted by Scott[LT
]
Šiaip tai galėtum patikrint funkciją prieš dėdamas ją į šią temą, kam klaidint žmones?
Beja, jei teisingai supratau ką tavo antra funkcija daro, tai kam reikia šitiek šūdo, jei užtenka "užšaldyt" ir "atšildyt" žaidėją? . Dreft owned .
Šiaip jau parašiau, kad funkcija netestuota jei ponas nemokat skaityt >.>
O man patinka tas šūdas visas, negu užšaldymas >.>
Beje nei vienos iš čia įdėtos mano ar kitų funkcijų nenaudoju..
Dreft ownz
Dreftas is offline  
Old 23/11/2009, 02:23 PM   #9
arnutisz
Huge Clucker
 
Join Date: Nov 2007
Posts: 388
Reputation: 0
Default Re: Naudingos funkcijos

Tai jo, kišk visą tą šūdą į serverį ir serveris tikrai nelagins
arnutisz is offline  
Old 23/11/2009, 02:28 PM   #10
Dreftas
Gangsta
 
Join Date: May 2008
Posts: 643
Reputation: 0
Default Re: Naudingos funkcijos

Quote:
Originally Posted by Scott[LT
]
Tai jo, kišk visą tą šūdą į serverį ir serveris tikrai nelagins
Jo, panašių dalykų yra ir pas mane, lago nejaučiu. =]
Dreftas is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Klausimas dėl 3DTextLabel funkcijos Montis123 Archive 10 11/07/2010 08:07 PM
patiasykit eror ir reiktu funkcijos Player63 Archive 1 05/04/2010 02:50 PM


All times are GMT. The time now is 02:31 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.