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:
http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQAVQ_1__www.kepfeltoltes.hu_.png[/img]
http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQwVQ_www.kepfeltoltes.hu_.png[/img]
http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bQgVQ_www.kepfeltoltes.hu_.png[/img]
http://kepfeltoltes.hu/140725/QBYVCUtvAwMDB10bRQVQ_www.kepfeltoltes.hu_.png[/img]
Letöltés:loot.rarFrissí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.
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! :-*
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.
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 :)
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.
Köszönöm :D
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.
Amit lerakok azt el is menti? Bocsi nem tudom megnezni telefonrol vagyok ?
Most káprázik a szemem?? ???
Ez marha jó!
Repül a +!!!!
De 1 kérdésem lenne:
Az objecteket honnan szedted?
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õ)
Kibeb*szott jó lett :D +
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.
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.
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?
Szép munka. \"+\" :D
BoOy kellemes csalódás.. :) Úgy látom te csak kidolgozott munkát tudsz kiadni a kezeid közül, ez tetszik!
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.
Köszönöm szépen srácok :D
Jó Lett! ;]
Köszi :)
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!
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 :$
Rohadt jó ment a \"+\". Mostanában csak a te munkád keresem :) :$
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.
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. +
Köszi :D
OFF: ennek amúgy miért nem bLoot a neve? :D
OFF: ennek amúgy miért nem bLoot a neve? :D
Jókérdés... :D
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
Minden fájlt átmásoltál a \"scriptfiles\" mappába? A \"loot-items.obj\" nevû fájlba írt valamit?
Minden átmásoltam ami benne volt de a loot-items.obj ba nem ír semmit se
Hostolt vagy Házi szerveren próbáltad? Ha hostoltan lehetséges hogy az OnFilterScriptExit eljárást nem hívja le.
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
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?
É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 :/
Az OnFilterScriptInit részét is másold be az OnGameModeInit alá. Mivel ott tölti be az itemeket.
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
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]);
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:
Nagyon hasznos script,fel fogom használni! +
Köszi :)