Ü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 - 1Mark6

Oldalak: 1 ... 6 7 [8] 9 10 ... 29
106
Segítségkérés / DIALOG_STYLE_TABLIST_HEADERS hiba
« Dátum: 2016. Július 02. - 11:24:00 »

107
Segítségkérés / Tűz?
« Dátum: 2016. Július 02. - 08:55:52 »
Nemtudom a SetPlayerEffect alatt mit értesz, de igen, még egy változót kellene egy boolean vagy egy int,
 
new bool:tuzvanrajta = false;

 
És amikor KEY_PRESSED akkor, tuzvanrajta = true, amikor meg elengedi, KEY_RELEASED, akkor meg a tuzvanrajta = false, a tűzet meg objectel rakhatod rá, object id : 18691

108
Segítségkérés / DIALOG_STYLE_TABLIST_HEADERS hiba
« Dátum: 2016. Július 02. - 08:51:58 »
Esetleg, a használati kódót, vagy a hibaüzenetet bemásolhatnád.

109
Segítségkérés / Tűz?
« Dátum: 2016. Július 01. - 22:17:01 »
Egyszerű, amíg nyomva tartja a gombot, addig rárakod a tűz objectet, amikor elengedi leveszed róla.
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange

110
Segítségkérés / Folyton hibás jelszót ad be
« Dátum: 2016. Július 01. - 22:13:43 »
if(!strcmp(inputtext, jelszo2))

111
Szkript kérések / /me hiba.
« Dátum: 2016. Június 28. - 09:59:47 »
A hiba egyszerű, előszőr is for ciklussal szebben nézne ki, de ha már while ciklust használsz, akkor annak az \'i\'-nek adj kezdőértéket :
 
new i = 0;

 
És ne a kód elején növeld az i-t hanem a kód után, mert ha az elején növeled akkor a 0-ás ID-t kihagyja ami tesztelés során esélyes, hogy te vagy.
Szóval így nézz ki rendesen :
 
CMD:me(playerid, params[])
{
new szoveg[128],string[128];
if(sscanf(params,\"s[128]\",szoveg)) return SCM(playerid, SARGA, \"Használat: /me [cselekvés]\");
new Float:X,Float:Y,Float:Z;
new i = 0;
while(i < MAX_PLAYERS)
{
   GetPlayerPos(playerid,X,Y,Z);
   if(IsPlayerInRangeOfPoint(i, 5.0, X, Y, Z))
   {
         format(string,sizeof(string),\"* %s %s\", Nev(playerid), szoveg);
         SCM(i, ROZSASZIN, string);
   }
   i++;
}
return 1;
}

112
Szkript kérések / Bandát kéne bescriptelni, de én nem tudom!
« Dátum: 2016. Június 27. - 20:42:46 »
Sajnos editekkel nem foglalkozom, de ehhez még logika sem kell, csak ami VLA-ból van azt átmásolod mellé, és átnevezed kb.

113
Szkript kérések / Bandát kéne bescriptelni, de én nem tudom!
« Dátum: 2016. Június 26. - 23:02:46 »
Megnézed, a VLA, vagy a Groove változókból mi van azokat másolod átnevezed, és a feltételekbe beleirod.

114
:D Nekem így esett kézre a Plainek megalkotása, kicsit magyaros lett, de én nekem így könnyebb volt, + ha angolul írom, még azthiszik, hogy \"kopí\". :D

115


1Mark6 - [ Invetory | Tárgy rendszer ] - MySQL R39-5
 


A rendszer tartalmazza :

  • Tárgyak létrehozása a játékban.


  • Tárgyak kezelése a játékban.


  • Tárgy adás játékosnak.


  • Tárgy elvétel játékostól.


  • Tárgy eldobás.


  • Tárgy felvétel.


  • Dinamikus rendszer, a változásokat a rendszer egyből menti, illetve kezeli.


  • A rendszer elkészítése közben nem változókba \"töltögettem\" az értékeket, hanem egy jó pár tanítóm tanácsára, az adatbázis lekérdezés során kezeltem őket. [ FONTOS ]


 
Tárgy létrehozás :
Lehetőségünk van arra, hogy a játékban hozzunk létre saját tárgyakat, ezt a \"/tárgylétrehozás\" paranccsal tehetjük meg. Ennek a parancsnak 2 paramétere van, mégpedig < Tárgy Név > és a < Tárgy Objekt >. Ha tárgynévnek olyan adatot adunk meg, amely már létezik ( Létező tárgy nevét irod be ) akkor hibaüzenetet kapunk, mivel nemtudod kétszer ugyanazt a tárgyat létrehozni. A tárgyobjekt, 2. paraméter azt a célt szolgálja, hogy amikor azt a bizonyos tárgyat eldobjuk azzal az Object-el fog legenerálódni.
Tárgy törlés :
Lehetőségünk van arra, hogy a már létező tárgyat töröljük a rendszerből a \"/tárgytörlés\" paranccsal. Ez akkor kedvező amikor például elgépeljük az adott tárgy nevét, illetve egyéb alkalmakkor használatos. A parancsnak 1 paramétere van a < Tárgy Név >, ebbe a paraméterbe annak a tárgynak a nevét kell megadni amelyiket törölni szeretnénk, nemlétező tárgy esetén szintén hibaüzenetet kapunk.
Tárgy objekt változtatás :
Lehetőségünk van arra, hogy a már létező tárgynak az objektjét megváltoztathassuk. Ezt a \"/tárgyobjekt\" paranccsal tudjuk végrehajtani. Ennek a parancsnak 2. paramétere van, az egyik < Tárgy Neve >, a másik az < Új objekt >.Ha nemlétező tárgy nevet adunk meg hibaüzenetet kapunk. Amikor megadod az új objektet, akkor a már régi objekttel rendelkező tárgyaknak NEM fog megváltzoni az objektjük, ezt egy szerver resettel lehet korigálni. Meglehet oldani, úgy is de szerintem igy elviselhető nem szeretném tovább bonyolítani.
Tárgy adás :
Lehetőségünk van arra, hogy egy játékosnak tárgyat adjunk, ezt a \"/tárgyadás\" paranccsacl tudjuk megtenni. Ennek a parancsnak 3 paramétere van. < ID >, < Tárgy Név >, < Mennyiség>. Csak a szerveren fentlévő játékosoknak tudunk tárgyat adni. Csak létező tárgyat tudunk adni. A mennyiség nincs korlátozva.
Tárgy elvétel :
A tárgy adáshoz hasonló algoritmus, a paraméterek is megegyeznek, ezt a \"/tárgyelvétel\" paranccsal érjük el. A különbség az az, hogy a mennyiség korlátozva van, csak annyi darabot tudunk elvenni az illetőtől amennyivel rendelkezik, értelemszerűen ha van 40 darabja nem vehetünk el tőle 40+-t.
Tárgyak megtekintése :
A tárgyainkat a \"/táska\" paranccsal tudjuk megtekinteni. Amíg nem rendelkezel tárgyakkal, egy üres dialogot fogsz látni.
( Gondoltam, hogy kiirtaom, hogy nincsen tárgyad, de azért csak szebb esztétikailag, amikor látod is, hogy üres az a \"táska\"). Azonban, ha van valamilyen tárgyad az megjelenik ott.
\"vJ9GV5S.png\"\"nbVdxlk.png\"
Tárgyak lista :
Megnézhetjük a létező tárgyakat is a \"/tárgylista\" paranccsal. Ez alapján tudjuk megszerezni azokat az információkat, amik szükségesek a parancsaink használatához. ( Itt tudjuk megnézni, hogy melyik tárgy létezik, illetve az objektje változott-e vagy nem ).
\"MNo1LDm.png\"
Segítség a játékban :
Amennyiben szükségünk van segítségre, használhatjuk a \"/tárgyhelp\" parancsot, amely azonban segít nekünk, tájékoztat a tárgy rendszerben előforduló parancsokról.
\"JwHcYVs.png\"
Megyjezés :
A leírás, lehet kicsit sablonosra sikeredett, de így tudtam kihangsúlyozni azokat az információkat amiket én fontosnak találok. A létrehozott tárgyaknak viselkedésünk, létrehozáskor NINCS, ez a módban kell nekünk megírni, a TargyHasznalat - plain-nél. A játékban csupán a tárgy nevét, és az objektjét tudjuk kezelni.
 

Információk
 
 
A filterscript elkészülésében közremüködő személy(ek) :
Kyosuke_Hiroshi, az ő segítségére számíthattam mindig illetve, segítőkészen válaszolt, hallgatta meg a panaszaimat.
És még közremüködtek a sampfórum lakói akik kisebb-nagyobb reakció idővel válaszoltak a kérdéseimre, közülök nem emelek ki senkit, ne hogy balhé legyen, hogy az adott személyt jobban kedvelem.
Az alap ötlet :
Be kell vallanom, az alap ötletet nem én találtam ki, ezt a tárgy kezelés az adatbázisból, nem változókba \"töltögetés\". Az eredeti ötletet, az EverLifeRPG v2-es módjában láttam, és gondoltam hasonlóképpen megpróbálom elkészíteni. Nos hát úgyérzem, hogy van benne hasonlóság, de az ő általuk elkészített rendszernek teljesen más a felépítése, illetve  a mechanikája, az enyém csak szintaktikailag hasonlít. Remélem ezért nem fognak megkövezni, a fejlesztői.
Letöltés :
Filterscript : Link
SQL fájl : Link
 

Végszó
 
 
Köszönöm szépen, hogy megtekintetted a szkriptemet, remélem hasznossá vált a számodra, ha csak tanulás szempontjából akkor is. A szkript nem hibátlan illetve akadhatnak jobb megoldások is, illetve az esztétikai elrendezés számomra kedvezőképpen lett kialakítva.
 
1Mark6 - 2016.06.25

116
Segítségkérés / MySQL lekérdezés
« Dátum: 2016. Június 25. - 19:28:57 »
Előszőr is nagyon szépen köszönöm ezt a terjedelmes választ azonban google fordító barátom segitségével elolvastam a wikit, majd megállapítottam, hogy a cache-t lehet menteni :D
Ami alapján a ciklusban elmentettem a cache-t, majd mikor az újrafut a ciklus akkor aktiválom.
Nem kell ide összefűzés, csak 4 sor :D
 
public EldobottTargyakBetoltese()
{
new sorok = cache_get_row_count();
if(sorok)
{
new Cache:betoltes;
new id,targynev[64],darab,Float:pos[3],vilag[2];
for(new i = 0; i < sorok; i++)
{
   betoltes = cache_save();
   cache_get_field_content(i,\"TargyNev\",targynev,SQL,64);
   id = cache_get_field_content_int(i,\"TargyID\");
   darab = cache_get_field_content_int(i,\"TargyDarab\");
   pos[0] = cache_get_field_content_float(i,\"X\");
   pos[1] = cache_get_field_content_float(i,\"Y\");
   pos[2] = cache_get_field_content_float(i,\"Z\");
   vilag[0] = cache_get_field_content_int(i,\"VW\");
   vilag[1] = cache_get_field_content_int(i,\"Inti\");
   EldobottTargyObjekt[id] = CreateDynamicObject(TargyObjekt(targynev),pos[0],pos[1],pos[2],0,0,0,vilag[0],vilag[1]);
   new string[128];
   format(string,sizeof(string),\"\"SZ_SZURKE\"[ Eldobott tárgy ]\\nTárgy : %s\\nDarab : %d\",targynev,darab);
   EldobottTargyLabel[id] = CreateDynamic3DTextLabel(string,-1,pos[0],pos[1],pos[2],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,vilag[0],vilag[1]);
   cache_set_active(betoltes);   
}
cache_delete(betoltes);
printf(\"[ - ] %d darab eldobott tárgy betöltve ! [ - ]\",sorok);
}
}

 

new Cache:betoltes;
betoltes = cache_save();
cache_set_active(betoltes);   
cache_delete(betoltes);

 
Nagyon szépen köszönöm mindenkinek aki segített, nemsokára érkezik az Inventory rendszerem :D

117
Segítségkérés / MySQL lekérdezés
« Dátum: 2016. Június 23. - 23:17:50 »
Kirpróbálom ha jó, akkor jár a keksz.

Dupla hozzászólás automatikusan összefûzve. ( 2016. Június 24. - 19:39:20 )

Nos az a helyzet, hogy mostmár csak egy hibába ütközök ami az alap probléma :D
Van ez a kód, ami az itemlista táblából kiolvassa a TargyObjekt mező értékét, majd visszaadja :
 
TargyObjekt(nev[])
{
format(query,sizeof(query),\"SELECT * FROM targylista WHERE TargyNev = \'%s\'\",nev);
new Cache:eredmeny = mysql_query(SQL,query);
new objekt = cache_get_field_content_int(0,\"TargyObjekt\");
cache_delete(eredmeny);
return objekt;
}

 
Aztán van egy betöltés kódóm :
 
public EldobottTargyakBetoltese()
{
new sorok = cache_get_row_count();
if(sorok)
{
new id,targynev[64],darab,Float:pos[3],vilag[2];
for(new i = 0; i < sorok; i++)
{
   cache_get_field_content(i,\"TargyNev\",targynev,SQL,64);
   id = cache_get_field_content_int(i,\"TargyID\");
   darab = cache_get_field_content_int(i,\"TargyDarab\");
   pos[0] = cache_get_field_content_float(i,\"X\");
   pos[1] = cache_get_field_content_float(i,\"Y\");
   pos[2] = cache_get_field_content_float(i,\"Z\");
   vilag[0] = cache_get_field_content_int(i,\"VW\");
   vilag[1] = cache_get_field_content_int(i,\"Inti\");
   EldobottTargyObjekt[id] = CreateDynamicObject(TargyObjekt(targynev),pos[0],pos[1],pos[2],0,0,0,vilag[0],vilag[1]);
   new string[128];
   format(string,sizeof(string),\"\"SZ_SZURKE\"[ Eldobott tárgy ]\\nTárgy : %s\\nDarab : %d\",targynev,darab);
   EldobottTargyLabel[id] = CreateDynamic3DTextLabel(string,-1,pos[0],pos[1],pos[2],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,vilag[0],vilag[1]);
}
printf(\"[ - ] %d darab eldobott tárgy betöltve ! [ - ]\",sorok);
}
}

 
Ebbe a kódba van ez a sor :
 
EldobottTargyObjekt[id] = CreateDynamicObject(TargyObjekt(targynev),pos[0],pos[1],pos[2],0,0,0,vilag[0],vilag[1]);

 
Amikor ez a kód lefut, lekérdezi, az objektet EZT be is tölti, de utána törli a cache-t és utána kapom ezt a képet, a logban is látszik, majd : cache is not valid.
Ha viszont nincs ott a cache_delete akkor pedig full rossz :D
\"HELP.png\"
Ötletek?

118
Segítségkérés / MySQL lekérdezés
« Dátum: 2016. Június 23. - 22:30:46 »
De az a sorok számát jelöli :D
Kellene az az utasítás amivel az eredményt kéred be :(

119
Segítségkérés / MySQL lekérdezés
« Dátum: 2016. Június 23. - 20:53:36 »
Igen, azt tudom én is, hogy Tquery-vel meglehet oldani, de akkor megkell adni neki egy callbacket, és ezek is csak összezavarnak, hiszen ahhoz, hogy lekérjek valamit, 3 dolgon fut végig, egyszer a lekérdezésen, utána a lekérdezésen belül a query-n, majd a callbackbe, ahol az értéket adja vissza, + akkor tele lennék ilyenekkel :
 
public GetItemAmountCallback // Etc.

120
Segítségkérés / MySQL lekérdezés
« Dátum: 2016. Június 23. - 18:49:06 »
Sziasztok !
Csinálgatok a napokban egy MySQL rendszert, ahol azonban a lekérdezésnél a cache elcsúszik, és rájöttem, hogy miért.
Például, van egy lekérdezésed :
 
GetItemAmount(playerid,itemname[])
{
format(query,sizeof(query),\"SELECT ItemAmount FROM items WHERE ItemName = \'%s\'\",itemname);
mysql_query(SQL,query);
new darab = cache_get_field_content_int(0,\"ItemAmount\");
return darab;
}

 
Azonban amikor le-query-zem, akkor a cache szám növekedik eggyel, és ( például ezt a betöltésnél használom ) akkor egyel fentebb lévő cache-s adatokat kezdi el betölteni és így teljesen összekavarodik a rendszer.
Nézegettem erre megoldásokat, és láttam, hogy a régebbi verzióknál, ezt úgy oldották meg, hogy :
 
GetItemAmount(playerid,itemname[])
{
format(query,sizeof(query),\"SELECT ItemAmount FROM items WHERE ItemName = \'%s\'\",itemname);
mysql_query(SQL,query);
new darab = mysql_store_result();
        mysql_free_result();
return darab;
}

 
Vagy valahogy, így. Nos ugyebár manapság r39-5 verzióknál ez a 2 utasítás már nem létezik, és nemtudom, hogy lehetne megoldani :(
Ötletek?

Oldalak: 1 ... 6 7 [8] 9 10 ... 29
SimplePortal 2.3.7 © 2008-2024, SimplePortal