Advertisement
Bebras

Verslų sistema - Bebras. MySQL R33+.

Mar 13th, 2014
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.73 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <zcmd>
  4. #include <sscanf2>
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14. #define MAX_VERSLAI 500 // Maksimalus verslų skaičius, keiskit pagal poreikius
  15. #define VERSLU_SPALVA 0x00FF00FF //Tai nėra butinybė, tai tik spalva kurią naudosiu visoms žinutėms bei label.
  16. #define DIALOG_ACCEPT_VERSLA 5154 // Tai GUI lentelės ID(dialogid). Pas jus neturėtų būti lentelės su tokiu ID, jei yra - pakeiskit šį.
  17.  
  18. enum v_info {
  19.     ORM:Ormid,
  20.     Id,
  21.     Savininkas[MAX_PLAYER_NAME],
  22.     Pavadinimas[101],
  23.     Float:EnX,
  24.     Float:EnY,
  25.     Float:EnZ,
  26.     InterjeroNr,
  27.     Kaina,
  28.     PelnasH,
  29.     Pelnas,
  30.     Locked,
  31.     Text3D:Label
  32. };
  33.  
  34. new Verslai[MAX_VERSLAI][v_info]; // Masyvas kuriame laikysime informaciją veikimo metu
  35.  
  36.  
  37. enum interior_info {
  38.     Float:x,
  39.     Float:y,
  40.     Float:z,
  41.     Int
  42. };
  43.  
  44.  
  45. // Tai antrasis masyvas skirtas interjerams
  46. // Pirmieji trys skaičiai yra iėjimo koordinatės, o ketvirtasis tikrasis interjero ID
  47. // Galite jų pridėt neribotą skaičių
  48. static const Interiors[][interior_info] = {
  49.     {-25.8844,-185.8689,1003.5499,17}, // 24/7 parduotvės interjeras
  50.     {2233.8032,1712.2303,1011.7632,1} // Caligula kazino interjeras
  51. };
  52.  
  53. new Db; // Kintamasis kuriame bus laikomas prisijungimo prie DB numeris.
  54.  
  55.  
  56.  
  57. main()
  58. {
  59.     print("Pavyzdinė modifikacija naudojant MySQL ORM.");
  60.     print("Pavyzdyje simuliuota Verslų sistema");
  61.     print("Pavyzdžio ir pamokos autorius - Bebras");
  62.     print("Gero naudojimo!");
  63. }
  64.  
  65. public OnGameModeInit()
  66. {
  67.     AddPlayerClass(5, 0.0, 0.0, 2.0, 90.0, 0, 0, 0, 0, 0, 0); // Eilutė su verslų sistema nėra susijusi.
  68.  
  69.  
  70.     Db = mysql_connect("localhost","root","testas","");
  71.  
  72.  
  73.     SetTimer("VersluPelnas",60*60*1000,true);
  74.  
  75.     KrautiVerslus();
  76.     return 1;
  77. }
  78.  
  79.  
  80. stock KrautiVerslus()
  81.     return mysql_tquery(Db,"SELECT * FROM verslai","OnVerslaiLoad",""); //Išsiunčiame užklausą į duomenų bazę, ir nurodome kad grižus užklausa iškviestų funkcija "OnVerslaiLoad"
  82.  
  83. forward OnVerslaiLoad();
  84. public OnVerslaiLoad()
  85. {
  86.     new str[128];
  87.     for(new i; i < cache_get_row_count(); i++) // cache_get_row_count reiškia eilučių skaičių
  88.     {
  89.         Verslai[i][Ormid] = orm_create("verslai"); // Sukuriame orm ryšį su verslų lentele
  90.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][Id],"Id"); //Pridedame stulpelį "id" prie ryšio
  91.         orm_setkey(Verslai[i][Ormid],"Id"); // Nustatome kad eilutės duomenų bazėje bus skiriamos pagal šį sulpelį
  92.         orm_addvar_string(Verslai[i][Ormid],Verslai[i][Savininkas],MAX_PLAYER_NAME,"Savininkas"); // Pridedame stulpelį "savininkas" prie ryšio
  93.         orm_addvar_string(Verslai[i][Ormid],Verslai[i][Pavadinimas],101,"Pavadinimas");
  94.         orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnX],"EnX");
  95.         orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnY],"EnY");
  96.         orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnZ],"EnZ");
  97.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][InterjeroNr],"InterjeroNr");
  98.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][Kaina],"Kaina");
  99.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][PelnasH],"PelnasH");
  100.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][Pelnas],"Pelnas");
  101.         orm_addvar_int(Verslai[i][Ormid],Verslai[i][Locked],"Locked");
  102.         //Eilutės prie šią, neturi komentarų kadangi veiksmas kartojasi. Dvi eilutės pirmosios yra pakomentuotos
  103.          
  104.         orm_apply_cache(Verslai[i][Ormid],i); // Tai užkraus duomenis į kintamuosius susietus višuje.
  105.  
  106.         // Krovimas baigtas, dabar galime parodyti kažką serveryje
  107.         if(isnull(Verslai[i][Savininkas])) format(str,sizeof(str),"Verslas parduodamas\nKaina:%d\nValandos pelnas:%d",
  108.             Verslai[i][Kaina],Verslai[i][PelnasH]);
  109.  
  110.         else format(str,sizeof(str),"%s\nSavininkas:%s",Verslai[i][Pavadinimas],Verslai[i][Savininkas]);
  111.         //Kodas viršuje nustatys ar verslas turi savininka ar ne, atitinkamai pagal tai suformatuos žinutę teksto etiketei(3DTextLabel)
  112.          
  113.         Verslai[i][Label] = Create3DTextLabel(str,VERSLU_SPALVA,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ],25.0,0,1);//Sukuriame minėta etiketę. Parametras po Z koordinatės reiškia atsumą kuriuo bus matoma etiketė
  114.     }
  115.     return 1;
  116. }
  117.  
  118.  
  119. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  120. {
  121.     if((newkeys & KEY_SECONDARY_ATTACK) && !(oldkeys & KEY_SECONDARY_ATTACK)) // Patikriname ar žaidėjas paspaudė "KEY_SECONDARY_ATTACK", tai yra ENTER mygtukas. Galite keisti
  122.     {
  123.         if(IsPlayerInAnyVehicle(playerid)) return 0; // Jeigu žaidėjas transporto priemonėje, jam įeiti neleisime, todėl net neverta tikrinti prie kokio jis verslo.
  124.         for(new i; i < MAX_VERSLAI; i++)
  125.         {
  126.             if(Verslai[i][Id] == 0) continue; // Jeigu tai tuščia verslo masyvo dalis, praleidžiame kodą apačioje ,grįžtame prie ciklo.
  127.             if(IsPlayerInRangeOfPoint(playerid,5.0,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ])) // Jeigu žaidėjas yra prie verslo įėjimo
  128.             {
  129.                 if(Verslai[i][Locked] == 1) //Jei užrakinta
  130.                 {
  131.                     SendClientMessage(playerid,VERSLU_SPALVA,"Verslas užrakintas,pabandykite vėliau");
  132.                     return 0;
  133.                 }
  134.  
  135.                 // Dabar ir naudosime masyvą "Interiors". Plačiau bus po kodu -> Žiūrėti pamokoje.
  136.                 SetPlayerInterior(playerid,Interiors[Verslai[i][InterjeroNr]][Int]); //Nustatome žaidėjo interjerą
  137.                 SetPlayerPos(playerid,Interiors[Verslai[i][InterjeroNr]][x],Interiors[Verslai[i][InterjeroNr]][y],Interiors[Verslai[i][InterjeroNr]][z]);
  138.                 SetPlayerVirtualWorld(playerid,Verslai[i][Id]); // Nustatome virtualuųjį pasaulį į unikalų tam verslui skaičių
  139.                 return 0;
  140.             }
  141.             if(GetPlayerVirtualWorld(playerid) == Verslai[i][Id]) // Jeigu žaidėjo virtualusis pasaulis lygus verslo ID. (Porą eilučių į viršų tai nustatome)
  142.             {
  143.                 if(IsPlayerInRangeOfPoint(playerid,5.0,Interiors[Verslai[i][InterjeroNr]][x],Interiors[Verslai[i][InterjeroNr]][y],Interiors[Verslai[i][InterjeroNr]][z])
  144.                     && GetPlayerVirtualWorld(playerid) == Verslai[i][Id]
  145.                     && GetPlayerInterior(playerid) == Interiors[Verslai[i][InterjeroNr]][Int]) // Jeigu žaidėjas yra prie išėjimo. Tai nusprendžiam pagal jo buvimo vietą, virtualų pasaulį ir interjerą.
  146.                 {
  147.                     if(Verslai[i][Locked] == 1) //Jei užrakinta
  148.                     {
  149.                         SendClientMessage(playerid,VERSLU_SPALVA,"Verslas užrakintas");
  150.                         return 0;
  151.                     }
  152.                     // Jeigu iki čia atėjome, reiškia verslas atrakintas ir galima įeiti.
  153.                     SetPlayerInterior(playerid,0);
  154.                     SetPlayerPos(playerid,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ]);
  155.                     SetPlayerVirtualWorld(playerid,0);
  156.                     return 0;
  157.                 }
  158.             }
  159.         }
  160.     }
  161.     return 1;
  162. }
  163.  
  164.  
  165. //Funkcija tikrins ar žaidėjas yra prie verslo įėjimo, ir jeigu jis prie įėjimo gražins verslo indeksą.
  166. stock IsPlayerInRangeOfVerslas(playerid,Float:distance=5.0) // Antras parametras nebūtinas, jei jo nebus vietoj jo naudosime skaičių 5.0
  167. {
  168.     for(new i; i < MAX_VERSLAI; i++)
  169.     {
  170.         if(Verslai[i][Id] == 0) continue;
  171.         if(IsPlayerInRangeOfPoint(playerid,distance,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ])) return i; // Jeigu žaidėjas yra nurodytu atstumu prie verslo įėjimo gražinsime masyvo indeksą
  172.     }
  173.     return -1; // Jeigu žaidėjas nėra prie jokio įėjimo gražiname -1, kas yra netinkamas masyvo indeksas.
  174. }
  175.  
  176. // Funkcija patikrins ar žaidėjas yra verslo savininkas.
  177. // Atkreipkite dėmesį jog duodame ne verslo unikalų Id, o verslo masyvo indeksą.
  178. stock VersloSavininkas(playerid,vid)
  179. {
  180.     new name[MAX_PLAYER_NAME];
  181.     GetPlayerName(playerid,name,sizeof(name));
  182.     if(!isnull(Verslai[vid][Savininkas]) && !strcmp(Verslai[vid][Savininkas],name)) return true; // Jeigu masyvo dalis "savininkas" ne tuščias ir sutampa su žaidėjo vardu, reiškia jis savininkas
  183.     return false;
  184. }
  185.  
  186.  
  187.  
  188. CMD:parduotiversla(playerid,params[])
  189. {
  190.     new verslas = IsPlayerInRangeOfVerslas(playerid,5.0),pid,kaina,str[70],name[MAX_PLAYER_NAME];
  191.     if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite būti prie verslo įėjimo");
  192.     if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jūsų verslas!");
  193.     if(sscanf(params,"u",pid,kaina)) return SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /parduotiversla [ZaidejoID/dalis vardo] [Kaina]");
  194.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tokio žaidejo nėra");
  195.     if(kaina < 0) return SendClientMessage(playerid,VERSLU_SPALVA,"Kaina neigiama buti negali!");
  196.    
  197.     format(str,sizeof(str),"%s jums siulo pirkti jo verlsa uz %d(Galioja 30sec)",name,kaina);
  198.     ShowPlayerDialog(playerid,DIALOG_ACCEPT_VERSLA,DIALOG_STYLE_MSGBOX,"Verslo pirkimas",str,"Pirkti","Atsisakyti");
  199.     SetPVarInt(pid,"KasSiuloVersla",playerid);
  200.     SetPVarInt(pid,"VersloIndeksas",verslas);
  201.     SetPVarInt(pid,"VersloKaina",kaina);
  202.     return 1;
  203. }
  204.  
  205. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  206. {
  207.     if(dialogid == DIALOG_ACCEPT_VERSLA && response) // Jeigu tai lentelė kurią parodėme komandoje IR paspaudė pirmąjį mygtuką (Pirkti)
  208.     {
  209.         if(GetPVarInt(playerid,"VersloKaina") < GetPlayerMoney(playerid)) return SendClientMessage(playerid,VERSLU_SPALVA,"Jums neužtenka pinigų"); // Jeigu žaidėjui neužtenka pinigų
  210.         // Jeigu iki čia atėjom, reiškia pinigų užtenka.
  211.         new name[MAX_PLAYER_NAME],index = GetPVarInt(playerid,"VersloIndeksas"),str[128];
  212.         GetPlayerName(playerid,name,sizeof(name));
  213.         format(Verslai[index][Savininkas],24,name); // Perrašome savininko vardą
  214.         // Kolkokas tinkamas savininkas tik kintamuosiuose, atnaujinkime jį ir 3D teksto etiketėje.
  215.         format(str,sizeof(str),"%s\nSavininkas:%s",Verslai[index][Pavadinimas],Verslai[index][Savininkas]);
  216.         Update3DTextLabelText(Verslai[index][Label],VERSLU_SPALVA,str);
  217.  
  218.         // Na galima nusiųsti pardavėjui žinutę kad verslas parduotas.
  219.         format(str,sizeof(str),"%s nupirko jūsų verslą uz %d",GetPVarInt(playerid,"KasSiuloVersla"),GetPVarInt(playerid,"VersloKaina"));
  220.         SendClientMessage(GetPVarInt(playerid,"KasSiuloVersla"),VERSLU_SPALVA,str);
  221.  
  222.         //Ištriname žaidėjo kintamuosius, nes jie mums nebereikalingi
  223.         DeletePVar(playerid,"KasSiuloVersla");
  224.         DeletePVar(playerid,"VersloIndeksas");
  225.         DeletePVar(playerid,"VersloKaina");
  226.         return 1;
  227.     }
  228.     return 0;
  229. }
  230.  
  231.  
  232.  
  233.  
  234.  
  235. CMD:rakintiversla(playerid)
  236. {
  237.     new verslas = IsPlayerInRangeOfVerslas(playerid,5.0);
  238.     if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite būti prie verslo įėjimo");
  239.     if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jūsų verslas!");
  240.     if(Verslai[verslas][Locked] == 0) // Jei atrakinta
  241.     {
  242.         RakintiVersla(verslas,true);
  243.         SendClientMessage(playerid,VERSLU_SPALVA,"Verslas uzrakintas");
  244.         return 1;
  245.     }
  246.     if(Verslai[verslas][Locked] == 1) //Jei užrakinta
  247.     {
  248.         RakintiVersla(verslas,false);
  249.         SendClientMessage(playerid,VERSLU_SPALVA,"Verslas atrakintas");
  250.         return 1;
  251.     }
  252.     return 1;
  253. }
  254.  
  255.  
  256.  
  257. stock RakintiVersla(versloid,bool:status)
  258. {
  259.     Verslai[versloid][Locked] = status;
  260.     orm_update(Verslai[versloid][Ormid]); //Atnaujiname informaciją duomenų bazėje
  261.     return 1;
  262. }
  263.  
  264.  
  265. CMD:pirktiversla(playerid,params[])
  266. {
  267.     new verslas = IsPlayerInRangeOfVerslas(playerid,5.0);
  268.     if(verslas == -1) return SendClientMessage(playerid, VERSLU_SPALVA, "Jūs turite būti prie verslo įėjimo!");
  269.     if(!isnull(Verslai[verslas][Savininkas]))   return SendClientMessage(playerid, VERSLU_SPALVA, "Šis verslas jau turi savininką!");
  270.     if(GetPlayerMoney(playerid) < Verslai[verslas][Kaina]) return SendClientMessage(playerid, VERSLU_SPALVA, "Jums neužtenka pinigų.");
  271.  
  272.     // Atiimam pinigus.
  273.     GivePlayerMoney(playerid,Verslai[verslas][Kaina]);
  274.     // Gauname žaidėjo vardą ir padarome jį savininku.
  275.     new name[MAX_PLAYER_NAME];
  276.     GetPlayerName(playerid, name, sizeof(name));
  277.     format(Verslai[verslas][Savininkas], MAX_PLAYER_NAME,"%s",name);
  278.  
  279.     // Atnaujiname teksto etiketę jog būtų rodomas tinkamas savininkas.
  280.     new str[130];
  281.     format(str,sizeof(str),"%s\n%s",Verslai[verslas][Pavadinimas],Verslai[verslas][Savininkas]);
  282.     Update3DTextLabelText(Verslai[verslas][Label], VERSLU_SPALVA,str);
  283.  
  284.     // Atnaujiname savininką duomenų bazėje.
  285.     orm_update(Verslai[verslas][Ormid]);
  286.  
  287.     SendClientMessage(playerid, VERSLU_SPALVA, "Sveikiname nusipirkus verslą!");
  288.     return 1;
  289. }
  290.  
  291. CMD:parduotiversla(playerid,params[])
  292. {
  293.     new verslas = IsPlayerInRangeOfVerslas(playerid,5.0),pid,kaina,str[70],name[MAX_PLAYER_NAME];
  294.     if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite būti prie verslo įėjimo");
  295.     if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jūsų verslas!");
  296.     if(sscanf(params,"u",pid,kaina)) return SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /parduotiversla [ZaidejoID/dalis vardo] [Kaina]");
  297.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tokio žaidejo nėra");
  298.     if(kaina < 0) return SendClientMessage(playerid,VERSLU_SPALVA,"Kaina neigiama buti negali!");
  299.    
  300.     format(str,sizeof(str),"%s jums siulo pirkti jo verlsa uz %d(Galioja 30sec)",name,kaina);
  301.     ShowPlayerDialog(playerid,DIALOG_ACCEPT_VERSLA,DIALOG_STYLE_MSGBOX,"Verslo pirkimas",str,"Pirkti","Atsisakyti");
  302.     SetPVarInt(pid,"KasSiuloVersla",playerid);
  303.     SetPVarInt(pid,"VersloIndeksas",verslas);
  304.     SetPVarInt(pid,"VersloKaina",kaina);
  305.     return 1;
  306. }
  307.  
  308.  
  309.  
  310. CMD:keistipavadinima(playerid,params[])
  311. {
  312.     new verslas = IsPlayerInRangeOfVerslas(playerid,5.0),str[128];
  313.     if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite būti prie verslo įėjimo");
  314.     if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jūsų verslas!");
  315.     if(isnull(params)) SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /keistipavadinima [Naujas pavadinimas]");
  316.     if(strlen(params) > 100) return SendClientMessage(playerid, VERSLU_SPALVA, "Pavadinimas per ilgas, daugiausiai gali būti 100 simbolių!");
  317.  
  318.     strdel(Verslai[verslas][Pavadinimas],0,101); //Ištriname senąjį pavadinimą
  319.     strins(Verslai[verslas][Pavadinimas],params,0,101); // Įrašome naują pavadinimą
  320.  
  321.     format(str,sizeof(str),"%s\nSavininkas:%s",Verslai[verslas][Pavadinimas],Verslai[verslas][Savininkas]);
  322.     Update3DTextLabelText(Verslai[verslas][Label],VERSLU_SPALVA,str); //Atnaujiname teksto etiktę(3DTextLabel)
  323.  
  324.     orm_update(Verslai[verslas][Ormid]);//Atnaujiname duomenis duomenų bazėje.
  325.     return 1;
  326. }
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. CMD:pridetiversla(playerid,params[])
  335. {
  336.     new interjeras,kaina,pelnas,Float:pos[3],query[150],i = GetFreeVersloIndex(),str[100]; //Ką daro funkciją "GetFreeVersloIndex" žiūrėkite žemiau
  337.     if(sscanf(params,"ddd",interjeras,kaina,pelnas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /pridetiversla [InterjeroNr] [Kaina] [Valandos pelnas]");
  338.     if(interjeras > sizeof(Interiors) || interjeras < 0) return SendClientMessage(playerid,VERSLU_SPALVA,"Tokio interjero nera!"); // Jeigu masyve interjero su nurodytu numeriu nėra
  339.     GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  340.     Verslai[i][EnX] = pos[0];
  341.     Verslai[i][EnY] = pos[1];
  342.     Verslai[i][EnZ] = pos[2];
  343.     Verslai[i][InterjeroNr] = interjeras;
  344.     Verslai[i][Kaina] = kaina;
  345.     Verslai[i][PelnasH] = pelnas;
  346.     format(query,sizeof(query),"INSERT INTO `verslai` (EnX,EnY,EnZ,InterjeroNr,Kaina,PelnasH)VALUES(%f,%f,%f,%d,%d,%d)",
  347.     pos[0],pos[1],pos[2],interjeras,kaina,pelnas); // formatuojame užklausą: įašyti duomenis į lentelę "verslai"
  348.     mysql_tquery(Db,query,"OnPridejusVersla","i",i); // Išsiunčiame užklausą, ir jai gryžus nurodome iškviesti funkciją "OnPridejusVersla"
  349.     format(str,sizeof(str),"Verslas parduodamas\nKaina:%d\nValandos pelnas:%d",Verslai[i][Kaina],Verslai[i][PelnasH]);
  350.     Verslai[i][Label] = Create3DTextLabel(str,VERSLU_SPALVA,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ],25,0,1);
  351.     return 1;
  352. }
  353.  
  354. forward OnPridejusVersla(index);
  355. public OnPridejusVersla(index)
  356. {
  357.     Verslai[index][Id] = cache_insert_id(); // Ši funkcija gražina sekantį "Auto incremented" stulpelio skaičių.
  358.      
  359.     //Atliekame tuos pačius veiksmus kaip kraunant, todėl jų nekomentuosiu.
  360.     //Na gerai, tik pagrindinius dalykus
  361.     Verslai[index][Ormid] = orm_create("verslai"); // Sukuriame ryšį su lentele "verslai"
  362.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][Id],"Id");
  363.     orm_setkey(Verslai[index][Ormid],"Id"); // Nustatome kad eilutes skirsime pagal stulpelį "Id"
  364.     orm_addvar_string(Verslai[index][Ormid],Verslai[index][Savininkas],MAX_PLAYER_NAME,"Savininkas");
  365.     orm_addvar_string(Verslai[index][Ormid],Verslai[index][Pavadinimas],101,"Pavadinimas");
  366.     orm_addvar_float(Verslai[index][Ormid],Verslai[index][EnX],"EnX");
  367.     orm_addvar_float(Verslai[index][Ormid],Verslai[index][EnY],"EnY");
  368.     orm_addvar_float(Verslai[index][Ormid],Verslai[index][EnZ],"EnZ");
  369.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][InterjeroNr],"InterjeroNr");
  370.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][Kaina],"Kaina");
  371.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][PelnasH],"PelnasH");
  372.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][Pelnas],"Pelnas");
  373.     orm_addvar_int(Verslai[index][Ormid],Verslai[index][Locked],"Locked");
  374.     return 1;
  375. }
  376.  
  377. //Funkcija suranda laisvą "Verslai" masyvo dalį naujiems įrašams.
  378. stock GetFreeVersloIndex()
  379. {
  380.     for(new i; i < MAX_VERSLAI; i++)
  381.     {
  382.         if(Verslai[i][Id] == 0) return i; // Jeigu Id yra nulis (ko naudojamoje dalyje būti negali) gražiname jį.
  383.     }
  384.     return -1;
  385. }
  386.  
  387.  
  388. forward VersluPelnas();
  389. public VersluPelnas()
  390. {
  391.     for(new i; i < MAX_VERSLAI; i++)
  392.     {
  393.         if(Verslai[i][Id] != 0) continue;
  394.         Verslai[i][Pelnas] += Verslai[i][PelnasH]; // Prideda pelną
  395.         orm_update(Verslai[i][Ormid]); // Išsaugo viską į duomenų bazę
  396.     }
  397. }
  398.  
  399. /*
  400.     CREATE TABLE IF NOT EXISTS `verslai` (
  401.     `Id` int(11) NOT NULL AUTO_INCREMENT,
  402.     `Savininkas` varchar(24) NOT NULL,
  403.     `Pavadinimas` varchar(101) NOT NULL,
  404.     `EnX` float NOT NULL,
  405.     `EnY` float NOT NULL,
  406.     `EnZ` float NOT NULL,
  407.     `InterjeroNr` tinyint(4) NOT NULL,
  408.     `Kaina` int(11) NOT NULL,
  409.     `PelnasH` int(11) NOT NULL,
  410.     `Pelnas` int(11) NOT NULL,
  411.     `Locked` tinyint(4) NOT NULL,
  412.     PRIMARY KEY (`Id`)
  413.     ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  414. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement