Szerző Téma: Mozgó object  (Megtekintve 1718 alkalommal)

Nem elérhető ptlevi

  • 235
    • Profil megtekintése
Mozgó object
« Dátum: 2010. március 21. - 16:48:21 »
0 Show voters
Azt szeretném kérni tőletek, hogy hogyan lehet azt megcsinálni azt, hogy csak akkor nyíljon ki egy kapu ha odamész (nem csak adminnak, lehetőleg 0.2X verziójú kellene, de felrakhatjátok a 0.3a verziót is)?
« Utoljára szerkesztve: 2010. március 21. - 16:50:02 írta ptlevi »

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
Mozgó object
« Válasz #1 Dátum: 2010. március 21. - 17:07:05 »
0 Show voters
Eloször is szükséged lesz egy idozítore.
 

new Gate; // Mód tetejére
public OnGameModeInit()
{
   Gate = CreateObject(...); // Object létrehozása
   return 1;
}
public OnPlayerConnect ( playerid ) return SetTimerEx ( \"OpenGate\", 1000, true , \"d\", playerid );

 
És a függvény.:
 

forward OpenGate();
public OpenGate()
{
   if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
   {
        MoveObject(Gate, X,Y,Z, 3); // Nyitva
   }
   else
   {
       MoveObject(Gate, X,Y,Z, 3); // Zárva
   }
}

 
Másold be úgy, hogy más funkciót ne zavarjon...
Hogy muködjön szükséged lesz a PlayerToPoint függvényre.:
 

stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
   new Float:oldposx, Float:oldposy, Float:oldposz;
   new Float:tempposx, Float:tempposy, Float:tempposz;
   GetPlayerPos(playerid, oldposx, oldposy, oldposz);
   tempposx = (oldposx -x);
   tempposy = (oldposy -y);
   tempposz = (oldposz -z);
   if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
   {
       return 1;
   }
   return 0;
}

 
·· Ezt másold be a mód aljára, vagy oda ahol nem zavar más funkciót.
0.2X és 0.3a -val is kompatibilis.  :)
Remélem segítettem.  ;)
Szerk.: Javítva! -
2010.6.15
« Utoljára szerkesztve: 2010. június 15. - 22:00:33 írta Csabesz »

Nem elérhető Maci_

  • 220
    • Profil megtekintése
Mozgó object
« Válasz #2 Dátum: 2010. június 14. - 17:12:02 »
0 Show voters
nah ez kellet nekem is, köszi

Nem elérhető Lömpi

  • 1257
    • Profil megtekintése
Mozgó object
« Válasz #3 Dátum: 2010. június 14. - 18:00:58 »
0 Show voters
//Off: Mi a .....-t foglalkozol még 0.2x-el?:O omg.. kicsit sincs lejárva xD

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Mozgó object
« Válasz #4 Dátum: 2010. június 14. - 18:02:13 »
0 Show voters
De persze azt senki nem veszi észre hogy ez csak ID : 0 -s játékosnak fog müködni.
Egy Ciklussal orvosolható.

Nem elérhető Iceaac

  • 2187
    • Profil megtekintése
Mozgó object
« Válasz #5 Dátum: 2010. június 14. - 18:21:38 »
0 Show voters
Minek ciklus? Terheled fele feleslegesen.. Újra lekérdezed h ott van e és ez végigfut minden playeren..
 
SetTimerEx

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Mozgó object
« Válasz #6 Dátum: 2010. június 14. - 18:28:33 »
0 Show voters
Idézetet írta: Iceaac date=1276532498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1052\" data-ipsquote-contentclass=\"forums_Topic
Minek ciklus? Terheled fele feleslegesen.. Újra lekérdezed h ott van e és ez végigfut minden playeren..
 
SetTimerEx

 

Hirtelen az jutott eszembe,de sok Timer is terhel.

Nem elérhető Iceaac

  • 2187
    • Profil megtekintése
Mozgó object
« Válasz #7 Dátum: 2010. június 14. - 18:36:21 »
0 Show voters
Idézetet írta: Draven date=1276532913\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1052\" data-ipsquote-contentclass=\"forums_Topic


Minek ciklus? Terheled fele feleslegesen.. Újra lekérdezed h ott van e és ez végigfut minden playeren..
 
SetTimerEx

 

Hirtelen az jutott eszembe,de sok Timer is terhel.
 
[/quote]
Khm SetTimer helyett, és am sokkal jobban terhel az, amit mondtál, ez csak egy egy másodperces nem ismétlodo idozíto..

Nem elérhető Hamann

  • 145
    • Profil megtekintése
Mozgó object
« Válasz #8 Dátum: 2010. június 14. - 19:16:22 »
0 Show voters
UU kár hogy nem értek ehhez.:D
\"QEMTC0tvAwJQUwlKFwVT\"

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Mozgó object
« Válasz #9 Dátum: 2010. június 14. - 19:38:16 »
0 Show voters
#include <a_samp>
new Gate; // Mód tetejére
forward OpenGate();
public OnGameModeInit()
{
    SetTimerEx(\"OpenGate\", 1000, true , \"b\");
    Gate = CreateObject(...); // Object létrehozása
    return 1;
}
public OpenGate()
{
    if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
    {
         MoveObject(Gate, X,Y,Z, 3); // Nyitva
    }
    else
    {
        MoveObject(Gate, X,Y,Z, 3); // Zárva
    }
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
        return 1;
    }
    return 0;
}

 
Csabesz a playerid felesleges ha azt akarja hogyminden játékosra igaz legyen.

És a SetTimerEx-be nem vok biztos h jól írtam mert még nem használtam.

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Mozgó object
« Válasz #10 Dátum: 2010. június 15. - 20:05:12 »
0 Show voters
Idézetet írta: Draven date=1276537096\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1052\" data-ipsquote-contentclass=\"forums_Topic

#include <a_samp>
new Gate; // Mód tetejére
forward OpenGate();
public OnGameModeInit()
{
    SetTimerEx(\"OpenGate\", 1000, true , \"b\");
    Gate = CreateObject(...); // Object létrehozása
    return 1;
}
public OpenGate()
{
    if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
    {
         MoveObject(Gate, X,Y,Z, 3); // Nyitva
    }
    else
    {
        MoveObject(Gate, X,Y,Z, 3); // Zárva
    }
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
        return 1;
    }
    return 0;
}

 
Csabesz a playerid felesleges ha azt akarja hogyminden játékosra igaz legyen.

És a SetTimerEx-be nem vok biztos h jól írtam mert még nem használtam.

 
Az nem is jó, inkább így:
OnPlayerConnect alá:
SetTimerEx(\"OpenGate\", 1000, true , \"d\", playerid);

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Mozgó object
« Válasz #11 Dátum: 2010. június 15. - 20:14:37 »
0 Show voters
Idézetet írta: kurta999 date=1276625112\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1052\" data-ipsquote-contentclass=\"forums_Topic


 
#include <a_samp>
new Gate; // Mód tetejére
forward OpenGate();
public OnGameModeInit()
{
    SetTimerEx(\"OpenGate\", 1000, true , \"b\");
    Gate = CreateObject(...); // Object létrehozása
    return 1;
}
public OpenGate()
{
    if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
    {
         MoveObject(Gate, X,Y,Z, 3); // Nyitva
    }
    else
    {
        MoveObject(Gate, X,Y,Z, 3); // Zárva
    }
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
        return 1;
    }
    return 0;
}

 
Csabesz a playerid felesleges ha azt akarja hogyminden játékosra igaz legyen.

És a SetTimerEx-be nem vok biztos h jól írtam mert még nem használtam.

 
Az nem is jó, inkább így:
OnPlayerConnect alá:
SetTimerEx(\"OpenGate\", 1000, true , \"d\", playerid);
 
[/quote]
Bocs siettem,és mondtam hogy még ilyennem nem dolgoztam,de most már fogok xD

Nem elérhető ptlevi

  • 235
    • Profil megtekintése
Mozgó object
« Válasz #12 Dátum: 2010. június 18. - 13:15:38 »
0 Show voters
THX.
Még egy kérdésre válaszolna valaki pls?
A kérdésem: És mindezt hogy lehet úgy megcsinálni hogy csak akkor nyíljon ki a kapu, ha egy bizonyos \"részlet\" szerepel a nevében a játékosnak?
PL: [Knights]levi   és ha szerepel a [Knights] akkor kinyíljon a kapu és ha nem szerepel akkor nem?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal