Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Üzenetek - Y2K

Oldalak: 1 ... 18 19 [20] 21 22 ... 33
286
Pluginok és Programok / y2fake
« Dátum: 2011. március 16. - 14:01:45 »
A saját IP-den éred el...
Ami a felhasználási feltételeket illeti, nem módosítottam a SA-MP-ot, csak ezt használtam fel: http://wiki.sa-mp.com/wiki/Query_Mechanism

287
2. régió / [1. forduló] Y2K vs Light
« Dátum: 2011. március 15. - 21:03:26 »
GL Light!

288
Beszélgetés / Counter Strike 1.6?
« Dátum: 2011. március 15. - 20:50:50 »
Itt egy nagyon jó szerver/társaság... Viszonylag jól nyomják...
http://azc.hu/

289
Pályakészítõ Liga / Beszélgetés
« Dátum: 2011. március 15. - 20:48:57 »
Seville:
Utoljára aktív: Ma - 20:48:14

290
Pluginok és Programok / y2fake
« Dátum: 2011. március 15. - 20:35:34 »
y2fake
 
Hello Világ!
Hadd mutassam be a y2fake-t, a (nagyon) picuri ál-SA:MP-szervert, amely 15 perc alatt íródott Free Pascal-ban! Ezen alkalmazás azoknak válik hasznára, akik szeretnének a (valószínûleg otthoni) szerverük nevében üzenetet hagyni, hogy miért is nem fut,és nem akarják, hogy egy valódi szerver zabálja az erõforrásaikat. A faker nem tesz mást, mint, hogy \"szimulálja\"a szerver válaszait a különféle lekérésekre. Természetesen, ezt használva a játékosok nem tudnak meg belépni a szerverre, de legalább látják majd a számukra otthagyott üzenetet.
\"width=500http://kepfeltoltes.hu/110315/pic1_www.kepfeltoltes.hu_.png[/img]
\"width=500http://kepfeltoltes.hu/110315/pic2_www.kepfeltoltes.hu_.png[/img]
\"width=500http://kepfeltoltes.hu/110315/pic3_www.kepfeltoltes.hu_.png[/img]
Letöltés: http://solidfiles.com/d/27b84/
(benne: .pas forrás + .exe futtatandó fájl)
Programozta: Y2K (2011. március 15.)

291
Leírások/Útmutatók / [TUT] Teljesen automata ajtók és kapuk
« Dátum: 2011. március 15. - 20:03:56 »
Idézetet írta: ChuckNorris date=1300215006\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6850\" data-ipsquote-contentclass=\"forums_Topic
Szép,DE
 

 
new valamicske

 

Lemaradt a ; jel  :D
 
[/quote]
Hehe, nézd már meg jobban!

292
Szerintem hagyd a WoD-ot a fenébe, akkora szorzóik vannak, hogy az már überfelesleges!

293
\"mysql.gif\"
 
Bevezetés:
Ez a téma hasonló \"PVar és sima változók\" címû \"tutorial\"-omhoz , ahol a PVar-okat és az egyszerû változókat hasonlítottam össze. Az a téma azt mutatta be, melyik gyorsabb az adatok beolvasásában.
Mindegy, most három MySQL plugin-t fogunk összehasonlítani.
1: SA:MP MySQL Plugin 1.2.1 (StrickenKid) - http://forum.sa-mp.com/showthread.php?t=122983
2: MySQL Plugin R4 (G-StyleZzZ) - http://forum.sa-mp.com/showthread.php?t=56564
3: SAMP-MySQL v0.15 (ADreNaLiNe-DJ) - http://forum.sa-mp.com/showthread.php?t=7106
Kis statisztika:
SA:MP MySQL Plugin 1.2.1 (StrickenKid)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
MySQL Plugin R4 (G-StyleZzZ)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
SAMP-MySQL v0.15 (ADreNaLiNe-DJ)
MySQL Plugin R4 (G-StyleZzZ)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
Lehet hülye vagyok, mert a funkciókat osztályozom!  ;)
Kísérleti kód:
A MySQL Plugin R4 (G-StyleZzZ) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row_format(Data, \"|\")) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();

 
A SA:MP MySQL Plugin 1.2.1 (StrickenKid) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row(Data, \"|\")) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();

 
A SAMP-MySQL v0.15 (ADreNaLiNe-DJ) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
samp_mysql_query(\"SELECT X, Y, Z FROM Armour\");
samp_mysql_store_result();
while(samp_mysql_fetch_row(Data)) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
samp_mysql_free_result();

 
Kísérlet eredménye:
 
G-StyleZzZ plugin-jának ideje: 19 ms[/quote]
 
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row_format(Data, \"|\")) {
       sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
        CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();
TickEnd = GetTickCount();
printf(\"G-StyleZzZ plugin-jának ideje: %i ms\", TickEnd - TickStart);

 

Strickenkid plugin-jának ideje: 10 ms[/quote]
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row(Data, \"|\")) {
             sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
         CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();
TickEnd = GetTickCount();
printf(\"Strickenkid plugin-jának ideje: %i ms\", TickEnd - TickStart);
 
ADreNaLiNe-DJ plugin-jának ideje: .... ms[/quote]
 
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
samp_mysql_query(\"SELECT X, Y, Z FROM Armour\");
samp_mysql_store_result();
while(samp_mysql_fetch_row(Data)) {
             sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
         CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
samp_mysql_free_result();
TickEnd = GetTickCount();
printf(\"ADreNaLiNe-DJ plugin-jának ideje:\", TickEnd - TickStart);

 
Következtetés:
Nem mennék ebbe bele, ez csak egy sebességellenõrzés volt az adatok beolvasását tekintve. A ADreNaLiNe-DJ plugin-jánál lévõ ....-rõl annyit, hogy crash-elt, nem volt képes annyi adat beolvasására  ;D
 
Strickenkid plugin-jának ideje: 10 ms
G-StyleZzZ plugin-jának ideje: 19 ms
ADreNaLiNe-DJ plugin-jának ideje: <Crash-elt>
[/quote]
Írta: Carlton (2010. július 21.) (http://forum.sa-mp.com/showthread.php?t=161726)

Fordította: Y2K (2010. augusztus 2.)

294
Leírások/Útmutatók / [Leírás] Jármû egy adott személy számára
« Dátum: 2011. március 15. - 19:40:55 »
JÁRMÛ EGY ADOTT SZEMÉLY SZÁMÁRA
 
Íme még egy TuT, melyben bemutatom, hogyan kell jármûvet készíteni, kizárólag egy adott személy számára.
Elõször is, egy változót kell létrehoznunk a szkript elején:
 
new Daniel; // a megnevezés nem számít, bármi lehet, de késõbb is azt használd

 
A második lépés a jármû lerakása a játékmódba. Keressétek meg az OnGameModeInit()-et és azon belül a meglévõ AddStaticVehicle(...)-ek alá (ha vannak) rakjátok be a jármûvet:
 
Daniel= AddStaticVehicle(...)

 
hogy a szerver tudja, ez az a jármû, melybe csak az adott személy szállhat bele. Ha nem ismeritek az AddStaticVehicle(...)-ot, látogassatok el ide: http://wiki.sa-mp.com/wiki/AddStaticVehicle
 
Daniel = AddStaticVehicle(451,1890.1632,1989.1708,13.4920,179.9223,6,6); // ez egy Turismo lesz az LV parkolóban

 
Most jön az összetettebb rész, OnPlayerStateChange használtával ellenõrizzük, hogy a játékos beült-e a jármûbe:
 
public OnPlayerStateChange(playerid, newstate, oldstate) {
    new PlayerName[24];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    if(newstate == PLAYER_STATE_DRIVER) {
        new Vehicle = GetPlayerVehicleID(playerid);
        if(Vehicle == Daniel) {
            if(strcmp(PlayerName,\"Daniel_Klaic\",true)){ // ellenõrizzük, hogy a játékos neve az-e, mint akinek a jármûvet készítettük
                RemovePlayerFromVehicle(playerid); // ha nem õ az, kidobjuk a jármûbõl
                SendClientMessage(playerid, 0x33AA33AA, \"Ez a jármû Daniel_Klaic tulajdona!\"); // üzenetet dobunk neki
           }
        }
    } 
    return 1;
}

 
Ez lenne az egész! Ha minden úgy csináltatok, mint én, a jármûvet csak Daniel_Klaic vezetheti. Itt van, hogyan kéne, hogy kinézzen:
 
//a szkript elején:
new Daniel;
//az OnGameModeInit()-en vagy az OnFilterScriptInit()-en belül:
Daniel = AddStaticVehicle(451,1890.1632,1989.1708,13.4920,179.9223,6,6);
//OnPlayerStateChange
public OnPlayerStateChange(playerid, newstate, oldstate) {
    new PlayerName[24];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    if(newstate == PLAYER_STATE_DRIVER) {
        new Vehicle = GetPlayerVehicleID(playerid);
        if(Vehicle == Daniel) {
            if(strcmp(PlayerName,\"Daniel_Klaic\",true)){ // ellenõrizzük, hogy a játékos neve az-e, mint akinek a jármûvet készítettük
                RemovePlayerFromVehicle(playerid); // ha nem õ az, kidobjuk a jármûbõl
                SendClientMessage(playerid, 0x33AA33AA, \"Ez a jármû Daniel_Klaic tulajdona!\"); // üzenetet dobunk neki
           }
        }
    } 
    return 1;
}

 
Remélem segítettem, ha valamit nem értetek, kérdezzetek lent!
Írta: [WebeR]SoaD123 (http://balkan-samp.com/forum/index.php?topic=8137.0)

Fordította: Y2K (2010. augusztus 1.)

295
\"mysql.gif\"
 
Bevezetés:
Ez a téma hasonló \"PVar és sima változók\" címû \"tutorial\"-omhoz , ahol a PVar-okat és az egyszerû változókat hasonlítottam össze. Az a téma azt mutatta be, melyik gyorsabb az adatok beolvasásában.
Mindegy, most három MySQL plugin-t fogunk összehasonlítani.
1: SA:MP MySQL Plugin 1.2.1 (StrickenKid) - http://forum.sa-mp.com/showthread.php?t=122983
2: MySQL Plugin R4 (G-StyleZzZ) - http://forum.sa-mp.com/showthread.php?t=56564
3: SAMP-MySQL v0.15 (ADreNaLiNe-DJ) - http://forum.sa-mp.com/showthread.php?t=7106
Kis statisztika:
SA:MP MySQL Plugin 1.2.1 (StrickenKid)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
MySQL Plugin R4 (G-StyleZzZ)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
SAMP-MySQL v0.15 (ADreNaLiNe-DJ)
MySQL Plugin R4 (G-StyleZzZ)
Funkciók: \"yellow_star.gif\"\"yellow_star.gif\"
Sebesség: Majd kiterítjük
Lehet hülye vagyok, mert a funkciókat osztályozom!  ;)
Kísérleti kód:
A MySQL Plugin R4 (G-StyleZzZ) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row_format(Data, \"|\")) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();

 
A SA:MP MySQL Plugin 1.2.1 (StrickenKid) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row(Data, \"|\")) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();

 
A SAMP-MySQL v0.15 (ADreNaLiNe-DJ) tesztjéhez a következõ kódot használjuk:
 
new
       Data[25],
       Float:LoadedP[3];
samp_mysql_query(\"SELECT X, Y, Z FROM Armour\");
samp_mysql_store_result();
while(samp_mysql_fetch_row(Data)) {
     sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
     CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
samp_mysql_free_result();

 
Kísérlet eredménye:
 
G-StyleZzZ plugin-jának ideje: 19 ms[/quote]
 
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row_format(Data, \"|\")) {
       sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
        CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();
TickEnd = GetTickCount();
printf(\"G-StyleZzZ plugin-jának ideje: %i ms\", TickEnd - TickStart);

 

Strickenkid plugin-jának ideje: 10 ms[/quote]
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
mysql_query(\"SELECT X, Y, Z FROM Armour\");
mysql_store_result();
while(mysql_fetch_row(Data, \"|\")) {
             sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
         CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
mysql_free_result();
TickEnd = GetTickCount();
printf(\"Strickenkid plugin-jának ideje: %i ms\", TickEnd - TickStart);
 
ADreNaLiNe-DJ plugin-jának ideje: .... ms[/quote]
 
new
       Data[25],
       Float:LoadedP[3];
new TickStart;
new TickEnd;
TickStart = GetTickCount();
samp_mysql_query(\"SELECT X, Y, Z FROM Armour\");
samp_mysql_store_result();
while(samp_mysql_fetch_row(Data)) {
             sscanf(Data, \"p<|>fff\", LoadedP[0], LoadedP[1], LoadedP[2]);
         CreatePickup(1242, 2, LoadedP[0], LoadedP[1], LoadedP[2], -1);
}
samp_mysql_free_result();
TickEnd = GetTickCount();
printf(\"ADreNaLiNe-DJ plugin-jának ideje:\", TickEnd - TickStart);

 
Következtetés:
Nem mennék ebbe bele, ez csak egy sebességellenõrzés volt az adatok beolvasását tekintve. A ADreNaLiNe-DJ plugin-jánál lévõ ....-rõl annyit, hogy crash-elt, nem volt képes annyi adat beolvasására  ;D
 
Strickenkid plugin-jának ideje: 10 ms
G-StyleZzZ plugin-jának ideje: 19 ms
ADreNaLiNe-DJ plugin-jának ideje: <Crash-elt>
[/quote]
Írta: Carlton (2010. július 21.) (http://forum.sa-mp.com/showthread.php?t=161726)

Fordította: Y2K (2010. augusztus 2.)

296
Leírások/Útmutatók / [TUT] ZCMD parancsfeldolgozó
« Dátum: 2011. március 15. - 19:34:20 »
ZCMD PARANCSFELDOLGOZÓ
 
A zcmd elõnyei a dcmd-hez viszonítva:
 
  • SEBESSÉG - Több parancs esetén a szerveren a sebesség nem elhanyagolható.

  • EGYSZERÛSÉG - A zcmd szerintem a parancsok írásának talán legegyszerûbb módja. Persze, ezt nekted kell eldöntenetek.


Miért gyorsabb a zcmd, mint a dcmd?
Gyorsabb, mivel a dcmd OnPlayerCommandText(), a zcmd pedig a CallLocalFunction() segítségével hívja a parancsokat. Illetve, amikor a játékos meghívja a parancsot, a dcmd végigfut az összes parancson, ellenõrizve, hogy azt keresi-e. Ez nem éppen szerencsés, ha a parancs (amely akár 300 körül is lehet, nagyobb munkákban), amelyet keres, nem létezik, és õ mégis végignézi mindegyiket (hiszen nem találta még meg) a szkriptben, ezzel pedig feleslegesen használja az erõforrásokat.
Használat:
A használata nagyon egyszerû. Töltsétek le a függvénykönyvtárat a lenti linkrõl!
>>> LETÖLTÉS <<<
A letöltött függvénykönyvtárat helyezzétek a pawno \"include\" mappájába.
A szkript elejére írjátok be a(z) \"#include <zcmd>\" szöveget, majd kövessétek a lenti utasításokat egy parancs kidolgozásához.
A parancs kidolgozása zcmd-vel nagyon egyszerû. Az alábbi példán minden be van mutatva:
 
CMD:parancsneve(playerid, params[]){ // A \"CMD:\" elõtag után írd a parancsot, vagyis, amit a játékosnak a parancs futtatásához be kell írnia (ebben az esetben ez: /parancsneve) 
    //  a parancs hívása esetén lefutó kód
    return 1;
}

 
Az ilyen parancsot mindenen kívül rakjátok, például:
 
public OnPlayerText(playerid, text[]){
return 1;
}
CMD:parancsneve(playerid, params[]){ // A \"CMD:\" elõtag után írd a parancsot, vagyis, amit a játékosnak a parancs futtatásához be kell írnia (ebben az esetben ez: /parancsneve)
    //  a parancs hívása esetén lefutó kód
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[]){
return 0;
}

 
playerid - a parancsot beíró játékos azonosítója
params[] - a szóköz után rakott egyéb szövegek
A szkriptekben két visszahívás is használható.
OnPlayerCommandReceived(playerid, cmdtext[]) - Meghívódik, amikor a szerver megkapja a parancsot a játékostól. Ha itt return 0; szerepel, nem fut le a parancs.
OnPlayerCommandPerformed(playerid, cmdtext[], success) - Meghívódik, amikor a parancs lefut. Ha itt return 0; szerepel, \"Unknown command\" üzenet fog megjelenni.
Ezeket a visszahívásokat nem kell feltétlenül használni, csak, ha szükség van rá.
Ha zcmd-t szeretnél használni filterszriptben, ne felejtsd ki az alábbiakat, különben nem fog mûködni (alapismeret)
 
#define FILTERSCRIPT

 
Ha szeretnéd ellenõrizni, hogy a játékos írt-e valamit a parancs után, használd ezt:
 
if (isnull(params))

 
Ha sscanf-et is használsz, az ellenõrzés nem szükséges, az magától megteszi azt.
Írta: LordShigi (http://balkan-samp.com/forum/index.php?topic=10516.0)

Köszönet: ZeeX-nek a zcmd feldolgozó kidolgozásáért, és az útmutató angol nyelvû változatáért, melyet bõvítettünk


Fordította: Y2K (2010. augusztus 1.)

297
Leírások/Útmutatók / [TUT] Teljesen automata ajtók és kapuk
« Dátum: 2011. március 15. - 19:33:18 »
TELJESEN AUTOMATA AJTÓK ÉS KAPUK
 
Elõzmények:
Úgy egy hete azt álmodtam, hogy van egy RP szerverem. :) Nem tudom miért, de ilyet szerintem nem mindenki szokott éjjel megálmodni. Na, ezt az álmot kezdtem el megvalósítani. Kezdtem írogatni egy teljesen saját, egyedi RP módot, mely egy teljesen saját, egyedileg map-olt településen játszódik. Ahogyan írogattam, gondoltam legyen benne egy bevásárlóközpont. Amint az említett bevásárlóközpontot építgettem, hatalmas dolog ugrott be: mi lenne ha itt a
/bemegy

 és
/kimegy

 helyett \"fotocellás\" ajtó lenne, mint IRL (In Real Life = a való életben)...
Feltételek:
Ebben a leírásban az
IsPlayerInRangeOfPoint

 függvényt fogjuk használni, mely csak a v0.3a vagy annál újabb kiadásokban mûködik. Régebbi kiadás esetén a következõ függvény kódba való beillesztése szükségeltetik:
 
stock IsPlayerInRangeOfPoint(playerid, Float:radius, Float:X, Float:Y, Float:Z){
    new Float:px,Float:py,Float:pz;
    GetPlayerPos(playerid,px,py,pz);
    return ( ( ((px-X)*(px-X))+((py-Y)*(py-Y))+((pz-Z)*(pz-Z)) ) >= radius*radius );
}

 
Változó, változó, mindennek az alapja:
Minden függvényen kívül hozzunk létre egy új változót, valahogy így:
 
new valamicske;

 
Az újonnan létrehozott változónak OnFilterScriptInit vagy OnGameModeInit alatt adjuk értékül a mozgatni kívált objektum azonosítóját.
 
valamicske = CreateObject(objectid, X, Y, Z,  elfX, elfY, elfZ); // itt a csukott állapot koordinátáit adjuk meg

 
Idõzítés:
Most hozzunk létre egy idõzítõt, mely adott idõközönként (ajánlott 500ms) meghív egy saját függvényt, mely ellenõrzi van-e játékos a közelben, és ha van, kinyitja az ajtót vagy a kaput:
 
SetTimer(\"ajtotimer\", 500, true);

 
Egy rövidke függvényecske:
Végül íme maga a \"központi\" függvény, melyet igyekeztem bõségesen felkommentezni:
 
forward ajtotimer(); // prototípus
public ajtotimer(){
    new bool:nyissuk = false; // egy helyi változó
    for(new i; i<MAX_PLAYERS; i++){ // minden játékost ellenõrzünk
        if(!IsPlayerConnected(i)) continue; // ha nincs ilyen játékos, ugrunk a következõre
        if(IsPlayerInRangeOfPoint(i, 7.5, X, Y, Z)){
            nyissuk=true; // ha 7.5 egységen belül van, legyen kinyitva neki - az értékeket itt is helyettesítsük a csukott állapotéval
            break; // ha egy játékos a közelben van, nem nézünk tovább, hanem nyitunk
        }
    }
    if(nyissuk)
        MoveObject(valamicske, nyX, nyY,  nyZ, seb); // ha van játékos a közelben lassan áthelyezzük az objektumot - \"kinyissuk\" - az értékeket itt a nyitott állapotéval helyettesítsük be
    else
        MoveObject(valamicske, X, Y, Z, seb); // ha nincs játékos a közelben, becsukjuk - az értékeket itt is helyettesítsük a csukott állapotéval
}

 
Írta: Y2K (2010. augusztus 12.)
Frissítette: Y2K (2010. augusztus 23.)

298
Leírások/Útmutatók / [Leírás] Szöveg kiíratása a játékos feje fölé
« Dátum: 2011. március 15. - 19:30:17 »
SZÖVEG KIÍRÁSA A JÁTÉKOS FEJE FÖLÉ
 
Üdv! Sokan próbálnak szöveget megjeleníteni a játékos feje fölött vagy máshol. Erre a legegyszerûbb megoldás a 3D-szövegek használata.
Elõször, hozzunk létre egy MAX_PLAYERS méretû tömböt, melyet a játékosok 3D-szövegének azonosítóinak tárolására használunk:
 
new Text3D:3DTextIdentifiers[MAX_PLAYERS]; // név lehet bármi, de a Text3D: címke maradjon

 
A játékosok csatlakozásakor, tehát az OnPlayerConnect(playerid) esemény alatt, adjunk értéket a tömbnek, a következõ módon:
 
3DTextIdentifiers[playerid] = Create3DTextLabel(\"példaszöveg\", COLOR_WHITE, 0.0, 0.0, 0.0, 25.0, 0, 0);

 
A Create3DTextLabel paraméterei egyébként:
 

  • text[] = szöveg


  • color = szín


  • Float:X, Float:Y, Float:Z = pozíciók a három tengely mentén (ez esetben lényegtelen, hiszen a játékoshoz fogjuk csatolni)


  • Float:DrawDistance = látótávolság


  • VirtualWorld = virtuális világ, amelyben látható (ez esetben lényegtelen, hiszen a játékoshoz fogjuk csatolni)


  • testLOS = látható-e a falon át? (szerintem nem, de, ahogy gondoljátok)


Ha szövegre például a játékos azonosítóját vagy más számot szeretnénk kiíratni, elõtte formáznunk kell azt...
Szintén az OnPlayerConnect(playerid) esemény alatt vagy más tetszõleges helyen adjuk hozzá a 3D-szöveget a játékoshoz, például így:
 
Attach3DTextLabelToPlayer(3DTextIdentifiers[playerid], playerid, 0.0, 0.0, 0.5);

 
Az Attach3DTextLabelToPlayer paraméterei egyébként:
 

  • Text3D:id = a 3D-szöveg azonosítója (ezt tárolja a tömbünk)


  • playerid = a játékos azonosítója


  • Float:OffsetX, Float:OffsetY, Float:OffsetZ = eltérés a játékostõl (Z-koordináta legyen nagyobb, hogy felette legyen)


Más csak egy maradt hátra, a 3D-szöveg megsemmisítése az OnPlayerDisconnect(playerid, reason) esemény alatt:
 
Delete3DTextLabel(3DTextIdentifiers[playerid]);

 
Kiegészítés: Ha a szöveget és/vagy a színt meg szeretnéd késõbb változtatni, használd az Update3DTextLabelText függvényt, melyrõl bõvebben ITT olvashatsz.
Írta: Y2K (2010. augusztus 4.)

299
Leírások/Útmutatók / [TUT] Színezett szöveg (0.3c)
« Dátum: 2011. március 15. - 19:29:37 »
Íme, újra írásra szántam magam, s ezúttal a színek szövegésével (OMFG; reggel van) szövegek színezésével fogok foglalkozni. Alapvetõen a dolog nem nehéz, de hátha akad valaki, aki még nem ismeri. Szeretném megjegyezni, hogy ez csakis a 0.3c verzióban mûködik!
Magát a színt a kiírandó szövegbe kell beilleszteni {RRGGBB} formában. Az eddig használt integer típusban mentett színek 0xRRGGBBAA formátumban vannak mentve, így, ha megszeretnénk kapni egy szín beillesztendõ kódját, elég levenni a 0x-et (hex elõtag), illetve az utolsó két számot (alpha komponens), illetve hozzáadni a { és } jeleket.
Konkrét példa:
Kiírandó szöveg: Y2K
 
SendClientMessageToAll(0xF81414AA, \"Y{FFAF00}2{6EF83C}K\");

 
Hát ez így great! Kicsit még magyaráznék, utána jön egy kis trükk... Az Y-nak nem adtam meg még egyszer a színét, hiszen a függvény elsõ paramétere a kezdõszínt adja, azaz, amivel a szöveg legeleje kiíródik. Ha esetleg nekünk így nem tetszene, a következõ a megoldás:
 
SendClientMessageToAll(-1, \"{F81414}Y{FFAF00}2{6EF83C}K\");

 
Remélem érthetõ! Most vetõdik fel a kényelmetlenség: mi történik, ha neadj\'isten 1000 karakteres szöveget szeretnénk kiszínezni. Oda-vissza ugráljuk a kódban, ki-be másolgatva a színkódokat? Íme a trükkje: definiálni kell a színkódokat, nem megfeledkezve a { és } jelekrõl, pl.:
 
#define TC_RED {F81414}
#define TC_ORANGE {FFAF00}
#define TC_GREEN {6EF83C}

 
Most a definiált színkódokat be tudjuk illeszteni, ha lezárjuk a szöveget (\" karakterrel), odaírjuk a definiált nevet, majd újra megnyitjuk a szöveget és írjuk tovább, pl.:
 
SendClientMessageToAll(-1, \"\"#TC_RED\"Y\"#TC_ORANGE\"2\"#TC_GREEN\"K\");

 
Máris sokkal átláthatóbbak a színek, és egyszerûbb is õket létrehozni!
 
SendClientMessageToAll(-1, \"\"#TC_RED\"KÖSZÖNÖM A FIGYELMET! #\"TC_GREEN\"KÉRDÉSEK?\");

300
Pályakészítõ Liga / Beszélgetés
« Dátum: 2011. március 15. - 18:59:58 »
Idézetet írta: V.V date=1300209072\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6787\" data-ipsquote-contentclass=\"forums_Topic


mikor lesznek feladatok?
 
Elvileg Ma Este Kapjuk Meg Õket.
 
[/quote]
23:59-kor  ;D

Oldalak: 1 ... 18 19 [20] 21 22 ... 33
SimplePortal 2.3.7 © 2008-2024, SimplePortal