Jump to content

The hidden face

Uživatel
  • Příspěvků

    810
  • Registrován

  • Aktivní

  • Vítězných dnů

    22

Příspěvky posted by The hidden face

  1. Nevím, jestli ti tu někdo poradí něco jiného než reinstall gta. Nejspíš máš nějaký módy a blbnou ti. Pokud se bez nich neobejdeš a budeš si je chtít nainstalovat i po reinstalaci gta, tak bych být tebou po každé instalaci módu zkoušel, zda gta funguje či ne, pak by si mohl vyloučit ten špatný. (Může třeba docházet k nějakým kolizím mezi nainstalovanými módy...) ;)

  2. Nevím, na co potřebuješ na CyberHost návod. Je tam jediné tlačítko, a dá se říct, že ty nemáš ani nic na výběr, jelikož máš free verzi. ;) Lepší asi bude placená verze CyberHostu, kde si budeš moct vybrat z jaké změně chceš mít IP, bez fronty a taky na jak dlouho budeš chtít. ;)

  3. Každá IP adresa musí být někde zaregistrována. Jsou dané nějaké rozsahy pro danou lokalitu (Evropa - Česká republika - okres (nebo něco na ten způsob) - město (obec)). To je důvodem toho, proč Google dokáže zjistit tvoji přibližnou polohu (nejen Google). Takže pokud ti tvůj poskytovatel dělá internet, přidělí ti nějakou IP adresu a tu musí následně zaregistrovat (v obráceném pořadí :d). Pokud si ji ty změníš na nějakou randomáckou adresu, tak ti internet nejspíše nepůjde, jelikož si nastavíš IP adresu třeba jiného poskytovatele (jiná lokalita), nebo adresu, která není zaregistrovaná, nebo kterou někdo používá (tady nevím, co přesně to udělá... :d ). ;)

     

    Takže pokud si potřebuješ změnit IP adresu, tak pouze přes svého poskytovatele, což by snad mělo jít i zadarmo. ;) Musíš ovšem si ji dokázat v routeru změnit. ;)

     

    Jinak pokud ti jde o nějakou dočasnou změnu IP, můžeš k tomu využít nějaké prográmky, které tě přesměrují na nějaké servery a ty následně využíváš jejich IP. ;)

  4. Mivčo, nevím, co teď plánuješ (zda FS, či GM), ale YSI nepoužívej. Neznáš a ani nechceš znát základy, YSI je pro tebe zbytečně náročné. Používej raději to, co ti vyhovuje a s čím už ses trochu naučil dříve - DOF2, popř. dini. Ano, říkám dini. Sice jsem jeho odpůrcem, ale u tebe k žádné progresi stejně nedojde.

     

    Když budeš používat DOF2/dini, je také větší šance, že se ti někdo ozve. YSI tu používá jen pár lidí a ještě méně jich pomáhá nováčkům, takto ti budou psát akorát ti, co s tím nemají zkušenosti.

     

    Myslím si, že už není potřeba být odpůrcem dini, alespoň ne toho nového dini2 (gini). Používá se úplně stejně, jako staré dini, akorát tohle dosahuje stejných výsledků jako třeba DOF2 či y_ini, kolikrát i rychlejších. ;)

  5. Zdravím,

    nechápu jak to že to nevidíš... Používáš špatné závorky a někde uzavíráš bloky moc brzo a někde je ani neuzavřeš. Odtabuj si to, a na bloky používej pouze složené závorky {}, NE jednoduché ()!!!

     

    Většina tvých errorů souvisí právě s těmi závorky, jelikož třeba špatně uzavřeš celý stock, tak při dalším stocku, kde vytváříš proměnnou File, ti compiler řve, že jsi už File nadefinoval někde nad tím...

     

    //Edit: Navíc máš špatně napsaný callback OnDialogResponse - na konci každého dialogu musíš vracet 1 a na konci callbacku 0. Je to kvůli tomu, že když se dialog najde vrátí 1 a bere se, že se dál hledat už nemusí, když se ovšem ani jeden dialog neshoduje, dojede na konec callbacku, kde se vrátí 0, takže se začne hledat dialog i jinde (v FS). ;)

  6. Ahoj,

    bohužel mi na tvém FS dost věcí nesedí. Napíšu ti je sem, aby jsi se z těchto chyb poučil a další FS, byl kvalitnější. Neber to nějak osobně, kritika je důležitá pro to, aby ses zlepšil. ;)

     

    Když se kouknu na to množství Textdrawů je mi špatně. Určitě sis všiml, že všechny textdrawy mají stejné umístění (pozici na obrazovce) a i stejně tak jsou stejné i jejich vlastnosti. Funkce, která ti tohle všechno vyřeší se nazývá TextDrawSetString(Text: text, string[]), která ti vlastně změní zobrazovaný obsah, takže nemusíš pořád pro každý event vytvářet nový textdraw, je to zbytečné. Navíc, když už jsme u toho, tak proměnné pro textdrawy vytváříš globálně, ale využíváš je pouze v jednom bloku u příkazu, takže zbytečně hltíš paměť. ;) A určitě bych si vytvořil na schování textdrawu timer, není moc praktické dělat příkaz na schování txd.

     

    Další, co by v FS rozhodně nemělo být je toto:

    public OnPlayerConnect(playerid)
    {
        SendClientMessage(playerid,0x00FF00,"------------------------------------------------------");
        SendClientMessage(playerid,0x00FF00FF," Vitaj na MEGA PARBE !");
        SendClientMessage(playerid,0x00FF00FF," MEGA PARBA BY : Ninjonik");
        SendClientMessage(playerid,0x00FF00FF," Doporučujeme si napísať adminovy aby vám dal peniaze či preukazy");
        SendClientMessage(playerid,0x00FF00FF,"Všetky príkazy zobrazíte pomocou /prikazy ");
        SendClientMessage(playerid,0x00FF00FF,"Navštívte náš web : www.megaparba.9e.cz");
        SendClientMessage(playerid,0x00FF00FF,"Novinky zobrazíte pomocou /novinky a celkovú pomoc v /pomoc");
        SendClientMessage(playerid,0x00FF00,"------------------------------------------------------");
    
    Ať někdo prosí adminy, aby mu dal průkazy nebo aby navštívil nějaký cizí web, či dokonce četl, že MEGA PAŘBU vytvořil někdo kdo ji nevytvořil, by hráči opravdu číst neměli a pokud ano, tak si to tam provozovatel serveru napíše sám. To samé s tím příkazem adminom nebo adminem. ;) Tohle by rozhodně nemělo být součásti FS !!! Něco jiného by bylo, pokud by jsi napsal, že server využívá tvého FS, který si vytvořil. ;)
     
    Kdyby jsi byl zkušenější, určitě by sis udělal funkci na ty teleporty, jelikož obsah příkazů je stále stejný, akorát měníš text, který se zobrazuje hráčům a pozici. Ale tohle se dá ještě pochopit. 
     
    No a nejvíc cancer jsou asi dialogy. Nejspíš to je tím tabováním, jak si celý OnDialogResponse napsal, ale každopádně ti ten jediný dialog, co tam máš nebudu fungovat. Viz.:
    if(dialogid == 1){} // dialog otevřeš a okamžitě zavřeš a pod něj potom už rveš response a listitemy....
    

    Navíc použít id 1, je dost odvážné, jelikož je největší pravděpodobnost, že bude už obsazené, třeba módem. ;) Ale někdy se tomu prostě nevyhneš, každopádně máš ještě 32767 možností pro jiné id. ;) A  co se týče stavby OnDialogResponse, tak i při jediném dialogu, který tam máš, je celý callback špatně napsaný. Dialog by jsi měl ukončit return 1, a celý public return 0; Je to kvůli tomu, že když se dialog nenajde, tak public vrátí 0 a hledá ho v dalších fs, pokud však vrátíš 1, tak se bere, že se dialog našel a dál už to nehledá. ;)

     

    Celkově by se dal tenhle tvůj FS asi víc jak o polovinu zkrátit. Pokud budeš chtít, přepíšu ti to na to jak by měl nějak správně vypadat a pošlu ti to, aby ses z toho mohl učit. ;)

     

    A jako poslední radu co bych ti dal, že by sis měl určitě FS předtím, než ho zveřejníš odzkoušet, jelikož ten dialog ti opravdu fungovat nemůže. ;) A přitom by ti stačilo tabovat a všiml by sis toho. ;)

  7. Zdravím,

    takže na začátek tvůj kód je příšerný a nepřehledný. Všiml sis vůbec toho, že ve stocku SystemMsg máš další stock? Asi ne vid? Kdyby jsi taboval nic takové by se ti nestalo. Za druhé je poznat, že máš některé kódy zkopírované, což by nevadilo, ovšem kdyby sis je upravil. Nejsou to nějaké zásadní věci, zvětšiny jde o nadpisy dialogů či zprávy, co hráčům posíláš. A jelikož to uvádíš jako mód, budeš ho mít ve výsledku celý zmatlaný a budeš ho moci celý předělat. Možná si říkáš, že to nejdříve naplácáš, zkopíruješ a pak upravíš, ale tahle cesta vede jen do pekla, jelikož na 100% na něco zapomeneš a pak se to v bůh ví jak dlouhém kódu bude velice špatně hledat. Za třetí tvůj mód nemá žádný řád, což možná souvisí i s druhým bodem, mluvím hlavně o tom, že veškerá data ukládáš pod tagem se velkým začínajícím písmenem a jeden z nich s malým, ovšem při čtení čteš všechny 3 s velkým začínajícím písmenem... A za čtvrté neznáš vůbec základy, koukni se jak má OnDialogResponse vypadat, kdy používat return a kdy ne. Občas máš zbytečné podmínky.

     

    Co jsem na první pohled viděl, tak jsem upravil, je možné, že tam ještě nějaké chybku budou. Smazal jsem callbacky, které nepoužíváš, aby jsme se tu netahali s dlouhými kódy. Přečti si komentáře. Souvisí s těmi body nahoře.

    A hlavně začni tabovat, jelikož né každý tu je zvědavý na nepřehledné a neodtabované kódy.

     

     

     

    #include <a_samp>
    #include <dutils>
    #include <dudb>
    //==============================================================================
    //                              [  BARVY  ]                                   //
    //==============================================================================
    #define BARVA 0xEFEFF7AA // Pak si můžete změnit !
    //==============================================================================
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
    //==============================  new   ========================================
    new shop;
    //========================== new [ MA_PLAYERS ] ================================
    new PLAYERLIST_authed[MAX_PLAYERS];
    new pivo[MAX_PLAYERS];
    new pizza[MAX_PLAYERS];
    //==============================================================================
    //               [  STOCK ]                                     //
    //==============================================================================
    stock Jmeno(playerid){
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
    }
    //==============================================================================
    stock PlayerName(playerid)
    {
    	new name[255];
    	GetPlayerName(playerid, name, 255);
    	return name;
    }
    //==============================================================================
    stock SystemMsg(playerid,msg[])
    {
    	if ((IsPlayerConnected(playerid))&&(strlen(msg)>0))
    	{
    		SendClientMessage(playerid,COLOR_SYSTEM,msg);
    	}
    	return 1;
    }
    //==============================================================================
    public OnGameModeInit()
    {
    
    	SetGameModeText("Kukysek");
    	AddPlayerClass(23,-2021.3691,173.5547,28.7263,83.0676,0,0,0,0,0,0); // spawn novi
    	shop = CreatePickup(1239,1,-2034.0510,178.7934,28.7263,-1);
    	return 1;
    }
    
    public OnGameModeExit()
    {
    	return 1;
    }
    
    public OnPlayerRequestClass(playerid, classid)
    {
    	SetPlayerPos(playerid, -2034.0510,178.7934,28.7263);
    	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    	return 1;
    }
    
    public OnPlayerConnect(playerid)
    {
    	PLAYERLIST_authed[playerid] = false;
    	if (!PLAYERLIST_authed[playerid])
    	{
    		if(udb_Exists(PlayerName(playerid))) // Když jeho ucet existuje
    		{
    			ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Vítej zpět !\nNapiš heslo !","Použít","Odpojit"); // existuje
    		}else{
    			ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrace","Vítej !\nZaregistruj se, napiš heslo","Použít","Odpojit"); //neexistuje
    		}
    	}
    	return 1;
    }
    
    public OnPlayerDisconnect(playerid, reason)
    {
    	if (PLAYERLIST_authed[playerid])
    	{
    		//============================ UKLADANI PRI ODCHODU ============================
    		dUserSetINT(PlayerName(playerid)).("Pivo",pivo[playerid]);
    		dUserSetINT(PlayerName(playerid)).("Pizza",pizza[playerid]);
    		dUserSetINT(PlayerName(playerid)).("Penize",GetPlayerMoney(playerid)); //zachovej si nějaký řád, proč předchozí dvě začínají velkým písmenem a penize jsou malým?
    	}
    	PLAYERLIST_authed[playerid] = false;
    	return 1;
    }
    
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    	dcmd(osoba,5,cmdtext);
    	return 0;
    }
    
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    	if(pickupid == shop) {
    		ShowPlayerDialog(playerid,10,DIALOG_STYLE_LIST,"Obchod se zbraněmi","Koupit pivo\nkoupit pizzu","Koupit","Zrušit"); //wtf obchod se zbraněmi? 
    	}
    	return 1;
    }
    
    
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    	if(dialogid == 1)
    	{
    		if(response == 1)
    		{
    			if (udb_Exists(PlayerName(playerid))) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Přihlaš se ! napiš heslo","Použít","Odpojit");
    			if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrace","Musíš napsat heslo !","Použít","Odpojit");
    			if (udb_Create(PlayerName(playerid),inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Víborně, nyní napiš znovu heslo !","Použít","Odpojit");
    		}
    		if(response == 2)
    		{
    			Kick(playerid);
    		}
    		return 1;//zapomněl jsi na return 1;, takže si to myslí, že jsi dialog nenašel a na konci publicu vrátí 0, což zabričíní to, že bude hledat dál (ve FS) i když to nění třeba, protože jsi dialog našel --> tohle ti může dělat problémy
    	}
    	//==============================================================================
    	if(dialogid == 2)
    	{
    		if(response == 1)
    		{
    			if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Musíš zadat heslo !\nNapiš heslo !","Použít","Odpojit");
    			if (udb_CheckLogin(PlayerName(playerid),inputtext))
    			{
    				pivo[playerid] = dUserINT(PlayerName(playerid)).("Pivo");
    				pizza[playerid] = dUserINT(PlayerName(playerid)).("Pizza");
    				GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("Penize")-GetPlayerMoney(playerid)); //to je to učem mluvím, ukládáš pod malým a čteš pod velkým.. !!!
    				PLAYERLIST_authed[playerid] = true;
    				SendClientMessage(playerid, BARVA, "Úspěšně přihlášen !");//proč máš tady return?, odstraním ho a potom použiji else a return
    			}
    			else return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Nespravne heslo !","Použít","Odpojit");
    		}
    		if(response == 2)
    		{
    			Kick(playerid);
    		}
    		return 1;//to samé co výše
    	}
    	//===============================================================
    	if(dialogid == 10)
    	{
    		if(response == 1)
    		{
    			if(listitem == 0)
    			{
    				SendClientMessage(playerid,-1,"Kúpil si si Rožok !"); //rožok? 
    				pivo[playerid]++;
    				GivePlayerMoney(playerid,-10);
    			}
    			if(listitem == 1) //a to stejné u dalších věcí
    			{
    				SendClientMessage(playerid,-1,"Kúpil si si Rožok !");//rožok? 
    				pizza[playerid]++;
    				GivePlayerMoney(playerid,-10);
    			}
    		}
    		return 1; //to samé
    	}
    	//==============================================================================
    	if(dialogid == 20)
    	{
    		if(response == 1)
    		{
    			if(listitem == 0)
    			{
    				new Float:health;
    				if(pivo[playerid] <=0) return SendClientMessage(playerid,-1,"[  !  ] Nemáš žadne pivo!");
    				if(health>=95) return SendClientMessage(playerid,-1,"[  !  ] {FFFFFF}Hráč není zraněný !");
    				{
    					pivo[playerid]--;
    					SendClientMessage(playerid,-1,"vypil jsi pivo");
    					GetPlayerHealth(playerid,health);
    					SetPlayerHealth(playerid,health+35);
    					if(health > 100) SetPlayerHealth(playerid,100); //proč return
    					//--> return použij v případě, že se něco nepovedlo, jako to máš použito výše (viz. Hráč nění zraněný). Return ti totiž ukončí callback bez
    					//toho aniž by ti vrátil 1 nebo 0, to ti sice vrátí fce SetPlayerHealth, ale 1 v případě že se fce vyvolala úspěšně a 0 když ne a no ty ty nemůžeš spoléhat
    					//ty chceš aby ho to vyléčilo a pokračovalo dál, jelikož na konci dialogu vracíš 1, což znamená že jsi našel dialog
    					
    					//Pozn.: Je to to samé kdyby si chtěl třeba psaní mezi teamem (zaměstnání) ty cyklem projedeš všechny hráče a ti co uvnitř cyklu splňují podmínku, že jsou ve stejném zaměstnání, tak jim odešleš zprávu
    					//kdyby jsi to napsal takto:
    					/*
    					for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
        				{
            				if(PlayerJob[i] != PlayerJob[playerid]) return 0; // --> to by ti zapříčinilo ukončení cyklu, takže pokud by zrovna id 0 (nebo další id za ním) nebyl tvůj kolega ukončí se cyklus a dál nepokračuje...
            				else
            					SCM(i, -1, "Kolega píše: nějaká zpráva");
        				}
    					*/
    				}
    			}
    	//--------------------------
    			if(listitem == 1)
    			{
    				if(pizza[playerid]<=0) return SendClientMessage(playerid,-1,"[  !  ] Nemáš žadnou pizzs!");
    				//tady jsi měl úplně zbytečnou podmínku, jelikož ti všechno ošetřila už ta podmínka předtím
    				pizza[playerid]--;
    				SendClientMessage(playerid,-1,"Snedl jsi pizzu");
    				new Float:health;
    				GetPlayerHealth(playerid,health);
    				SetPlayerHealth(playerid,health+35);
    				if(health > 100) SetPlayerHealth(playerid,100); //proč return
    			}
    			//tady si vracel 1, proč v respose, return 1 se dává na konci dialogu?
    		}
    		return 1;
    	}
    	return 0;
    }
    
    dcmd_osoba(playerid, params[])
    {
    	#pragma unused params
    	new str[128];
    	format(str,128,"Pivo: %dKS\nPivo: %dKS", pivo[playerid], pizza[playerid]); //Formát
    	ShowPlayerDialog(playerid,20,DIALOG_STYLE_LIST,"Info",str,"Pokračovať",""); //Zobrazí dialóg
    	return 1;
    }
     

     

     

     

    PS: Tento kód nemusí stále fungovat, jenom si ho uprav a pak to když tak dořešíme. ;)

  8. Ahoj,

    moc děkuju za tvůj odkaz. Na Googlu mi taky vyskočil, ale jelikož byl v ruštině, tak jsem mu nevěnoval pozornost. Potom, co jsi mě na něho odkázal i ty, tak jsem si ho nechal přeložit a z té lámavé češtiny, co mi to vyhodilo jsem zkusil něco udělat. ;)

     

    Pokud by měl někdo podobný problém, napíšu jsem postup jak jsem to vyřešil:

    Stáhl jsem si tuto ulitku.

    Po scanování vám to vyhodí zprávu (FRST.txt), veškeré podezřelé soubory (nemusí to být vždy, mě to označilo i od MS (IE), kvůli nějakému omezení) se označí "<======= ATTENTION".

    Pod nadpisem "Registry (Whitelisted)" jsem měl mezi ostatními zápisy:

    HKLM-x32\...\Run: [servicesc.exe] => C:\Users\Daniel\AppData\Local\Temp\servicesc.exe <===== ATTENTION
    

    Soubor jsem se pokusil násilně odstranit, jelikož zrovna běžel  někde v pozadí, tak jsem ho chtěl smazat pomocí ulitky Unlocker (super apka). Ta mi nabídla smazaní po restartu.

    Po restartu jsem měl nastavenou ještě špatnou DNS, ale po jejím dalším nastavení se už DNS nemění.

    Osobně ještě doporučuji promazat registry CCleanerem.

    Pozn.: Apka je jinak dělaná na to, že vám to vyhodí zprávu a někdo odbornější vám napíše soubor příkazů, aby odstranil všechny vady.

     

    Ještě jednou díky za odkaz, pro příště se mrknu i na ruská fóra! ;)

  9. Zdravím,

    včera večer jsem na PC objevil takový problém, a tj. automaticky se měnící dns. DNS se zničeho nic změní na nefunkční, takže musím stále měnit dns ručně (buď zaškrtnou automaticky získat přes DHPC, což dříve šlo a nebo zadám dns googlu (8.8.8.8). Mění se to asi v 1 až 2 minutových intervalech, někdy to vydrží i déle. Nejčastěji to hází tuhle dns adresu 45.32.155.235 a někdy nějakou randomáckou.

     

    Chtěl bych se zeptat, jestli někdo s něčím podobným neměl zkušenosti nebo jestli by mi někdo nedokázal poradit nějaký šikovný nástroj na odstranění malware (předpokládám, že to malware je). 

     

    PC jsem prohlédl, žádné aplikace, o kterých bych nevěděl nebo bych je v pc nechtěl, jsem nenašel. Co se týče malware scannerů, tak jsem vyzkoušel adwcleaner, combofix (ten se zasekl u 5. fáze), malwarebytes (něco našel a odstranil, ale nepomohlo) a teď zkouším svůj antivir Eset, ale nepočítám, že něco najde... ;) Registry jsem CCleanerem taky vyčistil, takže by tam žádný škodlivý zbytky zůstat neměli. ;)

     

    PS: Do PC jsem v poslední době nic neinstaloval, pouze nějaké aktualizace od MS, javy, atd. Všechno známe firmy a stahováno z ověřených stránek. ;)

     

    Za každou radu budu vděčný...

  10.  

     

    Samotnému autorovi nemá smysl psát a je lepší řešit tuto kolektivní záležitost takto veřejně.
     

     

    S tím musím souhlasit. Když se soutěž jaksi pozastavila, tak jsem psal Polisovi, jestli s ní třeba nechce pomoc (měl statusy, že mu nejde pc nebo něco). Ovšem bez odpovědi, když jsem se ho ještě několikrát ptal, proč se soutěží nic neděje, tak mi od něho nikdy nepřišlá žádná odpověď... ;)

     

    Myslím, že tu nejde ani tak o výhry (i ten Pawn Mistr by byl uspokující), z mého pohledu se snažili nějak zvýšit aktivitu, což si myslím, že mohl být dobrý krok, kdyby se na to ovšem po chvilce nevykašlali. :(

  11. Má ta klávesnice nějaký ovladač? Pokud ano, reinstaluj. Pokud si nedávno aktualizoval, tak se vrať k poslední funkční verzi ovladače.

     

    Ale spíše to vypadá, že bude problém v klávesnici, nejdříve by to ale chtělo vyzkoušet někde jinde. Zkus se třeba kouknou jestli není někde porušený kabel (ochrana) či někde nějak ohnutý.

     

    A co se týče toho zablokování, vypnou se kontrolky na té klávesnici nebo stále svítí během doby, co na ní nejde psát? ;)

  12. Zdravím,

    myslím, že by nám všem výrazně pomohlo, kdyby jsi sem zveřejnil celý kód. Pokud je moc dlouhý, tak ho třeba hoď na ulož. to... Třeba s komenty, co a kde se týká těch check pointů.

     

    Z tohohle výcucu těžko poznáme, jestli máš někde něco špatně. Může se jednat klidně o jednoduchou chybu, která v tomhle kusu kódu není vidět, jelikož kód není kompletní. ;)

  13. Ve všech skriptech máš špatně napsaný callback OnDialogResponse, má vypadat nějak takto:

    public OnDialogReponse(...)
    {
        if(dialogid == DIALOG_LOGIN)
        {
            //nějaký kód tady
            return 1; //našlo to dialog, vrací úspěch (1)
        }
        else if(dialogid == DIALOG_REGISTER)
        {
            //nějaký kód tady
            return 1; //našlo to dialog, vrací úspěch (1)
        }
    ...
        return 0; //pokud to žádný dialog nenajde, vrátí neúspěch a snaží se hledat jinde (FS)
    }
    

    Takhle si oba fs uprav, na konci každýho dialogu vrať 1 a na konci callbacku vrať 0, jak to máš výše. Samozřejmě že to samé musíš mít va gamemodu... ;)

     

    PS: Nevěděl jsem jak na tom s pawn jsi, proto jsem ti to takhle rozepsal, si totiž nový uživatel, takže nemám z čeho poznat tvojí úroveň pawn. ;):d

  14. Když jsem dáš zdorojový kódy obou fs nebo aspoň odkaz na ně tak ti to upravím. Pokud to chceš zkusit sám, není to nic složitého, stačí u definic dialogů (ve spod ti dám příklad, jak by mohli vypadat) změnit jejich id. Id se nesmí shodovat s id dialogů v tvém módu a s tím druhým fs.

    Jak mohou vypadat definice dialogů:

    #define DIALOG_LOGIN 1234
    #define DIALOG_REGISTER 1235
    #define DIALOG_HOUSE_SELL 1236
    ....
    

    Stačí ti pouze změnit ty čísla (id).  ;) Maximální id je 32767, tak ne že to přeženeš! :d

  15. ale ja ne mam to vse koupene

     

    RZE ti ale nemůže prodat nějaký hosting, ale jen a pouze její tvůrce (pokud nemá toto právo ještě někdo jiný) a to jest ATomas. Pokud vím, tak legálně provozované rze 8 jsou pouze dvě. A pokud ji prodává hosting, který nemá s ATomasem žádnou smlouvu, měl by být stíhán právě tento hosting.

     

    Jinak co se shození serveru týče, určitě sis měl server lépe zabezpečit. Protože někteří lidé, když můžou ničit, tak ničí (a někteří i nevědomky :d ). Samozřejmě to Deniska nijak neomlouvá  a přijde mi to od něj dost dětinské. ;)

  16. Tady jsem ti udělal jeden snad už plně funkční, má to standardní odpočet, jak si chtěl a kdyby náhodou to měl hráč přečtený rychlejc, tak může přeskočit na další:

     

    #define DIALOG_TUTORIAL 1
    
    enum TUT_DIALOGS
    {
    	caption[65],
    	info[4096],
    }
    new CurrentTutDialog[MAX_PLAYERS];
    new TutorialTimer[MAX_PLAYERS];
    
    new tutorial[][TUT_DIALOGS]=
    {
    	{"Tutoriál 1 - Průkazy", "Tady a tady koupíš průkazy"},
    	{"Tutoriál 2 - Nemovitosti", "Tady a tady koupíš nemovitosti"},
    	{"Tutoriál 3 - fdsf", "Tady a tady koupíš nemovitosti"},
    	{"Tutoriál 4 - fsdfasgaf", "Tady a tady koupíš nemovitosti"},
    	{"Tutoriál 5 - hfghfghd", "Tady a tady koupíš nemovitosti"}
    };
    
    
    forward ShowTutorial(playerid);
    public ShowTutorial(playerid)
    {
    	ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, tutorial[CurrentTutDialog[playerid]][caption], tutorial[CurrentTutDialog[playerid]][info], "Další", "Zavřít"); //mění se pouze nadpis a text
    
    	if(CurrentTutDialog[playerid] != sizeof(tutorial) - 1){
    	    CurrentTutDialog[playerid]++;
    	    KillTimer(TutorialTimer[playerid]);
    	    TutorialTimer[playerid] = SetTimerEx("ShowTutorial", 5000, false, "i", playerid);
    	}else{
                ShowPlayerDialog(playerid, -1, DIALOG_STYLE_MSGBOX, "", "", "", "");//skryje posledni dialog
    	    SendClientMessage(playerid, -1, "Děkujeme za zhlédnutí tutoriálu!");
    	}
    	return 1;
    }
    
    
    public OnPlayerSpawn(playerid)
    {
    	ShowTutorial(playerid);//zavoláš po spawnu hráče, samozřejmě to chce podmínku, aby se tutoriál spustil jen hráči, co si ho nepřošel
    	return 1;
    }
    
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        if(dialogid == DIALOG_TUTORIAL)
        {
            if(response)
            {
    	    KillTimer(TutorialTimer[playerid]);//jelikož chceme přeskočit na další tut, tak zastavíme timer a zavoláme fci znovu
    	    ShowTutorial(playerid);
            }
            else 
            {
                KillTimer(TutorialTimer[playerid]);//ukončí průběh tutoriálu
                SendClientMessage(playerid, -1, "Tutoriál můžete kdykoliv spustit pomocí /tutorial");
            }
            return 1; 
        }
    
        return 0; 
    }
    
    
    

     

     

  17. Špatně odtabovaný kód, ale server by ti snad kvůli tomu padat neměl. ;)

     

     

    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT
    
    #include <a_samp>
    
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    	if (strcmp("/letsmrti", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FF00, "[ES] Pripravuje sa event Let Smrti - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/kopecsmrti", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FFFF, "[ES] Pripravuje sa event Kopec Smrti - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/kombajnsmrti", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0xFF00FF, "[ES] Pripravuje sa event Kombajn Smrti - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/skovavacka", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FFFF, "[ES] Pripravuje sa event Hide´n seek - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/zavod", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0xFF0000, "[ES] Pripravuje sa event Zavod - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/tuningsraz", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FF00, "[ES] Pripravuje sa event Tuning Sraz tunte auta - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/strechasmrti", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FF00, "[ES] Pripravuje sa event Strecha Smrti - event sa bude konať na /teleport!");
    		return 1;
    	}
    	if (strcmp("/ukoncitevent", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FFFF, "[ES] Event bol ukonceny dakujeme za ucast  !");
    		return 1;
    	}
    	if (strcmp("/ecmd", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0xFF0000, "[ES] /letsmrti /kopecsmrti /kombajnsmrti /skovavacka /zavod /tuningsraz /strechasmrti /ukoncitevent /win /startevent /eskontakt /esinfo /esvybava /ukonciteventmalohracu!");
    		return 1;
    	}
    	if (strcmp("/win", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0x00FF99, "[ES] Givol si si peniaze na vyhru *Nemusi to fungovat*!");
    		GivePlayerMoney(playerid,500000);
    		GivePlayerMoney(playerid,500000);
    		return 1;
    	}
    	if (strcmp("/esinfo", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0x00FF00FF, "[ES] Event System by *Ninjonik* Beta 1.0 & Náš server : 82.208.17.10:27247 0.3.7 www.pawno.cz");
    		return 1;
    	}
    	if (strcmp("/startevent", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FFFF,"[ES] ****Event sa zacal !!!****");
    		return 1;
    	}
    	if (strcmp("/eskontakt", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0xFF0000,"[ES] FaceBook : Petko Zatko LP , Skype : mcbrotherssk1 , Twitter : PetkoZatkoLP , Instagram : Petko Zatko LP");
    		return 1;
    	}
    	if (strcmp("/esvybava", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0x0000FF,"[ES] Dostal si zakladnu vybavu na event");
    		SetPlayerSkin(playerid,299);
    		SetPlayerHealth(playerid, 1);
    		ResetPlayerWeapons(playerid);
    		SetPlayerArmour(playerid,Float:1);
    		return 1;
    	}
    	if (strcmp("/ukonciteventmalohracu", cmdtext, true, 10) == 0)
    	{
    		SendClientMessageToAll(0x00FFFF,"****Event sa nezacal pretoze je tu malo hracov !!!****");
    		return 1;
    	}
    	if (strcmp("/admin", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid, 0xFC9803AA, "===================Príkazy pre Administrátorov===========================================");
    		SendClientMessage(playerid, 0x00FF00, "/acheat /ann /dann /var /spec /specoff /kick /ban /say /barva /getinfo /odpocet /cp /potopit");
    		SendClientMessage(playerid, 0x00FF00, "/unfreeze /goto /unmute /avypoved /unjail /warpsoff /pocasi /cas /spam /tankovat /allunlock");
    		SendClientMessage(playerid, 0x00FF00, "/disarm /mute /remove /freeze /warpson /hp /jail /rpenize /gw /gm /auto /prukazy /get");
    		SendClientMessage(playerid, 0x00FF00, "/setlvl /savelvl /vynorit /omrize /zmrize /rampa /rampdestroy");
    		SendClientMessage(playerid, 0x00FF00, "/ecmd /kopecsmrti /zavod /strechasmrti /kombajnsmrti /skovavacka /tuningsraz /letsmrti");
    		SendClientMessage(playerid, 0x00FF00, "/startevent /ukonciteventmalohracu /ukoncitevent /win");
    		SendClientMessage(playerid, 0xFC9803AA, "========================================================================================");
    
    		return 1;
    	}
    	if (strcmp("/novinky", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0xFC9803AA,"========================================================================================");
    		SendClientMessage(playerid,0x00FFFF,"6.12.2016 - /admin /novinky");
    		SendClientMessage(playerid,0x00FFFF,"7.12.2016 - /admin /cmd /adminem /megaparba /zivot /vesta /xmas");
    		SendClientMessage(playerid,0xFC9803AA,"========================================================================================");
    		return 1;
    	}
    	if (strcmp("/adminem", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid, 0xFC9803AA, "===================Ako byť adminom ?====================================================");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Minimálny vek : 13 Nahraté hodiny : 20 Zkušenosti s /admin ");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Aktivita minimálne 2hod denne (bez výnimky)");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Nebyť sprostý alebo sa neslušne vyjadrovať (môžete mať aj nižší vek ako 12 ak nieste sprostý)");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Schopnosť napísať to Majitelovy alebo na web www.megaparba.9e.cz");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Mať minimálne facebook , skype , team speak 3 , alebo iné cez čo ide komunikovať");
    		SendClientMessage(playerid, 0x0EDBF1AA, "Chodiť na Admin Porady (každý deň o 17:00) - Na TS3 Tak a prajeme veľa úspechov :)");
    		SendClientMessage(playerid, 0xFC9803AA, "========================================================================================");
    		return 1;
    	}
    	if (strcmp("/mprikazy", cmdtext, true, 10) == 0)
    	{
    		SetPlayerHealth(playerid,100);
    		SendClientMessage(playerid, 0xFC9803AA, "================================Hráčske prikazy=========================================");
    		SendClientMessage(playerid, 0x0EDBF1AA, "/adminem /cmd /megaparba /zivot /vesta /esinfo /eskontakt /esvybava /xmas /radio /carmenu /premium");
    		SendClientMessage(playerid, 0x0EDBF1AA, "WARPY: /ls /sf /lv /dragls /dragsf /draglv /driftlv /driftsf");
    		SendClientMessage(playerid, 0x0EDBF1AA, "WARPY: /stunt 1-5 /driftpoust /stadion /ostrov ");
    		SendClientMessage(playerid, 0x0EDBF1AA, "----Zatiaľ nič----");
    		SendClientMessage(playerid, 0x0EDBF1AA, "----Zatiaľ nič----");
    		SendClientMessage(playerid, 0x0EDBF1AA, "----Zatiaľ nič----");
    		SendClientMessage(playerid, 0xFC9803AA, "========================================================================================");
    		return 1;
    	}
    	if (strcmp("/megaparba", cmdtext, true, 10) == 0)
    	{
    		SendClientMessage(playerid,0x00FF00,"[MEGAPARBA] Dostal si výbavu od Mega Parby ! :)");
    		SetPlayerArmour(playerid,100);
    		SetPlayerHealth(playerid,100);
    		GivePlayerWeapon(playerid,1,1);
    		GivePlayerWeapon(playerid,4,1);
    		GivePlayerWeapon(playerid,18,100);
    		GivePlayerWeapon(playerid,24,500);
    		GivePlayerWeapon(playerid,26,500);
    		GivePlayerWeapon(playerid,35,10);
    		GivePlayerWeapon(playerid,37,500);
    		GivePlayerWeapon(playerid,44,1);
    		GivePlayerMoney(playerid,100);
    		return 1;
    	}
    	if (strcmp("/zivot", cmdtext, true, 10) == 0)
    	{
    		SetPlayerHealth(playerid,100 );
    		SendClientMessage(playerid,0x00FF00,"[MEGAPARBA] Dostal si život (health)");
    		return 1;
    	}
    	if (strcmp("/vesta", cmdtext, true, 10) == 0)
    	{
    		SetPlayerArmour(playerid,100);
    		SendClientMessage(playerid,0x00FF00,"[MEGAPARBA] Dostal si vestu (armour)");
    		return 1;
    	}
    	if (strcmp("/xmas", cmdtext, true, 10) == 0)
    	{
    		SetPlayerHealth(playerid,100);
    		SendClientMessage(playerid, 0xFC9803AA, "================================Program X-MAS PARTY======================================");
    		SendClientMessage(playerid, 0x00FF00, "16:00-16:30 Zahájanie XMAS na vianočnej mape");
    		SendClientMessage(playerid, 0x00FF00, "16:30-17:30 Let Smrti,Kopec Smrti,KombajnSmrti,Skovka,StrechaSmrti");
    		SendClientMessage(playerid, 0x00FF00, "17:30-18:00 Závody");
    		SendClientMessage(playerid, 0x00FF00, "18:00-18:30 Klasické závody");
    		SendClientMessage(playerid, 0x00FF00, "18:30-19:00 After Party");
    		SendClientMessage(playerid, 0x00FF00, "19:00-19:30 Čo chcete vy");
    		SendClientMessage(playerid, 0x00FF00, "19:30-20:00 Čo chcete vy");
    		SendClientMessage(playerid, 0x00FF00, "20:00 Hľadanie darčekov (čo v nich bude neprezradíme )");
    		SendClientMessage(playerid, 0xFC9803AA, "========================================================================================");
    		return 1;
    	}
    	return 0;
    }
    
    public OnGameModeInit()
    {
    	// Don't use these lines if it's a filterscript
    	SetGameModeText("Real Zem *MP*");
    	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    	return 1;
    }
    
     

     

     

     

    Tabování je důležité hlavně kvůli tomu, aby byl kód přehledný. Ty sám se v něm možná vyznáš (kód není ještě moc dlouhý), ale věř tomu, že až budeš chtít někdy od někoho pomoc, v neodtabovaném kódu se mu chtít hrabat nebude. Je to na tobě jestli to podstoupíš, každopádně tyto warningy můžeš pro příště vyřešit tímto kódem:

    #pragma tabsize 0
    
    

    BTW. Tabuje se TABulátorem (vedle písmene q na klávesnici). Pawno se snaží ti s tabováním pomoct, někdy mu to ovšem nevyjde a nebo mu nechce vyhovět uživatel... ;)  :hallo:

  18. Já ti nevím, ale mě to šlo v pohodě, až na nějakou vadu v includu sscanf2, kterou jsem nepěkně opravil. :d

    Tady to máš, až na tabsize, který jsem odstranil (bylo zbytečný odtabovaný to má nejspíš dobře) je všechno původní. :d

    • Líbí se mi to! (+1) 1
  19. Zdravím,

    na serveru jsem byl a připomněl jsem si tak mladý léta, když jsem pařil sa-mp každej den. Myslím, že mód je chytlavej a na chvíli tam určitě zábavu najdete. ;)

    Je tam i možná pár věcí, který by to třeba chtělo vylepšit. Ale celkově je mód propracovaný, na žádný bug jsem nenarazil a podle aktualizací v novinkách se i snaží okamžitě opravit veškeré zjištěné problémy. Jak hráči, tak i administrátoři se chovají rozumně a s úctou a v případě potřeby vám všichni pomůžou. ;)

     

    Za mě 9 / 10. Určitě by nevadilo, kdyby se přidalo trochu víc informací do tutoriálu, v /help je toho trochu moc a je to dost zmatený... :d;)

×
×
  • Create New...