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

Salta al contenuto

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

[ARG] Funzioni e Comandi Utili

#241 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 18 agosto 2010 - 19:17

Visualizza Messaggi_All3Xz_, il 18 agosto 2010 - 18:50 ha detto:

IsPlayerInClan(playerid,clan[]);
non l'ho testato ma dovrebbe andare... :)
stock IsPlayerInClan(playerid,clan[])
{
new nome[24];
GetPlayerName(playerid,nome,sizeof(nome));
return strfind(nome,clan,true)==0 ? 1:0;
}

Qui l'operatore ternario è inutile :/
Avresti potuto fare semplicemente:
stock IsPlayerInClan(playerid,clan[])
{
    new nome[24];
    GetPlayerName(playerid,nome,sizeof(nome));
    return (!strfind(nome,clan,true));
}

0

#242 L'utente è offline   _All3Xz_ 

  • Criminale
  • Gruppo: Utenti
  • Messaggi: 1512
  • Iscritto il: 05/01/09
  • GTA Preferito:GTA: San Andreas

Inviato il 18 agosto 2010 - 20:25

si ma dopo ritorna 0 se trova la tag... cioè dopo è anche 'difficile' da usare
My Works
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
0

#243 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 19 agosto 2010 - 08:42

Veramente ritorna 1 se trova la tag e 0 se non la trova :/
0

#244 L'utente è offline   Peppinux aka Peppe_Stasu 

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

Inviato il 19 agosto 2010 - 09:16

@Skiaffo: Grazie anche se era una cosa facilissima non ci ero arrivato :lol:
0

#245 L'utente è offline   Skiaffo 

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

Inviato il 19 agosto 2010 - 11:42

Gli operatori sono inutili :sese: returna comunque 1 se trova e 0 se non trova
"Audentes Fortuna iuvat"
0

#246 L'utente è offline   Lama 

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

Inviato il 19 agosto 2010 - 11:44

Visualizza MessaggiSkiaffo, il 19 agosto 2010 - 12:42 ha detto:

Gli operatori sono inutili :sese: returna comunque 1 se trova e 0 se non trova


returna 0 o più se lo trova, e -1 se non lo trova
0

#247 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 19 agosto 2010 - 12:22

Visualizza MessaggiLama, il 19 agosto 2010 - 12:44 ha detto:

Visualizza MessaggiSkiaffo, il 19 agosto 2010 - 12:42 ha detto:

Gli operatori sono inutili :sese: returna comunque 1 se trova e 0 se non trova


returna 0 o più se lo trova, e -1 se non lo trova

Come ho fatto io no.
0

#248 L'utente è offline   Skiaffo 

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

Inviato il 19 agosto 2010 - 13:03

Visualizza MessaggiLama, il 19 agosto 2010 - 12:44 ha detto:

Visualizza MessaggiSkiaffo, il 19 agosto 2010 - 12:42 ha detto:

Gli operatori sono inutili :sese: returna comunque 1 se trova e 0 se non trova


returna 0 o più se lo trova, e -1 se non lo trova


In generale sì, returna l'offset del primo carattere che trova corrispondente (in questo caso 0 quindi) e -1 se non trova, ma non nel caso del codice di peppe
"Audentes Fortuna iuvat"
0

#249 L'utente è offline   Peppinux aka Peppe_Stasu 

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

Inviato il 23 agosto 2010 - 10:44

GivePlayerWeapons(playerid, weaponid1 = 0, ammo1 = 0, weaponid2 = 0, ammo2 = 0, weaponid3 = 0, ammo3 = 0, weaponid4 = 0, ammo4 = 0, weaponid5 = 0, ammo5 = 0, weaponid6 = 0, ammo6 = 0, weaponid7 = 0, ammo7 = 0, weaponid8 = 0, ammo8 = 0, weaponid9 = 0, ammo9 = 0, weaponid10 = 0, ammo10 = 0, weaponid11 = 0, ammo11 = 0, weaponid12 = 0, ammo12 = 0)//By peppinux aka Peppe_Stasu
{
	GivePlayerWeapon(playerid,weaponid1,ammo1);
	GivePlayerWeapon(playerid,weaponid2,ammo2);
	GivePlayerWeapon(playerid,weaponid3,ammo3);
	GivePlayerWeapon(playerid,weaponid4,ammo4);
	GivePlayerWeapon(playerid,weaponid5,ammo5);
	GivePlayerWeapon(playerid,weaponid6,ammo6);
	GivePlayerWeapon(playerid,weaponid7,ammo7);
	GivePlayerWeapon(playerid,weaponid8,ammo8);
	GivePlayerWeapon(playerid,weaponid9,ammo9);
	GivePlayerWeapon(playerid,weaponid10,ammo10);
	GivePlayerWeapon(playerid,weaponid11,ammo11);
	GivePlayerWeapon(playerid,weaponid12,ammo12);
}

La funzione dice tutto... Se non la capite dite pure xD

Messaggio modificato da peppinux aka Peppe_Stasu il 23 agosto 2010 - 10:44

0

#250 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 23 agosto 2010 - 10:53

Visualizza Messaggipeppinux aka Peppe_Stasu, il 23 agosto 2010 - 11:44 ha detto:

GivePlayerWeapons(playerid, weaponid1 = 0, ammo1 = 0, weaponid2 = 0, ammo2 = 0, weaponid3 = 0, ammo3 = 0, weaponid4 = 0, ammo4 = 0, weaponid5 = 0, ammo5 = 0, weaponid6 = 0, ammo6 = 0, weaponid7 = 0, ammo7 = 0, weaponid8 = 0, ammo8 = 0, weaponid9 = 0, ammo9 = 0, weaponid10 = 0, ammo10 = 0, weaponid11 = 0, ammo11 = 0, weaponid12 = 0, ammo12 = 0)//By peppinux aka Peppe_Stasu
{
	GivePlayerWeapon(playerid,weaponid1,ammo1);
	GivePlayerWeapon(playerid,weaponid2,ammo2);
	GivePlayerWeapon(playerid,weaponid3,ammo3);
	GivePlayerWeapon(playerid,weaponid4,ammo4);
	GivePlayerWeapon(playerid,weaponid5,ammo5);
	GivePlayerWeapon(playerid,weaponid6,ammo6);
	GivePlayerWeapon(playerid,weaponid7,ammo7);
	GivePlayerWeapon(playerid,weaponid8,ammo8);
	GivePlayerWeapon(playerid,weaponid9,ammo9);
	GivePlayerWeapon(playerid,weaponid10,ammo10);
	GivePlayerWeapon(playerid,weaponid11,ammo11);
	GivePlayerWeapon(playerid,weaponid12,ammo12);
}

La funzione dice tutto... Se non la capite dite pure xD


Così è molto inefficiente, esegue 13 volte la funzione GivePlayerWeapon anche se si vogliono settare meno armi .-.

Io l'avrei fatta così:
GivePlayerWeapons(playerid, ...)
{
	new
		start = 1,
		num = numargs();
	for(new i = start; i < num; i++)
	{
		GivePlayerWeapon(playerid, getarg(i), getarg(i++));
	}
	return 1;
}

0

#251 L'utente è offline   Peppinux aka Peppe_Stasu 

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

Inviato il 23 agosto 2010 - 11:03

xD Il tuo script infatti è molto complicato e non ci ho capito molto comunque hai ragione ma io l'ho saputo fare in quel modo e l'ho pubblicato xD...
0

#252 L'utente è offline   Stage6** 

  • Cittadino Integerrimo
  • Gruppo: Banned
  • Messaggi: 7
  • Iscritto il: 24/08/10
  • GTA Preferito:GTA: Vice City

Inviato il 24 agosto 2010 - 18:42

Visualizza Messaggi_All3Xz_, il 13 agosto 2010 - 19:45 ha detto:

FORALLE (nientaltro che una ridefinizione del ciclo for,creata solo perchè più veloce e più breve da scrivere)
#define foralle(%1,%2) for(new %1=0; %1<%2; %1++)

TEST:
new primofori = GetTickCount();
 for(new i=0; i<MAX_PLAYERS;i++)
 {
		print("\n");
	}
	new primoforf = GetTickCount();
	new secondofori = GetTickCount();
	foralle(i,MAX_PLAYERS)
	{
 print("\n");
	}
	new secondoforf = GetTickCount();
	printf("\n\n\n\n\n");
	printf(" RISULTATI ");
	printf(" CICLO NORMALE %dms",primoforf-primofori);
	printf(" CICLO ALLE %dms",secondoforf-secondofori);


testato sul mio pc:
CICLO NORMALE 95ms
CICLO ALLE 25ms


Che nabbata, lo script inizia il timer, esegue il for normale e il timer non stacca, esegue il for tuo e segna i risultati del tuo che è partito dopo e logicamente e dimeno, quindi per avere il risultato preciso si dovrebbe fare:

new primofori = GetTickCount();
for(new i=0; i<MAX_PLAYERS;i++)
{
print("\n");
}
new primoforf = GetTickCount();
printf(" CICLO NORMALE %dms",primoforf-primofori);
new secondofori = GetTickCount();
foralle(i,MAX_PLAYERS)
{
print("\n");
}
new secondoforf = GetTickCount();
printf(" CICLO ALLE %dms",secondoforf-secondofori);
Fab10, puoi anche evitare di reiscriverti. Forse non ti è chiaro che ormai sei bannato da questa community, non ti devi più reiscrivere, perchè tanto non hai possibilità di non essere riconosciuto.
0

#253 L'utente è offline   _All3Xz_ 

  • Criminale
  • Gruppo: Utenti
  • Messaggi: 1512
  • Iscritto il: 05/01/09
  • GTA Preferito:GTA: San Andreas

Inviato il 24 agosto 2010 - 22:34

Vabbè, l'ho creato per abbreviare. Tutte le volte scrivere quella formula è lungo. Comunque "nabbata" te la puoi risparmiare.
My Works
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
0

#254 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 26 agosto 2010 - 10:09

Visualizza Messaggi_All3Xz_, il 24 agosto 2010 - 23:34 ha detto:

Vabbè, l'ho creato per abbreviare. Tutte le volte scrivere quella formula è lungo. Comunque "nabbata" te la puoi risparmiare.

Molto meglio usare il foreach, che ha un codice più breve e più veloce o.ò

Visualizza MessaggiPeppe951, il 08 marzo 2010 - 19:32 ha detto:

In cima:
#define SendClientMessage(%1,%2,%3,%4);  format(string, 128, %3, %4); SendClientMessage(%1, %2, string);
#define SendClientMessageToAll(%1,%2,%3);  format(string, 128, %2, %3); SendClientMessageToAll(%1, string);


Quando scrivete
SendClientMessage(playerid, colore, "testo");
oppure
SendClientMessageToAll(colore, "testo");
non cambia niente

però con questo define potete saltare il passaggio in cui scrivete
format(string, eccetera);
per inviare messaggi che cambiano in base alle variabili e quindi potete scrivere ad esempio
new string[128];
SendClientMessage(playerid, 0xFFFFFFFF, "OMG %d %s %d", 1, "asd", 2);
Che diciamo che vi fa risparmiare tempo ed è più semplice

ATTENZIONE: prima di questa funzione bisogna creare una stringa di nome string con
new string[128];
se l'avete già creata in quel punto non ricreatela


Funzione migliorata

new 
    SFM_tmpString[128];

#define SendClientMessage(%1,%2,%3,%4) \
format(SFM_tmpString, 128, %3, %4); \
SendClientMessage(%1, %2, SFM_tmpString)

#define SendClientMessageToAll(%1,%2,%3) \
format(SFM_tmpString, 128, %2, %3); \
SendClientMessageToAll(%1, SFM_tmpString)


Ora non c'è bisogno di creare una stringa prima di usare questa funzione, ne viene creata una globale automaticamente.

Testato e funzionante ;)
0

#255 L'utente è offline   .ReVo^ 

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

Inviato il 26 agosto 2010 - 10:31

Peppe anche con la tua vecchia versione si poteva fare infatti io definivo la variabile in cima in modo da non definirla sempre ;).
Immagine Postata
0

#256 L'utente è offline   Peppe951 

  • Tirapiedi
  • Gruppo: Utenti
  • Messaggi: 899
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 26 agosto 2010 - 10:55

Visualizza Messaggi.ReVo^, il 26 agosto 2010 - 11:31 ha detto:

Peppe anche con la tua vecchia versione si poteva fare infatti io definivo la variabile in cima in modo da non definirla sempre ;).

Si lo so ma così è già fatto per chi non saprebbe che si può definire in cima xD

Messaggio modificato da Peppe951 il 26 agosto 2010 - 10:56

0

#257 L'utente è offline   LaxC 

  • Delinquente
  • Gruppo: Utenti
  • Messaggi: 505
  • Iscritto il: 10/10/09
  • ID PSN:highscorer49
  • ID Social Club:highscorer49
  • GTA Preferito:GTA V

Inviato il 28 agosto 2010 - 23:16

Ho provato a fare /colori con case, cioè setta i colori ad un player molto semplice, dovrebbe fungere.

if(strcmp(cmd, "/colori", true) == 0)
{
if (!strlen(cmdtext[8])) return SendClientMessage(playerid,0xEFEFF7AA,"[Error]Digita: /colore [1-7]");
switch (cmdtext[8])
{
case '1': SendClientMessage(playerid, 0xFFFFFFFF, "[HINT:]/rosso /blu /giallo /verde /bianco /nero");
case '2': SetPlayerColor(playerid, 0xFF0000FF);
case '3': SetPlayerColor(playerid, 0x33AA33AA);
case '4': SetPlayerColor(playerid, 0x0000FFFF);
case '5': SetPlayerColor(playerid, 0xFFFF00FF);
case '6': SetPlayerColor(playerid, 0x000000FF);
case '7': SetPlayerColor(playerid, 0xFFFFFFFF);
default: SendClientMessage(playerid,0xEFEFF7AA,"[Error]Digita: /colore [1-7]");
}
return 1;

Messaggio modificato da LaxC il 28 agosto 2010 - 23:17

0

#258 L'utente è offline   _All3Xz_ 

  • Criminale
  • Gruppo: Utenti
  • Messaggi: 1512
  • Iscritto il: 05/01/09
  • GTA Preferito:GTA: San Andreas

Inviato il 29 agosto 2010 - 14:12

SearchAdvertise by me, cerca in una stringa se uno spamma un ip di un server

ServerAdvertise(string[])
{
	new lol = 0;
        for(new i=0; i<=strlen(string);i++)
	{
	    if(string[i] == '.') lol++;
		if(lol == 3 && string[i] == ':')
		{
		    print("TROVATO ADVERTISE");
		    print(string);
		    return 1;
		}
	}
	return 0;
}

semplice uso:
OnPlayerText(playerid,text[])
{
if(ServerAdvertise(text))
{
return 0;
}
return 1;
}

Testato e funziona.
My Works
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
0

#259 L'utente è offline   Peppinux aka Peppe_Stasu 

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

Inviato il 29 agosto 2010 - 16:27

Utile ma ti consiglio di aggiungere anche se la stringa è numerica perchè se un players scrive:"Ciao. Sonouno scripter. Ecco cosa ho scriptato: Nome Gamemode 1 eccetera" viene riconosciuto xD
0

#260 L'utente è offline   .ReVo^ 

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

Inviato il 29 agosto 2010 - 18:17

Dopo 3 punti controlla la : e lo blocca quindi non dovrebbe buggare.
if(lol == 3 && string[i] == ':')
Immagine Postata
0

  • (18 Pagine)
  • +
  • « Primo
  • 11
  • 12
  • 13
  • 14
  • 15
  • 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