-
Příspěvků
1335 -
Registrován
-
Aktivní
-
Vítězných dnů
30
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by HighPrint
-
-
mysql_static je verze která je staticky nalinkovaná přímo s tou libkou, proto takovej work-around je si jenom stáhnout ten static a nic neřešit.
- 2
-
Proč loadíš dvakrát MySQL plugin? Zkus jen ten static
-
Čeho přesně chceš docílit?
-
Předdefinuješ si měsíce (new daysinMonth[12] = {31,28,31,...}; // vyplň si to sám), kolik dní v nich jsou. Zjistíš dnešní datum (dále jako d, m, y). Podmínka na zjištění přestupného roku jsem někde psal tak si to jen dovolím zkopírovat:
if (y % 4 == 0 && ( y % 100 != 0 || y % 400 == 0 ))
Teď je potřeba zajistit zacyklení a zjišťovat jestli nastavený čas (time) je vyšší než zbývající dny v měsíci (time > daysinMonth[m-1]-d). // m-1 kvůli indexaci od 0
Pokud ano, odečteš daysinMonth[m]-d od time a zvýšíš m
Pokud ne, nastavíš den d jako time a ukončíš cyklus
A takhle pokračuješ v cyklu dokud nějaký ten zbývající time existuje (resp. pokud je menší než zbývající počet dní v měsíci).
BACHA na případ, kdy je m prosinec a převyšuje počet dní, tzn. zvýšit rok (y++), m nastavit na leden.
Pak zabalit d, m, y a vrátit jako nové datum – tedy datum ukončení banu/VIP
Zkus nad tím popřemýšlet, napsat vlastní kód, pokud se někde zasekneš, tak ti pomůžu, ale celý kód ti nenapíšu
-
nejlépe zamezit nějakou podmínkou...
new bool: loginDialog[MAX_PLAYERS];
OnPlayerConnect:
loginDialog[playerid] = false;
OnPlayerRequestClass:
if(!loginDialog[playerid]){
ShowDialog...
loginDialog[playerid] = true;}
- 1
-
Dělá to na všech serverech? Jak moc namódovaný SA máš? Co zkusit čistou instalaci?
-
Defaultně jsou proměnné v pawnu inicializované na 0
-
bank[playerid] += strval(inputtext);
bank[playerid] -= strval(inputtext);
- 1
-
Já jsem nevěděl, že opisovat takový kód trvá 4-5 hodin
-
Jo dobrá poznámka... ještě uveď příklad použití, aby lidi co nechtěli zkoumat kód věděli jak se to používá.
@Tango aha, díky ty dvě hodiny jsem nechtěl zjišťovat, dobrá informace
Na tohle bych se rád mrknul, jestli bys mi poslal ten timestamp do SZ
-
Zajímavý koncept. Přiložíš ještě kód k benchmarku?
Každopádně pár připomínek:
1) např rok 2100 rozhodně není přestupný, ale je dělitelný 4. (Sice se toho nedožije naše generace, ale bylo by fajn si ujasnit, co přesně ten přestupný rok je)
A year is not a leap year if it's NOT divisible by 4, OR if it's divisible by 100 AND NOT divisible by 400.
2)
while(py > 3) //Každé 4 roky přidá 1 den { rday++; py -= 4; }
Tohle je basically matematická operace dělení, stejný output je rday = py / 4;
3) goto je opravdu prasárna, celý ten koloběh ifů se dá přepsat do cyklu
4) ty while těch dnů/hodin/minut/(sekund) se dá také přepsat do dělení (+ modulo)
5) Proč se odečítají 2h?
6) Jaký smysl má odečítat v první iteraci 366 dní?
new py; if(ts > 31535999) // 365dní { /*...*/ py++; if(py == 1) { if(ts > 31622399) // 366dní { py = 0; ryear++; ts -= 31622400; } } }
Jinak hezká práce
- 1
-
Co jsem pochopil tak hleda adminy...
-
Mám pocit, že chyba leží někde jinde. Jsi si jistý, že ti to začalo vypisovat když si testoval zbrojní průkaz? Pošli ještě kód ohledně střílení do terčů (jestli to máš implementované).
Chyba ti hlásí, protože přijímáš až moc požadavků ze serveru (ack = acknowledgment signal/response). Takovej špinavej trik jak tohle obejít je zvednout ackslimit v server.cfg, ale asi bude lepší najít tu chybu
-
Tohle všechno budeš muset provádět v OnPlayerSpawn.
OnPlayerDeath se triggne když hráč umře ale následně se zavolá OnPlayerSpawn. Takže spíš něco jako
new bool:death[MAX_PLAYERS]; OnPlayerDeath: death[playerid] = true; OnPlayerSpawn: if(death[playerid]){ // delayspawn timer or whatsoever } else{ // obyc. spawn } delayspawn: death[playerid] = false; spawnplayer;
-
Skus
format(string,sizeof(string),"%d:%d",hodina,minuta);
format(string,sizeof(string),"%02d:%02d",hodina,minuta);
Taky by mělo jít
Děkujeme za hodnotný příspěvek, je to přesně to co jsem navrhnul...
-
A kód?
-
if( minuta > 10 ) // tu začína ta uprava
zkus si znova intepretovat slovy tuhle podmínku
pokud je minuta větší než 10
Jinak to lze vyřešit i bez podmínky takto:
format(string,sizeof(string),"%02d:%02d",hodina,minuta); // padding nulama
-
Chtělo by to nějak označit vstupy, aby lidi věděli, že se vstupuje do budov enterem. Další věc co mě opravdu sere jsou nekonzistentní názvy příkazů (půlka z nich je v češtině a půlka v AJ). Nemluvě o tom, že některé jsou poměrně dlouhé a nikoho nebaví ty příkazy psát, takže buď to zkrátit nebo vymyslet lepší mechanismus (viz. /zmenitobleceni – alternativa: enter u pickupu? /skin? /vzhled?). Nebylo by na škodu nějaký úvodní tutoriál co se smí a co se nesmí v RP a případně základní info o GM.
Nicméně teď nějaké ty chyby:
1) to už tady někdo zmínil
2), 3), 4) chyba při výpisu
5) levitující objekty
Každopádně už jsem to tu i zmínil, neresetují se proměnné. Přihlásil jsem se za Michaela_Scofielda a na podruhé mě to kicklo, protože jsem zapomněl heslo (pohoda, chápu). Přihlásil jsem se znovu a kicklo mě to už na poprvé.
-
Tester[i] = 1 ====> přiřazování
Tester[i] == 1 =====> ověřování rovnosti
-
Ah pravda, to mi nedošlo. Díky za upozornění
-
Off-topic!
Vyvarujte se offtopicu! Další zpráva reagující na předchozí zprávu bude vyhodnocena jako spam
Já si dovolím trochu odbočit než bude "platit" toto upozornění:
@Weed/DeNiSko: PM se snad nedá ani jinak udělat... tvůj argument "částečný kód z módu" je nevalidní
k problému, řekl bych, že musíš specifikovat max. délku stringu v sscanfu. Jistý si ale nejsem
-
Chápu teda že chceš aby si napsal nějaké slovo, dal enter a pak ti vypíše kolik znaků obsahuje to slovo?
-
hlavně že niCe pravidelně uráží sfdfd a napadá ten mód a cokoladu, že nemá vlastní nápady a že sfdfd je opoždená verze wtls. Vždyť sfdfd nic nekopíruje, však mají úplně jíný mód jak wtls a úplně jíné věci lol..
Můžeš uvést zdroj tohoto tvrzení?
-
Nejlepší způsob jak toho dosáhnout je každému nastavit podle jejich IDček, případně tam nastavit ještě nějakou přidanou konstantu
SetPlayerVirtualWorld(playerid,playerid+1); // kvůli playerid 0, správná připomínka od StreetGuy
případně
SetPlayerVirtualWorld(playerid,546+playerid);
INI errory při načítání stringu
v Herní (SA:MP, CS apod.)
Odesláno:
řekl bych, že je to tím že pVIP nebude string