Jump to content
  • 0

pomoc Move Objects Atomaticky


The hidden face

Dotaz

Ahoj , potřeboval bych poradit jak jde udělat třeba brána ,která se automaticky otevře když k ní někdo přijde a automaticky zavře když odejde.Vím jak se dělá normální přes příkaz ,ale na tohle přijít nemohu ,už sem prohledal spousty témat zkoušel sem to a nic jdu před bránu a ani se nehne.A pokud by šlo přidat ,že se otevře třeba jenom adminovi a nebo vip hráči.Prosil bych aby to bylo vysvětlené tak trochu jako pro debila ;).Předem díky.

Link to comment
Share on other sites

18 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

nevím jak moc debilně tedy na tom jsi ;D ale použij IsPlayerInSphere .. dáš to do OnPlayerPickupPickup

 

publick OnPlayerPickupPickUp(blabla);

{

if(IsPlayerInSphere(souřadnice místa otevření - nejlépe prostředek brány))

{

podmínka pro admina/vip

Otevřít bránu

Nastavit timer

}

}

 

Timer proto aby se po určité době zase zavřela... proto je lepší dát součadnice uprostřed brány a do akce timeru dát podmínku aby se nezavřela když je v okruhu těch souřadnic hráč (který má třeba vip aby to nezůstalo otevřené kdyby tam byl někdo kdo nemá ...)

Link to comment
Share on other sites

  • 0

nevím jak moc debilně tedy na tom jsi ;D ale použij IsPlayerInSphere .. dáš to do OnPlayerPickupPickup

 

publick OnPlayerPickupPickUp(blabla);

{

if(IsPlayerInSphere(souřadnice místa otevření - nejlépe prostředek brány))

{

podmínka pro admina/vip

Otevřít bránu

Nastavit timer

}

}

 

Timer proto aby se po určité době zase zavřela... proto je lepší dát součadnice uprostřed brány a do akce timeru dát podmínku aby se nezavřela když je v okruhu těch souřadnic hráč (který má třeba vip aby to nezůstalo otevřené kdyby tam byl někdo kdo nemá ...)

Zapomnels napsat, ze si musi na tohle tvoje reseni vytvorit pickup a potom uz muze pouzit rovnou if(pickupid == xxx) btw jsi asi hodne dlouho nepawnil co? :d

Link to comment
Share on other sites

  • 0

nevím jak moc debilně tedy na tom jsi ;D ale použij IsPlayerInSphere .. dáš to do OnPlayerPickupPickup

 

publick OnPlayerPickupPickUp(blabla);

{

if(IsPlayerInSphere(souřadnice místa otevření - nejlépe prostředek brány))

{

podmínka pro admina/vip

Otevřít bránu

Nastavit timer

}

}

 

Timer proto aby se po určité době zase zavřela... proto je lepší dát součadnice uprostřed brány a do akce timeru dát podmínku aby se nezavřela když je v okruhu těch souřadnic hráč (který má třeba vip aby to nezůstalo otevřené kdyby tam byl někdo kdo nemá ...)

oh my god coto meleš?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

oh my god coto meleš?

Souhlasim s Mágnusem

 

napiště svoje myšlenky když jste tak chytrý

 

Zapomnels napsat, ze si musi na tohle tvoje reseni vytvorit pickup a potom uz muze pouzit rovnou if(pickupid == xxx) btw jsi asi hodne dlouho nepawnil co? :d

 

no jako docela jo ale ne nic velkýho ... jinak pickup není potřeba když použije IsPlayerInSphere ;) nebo jsi nepochopil co jsem psal ... :d

Link to comment
Share on other sites

  • 0

Děkuji za radu udělal jsem to ale pořád se nedaří brána stojí zkoušel jsem verzi Hip a potom tu s tim pickupem.Tady kód :

 

Pickup :

 

 

 

brana = CreatePickup (1318,23 ,-2012.9907,384.1539,35.1719,0);

Tady je ten pickup.

public OnPlayerPickUpPickup(playerid, pickupid)
{
if( pickupid == brana)
{
if(Player[playerid][AdminLevel]==0) return SendClientMessage(playerid,COLOR_WARNING,"[ ! ] {FFFFFF}Nejsi Administrátor !");
MoveObject(brana,-2016.6999512,373.2999878,38.0999985,3,0.0000000,0.0000000,90.0000000);
SetTimer("branaoff",5000,0); // s tímhle si asi nejvíc nevím rady.Nevím jakou tam mám dát tu rychlost a jestli 0 nebo 1 zkoušel jsem oboje 
}

Není to zakončený returnem protože zatim mám další věci.

 

A pod koncem OnPlayerPickUpPickup mám toto :

forward branaoff();
public branaoff()
{
MoveObject(brana,-2016.6999512,383.3999939,38.0999985,3,0.0000000,359.7500000,89.7500000);
return 1;
}

 

 

 

IsPlayerInSphere :

 

 

 

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(IsPlayerInSphere(playerid,-2012.9907,384.1539,35.1719,5))
{
if(Player[playerid][AdminLevel]==0) return SendClientMessage(playerid,COLOR_WARNING,"[ ! ] {FFFFFF}Nejsi Administrátor !");
MoveObject(brana,-2016.6999512,373.2999878,38.0999985,3,0.0000000,0.0000000,90.0000000);
SetTimer("branaoff",5000,0); // s tímhle si asi nejvíc nevím rady.Nevím jakou tam mám dát tu rychlost a jestli 0 nebo 1 zkoušel jsem oboje 
}

Není to zakončený returnem protože zatim mám další věci.

 

A pod koncem OnPlayerPickUpPickup mám toto :

forward branaoff();
public branaoff()
{
MoveObject(brana,-2016.6999512,383.3999939,38.0999985,3,0.0000000,359.7500000,89.7500000);
return 1;
}

 

 

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

jinak pickup není potřeba když použije IsPlayerInSphere ;) nebo jsi nepochopil co jsem psal ... :d

 

callback OnPlayerPickUpPickup se vyvolá tehdy, když hráč vleze do pickupu, pravda? jenže když u té brány není žádný pickup, tak se ten callback nevyvolá, z čehož vyplývá, že se ta podmínka, zda je v okruhu brány, ani nezkontroluje

Link to comment
Share on other sites

  • 0

Tak nevim zkouším to i s IsPlayerInRangeOfPoint ,ale prostě nic :

 

 

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0 ,-2012.9907, 384.1539,35.1719)) //if(IsPlayerInSphere(playerid,-2012.9907,384.1539,35.1719,5)) //if( pickupid == brana)
{
//if(Player[playerid][AdminLevel]==0) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Nejsi Administrátor !");
MoveObject(brana,-2016.6999512,373.2999878,38.0999985,3,0.0000000,0.0000000,90.0000000);
SetTimer("branaoff",1000,1);
}

Může to bejt v tomhle publicu nebo ne?Nikdy jsem s tímhle nepracoval jsem takový začátečník s pawnem umím opravdu ten základ.Nemám třeba špatně ten SetTimer taky nevím co se tam má pořádně dát...

 

 

A pod koncem OnPlayerPickUpPickup mám toto :

 

forward branaoff();
public branaoff()
{
MoveObject(brana,-2016.6999512,383.3999939,38.0999985,3,0.0000000,359.7500000,89.7500000);
return 1;
}

Link to comment
Share on other sites

  • 0

Je tam napsaný ,ale je za dvěma lomítkama.Mám tam vždy ty věci co mi poradíte a nechám si je dokakud nějaká znich nepůjde :)

 

Nebo se ptáš na to proč to mám v public OnPlayerPickUpPickup(playerid, pickupid) ?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

tak jestli je pravda jak říká že se PickupPickUp vyvolá jen když vlezeš na pickup tak to zkus dát do OnPlayerUpdate, nějak se mi nevybavuje (teď večer) jak by se to dalo odlehčit ale pro začátek postačí. A kdyby přesto nefungovalo ujisti se že to nebrzdí třeba podmínka, nebo malí radius u brány a takovýhle věci

 

jinak ten forward a callback dej nad první public ... nevím jestli to není chyba ale ze zvyku to dolu nedávám tak nevím .. :d

 

a sorry za špatný info

Link to comment
Share on other sites

  • 0

Tak už se votvíra mrcha :d Ale trochuu zlobí třeba popojede o 5 centáku a vrátí se tak se v tom torochu pohrabu snad na to přijdu kdyby ne tak se ozvu ;) A díky všem!

 

Nastavil jsem si tam uvítací zprávu když projedu branou ale napíše mi jí to aspoň tak 20x a to jsem nezastavil :d

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Tak už se votvíra mrcha :d Ale trochuu zlobí třeba popojede o 5 centáku a vrátí se tak se v tom torochu pohrabu snad na to přijdu kdyby ne tak se ozvu ;) A díky všem!

 

Nastavil jsem si tam uvítací zprávu když projedu branou ale napíše mi jí to aspoň tak 20x a to jsem nezastavil :d

 

napíše protože když to máš v onplayerupdate tak to defacto pořád tu bráno otevírá a znovu zapíná od znova timer .. proto se nezavře a proto ti to píše pořád do kola - onplayerupdate je public který se vyvolává hodně často někde je to na wiki jak přesně ..

Link to comment
Share on other sites

  • 0

Mám to udělané takto :

 

 

public OnPlayerUpdate(playerid)
{
if(IsPlayerInSphere(playerid,-2016.8392,383.3540,35.1719,7)) //if(IsPlayerInRangeOfPoint(playerid, 10.0 ,-2012.9907, 384.1539,35.1719)) //if(IsPlayerInSphere(playerid,-2012.9907,384.1539,35.1719,5)) //if( pickupid == brana)
{
if(Player[playerid][AdminLeve]==0) return 0;
{
SendClientMessage(playerid,COLOR_GOLD,"[A-Clan] Vítej u sídla Admin Clanu!");
MoveObject(brana,-2016.6999512,373.2999878,38.0999985,3,0.0000000,0.0000000,90.0000000);
SetTimer("branaoff",4000,0);
}
}

 

Ten text to píše tak 20x ne jednou ,ale to je jedno ten tam být nemusí...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...