Jump to content

Kubko

Uživatel
  • Příspěvků

    257
  • Registrován

  • Aktivní

  • Vítězných dnů

    3

Everything posted by Kubko

  1. Podarilo sa ti reprodukovať chybu aj na základnom balíku SA:MP serveru bez cudzích úprav? Takto vylúčiš, že sa bude jednať o problém na úrovni scriptu.
  2. Správne, tebe sa zobrazí dialóg správnej kasy, ale pri response v dialógu to s ňou nepočíta.
  3. V dialógu, kde vyberáš peniaze z kasy daného businessu nemáš urobenú žiadnu kontrolu, z ktorej kasy sa vlastne tá čiastka má odčítať. Tvoj cyklus sa navyše po odčítaní ani neukončí, takže to je pravdepodobne dôvodom, prečo to na jednom serveri fungovať môže (ale nesprávne) a druhom nie. Čo sa týka toho pripočítavania do kasy, do súboru nezapisuješ nový stav kasy, ale iba tú hodnotu, o ktorú má narásť. V podstate by to za behu serveru nemalo mať vplyv, ale printf() ti určite prezradí, kde je problém.
  4. Ahoj všetci! Poslednou novinkou na našom serveri je nový systém mobilu. Dúfam, že sa vám bude páčiť.
  5. Kubko

    pomoc foreach na for

    Pokiaľ teda ten iterátor nehodláš využívať, tie dva riadky môžeš vymazať.
  6. História: Pôvodný herný mód San Francisco Bay bol vytvorený v roku 2009 ex-pawnerom vystupujúcim pod prezývkou _BuLLeT_. Od počiatku server náležal a bol sprostredkovaný portálom CrewZone. V roku 2012 však mód začal upadať a tak sa rozhodovalo o tom, či bude mód ďalej pokračovať ako TDM, alebo roleplay. Komunita nakoniec rozhodla o roleplayi a tak sa začal vyvíjať prvý československý roleplay gamemód, ktorým bolo SFB-RP v1.2. Mód obsahoval mnoho chýb a nedostatkov, tie sa ale počas tých rokov podarilo obmedziť na ich minimum. Po vydaní verzie 1.3 sa _BuLLeT_ rozhodol ukončiť svoje pôsobenie na vývoji SFB-RP a začal vyvíjať nový mód, Tales of War. Vývoja módu sa následne ujal _NosiK_, pretože vtedajšia komunita nechcela dopustiť, aby mód s jeho odchodom zanikol. SFB-RP si prešlo ráznymi zmenami v pravidlách a hlavne v systémoch, ktoré na SFB boli. V roku 2017 sa SFB-RP oddelilo od portálu Crew Zone a teraz funguje samostatne ako sfb-rp.cz. O momentálný vývoj módu sa stará Kubko, ktorý sa snaží script neustále zveľaďovať zavádzaním nových systémov na úrovni novodobých kvalít a rovnako optimalizovať, aby zabezpečil terajšej komunite len ten najlepší pôžitok z hrania. Čo server ponúka? Aktuálna verzia San Francisco Bay Roleplay v1.3.2 Build 5a ponúka tieto možnosti: Dynamický systém postáv prepojený s používateľským účtom na webe - pre pripojenie na server je potrebné mať registrovaný účet na webe, jedná sa o rýchly proces, po ktorom získate plný prístup do hry, UCP a fóra - po úspešnom prihlásení do hry pod zvoleným menom si môžete v grafickom prostredí do slotu vytvoriť postavu voľbou pohlavia, skinu a mena postavy - kliknutím na náhľad postavy a následným kliknutím na tlačítko "Spawn" bude vaša postava prenesená do herného roleplay sveta - medzi jednotlivými postavami je možné prepínať priamo v hre, bez nutnosti akéhokoľvek reštartu herného klienta Obr. 1 - Náhľad na výber postavy Legálne frakcie a povolania - v hre sa môžete pridať k štátnym frakciám ako je San Francisco Government, San Francisco Police Department, San Francisco Fire Department, Emergency Medical Services a San Francisco One News - medzi ostatné povolania patrí napríklad mechanik, vodič taxi, autobusu, kamiónu, čistič chodníkov, smetiar, natierač mostu, vodič prepravnej služby, rozvázač pizze, donutov... - každá frakcia má svoju hodnosťnú štruktúru, od ktorej sa pri výplate odvíja finančné ohodnotenie zamestnanca - výplata prichádza v intervale jednej hodiny a jej výška sa odvíja od viacerých faktorov (prac. doba, dodržanie prac. náplne...) - v šatni niektorých štátnych zložiek je k dispozícii niekoľko novo pridaných pracovných skinov (0.3.8) - frakcie ako je SFG a SFON dokážu vplývať na ekonomiku celého mesta (nastavenie DPH, mýta, poplatok za podanie inzerátu...) - okrem povolaní, je možnosť si privyrobiť brigádou nosenia bední, alebo chytaním rýb na mori - v prípade, že by vás práca prestala baviť, bude vám na úrad chodiť menšia podpora - dávky Obr. 2 - Zamestnanci EMS s novým objektom medicbagu a pracovným skinom Obr. 3 - Brigáda nosenia bedien Dynamický systém nelegálnych skupín - hráč si môže svoju nelegálnu skupinu nechať "zoficiálniť", čím obdrží ako leader svojej skupiny zaujímavé možnosti - nelegálna skupina si môže vybrať spôsob zisku zbraní, jednou je dovoz (rýchlejšia a drahšia možnosť) a druhou je výroba zbraní v sklade - spomínaný leader môže nastaviť sídlo svojej ilegálnej skupiny, spravovať členov, prideliť im akýkoľvek názov hodnosti, permisie... - každá skupina má v svojom sídle kasu, do ktorej môžu členovia prispievať a oprávnený aj vyberať peniaze či kontrolovať pohyby Obr. 4 - Prehľad základných informácii o skupine Obr. 5 - Zobrazenie všetkých členov skupiny Obr. 6 - Transakcie v kase Dynamický systém vozidiel - v meste sa nachádza niekoľko predajných miest, kde si môžete zakúpiť motorové vozidlo, loď, helikoptéru, bicykel... - súčasťou systému vozidiel je palivo (benzín, alebo nafta) a kufor, do ktorého je možné ukladať zbrane, alebo drogy - všetky vozidlá sú kupované za hernú menu, výnimku tvorí pár prémiových vozidiel, ktoré je možné kúpiť len za coiny - s kúpenými vozidlami je možné obchodovať s hráčmi, alebo ho predať okamžite za polovicu pôvodnej kúpnej ceny - udeliť permisiu na kúpené vozidlo (zamykanie, štartovanie) je inému hráčovi možné odovzdaním kľúčov - opraviť poškodené časti vozidla dokáže mechanik v dielni, okrem toho vie vozidlo upravovať; montovanie komponentov či tuningu - v dielni môže mechanik taktiež namontovať, alebo odmontovať bezpečnostný zámok či poistkovú skriňu niekoľkých stupňov - v prípade fatálneho poškodenia vám vozidlo dokáže odtiahnuť do dielni mechanik - s páčidlom sa môžete pokúsiť o prelomenie zámku vozidla a ukradnúť tak vozidlo naštartovaním cez "drátky" Obr. 7 - Dielňa Obr. 8 - Vlastné emergency lights Dynamický house systém - na serveri sa nachádza niečo cez 600 obývateľných domov, ktoré je možné zakúpiť - domy sa delia na: rodinné domy, byty, luxusné byty, vily a karavany - sú rozdelené podľa častí mesta; cena sa odvíja od koeficientu lukratívnosti danej štvrti - v domoch je použitých približne 22 vlastných nezariadených interiérov - interiér domu je možné zariadiť podľa svojich predstáv - položený nábytok sa dá tiež pretextúrovať na ľubovolnú textúru z hry - majiteľ domu môže nastaviť permisie na dom aj iným hráčom Garáže - ku každému domu je možnosť nechať si vytvoriť garáž - garáž je uzamykateľná a obsahuje dve parkovacie miesta Obr. 9 - Pickup domu Obr 10 - Jeden z interiérov Obr 11 - Garáž Damage systém - pokiaľ bude postava postrelená do ruky, začne sa vám pri mierení zbraňou kolísať obrazovka - v prípade postrelenia do nohy, vaša postava nebude môcť šprintovať a ani skákať - akonáhle zdravie vašej postavy klesne pod 20 percent, postava prejde do "wounded" fáze - v tomto štádiu bude vaša postava ležať nehybne na zemi, pokiaľ jej nikto nepomôže, zomrie - okolitý hráči si vedia príkazom zobraziť podrobnosti s informáciami o zraneniach Obr. 12 - Mŕtva postava MDC pre policajné zložky - príslušníci SFPD majú v každom služobnom vozidle a na stanici dostupnú policajnú databázu - momentálne obsahuje rôzne informácie z činnosti oddelenia a možnosť vyhľadávania osôb či vozidiel - v časti spravovania osoby je prezatiaľ možné len spravovať licencie a prezrieť si adresy bydliska Obr. 13 - Hlavná obrazovka Obr. 14 - Dopyt po vyhľadanej osobe Obr. 15 - Zoznam adries osoby Obr. 16 - Dopyt po vozidle Nový drug systém (už čoskoro na serveri) - drogy sú zobrazované vo vlastnom interaktívnom inventári - každá droga má po užití svoj okamžitý pozitívny efekt - čím väčšia je kvalita danej drogy, tým je efekt výraznejší (napr. nárast HP) - niektoré drogy je možné vyrobiť za pomoci kombinovania rôznych ingrediencii - užívanie návykových drog môže mať však aj negatívny efekt (závislosť) - zmierniť negatívne účinky dokáže EMS predpísaním vhodných liekov Obr. 13 - Inventár drog Obr. 14 - Drogy položené na zem A mnoho ďalších... (priebežne budem aktualizovať veci, ktoré som neuviedol) Ako sa pripojím? Domovskou adresou našich webových stránok je sfb-rp.cz/main, kde máte k dispozícii registráciu, či cestu na fórum, alebo UCP. Na fóre (board.sfb-rp.cz) nájdete všetky pravidlá serveru a zvyšné potrebné informácie k hraniu. Ak ste nováčik a nikdy ste nehrali roleplay nie je to absolútne žiadny problém, od toho máme náš ochotný Admin Team, ktorý vás s radosťou všetkému zaučí, tešíme sa na vás! IP serveru: samp.sfb-rp.cz:7777 TS3 server: ts3.sfb-rp.cz
  7. Kubko

    pomoc registračka

    Ukáž mi DOF2_File a DOF2_FileExists funkcie z includu, možno to crashuje niečo z toho.
  8. Kubko

    pomoc NahratýČas

    Tvoj timer sa opakuje každú sekundu, nie minútu. if(!(++NahratyCas[playerid] % 3600))
  9. Kubko

    pomoc NahratýČas

    public OnPlayerConnect(playerid) { gTime[playerid] = 0; // Vyresetujeme hodnotu našej glob. premennej // Predpokladám, že budeš mať v pláne nahratý čas aj ukladať a načítať (aby nestratil nahratý čas po odpojení) return 1; } public OnGameModeInit() { SetTimer("Minute", 60000, true); // Opakujúci sa timer, ktorý sa bude vyvolávať v jedno minútovom intervale return 1; } forward Minute(); public Minute() { for(new i, j = GetPlayerPoolSize(); i <= j; i++) { if(IsPlayerConnected(i) && !(++gTime[i] % 60)) //ID je pripojené a práve nahralo (ďalších) 60 minút {// Ak máš nejaký login, tak by som k podmienkam vyššie pridal ešte kontrolu na prihláseného hráča SendClientMessage(i, -1, "* Práve si nahral hodinu."); } } }
  10. new Text3D:label[MAX_PLAYERS] = {Text3D:INVALID_3DTEXT_ID, ...} ; public OnPlayerDisconnect(playerid, reason) { if(label[playerid] != Text3D:INVALID_3DTEXT_ID) { Delete3DTextLabel(label[playerid]); label[playerid] = Text3D:INVALID_3DTEXT_ID; } return 1; } CMD:label(playerid, params[]) { if(params[0]) {//Podľa wiki môže okolitým hráčom spadnúť hra ak by bol text prázdny if(label[playerid] != Text3D:INVALID_3DTEXT_ID) { Delete3DTextLabel(label[playerid]); } label[playerid] = Create3DTextLabel(params, -1, 0, 0, 0, 50.0, 0); } return 1; }
  11. Či tabuľka existuje je väčšinou kontrolované na strane SQL, takže zakomentovanie by nemalo veľmi zmysel . Ale môžeš vyskúšať vyhľadať cez editor text "CREATE TABLE" a možno niečo nájdeš, za pokus to stojí.
  12. Áno, aj cez gamemód je možné pred pripraviť tabuľku do databáze cez SQL query, tvoj skript však tak neučinil, vzhľadom k erroru z priloženého logu. Pokiaľ nemáš žiadnu zálohu aspoň štruktúry, v tomto prípade tabuľky jmeno-db.acc budeš ju musieť prvo vytvoriť.
  13. Kubko

    pawn Registrace

    Nájdi si riadok, v ktorom definuješ COA_UCP. Môžeš ho vymazať, alebo zakomentovať. Podľa toho kódu by ťa to potom malo pustiť do registrácie.
  14. Máš pravdu , moja chyba, je to public. Inak pre autora: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys & KEY_WALK) { if(!brigada[playerid]) { brigada[playerid] = 1; CallRemoteFunction("GivePlayerWeaponEx", "iii", playerid, 6, 1)); } else { SendClientMessage(playerid, -1, "Uz delas brigadu"); } return 1; } return 1; }
  15. Skúšala si stiahnuť static verziu MySQL pluginu? Avšak pokiaľ ten script využíva starší MySQL includ, budeš musieť skompilovať s tým novým, inak je dosť pravdepodobné, že ti to bude hádzať chyby.
  16. V podstate sa to dá nazvať tou zvedavosťou. Ale mňa to maximálne znepokojuje, pretože sa snažím prísť na príčinu, prečo to tam nefunguje ako inde. Teraz som to vyskúšal ešte cez switch a funguje to tiež normálne.
  17. Práve, že plánujem, ale ma to dosť zaujalo , pretože keď som skúsil rovnakú vec vyvolať inde, napríklad OnPlayerSpawn, či dokonca main, funguje to normálne. Zaujímavé, že keď si tú hodnotu vyprintujem pred tou podmienkou, tak to funguje tiež správne - else sa nevyvolá. else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][39]) { printf("%i", MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE]); //Vyprintuje 1, čo je rovné MDC_LOOK_UP_CACHE_ESSENTIAL if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_ESSENTIAL) { } else {//Toto je ten else MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } return 1; }
  18. Popis problému: Mám podmienku if a hneď pod ňou else a problém nastáva v tom, že sa mi vyvolá vnútro else aj cez to, že je podmienka nad ním splnená. Akonáhle pridám do toho if bloku nejaký kód, funguje to normálne. Chyby/varování kompilátoru a při běhu: - Kód: Dodatečné poznámky: - Ten else je označený komentárom
  19. Ak som pochopil správne, nebude jednoduchšie, keď si uložíš pozíciu toho miesta úplne naľavo, a keďže majú byť "vedľa seba", tak proste pripočítaš/odpočítaš k X Y o nejakú hodnotu podľa potreby aby bola medzi nimi medzera. Napr. new const Float:gRaceStart[3] = {X, Y, Z}, gRacersCount, gCurrentQueue ; //Keď sa pripojí na závod (spawneš ho) SetVehiclePos(jeho auto, gRaceStart[0] + (2.0 * gRacersCount), gRaceStart[1] + (1.5 * gCurrentQueue), gRaceStart[2]); gRacersCount++; if(!gRacersCount % 3) { gCurrentQueue++; //Keď sú traja vedľa seba, pripočítame aby sme vedeli, v ktorej sme rade. gRacersCount = 0; //Musíme vyresetovať, lebo inakšie by to nehádzalo spawn za prvé auto v rade pred } A potom, si môžeš pridať nejakú kontrolu, aby sa začali radiť za sebou, keď napr budú 3 vedľa seba. //Tak som ti ju tam hodil Celé si to však musíš prerobiť podľa potreby súradníc, pretože osi X, Y môže byť obrátene + možno musíš od osí odčitovať a nie pričitovať ako som to spravil (záleží ako máš orientovaný ten štart závodu).
  20. V tom prípade: new bool:g_bGatesOpened = true //True nastavené preto, lebo po načítaní módu chceš aby boli brány otvorené ; public OnGameModeInit() { //Tu si brány otvor manuálne SetTimer("GatesControl", 4 * 60 * 1000, false); return 1; } forward GatesControl(); public GatesControl() { if(g_bGatesOpened) { //Zvyšok kódu pre zatvorenie brán g_bGatesOpened = false; SetTimer("GatesControl", 5 * 60 * 1000, false); //O 5 minút sa otvoria } else { //Zvyšok kódu pre otvorenie brán g_bGatesOpened = true; SetTimer("GatesControl", 4 * 60 * 1000, false); //O 4 minúty sa zatvoria } }
  21. Načo to robiť komplikovane? Ak chceš aby sa po každých 5 minútach zatvorili/otvorili brány, môžeš to urobiť aj takto. Stačí ti jeden globálny timer so zapnutým opakovaním: new bool:g_bGatesOpened ; SetTimer("GatesControl", 5 * 60 * 1000, true); forward GatesControl(); public GatesControl() { if(g_bGatesOpened) { g_bGatesOpened = false; //Zvyšok kódu pre zatvorenie brán } else { g_bGatesOpened = true; //Zvyšok kódu pre otvorenie brán } }
  22. Kubko

    pomoc čitanie file

    Nedá sa to len tak preformovať , y_ini má svoj kód napísaný a všetky svoje funkcie sú urobené tak aby vedeli prečítať/zapisovať podľa toho INI formátu súboru pomocou includu File. Jediný spôsob, ako môžeš zistiť ako to funguje, pozri návod na SA:MP fóre: http://forum.sa-mp.com/showthread.php?t=570957
  23. Kubko

    pomoc Warp na čas

    Všimni si ako je upravený ten SetTimerEx a tiež deklarovanie tej funkcie (forward), ktorú timer vyvolá. SetTimerEx vyvolá public "TeleportaceNaWarp" a parsne do neho (odošle) dva argumenty typu INT (i), playerid a warpid.
  24. Kubko

    pomoc Warp na čas

    SetTimerEx("TeleportaceNaWarp", 5000, false, "ii", playerid, 0); //V príkaze /sf SetTimerEx("TeleportaceNaWarp", 5000, false, "ii", playerid, 1); //V príkaze /lv //Pre lepší prehľad si ich aj môžeš zadefinovať, napr #define PORT_SF (0) forward TeleportaceNaWarp(playerid, warpid); public TeleportaceNaWarp(playerid, warpid) { new Float:pPosition[4] ; GetPlayerPos(playerid, pPosition[0], pPosition[1], pPosition[2]); if((Player_Pos[playerid][0] == pPosition[0]) && (Player_Pos[playerid][1] == pPosition[1]) && (Player_Pos[playerid][2] == pPosition[2])) { switch(warpid) { case 0: //Port do SF { SetPlayerPos(playerid, -381.1938, -1438.9968, 25.7266); SendClientMessage(playerid, -1, "Byl jsi teleportovan do SF!"); } case 1: //Port do LV { SetPlayerPos(playerid, XXX, XXX, XXX); SendClientMessage(playerid, -1, "Byl jsi teleportovan do LV!"); } } } else { SendClientMessage(playerid, -1, "Musíš stát na místě!"); } }
×
×
  • Create New...