Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #if defined FILTERSCRIPT
- #define MAX_VERSLAI 500 // Maksimalus verslu skaicius, keiskit pagal poreikius
- #define VERSLU_SPALVA 0x00FF00FF //Tai nera butinybe, tai tik spalva kuria naudosiu visoms žinutems bei label.
- #define DIALOG_ACCEPT_VERSLA 5154 // Tai GUI lenteles ID(dialogid). Pas jus neturetu buti lenteles su tokiu ID, jei yra - pakeiskit ši.
- enum v_info {
- ORM:Ormid,
- Id,
- Savininkas[MAX_PLAYER_NAME],
- Pavadinimas[101],
- Float:EnX,
- Float:EnY,
- Float:EnZ,
- InterjeroNr,
- Kaina,
- PelnasH,
- Pelnas,
- Locked,
- Text3D:Label
- };
- new Verslai[MAX_VERSLAI][v_info]; //Masyvas kuriame laikysime informacija veikimo metu
- new i; i < MAX_VERSLAI; i++)
- enum interior_info {
- Float:x,
- Float:y,
- Float:z,
- Int
- };
- // Tai antrasis masyvas skirtas interjerams
- // Pirmieji trys skaiciai yra iejimo koordinates, o ketvirtasis tikrasis interjero ID
- //Galite ju pridet neribota skaiciu
- static const Interiors[][interior_info] = {
- {-25.8844,-185.8689,1003.5499,17}, // 24/7 parduotves interjeras
- {2233.8032,1712.2303,1011.7632,1} // Caligula kazino interjeras
- };
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Blank Filterscript by your name here");
- print("--------------------------------------\n");
- return 1;
- }
- #else
- #endif
- public OnGameModeInit()
- {
- // Don't use these lines if it's a filterscript
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- SetTimer("VersluPelnas",60*60*1000,true);
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/mycommand", cmdtext, true, 10) == 0)
- {
- // Do something here
- return 1;
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if((newkeys & KEY_SECONDARY_ATTACK) && !(oldkeys & KEY_SECONDARY_ATTACK)) // Patikriname ar žaidejas paspaude "KEY_SECONDARY_ATTACK", tai yra ENTER mygtukas. Galite keisti
- {
- for(new i; i < MAX_VERSLAI; i++)
- {
- if(Verslai[i]][Id] == 0) continue; // Jeigu tai tušcia verslo masyvo dalis, praleidžiame koda apacioje ,grižtame prie ciklo.
- if(IsPlayerInRangeOfPoint(playerid,5.0,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ])) // Jeigu žaidejas yra prie verslo iejimo
- {
- if(IsPlayerInAnyVehicle(playerid)) return 0; // Jeigu žaidejas transporto priemoneje, jam ieiti neleisime.
- if(Verslai[i][Locked] == 1) //Jei užrakinta
- {
- SendClientMessage(playerid,VERSLU_SPALVA,"Verslas užrakintas,pabandykite veliau");
- return 0;
- }
- // Dabar ir naudosime masyva "Interiors". Placiau bus po kodu.
- SetPlayerInterior(playerid,Interiors[Verslai[i][InterjeroNr]][Int]); //Nustatome žaidejo interjera
- SetPlayerPos(playerid,Interiors[Verslai[i][InterjeroNr]][x],Interiors[Verslai[i][InterjeroNr]][y],Interiors[Verslai[i][InterjeroNr]][z]);
- SetPlayerVirtualWorld(playerid,Verslai[i][Id]); // Nustatome virtualuuji pasauli i unikalu tam verslui skaiciu
- return 0;
- }
- if(GetPlayerVirtualWorld(playerid) == Verslai[i][Id]) // Jeigu žaidejo virtualusis pasaulis lygus verslo ID. (Pora eiluciu i viršu tai nustatome)
- {
- if(IsPlayerInRangeOfPoint(playerid,5.0,Interiors[Verslai[i][InterjeroNr]][x],Interiors[Verslai[i][InterjeroNr]][y],Interiors[Verslai[i][InterjeroNr]][z])) // Jeigu žaidejas yra prie išejimo
- {
- if(Verslai[i][Locked] == 1) //Jei užrakinta
- {
- SendClientMessage(playerid,VERSLU_SPALVA,"Verslas užrakintas");
- return 0;
- }
- SetPlayerInterior(playerid,0);
- SetPlayerPos(playerid,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ]);
- SetPlayerVirtualWorld(playerid,0);
- return 0;
- }
- }
- }
- }
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_ACCEPT_VERSLA) // Jeigu tai lentele kuria parodeme komandoje
- {
- if(response) // Jeigu paspausta mygtukas "Pirkti"
- {
- if(GetPVarInt(playerid,"VersloKaina") < GetPlayerMoney(playerid)) SendClientMessage(playerid,VERSLU_SPALVA,"Jums neuztenka pinigu"); // Jeigu žaidejui neužtenka pinigu
- else
- {
- new name[MAX_PLAYER_NAME],index = GetPVarInt(playerid,"VersloIndeksas"),str[128];
- GetPlayerName(playerid,name,sizeof(name));
- format(Verslai[index][Savininkas],24,name); // Perrašome savininko varda
- format(str,sizeof(str),"%s\nSavininkas:%s",Verslai[index][Pavadinimas],Verslai[index][Savininkas]);
- Update3DTextLabelText(Verslai[index][Label],VERSLU_SPALVA,str); //Atnaujinama teksto etikete(3D Text Label)
- format(str,sizeof(str),"%s nupirko jusu versla uz %d",GetPVarInt(playerid,"KasSiuloVersla"),GetPVarInt(playerid,"VersloKaina"));
- SendClientMessage(GetPVarInt(playerid,"KasSiuloVersla"),VERSLU_SPALVA,str);
- }
- }
- //Ištriname žaidejo kintamuosius, nes kitaip jie liks atmintyje.
- DeletePVar(playerid,"KasSiuloVersla");
- DeletePVar(playerid,"VersloIndeksas");
- DeletePVar(playerid,"VersloKaina");
- return 1;
- }
- return 0;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- stock RakintiVersla(versloid,bool:status)
- {
- Verslai[versloid][Locked] = (status) ? (1):(0);
- orm_update(Verslai[versloid][Ormid]);
- return 1;
- }
- stock KrautiVerslus()
- {
- Db = mysql_connect("localhost","root","testas","");
- mysql_tquery(Db,"SELECT * FROM `verslai`","OnVerslaiLoad",""); //Išsiunciame užklausa i duomenu baze, ir nurodome kad grižus užklausa iškviestu funkcija "OnVerslaiLoad"
- return 1;
- }
- forward VersluPelnas();
- public VersluPelnas()
- {
- for(new i; i < MAX_VERSLAI; i++)
- {
- if(Verslai[i][Id] != 0) continue;
- Verslai[i][Pelnas] += Verslai[i][PelnasH]; // Prideda pelna
- orm_update(Verslai[i][Ormid]); // Išsaugo viska i duomenu baze
- }
- }
- forward OnVerslaiLoad();
- public OnVerslaiLoad()
- {
- new str[128];
- for(new i; i < cache_get_row_count(); i++) // cache_get_row_count reiškia eiluciu skaiciu
- {
- Verslai[i][Ormid] = orm_create("verslai"); // Sukuriame orm ryši su verslu lentele
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Id],"Id"); //Pridedame stulpeli "id" prie ryšio
- orm_setkey(Verslai[i][Ormid],"Id"); // Nustatome kad eilutes duomenu bazeje bus skiriamos pagal ši sulpeli
- orm_addvar_string(Verslai[i][Ormid],Verslai[i][Savininkas],MAX_PLAYER_NAME,"Savininkas"); // Pridedame stulpeli "savininkas" prie ryšio
- orm_addvar_string(Verslai[i][Ormid],Verslai[i][Pavadinimas],101,"Pavadinimas");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnX],"EnX");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnY],"EnY");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnZ],"EnZ");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][InterjeroNr],"InterjeroNr");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Kaina],"Kaina");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][PelnasH],"PelnasH");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Pelnas],"Pelnas");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Locked],"Locked");
- //Eilutes prie šia neturi komentaru kadangi veiksmas kartojasi. Dvi eilutes yra pakomentuotos
- orm_apply_cache(Verslai[i][Ormid],i); // Tai užkraus duomenis i kintamuosius susietus višuje.
- if(isnull(Verslai[i][Savininkas])) format(str,sizeof(str),"Verslas parduodamas\nKaina:%d\nValandos pelnas:%d",
- Verslai[i][Kaina],Verslai[i][PelnasH]);
- else format(str,sizeof(str),"%s\nSavininkas:%s",Verslai[i][Pavadinimas],Verslai[i][Savininkas]);
- //Kodas viršuje nustatys ar verslas turi savininka ar ne, atitinkamai pagal tai suformatuos žinute teksto etiketei(3DTextLabel)
- Verslai[i][Label] = Create3DTextLabel(str,VERSLU_SPALVA,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ],25.0,0,1);//Sukuriame mineta etikete. Parametras po Z koordinates reiškia atsuma kuriuo bus matoma etikete
- }
- return 1;
- }
- //Funkcija tikrins ar žaidejas yra prie verslo iejimo.
- stock IsPlayerInRangeOfVerslas(playerid,Float:distance=5.0) // Antras parametras nebutinas, jei jo nebus vietoj jo naudosime skaiciu 5.0
- {
- for(new i; i < MAX_VERSLAI; i++)
- {
- if(Verslai[i][Id] == 0) continue;
- if(IsPlayerInRangeOfPoint(playerid,distance,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ])) return i; // Jeigu žaidejas yra nurodytu atstumu prie verslo iejimo gražinsime masyvo indeksa
- }
- return -1; // Jeigu žaidejas nera prie jokio iejimo gražiname -1, kas yra netinkamas masyvo indeksas.
- }
- //Funkcija patikrins ar žaidejas yra verslo savininkas.
- //Atkreipkite demesi jog duodame ne verslo unikalu Id, o verslo masyvo indeksa.
- stock VersloSavininkas(playerid,vid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- if(!isnull(Verslai[vid][Savininkas]) && !strcmp(Verslai[vid][Savininkas],name)) return true; // Jeigu masyvo dalis "savininkas" ne tušcias ir sutampa su žaidejo vardu, reiškia jis savininkas
- return false;
- }
- //Komandos
- CMD:rakintiversla(playerid)
- {
- new verslas = IsPlayerInRangeOfVerslas(playerid,5.0);
- if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite buti prie verslo iejimo");
- if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jusu verslas!");
- if(Verslai[verslas][Locked] == 0) // Jei atrakinta
- {
- RakintiVersla(verslas,true);
- SendClientMessage(playerid,VERSLU_SPALVA,"Verslas uzrakintas");
- return 1;
- }
- if(Verslai[verslas][Locked] == 1) //Jei užrakinta
- {
- RakintiVersla(verslas,false);
- SendClientMessage(playerid,VERSLU_SPALVA,"Verslas atrakintas");
- return 1;
- }
- return 1;
- }
- CMD:keistipavadinima(playerid,params[])
- {
- new verslas = IsPlayerInRangeOfVerslas(playerid,5.0),pav[101];
- if(verslas == -1) return SendClientMessage(playerid,VERSLU_SPALVA,"Turite buti prie verslo iejimo");
- if(!VersloSavininkas(playerid,verslas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Tai ne jusu verslas!");
- if(sscanf(params,"s[101]",pav)) return SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /keistipavadinima [Naujas pavadinimas]");
- strdel(Verslai[verslas][Pavadinimas],0,101); //Ištriname senaji pavadinima
- strins(Verslai[verslas][Pavadinimas],pav,0,101); // Irašome nauja pavadinima
- format(pav,sizeof(pav),"%s\nSavininkas:%s",Verslai[verslas][Pavadinimas],Verslai[verslas][Savininkas]);
- Update3DTextLabelText(Verslai[verslas][Label],VERSLU_SPALVA,pav); //Atnaujiname teksto etikte(3DTextLabel)
- orm_update(Verslai[verslas][Ormid]);//Atnaujiname duomenis duomenu bazeje.
- return 1;
- }
- CMD:pridetiversla(playerid,params[])
- {
- new interjeras,kaina,pelnas,Float:pos[3],query[150];
- if(sscanf(params,"ddd",interjeras,kaina,pelnas)) return SendClientMessage(playerid,VERSLU_SPALVA,"Naudojimas /pridetiversla [InterjeroNr] [Kaina] [Valandos pelnas]");
- if(interjeras > sizeof(Interiors) || interjeras < 0) return SendClientMessage(playerid,VERSLU_SPALVA,"Tokio interjero nera!"); // Jeigu masyve interjero su nurodytu numeriu nera
- GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
- format(query,sizeof(query),"INSERT INTO `verslai` (EnX,EnY,EnZ,InterjeroNr,Kaina,PelnasH)VALUES(%f,%f,%f,%d,%d,%d)",
- pos[0],pos[1],pos[2],interjeras,kaina,pelnas); // formatuojame užklausa: iašyti duomenis i lentele "verslai"
- mysql_tquery(Db,query,"OnPridejusVersla",""); // Išsiunciame užklausa, ir jai gryžus nurodome iškviesti funkcija "OnPridejusVersla"
- return 1;
- }
- forward OnPridejusVersla();
- public OnPridejusVersla()
- {
- new i = GetFreeVersloIndex(),str[100]; //Ka daro funkcija "GetFreeVersloIndex" žiurekite žemiau
- Verslai[i][Id] = cache_insert_id(); // Ši funkcija gražina sekanti "Auto incremented" stulpelio skaiciu.
- //Atliekame tuos pacius veiksmus kaip kraunant, todel ju nekomentuosiu.
- //Na gerai, tik pagrindinius dalykus
- Verslai[i][Ormid] = orm_create("verslai"); // Sukuriame ryši su lentele "verslai"
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Id],"Id");
- orm_setkey(Verslai[i][Ormid],"Id"); // Nustatome kad eilutes skirsime pagal stulpeli "Id"
- orm_addvar_string(Verslai[i][Ormid],Verslai[i][Savininkas],MAX_PLAYER_NAME,"Savininkas");
- orm_addvar_string(Verslai[i][Ormid],Verslai[i][Pavadinimas],101,"Pavadinimas");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnX],"EnX");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnY],"EnY");
- orm_addvar_float(Verslai[i][Ormid],Verslai[i][EnZ],"EnZ");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][InterjeroNr],"InterjeroNr");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Kaina],"Kaina");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][PelnasH],"PelnasH");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Pelnas],"Pelnas");
- orm_addvar_int(Verslai[i][Ormid],Verslai[i][Locked],"Locked");
- orm_apply_cache(Verslai[i][Ormid],i);//Užkrauname duomenis i nurodytas masyvo dalis.
- format(str,sizeof(str),"Verslas parduodamas\nKaina:%d\nValandos pelnas:%d",Verslai[i][Kaina],Verslai[i][PelnasH]);
- Verslai[i][Label] = Create3DTextLabel(str,VERSLU_SPALVA,Verslai[i][EnX],Verslai[i][EnY],Verslai[i][EnZ],25,0,1);
- return 1;
- }
- //Funkcija suranda laisva "Verslai" masyvo dali naujiems irašams.
- stock GetFreeVersloIndex()
- {
- for(new i; i < MAX_VERSLAI; i++)
- {
- if(Verslai[i][Id] == 0) return i; // Jeigu Id yra nulis (ko naudojamoje dalyje buti negali) gražiname ji.
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment