Szerző Téma: Bankrablás elakdtam  (Megtekintve 926 alkalommal)

Bankrablás elakdtam
« Dátum: 2012. november 14. - 21:38:21 »
0 Show voters
Ismét a segítségeteket kérem. Hogy tudok idõzítõt adni a rablásnak, hogy 5 percenként rabolhasson az illetõ?
itt a kód:
 

CMD:atmrabol(playerid,params[])
{
if(GetPlayerTeam(playerid) == Rendor || GetPlayerTeam(playerid) == Tuzolto)
{
SendClientMessage(playerid,NARANCS,\"Te legális frakcióban vagy nem rabolhatsz!\");
return 1;
}
if(atmroboff[playerid] == 1)
{
   SendClientMessage(playerid,ZOLD,\"Te már raboltál!\");
   SendClientMessage(playerid,ZOLD,\"Késõbb gyere vissza már raboltál!\");
}
if(atmroboff[playerid] == 0)
       {
   if(IsPlayerInRangeOfPoint(playerid,2.0,1495.5366,-1749.8984,15.4453) || IsPlayerInRangeOfPoint(playerid,2.0,1304.4009,-1367.9572,13.5403))
   {
          SendClientMessage(playerid,CSARGA, \"Feltörted az ATM-et szedd össze a pénzt és fuss!\");
          //TogglePlayerControllable(playerid, 0);
          SendClientMessageToAll(PIROS,\"FIGYELEM: Kirabolták az egyik atmet!\");
          atmroboff[playerid] = 1;
          //SetTimerEx(\"atmrobb\",1000,0,\"i\",playerid);
          GivePlayerMoney(playerid, random(20000 - 10000) + 1000);
          SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 2);
      }
   else
      {
      SendClientMessage(playerid,PIROS, \"Nem vagy atm közelében!\");
   }
return 1;
}
return 1;
}

Nem elérhető Lömpi

  • 1257
    • Profil megtekintése
Bankrablás elakdtam
« Válasz #1 Dátum: 2012. november 14. - 22:26:46 »
0 Show voters
SetTimerEx(\" Nemrabol \", 1000, 0, \"i\", playerid);
1000 = ezt kell atirni hogy mennyi ideig tartson..
Ezzel könnyedén megoldhatod, nézz utána kicsit wiki-n.

Nem elérhető Norby

  • 1575
    • Profil megtekintése
Bankrablás elakdtam
« Válasz #2 Dátum: 2012. november 14. - 23:42:33 »
+1 Show voters
Egy példa:
 
CMD:rabol(playerid) {
if(GetPVarInt(playerid,\"Rabol\") == 1) {
SetPVarInt(playerid,\"Rabol\",0);
SetTimerEx(\"RabolON\",300000,false,\"i\",playerid);
} else {
    //Még nem járt le a timer... (Nem lehet még rabolni).
}
return 1;
}
public RabolON(playerid) {
if(GetPVarInt(playerid,\"Rabol\") == 0) return SetPVarInt(playerid,\"Rabol\",1);
}
« Utoljára szerkesztve: 2012. november 14. - 23:44:26 írta Norby »

Bankrablás elakdtam
« Válasz #3 Dátum: 2012. november 15. - 10:18:52 »
0 Show voters
Egyszerûen nem értem ezt a timer cuccot! :D Valamit valahol elindítok, de nem megy. Ennyire jutottam, ha valaki tud segíteni akkor cimkézze meg a dolgokat, hogy mi mit csinál. :) Elõre is köszönöm.
 

forward atmrablas();
public atmrablas()
{
return 1;
}
CMD:atmrabol(playerid,params[])
{
if(GetPlayerTeam(playerid) == Rendor || GetPlayerTeam(playerid) == Tuzolto)
{
SendClientMessage(playerid,NARANCS,\"Te legális frakcióban vagy nem rabolhatsz!\");
return 1;
}
if(rabolhato[playerid] == 1) //nem rabolható
{
   SendClientMessage(playerid,ZOLD,\"Te már raboltál!\");
   SendClientMessage(playerid,ZOLD,\"Késõbb gyere vissza már raboltál!\");
}
if(rabolhato[playerid] == 0) //rabolható
       {
   if(IsPlayerInRangeOfPoint(playerid,2.0,1495.5366,-1749.8984,15.4453) || IsPlayerInRangeOfPoint(playerid,2.0,1304.4009,-1367.9572,13.5403))
   {
          SendClientMessage(playerid,CSARGA, \"Feltörted az ATM-et szedd össze a pénzt és fuss!\");
          //TogglePlayerControllable(playerid, 0);
          SendClientMessageToAll(PIROS,\"FIGYELEM: Kirabolták az egyik ATM-et!\");
          rabolhato[playerid] = 1; //itt már nem rabolható
          SetTimerEx(\"atmrablas\",20000,0,\"i\",playerid); //1 perc
          GivePlayerMoney(playerid, random(20000 - 10000) + 1000);
          SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 2);
      }
   else
      {
      SendClientMessage(playerid,PIROS, \"Nem vagy atm közelében!\");
   }
return 1;
}
return 1;
}

Bankrablás elakdtam
« Válasz #4 Dátum: 2012. november 15. - 10:35:07 »
+1 Show voters

SetTimerEx(\"idõzítõneve\", 1000, true, \"i\", false) // Elindítjuk az idõzítõt ami másodpercenként fut le addig amíg meg nem állítjuk (ha nem true hanem false az érték akkor csak 1x fut le)
forward idõzítõneve(playerid);
public idõzítõneve(playerid)
{
    // Cuccok hogy mik történjenek az idõzítõ lefutása alatt
}

 
Ha az idõzítõ minden másodpercben lefut és mondjuk egy paranccsal le szeretnénk állítani akkor a KillTimer fgv kell, és változóba kell tárolni a SetTimerEx fgv.-t, tehát mód elején létrehozol egy new valamit; -t, és hozzárendelem a függvényhez, valami = SetTimerEx(\"idõzítõneve, 1000, true, \"i\", false);
 
 
CMD:timertorol(playerid)
{
    KillTimer(valami);
    return 1;
}

Nem elérhető Norby

  • 1575
    • Profil megtekintése
Bankrablás elakdtam
« Válasz #5 Dátum: 2012. november 15. - 10:51:08 »
+1 Show voters
// Cuccok hogy mik történjenek az idõzítõ lefutása alatt[/quote]
Nem a lefutása alatt, mert akkor ez addig teljesülne ez az eljárás míg a timer számol vagyis megy..
Ami public idõzítõneve(playerid) alatt van az akkor teljesül, ha a timer/idõzítõ lejárt vagyis amikor a megadott idõ eléri a 0-t.

Bankrablás elakdtam
« Válasz #6 Dátum: 2012. november 15. - 11:23:17 »
0 Show voters
Értem. És akkor hogyan tegyem be a public alá, hogy a rabolhato-t átálítsa újra rabolhatóra?

Nem elérhető Norby

  • 1575
    • Profil megtekintése
Bankrablás elakdtam
« Válasz #7 Dátum: 2012. november 15. - 11:28:31 »
+1 Show voters
Idézetet írta: justrics date=1352974997\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29855\" data-ipsquote-contentclass=\"forums_Topic
Értem. És akkor hogyan tegyem be a public alá, hogy a rabolhato-t átálítsa újra rabolhatóra?
 
Én írtam rá egy példát nézd meg.
Amúgy meg létrehozol egy változót a változó alapesetben mondjuk legyen 0, ha a változó 0 akkor rabolható és amikor kirabolta a bankot a változót 1-re állítod (true) akár bool változó is lehet és az idõzítõt elindítod ha az adott idõ lejárt akkor a változót 0-ra állítod és egy feltétellel majd vizsgálod a változó értékét.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal