GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: BoOy - 2014. Július 25. - 01:18:23

Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 25. - 01:18:23
Loot System + Inventory
 

Készítette: BoOy
 
Leírás:
Sziasztok. Fent voltam a minap egy DayZ szerveren és megtetszett a loot rendszer ezért elkészítettem nektek, plusz inventory rendszerrel. A rendszer nem annyira összetett, ez alatt azt értem hogy most még csak filterscript de ha lesz még idõm akár include is lehet belõle amivel szabhatjátok a rendszert.
Feltelepítése:
Ha letöltöd a loot.rar fájlt akkor meglátod hogy minden fájlnak/mappának meg van a maga helye.
Az Itemeket viszont neked kell feltelepíteni, minden itemnek kell egy név és egy hozzá tartozó object id.
A telepítése úgy zajlik hogy a scriptfiles/Loot/loot-objects.obj fájlt megnyitod, ott találsz 3 item példát: Pizza, Víz, és AK-47 (Ezeket törölheted, de ott is hagyhatod). Kezdesz egy új sort a fájlban és elsõnek az item nevét (Pl. Kulcs), majd szóköz nélkül egy \"|\" jellel írod egybõl a hozzátartozó object id-t. (Pl. 430).
Ha nem törölted a példa itemeket akkor így kell kinéznie:
 
Pizza|1582
Vizes üveg|2683
AK-47|355
Kulcs|430

 
Parancsok:
Az RCON adminisztrátornak elérhetõ egy /dropobject [itemname] parancs, amivel telepített itemeket tehet le a földre.
Gyorbillentyûk:
 

  • KEY_YES (\'Y\' gomb):     Az inventory elõhívása


  • KEY_NO (\'N\' gomb):      Item felszedése a földrõl.


Az Item használata:
A loot.pwn nevû fájlban találsz egy OnPlayerUsedItem nevû eljárást. Ez akkor hívódik le ha a játékos a \"Használ\" gombra rákattint.
 
public OnPlayerUsedItem(playerid,const itemname[])
{
if(!strcmp(itemname,\"Pizza\", true)) //A használt item neve \"Pizza\" akkor:
{
SendClientMessage(playerid,-1,\"Megettél egy pizzát!\");
SetPlayerHealth(playerid,100.0);
}
if(!strcmp(itemname,\"Víz\", true)) //A használt item neve \"Víz\" akkor:
{
SendClientMessage(playerid,-1,\"Megittál egy üveg vizet!\");
SetPlayerHealth(playerid,100.0);
}
return 1;
}

 
Képek:
\"width=500http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQAVQ_1__www.kepfeltoltes.hu_.png[/img]
\"width=500http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQwVQ_www.kepfeltoltes.hu_.png[/img]
\"width=500http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQgVQ_www.kepfeltoltes.hu_.png[/img]
\"width=500http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bRQVQ_www.kepfeltoltes.hu_.png[/img]
Letöltés:
loot.rar
Frissítések:
 

  • Zyzu által észlelt bug javítva.


  • Most már 2 loot rendszer érhetõ el!

    • Idézetet írta: KovaNovik date=1406276222\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
      lehet jobb lenne úgy megoldani, mint a ZCMD-nél. Bár, nem tudom az kevesebb laggot okozna-e plusz annyi eljárással.


    • loot(faster)      Ezzel a rendszerrel tárgyakat a földrõl a /takeon parancsal kell fevenni. (Nincs \'N\' gyorsbillentyû)


    • loot(slower)      Ezzel a rendszerrel tárgyakat a földrõl gyorsbillentyûvel tudod felvenni. (\'N\' gomb elérhetõ)


     


Használjátok egészséggel!  :-*
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: ZyZu. - 2014. Július 25. - 04:06:52
Szép munka BoOy! :)
Én is írtam egy hasonló szkriptet a mostani szerveremhez.. viszont ennek hátránya is van nem csak haszna mivel ki lehetséges használni a tárgyak másolását illetve duplikálását. Próbáld valakivel letesztelni úgy, hogy egy visszaszámlálás segítségével egyszerre veszitek fel a földrõl. :) Viszont lehet javítani is egy változó segítségével.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Mike Freetown - 2014. Július 25. - 09:43:13
Kedves BoOy!
Nagyon szép munkát végeztél! ;) Megtudhatnám hogy kb. mennyi ideig csináltad? :) Láttam már ilyen Inventory és Loop System-et de ez káprázatos :)
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: KovaNovik - 2014. Július 25. - 10:17:02
Gyönyörûséges! :D
Szerk.: ha van már 70 000 item a szerveren, lehet jobb lenne úgy megoldani, mint a ZCMD-nél. Bár, nem tudom az kevesebb laggot okozna-e plusz annyi eljárással.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 25. - 11:03:53
Köszönöm :D
 
Idézetet írta: ZyZu. date=1406254012\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
Szép munka BoOy! :)
Én is írtam egy hasonló szkriptet a mostani szerveremhez.. viszont ennek hátránya is van nem csak haszna mivel ki lehetséges használni a tárgyak másolását illetve duplikálását. Próbáld valakivel letesztelni úgy, hogy egy visszaszámlálás segítségével egyszerre veszitek fel a földrõl. :) Viszont lehet javítani is egy változó segítségével.
 
Hoppá ezt el is felejtettem. Még ma javítom :)
 

Kedves BoOy!
Nagyon szép munkát végeztél! ;) Megtudhatnám hogy kb. mennyi ideig csináltad? :) Láttam már ilyen Inventory és Loop System-et de ez káprázatos :)
 
[/quote]
1 napot rászántam, részekben :)
 

Gyönyörûséges! :D
Szerk.: ha van már 70 000 item a szerveren, lehet jobb lenne úgy megoldani, mint a ZCMD-nél. Bár, nem tudom az kevesebb laggot okozna-e plusz annyi eljárással.
 
[/quote]
70.000 item nem lehet a szerveren max 500 :D De ezt változtathatod ebbe a sorba:
 
#define MAX_DROP_OBJECT 500

 
És ha kell megcsinálom zcmd-be de akkor ID alapján.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Keenon Jackson - 2014. Július 25. - 11:50:41
Amit lerakok azt el is menti? Bocsi nem tudom megnezni telefonrol vagyok ?
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Mr_Jack - 2014. Július 25. - 11:53:28
Most káprázik a szemem??  ???
Ez marha jó!
Repül a +!!!!
De 1 kérdésem lenne:
Az objecteket honnan szedted?
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 25. - 11:56:08
Idézetet írta: Keenon Jackson date=1406281841\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
Amit lerakok azt el is menti? Bocsi nem tudom megnezni telefonrol vagyok ?
 
Igen, és még az inventory-ban lévõ itemeket is.
 

Most káprázik a szemem??  ???
Ez marha jó!
Repül a +!!!!
De 1 kérdésem lenne:
Az objecteket honnan szedted?
 
[/quote]
Köszi, amúgy Map editorból :D
Parancsoljatok:


Frissítések:
 

  • Zyzu által észlelt bug javítva.


  • Most már 2 loot rendszer érhetõ el!


    • lehet jobb lenne úgy megoldani, mint a ZCMD-nél. Bár, nem tudom az kevesebb laggot okozna-e plusz annyi eljárással.[/quote]


    • loot(faster)      Ezzel a rendszerrel tárgyakat a földrõl a /takeon parancsal kell fevenni. (Nincs \'N\' gyorsbillentyû)


    • loot(slower)      Ezzel a rendszerrel tárgyakat a földrõl gyorsbillentyûvel tudod felvenni. (\'N\' gomb elérhetõ)


     

Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Blaise - 2014. Július 25. - 18:06:25
Kibeb*szott jó lett :D +
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: ZyZu. - 2014. Július 25. - 18:56:13
Még egy tippet mondok.. próbáld megcsinálni mentés nélkül. Mondjuk leraksz egy pozícióra egy item tárgyat.. majd újra spawnolásnál más tárgy lesz ott.. szóval random keletkezik egy új tárgy ha felveszik. A mentés szerintem hülyeség egy kicsit, mivel sok tárgy lesz végén a földön.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: KovaNovik - 2014. Július 25. - 19:35:51
A ZCMD-set úgy értettem, hogy nem 500 strcmp-vel, hanem rögtön az adott eljárást meghívva mûködne. Bár ez ékezeteknél gondokat okozna.
 Az itemet használatkor egybõl levonja? Szerintem kellene valami olyasmi, hogy csak akkor törlöd ki az itemet, ha az eljárás 0-val tért vissza.
Tehát a pl. a vércsomagot ne vonja le addig, amíg nem engedtem meg neki, hogy elhasználja.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 25. - 19:53:01
Idézetet írta: ZyZu. date=1406307373\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
Még egy tippet mondok.. próbáld megcsinálni mentés nélkül. Mondjuk leraksz egy pozícióra egy item tárgyat.. majd újra spawnolásnál más tárgy lesz ott.. szóval random keletkezik egy új tárgy ha felveszik. A mentés szerintem hülyeség egy kicsit, mivel sok tárgy lesz végén a földön.
 
Hát pont ez a lényeg hogy annyi itemet raksz le amennyit akarsz :D Ha te a szervereden leteszel alap 40 itemet akkor több hogy lehetne, ha már vagy eldobja, vagy elhasználja a többi játékos az itemet? :D
 

Kibeb*szott jó lett :D +
 
[/quote]
Köszi szépen :D
 

A ZCMD-set úgy értettem, hogy nem 500 strcmp-vel, hanem rögtön az adott eljárást meghívva mûködne. Bár ez ékezeteknél gondokat okozna.
 Az itemet használatkor egybõl levonja? Szerintem kellene valami olyasmi, hogy csak akkor törlöd ki az itemet, ha az eljárás 0-val tért vissza.
Tehát a pl. a vércsomagot ne vonja le addig, amíg nem engedtem meg neki, hogy elhasználja.
 
[/quote]
Ha 0-val tér vissza akkor nem fut tovább a szkript tehát nem vonja le :D Úgy van megcsinálva, de azért még1x kipróbálom egy adott feltétellel :D
Az elsõ mondatodban arra gondolsz, hogy amikor használja a játékos az itemet akkor ne 500 strcmp-vel mûködjön?
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Mate. - 2014. Július 25. - 22:27:38
Szép munka. \"+\"  :D
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Flash - 2014. Július 25. - 23:25:13
BoOy kellemes csalódás.. :) Úgy látom te csak kidolgozott munkát tudsz kiadni a kezeid közül, ez tetszik!
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Bandosz - 2014. Július 26. - 00:30:57
Szép lett viszont erre a hónapra már elhasználtam a \"+\" keretemet.    :weep:
De csak a te kedvedért, veszek fel \"+\" hitelt.




Viccet félretéve, tényleg nagyon jó, SA-MP-os túlélést lehet kiépíteni erre a loot rendszerre.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 26. - 00:45:53
Köszönöm szépen srácok :D
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Lofoli - 2014. Július 26. - 22:02:25
Jó Lett! ;]
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 26. - 23:35:55
Köszi :)
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Mate. - 2014. Július 27. - 23:20:19
Tõled csak szép, igényes munkákat látni?  :noexpression:
Idézetet írta: Flash date=1406323513\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
BoOy kellemes csalódás.. :) Úgy látom te csak kidolgozott munkát tudsz kiadni a kezeid közül, ez tetszik!
 
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 27. - 23:35:15

RTM[Mate\" post=507989\" timestamp=\"1406496019]
Tõled csak szép, igényes munkákat látni?  :noexpression:

BoOy kellemes csalódás.. :) Úgy látom te csak kidolgozott munkát tudsz kiadni a kezeid közül, ez tetszik!
 
[/quote]
 
[/quote]
Köszi a bókot  :$
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Tony_Cole - 2014. Július 29. - 23:00:55
Rohadt jó ment a \"+\". Mostanában csak a te munkád keresem :)  :$
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 29. - 23:18:33
Idézetet írta: Tony_Cole date=1406667655\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
Rohadt jó ment a \"+\". Mostanában csak a te munkád keresem :)  :$
 
Köszi :D Idén ez az elsõ publikált szkriptem, ha van idõm és ötletem akkor még ki szeretnék párat tenni.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: blackdog476 - 2014. Július 30. - 02:57:00
Rohadt jó lett :D Használni fogom szerintem, majd átnézem a kódot. Innen amúgy már nem nehéz azt megcsinálni, hogy MySQLba lementi a playerek inventoryját, onnan tölti be, és esetleg egy kis áttekintõ UCPt is létre lehet hozni neki :) Szép munka, gratulálok. +
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Július 30. - 19:35:21
Köszi :D
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: blackdog476 - 2014. Augusztus 02. - 14:37:18
OFF: ennek amúgy miért nem bLoot a neve? :D
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 02. - 15:07:32
Idézetet írta: Nukerdog date=1406983038\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
OFF: ennek amúgy miért nem bLoot a neve? :D
 
Jókérdés... :D
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 03. - 23:29:32
Szia! Király script lett! Bár nekem egy kérdésem volna, hogy kipróbáltam és eldobtam az Itemet ,de ha leállítom a szerót és újra elínditom nem menti le a földön lévõ  tárgyakat. Csak nekem buggolna? o.O
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 04. - 00:02:56
Minden fájlt átmásoltál a \"scriptfiles\" mappába? A \"loot-items.obj\" nevû fájlba írt valamit?
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 04. - 00:41:32
Minden átmásoltam ami benne volt de a loot-items.obj ba nem ír semmit se
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 04. - 00:48:45
Hostolt vagy Házi szerveren próbáltad? Ha hostoltan lehetséges hogy az OnFilterScriptExit eljárást nem hívja le.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 04. - 00:54:04
házin vagy hostolton vagyok akkor sem jó bár lehetséges az onfilterscript a rossz mert más gamemodomnál se müködött az OnFilterScriptInit/Exit
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 04. - 00:59:34
Idézetet írta: Athos005 date=1407106444\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
házin vagy hostolton vagyok akkor sem jó bár lehetséges az onfilterscript a rossz mert más gamemodomnál se müködött az OnFilterScriptInit/Exit
 
Ezt hogy érted? A játékmódoknál az OnGameModeInit/Exit-et hívódik le, a filterszkripteknél pedig az OnFilterScriptInit/Exit. Konzolon ír valami hibát?
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 04. - 01:04:51
Én ezt a scriptet felhasználtam a gamemodeba vagyis beleírtam. Most beleírtam a gamemodeexit-be ami a onfilterscriptexit volt, és így ez lett a loot-items.obj-be: Pizza|0|1.455591|10017.331054|3.220449
De még mindig nem menti le ha bezárom a szervert és újra elindítom.
Most elõbb még eldobtam pár itemet(pizzát) de azt már le se mentette csak az elsõt de hiába azt se tölti be :/
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 04. - 01:07:47
Az OnFilterScriptInit részét is másold be az OnGameModeInit alá. Mivel ott tölti be az itemeket.
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 04. - 01:15:07
Remek köszi, most már lementi és betölti! És még egy kérdést szeretnék feltenni: hogy mikor eldobom a pizzát mért nem rakja le a pizzás dobozt?
Mert egy láthatatlan valami lesz ott amibe bele is akadok.. loot-objects.obj -be ezek vannak amik benne is voltak alapból:
Pizza|1582
Vizes üveg|2683
AK-47|355
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 04. - 01:32:13
Lehet hogy Stream Distance probléma. Használj Streamer Plugin-t!
Biggyezd a szkript elejére:
 
#include <streamer>

 
Cserék:
 
items[gItemID][item] = CreateObject(ids, x,y,z-0.8, 0.0, 0.0, 0.0);
helyett:
items[gItemID][item] = CreateDynamicObject(ids, x,y,z-0.8, 0.0, 0.0, 0.0,250.0);
Mind a két helyen cseréld!!!

 

DestroyObject(items[rel][item]);
helyett:
DestroyDynamicObject(items[rel][item]);
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Athos005 - 2014. Augusztus 04. - 01:40:36
Idézetet írta: BoOy date=1407108733\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49656\" data-ipsquote-contentclass=\"forums_Topic
Lehet hogy Stream Distance probléma. Használj Streamer Plugin-t!
Biggyezd a szkript elejére:
 
#include <streamer>

 
Cserék:
 
items[gItemID][item] = CreateObject(ids, x,y,z-0.8, 0.0, 0.0, 0.0);
helyett:
items[gItemID][item] = CreateDynamicObject(ids, x,y,z-0.8, 0.0, 0.0, 0.0,250.0);
Mind a két helyen cseréld!!!

 

DestroyObject(items[rel][item]);
helyett:
DestroyDynamicObject(items[rel][item]);

 

köszi!  :thumbsup:
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: Alcatraz - 2014. Augusztus 06. - 15:18:55
Nagyon hasznos script,fel fogom használni! +
Cím: Loot System + Inventory [DayZ-rõl ismert]
Írta: BoOy - 2014. Augusztus 06. - 18:25:44
Köszi  :)