GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: ptlevi - 2010. március 21. - 16:48:21

Cím: Mozgó object
Írta: ptlevi - 2010. március 21. - 16:48:21
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)?
Cím: Mozgó object
Írta: Csabesz - 2010. március 21. - 17:07:05
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
Cím: Mozgó object
Írta: Maci_ - 2010. június 14. - 17:12:02
nah ez kellet nekem is, köszi
Cím: Mozgó object
Írta: Lömpi - 2010. június 14. - 18:00:58
//Off: Mi a .....-t foglalkozol még 0.2x-el?:O omg.. kicsit sincs lejárva xD
Cím: Mozgó object
Írta: Depi - 2010. június 14. - 18:02:13
De persze azt senki nem veszi észre hogy ez csak ID : 0 -s játékosnak fog müködni.
Egy Ciklussal orvosolható.
Cím: Mozgó object
Írta: Iceaac - 2010. június 14. - 18:21:38
Minek ciklus? Terheled fele feleslegesen.. Újra lekérdezed h ott van e és ez végigfut minden playeren..
 
SetTimerEx
Cím: Mozgó object
Írta: Depi - 2010. június 14. - 18:28:33
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.
Cím: Mozgó object
Írta: Iceaac - 2010. június 14. - 18:36:21
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..
Cím: Mozgó object
Írta: Hamann - 2010. június 14. - 19:16:22
UU kár hogy nem értek ehhez.:D
\"QEMTC0tvAwJQUwlKFwVT\"
Cím: Mozgó object
Írta: Depi - 2010. június 14. - 19:38:16
#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.
Cím: Mozgó object
Írta: kurta999 - 2010. június 15. - 20:05:12
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);
Cím: Mozgó object
Írta: Depi - 2010. június 15. - 20:14:37
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
Cím: Mozgó object
Írta: ptlevi - 2010. június 18. - 13:15:38
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?