Pro pion - pion portal-scripting

Noi lucrăm cu „puncte de control“.

În această lecție, vreau să spun despre punctele de control, ceea ce mănâncă și cum să le aplice. În general, pe baza lecției noastre, vom încerca să facem o treabă simplă. Deci, să începem.






Ce este un punct de control, și cum să-l creeze.

Ce este exact punctul de control? Am explica pe degete, punctul de control - este o astfel de marcaj roșu, care se reflectă pe minimap, indiferent de distanța dintre player-ul și marca. Un alt detaliu important este faptul că jucătorul poate fi setat doar 1 punct de control vizibil. Și astfel, punctele de control sunt împărțite în 2 tipuri sunt: ​​normale, punctele de control pentru player-ul, și indicii puncte de control. Aceste puncte de control arata astfel:

Punct de control marca de obicei pentru jucător.

Checkpoint-pointer.

Și totuși, cum putem crea aceste puncte de control?

Ei bine. Pentru a face acest lucru, SA: MP există o pereche de funcții, acum voi vorbi despre ele.

SetPlayerCheckpoint (.. playerid float x float y float dimensiune float z ......);

Această funcție este utilizată pentru a crea eticheta obișnuită pentru un jucător, următorii parametri sunt utilizați în ea:

  • playerid ID-ul jucătorului
  • Float: x x coordonata punctului de control
  • Float: y y coordonata punctului de control
  • Float: z-z coordonate pentru punctul de control
  • Float: dimensiunea punctului de control Dimensiune

SetPlayerRaceCheckpoint (playerid. Tip. Flotor. X. flotor. Y. flotor. Z. flotor. Nextx. Flotor. Nexty. Flotor. Nextz. Flotor. Size)

Această funcție este utilizată pentru a crea un marcaj indicator pentru player-ul, următorii parametri sunt utilizați în ea:

  • playerid ID-ul jucătorului
  • Tip tip metki.0 Normal, 1-Finish, 2-Nu (Doar marcați), un inel comun 3-Tag, eticheta 4-ring-finisaj
  • Float: x X-coordonate
  • Float: y Y-coordonate
  • Float: z Z-coordonate
  • Float: nextx X coordonata eticheta următoare pentru a determina direcția cursorului (săgeata)
  • Float: Y coordonatele nexty ale eticheta următoare pentru a determina direcția cursorului (săgeata)
  • Float: nextz Z coordonata eticheta următoare pentru a determina direcția cursorului (săgeata)
  • Float: Dimensiunea Dimensiunea (diametru) a etichetei

De asemenea, pentru a lucra cu „etichete“ a oferit o serie de alte caracteristici (inclusiv avtovyzyvaemyh).

Funcția se numește atunci când un jucător părăsește creat marca-pointer.

De asemenea, pentru a crea astfel de etichete, puteți utiliza streamer, dar asta e altă poveste ..

Acum știm cu toții avem nevoie de o funcție pentru a scrie scripturi simple, să trecem la pasul următor.

Utilizarea de puncte de control „asupra cazului.“

Pe baza cunoștințelor și studiul funcțiilor, vă permit să scrie un script simplu câteva, în scopul de a înțelege pe deplin că același lucru sunt aceste puncte de control. Pentru a începe, să pună la sarcina, de exemplu:






- El face un punct de control pentru player-ul, în picioare pe care le va primi în mâinile cutiei, atunci se va arăta eticheta în cazul în care doriți să efectueze această casetă.
- Asigurați-un pointer semn pe echipa pentru un jucător pentru a ajunge la acel jucător va afișa un mesaj despre atingerea mărcii.

Și astfel problema stabilit, acum trece la executarea în mod natural în ordine.


Să începem jucător de lucru, de a crea o echipă / startwork.

if (! strcmp (cmdtext. "/ startwork"))
<
if (! GetPVarInt (playerid. "_work"))
<
DeletePVar (playerid "_in_hand".);
SetPVarInt (playerid "_work" 1 ..);
SendClientMessage (. Playerid - 1. "Lucrarea a fost pornit.");
DisablePlayerCheckpoint (playerid); // A se vedea nota 1 de la sfârșitul subiectului.
SetPlayerCheckpoint (playerid 603.3618 820.8993, - 43.0697 2.0 ...);
>
altfel
<
DeletePVar (playerid "_work".);
DisablePlayerCheckpoint (playerid);
SendClientMessage (. Playerid - 1. "Lucrarea a fost finalizată.");
>
>

Acum, testează-player-ul de pe dreapta vom găsi pe etichetă. Facem acest lucru în OnPlayerEnterCheckpoint pablike. Ei bine, de fapt, folosind acest public, vom gestiona jucătorului pentru a ridica caseta și instala selectarea punctului de control, sau pentru a da caseta și instala stocul etichetă.

Primul obiectiv este atins, vom merge pentru a doua.

Pentru a seta marca, vom folosi o comanda / te Grotti, pentru casa de discuri va avea showroom Grotti auto.

if (! strcmp (cmdtext. "/ Grotti"))
DisablePlayerRaceCheckpoint (playerid); // A se vedea. Nota 1 la sfârșitul subiectului.
SetPlayerRaceCheckpoint (playerid 1. 559.0508, - 1289.5999 17.2482 559.0508, - 1289.5999 17.2482 6.0 .....);
SendClientMessage (. Playerid - 1. "Tag-pointer a fost setat.");
întoarce 1;
>

Ei bine, atunci, așa cum este cazul cu obiectivul anterior, vom verifica pentru a găsi un jucător în casa noastra de discuri, de data aceasta de un alt public:

publice OnPlayerEnterRaceCheckpoint (playerid)
if (IsPlayerInRangeOfPoint (playerid 6.0 559.0508, - .. 1289.5999 17.2482).)
DisablePlayerRaceCheckpoint (playerid);
SendClientMessage (. Playerid - 1. "Tag-pointer realizat!");
>
întoarce 1;
>

Eu spun și vă arată toate principalele funcții ale puncte de control, pe care le pot folosi, de asemenea, și a condus câteva exemple utile. Din păcate, în clasa mea nu este un exemplu de utilizare a anumitor funcții și callback, dar cred că vei fi capabil să înțeleagă (prin descriere) pentru ceea ce fac. Toate exemplele i-am dat vă sunt pentru o înțelegere mai clară a modului de utilizare „tag-uri“, în cazul. Asta e tot. Mult noroc.

P.S Este posibil să fi observat în exemplele de referință de la notele de la sfârșitul subiectului. Nu am uitat despre asta, acum vă voi descrie câteva nuanțe de lucru cu puncte de control.

În SA: MP există un bug mic cu diametre puncte de control. Dacă playerul este setat punctul de control și a pus imediat un punct de control nou, dimensiunea noii etichete se va potrivi cel vechi, asa ca am eticheta înainte de instalare, ascunde vechi.

Spre deosebire de unitate de bandă, puncte de control standard de SA: MP, nu poate fi identificat prin ID-ul. Pentru a determina dacă un jucător este în punctele de control necesare, vă sugerez să utilizați verificați Playerul coordonatele.

La punctele de control stabilit de coordonate Z nu este întotdeauna adevărat, așa că pot exista erori în instalarea de puncte de control în diverse interioare samopisnyh.

Cu toate acestea, ar fi bine să adăugați:
Că în interioarele de la 0, se adaugă punctele de control nu va funcționa, deoarece ei nu au coordonatele Z.

„Puterea sângelui, nyash-myash, sânge, putere, Crimeea este al nostru!“ - (c) Natalya Poklonskaya.

Criticul trebuie să fie dispus și capabil în orice moment și în timp scurt pentru a lua locul ei criticat și de a efectua locul de muncă în mod eficient și competent. În caz contrar, critica se transformă într-o forță de bronz, de sine stătător și devine un obstacol în calea progresului. (C) AX