GTA-Expert Forum: [RISOLTO] Aiuto please. - GTA-Expert Forum

Salta al contenuto

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

[RISOLTO] Aiuto please.

#1 L'utente è offline   Blue_Sky 

  • Vandalo
  • Gruppo: Utenti
  • Messaggi: 54
  • Iscritto il: 31/05/07

Inviato il 19 luglio 2007 - 11:17

Mi servirebbe qualcosina :D

Anti TeamKilling

Scritte tipo pwne** dopo tot kill di fila.

Una spiegazione di INVALID_PLAYER_ID cioè, che un player a caso quando spawna ha un ruolo speciale... Tipo ManHunt di Mike... (uno è la preda gli altri lo cacciano)

Se muore il giocatore scelto per quel ruolo speciale finisce la gm con la scritta che dice il killer.
0

#2 L'utente è offline   Wesker 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1723
  • Iscritto il: 04/01/07

Inviato il 19 luglio 2007 - 11:40

Quote

Originally posted by Blue_Sky@19/07/07 - 13:17
Mi servirebbe qualcosina :D

Anti TeamKilling

Scritte tipo pwne** dopo tot kill di fila.

Una spiegazione di INVALID_PLAYER_ID cioè, che un player a caso quando spawna ha un ruolo speciale... Tipo ManHunt di Mike... (uno è la preda gli altri lo cacciano)

Se muore il giocatore scelto per quel ruolo speciale finisce la gm con la scritta che dice il killer.

Anti Team killing:

OnPlayerDeath:
if(gTeam[killerid] == gTeam[playerid]) {
SetPlayerHealth(killerid,0);
SetPlayerScore(killerid,GetPlayerScore(killerid),-1);
}


Fun message dopo dei kill consecutive:

In testa alla GM:
new consecutive[MAX_PLAYERS];


OnPlayerSpawn:
consecutive[playerid] = 0;


OnPlayerDeath
new name[MAX_PLAYER_NAME];
new string[256];
consecutive[killerid]++;
GetPlayerName(killerid,name,sizeof(name));
if(consecutive[killerid] == 5) {
format(string,sizeof(string),"%s ~n~~y~is on a Killing Spree!!!",name);
GameTextForAll(string,5000,1);
}
if(consecutive[killerid] == 10) {
format(string,sizeof(string),"%s ~n~~y~owned The Entire Server...",name);
GameTextForAll(string,5000,1);
}

...e così via.

Spiegazione INVALID_PLAYER_ID:

Beh, lo dice la parola stessa, è un player invalido, come ad esempio se hai nell'OnPlayerDeath questo:
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
}

Il killerid è anche il playerid, quindi è un suicidio.
Nella GM Manhunt, l'INVALID_PLAYER_ID viene scelto a random, quindi è un player a caso, invalido.

Poi, per l'ultima, dovrebbe essere così:

In testa alla GM:
forward GameModeExitFunc();


OnPlayerDeath:
new name[MAX_PLAYER_NAME];
new playername[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(killerid,name,sizeof(name));
GetPlayerName(playerid,playername,sizeof(playername));
if(playerid == INVALID_PLAYER_ID) {
SendDeathMessage(killerid,playerid,reason);
format(string,sizeof(string),"%s ha ucciso %s",name,playername);
GameTextForAll(string,5000,6);
for (new i=0; i<MAX_PLAYERS; i++) {
TogglePlayerControllable(i,0);
}
SetTimer("GameModeExitFunc",5000,0);
}


A parte:
public GameModeExitFunc() {
GameModeExit();
return 1;
}

Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
0

#3 L'utente è offline   Blue_Sky 

  • Vandalo
  • Gruppo: Utenti
  • Messaggi: 54
  • Iscritto il: 31/05/07

Inviato il 19 luglio 2007 - 11:43

ChiarBoss ti amo xD (ovviamente tra l'ilarità generale)

EDIT: Ma a me per INVALID_PLAYER_ID serve prendere un giocatore che spawna con un ruolo speciale (solo e solo 1 giocatore) e gli altri con un altro ruolo
0

#4 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 19 luglio 2007 - 12:28

INVALID_PLAYER_ID = 255. E' semplicemente un'indicazione ad un player che non esiste. Ad esempio quando uno fa /kill, il killerid è 255.
0

#5 L'utente è offline   Blue_Sky 

  • Vandalo
  • Gruppo: Utenti
  • Messaggi: 54
  • Iscritto il: 31/05/07

Inviato il 19 luglio 2007 - 19:55

Supdario... Potresti scrivermi il code per richiamare INVALID_PLAYER_ID, cioè, mi serve che spawna 1 player a caso in un team e tutti gli altri nell'altro team...
ChiarBoss si è ingegnato ma niente da fare...
0

#6 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 19 luglio 2007 - 22:37

Quote

Originally posted by Blue_Sky@19/07/07 - 20:55
Supdario... Potresti scrivermi il code per richiamare INVALID_PLAYER_ID, cioè, mi serve che spawna 1 player a caso in un team e tutti gli altri nell'altro team...
ChiarBoss si è ingegnato ma niente da fare...

INVALID_PLAYER_ID è una MACRO, niente di più. Comunque non devi per forza usare il team... Basta che crei una variabile tipo:

new HuntedPlayer = INVALID_PLAYER_ID;

ad inizio script.

Poi dove vuoi tu, fai un:

new k;
for(new i = 0; i < MAX_PLAYERS; i++)
{
 if (IsPlayerConnected(i)) k++;
}
k--;
HuntedPlayer = random(k);

e questo codice sceglierà il player ricercato casualmente.
0

#7 L'utente è offline   Blue_Sky 

  • Vandalo
  • Gruppo: Utenti
  • Messaggi: 54
  • Iscritto il: 31/05/07

Inviato il 19 luglio 2007 - 22:44

EDIT: Risolto, ora mi da 3 warnings. La testo... Per eventuali bugs poi posto.
0

#8 L'utente è offline   Wesker 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1723
  • Iscritto il: 04/01/07

Inviato il 21 luglio 2007 - 17:29

Sup, noi abbiamo questa GM: http://www.pastebin.ca/raw/628731

Il problema è che quando Scarface spawna, gli escono in continuazione i SendClientMessage dove dicono di killare i colombiani e continua a spawnare dopo dieci secondi. L'evento in cui lo script sceglie a random il player che dev'essere Scarface è questo:

public Tony() {
if(players >= 2) {
for(new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i)){ k++;
}
k--;
new name[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(k,name,sizeof(name));
format(string,sizeof(string),"Scarface è ora %s. Uccidetelo.");
if(i == k) {
GivePlayerWeapon(i,31,999999);
GivePlayerWeapon(i,16,30);
SetPlayerSkin(i,113);
SetPlayerPos(i,1283.3235,-832.5942,1089.9375);
SetPlayerFacingAngle(i,75.7231);
SetPlayerColor(i,COLOR_ORANGE);
SendClientMessage(i,COLOR_ORANGE,"Uccidi quei colombiani del cazzo.");
gTeam[i] = TEAM_SCARFACE;
return true;
} else {
SendClientMessage(i,COLOR_ORANGE,string);
return false;
}
}
KillTimer(timer);
HuntedPlayer = random(k);
}
return 1;
}


Ho pure killato il timer come puoi notare, ma non vedo cosa faccia ripetere continuamente questo timer. :argh:
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
0

#9 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 21 luglio 2007 - 17:37

Togli il return false; ed assicurati che l'ultimo parametro del SetTimer (ossia repeat), sia a 0 e non a 1.
0

#10 L'utente è offline   Wesker 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1723
  • Iscritto il: 04/01/07

Inviato il 22 luglio 2007 - 18:51

Grazie Sup, era il parametro del repeat che stava a 1, ma io credevo che il timer venisse killato definitivamente con la funzione KillTimer(); :unsure:
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
0

#11 L'utente è offline   Supdario 

  • GTA-Expert Webmaster
  • Gruppo: Admin
  • Messaggi: 8635
  • Iscritto il: 08/12/05
  • GTA Preferito:GTA: San Andreas

Inviato il 22 luglio 2007 - 19:39

Non puoi eseguire il Killtimer nella funzione chiamata dal timer. :rotfl:
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