GTA-Expert Forum: [HELP]Teleport System - GTA-Expert Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[HELP]Teleport System

#1 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 25 settembre 2012 - 01:18

Ragazzi,su sa-mp forum ho trovato questo teleport system,solo che in game ha aluni bug! Es: se digito /goto 100 mi invia la richiesta a me ... e poi mi conflitta con alcuni dialog D: D:

Spoiler

Messaggio modificato da GianlucA_Ct il 25 settembre 2012 - 01:20

Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#2 L'utente  offline   Skiaffo 

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

Inviato il 25 settembre 2012 - 11:39

Chi ha scritto quel codice non aveva la minima idea di cosa stesse facendo. Ci sono talmente tanti errori e imprecisioni che mi converrebbe farlo da capo piuttosto di correggerlo.

Prova ad usare questo:

http://forum.sa-mp.c...ad.php?t=373065
"Possis nihil urbe Roma visere maius"
0

#3 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 25 settembre 2012 - 11:45

Questo l'ho visto,ma a me serviva quello li oppure uguale,ieri ho provato a farlo,risultato catastrofico
Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#4 L'utente  offline   Skiaffo 

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

Inviato il 25 settembre 2012 - 11:57

Le funzionalità sono praticamente identiche, il secondo che ti ho linkato ha anche funzioni in più. Cambiano solo i comandi... non ne trovo altri in giro, il che è strano, ma vabbe. Se mi dici esattamente le funzionalità che deve avere te ne faccio uno semplicissimo io. Devi descrivermi TUTTO però, non devi tralasciare nessun particolare.
"Possis nihil urbe Roma visere maius"
0

#5 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 25 settembre 2012 - 12:05

Allora,lì sopra in quello li di MavericK ci sono le seguenti funzioni:

Comando /nega che disabilita la possibilita di ricevere le opzioni di teletrasporto,rieseguendo il comando le riabilita;
Quando digiti /go [id/partofname] nella chat c'è scritto Inviata la richiesta di teletrasporto a %s,a questo punto arriverà la richiesta di goto al player con la possibilità di accettare o no,se seleziona no dovrebbe apparire la notifica al player con scritto: %s ha rifiutato la richiesta,ovviamente quì se la funzione nega è abilitata il player dovrebbe ricevere un sendclientmessage con scritto %s ha rifiutato la richiesta
Credo sia tutto,grazie mille,gentilissimo! (Come sempre ovviamente) :)

Messaggio modificato da GianlucA_Ct il 25 settembre 2012 - 12:06

Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#6 L'utente  offline   Skiaffo 

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

Inviato il 25 settembre 2012 - 13:19

Non ho modo di testarlo, ed è in fase di sviluppo alpha. Mettilo come filterscript nel tuo server e testalo coi tuoi amici, riportami qui tutti i bugs e li sistemo. Se i comandi /si e /no per accettare il teleport sono in conflitto con altri, cambiali. I dialog ho preferito non metterli, li trovo più scomodi, più complicati e più invasivi.

I comandi sono /nega per mettere on/off le richieste di teleport. Per fare richiesta di teleport /go [id o parte del nome], lo script filtra casi in cui l'id è il giocatore stesso, o è un giocatore non connesso. Poi /si o /no per accettare, il teleport funziona anche se il player che fa la richiesta è a bordo di un veicolo.

#include <a_samp>

#define GREEN 0x00FF00FF
#define RED 0xFF0000FF
#define CYAN 0x00FFFFFF

new teleoff[MAX_PLAYERS];
new teleplayer[MAX_PLAYERS];

public OnFilterScriptInit() {
	for (new i=0; i<MAX_PLAYERS; i++) {
	    if (IsPlayerConnected(i)) teleplayer[i] = -1;
	}
    return 1;
}

public OnFilterScriptExit() {
    return 1;
}

//================================== CONNECT =================================//

public OnPlayerConnect(playerid) {
	teleplayer[playerid] = -1;
	return 1;
}

public OnPlayerDisconnect(playerid) {
	teleplayer[playerid] = -1;
	return 1;
}

//=================================== CMDS ===================================//

public OnPlayerCommandText(playerid, cmdtext[]) {

	new cmd[256], idx;
	cmd = strtok(cmdtext, idx);
	
	if (!strcmp(cmdtext, "/nega", true)) {
	    if (!teleoff[playerid]) {
	        teleoff[playerid] = 1;
	        SendClientMessage(playerid, CYAN, "Hai disabilitato la possibilità di ricevere richieste di teletrasporto.");
	    } else {
	    	teleoff[playerid] = 0;
	    	SendClientMessage(playerid, CYAN, "Hai abilitato la possibilità di ricevere richieste di teletrasporto.");
	    }
	    return 1;
	}
	
	if (!strcmp(cmd, "/go", true)) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if (!strlen(tmp)) return SendClientMessage(playerid, CYAN, "Utilizzo: /go [playerid]");
		new pid = -1;
		if (IsNumeric(tmp)) {
		    pid = strval(tmp);
		} else {
		    for (new i=0; i<MAX_PLAYERS; i++) {
		        if (PartOfName(i, tmp)) {
		            pid = i;
		            break;
		        }
		    }
		}
		if (pid < 0) return SendClientMessage(playerid, CYAN, "ID non valido!");
  		if (pid == playerid) return SendClientMessage(playerid, CYAN, "Non puoi teleportarti da te stesso!");
  		if (!IsPlayerConnected(pid)) return SendClientMessage(playerid, CYAN, "Il giocatore con questo ID non è connesso!");
  		if (teleoff[pid]) return SendClientMessage(playerid, CYAN, "Questo giocatore ha disabilitato i teleport!");
    	new str[128];
    	format(str, 128, "%s chiede di potersi teleportare da te. Scrivi /si o /no.", GetName(playerid));
    	SendClientMessage(pid, CYAN, str);
    	teleplayer[pid] = playerid;
		return 1;
	}
	
	if (!strcmp(cmdtext, "/no", true)) {
	    if (teleplayer[playerid] == -1) return SendClientMessage(playerid, CYAN, "Non hai nessuna richiesta di teletrasporto attiva");
	    if (!IsPlayerConnected(teleplayer[playerid])) return SendClientMessage(playerid, CYAN, "Il giocatore che ha fatto richiesta non è più connesso");
	    new str[128];
	    format(str, 128, "Hai negato a %s di teleportarsi da te.", GetName(teleplayer[playerid]));
	    SendClientMessage(playerid, RED, str);
	    format(str, 128, "%s ha negato la tua richiesta di teletrasporto", GetName(playerid));
	    SendClientMessage(teleplayer[playerid], RED, str);
	    teleplayer[playerid] = -1;
	    return 1;
	}
	
	if (!strcmp(cmdtext, "/si", true)) {
	    if (teleplayer[playerid] == -1) return SendClientMessage(playerid, CYAN, "Non hai nessuna richiesta di teletrasporto attiva");
	    if (!IsPlayerConnected(teleplayer[playerid])) return SendClientMessage(playerid, CYAN, "Il giocatore che ha fatto richiesta non è più connesso");
	    new str[128], Float:x, Float:y, Float:z;
	    format(str, 128, "Hai accettato la richiesta di teletrasporto di %s", GetName(teleplayer[playerid]));
	    SendClientMessage(playerid, GREEN, str);
	    format(str, 128, "%s ha accettato la tua richiesta di teletrasporto", GetName(playerid));
	    SendClientMessage(teleplayer[playerid], GREEN, str);
		GetPlayerPos(playerid, x, y, z);
		if (!IsPlayerInAnyVehicle(teleplayer[playerid])) {
		    SetPlayerPos(teleplayer[playerid], x, y, z);
		} else {
			SetVehiclePos(GetPlayerVehicleID(teleplayer[playerid]), x + 2.0, y + 2.0, z);
		}
		teleplayer[playerid] = -1;
		return 1;
	}
	
	return 0;
}

//================================== STOCK ===================================//

stock GetName(playerid) {
	new name[24];
	GetPlayerName(playerid, name, 24);
	return name;
}

stock PartOfName(playerid, part[]) {
    new nome[24];
    GetPlayerName(playerid, nome, sizeof(nome));
    return (!strfind(nome, part, true));
}

IsNumeric(const string[]) {
	for (new i = 0, j = strlen(string); i < j; i++) {
 		if (string[i] > '9' || string[i] < '0') return 0;
   	}
    return 1;
}

//================================= STRTOK ===================================//

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}

"Possis nihil urbe Roma visere maius"
0

#7 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 25 settembre 2012 - 14:37

Si e no tramite dialog credi che non andava ?

Comunque,ora testo e ti faccio sapere :D
EDIT: 1° Bug,da solo in game digito /go 1 e mi dice che non mi posso teletrasportare da me stesso,dovrebbe dire player non connesso

2° Bug: se digito /si mi dice Hai accettato la richiesta di teletrasporto di [IFS]GianlucA_Ct
[IFS]GianlucA_Ct ha accettato la richiesta di teletrasporto

Messaggio modificato da GianlucA_Ct il 25 settembre 2012 - 14:52

Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#8 L'utente  offline   Skiaffo 

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

Inviato il 26 settembre 2012 - 10:03

Non comprendo come fosse possibile, dato che l'ho presa dall'uf.inc che sta sul wiki-samp e dato che era stata fatta da DracoBlue, ma IsNumeric era sbagliata :asd: ne ho fatta una corretta, ho aggiornato il codice. E poi ho fixato il bug 2. Inoltre ho messo una protezione nel caso qualcuno usi ID negativi o nel caso lo script non trovi un username che contiene quella parte del nome.

Ah, ti faccio notare che PartOfName non è propriamente corretto, è la parte iniziale dell'username che deve combaciare. Se per esempio qualcuno si chiama Topolino, se fai /go topo lo trova, se fai /go lino non lo trova. E così deve essere.
"Possis nihil urbe Roma visere maius"
0

#9 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 26 settembre 2012 - 14:45

Si,ma in game ci sono solo io id 0 e se scrivo /go 1 mi teleporta da me :S
Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#10 L'utente  offline   Skiaffo 

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

Inviato il 26 settembre 2012 - 20:24

L'ho testato in locale e se faccio /go 1 mi dice utente non connesso :huh:

Sicuro di aver copiato il codice aggiornato?
Sicuro che non hai un altro comando /go che interferisce?
"Possis nihil urbe Roma visere maius"
0

#11 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 26 settembre 2012 - 22:32

Allora,dopo che fai la richiesta scrivi /si .. :)
Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#12 L'utente  offline   Skiaffo 

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

Inviato il 27 settembre 2012 - 00:44

Entro, carico il FS.

/go 1 - Il giocatore con questo ID non è connesso.
/si - Non hai nessuna richiesta di teletrasporto attiva.

/go 0 - Non puoi teleportarti da te stesso.
/si - Non hai nessuna richiesta di teletrasporto attiva.

A me funziona a dovere, non so cosa dirti.

Sicuro di non aver modificato qualcosa che magari hai pensato fosse modificabile mentre in realtà hai sbagliato?
"Possis nihil urbe Roma visere maius"
0

#13 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 27 settembre 2012 - 19:43

Non ho toccato nulla :o

EDIT: Se tolgo tutti i FS funge,ora vedo cos'è,comunque,ma si e no se li metto in dialog non vanno ? Perchè è più comodo così

Messaggio modificato da GianlucA_Ct il 27 settembre 2012 - 19:53

Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

#14 L'utente  offline   Skiaffo 

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

Inviato il 27 settembre 2012 - 23:52

Funziona lo stesso in dialog ma non ci sono pro per usare un dialog piuttosto che la chat, ci sono solamente contro, te lo sconsiglio...
"Possis nihil urbe Roma visere maius"
0

#15 L'utente  offline   GianlucA_Ct 

  • Cleptomane
  • Gruppo: Utenti
  • Messaggi: 125
  • Iscritto il: 02/06/11
  • GTA Preferito:GTA: San Andreas

Inviato il 28 settembre 2012 - 14:13

Ah okk! Grazie di tutto,grazie,grazie,grazie!
Firma fuori dai limiti del regolamento (troppo alta e pesante); codice originale:
[img]http://monitors.cancel.lt/server_info/188.165.252.63:7977:samp/560x95.png[/img]
[img]http://www.speedtest.net/result/1369075691.png[/img]

[img]http://i54.tinypic.com/w2d0dd.png[/img]
0

Pagina 1 di 1
  • 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