Jump to content

[Tut] Jak Zabranit Prohazovani Akci V Pickupech [**]


Recommended Posts

Jak zabranit prohazovani akci v pickupech


Obtížnost : award_star_gold_2.pngaward_star_gold_2.pngaward_star_silver_2.pngaward_star_silver_2.pngaward_star_silver_2.png

cau lidi rikam to tady porad dokola ale dycky se najde nekdo kdo se prorad divi proc se mu to prohazuje tak to sem davam jako tut prosil bych kdyb to mohly moderatori upnot nazacatek aby to proste bylo vydet dekuji


Obsah:


  • Prohazování akcí v pickupu
  • Řešení

Prohazování akcí v pickupu:
takze jiste se vam stava ze po nejake dobe hrani vejdete na pickup a stane se jina akce nez jste si v pawnu naprogramovaly (otevreny spatne menu poslal spatna sprava) a jiste jste vypozorovaly ze se to jakoby posunulo
pravou pricinu sem este nenasel ale je to zrejmne tim ze behem hry nejaky pickup zmizi ale jenom hraci ne globalne protoze se statva ze prohazene akce v pikupech ma jenom hrac

takze za jiste pouzivate:

nahore:

new nazevpickupu;
OnGameModeInit
nazevpickupu = CreatePickup(1234,1,1,2,3);
OnPlayerPickUpPickup
if(pickupid == nazevpickupu)
{
SendClientmessage(playerid,0XFF00FFAA,"prave jste vesel do pickupu");
}

tak takto to pouziva hodne lidi je to sice mene zatezove mozna i jednodusi ale neucine


Řešení:
takze jak to vyresit aby nam akce v pickupech fungovaly po cely beh serveru a bez ohledu na meneni id pickupu ?

velice jednoduse:

OnGameModeInit
CreatePickup(1234,1,1,2,3);
zde si vsimnete neni potreba pickup "pojmenovavat"
OnPlayerPickUpPickup
if(IsPlayerInSphere(playerid,1,2,3,2))//cisla 1,2,3 sou souradky XYZ a posledni cislo je okruh
{
SendClientmessage(playerid,0XFF00FFAA,"prave jste vesel do pickupu");
}
a jak to fugnuje?
kdyz mate
nazevpickupu = CreatePickup(....
a mate ho v ongamemodeinit v poradi treba jako 3 tak promena
nazevpickupu = 3;
a kdyz hrac (ID 0) vejde do pickupu (nazevpickupu) tak se osesle akce
OnPlayerPickUpPickup(0,3);
takze playerid ma hodnotu 0 a pickupid 3 ale kdyz z neznameho duvodu pickup na hrace zmizi tak uz to nehodnoti sprave zato IsPlayerInSphere neresi pickupid ale kontroluje si pozici hrace s pozici pickupu coz fugnuje vzdy
pokud chcete pouzit IsPlayerInRangeOfPoint
a nechce se vam to prepisovat muzete pouzit definici kterou sem sestavil puvodne pro sve potreby :)
#define IsPlayerInSphere(%0,%1,%2,%3,%4) IsPlayerInRangeOfPoint(%0,%4,%1,%2,%3)

 

Nebo lze pouzit muj include ktery to opravuje :)

http://pawno.cz/files/file/181-opraveni-chybneho-pickupid/



 

Návod upraven tak, aby odpovídal šabloně pro "Nové návody"

Edited by ATomas
  • Líbí se mi to! (+1) 3
Link to comment
Share on other sites

takze si udelam misto AddStatic Pickup

 

if(IsPlayerInSphere(playerid,1,2,3,2))//cisla 1,2,3 sou souradky XYZ a posledni cislo je okruh
{
SendClientmessage(playerid,0XFF00FFAA,"prave jste vesel do pickupu");
}

 

A mam to? :d

Link to comment
Share on other sites

ja ne... :)

sice je to mala rada ale hodne lidi se prorad divi proc se to prohazuje to muzu rikat do nekonecna ale porad budou pouzivat pickupid == pcikup a porad budou psat helpy proc se to prohazuje :d

Link to comment
Share on other sites

  • 1 month later...

nejak mi to nefaka..je to divne ptze to mam presne podle navodu:

 


public OnPlayerPickUpPickup(playerid, pickupid)
{
   if(IsPlayerInSphere(playerid,-2026.7573,-114.3453,1035.1719,2))
   {
   	ShowMenuForPlayer(automenu, playerid);
   }

 

A pick up mam vytvoreny:

 


CreatePickup(1274,1,-2026.7573,-114.3453,1035.1719);

 

Ale stejne mi to hazi nake errory:

 


C:\Documents and Settings\Lukyn\Plocha\tm.pwn(468) : error 004: function "IsPlayerInSphere" is not implemented
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.


 

 

nevim co s tim...pls help..diiiky

Link to comment
Share on other sites

  • 1 month later...
a co je ten okruh? ketere cislo mam pouzivat? a naco je vlastne okruh?

To je jak daleko to bude působyt.

Ale to máš vlastně jedno, protože můžeš dát třeba 5000.

Protože se to aktivuje až když je hráč v pickupu (pokud nepoužíváš vlastní timer)

Link to comment
Share on other sites

a co je ten okruh? ketere cislo mam pouzivat? a naco je vlastne okruh?

To je jak daleko to bude působyt.

Ale to máš vlastně jedno, protože můžeš dát třeba 5000.

Protože se to aktivuje až když je hráč v pickupu (pokud nepoužíváš vlastní timer)

 

ja sem si to ted skusil na povolani, de mi to bez erroru udelal sem to takhle

 

if(IsPlayerInSphere(playerid, 316.4694,1119.6985,1083.8828, 3) ==1)
{
ShowMenuForPlayer(swatmenu,playerid);
}

 

je to tak dobre?

Link to comment
Share on other sites

a co je ten okruh? ketere cislo mam pouzivat? a naco je vlastne okruh?

To je jak daleko to bude působyt.

Ale to máš vlastně jedno, protože můžeš dát třeba 5000.

Protože se to aktivuje až když je hráč v pickupu (pokud nepoužíváš vlastní timer)

No teoreticky muzes pouzit ten okruh akorat kdyz budou dva pickupy vedle sebe v mensi vzdalenosti nez 5000 tak to bude delat neplechu protoze pawno cte pokyny od zhora dolu a nehleda svoji podminku rovnou

Zjednodusene proste ti to udela i akci jineho oickupu ktery bude pobliz takze bych takto velky okruh nepouzival

Link to comment
Share on other sites

a co je ten okruh? ketere cislo mam pouzivat? a naco je vlastne okruh?

To je jak daleko to bude působyt.

Ale to máš vlastně jedno, protože můžeš dát třeba 5000.

Protože se to aktivuje až když je hráč v pickupu (pokud nepoužíváš vlastní timer)

No teoreticky muzes pouzit ten okruh akorat kdyz budou dva pickupy vedle sebe v mensi vzdalenosti nez 5000 tak to bude delat neplechu protoze pawno cte pokyny od zhora dolu a nehleda svoji podminku rovnou

Zjednodusene proste ti to udela i akci jineho oickupu ktery bude pobliz takze bych takto velky okruh nepouzival

Ale když to dá do OnPlayerPickupPickup tak ne.

Protože OnplayerPickupPickup se vyvolává až poté co hráč vztoupí do pickupu.

Link to comment
Share on other sites

Jo ja nerikam ze ne ale rikam kdyz si da okruh 5000 a bude mit dva pickupy vedle sebe a vejde do jednoho tak se vyvola co a a este k tomu se vyvola akce i z toho druheho pickupu kde vlastne nestoji

Link to comment
Share on other sites

Jo ja nerikam ze ne ale rikam kdyz si da okruh 5000 a bude mit dva pickupy vedle sebe a vejde do jednoho tak se vyvola co a a este k tomu se vyvola akce i z toho druheho pickupu kde vlastne nestoji

To jo no, to byl jen tak příklad :) sice dost blbej ale nevadí..

Nejlepší je dávat 2 :).... a když už chci označit nějákou velkou zonu tak IsPlayerInArea ....

Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...
  • 4 months later...

nechci nic rikat, ale 5000 je skoro cela hratelna mapa ^^. takze by to nejspis vyvolalo vsechny. pokud by bylo pouzivane else if(){} takby se nejspis vzdy oteiral ten 1. na seznamu

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...