Szerző Téma: Lekérdezés  (Megtekintve 1652 alkalommal)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Lekérdezés
« Dátum: 2014. június 03. - 02:03:22 »
0 Show voters
Sziasztok! Nos leginkább az érdekelne, hogy meg lehetséges oldani, hogy egy adott játékos ha lerakott egy 3D textet majd a közelében van olyan 1 méter távolságba akkor lekérdezze melyik játékos ID ? Utána néztem kisebb kódnak de nem találtam semmi arra utaló dolgot amivel le lehetséges kérni a játékos ID -jét ha mondjuk elmegy a 3D text mellett. Láttam több olyan megoldást, hogy pickupot raknak le és egy 3D szöveget.. de nekem csak 3D szöveg lekérdezés kéne. Elõre köszönöm a segítséget.
[mod]Kiraktam a PREFIX-et.[/mod]
« Utoljára szerkesztve: 2014. június 03. - 14:50:29 írta Flash »

Nem elérhető kos

  • 292
    • Profil megtekintése
Lekérdezés
« Válasz #1 Dátum: 2014. június 03. - 14:59:40 »
0 Show voters
Hali, nem nehéz  8)
A bx, by, bz koordinátáknak a 3dtext koordinátáját adjad meg  :thumbsup:
Nem kell new, ha a texednél már létre van hozva, ez csak példa amit írtam  :yes:
 

new Float: bX, Float: bY, Float: bZ, id;
if(IsPlayerInRangeOfPoint(id, 1.0, bX, bY, bZ))
{
//Amit szeretnél, hogy mi történjen, ha 1méteren belül van.
}

 
és ha rám halgatsz, timert használsz onplayerupdate vagy ilyenek helyett.

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Lekérdezés
« Válasz #2 Dátum: 2014. június 03. - 17:45:02 »
0 Show voters
Hülyeség a timer .. mert akkor mindig lekérdezi neki.. szóval más megoldás amivel lekérdezem egy callback alatt.

Lekérdezés
« Válasz #3 Dátum: 2014. június 03. - 18:32:51 »
0 Show voters
hát kos megoldása a jó.
onplayerupdate alatt tényleg ne használd, de hogy a timer alól is ki lehet-e bújni, azt nem tom.
lehet a tudásom nem elég ahoz, de én más megoldást a timer-en kívûl nem tudok.
ha jobban tetszik(bár semmi értelme, csak jobban mutat) akk a timer-ben, ha a játékos a sugárba lép, akk használj alatt CallLocalFunction-t, adhatsz neki 3dtext id-t is, amely alapján majd switch-es megoldással többféle 3dtext-et is tud majd kezelni.
Nem tom hülyeség vagy nem... :?
 :whistle:
de én tuti így csinálnám, addig..... ameddig nem sikerül(egyik szokásom :) )
Üdv.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Lekérdezés
« Válasz #4 Dátum: 2014. június 03. - 18:39:12 »
0 Show voters
ZyZu, nem nagyon értem mit akarsz. A SA-MP belsõleg is azt teszi a PickUpoknál is, hogy egyfolytában csekkol minden letett pickupot, és, ha közelében vagy meghívja az eljárást. Pawnban sem tudod máshogy megoldani, és szerintem tökéletesen jó OnPlayerUpdate alá is. Akkor nem kell plusz rengeteg timert létrehozni, csak egyet használ, az is alapból meg van hívva. Így mûködik az OnPlayer(Key)StateChange is. Egyfolytában lekéri az álllapotodat, és, ha a kitétele teljesül (nem egyenlõ a (key)state az elõzõvel, akkor calllocalfunction. A streamer enumjához sajnos nem tudunk hozzáférni pawnból, a készítõ nem adott a 3dtextekhez ilyen funkciót, így ha nem akarod minden egyes létrehozás mellé a változót is létrehoznod, hookolnod kell. Az azt jelenti, hogy egy meglévõ funkciót undefiniálsz, majd lényegében visszadefiniálod egy másik stockra, ami már tartalmazza az általad beírt módosítást, pl. egy timer indítása. Basszameg, tényleg jobb lenne Timerrel :D

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Lekérdezés
« Válasz #5 Dátum: 2014. június 03. - 23:40:42 »
0 Show voters
Idézetet írta: KovaNovik date=1401813552\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48526\" data-ipsquote-contentclass=\"forums_Topic
ZyZu, nem nagyon értem mit akarsz. A SA-MP belsõleg is azt teszi a PickUpoknál is, hogy egyfolytában csekkol minden letett pickupot, és, ha közelében vagy meghívja az eljárást. Pawnban sem tudod máshogy megoldani, és szerintem tökéletesen jó OnPlayerUpdate alá is. Akkor nem kell plusz rengeteg timert létrehozni, csak egyet használ, az is alapból meg van hívva. Így mûködik az OnPlayer(Key)StateChange is. Egyfolytában lekéri az álllapotodat, és, ha a kitétele teljesül (nem egyenlõ a (key)state az elõzõvel, akkor calllocalfunction. A streamer enumjához sajnos nem tudunk hozzáférni pawnból, a készítõ nem adott a 3dtextekhez ilyen funkciót, így ha nem akarod minden egyes létrehozás mellé a változót is létrehoznod, hookolnod kell. Az azt jelenti, hogy egy meglévõ funkciót undefiniálsz, majd lényegében visszadefiniálod egy másik stockra, ami már tartalmazza az általad beírt módosítást, pl. egy timer indítása. Basszameg, tényleg jobb lenne Timerrel :D
 
Nem érted.. ha én most létrehozok egy timert akkor mindig elõhívja a játékosnak ha közelében van.. de én úgy akarom, hogy ha közelében van akkor 1x hívja elõ mint a pickupnál és többet nem.. ha elmegy a pickuptól olyan 5 méterre akkor újra lehessen használni 1x -er a lekérdezését. Erre nem találok semmit.

Nem elérhető Lucio

  • 232
    • Profil megtekintése
Lekérdezés
« Válasz #6 Dátum: 2014. június 04. - 09:37:19 »
0 Show voters
Én egy bool változóval oldanám meg. Ha a körben benne van akkor igazra állítja és a timer elejére kell írni egy visszatérést, ha igaz a változó. Ha meg nincs benne a körben akkor pedig hamisra állítja. Ha pedig az a probléma, hogy mindig hamisra állítja akkor egy olyat, hogyha nincs benne a körben ÉS igaz a változó akkor állítsa át hamisra.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Lekérdezés
« Válasz #7 Dátum: 2014. június 04. - 10:02:39 »
+1 Show voters
Timer nélkül nemhiszem hogy megoldható, úgyhogy megírtam neked!
 
#define FILTERSCRIPT
#include a_samp
public OnFilterScriptInit() {
SetTimer(\"OnPlayerUpdate2\", 500, true);
return 1;
}
//OnPlayerConnect: A PVarok értéke alapbol 0, ezért nem kell ez a sor ide, hogy: SetPVarInt(playerid, \"InZone\", 0);
forward OnPlayerUpdate2();
public OnPlayerUpdate2() {
for(new i; i < MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInRangeOfPoint(i, 2.0, 0.0, 0.0, 3.0) && !GetPVarInt(i, \"InZone\")) { // A 3DText koordinátái
   SetPVarInt(i, \"InZone\", 1);
                        // IdeHogy mi történjen ha az adott zónában van a játékos(ok)
}else if(GetPVarInt(i, \"InZone\")) SetPVarInt(i, \"InZone\", 0);
}
return 1;
}
« Utoljára szerkesztve: 2014. június 04. - 10:07:38 írta Flash »

Nem elérhető kos

  • 292
    • Profil megtekintése
Lekérdezés
« Válasz #8 Dátum: 2014. június 04. - 10:56:24 »
+1 Show voters
:facepalm:
Nem muszáj timert futtatni...
Csak ha igaz a dolog...
Boolos megoldás is jobb, de így célszerübb...
 

enum Erzekeles
{
sajt
}
new Benne[MAX_PLAYERS][Erzekeles];
new Float: bX, Float: bY, Float: bZ, id;
if(Benne[playerid][sajt] == 0)
{
if(IsPlayerInRangeOfPoint(id, 1.0, bX, bY, bZ))
{
  //Amit szeretnél, hogy mi történjen, ha 1méteren belül van.
  Benne[playerid][sajt] = 1;
  SetTimerEx(\"Sajtindito\", 1000, false, \"i\", playerid);
}
}
forward Sajtindito(playerid)
public Sajtindito(playerid)
{
if(!IsPlayerInRangeOfPoint(id, 1.0, bX, bY, bZ))
Benne[playerid][sajt] = 0;
return 1;
}

 
így a timer addig fut ameddig kell :) ha nem mûködne szólj, csak össze dobtam indulás elött kicsit siettem...
lehet return 1; helyére return 0; kell mert az 1 visszatérés lenne, lehet azt 0án kéne berakni... Majd ha otthon leszek megnézem :)
« Utoljára szerkesztve: 2014. június 04. - 11:00:58 írta kos »

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
Lekérdezés
« Válasz #9 Dátum: 2014. június 04. - 11:13:15 »
+1 Show voters
kos, enumot használsz egy ilyen kis szösszenethez? Valamint célszerûbb? Hah...

Használj PVart.


A visszatérés jó.

Nem elérhető kos

  • 292
    • Profil megtekintése
Lekérdezés
« Válasz #10 Dátum: 2014. június 04. - 11:32:15 »
0 Show voters
Igen igazad van, ott a pont :) tényleg jobb lenne azt használni rá, nem pedig enumot  :thumbsup:
De ha sok mindent akar úgy megoldani, mint ezt késõbb célszerübb lehet xd de mint montad erre elegendõ az is, jogos :)

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
Lekérdezés
« Válasz #11 Dátum: 2014. június 04. - 11:59:03 »
+1 Show voters
Én csak PVart alkalmazok (meg pluginnal GVart), ezekért nem hozok létre külön változókat. :D

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Lekérdezés
« Válasz #12 Dátum: 2014. június 04. - 15:24:55 »
0 Show voters
Megoldottam! ;) Köszönöm szépen srácok! :)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Lekérdezés
« Válasz #13 Dátum: 2014. június 03. - 02:03:22 »
0 Show voters
Sziasztok! Nos leginkább az érdekelne, hogy meg lehetséges oldani, hogy egy adott játékos ha lerakott egy 3D textet majd a közelében van olyan 1 méter távolságba akkor lekérdezze melyik játékos ID ? Utána néztem kisebb kódnak de nem találtam semmi arra utaló dolgot amivel le lehetséges kérni a játékos ID -jét ha mondjuk elmegy a 3D text mellett. Láttam több olyan megoldást, hogy pickupot raknak le és egy 3D szöveget.. de nekem csak 3D szöveg lekérdezés kéne. Elõre köszönöm a segítséget.
[mod]Kiraktam a PREFIX-et.[/mod]
« Utoljára szerkesztve: 2014. június 03. - 14:50:29 írta Flash »

Nem elérhető kos

  • 292
    • Profil megtekintése
Lekérdezés
« Válasz #14 Dátum: 2014. június 03. - 14:59:40 »
0 Show voters
Hali, nem nehéz  8)
A bx, by, bz koordinátáknak a 3dtext koordinátáját adjad meg  :thumbsup:
Nem kell new, ha a texednél már létre van hozva, ez csak példa amit írtam  :yes:
 

new Float: bX, Float: bY, Float: bZ, id;
if(IsPlayerInRangeOfPoint(id, 1.0, bX, bY, bZ))
{
//Amit szeretnél, hogy mi történjen, ha 1méteren belül van.
}

 
és ha rám halgatsz, timert használsz onplayerupdate vagy ilyenek helyett.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal