[Ajuda] Ajuda com clima
#1

olб, estou com minha base de gamemode porem tem um bug nos climas nunca chover й eu queria colocar mais climas.


// Sistema retirado do meu GM
pawn Код:
TimersX[4] = SetTimer("Clima", 40000, 1);
public Clima()
{
    new texto[256], Previsao;
    Previsao = random(sizeof(WeatherName));
    if(Previsao >= 1 && Previsao <= 50)
    {
        SetWeather(Previsao);
    }
    format(texto, sizeof(texto), "Clima: %s", WeatherName[Previsao]);
    SendClientMessageToAll(0x93FFFFAA, texto);
    return 1;
}

if(strcmp(cmd, "/previsao", true) == 0)
    {
        format(file, sizeof(file), PASTA_CONTAS, GetPlayerNameEx(playerid));
        if(DOF2_GetInt(file, "Profissao") == Meteorologista || DOF2_GetInt(file, "aAdmin") == 1 || PlayerInfo[playerid][ZCON] == true)
        {
            new msg[256], texto[128];

            if(sscanf(cmdtext, "s[10]s[128]", cmd, texto))
            {
                SendClientMessage(playerid, Vermelho, "/previsao [texto]");
            }
            else
            {
                format(msg, sizeof(msg), "%s preve o clima: %s", GetPlayerNameEx(playerid), texto);
                SendClientMessageToAll(Verde, msg);
            }
        }
        else
        {
            SendClientMessage(playerid, Vermelho, "Vocк nгo tem permissгo.");
        }
        return 1;
    }

if(strcmp("/clima", cmd, true) == 0)
    {
        if(pAdmin[playerid] > 2)
        {
            new weatherid;

            if(sscanf(cmdtext, "s[7]i", cmd, weatherid))
            {
                SendClientMessage(playerid, Vermelho, "Digite: /clima [clima]");
                return 1;
            }
            if(weatherid >= 1 && weatherid <= 50)
            {
                SetWeather(weatherid);

                format(string, sizeof(string), "O(A) ADM %s (%d) alterou o clima para ID: %d", GetPlayerNameEx(playerid), playerid, weatherid);
                SendClientMessageToAll(tcadm, string);
            }
            else
            {
                SendClientMessage(playerid, Vermelho, "Valor invбlido, tente novamente! | ID's = 1-50");
            }
        }
        return 1;
    }
Reply
#2

Alguйm ?
Reply
#3

Olб Blitz, o id do clima de chuva й 7 se nгo me engano, irei lhe ajudar de alguma forma. Estarei postando abaixo um exemplo de como vocк poderб fazer para que altere o clima do seu servidor de uma maneira aleatуria, й recomendбvel que vocк coloque somente os climas que vocк desejar, para nгo ficar um random muito extenso e consequentemente acontecer o que vocк relatou.

Criaremos a SetTimer na qual vocк jб apresentou no cуdigo:
PHP код:
SetTimer("Clima"400001); 
Agora faremos de uma maneira diferente na callback que serб chamada com o SetTimer, utilizaremos a funзгo switch.
PHP код:
forward Clima();
public 
Clima()
{
   new 
variavelClima random(5);
   switch(
variavelClima)
   {
       case 
0SetWeather(1); // Sol
       
case 1SetWeather(7); // Chuva
       
case 2SetWeather(4); // Por do Sol se nгo me engano
       
...
   }
   return 
1;

Lembrando que й somente um exemplo, com isso, o clima ficarб sendo setado aleatoriamente conforme for chamado o SetTimer, que para ficar bem bacana vocк poderб aumentar o tempo para parecer mais realista ou algo do tipo.
Espero ter ajudado, boa sorte e abraзos!
Reply
#4

Quote:
Originally Posted by Ley
Посмотреть сообщение
Olб Blitz, o id do clima de chuva й 7 se nгo me engano, irei lhe ajudar de alguma forma. Estarei postando abaixo um exemplo de como vocк poderб fazer para que altere o clima do seu servidor de uma maneira aleatуria, й recomendбvel que vocк coloque somente os climas que vocк desejar, para nгo ficar um random muito extenso e consequentemente acontecer o que vocк relatou.

Criaremos a SetTimer na qual vocк jб apresentou no cуdigo:
PHP код:
SetTimer("Clima"400001); 
Agora faremos de uma maneira diferente na callback que serб chamada com o SetTimer, utilizaremos a funзгo switch.
PHP код:
forward Clima();
public 
Clima()
{
   new 
variavelClima random(5);
   switch(
variavelClima)
   {
       case 
0SetWeather(1); // Sol
       
case 1SetWeather(7); // Chuva
       
case 2SetWeather(4); // Por do Sol se nгo me engano
       
...
   }
   return 
1;

Lembrando que й somente um exemplo, com isso, o clima ficarб sendo setado aleatoriamente conforme for chamado o SetTimer, que para ficar bem bacana vocк poderб aumentar o tempo para parecer mais realista ou algo do tipo.
Espero ter ajudado, boa sorte e abraзos!
vlw cara ajudou sim + REP tambйm eu nгo achei um bom tutorial de clima no samp, mais eu to com duvida ainda porque aquele sistema nгo roda os outros climas poder me explicar o erro ?
Reply
#5

Quote:
Originally Posted by Blitz22
Посмотреть сообщение
vlw cara ajudou sim + REP tambйm eu nгo achei um bom tutorial de clima no samp, mais eu to com duvida ainda porque aquele sistema nгo roda os outros climas poder me explicar o erro ?
Nгo sei muito bem o porque do erro, porйm, posso chutar que foi um pequeno problema no random. Por exemplo:
PHP код:
Previsao random(sizeof(WeatherName)); 
Vocк colocou aqui um radom sem valores, creio que o certo seria da seguinte forma:
PHP код:
new Previsao random(50); 
Com isso ele iria verificar um valor atй 50, que й o que vocк queria. Ficaria mais ou menos:

PHP код:
new texto[256], Previsao;
new 
Previsao random(50);
if(
Previsao >= && Previsao <= 50// Mesmo assim creio que ainda estarб errado
{
   
SetWeather(Previsao);

Enfim, se esse nгo for o problema, eu nгo sei o que pode ser. Atй mais.

@DICA: Evite colocar um valor de 256 em suas strings, isso irб dar problema no futuro. O mбximo de caracteres suportado creio que й um valor de 128,
Reply
#6

https://sampwiki.blast.hk/wiki/WeatherID
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)