Jump to content

ATomas

Uživatel
  • Příspěvků

    2926
  • Registrován

  • Aktivní

  • Vítězných dnů

    77

Everything posted by ATomas

  1. 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.
  2. 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);
  3. 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.
  4. 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; }
  5. ATomas

    pomoc On-OFF server

    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 ?)
  6. ATomas

    pomoc On-OFF server

    Doporucil bych crash detect. Ledacos pomuze odkryt. http://forum.sa-mp.com/showthread.php?t=262796
  7. ATomas

    script Timestamp to date

    To bych se nato radeji vykaslal. At zije excel
  8. ATomas

    script Timestamp to date

    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.
  9. ATomas

    script Timestamp to date

    Vim ze se to zda hloupe. Ale podle rychlostnich testu je toho fakt nejvic fast At to vypada jakkoliv hloupe
  10. ATomas

    script Timestamp to date

    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: https://pastebin.com/6BN6kc1L 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
  11. 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: http://wiki.sa-mp.com/wiki/MoveObject
  12. ATomas

    hledám Hosting

    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.
  13. 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.
  14. 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
  15. 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...
  16. ATomas

    pomoc NahratýČas

    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; }
  17. Hod sem cely kod, jinak to budes opravovat do vanoc.
  18. TextDrawSetString aplikuje zmeni i bez prekresleni (hidnuti a shownuti). Proto je potreba aby pro kazdeho hrace byl samostatny textdraw
  19. 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); }
  20. Tak snad kalcor vyda ocekavanou novou verzi sa-mp kdyz se uz probudil k zivotu:)
  21. 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
  22. Aha tak ono se to jmenuje hook to co pouzivam Mylne jsem to radil do skupiny (retezovani, i kdyz pretezovani v c++ funguje jinak vim Dobre napsane a strozumitelne takze odeme +. Jinak jen takove upozorneni. Hookovani je hezke elegantni a zjednodusi praci. Ovsem pozor, kdyz si takto nahookujete nejakou fci kterou casto volate a pak ji takto zmenite, tak s tim musi clovek nakladat opatrne, aby si pak neuvaril CPU kdyz spusti mod Napr si hodit logovani na kazde GivePlayerMoney tak to taky umi nejaky CPU sezrat .D
  23. Kvuli filtrovani. Vesina lidi tam pise lomitko. V nazvu je ale pomlcka. Proto ze tam i to slovakia misto slovak, aby to bylo vyhledatelne i kdyz to nekdo takto napise
  24. Tak podle meho nazoru lomitko (/) znamena ze je potreba si vybrat jednu ze dvou voleb. Zato pomlcka (-) povoluje obe varianty zaroven. Jen logicka uvaha
  25. Mozna pretexturovanim na tom indexu kde to blika.
×
×
  • Create New...