Jump to content

The hidden face

Uživatel
  • Příspěvků

    810
  • Registrován

  • Aktivní

  • Vítězných dnů

    22

Everything posted by The hidden face

  1. Promiň, nějak mi uniklo, že sis ho koupil bez OS Já myslel, že jen reinstaluješ, ale OK Tak pak teda zkus to, co radí Tanga
  2. Zkus toto řešení: ZDE. Pokud nepomůže, tak updatni BIOS: Na stránkách výrobce desky si stáhni nejaktuálnější BIOS tvé konkrétní MB a updatni ho. - Též v nastavení BIOSU přes nástroj M-Flash. Na YT určitě bude nějaký návod!! Důležité je počítač nevypínat a ani nevytahovat při upgradu flash disk. Pokud víš, že máš s nějakou flash problémy, nebo snad s někým USB portem (že by třeba trpěl samovolným odpojováním flash), tak využij jen ten, který víš, že najisto funguje.. Je to dost důležité, protože jinak by sis mohl dost zavařit.... Pokud snad i často vypadává proud, tak se vyplatí si někde půjčit záložní zdroj Hodně štěstí přeji!
  3. Néééé, to rozhodně nemusíš. Stačí nějakým odhadem vydedukovat.. Někdy samozřejmě nemůžeš vědět a prostě si tipneš - radši více než méně, ale zrovna u názvů aut si to zjistit dokážeš. Určitě máš nějaké pole s názvy aut, stačí se porozhlédnout po nejdelším názvu, mě třeba až na druhý pohled přišel největší tento: "Luggage Trailer A", což má 17 znaků. Dejme tomu, že jsem nenašel ten největší tak si dám rezervu třeba 25 nebo 30. Tady vidíš, že jsi zrovna ušetřil zbytečných 100 znaků. U spousty věcí máš třeba už velikost pevně danou (zde). Například jméno hráče může nabýt maximálně 24 znaků, ale dává se jich 25 pro nulový znak (konečný znak - EOS). Takže třeba zde by bylo úplně zbytečně dělat pole znaků na jméno o velikosti 128 znaků... a divil by ses kolik lidí to dělá. Samozřejmě s dnešní technikou už je to celkem zanedbatelný, když tvůj server nepoběží na bramboře.... ale není špatný se snažit pamětí šetřit.. pokud jednou budeš programovat, taky po tobě bude požadováno, aby tvůj program byl co nejúčinnější, ale zároveň nesebral spoustu výkonu (=optimalizovaný). Takže rozhodně není na škodu se naučit šetřit
  4. new result[128]; strcat(result, slot1, sizeof(result)); strcat(result, "\n", sizeof(result)); strcat(result, slot2, sizeof(result)); //v proměnné result teď budeš mít výsledný string Nebo můžeš využít zkrácenější zápis a to přes fci format() format(result, sizeof(result), "%s\n%s", slot1, slot2); Více specikátorů máš zde: http://wiki.sa-mp.com/wiki/Format Dej si pozor na velikosti stringů... Máš dva o velikost 128 znaků a snažíš se je spojit též do stringu o 128 znacích. Chápu asi, že této velikost nenabývají, ale je zbytečné rezervovat tolik znaků, když je nepotřebuješ.. :/
  5. Tak patice ti sedí, ale kupuješ paměti s větší frekvencí, než podporuje deska. Není to zase tak velký problém, ale popřemýšlel bych o tom jestli nekoupit jinou desku, abys využil plného potenciálu těch RAMek... V praxi ten rozdíl, nejspíš vůbec nepoznáš... Takže opravdu záleží na tobě, ale věřím, že najdeš levnější nebo v podobné cenové relaci desku s vyšší frekvencí pro RAM.
  6. Zdravím, píšeš do špatné sekce. Veškeré poprávky po programátorech patří do sekce Hledám programátora / skriptera. A musí splňovat tyto pravidla.
  7. Nechápu proč otevíráš starý help topic. Při zakládání HELP topiců máš jasně napsaný pravidla - nezakládat další topic, ale počkat na schválení, což určitě neznamená, že by si mohl napsat svůj problém do topicu někoho jiného... ještě takhle starého... btw. jedná se o stejný problém a první příspěvek již říká jak to vyřešit, tak proč se ptáš na stejnou otázku dvakrát? Další věc je to, že neumíš vyplnit jednoduchej formulář, takže by si se schválení ani nedočkal... Je opravdu těžké napsat svůj problém do části "Popisu problému", vložit chyby, co ti to hází do "Chyby a varování kompilátoru..." a kód do části "Kód" ?
  8. Mám na tebe jeden dotaz, co má vlastně dělat tahle funkce... Je strašně neoptimalizované.. pro každého hráče kontroluješ pozic, zbraně a nastavuješ x proměnných. Určitě by šla vylepšit, jen popiš k čemu všemu slouží: A co se té zóny týče, tak MinY v MinX > *------------- | | | gangzone | | center | | | -------------* < MaxX ^ MaxY zde máš obrázek z wiki jak to vlastně vypadá. Takže co ty potřebuješ je: stoupnout si do jednoho rohu, kde chceš vytvořit tu zónu a /save. Poté do protějšího rohu a zase /save. A tyhle pozice (jenom X a Y, pokud ti nezáleží na Z) dosadit do té podmínky. Musíš si dávat pozor na operátory --> tzn. správně umístit ty pozice v podmínce, aby jsi je neprohodil, to by ti pak správně nefungovalo.
  9. The hidden face

    pomoc PHP Mail Send

    Máš vytvořenou vlastní funkci (sendmail): function sendmail($to,$subject,$message,$from = "[email protected]"){ $predmet = mime_header_encode($subject); $autor = mime_header_encode("SA-MP Reálný Život"); $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; $headers .= 'Content-Transfer-Encoding: 8bit'. "\r\n"; $headers .= 'From: '.$autor.' <'.$from.'>' . "\r\n"; mail($to,$predmet,$message,$headers); } ALE tvůj obsah, který máš v jinačím souboru odesíláš funkcí mail, kde do hlavičky uvádíš pouze "From: [email protected]". Žádné informace o tom co odesíláš.. to vše řeší ta tvá předvytvořená funkce, kterou nevědomky nepoužíváš... $content .= "<html> <body> <h2>Registrace</h2> Děkujeme za vaší registraci.<br /> Pro potvrzení a aktivaci vašeho účtu klikněte na následující odkaz:<br /><br /> <a href='".DEF_WEBURL."account_verify/$random_key' target='_blank'>".DEF_WEBURL."account_verify/$random_key</a><br /><br /> <h3>".DEF_SITENAME."</h3> <h4>".DEF_WEB."</h4> </body> </html>"; sendmail($_POST['v1'],"Registrace Reálný Život",$content,"From: [email protected]"); //tady stačí změnit funkci mail na tvojí sendmail, samozřejmě ta funkce sendmail musí být includnutá v tom souboru Druhý kód ti funguje kvůli tomu, že máš správně zapsanou hlavičku, jelikož ji zapisuješ rovnou a ne přes svojí funkci (která by ji měla také správně, ale zapomněl jsi na ni ), takže se HTML zobrazuje korektně.
  10. Pěkný a přehledný kód, ale připojování bych nedělal přes cyklus, už jen kvůli tomu, že ti nebude korektně pracovat. (Připojí se první hráč, splní se if a na 0. index nastaví, že je auto obsazeno. Ovšem, jakmile se zavolá příkaz znovu, cyklus pojede zase od nuly, tentokrát se if nesplní a přejde do else sekvence a vrátí SCM, což je nevyhovující, protože více jak jeden člověk se ti nepřipojí...) Ale jde to vyřešit pomocí nějaké proměnné s počtem připojených hráčů. Kdy se po každém připojení navýší hodnota o jednu, takže se bude moci využívat jako index. new pHracu; //globální proměnná //joinbridge if(pHracu != 20) //pokud není závod maximálně obsazen { if (!BridgeCars[pHracu][OCCUPIED]) { // nemuselo by to tu být, pokud budeš správně pracovat s proměnnou pHracu, tak by vše mělo fungovat i bez této podmínky BridgeCars[pHracu][OCCUPIED] = true; bridgeauto = CreateVehicle(402, BridgeCars[pHracu][POSX], BridgeCars[pHracu][POSY], BridgeCars[pHracu][POSZ], 1, 1, 1, 0); pHracu++; ... } else return SendClientMessage(playerid, -1, "Zavod uz je plny"); //konieczavodu for (new i; i < sizeof BridgeCars; i++) BridgeCars[i][OCCUPIED] = false; pHracu = 0;
  11. Zkus postupně TYTO metody, jestli náhodou něco nepomůže. Rozhodně bych zkusil jenom tu první a třetí metodu. Druhá už modifikuje samotné GTA SA, takže bych to viděl až jako krajní možnost, budeme doufat, že to půjde vyřešit nějak jinak.
  12. A jak máš nastavené grafické nastavení v GTA SA?
  13. SA-MP využívá GTA SA, je to pouze jakési rozšíření, aby jsi mohl hrát multiplayer. Není to samostatně vytvořená hra pouze s multiplayerem do detailu stejná jako GTA SA. Proto se taky klient instaluje do složky s hrou, jelikož potřebuje přístup ke stejným souborům respektive k celé hře.
  14. To už budeš muset vyzkoušet, ale ještě dodatek tohle je jen řešení pro Exception 0x00746929, pokud dostáváš i jiné, tak bude problém zřejmě někde jinde...
  15. Vždy když dostaneš tuhle výjimku tak: Ctrl+ Alt + Delete Procesy V nich najdi proces: gta_sa.exe Klikni pravým a pak na Ukončit proces (nebo v dolním pravém rohu na Ukončit proces). A zkus pusti sa-mp znovu. Takhle výjimka prý znamená, že je GTA_SA.exe otevřeno již v jinačím tasku.
  16. Označ řádky, jak ti píše Hip. Takhle pořádně nevíme na jakou část kódu se soustředit.. Jinak tenhle error: warning 202: number of arguments does not match definition znamená, že voláš metodu (funkci) s větším / menším počtem parametrů než má ve skutečnosti mít. Pokud jsi si jistý, že zadáváš správný počet parametrů (podle samp wiki), pak máš nejspíš staré includy.. Stáhni si nové a znovu zkompiluj. //Edit: Includy stáhni zde, jsou v serverovém balíčku ve složce pawno/include .. Nejlepší ovšem bude když stávající pawno editor smažeš (nebo celou složku se serverem) a začneš používat nově stažený.
  17. Trošku jsem ti poupravil ten kód a přidal ten, co jsi žádal
  18. A ještě jsem dej, jak si ten předchozí kód upravil...
  19. new Test[17]; //Třeba v OnGameModeInit() for(new i = 0; i < sizeof(Test); i++) { Test[i] = 0; } Co vidíš nahoře je cyklus. První co děláš že vytváříš proměnnou s kterou bude cyklus for pracovat. Za středníkem potém udáváš podmínku kolikrát má cyklus běžet - sizeof ti vrátí velikost pole v závorkách. tzn, že i může dosahovat maximálně hodnot 0 - 16. jelikož i musí být menší než 17 a první hodnota v i je 0. Za dalším středníkem určuješ co se má po vykonání kódu v cyklu stát - buď navýšit hodnotu i o jednu (i++) nebo snížit (i--), můžeš samozřejmě navyšovat i o více... a v hranatých závorkách je vlastně to co ti nahraje do všech indexů pole hodnotu 0. První průběh: i = 0, Test[0] = 0; druhý: i++ takže i = 1, Test[1] = 0, a takhle až do 16. průběhu, pak se zvýší hodnota a i bude 17, poté se zkontroluje podmínka, ale zjistí se že již nevyhovuje a tak se cyklus ukončí. Rozhodně ti doporučuji si něco o cyklech přečíst v programování se využívají o pravdu často, je to základ.. Jinak v pawn když vytváříš proměnnou, tak v ní defaultně 0 je. //Edit: špatně přečtený kód... :/ #define ARR_SIZE 17; new Test[MAX_PLAYERS][ARR_SIZE]; for(new i = 0; i < MAX_PLAYERS; i++) //nebo sizeof(Test) { for(new j = 0; j < ARR_SIZE; j++) //nebo odstranit definici ARR_SIZE a použít také sizeof(Test[]) { Test[i][j] = 0; } } Tohle je to samé, akorát máš vícerozměrné pole, takže potřebuješ vnořit cyklus do sebe.
  20. The hidden face

    pomoc HELP

    Pokud to chceš jednoduše, tak bych opravdu udělal, to co ti radí Weed, ale ber v potaz, že range je "kruh" (respektive koule). Z toho plyne, že range musíš dát někam dál za ty rampy, aby to hráče nevyhodilo z auta, jen když bude na krajní hranici ještě někde před rampou, ALE zároveň musí být za rampou na takovém místě, kterým vždycky projede (ošetři si i letadla). Musíš si prostě najít i ideální místo. Složitější způsob by byl něco na způsob gang zóny 4 pozice - minX, minY, maxX, maxY. A místo funkce ROP by sis vytvořil vlastní fci a kontroloval by jsi vlastně zda je v tom rozmezí těch pozic. Ale rozhodně není nutné kvůli tomu gangzónu vytvářet stačí ti 4 float konstanty a ty pak srovnávat s aktuální hráčovou pozicí - zda je mezi souřadnicemi (true) a zda není (false). Tohle by jsi mohl udělat rovnou za rampu (pokud by ji musel překonat) a nebo tam kde leží (pokud by jsi bral jen, to že se na ní bez zaplacení pokusil najet...). Zároveň by to u obou způsobů chtělo nějakou proměnnou pro rampu, zda je otevřená či zavřená (true / false), kde by se mu při zaplacení nic nestalo (protože rampa bude otevřená - true) a při nezaplacení by ho to vykoplo (zavřená - false). Obě nejspíš budeš kontrolovat buď v nějakým timeru a nebo OnPlayerUpdate, nevím co je lepší, ale někteří nemají OnPlayerUpdate moc v oblibě. Přesnější bude určitě ta složitější možnost, kdy je vlastně jediná složitost v v tom, že nebudeš používat předvytvořenou funkci, ale uděláš si vlastní s jednoduchou podmínkou. Nákres z wiki pro lepší orientaci v souřadnicích: MinY v MinX > *------------- | | | gangzone | | center | | | -------------* < MaxX ^ MaxY
  21. Zřejmě ti něco shazuje server, ta hláška s tím nemá vůbec nic společného jen se vypisuje při vypnutí fs, což nastane pokud ho undloadneš nebo vypneš server... S největší pravděpodobností ti to padá kvůli nepřítomnosti sscanf pluginu, který FS využívá. Řešení je jednoduché, stáhni jsi nejaktuálnější verzi includu a pluginu (nebo alespoň stejné verze). Mód znovu zkompiluj s novou verzí, do složky plugins vlož ten plugin a do server.cfg připiš někam kolonku plugins, udělej mezeru a zapiš sscanf. plugins sscanf
  22. Zkus se kouknout na Google, přijdeš na to že většina lidí řeší stejný problém co ty, nebo dokonce na ten problém někdo napíše i tutoriál. Například zde (sa-mp.com), pokud ti to nepomůže koukni se po něčem jiném, ve výsledcích je toho dost
  23. No tak to udělej jak xhunterx radí. Sice tam zadáváš každý pickup 2x, ale když ti to na předělávání přijde méně pracnější... Btw. to chceš předělat všechny pickupy? Já myslel, že pouze některé zmizí a objeví se po 30 minutách.. každopádně kopírovat to a v kládat ručně do polí mi přijde mnohem pracnější než jen k těm pickupům kde chceš mít time delay připsat za Create Re a odstranit typ, který je pro všechny stejný Ale je to na tobě, jak ti to říkám od začátku. Edit.: Jinak v pawnu existuje funkce Najít a nahradit
  24. Není na tom vůbec nic složitého tobě stačí použít funkci stock CreateRePickup(model, Float:X, Float:Y, Float:Z, virtualworld = -1, delay = 30) // nemusíš zadávat ani virtualworld ani delay (tj. za jak dlouho se respawne) Nic víc znát nemusíš, pokud chceš změnit delay, tak ho jednoduše zadás, za VW: CreateRePickup(1274,1492.1907,-1767.8684,18.7958, -1, 15); // 15 minut delay Ovšem jak tam popisuju, má to nevýhodu, nebudeš to mít přesně na vteřinu ale se zpožděním 0 - 59 sekund (timer je dělaný na 1 minutu), dělal jsem to s tím, že ti to nevadí páč to máš na minuty a nějakých pár sekund na víc ti je určitě jedno, ovšem pokud to chceš na sekundy tak to chce předělat, což není problém. Jinak tohle používá jediný timer pro všechny... je zbytečný mít na každý pickup timer, buď toto a nebo se ti to bude resetovat zpět na 10 sekund jak píšeš... , nebo můžeš použít xhunterův kód, který ti to dělat nebude .. Takže pokud to potřebuješ na sekundy není problém, to předělat... Jak říkám výše kromě fce CreateRePickup nic jiného znát nepotřebuješ, takže na tom není vlastně nic složitého
×
×
  • Create New...