Jump to content

Meric

Uživatel
  • Příspěvků

    90
  • Registrován

  • Aktivní

Reputace

1 Jonny Sindacco

Návštěvníci

944 profile views
  1. Meric

    pomoc Systém smrti

    Tak pardon, že jsem si dovolil se zeptat, pane. To je fuk, už je to pasé. Ten includ jsem nerozchodil, byly tam interní nesrovnalosti, přes které mi nedovolilo funkčně zkompilovat skript i přestože jsem udělal dost úprav, které opravily dost těchto "chyb". Což se samozřejmě dalo čekat vzhledem k tomu, co jsem už napsal. Zkouším to teďka zase trochu jinak. Pokud mi samozřejmě nějaká hodná duše třeba ukáže jak by se to dalo obejít bez zbytečných bugů, byl bych mu určitě neskonale vděčný. :-) Mezitím zkusím nějaké jiné způsoby.
  2. Meric

    pomoc Systém smrti

    Dobře, který plugin to prosím vyžaduje? Mimochodem nahlédl jsem do includu a je tam fakt kopa věcí, co by se hádala s některými skripty v módu. A i kdybych to nějak vymyslel a smazal to a nechal tam jen to, co potřebuji, tak do kterých callbacků by asi bylo nejlepší ty fáze zařazovat, aby to bylo dostatečně efektivní?
  3. Meric

    pomoc Systém smrti

    Musí to být nutně amount? Aby se mi to nekřížilo s proměnnou Damage, kterou jsem si vytvořil kvůli úpravě hodnot poškození. A hlavně ve které části to podmínit, protože těch podmínek ohledně zdraví a vesty hráče tam mám poměrně dost, takže si ani nejsem úplně jist, kde bych to měl podmínit poté, co tu hodnotu zjistím a tak, aby to bylo efektivní afunkční.
  4. Meric

    pomoc Systém smrti

    Co jsem se tak dočetl, tak funkce GetPlayerHealth v tomhle callbacku nefunguje, nebo alespoň ne jak má. Přesto to mám úplně nejvýše v callbacku, nějak to tam toleruji. Já tam tedy zjišťuji HPčka přes hráčskou proměnnou Health. Nevím jestli jsi to tak myslel a já tě teď jen nepochopil, ale právě já té smrti a tedy následnýmu spawnu chci vyhnout a pracovat pouze s OnPlayerTakeDamage. Pak je tu tedy ten zásadní problém s hráčskými proměnnými Exprepared, InPreDeathMode a InDeathMode. Co jsem si kontroloval podmínky, tak by měly bejt správně, ale asi dávám špatný sled, jen nevím jak by měl být správně. Abych ty proměnný vysvětlil a někteří nad tím nemuseli nějak přemýšlet a louskat jak to mám zpracovaný, tak to sepíšu. Exprepared - Připraven na popravu, tj. že když ho hitneš ještě jednou, automaticky ho to hodí do druhé fáze. Jenže to se stává už při první "smrti", která tedy proběhne i se spawnem, protože dosáhne s HP na 0. Popraven - To je asi jasné, napomáhá k odkázání na update labelu a zabití v tu dobu již zbytečnýho timeru a povolení k použití příkazu /death. InPreDeathMode - 1. fáze smrti. InDeathMode - Definitivní fáze, na kterou odkazuje proměnná "Popraven". Myslím, že je to asi všem jasné, ale uvědomuji si, že můj kód je zmatený a proto to vypisuji.
  5. Ahojte. Narazil jsem na problém v publicu OnPlayerTakeDamage, kde si spravuji systém poškození a na něj napojuji i death systém. Bohužel však to má spoustu zádrhelů. Zaprvé abych se přiznal, tak jsem se už dalo by se říct že ztratil ve vlastních podmínkách. Teď nevím jak do kódu řádně a funkčně zakomponovat pojistku, která by zařídila, aby daný hráč nezemřel a tedy ho kód za žádnou cenu neodkázal na OnPlayerSpawn, tedy když poškození bude větší nebo rovno zdraví hráče, tak aby mu to na místo poškození nastavilo HPčka cca na 20 bodů zdraví. Tento systém smrti má dvě fáze - 1. kritické zranění, 2. definitivní smrt, která nastane buď po uplynutí času bez záchrany nebo při popravě. Samozřejmě pokud se tomu nějak nevyhnu tak nevadí, budu muset asi jen ukládat pozice. Každopádně dalším problémem je, že místo toho, aby to hráče hodilo nejprve do 1. fáze, tak rovnou zahyne, objeví se někde jinde (přirozeně, když se neukládá pozice a do OnPlayerSpawn by se ani dostat neměl - tedy skript by to ve finále neměl dovolit) a je je rovnou v druhé fázi, tedy té definitivní. Nevím proč, nejspíše jsem se zamotal do svých podmínek a špatně jsem je umístil a teď už nevím jak dál. Než se do mě tady někdo pustí že jsem neoriginální: Ano, vím. Ač se mi to příliš také nelíbí, jsem vzhledem k okolnostem nucen se naklonit k tomu, co ode mně poměrně velká část komunity požaduje. https://pastebin.com/1r4FmuTw Když tam uvidíte nějaké nesmysly a zbytečnosti, předem upozorňuju, že poslední dobu jsem tam zkoušel leccos metodou pokus/omyl a plácal jsem se s tím pomalu.
  6. No já Skype nemám, nebo spíše jen ne nainstalované a nemám to v plánu. Jestli nechceš posílat kód veřejně, můžeš mi to poslat do SZ.
  7. V pohodě. Můžeš ukázat jen pro mé ujasnění, jak to máš udělané?
  8. Vzhledem k tomu, že jsi se ptal také na limity CreateObject() s tím počítám. Na LARPu je to řešené tak, že se používá CreateDynamicObject a funkce AttachDynamicObjectToVehicle a pracuje se s proměnnými na sloty pro doplňky a podobně. Co je mi známo, tak na dynamické objekty nejsou početní limity a celkově na serveru jich můžeš mít neomezeně mnoho (samozřejmě načítání těch objektů už je jiná věc). Samozřejmě funkci AttachDynamicObjectToVehicle využiješ při načítání vozidel a těchto doplňků pro vozidla v nějakém stocku pro načítání vozidel co si vytvoříš nebo máš vytvořený. Zkus to zaměnit a nevyužívat samotný attachnutí po vytvoření toho objektu. Samozřejmě nevím jak to máš v plánu zpracovávat, nicméně předpokládám, že budeš chtít, aby se dalo upravovat umístění, tak tedy EditDynamicObject by měl svojí úlohu splnit. Funkci na attachnutí zkus tedy pouze u načítání vozidel. Samozřejmě nějaký zkušenější pawner (kterých je zde dost) mi může oponovat a říci, že nápad je to špatný a nemělo by se to tak dělat a tak to budu plně respektovat.
  9. Předpokládám, že pro to využíváš funkci AttachObjectToVehicle. Řekni mi, jestli se mýlím.
  10. Eh.. No, popravdě tomu pořád stále moc nerozumím, ukázal bys mi to na kódu, prosím? Dost se v tom ztrácím. Asi i to, jak zapsat nový stav kasy, protože teď mě vůbec nenapadá, jak to udělat. Samozřejmě u výplaty určitě nemůžu udělat to, že bych smazal samotné přičítání, jinak by se peníze nemohly nastackovat. Narazil jsem na logický problém a jsem celkem mimo. Tak kdybys byl tak hodný a ukázal mi to na kódu, určitě bych byl vděčný.
  11. Nevím, co přesně máš namysli tou kontrolou, ze které kasy se to má odčítat, měl jsem za to, že právě ten cyklus by měl určit tu danou kasu, protože se předpokládá, že člověk bude stát pouze u jedné. Samozřejmě zde mi přišlo zbytečný volat funkci IsPlayerInRangeOfPoint, protože to je už u příkazu /kasa. Jakou kontrolu máš přesně namysli?
  12. Ahoj, tak jsem tady zas. Mám problém se špatně fungujícím dialogem kasy. Stále mi to píše, že v kase nemám dost peněz, i přestože tam jsou. Na testovacím serveru mi to napíše ale i dá ty peníze, de facto se vykoná to, co chci, ale na veřejným, který už narozdíl od testovacího není prázdný to pouze píše tu hlášku a nedá to ani floka. Kontroloval jsem i jestli se hodnota při každé výplatě, kdy chodí i do kasy tržba ukládá. To také dělá, ale špatně. Při vytvoření podniku a upravení ceny například na 1 000 000 to funguje správně, do kasy jde každou hodinu 10 000 podle vzorce (který nejspíš upravím). Ale když k tomu koupím druhý podnik, s cenou třeba 50 000, tak místo aby do jedné kasy šlo 10 000 a do druhé 500, tak v jedné je 10 000 a v druhé 10 500. Dle toho usuzuji, že je chyba v cyklu, ale jak to změnit, aby to fungovalo, nad tím se lámu už hodiny a jsem bezradný. Nejsem sice úplně začátečník, ale nějaké ty mezery ještě mám, tak to prosím berte v úvahu, děkuji. Přiložím pro jistotu úplně vše, co nějak souvisí s kasou. Na požádání můžu poslat i další části, když to pomůže k vyřešení problémů. Budu rád za každou pomoc. :-) // EDIT: Ještě dotaz. V čem může být ten pekelný problém, když se občas stává, že se domy, garáže nebo podniky "pokazí" po restartu a musím je odebrat, aby fungovaly zase textdrawy a mapping z filterscriptů? Samozřejmě nezasažené pickupy zůstávají na místě, kde byly a ty "poškozené" mizí, pokud si dobře pamatuji na souřadnice 0 0 0. A taky se stává, že se někdy pokazí i systém ukládání a stocky na ukládání dat pro hráče a pro jejich vozidla skript za běhu ignoruje. Čím to může být způsobeno?
  13. Pff, tak já nevím. Testoval jsem to a pásku to vytvoří v místě, kde má, pak se to upravuje. Samozřejmě jeden člověk může vytvořit i více pásek, ale na místě to vytvoří jen jednu pásku s daným ID. S tou se pak pracuje a kdykoliv se může smazat. Když se to testovalo na serveru, nikdo žádnou chybu ani nehlásil, naopak si s tím policajti docela hojně hráli. :-D Každopádně to duplicitní zjišťování pozic jsem vymazal, a zkusím jak to bude fungovat bez toho cyklu tedy. Jinak jak jsi mi ukázal ten příklad zjednodušeného příkazu: EditDynamicObject(playerid, Paska[i][pObject]); LastPaskaEdit[playerid] = i; PaskaEdit[playerid] = true; Tam být musí, protože pracuji s publicem OnPlayerEditDynamicObject, jsem si tak všiml, že jsi to v příkladu neuvedl a napsal jsi tam EditPaska(playerid); jsem pak byl trochu zmaten z toho, kde jsi to vzal.
  14. Máš v globálu napsáno "#if defined FILTERSCRIPT" nebo "#define FILTERSCRIPT"? Je důležitý, aby pawno rozpoznalo, zda děláš gamemode nebo filterscript. Mělo by to být zapsáno. Viděl jsem i případy, kde to být nemusí (proč, to ti já nepovím, až tak pokročilý nejsem). Pokud to tam nemáš, tak to aspoň zkus, jestli někdo nebude mít lepší nápad.
  15. Jo, to je protože jsem ten kód celý upravoval na jiný systém a trochu to chtěl zrenovovat, abych na to nemusel mít dva různý příkazy a k tomu jsem přidal i možnost úpravy. Abych se přiznal, nejsem sice úplně začátečník, ale nejsem ani úplně pokročilý. Původně jak jste mě opravili u toho EditDynamicObject "i" na "playerid", tak tam jsem měl právě to playerid původně a taky to nefachalo, takže tohle byl spíš hokus pokus. Dost jsem už pozapomínal po době, co jsem s pawnem nedělal. Ale už je to vyřešené a děkuji vám za pomoc. Už jsem nezaznamenal chybu. Pošlu sem ještě kód, abych ukázal řešení.
×
×
  • Create New...