Jump to content

ATomas

Uživatel
  • Příspěvků

    2927
  • Registrován

  • Aktivní

  • Vítězných dnů

    80

Everything posted by ATomas

  1. CMD:motor(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Nejsi v aute"); new jmeno[MAX_PLAYER_NAME],vehicleid = GetPlayerVehicleID(playerid); GetPlayerName(playerid, jmeno, MAX_PLAYER_NAME); if(Vozidlo[vehicleid][majitel][0] == 0 || strcmp(Vozidlo[vehicleid][majitel],jmeno,true) != 0) return ShowPlayerInfoBox(playerid, "> Od tohoto vozidla nemáš klíče."); else if(!Vozidlo[vehicleid][c_motor]) { format(str, sizeof(str), "* %s dává klíček do zapalování, otáčí s ním, čímž zapíná motor.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor nastartován (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); ShowPlayerInfoBox(playerid, "> Motor nastartovan."); new lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective); }else{ format(str, sizeof(str), "* %s otáčí klíčkem, čímž vypíná motor a vytahuje klíček ze zapalování.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor vypnut (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); ShowPlayerInfoBox(playerid, "> Motor vypnut."); new lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective); } Vozidlo[vehicleid][c_motor] = !Vozidlo[vehicleid][c_motor]; // z 0 na 1 a z 1 na 0 return 1; } tady jsem to zoptimalizoval vzhledem k tomu ze porovnavame pouze vozidlo, ve kterem sedi, neni potreba cyklus
  2. Zde bych uplne nesouhlasil, predpokladam ze ma na serveru nekolik vozidel a hrac muze mit 0 az n vozidel. tzn pokud najdes jineho majitele, tak to nezmena, ze hrac nemuze byt majitelem jineho vozidla. Ovsem pokud to ma udelane ze kazdy hrac muze byt majitelem maximalne jednoho vozidla, jde cely kod napsat bez toho cyklu.
  3. Mit na VPS widle ? Tak to ses asi prvni koho vidim ze je tam chce VPS stoji cca 300kč to nedas dohromady, kdyz uz mas tolik serveru ?
  4. ATomas

    script [0/10] BUSINESS SYSTEM

    Vyjadrim se tu. Sice nevim o co jde, nechci se tu pripletat do hadky to si vyreste mezi sebou, chci jen poukazat na jednu vec v OnPlayerKeyStateChange. To lze zoptimalizovat, pokud si v OnPlayerPickUpPickup podrzime v promene v jakem pickupu je a to potom pouzit v OnPlayerKeyStateChange, pak nebudeme potrebovat zadny cyklus. Dalsi vec BusinessInfo[BussID][bOwner] = PlayerName(playerid); toto nelze pouzit, protoze PlayerName vraci string a ten nelze priradit pouhym "=" takze nejak takto: format(BusinessInfo[BussID][bOwner],MAX_PLAYER_NAME,PlayerName(playerid)); Popripade strmid je na miste u toho bych cekal ze bude rychlejsi nez format. Ale myslim ze tento topic je rozhodne prinosem pro spousti lidi, kteri si mysli ze pawno ovladaji, pritom tam pisou podobne blbosti. Rozhodne je v tom potencial k tomu se neco naucit.
  5. ATomas

    pomoc Techničák

    CMD:technicak(playerid,params[]) { SCM(playerid,-1,"Techničák:"); new str[144],jmeno[MAX_PLAYER_NAME]; GetPlayerName(playerid,jmeno,sizeof(jmeno)); for(new i; i<sizeof(Vozidlo); i++) { printf("%s == %s",Vozidlo[i][majitel],jmeno); if(Vozidlo[i][majitel][0] != 0 && !strcmp(Vozidlo[i][majitel],jmeno,true)) { format(str,sizeof(str),"\n - %s | %s",GetVehicleName(Vozidlo[i][model]),Vozidlo[i][spz]); SCM(playerid,-1,str); print(str); } } return 1; } Pouzij toto a pak nam ukaz server log
  6. ATomas

    pomoc Techničák

    return vyhod ale pokud porovnavas s null stringem vzdy ti to vyhodi ze se shoduji if(Vozidlo[i][majitel][0] != 0 && !strcmp(Vozidlo[i][majitel], jmeno, true))
  7. ATomas

    pomoc Rozdelenie stránok

    Mam dojem ze to jde nastavit i v apache ne ?
  8. return tam cpes vzdycky, kdyz potrebujes aby ti funkce neco vracela, ovsem kdyz ji volas timerem, tak returt nepotrebujes vubec, protoze to nevracis nikam. Ovsem kdyz vsude budes vsude nakonec cpat return, tak to nicemu nevadi.
  9. stock NacteniActora() { new File:soubor = fopen("PLSSystemActor.txt",io_read); if(soubor) { new string[128]; for(new idac=1;idac<sizeof(ActorInfo) && fread(soubor,string);idac++) { ActorInfo[idac][aSkin] = strval(string); new pos = chrfind(',',string)+1; ActorInfo[idac][aX] = floatstr(string[pos]); pos = chrfind(',',string,pos)+1; ActorInfo[idac][aY] = floatstr(string[pos]); pos = chrfind(',',string,pos)+1; ActorInfo[idac][aZ] = floatstr(string[pos]); pos = chrfind(',',string,pos)+1; ActorInfo[idac][aA] = floatstr(string[pos]); ActorInfo[idac][aIDA] = CreateActor(ActorInfo[idac][aSkin],ActorInfo[idac][aX],ActorInfo[idac][aY],ActorInfo[idac][aZ],ActorInfo[idac][aA]); print("PLS System verze 0.1"); } return 1; } return 0; } stock chrfind(n,h[],s=0) { new l = strlen(h); while(s < l) { if(h[s] == n) return s; s++; } return -1; }
  10. ATomas

    pomoc Postup dále

    Vy mu teda radite Podle mne si beres moc velka sousta vzhledem k tomu co umis (neumis). Rozhodne neni naskodu se inspirovat ve zverejnenych sciptech. Ovsem pokud to nebudes zkouset a zustanes jen u takovychto otazek, tezko se posunes dal. Proste zkus neco sesmolit i presto, ze to nebude fungovat, pak to hod do helpu a my ti to uz nejak rozchodime. Chybama se clovek uci. Jinak bych mohl doporucit si otevrit zakladni includy a hledat ty co ty funkce delaji na wiki.sa-mp.com. Tim ziskas nejake povedomi co ti sa-mp umoznuje udelat. napr: http://wiki.sa-mp.com/wiki/TogglePlayerClock
  11. Od verze 0.3.7 R2 ma sa-mp SVar coz je neco jako tvuj GVar plugin, ale uz to mas implementovane primo v sa-mp
  12. Ten typek nato ma ten to nekam dotahne Jen ten druhej No jeste ze buchnul :D :D :D
  13. if(strcmp("/gotoon",cmdtext,true) == 0) { if(GOTO[playerid] == false) { SendClientMessage(playerid,COLOR_RED,"{FFFFFF}[{3399FF}Aw{FFFFFF}]{3399FF}:{FFFFFF} You have enabled goto."); GOTO[playerid] = true; } else SendClientMessage(playerid,COLOR_GREEN,"{FFFFFF}[{3399FF}Aw{FFFFFF}]{3399FF}:{FFFFFF} At the moment you have enabled goto."); return 1; }
  14. jako sory ale Qt knihovny to dneska v tom muze delat kazdy pascal a nemusi ani nic vedet o tom jak funguji stringy to vsechno Qt dela za nej
  15. #include <a_samp> public OnPlayerCommandText(playerid,cmdtext[]) { if(strcmp("/warps",cmdtext,true) == 0) return ShowPlayerDialog(playerid,400,DIALOG_STYLE_LIST,"{FF0000}Warp System","{FFFFFF}1. {00FF00}Las Venturas\n{FFFFFF}2. {00FF00}San Fierro\n{FFFFFF}3. {00FF00}Los Ssntos\n{FFFFFF}4. {00FF00}Info\n","Ok",""); if(strcmp("/dragon",cmdtext,true) == 0) return WarpPlayer(playerid,0); return 1; } public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]) { if(dialogid == 400) { if(response == 1) WarpPlayer(playerid,listitem); } return 1; } stock WarpPlayer(playerid,type) { switch(type) { case 0: { SetPlayerPos(playerid,2153.7300,944.8992,10.5474); SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}[ {00FF00}! {FF0000}] {FFFFFF}Byl jsi odwarpován ke casinu 4Dragons."); } } return 1; } rozhodnedoporucuji neduplikovat kod. ale mit to na jednom miste (v pripade zmeny pak nemusis vzpominat kde jsi to vsude napsal )
  16. Ja zacinal na pawnu a dneska jsem v pawnu jako doma. Pred rokem cca jsem zabrousil do c++ a ver mi ze tam jsou velke rozdily. Jako c++ je oproti pawnu hodne dopredu, jen ho trochu brzi treba ten debilni switch (zrejme musel bych takto blbe zachovan prave kvuli zpetne kompabilite). Hlavne na kazde prd je potreba v c++ knihovna. Nastesti pawno ma hromadu veci uz importovanych a nemusi to clovek resit.
  17. c++ napriklad. nebo java dneska se tam uz s formatem temer nepracuje (je tam akorat kvuli zpetne kompabitilite) dokonce i php to nepouziva
  18. myslim ze by to melo jit pokud ty dane dvere smazes. stejny princip funguje napr u kasin kde kdyz cches smazat kasina tak staci smazat stul rulety nebo blackjacku. stejnym principem by meli fungovat i ty dvere
  19. Novejsi programovaci jazyky uz vubec tyto stare format % nepouzivaji a maji knihovny na spojovani stringu integeru atp... To vis cim chytrejsi jazyk tim blbejsi programator if(strcmp("/pban",cmdtext,true,5) == 0)//prikaz /pban ma 5 znaku { if(cmdtext[5] != ' ') return SendClientMessage(playerid,-1,"Použití: /pban [ID]");// ocekavame ze za /pban napise mezeru new MenoHraca[MAX_PLAYER_NAME]; new Zprava[144]; new ID = strval(cmdtext[6]);//bereme znaky napsane po mezere GetPlayerName(ID, MenoHraca, sizeof(MenoHraca)); format(Zprava,sizeof(Zprava),"Zabanoval jsi %s(%d)",MenoHraca,ID); SendClientMessage(playerid,-1,Zprava); return 1; } kdyby jsi chtel vice parametru nez 1 a kazdej parametr muze mit jiny pocet znaku uz je potreba pouzit cyklus a najit si dalsi mezeru (predpokladam ze dle zvyklosti budes pouzivat jako oddelovaci znak mezeru) a prosim vas hlavne mu necpete zcmd a podobne kvuli jednomu prikazu. Jen at se nauci pracovat se stringem to se vzdycky hodi umet.
  20. #define KEY_DELAY 3000//cas ktery chces mit mezi tim stiskem kdy to jako uznas public OnPlayerKeyStateChange(playerid,newkeys,oldkeys) { if(newkeys & KEY_NECO) { if(GetTickCount()-GetPVarInt(playerid,"KeyDelay") < KEY_DELAY) { //stiskl podruhe } else SetPVarInt(playerid,"KeyDelay",GetTickCount()); } return 1; }
  21. ATomas

    pomoc PlayerTextDraw

    Proste myslenka: textdraw vytvoris na zcatku, potom jak ti poradili pomoci TextDrawSetString mu muzes menit text. Ale priorita je ten textdraw vytvorti jen jednou nazacatku a potom to uz jen updatovat.
  22. ATomas

    pomoc lagshoot

    lagcompmode jen vypina opravu synchronizace ktere byla v drivejsim sa-mpu. To tvoje strileni pred postavu se projeviaz na nejakym publicu kde je ta odezva znat, kdyz to budes hrat na local utak to tam nevykouzlis. Zaroven to i deaktivuje callback OnPlayerWeaponShot
  23. Pravda moje chyba. Jedine by se tam dostal pluginem kdyby si ten hrac tu cast toho pluginu dobrovalne dal do sa-mpu.
  24. A co je na tom prijemnejsiho ? Potom nasledne budes slozite pocitat s nekolika cisly naraz, aby jsi zjistil kdy byl vlastne online (nechce "razitko casu", ale spocitat jak 'dlouho'), zde je unix time asi nejlepsi metodou. Jediny problem ktery on ma je matematika, myslenka je spravna
×
×
  • Create New...