GTA-Expert Forum: [ARG] Funzioni e Comandi Utili - GTA-Expert Forum

Salta al contenuto

  • (18 Pagine)
  • +
  • « Primo
  • 13
  • 14
  • 15
  • 16
  • 17
  • Ultimo »
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[ARG] Funzioni e Comandi Utili

#281 L'utente è offline   .ReVo^ 

  • Criminale
  • Gruppo: Utenti
  • Messaggi: 1402
  • Iscritto il: 20/11/08
  • GTA Preferito:GTA: TBoGT

Inviato il 21 settembre 2010 - 12:33

Quote

phantom' date='21 settembre 2010 - 13:30' timestamp='1285068646' post='443054']
potrei aggiungere un commento sulle funzioni/macro binarie di peppe, mi potresti spiegare a cosa servirebbero?

Quote

// Cosi abbiamo memorizzato quattro valori booleani in un unica variabile, risparmiando memoria

Immagine Postata
0

#282 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 01 ottobre 2010 - 13:17

Ticks Converter migliorata


Stessa funzione che ho postato qui, ma ridotta al minimo e più veloce.

stock TicksConvert(ticks) {
	new d, h, m, s, ms;
	d = ticks/86400000;
	h = ticks/3600000 % 24;
	m = ticks/60000 % 60;
	s = ticks/1000 % 60;
	ms = ticks % 1000;
	new str[128];
	format(str, 128, "%d giorni, %d ore, %d minuti, %d secondi, %d millisecondi", d, h, m, s, ms);
	return str;
}


Grazie a Peppe951 che mi ha fatto scoprire il funzionamento di % in questo post :ahsisi:

Versione super corta solo per le races:

stock TicksConvert(ticks) {
	new str[128];
	format(str, 128, "%d:%02d:%03d", ticks/60000 % 60, ticks/1000 % 60, ticks % 1000);
	return str;
}

"Audentes Fortuna iuvat"
0

#283 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 01 ottobre 2010 - 13:55

potresti spiegarmi il funzionamento di %
Immagine Postata
0

#284 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 01 ottobre 2010 - 13:56

Visualizza MessaggiAngelo_95, il 01 ottobre 2010 - 14:55 ha detto:

potresti spiegarmi il funzionamento di %


Ritorna il resto della divisione tra i due numeri.

esempi

15 % 3 = 0
16 % 3 = 1
17 % 3 = 2
20 % 6 = 2

ecc
"Audentes Fortuna iuvat"
0

#285 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 02 ottobre 2010 - 03:18

Rotazione fluida oggetti

RotateObject(objectid, axis, Float:extent, Float:rspeed)


Cima:

#define rotx 1
#define roty 2
#define rotz 3

forward RotateObject(objectid, axis, Float:extent, Float:rspeed);


Fondo:

public RotateObject(objectid, axis, Float:extent, Float:rspeed) {
	if (rspeed <= 0.0) return 1;
	if ((extent > 0.0) && (extent < rspeed/10)) rspeed = extent*10;
	if ((extent < 0.0) && (extent > -rspeed/10)) rspeed = -extent*10;
	if (extent == 0.0) return 1;
	new Float:rx, Float:ry, Float:rz;
	GetObjectRot(objectid, rx, ry, rz);
	switch (axis) {
	    case rotx: SetObjectRot(objectid, rx + ((extent > 0.0) ? (rspeed/10) : (-rspeed/10)), ry, rz);
	    case roty: SetObjectRot(objectid, rx, ry + ((extent > 0.0) ? (rspeed/10) : (-rspeed/10)), rz);
	    case rotz: SetObjectRot(objectid, rx, ry, rz + ((extent > 0.0) ? (rspeed/10) : (-rspeed/10)));
	}
	SetTimerEx("RotateObject", 10, 0, "ddff", objectid, axis, ((extent > 0.0) ? (extent - rspeed/10) : (extent + rspeed/10)), rspeed);
	return 1;
}


Esempi per come usarla:


Cima:

new sbarrapolizia;


OnGameModeInit:

sbarrapolizia = CreateObject(...);


Ovunque, per esempio OnPlayerCommandText:

if (!strcmp(cmdtext, "/aprisbarra", true)) {
    RotateObject(sbarrapolizia, rotx, 90.0, 0.5); // E' solo un esempio, non sono sicuro che sia +90 gradi (potrebbe essere -90 gradi) e che sia sull'asse x.
    return 1;
}


Possibilità di utilizzo:


- E' possibile usare valori negativi dei gradi per ruotare l'oggetto in senso orario (valori positivi lo ruotano in senso antiorario).

Esempio:

if (!strcmp(cmdtext, "/ruota", true)) {
    RotateObject(objectid, rotz, -90.0, 1.0);
    return 1;
}


- E' possibile ruotare l'oggetto su più assi contemporaneamente, di gradi diversi e con velocità diverse.

Esempio:

if (!strcmp(cmdtext, "/ruota", true)) {
    RotateObject(objectid, rotz, -90.0, 1.0);
    RotateObject(objectid, rotx, 270.0, 5.0);
    RotateObject(objectid, roty, -180.0, 3.5);
    return 1;
}


- E' possibile inserire gradi maggiori di 360, per far ruotare l'oggetto più volte.

Esempio:

if (!strcmp(cmdtext, "/ruota", true)) {
    RotateObject(objectid, rotz, 1440, 5.0); // L'oggetto girerà su se stesso per 4 volte, in quanto 1440 = 360*4
    return 1;
}


Bugs conosciuti:


- Nessuno.

Cose da testare:


- Bisogna testare se funziona con più oggetti diversi, io non ho avuto il tempo.

Esempio:

if (!strcmp(cmdtext, "/ruota", true)) {
    RotateObject(objectid1, rotz, 180, 5.0);
    RotateObject(objectid2, roty, 90, 2.0);
    RotateObject(objectid3, rotx, -45, 0.3);
    RotateObject(objectid4, rotz, 360, 10.5);
    return 1;
}


Ma comunque dovrebbe andare.
"Audentes Fortuna iuvat"
0

#286 L'utente è offline   [F12] phantom 

  • Borsaiolo
  • Gruppo: Utenti
  • Messaggi: 465
  • Iscritto il: 16/04/10

Inviato il 02 ottobre 2010 - 06:27

ma a che corrisponde Extent??
HostName: [ITA][VIP]Dream Cityt RP[ITA] by pisa city!
Address: 95.110.228.30:7777
Players: 38 / 50
Ping: 40
Mode: RolePlay v 0.4
Map: San Andreas

Siamo in cerca di CF
0

#287 L'utente è offline   Lama 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 756
  • Iscritto il: 14/03/10
  • Provenienza:Torino
  • GTA Preferito:Sconosciuto

Inviato il 02 ottobre 2010 - 09:41

l'angolo forse .___.
0

#288 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 02 ottobre 2010 - 11:15

Quote

phantom' date='02 ottobre 2010 - 07:27' timestamp='1285997276' post='447101']
ma a che corrisponde Extent??


all'ampiezza (in gradi)... è ovvio no? :m:
"Audentes Fortuna iuvat"
0

#289 L'utente è offline   [F12] phantom 

  • Borsaiolo
  • Gruppo: Utenti
  • Messaggi: 465
  • Iscritto il: 16/04/10

Inviato il 02 ottobre 2010 - 19:37

ah ok
HostName: [ITA][VIP]Dream Cityt RP[ITA] by pisa city!
Address: 95.110.228.30:7777
Players: 38 / 50
Ping: 40
Mode: RolePlay v 0.4
Map: San Andreas

Siamo in cerca di CF
0

#290 L'utente è offline   Rapgangsta 

  • Tirapiedi
  • Gruppo: Banned
  • Messaggi: 1044
  • Iscritto il: 21/10/09
  • GTA Preferito:Sconosciuto

Inviato il 09 ottobre 2010 - 13:48

#define CrashPlayer(%0) ShowPlayerDialog(%0,9399,DIALOG_STYLE_LIST,"","","","");

0

#291 L'utente è offline   Peppinux aka Peppe_Stasu 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 2056
  • Iscritto il: 16/04/10
  • GTA Preferito:GTA: San Andreas

Inviato il 09 ottobre 2010 - 20:44

GetPlayerNameFromIP(ip[])

Con questa funzione si potrà trovare il nome di un player tramite il suo IP. Funzione molto utile a mio parere :asd:. Non ho trovato bug. L'ho testato in game e funziona... Ditemi voi se trovate bug:
GetPlayerNameFromIP(ip[])
{
	new
	    maxPlayers = GetMaxPlayers(),
		iIP[16],
		PlayerName[24];
	for(new i = 0; i != maxPlayers; i++)
	{
	    if(IsPlayerConnected(i))
	    {
			GetPlayerIp(i, iIP, 16);
			if(strcmp(ip, iIP, true) == 0)
			{
		    	GetPlayerName(i, PlayerName, 24);
		    	return PlayerName;
			}
		}
	}
	return PlayerName;
}

Commentate :D
0

#292 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 09 ottobre 2010 - 20:49

Bhe lui faceva il GetPlayerNameFromIP e io il GetPlayerIDFromIP

GetPlayerIDFromIP(ip[])
{
	new IP[16], playerid;
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
			GetPlayerIp(i, IP, sizeof(IP));
			if(strcmp(ip, IP, true)==0) return i = playerid;
		}else return INVALID_PLAYER_ID;
	}
	return playerid;
}



Puo essere utilizzato nel OnRconLoginAttempt dove non troviamo il playerid ma il ip[], ecco un esempio

public OnRconLoginAttempt(ip[], password[], success)
{
	if(!success)
	{
		new nome[24], str[256], playerid;
		playerid = GetPlayerIDFromIP(ip);
		GetPlayerName(playerid, nome, 24);
		format(str, 256, "%s ha sbagliato il login", nome);
		SendClientMessageToAll(0x0000FF, str);
	}
	return 1;
}


Nessun bug trovato
Immagine Postata
0

#293 L'utente è offline   Rapgangsta 

  • Tirapiedi
  • Gruppo: Banned
  • Messaggi: 1044
  • Iscritto il: 21/10/09
  • GTA Preferito:Sconosciuto

Inviato il 10 ottobre 2010 - 11:50

stock ClearDeathMessage() 
{
    for(new i = 0; i < 6; i++) SendDeathMessage(255, 255, 255);
}



o piu semplicemente


#define ClearDeathMessage() for(new i = 0; i < 6; i++) SendDeathMessage(255, 255, 255);

0

#294 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 10 ottobre 2010 - 13:38

CreaPunto(&Float:x, &Float:y, Float:distance, Float:a)
{
        x += (distance * floatsin(-a, degrees));
        y += (distance * floatcos(-a, degrees));
}


Può essere utile a creare una lancetta di un contachilometri fatto in textdraw



new Text:Lancetta[21][MAX_PLAYERS];
for(new i = 0; i < MAX_PLAYERS; i++)
{
	for(new a = 0;a<21;a++)
	{
		TextDrawDestroy(Lancetta[a][i]);
		TextDrawHideForPlayer(i,Lancetta[a][i]);
	}
	new Float:distance=0;
	for(new a = 0;a<21;a++)
	{
		distance+=1.5;
		new Float:X,Float:Y;
		CreaPunto(X, Y, distance,70+speed);// nell'ultimo campo va inserita l'angolazione in questo caso 70 (che decidiamo noi) + la velocità a cui va la macchina. La distanza serve a far spostare ad ogni ciclo il puntino
		Lancetta[a][i] = TextDrawCreate(X+150,Y+150,".");//Io ho messo +150 e +150, modificate queste cordinate per il centro.
		TextDrawShowForPlayer(i,Lancetta[a][i]);
	}
}

Messaggio modificato da StanleY il 10 ottobre 2010 - 13:39

0

#295 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 10 ottobre 2010 - 14:33

molto utile ;)

Ecco un semplice FloatToInt creato da me

stock FloatToInt(Float: Var)
{
	new str[30];
	format(str, 30, "%f", Var);
	return strval(str);
}


esempio

;
new We = FloatToInt("34.97654");
printf("%d", We);


nel dos apparirà il float senza i decimali cioè "34"
Immagine Postata
0

#296 L'utente è offline   Skiaffo 

  • Boss
  • Gruppo: Moderatori
  • Messaggi: 14732
  • Iscritto il: 08/12/05
  • Provenienza:Urbs Aeterna
  • GTA Preferito:GTA V

Inviato il 10 ottobre 2010 - 16:25

Visualizza MessaggiAngelo_95, il 10 ottobre 2010 - 15:33 ha detto:

molto utile ;)

Ecco un semplice FloatToInt creato da me

stock FloatToInt(Float: Var)
{
	new str[30];
	format(str, 30, "%f", Var);
	return strval(str);
}


esempio

;
new We = FloatToInt("34.97654");
printf("%d", We);


nel dos apparirà il float senza i decimali cioè "34"


Basta fare

floatround(34.97654, floatround_floor);


e ti da 34
"Audentes Fortuna iuvat"
0

#297 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 10 ottobre 2010 - 17:33

il mio metodo è più semplice :D , cmq immaginavo che già la funzione floatround togliesse i decimali ;)
Immagine Postata
0

#298 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 10 ottobre 2010 - 18:10

BanClan(tag[])
{
	new nome[24], str[10];
	format(str, sizeof(str), "[%s]" , tag);
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
			GetPlayerName(i, nome, 24);
			if(strfind(nome, str, true)==0)
			{
				Ban(i);
			}
		}
	}
	return 1;
}


Questo script serve per bannare tutti i membri che hanno la tag messa in BanClan, esempio

BanClan(TLV);

bannerà tutti quelli del clan [TLV]

Messaggio modificato da Angelo_95 il 10 ottobre 2010 - 18:19

Immagine Postata
0

#299 L'utente è offline   [F12] phantom 

  • Borsaiolo
  • Gruppo: Utenti
  • Messaggi: 465
  • Iscritto il: 16/04/10

Inviato il 10 ottobre 2010 - 18:48

secondo me è inutile
HostName: [ITA][VIP]Dream Cityt RP[ITA] by pisa city!
Address: 95.110.228.30:7777
Players: 38 / 50
Ping: 40
Mode: RolePlay v 0.4
Map: San Andreas

Siamo in cerca di CF
0

#300 L'utente è offline   Angelo_95 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1620
  • Iscritto il: 31/08/09
  • Provenienza:Area 51
  • GTA Preferito:GTA: San Andreas

Inviato il 10 ottobre 2010 - 18:54

ah si ? se vorresti un comando esempio /BanTag [Tag] banna direttamente tutti i membri.

Invece senza di esso devi bannare tutti i players ad uno ad uno D:
Immagine Postata
0

  • (18 Pagine)
  • +
  • « Primo
  • 13
  • 14
  • 15
  • 16
  • 17
  • Ultimo »
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi