Chiarboss il tuo script non può funzionare... L'hai testato almeno? xdeath ydeath e zdeath sono definiti dentro a onplayerdeath, e poi fai getplayerpos... Ma una volta finito onplayerdeath quelle variabili non esistono più... Non può andare. :S
Originally posted by Supdario@05/07/07 - 14:26 Chiarboss il tuo script non può funzionare... L'hai testato almeno? xdeath ydeath e zdeath sono definiti dentro a onplayerdeath, e poi fai getplayerpos... Ma una volta finito onplayerdeath quelle variabili non esistono più... Non può andare. :S
Grazie Sup, le variabili devono stare in testa alla GM, ora correggo, il problema è che l'avevo copiato dal mio ultimo script, e mi ero dimenticato di copiare le variabili che si trovavano in testa alla GM. :_
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
#pragma tabsize 0
#define NICE_BLUE 0xa0d3ffAA
#define COLOR_RED 0xAA3333AA
#define COLOR_GREY 0xAFAFAFAA
new pid;
new soc;
new Float:xout;
new Float:yout;
new Float:zout;
new Float:zangleout;
new confirmsoc;
new SocTimer;
new SocTimerDefault;
new timer;
new disconnected[MAX_PLAYERS];
new stringforout[256];
new Pname[MAX_PLAYER_NAME];
forward StopOnCrash();
Sotto OnGameModeInit:
timer = 0;
soc = 0;
Sotto OnPlayerConnect:
if(soc == 1 && disconnected[playerid] == 1) {
GetPlayerName(playerid,Pname,sizeof(Pname));
format(stringforout,sizeof(stringforout),"%d è stato salvato dal sistema di Stop-On-Crash.");
SendClientMessageToAll(NICE_BLUE,stringforout);
}
Sotto OnPlayerDisconnect:
new string[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(soc == 1) {
switch(reason) {
case 0: {
format(string, sizeof(string), "%s è fuori dal server (TimeOut)", name);
SendClientMessageToAll(COLOR_GREY,string);
}
case 1: {
format(string, sizeof(string), "%s è fuori dal server (Leaving)", name);
SendClientMessageToAll(COLOR_GREY,string);
}
case 2: {
format(string, sizeof(string), "%s è fuori dal server (Kicked)", name);
SendClientMessageToAll(COLOR_GREY,string);
}
}
}
if(reason == 0 && soc == 1)
{
disconnected[playerid] = 1;
GetPlayerName(playerid,Pname,sizeof(Pname));
format(stringforout,sizeof(stringforout),"%s è fuori dal server (TimeOut)");
SendClientMessageToAll(COLOR_RED,stringforout);
GetPlayerPos(playerid,xout,yout,zout);
GetPlayerFacingAngle(playerid,zangleout);
if(timer == 0) {
SocTimerDefault = SetTimer("StopOnCrash",120000,0);
} else {
SocTimer = SetTimer("StopOnCrash",pid*60000,0);
}
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)) { TogglePlayerControllable(i,0);
}
}
}
if(strcmp(cmd,"/soc",true)==0) {
if(IsPlayerAdmin(playerid)==1) {
new string[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(soc == 0) {
format(string,sizeof(string),"L'admin %s ha attivato il sistema di Stop-on-Crash.",name);
SendClientMessageToAll(NICE_BLUE,string);
soc = 1;
} else {
format(string,sizeof(string),"L'admin %s ha disattivato il sistema di Stop-on-Crash.",name);
SendClientMessageToAll(NICE_BLUE,string);
soc = 0;
}
} else {
SendClientMessage(playerid,COLOR_RED,"Devi essere un admin!!!");
}
return 1;
}
if(strcmp(cmd,"/soctimer",true)==0) {
if(IsPlayerAdmin(playerid)==1) {
new string[256];
new name[MAX_PLAYER_NAME];
new tmp[256];
GetPlayerName(playerid,name,sizeof(name));
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xFF8A00AA,"Hai settato il timer di default.");
timer = 0;
return 1;
}
if(strlen(tmp)) {
timer = 1;
return 1;
}
pid = strval(tmp);
format(string,sizeof(string),"L'admin %d ha settato il timer della ripresa del gioco a %d minuti",pid);
SendClientMessageToAll(NICE_BLUE,string);
} else {
SendClientMessage(playerid,COLOR_RED,"Devi essere un admin!!!");
}
return 1;
}
Ecco qui. Per attivarlo/disattivarlo, basta fare /soc. Per settare il timer nel quale, se un giocatore non si connette entro un tempo limite, si continua a giocare/tutti i players si sfreezano, basta fare /soctimer [timerinsecondi](Il tempo di default è comunque di due minuti).
Lo script non l'ho ancora testato ma al 90% dovrebbe funzionare. Molto utile nelle races o nelle CW.
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
Originally posted by Chiarboss@19/06/07 - 15:46 Proiettili Esplosivi:
In testa alla GM:
#include <a_samp>
#pragma tabsize 0 //per evitare i warnings delle spaziature errate
new exguns;
Sotto OnPlayerDeath:
new Float:x;
new Float:y;
new Float:z;
if(exguns == 1) {
GetPlayerPos(playerid, x, y, z); CreateExplosion(x, y, z, 10, 40);
}
if(exguns >= 22 && reason >= 22) {
GetPlayerPos(playerid, x, y, z); CreateExplosion(x, y, z, 10, 40);
}
Sotto OnPlayerCommandText:
if(strcmp(cmd,"/exguns",true)==0) {
if(IsPlayerAdmin(playerid) == 1) {
exguns = 1;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername, sizeof(playername));
format(string,sizeof(string),"L'admin %s ha rifornito tutte le armi di Proiettili Esplosivi",playername);
SendClientMessageToAll(0xFF8A00AA,string);
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Devi essere un admin...");
}
return 1;
}
//Per interrompere il rifornimento di Proiettili Esplosivi:
if(strcmp(cmd,"/noexguns",true)==0) {
if(IsPlayerAdmin(playerid) == 1) {
if(exguns == 1) {
exguns = 0;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername, sizeof(playername));
format(string,sizeof(string),"L'admin %s ha interrotto il rifornimento di Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Devi essere un admin...");
}
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Attualmente non c'è nessun rifornimento di Proiettili Esplosivi in corso.");
}
return 1;
}
//Per selezionare l'arma da rifornire di Proiettili Esplosivi:
if(strcmp(cmd,"/exguns",true) == 0) {
if(IsPlayerAdmin(playerid) == 1) {
new playername[MAX_PLAYER_NAME];
new tmp[256];
new wep;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xFF8A00AA,"Utilizzo: /exguns [weaponid]");
return 1;
}
wep = strval(tmp);
GetPlayerName(playerid,playername,sizeof(playername));
if (wep == 22) {
exguns = 22;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Pistola- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 23) {
exguns = 23;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Pistola Silenziata- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 24) {
exguns = 24;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Desert Eagle- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 25) {
exguns = 25;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile a Pompa- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 26) {
exguns = 26;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile a Canne Mozze- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 27) {
exguns = 27;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile da Combattimento- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 28) {
exguns = 28;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Mac10- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 29) {
exguns = 29;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -MP5- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 30) {
exguns = 30;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -AK47- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 31) {
exguns = 31;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -M4- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 32) {
exguns = 32;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Tec9- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 33) {
exguns = 33;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 34) {
exguns = 34;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile di Precisione- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep > 34) {
SendClientMessage(playerid, 0xFF8A00AA, "Puoi selezionare le armi solamente da 22 and 34.");
return 1;
}
if (wep < 22) {
SendClientMessage(playerid, 0xFF8A00AA, "Puoi selezionare le armi solamente da 22 a 34.");
return 1;
}
return 1;
} else {
SendClientMessage(playerid,0xFF8A00AA,"Devi essere un admin...");
return 1;
}
}
Non l'ho ancora testata non avendo SA-MP, ma dovrebbe ugualmente funzionare. Only for SA-MP 0.2.
P.S.: Inutile dire che serve avere lo strtok impostato per far compilare il codice.
P.S.2: Consiglio: Mettete l'instagib sul server, e questa funzione diventerà veramente realistica...
#include <a_samp>
#pragma tabsize 0 //per evitare i warnings delle spaziature errate
new exguns;
Sotto OnPlayerDeath:
new Float:x;
new Float:y;
new Float:z;
if(exguns == 1) {
GetPlayerPos(playerid, x, y, z); CreateExplosion(x, y, z, 10, 40);
}
if(exguns >= 22 && reason >= 22) {
GetPlayerPos(playerid, x, y, z); CreateExplosion(x, y, z, 10, 40);
}
Sotto OnPlayerCommandText:
if(strcmp(cmd,"/exguns",true)==0) {
if(IsPlayerAdmin(playerid) == 1) {
exguns = 1;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername, sizeof(playername));
format(string,sizeof(string),"L'admin %s ha rifornito tutte le armi di Proiettili Esplosivi",playername);
SendClientMessageToAll(0xFF8A00AA,string);
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Devi essere un admin...");
}
return 1;
}
//Per interrompere il rifornimento di Proiettili Esplosivi:
if(strcmp(cmd,"/noexguns",true)==0) {
if(IsPlayerAdmin(playerid) == 1) {
if(exguns == 1) {
exguns = 0;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername, sizeof(playername));
format(string,sizeof(string),"L'admin %s ha interrotto il rifornimento di Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Devi essere un admin...");
}
} else {
SendClientMessage(playerid, 0xFF8A00AA, "Attualmente non c'è nessun rifornimento di Proiettili Esplosivi in corso.");
}
return 1;
}
//Per selezionare l'arma da rifornire di Proiettili Esplosivi:
if(strcmp(cmd,"/exguns",true) == 0) {
if(IsPlayerAdmin(playerid) == 1) {
new playername[MAX_PLAYER_NAME];
new tmp[256];
new wep;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xFF8A00AA,"Utilizzo: /exguns [weaponid]");
return 1;
}
wep = strval(tmp);
GetPlayerName(playerid,playername,sizeof(playername));
if (wep == 22) {
exguns = 22;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Pistola- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 23) {
exguns = 23;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Pistola Silenziata- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 24) {
exguns = 24;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Desert Eagle- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 25) {
exguns = 25;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile a Pompa- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 26) {
exguns = 26;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile a Canne Mozze- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 27) {
exguns = 27;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile da Combattimento- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 28) {
exguns = 28;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Mac10- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 29) {
exguns = 29;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -MP5- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 30) {
exguns = 30;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -AK47- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 31) {
exguns = 31;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -M4- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 32) {
exguns = 32;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Tec9- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 33) {
exguns = 33;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep == 34) {
exguns = 34;
format(string,sizeof(string),"L'admin %s ha rifornito l'arma -Fucile di Precisione- con Proiettili Esplosivi.",playername);
SendClientMessageToAll(0xFF8A00AA,string);
return 1;
}
if (wep > 34) {
SendClientMessage(playerid, 0xFF8A00AA, "Puoi selezionare le armi solamente da 22 and 34.");
return 1;
}
if (wep < 22) {
SendClientMessage(playerid, 0xFF8A00AA, "Puoi selezionare le armi solamente da 22 a 34.");
return 1;
}
return 1;
} else {
SendClientMessage(playerid,0xFF8A00AA,"Devi essere un admin...");
return 1;
}
}
Non l'ho ancora testata non avendo SA-MP, ma dovrebbe ugualmente funzionare. Only for SA-MP 0.2.
P.S.: Inutile dire che serve avere lo strtok impostato per far compilare il codice.
P.S.2: Consiglio: Mettete l'instagib sul server, e questa funzione diventerà veramente realistica...
Enjoy.
Testato - funziona [/b]
Perché, che ti aspettavi?
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
alloea quelle faccine ho gia capito a cosa si riferiscono ma ankora in ste cose sono nappo XD la 1 e la 3 le ho capite...
ma la 2 forse nn hai capito che ti chiedevo allora io ho fatto una piattafiorma in mezzo al mare con case edifici ecc e io voglio che il player scielga il suo peds ( ce ne pè uno solo) e venga spawnato a caso su questa piattaforma in mezzo al mare ma a caso tra delle coordinate che dico io capito? in pratica un player entra sciela la skin e viene spawnato a caso su una coordinata predefinita il player seguente entre scieglio lo stesso peds e viene spawnato in un ALTRA coordinata predefinita in modo che i due player nn si incontrino subito allo spawn (visto ke è una mod sniper se si vedono subito nn ce gusto XD) capito? ç__ç
Kevin: Tugg, tu sei l'ultimo pezzo del puzzle bello, ti vogliamo, i tuoi uomini ti vogliono! Allora stai con noi? Tugg: Io sono pura illusione... Kevin: Fottiti! Andiamo.
Originally posted by $imo@21/08/07 - 16:06 alloea quelle faccine ho gia capito a cosa si riferiscono ma ankora in ste cose sono nappo XD la 1 e la 3 le ho capite...
ma la 2 forse nn hai capito che ti chiedevo allora io ho fatto una piattafiorma in mezzo al mare con case edifici ecc e io voglio che il player scielga il suo peds ( ce ne pè uno solo) e venga spawnato a caso su questa piattaforma in mezzo al mare ma a caso tra delle coordinate che dico io capito? in pratica un player entra sciela la skin e viene spawnato a caso su una coordinata predefinita il player seguente entre scieglio lo stesso peds e viene spawnato in un ALTRA coordinata predefinita in modo che i due player nn si incontrino subito allo spawn (visto ke è una mod sniper se si vedono subito nn ce gusto XD) capito? ç__ç
p.s. è fattibile?
Nell'OnGameModeInit:
ShowNameTags(0);
ShowPlayerMarkers(0);
In testa alla GM:
enum PlayerSpawnInfo {
Float:PlayerX,
Float:PlayerY,
Float:PlayerZ,
Float:PlayerAngle
}
new Float:gRandomSpawns[][PlayerSpawnInfo] =
{
{x,y,z,zangle},
{x,y,z,zangle},
{x,y,z,zangle}
};
//e così via...
Nell'OnPlayerSpawn:
new rand = random(sizeof(gRandomSpawns))
SetPlayerPos(playerid,gRandomSpawns[rand][PlayerX],gRandomSpawns[rand][PlayerY],gRandomSpawns[rand][PlayerZ]);
SetPlayerFacingAngle(playerid,gRandomSpawns[rand][PlayerAngle]);
Ed ecco fatto...
Firma cancellata perchè fuori norma, leggi il regolamento. Il codice precedente è stato inviato per Messaggio Privato.
E' lo stesso sistema che usa minigun maddness?... xke non prelevare il codice esattamente da li dato ke la GMode ce l'hai gia praticamente fatta? basta ke cambi le coordinate di minigun maddness e aggiungi gli oggetti...
Gli errori erano due, il primo è che non avevi messo le virgole dopo ogni parentesi graffa nella lista delle coordinate random (Chiarboss nel suo esempio le aveva messe)
Il secondo era che SetPlayerHealth non era sotto OnPlayerSpawn, bensì fuori da ogni evento.