Szerző Téma: Pozíció mutatása  (Megtekintve 3083 alkalommal)

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Pozíció mutatása
« Dátum: 2013. március 07. - 17:48:40 »
+7 Show voters
Üdv all!
 


Ezt a scriptet azért készítettem, hogy véleményeket kapjak a scriptelésemrõl, vagyis hogy milyen szinten fejlõdtem.

Ez a script mutatja a jobb alsó sarokban textdraw-al, fehér színnel a pozíciódat (x, y, z, a).

 

Infók:
 
  • Készítõ: Flash(Én)

  • Elkészítési idõ: 10 perc (textdraw készítéssel együtt)

  • Sorok száma: 54

  • Parancsra eltávolítható és megjeleníthetõ: /poz

  • Tesztelve: Mûködõ képes (nálam)!


A script:
 
//   - [ Ez egy pozíció mutató script! Created By: Flash ] -
#include a_samp
#include zcmd
new
PlayerText:poz,
Float:p[4],
string[128]
;
public OnFilterScriptInit() {  SetTimer(\"ShowPoz\", 800, true); return 1; }
public OnPlayerConnect(playerid) {
poz = CreatePlayerTextDraw(playerid, 635, 439, \"512.156561, 5125.25612, 28.512344, 0.0\");
PlayerTextDrawAlignment(playerid, poz, 3);
PlayerTextDrawBackgroundColor(playerid, poz, 255);
PlayerTextDrawFont(playerid, poz, 1);
PlayerTextDrawLetterSize(playerid, poz, 0.260000, 0.699999);
PlayerTextDrawColor(playerid, poz, -1);
PlayerTextDrawSetOutline(playerid, poz, 1);
PlayerTextDrawSetProportional(playerid, poz, 1);
PlayerTextDrawHide(playerid, poz);
SetPVarInt(playerid, \"PozShow\", 0);
return 1;
}
forward ShowPoz();
public ShowPoz() {
for(new i; i < MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || !GetPVarInt(i, \"PozShow\")) continue;
GetPlayerPos(i, p[0], p[1], p[2]);
GetPlayerFacingAngle(i, p[3]);
format(string, sizeof(string), \"%f, %f, %f, %f\", p[0], p[1], p[2], p[3]);
PlayerTextDrawSetString(i, poz, string);
}
return 1;
}
CMD:poz(playerid) {
if(!GetPVarInt(playerid, \"PozShow\")) {
SetPVarInt(playerid, \"PozShow\", 1);
PlayerTextDrawShow(playerid, poz);
}else{
SetPVarInt(playerid, \"PozShow\", 0);
PlayerTextDrawHide(playerid, poz);
}
string[0] = EOS;
format(string, sizeof(string), \"Pozíciómérõ %skapcsolva!\",
(GetPVarInt(playerid, \"PozShow\") ? (\"be\") : (\"ki\"))
);
SendClientMessage(playerid, -1, string);
return 1;
}

 
Természetesen használhatjátok a saját szerveretekben.
« Utoljára szerkesztve: 2015. március 16. - 15:58:08 írta ƒlaﻛh »

Nem elérhető pisti525

  • 906
  • One Shot, One Kill
    • Profil megtekintése
Pozíció mutatása
« Válasz #1 Dátum: 2013. március 07. - 18:11:27 »
0 Show voters
Szia!
Jó lett :) Lehet hogy felhasználóm de lehet hogy nem !  Ment a + !

Pozíció mutatása
« Válasz #2 Dátum: 2013. március 07. - 20:12:24 »
0 Show voters
dázsííír.. mondjuk ilyet énis megcsinálok 10 perc alatt :D

Nem elérhető bendor

  • 2949
    • Profil megtekintése
Pozíció mutatása
« Válasz #3 Dátum: 2013. március 07. - 22:14:30 »
0 Show voters
A rendezés elég pofás, viszont észre vettem benne 1 szembetûnõ bakit, pazarlást.
OnFilterScriptInit callback-nél lefuttatsz egy ciklust, amelyben az összes id-nek lefuttatsz 1 ismétlõdõ timert, a ShowPoz callback-ra irányitva, ezzel nem is lenne gond, viszont a ShowPoz callbacknél lefuttatsz még1 ciklust ott is, a playereknek. És miért? Nem lenne egyszerûbb így?
[pawn] public ShowPoz(playerid) {[/pawn]
Remélem érted.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Pozíció mutatása
« Válasz #4 Dátum: 2013. március 07. - 22:22:10 »
0 Show voters
Még ezekkel a jobb megoldásokkal nem vagyok tisztába, szóval másold már be ahogy gondoltad.

Nem elérhető bendor

  • 2949
    • Profil megtekintése
Pozíció mutatása
« Válasz #5 Dátum: 2013. március 07. - 22:31:55 »
0 Show voters
[pawn]
forward ShowPoz(playerid);
public OnFilterScriptInit() { for(new i; i < MAX_PLAYERS; i++) SetTimerEx(\"ShowPoz\", 800, true, \"i\", i); return 1; }
public ShowPoz(playerid) {
                if(!IsPlayerConnected(playerid) || !GetPVarInt(playerid, \"PozShow\")) continue;
                GetPlayerPos(playerid, p[0], p[1], p[2]);
                GetPlayerFacingAngle(playerid, p[3]);
                format(string, sizeof(string), \"%f, %f, %f, %f\", p[0], p[1], p[2], p[3]);
                PlayerTextDrawSetString(playerid, poz, string);
        return 1;
}
[/pawn]

Pozíció mutatása
« Válasz #6 Dátum: 2013. március 07. - 22:37:33 »
0 Show voters
Nem kell annyi timer amennyi játékos van ha for ciklust használsz arra a célra hogy ellenõrizd ki OnLine játékos.
Tehát:
 
public OnFilterScriptInit() { SetTimer(\"ShowPoz\", 800, true); return 1; }
forward ShowPoz();
public ShowPoz() // A funkció ami 800 ms -ként meghívásra kerül.
{
        for(new i; i < MAX_PLAYERS; i++)  // A for ciklus mellyel ellenõrzöd ki online az IsPlayerConnected segítségével.
        {
                if(IsPlayerConnected(i) || GetPVarInt(i, \"PozShow\"))
                {
                      // Mi történjen az online játékossal.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Pozíció mutatása
« Válasz #7 Dátum: 2013. március 08. - 11:52:53 »
0 Show voters
értem, kösz a felvilágosítást
E: Már ezt is tudom, de Zsoleszka tudom hogy mi pl az IsPlayerConnected stb.., mert ha nem tudnám valószínüleg bugosra írtam volna a scriptet, de azért köszi! :)
« Utoljára szerkesztve: 2013. március 08. - 15:59:22 írta Flash »

Pozíció mutatása
« Válasz #8 Dátum: 2013. március 08. - 20:43:47 »
0 Show voters
Persze értem én hogy érted, de mégis rosszul javítottad ki a fõposztban.

Pozíció mutatása
« Válasz #9 Dátum: 2013. március 18. - 20:58:07 »
0 Show voters
Jó lett majd lehet hogy, fel használom.  :confused:

Nem elérhető Beckham

  • 1693
  • Noresz
  • Discord: Noresz#4265
    • Profil megtekintése
    • OctansV Alt:v szervere
Pozíció mutatása
« Válasz #10 Dátum: 2013. március 21. - 17:22:51 »
0 Show voters
Not bad.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal