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: 14732
  • 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
"Audentes Fortuna iuvat"
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: 14732
  • 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.
"Audentes Fortuna iuvat"
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: 14732
  • 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;
}

"Audentes Fortuna iuvat"
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: 14732
  • 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.
"Audentes Fortuna iuvat"
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: 14732
  • 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?
"Audentes Fortuna iuvat"
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: 14732
  • 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?
"Audentes Fortuna iuvat"
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: 14732
  • 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...
"Audentes Fortuna iuvat"
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