Jump to content

Scydo

Obsahový guru
  • Příspěvků

    872
  • Registrován

  • Aktivní

  • Vítězných dnů

    83

Příspěvky posted by Scydo

  1. Jednak, a jednak používáš extrémně zastaralou verzi YSI(to vypadá ještě na 3.0 :d ), kdy jsi načítal celou knihovnu, a jedno že jsi chtěl pouze y_ini... Koukni se raději na nejnovější YSI5, kde máš nejen, lepší alternativní načítání(kategorie, takže víš lépe, co kde je), tak navíc máš jistotu, že načítáš pouze to, co chceš. A ne přesně tady, kde po tobě chce prakticky načíst jeden ze souborů ze samotného core YSI, který by správně ani neměl být přístupný k použití pro "běžné" uživatele :wacko:...

    https://github.com/pawn-lang/YSI-Includes

     

  2. Nápad je to celkem ambiciózní a rozhodně zajímavý(obzvlášť v dnešní době zkoušet konkurovat AI), ale otázka... Budou se moct do vstupního řízení zapojit i lidé mimo Pawno, aka kdokoliv? Protože, jestliže bude výběrové řízení monitorováno pod drobnohledem zvolenými Moderátory a s případně jejich přísnou kritérií, tak odsud se mnoho legitimně prověřených Programátorů nenajde. :d 

  3. #define MAX_EVENT_TYPES (5)
    
    new bool: isEvent;
    new eventType[MAX_EVENT_TYPES];
    
    forward OnGoingEvent();
    public OnGoingEvent() {
    	if (isEvent == true) {
    		switch (eventType) {
    			case 0: {
    					// --- Stuff ---
    			}
    		}
    	} else {
    
    		// --- Anti-Stuff ---
    	}
    	return 1;
    }

    Enjoy. :doge:

    • Líbí se mi to! (+1) 1
  4. Nebo jí nechat generovat obrázky z knihy, aniž bys jí vůbec musel kupovat :d ....

    Spoiler

    prompt codex seraphinianus:
    Q_codex_seraphinianus_aeded41a-a452-4ec4-867c-36a406ac3f5e.png
    Q_codex_seraphinianus_383378b7-05a9-457f-97e0-5cca7a527f31.png

    I když většinou jen ve třech slovech vygeneruje celkem kvalitní solidní obrázky, někdy to chce vypsat pomalu celou sinfonií dalších detailů pro maximální účinek :d :p 

    Spoiler

    prompt magic high forest in autumn, clear details, Cinematic Lighting, High sharpness, 8k, Fullshot, Epic Extra wide shot, Octane render, Photorealistic, Hyperrealism,ultra high quality, extremely detailed, detailed, tone mapping, full screen, fantasy, smooth reflections, tone adjustments, high contrast, gentle shadows, cinematic lighting, ray traced, light reflections, retouched, RTX, high details, ultra high definition, v-ray, octane render, unreal engine 5 render, high details,wide angle lens, volumetric lighting, intricate details, ambient occlusion, gentle lighting, 8k, realism,monocolor, photorealism, hyperdetailed, photoelectrochromism 
    Q_magic_high_forest_in_autumn_clear_details_Cinematic_Lighting__573304ad-f5b5-4591-8932-6a34e317bdd1.png

    Dokonce jde i nastavit různé velikosti, pevné bod při rozměrech, sílu určité generace... Nicméně se svým mírně "olejnatě rozmazaným" stylem generace umí skvěle generovat různá fiktivní magická místa a lesy. Snad to jednou někdo využije na vytvoření hyperrealistické hry :doge:...
     

    Spoiler

    prompt autumn, forest road with old oil lamps, high trees, during night, small fog, cinematic lighting, lots of colors, hyperrealistic, 4k, unreal engine 5, high quality --w 1920 --h 1024 --hd
    Q_autumn_forest_road_with_old_oil_lamps_high_trees_during_night_70101e4f-bbf4-41e7-ab56-3b0713afd50d.png

  5. Vám všem, musím přiznat, že klobouk dolu, že si cokoliv naplánujete, a skutečně to dodržíte. U mě je to přesný impulsivní opak. :d Vždy, když začnu s plánováním, například, že si něco ušetřím, tak to vydrží stěží pár dní, než mě zaujme nově zlevněná hra. A je mi jedno, že dopředu vím, že jí budu hrát tak 3 dny a pak už jí nikdy nezapnu, prostě impulsivní rozhodnutí a celé plánování k ničemu. Stejně to mám i kariéře, ve spoření nebo klidně i příprava na nějaké zvyšování účtů a poplatků. Vydrží to jenom chvilku, a pak jdu od toho. :d
    Hádám, že to bude nejspíš mým dojmem, že cokoliv náhodného, nového bude zajímavé, zábavné, vzrušující... Když mezitím, když vím, že při šetření pár tisíc po celý měsíc, k tomu s doprovodem málem vyhladovění k smrti, si prostě koupím novou lepší židli... není v tom zábava, žádná spontánnost, je to nuda. :think: Ale opět, obdivuji všechny, co si za tím stojí, a skutečně i splní. Hodně štěstí :v: 

    • Líbí se mi to! (+1) 2
  6. Problém ale je, že OnFilterScriptInit() se ti vyvolá pouze jakmile se spustí FS(jestliže je to během restartu serveru, tak to ani nebude nikdo během toho na serveru :kek: )...
    To znamená, že nikomu dalšímu se ten textdraw nezobrazí. Takže, buď použí nějakou fci, která se často opakuje nebo se často stává, například OnPlayerUpdate... a nebo zkus použít můj nápad a vyvolat si jednosekundovou funkci, která se bude opakovat do skončení serveru:
     

    new OSecTimer;
    
    public OnFilterScriptInit() {
    	OSecTimer = SetTimer("OnOneSecTimer", 1000, false);
    	return 1;
    }
    
    public OnFilterScriptExit() {
    	KillTimer(OSecTimer); // <--- !!!! 
    	return 1;
    }
    
    forward OnOneSecTimer();
    public OnOneSecTimer() {
    	OSecTimer = SetTimer("OnOneSecTimer", 1000, false);
    	return 1;
    }

    Pak je to už snadné. Protože probíhá každou vteřinu tak můžeš i všechno zjistit každou vteřinou:
     

    forward OnOneSecTimer();
    public OnOneSecTimer() {
    	for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) {
    		if (IsPlayerInRangeOfPoint(i, 5.0, x_pozice, y_pozice, z_pozice) {
    			// Jestliže je někde v okolí:
    			// (Rádius 5 je docela dost, i když se to nezdá)
    			TextDrawShowForPlayer(i, LokaceTD);
    		}
    	}
    	OSecTimer = SetTimer("OnOneSecTimer", 1000, false);
    	return 1;
    }

     

    • Paráda! (+1) 1
  7. před 18hodinami, Boolove said:

    Děkuji za radu. Udělal jsem to podle návodu, ale když zadám příkaz pouze s jedním parametrem, tak mi to vrátí SCM se syntaxí a příkaz se neprovede. Čím to může být?

    Sscanf vidí int jako "dobrovolné" takže o tom žádná, že tam je někde chyba. Tím to určitě není. Pak mě ještě napadá možnost, že protože float už není, tak je možné, že tvoje číslo si sscanf dosadil do I. Zadával jsi celé číslo 100 a nebo i desetinnou tečkou 100.0 ?
    Pak můžeš ještě f zaměnit za i, takže budeš zadávat čísla a pak hp jen konvertuješ na float pro funkci.

  8. Nebo, můžeš použít velké specifikátory a tak jim hodit nějakou defaultní hodnotu, jestliže jí nenajde. Pak si za defaltní hodnotu dosadit nějaké nemožné ID (buď maximální a nebo -1) a to brát jako ID toho hráče:

    command(hp, playerid, params[]) {
    	new 
    		id, 
    		Float:hp;
    	if (sscanf(params, "I(-1)f", id, hp)) return SendClientMessage(playerid, -1, "Použití: /hp <ID> <MNOŽSTVÍ> nebo /hp <MNOŽSTVÍ>");
    	if (id == -1) SetPlayerHealth(playerid, hp);
    	else SetPlayerHealth(id, hp);
    	return 1;
    }

     

    • Líbí se mi to! (+1) 1
  9. před 45minutami, PartyGame said:

    nebo by to někdo udělal jinak?

    Já bych to udělal jinak, protože máš dvě podmínky pokud ale nemáš jinak.

    // Někdo napsal do chatu:
    public OnPlayerText(playerid, text[]) {
    	/*
    		playerid = ID toho hráče, co napsal do chatu,
    		text[] = Text toho hráče co napsal do chatu
    	*/
    
    	// Jestliže má vip:
    	if (HaveVIP(playerid) == 1) { // <--- Zde máš svoje "pokud"
    
    		// Tak mu formátujeme zprávu, že jde o VIP hráče:
    		format(STR, sizeof(STR), "[ VIP Hráč ] {%06x}%s | %d |: {FFFFFF}%s", GetPlayerColor(playerid) >>> 8, PlayerName(playerid), playerid,string);
    	}
    	//V případě ale, že ho nemá:
    	else { // <--- Zde máš svoje "jinak"
    		// Tak se formátuje obyčejná zpráva:
    		format(STR, sizeof(STR), "[ Hráč ] {%06x}%s | %d |: {FFFFFF}%s", GetPlayerColor(playerid) >>> 8,PlayerName(playerid), playerid, string);
    	}
    	// Tak či tak, se jedna ze formátovaných zpráv všem na serveru napíše:
    	SendClientMessageToAll(0xA9C4E400, STR);
    	return 0;
    }

     

    • Paráda! (+1) 1
    • Líbí se mi to! (+1) 2
  10. před 6hodinami, mxco said:

    No jo, ale to že si refaktorizuje kód (a změní pořadí ifů) mu neodpoví na otázku, proč mu padá server. Takže to s tím sscanf je jen jakési doporučení.

    A taky jsem nepsal, že znám jeho odpověď. Ten problém pádu ani nemusí být v tom kódě. Sázím na problém, jak píše @DeLeTeCZ a nebo, spíše, protože ten soubor nezavírá pomocí DOF2_SaveFile();
    Nicméně určitě neuškodí zkrášlit ten kód a zlepšit jeho všeobecnou přehlednost ale hlavně funkčnost. Nebo snad ano?

  11. Ty vole, kde jsi tohle vyhrabal? :d
    Už to tu padlo, ale kombinovat sscanf a jiné metody práce s parametry je skutečně nesmysl.

    První co, tak se vykašli na to, jestliže je hráč připojený při psaní příkazu, a celý příkaz si logicky přerovnej. Začneš tím, jestliže na to má vůbec oprávnění a až pak deklaruješ proměnné(nic k nim nepřidávej):

    if (PlayerInfo[playerid][Admin] < 6) return SendClientMessage(playerid,-1,"{FF0000}[VIP] {FFFFFF}Nemas AdminLevel 6");
    new 
    	id, tarif, days;

    Dál rozdělení sscanfem a zjištění jestliže sedí parametry(specifikátor u v rozdělení ti umožní, že hráč nemusí psát pouze id ale může i nick hráče):

    if (sscanf(params, "uii", id,tarif,days)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /setvip [ ID/JMÉNO ] [ 0-3 ] [ 0-99 ]");

    Teď máš jistotu, že hráč zadal 3 parametry, 3(nebo 2 a nick) čísla. Takže začneš logicky od prvního a to, jestliže ten hráč je vůbec online:

    if (!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");

    Když to musí být, tak jestliže je NPC:

    if(IsPlayerNPC(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ]{ffffff} Toto je NPC !");

    Rozmezí u tarifu a dní.

    if (tarif < 0 || tarif > 3) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Musiš použiť rozmetie medzi 0 až 3.");
    if (days < 0 || days > 99) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Musiš použit dni medzi 0 až 99.");

    Teď, jestliže chceš mít místo čísel jména těch tarifů, tak bych si určitě deklarovat ty jména globálně, a ne pokaždé přidával řetězec k řetězci.

    new viptarif[] = { "", "Bronze", "Silver", "Gold"};

    Protože v rozmezí máš i nulu, tak nemusíš přidávat žádné další podmínky na čísla/přepínat, rovnou s tím pracuješ:
    (na ty jména můžeš použít rovnou podmíněný operátor[viz dole] a nebo jestliže to chceš mít přehlednější tak podmínku[tu použiju já]):

    tarif != 0 ? viptarif[tarif] : viptarif[0]

    sscanf už dává jistotu, že tarif a days jsou čísla, takže nemusíš nic konvertovat:

    new 
    	string[144 + 1]; // <--- stačí
    if (tarif != 0) 
    	format(string, sizeof string, "%s %s dal hráčovi %s VIP %s na %d dní !", GetAdminRank(playerid),PlayerName(playerid),PlayerName(id), viptarif[tarif], days);
    else 
    	format(string, sizeof string, "%s %s odebral hráčovi %s VIP!", GetAdminRank(playerid), PlayerName(playerid), PlayerName(id));
    SendClientMessageToAll(COLOR_ADMIN, string);

    A jak jsem říkal, protože jsi započítal i nulu, můžeš u všeho přidat rovnou jeho nastavení. A taky jediné speciální co je, tak jestliže teda dostane VIP a na jak dlouho, ostatní je zbytečné ukládat:

    // To ti jen uloží již definované jméno(číslo/id), 
    // takže je to zbytečné abys to ukládal:
    // DOF2_SetInt(UserPath(id),"VIP_Tarif", tarif);
    DOF2_SetInt(UserPath(id), "VIP_Days", days);
    // Nebo PlayerInfo[playerid][VIP] je level?
    if (days > 0) PlayerInfo[playerid][VIP] = 0;
    else PlayerInfo[playerid][VIP] = 1;
    DOF2_SetInt(UserPath(id), "VIP", PlayerInfo[playerid][VIP]);

     

  12. Ani nemůžu říct, že mě to překvapuje...

    před 9hodinami, NuMeRe said:

    Janík opět se předvedl jako hloupé děcko

    Když píšeš "opět", tak buď s ním už máš nějakou zkušenost, nebo minimálně jsi věděl, že je to podvodník. Tak, proč jsi s ním teda uzavíral obchod? Je to prostě pochybné a když to je pochybné tak to neriskuju. Stejně jako se stránkama a stahováním. Když se mi ta stránka nebo odkaz nelíbí tak stejně na něj prostě neklikám.

    Prostě Janik ztratil veškerou důvěru v lidi stejně asi jako naše vláda a i kdyby se snesl anděl Boží z nebe tak stejně by svojí "reputaci" nezíská zpět.
     

  13. Na první pokus 76 wps při 89 % acc a druhý 90 wps při 96 % acc. Ale jak píše @ATomas, je to nic moc. Tohle není ani tak měření psaní rychlosti jako spíše jak dobře umíš psát aj. slova, jelikož během psaní jsem se několikrát sekl, například místo "t" jsem v rychlosti psal "d" nebo některá i vynechával, protože jsem psal, jak to čtu, např. "first", čteme "frst" takže tam člověk "vynechá" to i a zároveň ho i nenapíše.

     

    • Líbí se mi to! (+1) 1
  14. Až na to, že jsi neposlal kód, který má v sobě ten proces vytváření a níčení vozidla, ale pouze jeho zaparkování(a ani ten není celý, protože s vozidlem se nic nestane, pouze se zjistí jeho pozice a uloží, nic víc)... Nicméně:

    Co budeš potřebovat u vozidel je nějaké jméno majitele. Nejlépe u všech, protože můžeš pak snadno rozeznat od majitele města a hráčů:

    #define MAX_PLAYER_PARK_VEHS (3)
    
    new vehOwned[MAX_VEHICLES][MAX_PLAYER_NAME + 1];

    Takže následně, kdyby to vozidlo někde nakupoval, tak se akorát přidá jméno majitele, a pokud jde o jméno majitele u obyčejných vozidel, tak nemusíme dávat nic a nebo u všech změnit jméno na město např. nebo tak něco...
    Pak ještě kontrolovat, jestliže teda může více vozidel, tak pokud jich nekupuje už moc, a zjistit jeho jméno a dočastné id vozidla, do kterého se to vozidlo potom vloží a vytvoří. A nakonec to všechno pro jistotu uložit, a nebo to můžeš nechat až na konec, kdy se server vypíná, ale doporučuji to ukládat co nejdříve(pouze ten řetězec, a pár nezbytných informací, co se určitě během hraní nikdy nezmění, třeba model), protože dini je pomalé a ukládat pak např. 500+- vozidel i s jménem a pozicí? Jaj.

    new pVehs[MAX_PLAYERS];
    
    /* 
    	Nakupování vozidla ... Sample code...
    */
    	if (pVehs[playerid] == MAX_PLAYER_PARK_VEHS) return SendClientMessage(..., "Už sis koupil moc vozidel");
    	new 
    		pNick[MAX_PLAYER_NAME + 1], 
    		veh_id = 0;
    	GetPlayerName(playerid, pNick, sizeof pNick);
    	pVehs[playerid] += 1;
    	veh_id = CreateVehicle(... pozice bazaru?);
    	format(vehOwned, MAX_PLAYER_NAME, pNick);
    	
    	// Uložit vozidlo:
    	dini_Set(...); // vehOwned
    
    	// Uložit hráče ?
    	dini_IntSet(...); //pVehs[]

    Pokud ale chceš, aby se ukládání vozidla nechalo pouze až do doby, než se vypne server, tak stačí všechna vozidla ničit po vypnutí serveru. Nevím, jak ukládáš vozidla, tak předpokládám, že po jednom souboru:

    public OnGameModeExit() {
    	new file[30];
      	// IDčka vozidel začínají od 1:
    	for (new i = 1; i < MAX_VEHICLES; i++) {
    		if (IsValidVehicle(i)) {
    			format(file, sizeof file, "SL/Vehi%i.cfg", i);
    			dini_Set(file, ...); // vehOwned
    			dini_FloatSet(file, ...); // X
    			dini_FloatSet(file, ...); // Y
    			dini_FloatSet(file, ...); // Z
    			dini_FloatSet(file, ...); // A
    		}
    	}
    }

    A velmi podobný postup máš i pro zapnutí serveru(nemusíš mít dočastné veh_id a místo něj házet index cyklu i, ale to je čistě na tobě, pouze pro přehlednost):

    public OnGameModeInit() {
    	new 
    		file[30], 
      		veh_id = 1; // IDčka vozidel začínají od 1
    	for (new i = 1; i < MAX_VEHICLES; i++) {
    		format(file, sizeof file, "SL/Vehi%i.cfg", i);
    		veh_id = CreateVehicle(...);
    		format(vehOwned[veh_id], MAX_PLAYER_NAME, dini_Get(file, ...));
    		/* X = */ dini_FloatSet(file, ...);
    		/* Y = */ dini_FloatSet(file, ...);
    		/* Z = */ dini_FloatSet(file, ...);
    		/* A = */ dini_FloatSet(file, ...);
    	}
    }

    Takhle jediná možnost, jak by se mohla ta vozidla zničit je po vypnutí serveru.
    Pozor, jde pouze o ukázku, takže některé části kódu nemusí být správně, ale princip si myslím, že je dostatečně jasný.

    A taky vřele doporučuji přejít na jiné files. Nejlépe DOF2, má dost podobnou práci jako dini.

  15. YouTube rozjíždí taky filmy a serjály za poplatek. Některé jsou údajně zdarma, ale zatím jsem je nenašel.

    Pak ještě extrém a nevadí ti v aj, popř. si na to stáhnout titulky ze titulky.com, jít na TPbay(jenom zjistit, jaký mají odkaz teď) a nebo rarbg(obojí doporučují si při prohlížení/stahování si sehnat vpnku).

  16. před 2hodinami, jefo1011 said:

    Následně zjišťuji hráčovu pozici a porovnávám definované souřadnice abych zjistil, ve které zóně se nachází. Výsledek formátuji do stringu RealZone.

    Takže, jestliže to správně chápu, tak nejdříve zjistíš pozice hráče a podle toho do nějakého řetězce vkládáš jméno té pozice? Takže vlastně zjišťuješ dvě informace, zónu a jméno zóny?
    Nicméně, já bych doporučoval zkrátka si udělat dvě funkce a to jestliže je v jakékoliv zóně a pak jestliže je v té dané zóně:

    bool IsPlayerInAnyZone(playerid) {
    	// ...
    	return true;	
    }
    
    bool IsPlayerInZone(playerid, zonename[]) {
    	// ...
    	return true;
    }

    Proč? Za 1. určitě dynamika. V případě, že bys přidával další zóny, nemusíš pak porovnávat každé jméno zóny individuálně...

    for (new i = 0; i < sizeof(ZonyMiniher); i++) {
    	if (...)
    }

    A za 2. mnohem víc jsi tím zjednodušíš práci, protože pak už jen porovnáš jestliže je v zóně, nebo ne, a jestli jo, tak v jaké:

    if (IsPlayerInAnyZone(playerid)) {
    	if (IsPlayerInZone(playerid, "City Hall")) {
    		SendClientMessage(playerid, MAGENTA, "Nacházíš se v bezpečné / povolené zóně.");
    	} else {
    		SendClientMessage(playerid, MAGENTA, "Vrať se do bezpečné zóny!");
    	}
    }

    Pokud jde o "nefunkční" komparaci, tak ono taky tam můžou být neviditelné znaky třeba další řádek, nebo tabování, které neuvidíš.
    Nebo, někde během formátování přidáváš něco navíc.
    Zkoušel si printovat i celý průběh formátování slovo po slově, řetězec po řetězci? Je možné, že některé funkce(například strlen()) se svojí unikátní návratovou hodnotou vrací jiné údaje a proto se nemusí shodovat.

  17.    title.png  🦙 C++ a C#
    font je comic sans 🦙

    Open source jádro hry + open source editor

    Popis
    Jde o takovou ukázku mého projektu, jak bych tvořil hru od nuly. Ale hlavně jde o obousměrný způsob, "github návod", kdy já se učím během tvorby a mezitím někdo, co začíná C++ by mohl sem tam něco pochytit.
    Zároveň tím samozřejmě vůbec neříkám, že kdyby měl někdo podobný projekt, že přesně takhle by měl psát kód, vůbec ne!
    Také to má i něco společného s nedávným helpem, co jsem sem přidával.


    Proč jsi to pojmenoval zrovna "Lame"?
    Jelikož moje dovednosti v C++ (a C# pro následný editor) nejsou zase tak velmi pokročilé, tak celý kód je tvořen dle toho, jak mě to zrovna napadlo v daný moment. Hlavně také celý projekt jsem dělal zcela od znova asi 3x :d , protože první verze byla příšerná, a druhá byla už moc chaotická. Takže pojmenování "Lame" pochází od chabé, trapné, ubohé... hlavně protože určitě se najde někdo, koho by napadlo lepší zpracování určitého kódu.

    Co všechno obsahuje?
    Momentálně obsahuje jen pár souborů, protože jsem začal velmi nedávno, nicméně mi přišlo, že nebude na škodu prezentovat projekt, hlavně protože na něm budu aktivně pracovat, a čtenář si může kdykoliv zajít a podívat se na případné novinky. Nicméně plánuji, že celé jádro bude obsahovat následujicí:

    • Světy - Když nestačí jen jeden svět,
    • Entity/NPC - Vytvoř si všechny možné entity, od monster, nemrtvé až po bandity nebo hráče,
    1. Humanoidi/Lidé,
    2. Hráč,
    3. Monstra,
    4. Zvířata,
    5. Duchové,
    6. Nemrtví,
    • Předměty - Přidávání itemů, zbraní, zbrojí, lektvarů, úkolových předmětů a více,
    1. Úkolové,
    2. Jiné,
    3. Lektvary,
    4. Jídlo,
    5. Zbroj,
    6. Štíty,
    7. Zbraně,
    8. Šípy a šipky.
    • Attributes - Pro předměty, přidávání různých dovednosti například zvýšení many nebo životů.
    • Skills - Pro hráče, nastavení různých dovedností,
    • Boje - Různé funkce pro různé momenty například ubírání životů, zjištění odblokování poškození,
    • Market - Prodej a koupě všech předmětů, změna cen po prodeji, zjištění ceny předmětu apod,
    • Texty - Přednastavené různé texty, jménema popisky, tituly textů apod.
    • Úkoly - tvorba úkolů, typy úkolů, odměny, podmínky určitých momentů a tak dále.
    • Dialogy - Okénka, inventář, povídání s NPC apod,
    • Animace - Buď už zabudované(do pre-defined verze) a nebo si přidat nějaké vlastní
    • Zvuky - Spíše soubor nejužitečnějších zvuků
    • Tutoriál - Upravit si momenty nebo dialogy jak se budou zobrazovat pro výuku hráče
    • Jiné - Momentálně mě nic nenapadá, co ještě například.

    Takže, co teda obsahuje?
    Momentálně za "hotové" by se dalo brát světy a předměty (ne zcela samozřejmě, ještě se bude něco přidávat).

    Ukázka použití Předmětů:
    Původně jsem chtěl hodit jen ukázku z GitHubu s odkazem ale to bohužel nejde :(. Tak snad nebudou vadit obrázky ze VS
    Screenshot-2.png

    Ukázka použití Světů:
    Screenshot-3.png

    Co to bylo o editoru?
    Jestliže je někdo líný, a nebo by raději chtěl mít zcela úplný přehled co přesně přidává, tak ještě tvořím zároveň pomocí C# i editor, který vypíše vše potřebné pro uživatele. Takže mu stačí pouze kompilovat. Samozřejmě je ještě solidně ve tvorbě, hlavně protože ani jádro není pořádně hotové.  Také, aby někomu neexplodoval mozek s očima z naprosto světlého stylu, tak se snažím, aby toho co nejvíce bylo ve Dark motivu Windows:
    Screenshot-1.png

    Odkaz?
    Odkaz na readme jádra hry a zároveň i na takové rozcestí příkladů, návodů a kódů je zde:
    https://github.com/Scydo/LameRPG#lamerpg

    • Paráda! (+1) 1
    • Líbí se mi to! (+1) 1
  18. Nejnovější YSI je a vždycky byla celkem "buggy". Nejlepší je prozatím používat starší verzi https://github.com/pawn-lang/YSI-Includes/releases/tag/v4.0.2

    Jestliže i tak chceš používat novou verzi, tak minimálně si musíš stáhnout všechny 4 includy, které mají vlastní odkazy, protože stážený zip soubor releasu ho neobsahuje:
    (I když pravděpodobně by ti user error řekl, že ho nenačítáš...)
    index.png

    Pokud jde o pád kompilátorů, tak za to může skoro jakýkoliv nahrávaný include, protože používáš neaktualizovaný kompilátor, který nezvládá kompilovat celý YSI kód a skoro vždycky spadne.

    Jinak pokud jde o tu hromadu varování tak https://github.com/pawn-lang/compiler/issues/527#issuecomment-633834907

×
×
  • Create New...