[Tutorial] [TUT] Todos Players (new i;)
#1

Bom muita gente se sente na dъvida de como fazer um comando para todos online Ex:
/darvida

E Acontece a Todos Players

Aqui seria um comando simples, no nosso exemplo serб para Setar Vida:

pawn Код:
if(!strcmp(cmdtext, "/darvida", true))
{
SetPlayerHealth(playerid,100);
return 1;
}
Observem o Comando Simples Apenas Ocorre com PlayerID

EXPLICAЗГO DO CODE:

SetPlayerHealth -> Seta vida do Player
playerid -> A Quem Ocorrerб,(no caso o player que digita o CMD)
100 -> Valor da Vida
/darvida -> Comando


Entгo Iremos fazer com todos jogadores(BR) o nosso pequeno comando para todos players

Ficando Desta Forma:

pawn Код:
if(!strcmp(cmdtext, "/darvida", true))
{
for(new allplayers = 0; allplayers < GetMaxPlayers(); allplayers++)
{
/* O CУDIGO DO COMANDO IRБ AQUI*/
SetPlayerHealth(allplayers,100);
}
return 1;
}
Entгo Notem que Substituнmos playerid -> allplayers

Porque Isso?
Pois Ao Code:
Explicando O:
for(new allplayers = 0; allplayers < GetMaxPlayers(); allplayers++):
new allplayers = 0; -> Indica que Comeзa os IDs Do Zero
allplayers < GetMaxPlayers(); -> Indica que allplayer deve ser menor que GetMaxPlayers (Slots Server)
allplayers++ -> Irб Aumentar allplayers do 0 atй chegar a GetMaxPlayer (Slots do Server)

Para Adicionar ao Comando nesse citamos apenas:
pawn Код:
for(new allplayers = 0; allplayers < GetMaxPlayers(); allplayers++)
  {
  /* O CУDIGO DO COMANDO IRБ AQUI*/
  }
EXPLICANDO O COMANDO:

Sendo Assim ao Substituir playerid por allplayers ele irб realizar a checagem de todos IDs assim ocorrendo com Todos Slots do Server...

Posso Otimizar o Code?

Claro que pode, para nгo ficar jogando foras IDs, isto й aplicar a aзгo a IDs Off-line vocк pode Realizar a Checagem com
pawn Код:
if(!IsPlayerConnected(allplayers))
Pode Tambйm Tornar CMD apenas para Admin:
pawn Код:
IsPlayerAdmin
Entre outras Funзхes

Nota:
Normamente Usam new i; eu coloquei new allplayers, para ficar parecido com PlayerID, assim facilitando a vocкs...


::::::::::::::::::::
Criado por DraKoN
::::::::::::::::::::

Copyright Pawn SA:MP (hsuahsuhas)
Reply
#2

Bom DraKoN.

Jб agora como nгo estбs no msn e os posts sгo para se opinar, eu vou dar aqui a minha opiniгo.

Deverias sugerir o uso do foreach, e no tutorial que fizeste ao invйs de usares a funзгo GetMaxPlayers() usavas a constante MAX_PLAYERS. Chamar uma funзгo demora. Mas de qualquer maneira o foreach owna. lol.

Jб agora se quiserem redefinir o MAX_PLAYERS para nгo se fazer 500 verificaзхes:

Topo do gamemode, e antes de usar a constante MAX_PLAYERS em qualquer lado

pawn Код:
#if defined MAX_PLAYERS
    #undef MAX_PLAYERS
    #define MAX_PLAYERS (50) //Alterar o 50 para o valor dos vossos slots.
#endif
Reply
#3

Eu Sei Disso Logicamente, Mas Russo para Ocupar Menos Trabalho, deveriamos Colocar GetMaxPlayers, acredite й muito melhor..

Lembrando, Tem gente que muda constantemente de Slots...
Reply
#4

Quote:
Originally Posted by DraKoNeoN
Eu Sei Disso Logicamente, Mas Russo para Ocupar Menos Trabalho, deveriamos Colocar GetMaxPlayers, acredite й muito melhor
Scriptar й para ter piada, quando algo tem piada nгo й cansativo, se quisermos algo eficiente, fazemos. Agora se scriptam e depois comeзam a dizer que dб trabalho e й mais lento e nгo sei quк, esqueзam.. lol.

Anyway й sу fazer copy/past do que eu meti e alterar uns nъmeros. E sу й definido uma vez no topo do gamemode, sу para nгo mandar ninguйm alterar o a_samp.inc. lol.
Reply
#5

Muito legal e tipo... em vez de SetPlayerHealth(allplayers,100); pode ser SetPlayerPos(allplayers,X,Y,Z); nй? ou ateh banir todos
Reply
#6

@Vampiro:
Isso Mesmo..
Reply
#7

Quote:
Originally Posted by DraKoNeoN
@Vampiro:
Isso Mesmo..
Entao blz, tуpico excelente para iniciantes... tipo eu
Chuck Norris Approves!!
Reply
#8

Estб muito bom o post, embora tenhas aн um 'se nгo' com o loop.

Repara, ao utilizares isto:

pawn Код:
for(new a = 0 ; a <= GetMaxPlayers() ; ++ a)
estбs a fazer com que o script verifique a funзгo GetMaxPlayers() inъmeras vezes, tornando lenta a operaзгo.

existem duas outras formas de optimizar isto, das quais:

pawn Код:
for(new a = 0, b = GetMaxPlayers() ; a <= b ; ++ a)
e

pawn Код:
for(new a = 0 ; a <= MAX_PLAYERS ; ++ a)
sendo esta ъltima a mais indicada. ;' )

Depois tambйm podes usar truques como o Russo exemplificou:

Quote:
Originally Posted by russo666
Посмотреть сообщение
pawn Код:
#if defined MAX_PLAYERS
    #undef MAX_PLAYERS
    #define MAX_PLAYERS (50) //Alterar o 50 para o valor dos vossos slots.
#endif
ou mesmo:

pawn Код:
#define MAX_SERVER_PLAYERS (500)


Mas claro que, como o Russo referiu tambйm, usando o foreach fica muito melhor..
Reply
#9

tb pode ser utilizado para enviar uma certa arma a membros de uma certa org:


pawn Код:
if(strcmp("/dar-minigun", cmdtext, true, 10) == 0)
{
for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerInfo[i][pAdmin] >= 1)
       {
       GivePlayerWeapon(i,38,9999);
       }
    }
return 1;
}
Reply
#10

kickar todos
Код:
	if(strcmp(cmd, "/kickartodos", true) == 0)
	{
	    if(PlayerInfo[playerid][pAdmin] >= 1336)
	    {
			GetPlayerName(playerid, sendername, sizeof(sendername));
	        format(string, sizeof(string), " %s kickou toda a gente do servidor", sendername);
	        SendClientMessageToAll(COLOR_RED2, string);
	        for(new i = 0; i <= MAX_PLAYERS; i++)
			{
				if(IsPlayerConnected(i))
				{
				    Kick(i);
				}
			}
		}
		else
		{
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Tu nao es um admin!");
		    return 1;
		}
		return 1;
	}
Reply
#11

Quote:
Originally Posted by pmkrz
Посмотреть сообщение
Estб muito bom o post, embora tenhas aн um 'se nгo' com o loop.

Repara, ao utilizares isto:

pawn Код:
for(new a ; a <= GetMaxPlayers() ; ++ a)
Desculpe esta errado eu nгo estou a usar desta forma e sim desta forma
pawn Код:
for(new a= 0; a =< GetMaxPlayers(); a++)
Reply
#12

Quote:
Originally Posted by DraKoN
Посмотреть сообщение
Desculpe esta errado eu nгo estou a usar desta forma e sim desta forma
pawn Код:
for(new a= 0; a =< GetMaxPlayers(); a++)
Qual a diferenзa espertalhгo?

Reply
#13

@Drakon:

Qual й a diferenзa ? Eu falo do mйtodo. --' Sу nгo percebe quem nгo quer..
Parece que ficaste chateado com minha explicaзгo.
Desculpa lб, sу estou a tentar contribuir para uma melhor secзгo e com mais qualidade. : S
Reply
#14

Quote:
Originally Posted by pmkrz
Посмотреть сообщение
@Drakon:

Qual й a diferenзa ? Eu falo do mйtodo. --' Sу nгo percebe quem nгo quer..
Parece que ficaste chateado com minha explicaзгo.
Desculpa lб, sу estou a tentar contribuir para uma melhor secзгo e com mais qualidade. : S
Boa sorte com isso. As crнticas vгo ser muitas.
Reply
#15

Quote:
Originally Posted by pmkrz
Посмотреть сообщение
@Drakon:

Qual й a diferenзa ? Eu falo do mйtodo. --' Sу nгo percebe quem nгo quer..
Parece que ficaste chateado com minha explicaзгo.
Desculpa lб, sу estou a tentar contribuir para uma melhor secзгo e com mais qualidade. : S
Nunca ficaria chateado com vocк por motivos bobo,rs.,simplesmente admiro seu trabalho parabйns,e nгo fiquei chatedo nгo, nгo hesite em postar..
Obrigado PlayMaker
Boa sorte tambйm Russo..
Reply
#16

Excelente! nгo olhou isso aqui
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)