-
Příspěvků
2927 -
Registrován
-
Aktivní
-
Vítězných dnů
80
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by ATomas
-
-
dpkg --add-architecture i386 # only needed once
apt-get update
apt-get install ia32-libschmod 777 directory
-
Dej to d otoho bloku kde ti to vyhodnocuje ze je heslo kratsi nez 4 nebo delsi nez 24 znaku
-
printf("inputtext=%s len=%d",inputtext,strlen(inputtext));
A pak nam posli co ti to napsalo
-
Asi jsi to zvetsil malo.
Naco updatovat udaje, ktere se nezmenily
format(query,sizeof(query),"UPDATE konta SET Penize=%d WHERE Vlastnik='%s'",InfoHrace[playerid][BANKA_PENIZE],PlayerName(playerid)); print(query);//skontroluj si spravnost prikazu
Jinak bych rozhodne pro druhou tabulku pouzil cizi klic k tabulce prvni. Uchovavat stejnou hodnotu na dve mista. To smrdi nekonzistentnosti dat.
- 1
-
pokial viem stringy v pawn nemozes takto priradzovat ( "meno=x")
musis pouzit memcpy, format, strcpy, ..., alebo zadeklarovat to tak ze new meno[] = "abcd"
Pokud prirazujes konstantni string tak muzes. Muzes takto nastavovat i array (string je array) u kterych v pri compile-time znamy rozmer. Muzes je takto priradit s podminkou ze vyraz v levo nesmi byt delsi nez v pravo (dimension)
Jinak schazuje ti to SCM. Do SCM nesmis poslat %s,%d,%f... jinak to ti crashne server. Pouzij to takto:
format(menoje, sizeof(menoje), "{FF0000}[ ! ] {FFFFFF}Premenná testmeno bola nastavená na %I (%s)",cislo,VratMiMeno(cislo)); SendClientMessage(playerid, -1,menoje);
-
Ahoj,
VW a interier je neco jineho.
VW (VirtualWorld) je server-side.
Interior je client-side
Interior pouzivali rockstari jako prepinani mezi zobrazovani objektu. Jak vis interiery jsou zobrazene ve vzduchu a ne tam kde je do nich vstupuje z mapy. Takto je vyreseno nekolik interieru do kterych se da dostat z vice mist (napr pizzerie atp...).
Takze si vzdy musis nejak zapsat v jakym /interior jsi a ve kterem to vidis a pak krome SetPlayerPos na ty souradky je interior je pouzit i SetPlayerInterior s tim cislem ktere ti /interior ukazalo.
Tedy je nekolik interieru ktere jsou ruzne rozmisteny po /interior.
- 3
-
protoze parametr barvy je ocekavan jako integer (hex) a ty mu predavas string
format(string, sizeof(string), "FF%06X", c_color_1[vehicleid]);//%06X znamena ze to chces v hex a na 6 mist (doplnit nulama) SetDynamicObjectMaterial(c_object1, 0, -1, "none", "none", HexToInt(string));
You MUST use ARGB color format, not RGBA like used in client messages etc
http://wiki.sa-mp.com/wiki/SetObjectMaterial
stock HexToInt(text[]) { new num; for(new i;text[i];i++) { switch(text[i]) { case 'x','X': num = 0; case '0' .. '9': num = (num << 4) | (text[i] - '0'); case 'a' .. 'f': num = (num << 4) | (text[i] - ('a' - 10)); case 'A' .. 'F': num = (num << 4) | (text[i] - ('A' - 10)); } } return num; }
-
ATomas to som skúšal ono hráča pripojí hrá tam a po čase ho odpojí
Takto to nevypina (nepada) server. Ale jen odpojuje hrace ze serveru? Ten nadpis me zmatl tam je psano server totiz Tak je to jednoznacne chyba na strane hostingu a v nastaveni jejich firewallu (iptables ?)
-
-
Hezké, aspoň už to nebude muset nikdo hledat a pochybovat, zda jde o správný algoritmus výpočtu, tady je to jasné. Ale prosím, řekni mi, že jsi to nepsal vše ručně, prosím, jen mě ujisti.
To bych se nato radeji vykaslal. At zije excel
-
Ale nieco podobne som tu už videl, akurat mu to všetci ohejtovali kvoli casovym pasmam, nedostatočnej "exaktnosti" a neviem čomu
Edit: tak nie, funguje to inak, ale myslel som toto
Nedelal jsem rychlosti test, ale kdyz jsem videl zdrojak tak uz je jasne ze muj zpusob je rychlejsi Ma tam spoustu vypoctu zato muj zpusob ma jen jeden vypocet a pak pristup k indexu v poli kde je vysledek.
-
rofl
ale nice
Videl som rozne algoritmy co drzali 300 prvkove polia kvoli rychlosti.. ale toto ma prekvapilo xD
Vim ze se to zda hloupe. Ale podle rychlostnich testu je toho fakt nejvic fast At to vypada jakkoliv hloupe
-
Zdravím,
přináším Vám nový způsob převádění timestamp (časového razítka = počet sekund od 1.1.970) na lidčtější způsob.
Sice je tento způsob paměťově (RAM) náročnější. Zato CPU nejrychlejší. Ovšem RAM paměti je pro sa-mp server všude dost. Zato CPU ne.
Existuje mnoho způsobů např. vložit timestamp do databáze a nechat si vrátit string výsledek. Ovšem můj způsob vykazuje rychlejší výsledky. Další a asi nejhloupější zpusobje samotné počítání data.
Protože tu není povoleno vlozit tak dlouhý kód, dávám sem odkaz:
Použíti:
new time = gettime();//random(cellmax); printf("dnes je %s",GetDate(time));
Pokud chcete k tomu přidat i čas tak to lze lehce pomocí:
new time = gettime();//random(cellmax); time = time%(24*60*60); printf("hodin=%d minut=%d vterin=%d",time/(60*60)/*pozor na časové pásmo !!!*/,(time/60)%60,time%60);
Enjoy
- 3
-
To sis nasel stare video, kdy se jeste objekty neumely pohybovat rotaci, tak je to udelane pres setovani rotace po FPS. Velmi hloupe reseni, ale kdyz nic jineho v te dobe nebylo...
Kazdopadne doporucuji si VElMI POZORNE precist dokumentaci:
-
Mozna to neni co hledas, ale pokud jde jen o testovani, tak bych doporucil spice localhost propojene s hamachi (tjn odpada uploadnuti modu nekam, kde ti muze byt ukraden). Ciste staci jen F5 a resetnout .exe proces a mas zmen nahozene.
-
Autor príspevku chcel "odborné" vysvetlenie ako tie dražby spraviť. Pán House poradil nejaký postup ako by to mohlo byť cez sql a pán ATomas mohol napísať vlastný spôsob ak mal záujem. Autor príspevku by si z toho niečo odniesol prípadne by sa pýtal prečo je toto tak a prečo toto hentak, ale teraz má z týchto dohadov akurát tak to, čo mal doteraz. Myšlienku.
Souhlasim s tebou ze kdyz si prect ty odpovedi nedozvi se zhola nic. Ovsem cekam az upresni jeho pozdavky. Protoze predpokladam ze je zacatecnik a pokud mu tu budu psat nejake teorie o tom jak by to slo udelat, tak to vyusti akorat v zalozeni x helpu co mu nefunguje a jak to opravit. Proto vidim ucinnejsi kdyz zdeli presnejsi pozadavky (co chce drazit a v jakych promenychto ma). A postavit mu ten priklad na konkretni danou vec.
- 1
-
Ako som povedal, urcite bude mat jednoduchsie sa naucit SQL, ako sa snazit nejak rucne robit algoritmy na zoradovanie, filtrovanie, vymyslet ako to vsetko ukladat a podobne. Uz len ako bude ukladat aukcie, ked sa hrac odpoji? Co bude mat nejake obrovske pole, v nom nejake nulove aukcie? Potom cyklit cez vsetko? Urcite ma lepsie spravit SQL.
Nevim proc sem michas neco o razeni a filrovani. On chce drazby nic vic. Drazba se muze s podpojenim hrace zrusit. Jednoduche elegantni a ucinne
-
Jelikoz ma problem s touhle veci, tak ho netahej do DB na to je potreba jeste vetis znalosti
Jinak by docela pomohlo kdyby jsi to nejak upresnil tj treba v jakych promenych to mas atp...
- 1
-
Kdo ty lidi uci tyhle prasarny ?
format(str,sizeof(str),"%.1f%",AR); format(string,sizeof(string),"%.1f%",HP); format(str2,sizeof(str2),"%s",GetWeaponNameByID(GetPlayerWeapon(playerid))); format(str3,sizeof(str3),"%i",GetPlayerAmmo(playerid)); format(str4,sizeof(str4),"%02d:%02d:%02d",hodiny,minuty,sekundy); format(str5,sizeof(str5),"%02d.%02d.%02d",dni,mesiace,roky); format(str6,sizeof(str6),"%.2f",Peniaze[playerid]); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][2],string); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][4],str); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][18],str2); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][20],str3); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][24],str4); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][25],str5); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][21],str6);
Jinak bych doporucil si to oprintovat, aby jsi videl jak se ten kod chova
public TextdrawTimer(playerid) { //kdyz to mas v globalni promene urcite je potreba to hracum zobrazit do jejich vlastniho TD, nebyl by lepsi jeden td pro vsechny ? //kdyz to zobrazujes vzdy do jednoho a toho sameho td, neslo by to vymyslet cele nejak lepe? tj to mit v jedne promene? if(--noc > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(noc)); if(--sprcha > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(sprcha)); if(--volnycas2 > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(volnycas2)); if(--Obed2 > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(Obed2)); if(--Praca > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(Praca)); if(--volnycas > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(volnycas)); if(--Obed > 0) PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][26],TimeConvert(Obed)); printf("playerid=%d nahratycas=%d",playerid,NahratyCas[playerid]); if(!(++NahratyCas[playerid] % 60*60)) { Peniaze[playerid] += 10.00; SendClientMessage(playerid,COLOR_RED,"YAYYYY"); } new string[42],minuty,sekundy,hodiny,dni,roky,mesiace,Float:HP,Float:AR; GetPlayerHealth(playerid,HP); GetPlayerArmour(playerid,AR); gettime(hodiny,minuty,sekundy); getdate(roky,mesiace,dni); format(string,sizeof(string),"%.1f%",HP); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][2],string); format(string,sizeof(string),"%.1f%",AR); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][4],string); format(string,sizeof(string),"%s",GetWeaponNameByID(GetPlayerWeapon(playerid))); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][18],string); format(string,sizeof(string),"%i",GetPlayerAmmo(playerid)); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][20],string); format(string,sizeof(string),"%02d:%02d:%02d",hodiny,minuty,sekundy); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][24],string); format(string,sizeof(string),"%02d.%02d.%02d",dni,mesiace,roky); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][25],string); format(string,sizeof(string),"%.2f",Peniaze[playerid]); PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][21],string); PlayerTextDrawSetPreviewModel(playerid,TDEditor_PTD[playerid][23],GetPlayerSkin(playerid)); return 1; }
- 1
-
No furt, je to úplně stejné, tachometr, není vidět jenom KM/H a hlavně, v levo nahoře.
Hod sem cely kod, jinak to budes opravovat do vanoc.
-
Čo ti poradil Atomas je síce pekné, ale takmer zbytočné, nakoľko zmena textu v TD sa prejavuje až po jeho opätovnom prekreslení/zobrazení.
Pošli sem ešte raz celý kód a snáď ti poradím..
PS: spravi si to tak ako si to mal na začiatku, následne pridaj && GetPlayerVehicleSeat(playerid) == 0) a potom ešte TextDrawShowForPlayer - potom to skús a ak to nepojde, postni celý kod
TextDrawSetString aplikuje zmeni i bez prekresleni (hidnuti a shownuti). Proto je potreba aby pro kazdeho hrace byl samostatny textdraw
-
Ja tu spis vidim problem v tom ze ma nastaveny jeden textdraw ktery zobrazuje vsem hracum. Spravne by mel mit kazdy hrac svuj textdraw pro zobrazovani udaju aby si to navzajem "nekradli"
//v OnGameModeInit for(new i;i<MAX_PLAYERS;i++) { Textdraw0[i] = CreateTextDraw(... //a sem to das } if(IsPlayerInAnyVehicle(playerid)) { new str[128],Float:hp,vehicleid = GetPlayerVehicleID(playerid); GetVehicleHealth(vehicleid,hp); format(str,sizeof(str),"~p~Vozidlo ~w~: %s",VehName[GetVehicleModel(vehicleid)-400]); TextDrawSetString(Textdraw0[playerid],str); format(str,sizeof(str),"~p~Benzin ~w~: %d",Benzin[vehicleid]); TextDrawSetString(Textdraw1[playerid],str); format(str,sizeof(str),"~p~Stav ~w~: %.1f %%",hp/10.0); TextDrawSetString(Textdraw2[playerid],str); format(str,sizeof(str),"~p~KM / H ~w~: %d",GetVehicleSpeed(playerid,true)); TextDrawSetString(Textdraw3[playerid],str); }
-
Tak snad kalcor vyda ocekavanou novou verzi sa-mp kdyz se uz probudil k zivotu:)
- 1
-
(porovnávací kód sa nenachádza v skompilovanom súbore).
S tímto bych nesouhlasil. V kompilovanem kodu je vsechno. Ale pri spusteni se cely nahraje do pameti (Tj muzes po spusteni mod smazat ze slozky gamemodes a furt svr pojede (do resetu)). Taky jeden z duvodu proc nema moc smysl resit jestli vytvorit pole o 50 nebo 100 znacich kdyz ma cely kompilovany kod 10MB
Clicker.. z nudy
v Herní (SA:MP, CS apod.)
Odesláno:
A co rika crashdetect?