Jump to content

Question

Posted

Problemă întâlnită (descriere): Cum as putea sa fac ca atunci cand mor sa pun un timmer de 5 minute dar caracterul sa ramana tot in locul in care a fost omorat,iar dupa acele 5 minute trecute sa il bage la spital + sa ii arate timpul in secunde.

2.Cand masina ajunge la 400hp sa nu ia foc,sa ramana blocata,ex daca dai din nou /engine si masina are 400hp sa ii trimita mesaj ca masina este distrusa,contacteaza un mecanic?
Ero(area / rile) / warning-(ul / urile):-
Liniile de cod / sursa / script-ul:La omorare playerul il baga direct in spital,eu vreau sa fac sa il dea prima data la locul unde a fost omorat.

[pawn]if(MedicBill[playerid] == 1 && PlayerInfo[playerid][pJailed] == 0)
        {
            if(FirstSpawn[playerid] != 1)
            {
                PlayerInfo[playerid][pDeaths] += 1;
                SetPlayerHealth(playerid, 99.0);
                SetPlayerInterior(playerid, 0);
                PlayerInfo[playerid][pInt] = 0;
                SetPlayerVirtualWorld(playerid, 1);
                SetPlayerPos(playerid, 1235.3085,326.3891,-11.7422);
                SetPlayerFacingAngle(playerid, 151.3780);
                TogglePlayerControllable(playerid, 1);
                  PlayerInfo[playerid][pInvWeapon] = 0;
                PlayerInfo[playerid][pInvAmmo] = 0;
                SetPlayerSkin(playerid, 144);
                GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Esti in coma la spital.Iti revii incet.", 30000, 3);
                JustDied[playerid] = 1;
                FreezeThenAutoUnfreeze(playerid, 20000)// time is in Milliseconds, to make the player controllable again.
                MedicTime[playerid] = 1;
                PlayerInfo[playerid][pMedic] = 1;
                if(PlayerInfo[playerid][pMedic] == 1)
                {
                    if(PlayerInfo[playerid][pDonateRank] > 0)
                    {
                        NeedMedicTime[playerid] = 60;
                    }
                    else
                    {
                        NeedMedicTime[playerid] = 120;
                    }
                }
                return 1;
            }
        }
        if(JustDied[playerid] == 1)
        {
            if(GetPlayerVirtualWorld(playerid) != 0 || PlayerInfo[playerid][pVirWorld] != 0)
            {
                SetPlayerVirtualWorld(playerid, 0);
                PlayerInfo[playerid][pVirWorld] = 0;
            }
            SetPlayerPos(playerid, 1170.5839,533.1086,20.8119);
            SetPlayerFacingAngle(playerid, 331.6384);
            SetPlayerInterior(playerid,0);
            PlayerInfo[playerid][pInt] = 0;
            return 1;
        }[/pawn]
Imagini / Video (optional):
Aţi încercat să rezolvaţi singur?:

19 answers to this question

Recommended Posts

  • Administrator
Posted

Asa trebuie sa arate comanda ta

 

[pawn]if(!strcmp(cmd, "/engine", true))
  {
    if(IsPlayerConnected(playerid))
    {
        new name[21];
        GetPlayerName(playerid, name, sizeof(name));
      if(IsPlayerInAnyVehicle(playerid))
      {
        if(!engineOn[GetPlayerVehicleID(playerid)])
        {
            if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
          {
            return 1;
          }
          if(Bicicleta(idcar)||IsAHarvest(idcar))
          {
            return 1;
          }
          if(IsAnOwnableCar(idcar))
          {
            if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
            else { return 1; }
          }
            new Float:health;
            new playerveh = GetPlayerVehicleID(playerid);
            GetVehicleHealth(playerveh,health);
            if(health <= 450.0)
            {
            SendClientMessage(playerid,COLOR_LIGHTRED,"Masina este prea avariata,contacteaza un mecanic!");
//            RemovePlayerFromVehicle(playerid);
            return 1;
}
          if(Gas[idcar] <= 0)
          {
            SendClientMessage(playerid,COLOR_GRAD1,"Nu ai benzina pentru a porni motorul.");
              return 1;
          }
          if(gEngine[playerid] == 1) { return 1; }

          PutPlayerInVehicle(playerid, playerveh, 0);
          GetPlayerName(playerid, sendername, sizeof(sendername));
          format(string, sizeof(string), "* %s rasuceste cheia in contact pentru a porni motorul.", sendername);
          ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
          SetTimerEx("StartingTheVehicle",3500,0,"i",playerid);
          GameTextForPlayer(playerid, "~w~Porneste vehiculul...",3500,3);
          gEngine[playerid] = 1;
          return 1;
        }
        if(engineOn[GetPlayerVehicleID(playerid)])
        {
            if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
          {
            return 1;
          }
          if(Bicicleta(idcar)||IsAHarvest(idcar))
          {
            return 1;
          }
          if(IsAnOwnableCar(idcar))
          {
            if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
            else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
            else { return 1; }
          }
          engineOn[GetPlayerVehicleID(playerid)] = false;
          //RemovePlayerFromVehicle(playerid);
          SetVehicleParamsEx(GetPlayerVehicleID(playerid), 0, -1, -1, -1, -1, -1, -1);
          GetPlayerName(playerid, sendername, sizeof(sendername));
          format(string, sizeof(string), "* %s opreste motorul si ia cheia din contact.", sendername);
          ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
          gEngine[playerid] = 0;
          return 1;
        }
      }
    }
    return 1;
  }[/pawn]

Posted (edited)

nu inteleg frate dc vrei sa faci asa cv o sa ai 0 playeri ca nimeni nu asteapta 5 minute pe strada apoi bagat la spital =)))) ar fi un fel de jail ala :)) si daca vrei sa pierzi playeri ok sa bagi SetPlayerPos si pozitia unde e spitalu si SetTimer ca sa setezi timpu cat sa aiba freeze

Edited by Allex.xD
Posted (edited)

Ok,sti ce nu inteleg eu?De unde sti ca o sa am 0 playeri,poate vreau sa fac serverul HARD RP ca sa aiba timp aia din ambulanta sa il resusciteze:)Iar faza cu SetPlayerPos il am facut doar la spital,(eu ti-am dat mura in gura) numai ca tu mi-ai dat detaliile pe care le aveam deja si eu le stiam.

 

Ceea ce inseamna ca ai facut acest post numai pentru +1 la statistici.

Edited by Bogdan's
Posted (edited)

Salut,la OnPlayerEnterVehicle adauga urmatorul:

new Float:health;
  new veh;
  GetVehicleHealth(veh, health);
  if(health = 450)
  TogglePlayerControllable(i, 0);
   SendClientMessage(playerid,COLOR_WHITE," Masina ta este prea distrusa pentru a merge cu ea suna un mecanic.");
  return 1;
}

Iar la OnPlayerExitVehicle pune

TogglePlayerControllable(i, 1);

 

De stiut:

if(health = 450) - De aici modifici health-ul masinii in care sa se opreasca.

Edited by Adrian_Petre

 

 

Posted

[pawn]if(!strcmp(cmd, "/engine", true))
{
if(IsPlayerConnected(playerid))
{
new name[21];
GetPlayerName(playerid, name, sizeof(name));
if(IsPlayerInAnyVehicle(playerid))
{
if(!engineOn[GetPlayerVehicleID(playerid)])
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
return 1;
}
if(Bicicleta(idcar)||IsAHarvest(idcar))
{
return 1;
}
if(IsAnOwnableCar(idcar))
{
if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
else { return 1; }
}
if(Gas[idcar] <= 0)
{
SendClientMessage(playerid,COLOR_GRAD1,"Nu ai benzina pentru a porni motorul.");
return 1;
}
if(gEngine[playerid] == 1) { return 1; }

new playerveh = GetPlayerVehicleID(playerid);
PutPlayerInVehicle(playerid, playerveh, 0);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s rasuceste cheia in contact pentru a porni motorul.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetTimerEx("StartingTheVehicle",3500,0,"i",playerid);
GameTextForPlayer(playerid, "~w~Porneste vehiculul...",3500,3);
gEngine[playerid] = 1;
return 1;
}
if(engineOn[GetPlayerVehicleID(playerid)])
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
return 1;
}
if(Bicicleta(idcar)||IsAHarvest(idcar))
{
return 1;
}
if(IsAnOwnableCar(idcar))
{
if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
else { return 1; }
}
engineOn[GetPlayerVehicleID(playerid)] = false;
//RemovePlayerFromVehicle(playerid);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), 0, -1, -1, -1, -1, -1, -1);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s opreste motorul si ia cheia din contact.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
gEngine[playerid] = 0;
return 1;
}
}
}
return 1;
}[/pawn]

Si cum as putea sa o fac numai atunci cand spre exmplu X porneste motorul masinii si X opreste motorul masinii?

  • Administrator
Posted

Daca vrei sa faci acea chestie cu 5 minute. Trebuie sa ii setezi viata jucatorului la 1 sau la 2 si sa o mentii asa timp de 5 minute, cand s-au terminat sa il respawnezi sau ce vrei tu sa faci cu el. Atunci cand ii setezi viata trebuie sa le trimiti si mediciulor un mesaj.

 

Pentru engine adaugi inainte de [pawn]if(Gas[idcar] <= 0)
{
SendClientMessage(playerid,COLOR_GRAD1,"Nu ai benzina pentru a porni motorul.");
return 1;
}[/pawn]

 

asta [pawn]

GetVehicleHealth(playerveh , health);

if(health <= 450)
{
SendClientMessage(playerid,COLOR_GRAD1,"Masina este prea avariata!");

RemovePlayerFromVehicle(playerid);
return 1;
}[/pawn]

 

RemovePlayerFromVehicle(playerid); e optional, daca vrei sa il dai jos din masina.

Posted (edited)

WopsS,imi da o eroare la health in aceste doua linii:

(cica nu sunt definite,dar eu am definit cu new health[MAX_PLAYERS];

Cat imi da si o eroare la playerveh,fiindca tot nu este definit:|

GetVehicleHealth(playerveh,health);
                          if(health <= 450)
Edited by Bogdan's
  • Administrator
Posted

Fara [MAX_PLAYERS]. Daca definesti asa este un vector cu 500 de elemente, sau 1.000 (depinde daca ai server de 500 de jucatori sau 1.000).

Posted

Defapt,am facut un new Float: health; la sfatul lui Adrian Petre,si am definit playerveh cu new playerveh;,totul ok pana cand dau /engine,faza e ca,cand dau /engine imi spune ca masina e avariata,dar masina are 1000 hp,se poate vedea in /dl

HAJFJuf.png

Posted (edited)

Tot aceeasi treaba,deci am facut urmatorul lucru:

new playerveh;

Si am facut ceea ce mi-ai spus tu.

new Float:health;
//                        new playerveh = GetPlayerVehicleID(playerid);
                        GetVehicleHealth(playerveh,health);
                          if(health <= 450.0)
                        {
                        SendClientMessage(playerid,COLOR_LIGHTRED,"Masina este prea avariata,contacteaza un mecanic!");
//                        RemovePlayerFromVehicle(playerid);
                        return 1;
}

Asa arata comanda intreaga:

if(!strcmp(cmd, "/engine", true))
    {
        if(IsPlayerConnected(playerid))
        {
            new name[21];
            GetPlayerName(playerid, name, sizeof(name));
            if(IsPlayerInAnyVehicle(playerid))
            {
                if(!engineOn[GetPlayerVehicleID(playerid)])
                {
                    if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
                    {
                        return 1;
                    }
                    if(Bicicleta(idcar)||IsAHarvest(idcar))
                    {
                        return 1;
                    }
                    if(IsAnOwnableCar(idcar))
                    {
                        if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
                        else { return 1; }
                    }
                        new Float:health;
//                        new playerveh = GetPlayerVehicleID(playerid);
                        GetVehicleHealth(playerveh,health);
                          if(health <= 450.0)
                        {
                        SendClientMessage(playerid,COLOR_LIGHTRED,"Masina este prea avariata,contacteaza un mecanic!");
//                        RemovePlayerFromVehicle(playerid);
                        return 1;
}
                    if(Gas[idcar] <= 0)
                    {
                        SendClientMessage(playerid,COLOR_GRAD1,"Nu ai benzina pentru a porni motorul.");
                        return 1;
                    }
                    if(gEngine[playerid] == 1) { return 1; }

                    PutPlayerInVehicle(playerid, playerveh, 0);
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(string, sizeof(string), "* %s rasuceste cheia in contact pentru a porni motorul.", sendername);
                    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    SetTimerEx("StartingTheVehicle",3500,0,"i",playerid);
                    GameTextForPlayer(playerid, "~w~Porneste vehiculul...",3500,3);
                    gEngine[playerid] = 1;
                    return 1;
                }
                if(engineOn[GetPlayerVehicleID(playerid)])
                {
                    if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
                    {
                        return 1;
                    }
                    if(Bicicleta(idcar)||IsAHarvest(idcar))
                    {
                        return 1;
                    }
                    if(IsAnOwnableCar(idcar))
                    {
                        if(PlayerInfo[playerid][pPcarkey1] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey2] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey3] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey4] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey5] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey6] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey7] == idcar) { }
                        else if(PlayerInfo[playerid][pPcarkey8] == idcar) { }
                        else { return 1; }
                    }
                    engineOn[GetPlayerVehicleID(playerid)] = false;
                    //RemovePlayerFromVehicle(playerid);
                    SetVehicleParamsEx(GetPlayerVehicleID(playerid), 0, -1, -1, -1, -1, -1, -1);
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(string, sizeof(string), "* %s opreste motorul si ia cheia din contact.", sendername);
                    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    gEngine[playerid] = 0;
                    return 1;
                }
            }
        }
        return 1;
    }

Nu cumva vine un else if (health <= 450.0)?

Edited by Bogdan's
  • Administrator
Posted

Nu.

 

playerveh trebuie sa aiba valoarea ID-ului masinii!

 

Daca ai facut [pawn]new playerveh;[/pawn] global sterge-l si sterge comentariul la acesta [pawn]// new playerveh = GetPlayerVehicleID(playerid);[/pawn]

 

Sau daca mai ai o variabila globala cu playerveh, redenumeste-o pe ce-a din comanda si inlocuieste tot in ce ti-am dat noi.

Posted (edited)

Cum sa o redenumesc,adica am facut cm mi-ati dat voi dar nu am inteles,cum adica?

Am pus in loc de playerveh am pus playerveh1 si imi da eroare ca playerveh1 nu este definit.Eu vreau sa fac pentru toate masinile,indiferent daca e de pd fbi etc...

Edited by Bogdan's
  • Administrator
Posted

Sterge ce ai facut tu acolo cu [pawn]new playerveh;[/pawn] si las-o pe cea din comanda! Acum este comentata.

Posted

M-am prins,am facut asta dinainte sa postezi tu,multumesc frumos pentru ajutor.Si in legatura cu primul punct,nu imi mai trebuie,las sa se spawneze la spital direct:))).Multumesc SA-MP.RO.

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.