Jump to content

Search the Community

Showing results for tags 'jobsystém'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 2 results

  1. SCYDO COREJOBS 0.1 Zdravím. Chtěl bych vám prezentovat script, který mě napadl vytvořit na základně celkem takové "drsnější" kritiky jednoho z uživatelů, který tady publikoval podobný include. Asi všichni víme, o koho a o co se jedná, ale i tak snad nebude vadit, když sem přidám pár výňatků: Určitě si teď někteří budou myslet, že jsem udělal další podobný include a zmiňuji toho dotyčného tady s úmyslem ho nějak poškodit, zesměšnit a já nevím co ještě... I když je to těžko uvěřitelné, opravdu o to nemám zájem. Spíše mi dopomohl k nápadu pro další mojí práci a navíc, když jsem si pročítal ty jisté komentáře, tak mě napadly další věci, které se brzo dozvíte. O SCJ Nejspíše znáte takové ty klišé JobSystémy. Všechno máte v jedné funkci, takže přidáte jen do patřičného callbacku, po případě přidáte ještě další callbacky do patřičných callbacků a tím to končí. Pak už jen přidáváte funkci, po funkci, která je někdy delší než řeka. Ale u SCJ ne jen, že na každou funkci nemusíte scrollovat do stran, ale navíc máte přehled, kam ke komu co přidáváte, a také s ním můžete pokračovat. Celý include obsahuje jen ty nejzákladnější či nejspíše nejpotřebnější funkce pro tvorbo prací na server, ale pokračování si může uživatel zrealizovat sám podle sebe. Velká většina funkcí nevyžaduje id těch prací, ale jejich jména v kódě, která si také může uživatel přidávat sám. Celá taková myšlenka, místo id práce vepisovat jména a přidávat další funkce, vznikla zrovna na základně komentáře: UKÁZKA SCJTady bych vám rád předvedl takovou ukázku, jak můžete pracovat s SCJ. Řekneme si, že si chceme vytvořit práci například Gang Vagos: #include <SCoreJobs01.inc> public OnFilterScriptInit() { SJob_Insert("vagos", "{FFFF00}Gang Vagos", 2220.9712,1251.9951,10.8203); SJob_SetSkins("vagos", 108, 109, 110); SJob_SetVyplata("vagos", 40000); return true; } (Nejspíše už většina z vás tuší, co jaká funkce, udělá. Jestliže ne, nevadí, vysvětlíme si to později) Nevypadá to tak složitě a nepřehledně, že ne? Samozřejmě se nenechte oklamat! Jediné, co v tomhle případě přesně udělá je, že se vytvoří pickup s jménem té patřičné práce a nastaví jí 3 skiny(a jeden z nich dostane hráč po přidání do té práce), a výplatu jen té práci. Nebude se nikomu dávat. Začátečník (po případě je možné, že i pokročilejší), se zeptá "Tak pak k čemu nám to je?". Odpověď je prostá: Tady si můžeme jaksi "přednastavit" co budeme potřebovat, a pak s volnou rukou, si už budeme moct pokračovat, jak chceme, a přidávat co chceme. Ještě více to zjednoduším: Protože, to právě budou ty klišé JS, kde přidáte jednu funkci a konec. Nemůžete s tím hráčem pak v těch pracích nějak manipulovat. Nemůžete pak nastavovat, jakou dostane výplatu, kromě té ve funkci. Nemůžete mu zjistit, v jaké je práci(jediné co, tak jestli je vůbec v nějaké). Nemůžete pak kdekoliv znova přenastavit výplatu, a tak dále... Prostě, všechno se udělá za vás a máte omezenější možnosti. SEZNAM FUNKCÍ VE SCJ Zde je kompletní seznam funkcí, který obsahuje include. Tady zobecním, co k čemu slouží jaká funkce, a pak si ukážeme příklad využití každé z nich. SJob_Insert() >> Přidává základ pro tvorbu prací (+vytvoří pickup s jménem práce). SJob_SetSkins() >> Nastaví globálně dané práci skiny, které se pak nastaví hráči po připojení do dané práce. SJob_SetVyplata() >> Nastaví globálně dané práci, jaká bude jeho výplata. SJob_Vyplata() >> Vrací hodnotu, jakou má nastavenou výplatu daná práce. SJob_Skin() >> Vrací jeden ze 3 skinu, které má nastavená daná práce. SJob_PrintJobInfo() >> Vypíše všechny potřebné informace o dané práci do konzole. SHasPlayerJob() >> Vrací hodnotu true/false, podle toho, jestliže je v nějaké z prácí. SGetPlayerJob() >> Vrací hodnotu true/false, jestliže, je v dané práci. SGetPlayerJobName() >> Vrací jméno práce v kódě v které se nachází hráč. SGetJobObjName() >> Vrací jméno práce ve hře. SJob_InsertPlayer() >> Vloží hráče do dané práce. SJob_RemovePlayer() >> Vyhodí(smaže) hráče z dané práce. IsPlayerOnJobsPickup() >> Vrací true/false, podle toho, jestliže je na nějakém z pickupů prací. IsPlayerOnJobsPickup() >> Vrací true/false, podle toho, jestliže je na daném pickupu u dané práce. SJob_Insert() (sJobName[], sJobObjName[], Float: fJobPosX, Float: fJobPosY, Float: fJobPos) sJobName[] - Jméno práce ve zdrojovém kódu. sJobObjName[] - Jméno práce ve hře(lze přidat i hexkód barvy). fJobPosX - X pozice nové práce (pickupu). fJobPosY - Y pozice nové práce (pickupu). fJobPosZ - Z pozice nové práce (pickupu). Ukázka využití: SJob_Insert("policie", "{0000FF}Policie", 2200.7500,1233.7435,10.8203); SJob_SetSkins() (sJobName[], iJobSkin1, iJobSkin2 = -1, iJobSkin3 = -1) sJobName[] - Jméno práce ve zdrojovém kódu. iJobSkin1 - Nastavit první skin pro práci. iJobSkin2 - Nastavit druhý skin pro práci. iJobSkin3 - Nastavit třetí skin pro práci. Ukázka využití: SJob_SetSkins("policie", 280, 285, 286); SJob_SetVyplata() (sJobName[], iJobVyplata = 25000) sJobName[] - Jméno práce ve zdrojovém kódu. iJobVyplata - Nastavit výplatu pro danou práci. Ukázka využití: SJob_SetVyplata("policie", 40000); SJob_Vyplata() (sJobName[]) sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (SHasPlayerJob(playerid)) GivePlayerMoney(playerid, SJob_Vyplata(SGetPlayerJobName(playerid))); SJob_Skin() (sJobName[], iJobSkinListID) sJobName[] - Jméno práce ve zdrojovém kódu. iJobSkinListID - Jeden ze tří nastavených skinů (pole s 0, 1 a 2). Ukázka využití: new iSkinList1 = SJob_Skin("policista", 0), iSkinList2 = SJob_Skin("policista", 1), iSkinList3 = SJob_Skin("policista", 2); SetPlayerSkin(playerid, iSkinList1); /* Nebo */ SetPlayerSkin(playerid, iSkinList2); /* Nebo */ SetPlayerSkin(playerid, iSkinList3); /* Nebo, je také možnost, která je i lepší: */ new iSkinSet = SJob_Skin("policista", random(3)); SetPlayerSkin(playerid, iSkinSet); SJob_PrintJobInfo() (sJobName[]) sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: SJob_PrintJobInfo("policie"); SHasPlayerJob() (playerid) playerid - ID daného hráče. Ukázka využití: if (SHasPlayerJob(playerid)) return SendClientMessage(playerid, "Jste zaměstnán!"); SGetPlayerJob() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (SGetPlayerJob(playerid, "policie")) return SendClientMessage(playerid, "Jste zaměstnán jako policie!"); SGetPlayerJobName() (playerid) playerid - ID daného hráče. SGetJobObjName() (iJob_ID) playerid - ID dané práce. Ukázka využití: format(sString, sizeof(sString), "Jméno práce %s", SGetJobObjName( SGetJobIDFromName("policie") ); SJob_InsertPlayer() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (!SHasPlayerJob(playerid)) { SJob_InsertPlayer(playerid, "policie"); SendClientMessage(playerid, "Jste zaměstnán jako policie!"); SJob_RemovePlayer() (playerid) playerid - ID daného hráče. Ukázka využití: if (SHasPlayerJob(playerid)) { SJob_RemovePlayer(playerid); SendClientMessage(playerid, "Opustil jste zaměstnání policie"); IsPlayerOnJobPickup() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: public OnPlayerKeyStateChange(...) { if (IsPlayerOnJobPickup(playerid, "policista")) { if (PRESSED(...)) { SendClientMessage(playerid, -1, "Jsi na pickupu policista!"); IsPlayerOnJobsPickup() (playerid) playerid - ID daného hráče. Ukázka využití: public OnPlayerPickUpPickup(...) if (IsPlayerOnJobsPickup(playerid)) { if (SHasPlayerJob(playerid)) return SendClientMessage(playerid, -1, "Již jste zaměstnán jinde !"); PÁR ZAJÍMAVOSTÍ O SCJ Celé SCJ neukládá, kromě počtu zaměstnání u každé vytvořené práce, a souboru s jménem hráče rovnou ve scriptfiles. Tudíž, není třeba nikde nic vytvářet za složku. Funkce SJob_PrintJobInfo se vám může hodit jako ukázka, jestliže jste se někde při vytváření nesekli. Žádná z funkcí nezobrazuje zprávy hráči do hry, pouze do konzole. Nelze vytvořit již existující práci (jestliže se budou jména prací ve zdrojovém kód schodovat. Údaje ohledně zamestnání u každého hráče se nahrají a uloží jen v případě, že se zaměstnán. S tímto includem lze samozřejmě pracovat i v gamemodu. Stačí přídat dJOB_GAMEMODE V include jsem se snažil co nejvíce šetřit (počet proměnných, pole, délky...), Lze si nastavit vlastní maximum prací pomocí dMAX_JOBS jinak default je 100, a nastavit si ID skinu po opuštění zaměstnání pomocí dDEFAULT_SKIN, jinak defaultně je 0. Pro nastavení výplaty u dané práce s funkcí SJob_SetVyplata() nemusíte zadávat druhý parametr. V případě, že nedosadíte, výplata se automaticky nastaví na 35000$. Na funkci, pro zjištění jestliže stojí na pickupu prací, nebo jedné z prací se použila funkce na zjistění, zda se hráč nachází v dané oblasti(pro práci s těmito funkcemi doporučuji využívat callback OnPlayerKeyStateChange). NĚKOLIK UKÁZEK S SCJ RYCHLÉ EASY ZAMĚSTNÁNÍ POLICIE OTEVŘENÍ MENU DANÉ PRÁCE OTEVŘENÍ MENU VŠECH PRACÍ NAJEDNOU NASTAVENÍ SPAWNU ZAMĚSTNANCŮ ZJISTĚNÍ PRÁCE VŠECH NA SERVERU SCREENY Stačil jsem si, kromě těch 2 ukázek výše, připravit ještě další 2 screeny, ale podle mě není toho moc co ukazovat na include, kde si toho můžete udělat tolik podle sebe. CO BUDE V UPDATE V případě, že bude nějaký větší zájem či časté kladnější ohodnocení, mám v úmyslu v tom pokračovat. 0.2 Změnit celý enum pJobInfo na obyčejné 2 proměnné. Přidat funkci SJob_InsertRankJob(), půjde o práce, na kterou se dostane povýšením v prácí, ke které já RankJob přiřazena. Přidat funkci SJob_InsertPlayerRank(), povyší hráče z určené předešlé práce do této. Přidat funkci SJob_AddJobCommand(), určí, které příkazy budou JEN pro hráče, kteří jsou zaměstnáni v určitých pracích v této funkci. Vylepšit funkci SJob_PrintJobInfo, bude vám moct nahlásit i patřičné chyby. Přidat funkci SJob_SetWeapons(), asi všichni víme k čemu. Přidat funkci SJob_SetRandomVyplaty(), lze nastavit u určitě true, a tak budou hráči dostávat výplatu od určité hodnoty, ale ještě s nějakým náhodným doplňkem. Optimalizace kód, opravit chyby, opravit bugy, překlepy, zpřehledit kód a tak dále... DOWNLOAD(pawno.cz/files/file/21-corejob/) V souboru, který stačí rozbalit, bude vše potřebné pro práci. Stačí jen všechno, co obsaje složka include hodit do složky pawno\include, přidat nahrání daného include SCoreJobs01.inc a už můžete tvořit! ZÁVĚR Na závěr bych chtěl poděkovat samozřejmě Y_Lessovi za jeho YSI4, a také vEndovi a Lukaszovi za pomoc při opravování chyb. Otestoval jsem, co jsem mohl a vše fungovalo. V případě, že i přesto vám něco nepůjde, dejte vědět. V případě, že budete mít zájem nějakým způsobem ohodnotit či budet mít nějaký nápad, co přidat nebo vylepšit, tak vás prosím, zdržte se zbytečných a pitomých příspěvků, jen, aby jste se předvedli. Děkuji za pochopení.
  2. Tak jo vítám vás tu po delší době a zase vám tu chci ukázat něco málo z toho co dělám a většinou to bývá tajné Tak jo začneme... Dnes vám tu ukážu IJobs4, ano už 4 verze 1 verze byla testovní, 2 verze byla nějak posraná a tak dále Nejnovější a taktéž nejlepší verze je tato 4.0. Funkce: CreateJob(jid,jobname[],Float:X,Float:Y,Float:Z,skin1,skin2,skin3,w1,w2,w3,a1,a2,a3) PlayerJoinToJob(playerid,jobname[]) ChangePlayerJobSkin(playerid,jobname[]) IsPlayerInJob(playerid,jobname[]) IsPlayerAroundOfJob(playerid,jobname[]) GetPlayerStats(playerid) SetPlayerStats(playerid,money,points,level) GetIDFromJobName(jobname[]) SetPlayerJob(playerid,jobname[]) GetPlayerJob(playerid) LoadJob(jobname[]) SetPlayerStatsEx(playerid,name[],value) GetPlayerStatsEx(playerid,name[],value) Tak to jsou všechny funkce, které tam jsou a fungují Tak a teď vám tu napíšu nějaký ten návod jak si vytvořit vlastní jobku. Návod: Vytvoření práce: Vytvoření práce je velice jednoduché použijeme k tomu funkci CreateJob CreateJob(jid,jobname[],Float:X,Float:Y,Float:Z,skin1,skin2,skin3,w1,w2,w3,a1,a2,a3) Takto vypadá samotná funkce a takto vypadá vyplněná. Ale nebudu doplňovat souřadnice si doplňte sami. CreateJob(1,"Policista",X,Y,Z,280,281,282,3,22,33,1,90,180); Toto nám vytvoří pickup Policista na souřadnicích XYZ a první další 3 čísla jsou skiny další 3 jsou zbraně a potom munice to vše se uloží do souboru a z toho to potom čte. Připojení do práce a změna skinu pomocí zmáčknutí: Tak a teď tu máme jakoby ovládání, pickup máme vytvořen ale chybí nám ještě dodat možnost přijít k němu a po kliknutí tlačítka se připojit. To vyřešíme tímto do publicu OnPlayerKeyStateChange vložíme tento kód: if(IsPlayerAroundOfJob(playerid,"Policista")) // Pokud je v dosahuj policie { if(PRESSED(KEY_YES)) { if(!IsPlayerInJob(playerid,"Policista"))//Pokud není v práci policista tak mu to dá zbraně pomocí funkce PlayerJoinToJob { ResetPlayerWeapons(playerid);//Reset zbraní PlayerJoinToJob(playerid,"Policista");//Připojí ho do práce a dám mu to věci, které jsme nastavili v první kroku } else { SendClientMessage(playerid,C_R,"[IJobs] ERROR: "white"V této práci jsi již zaměstnán"); } } else if(PRESSED(KEY_NO))//Pokud zmáčkne "N" { if(IsPlayerInJob(playerid,"Policista"))//Pokud je v práci policista { ChangePlayerJobSkin(playerid,"Policista");//Změní skin random podle těch 3 co jsme zadávali při vytváření práec } else { SendClientMessage(playerid,C_R,"[IJobs] ERROR: "white"Pro změnění pracovního skinu se musíš prvně zaregistrovat! Zmáčkni "g"Y"); } } } Nastavování statistik v práci: Pod tímto si asi můžete představit mnoho věcí ale jde o nastavování bodů,levelů, a peněz, které vydělá. GetPlayerStats(playerid);//Tímto zjistíme aktuální hodnoty, které se zapíšou do proměnné JPD[playerid][jLevel/jMoney/jPoints] SetPlayerStats(playerid,JPD[playerid][jMoney]+200,5,JPD[playerid][jLevel]);//Zde můžete nastavit body + nebo přímo hodnotu. Tady nastavujeme peníze, které měl + // 200 a u pointů nastavime aby měl 5 bez ohledu na ostatní věci. A ted by přišla nemilá věc co když potřebuji uložit jiné statistiky ? No na toto jsem taktéž myslel a mám pro to vytvořené 2 krásné funkce SetPlayerStatsEx(playerid,"Taxa",500);//Tímto uložíte do aktuální práce novou položku taxa. A tímto ji zase načtete do proměnné taxa. new taxa = LoadPlayerStatsEx(playerid,"Taxa"); No vidíte tak i toto se dá krásně ukládat A co když budeme chtít zjistit ID práce z jméne ? No na toto je taktéž funkce ale tu asi moc nepoužijete i když je velice důležitá, používám jí skoro ve všechn funkcích, kde dáváte do parametrů název práce. A abych nemusel hledat složitě ID ze souboru tak to můžeme udělat podle funkce. new id = GetIDFromName("Taxikar"); // Tato funkce právě vrátí ID práce, ID je podle toho, jaké jste si navolili při vzniku práce. Pomocné funkce: #define PRESSED(%0) \ (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))//DEFINICE PRESSED UPOZORNĚNÍ: Funkce při, kterých zadáváte jméno práce musí odpovídat jménu práce, které jste zadali při vytváření. V scriptfiles musíte mít složku Jobs do té se vám budou ukládat všechny práce. Soubory s prací se sami obnoví pokud je smažete. Tak jo to je zatím vše nemám moc času takže ostatní funkce přidám až ho mít budu Lets's go pawn! Autor: Isigar Licence: MIT Pastebin: http://pastebin.com/A1BQZYgW Verze: 4.0 Znění MIT Licence:
×
×
  • Create New...