SA-MP Forums Archive
[Ajuda] Ligar/Desligar - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Ligar/Desligar (/showthread.php?tid=470567)



Ligar/Desligar - TorresPutado - 18.10.2013

Eu achei um forum aki no samp com o termo [AJUDA] ae eu peguei e tentei arrumar igual o cara falou mais nao funfo ;(. Me ajuda? Forum: https://sampforum.blast.hk/showthread.php?tid=437270 Pawno:
pawn Код:
#include <a_samp>

#define FILTERSCRIPT
#pragma tabsize 0
#if defined FILTERSCRIPT
#endif

//Cores
#define VERDE                                                                    0x33AA33AA
#define VERMELHO                                                                0xFF000096
#define PRETO                                                                    0x000000FF
#define AZUL                                                                      0x2641FEAA
#define ROXO                                                                      0xC2A2DAAA
#define AMARELO                                                                   0xFFFF00AA
#define CINZA                                                                     0xAFAFAFAA
#define Verde                                                                   0x00D700AA

new Engine[MAX_VEHICLES];
forward EngineTimer(playerid);

public OnFilterScriptInit()
{
    print("[HTS][LIGADO]Sistema De Ligar E Desligar Veiculo Feito Por: Tomboy e Caio Cartaxo![HTS].");
    return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
     if(newstate == PLAYER_STATE_DRIVER)
    {
         new vehicleid = GetPlayerVehicleID(playerid);
        if(Engine[vehicleid] == 0)
        {
   TogglePlayerControllable(playerid, 0);
            SendClientMessage(playerid, Verde, "[Brasil Softer]Pressione (4) ou digite /ligarv para ligar seu veiculo");
            SendClientMessage(playerid, Verde, "[Brasil Softer]Pressione (Espaзo) ou digite /desligarv Para desligar seu veiculo");

        }
    }
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
         new vehicleid = GetPlayerVehicleID(playerid);
         if(IsPlayerInAnyVehicle(playerid))
 {
         if(newkeys == 8192)
            {
                if(Engine[vehicleid] == 1)
                Engine[vehicleid] = 0;
                TogglePlayerControllable(playerid, 0);
}
}
  if(Engine[vehicleid] == 0)
        {
            if(newkeys == 128) // Jump
            {
    SetTimerEx("EngineTimer", 1000, 0, "i", playerid);
                TogglePlayerControllable(playerid, 1);
            }
        }
}


public OnPlayerCommandText(playerid, cmdtext[])
{
 if(strcmp(cmdtext, "/ligarv", true) == 0)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        if(Engine[vehicleid] == 0)
        {
            SendClientMessage(playerid, VERDE, "[Brasil Softer]Ligando veiculo...");
            SetTimerEx("EngineTimer", 1000, 0, "i", playerid);
        }
  else if(Engine[vehicleid] == 1)
        {
            SendClientMessage(playerid, AMARELO, "[Brasil Softer]Seu veiculo ja estб ligado!.");
        }
        return 1;
     }
    if(strcmp(cmdtext, "/desligarv", true) == 0)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
  if(Engine[vehicleid] == 1)
        {
            if(IsPlayerInAnyVehicle(playerid))
            {
                Engine[vehicleid] = 0;
                TogglePlayerControllable(playerid, 0);
   }
        return 1;
 }
        return 0;
 }
 }

public EngineTimer(playerid)
{
    new rand = random(2);
    if(rand == 0)
    {
        SendClientMessage(playerid, Verde, "[Brasil Softer]Veiculo ligado!. Para desligar o veiculo use /desligarv ou aperte ALT");
        new vehicleid = GetPlayerVehicleID(playerid);
        Engine[vehicleid] = 1;
    }
    if(rand == 1)
    {
        SendClientMessage(playerid, Verde, "[Brasil Softer]Veiculo ligado!. Para desligar o veiculo use /desligarv ou aperte ALT");
        new vehicleid = GetPlayerVehicleID(playerid);
        Engine[vehicleid] = 1;
    }
    if(rand == 2)
    {
        SendClientMessage(playerid, Verde, "[Brasil Softer]Veiculo ligado!. Para desligar o veiculo use /desligarv ou aperte ALT");
        new vehicleid = GetPlayerVehicleID(playerid);
        Engine[vehicleid] = 1;
    }
}
Warning:
Quote:

C:\Program Files\Rockstar Games\GTA San Andreas\Server\filterscripts\Motor.pwn(95) : warning 209: function "OnPlayerCommandText" should return a value

Linha 95:

Quote:

}

Resposta do forum: Fazendo carro desligar,
Quote:
Originally Posted by n0minal
Посмотреть сообщение
A funзгo OnPlayerCommandText precisa retornar algum valor, coloque return 1; antes da ъltima chave

ex:

Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
      if(!strcmp(cmdtext, "/talzinho", true))
      {
               if(talzinho == 1)
               {
               SendClientMessage(playerid, -1, "Talzinho foi ativado, agora ele й um pinto no lixo");
               }
       }
     return 1;
}
Nгo funcionou comigo, Ajuda?



Re: Ligar/Desligar - arakuta - 18.10.2013

Apenas indentendando o cуdigo, vocк percebe o problema. Nгo hб um return caso nenhuma das condiзхes passarem.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/ligarv", true) == 0)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        if(Engine[vehicleid] == 0)
        {
            SendClientMessage(playerid, VERDE, "[Brasil Softer]Ligando veiculo...");
            SetTimerEx("EngineTimer", 1000, 0, "i", playerid);
        }
        else if(Engine[vehicleid] == 1)
        {
            SendClientMessage(playerid, AMARELO, "[Brasil Softer]Seu veiculo ja estб ligado!.");
        }
        return 1;
    }
    if(strcmp(cmdtext, "/desligarv", true) == 0)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        if(Engine[vehicleid] == 1)
        {
            if(IsPlayerInAnyVehicle(playerid))
            {
                Engine[vehicleid] = 0;
                TogglePlayerControllable(playerid, 0);
            }
            return 1;
        }
        return 0;
    }
    // Cade o return aqui?
}
Sobre o seu quote do n0minal onde no final da callback tem um return 1, vai impedir o uso de qualquer comando com esta callback em um FS por exemplo, pois retornar 1, indica que vocк jб achou o comando, e e nгo vai executar a mesma callback no FS.