Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Dynamic pickups
- author B.A.Baracus
- date updated 2013-02-09
- edited version Hesse aka AXV
- version 1.0.0b
- */
- // Librares
- #include a_samp
- #include mysql
- #include zcmd
- #include sscanf
- // Settings MySQL
- #define SQL_HOST "hostname" // HOST
- #define SQL_USER "username" // USER
- #define SQL_PASSWORD "password" // PASS
- #define SQL_DB "datebase" // DB
- // Settings script
- #define DEBUG false // if errors please change to true, default value is false - no debug
- #define MAX_DYN_PIC (150) // Max. pickups
- #define TYPE_PIC 1318 // Type pickup
- // Variables
- enum e_Pickups {
- pid,
- pick,
- Float:pvector[3],
- Float:tpvector[4],
- pdesc[32]
- };
- enum e_PickCreating {
- Float:cvector[3],
- Float:ctpvector[4],
- #if DEBUG == true
- cdesc[80],
- #else
- cdesc[32],
- #endif
- bool:creating
- };
- new pickup[MAX_DYN_PIC][e_Pickups],
- pCreate[e_PickCreating],
- MySQL:handle
- ;
- // Callbacks
- public OnFilterScriptInit () {
- handle = mysql_init ();
- new connected = mysql_connect (SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DB, handle, 1);
- if (!connected) {
- print ("Nie można nawiazac polaczenia z serwerem MySQL.");
- return 0;
- }
- mysql_query ("create table if not exists tp_pickups ( \
- id int(11) not null auto_increment, \
- fX varchar(12) not null default '0.0', \
- fY varchar(12) not null default '0.0', \
- fZ varchar(8) not null default '0.0', \
- ftpX varchar(12) not null default '0.0', \
- ftpY varchar(12) not null default '0.0', \
- ftpZ varchar(8) not null default '0.0', \
- ftpA varchar(6) not null default '0.0', \
- pdesc varchar(32) not null default '0.0', \
- primary key (`id`) \
- ) engine = myisam default charset = latin1 auto_increment = 1;");
- #if DEBUG == true
- mysql_query ("alter table tp_pickups modify pdesc varchar(80) not null;");
- #endif
- print ("Nazwiazano polaczenie z serwerem MySQL.");
- loadPickups ();
- return 1;
- }
- public OnFilterScriptExit() return mysql_close (handle);
- public OnPlayerPickUpPickup (playerid, pickupid) {
- for (new i = 0; i < MAX_DYN_PIC; ++i) {
- if (pickupid == pickup[i][pick]) {
- SetPlayerPos (playerid, pickup[i][tpvector][0], pickup[i][tpvector][1], pickup[i][tpvector][2]);
- SetPlayerFacingAngle (playerid, pickup[i][tpvector][3]);
- break;
- }
- }
- }
- // Commands
- CMD:dodajtp (playerid, params[]) {
- if (!IsPlayerAdmin (playerid)) return SendClientMessage (playerid, 0xFF0000FF, "Brak uprawnień");
- if (countPickups () >= (MAX_DYN_PIC - 1)) return SendClientMessage (playerid, 0xFF0000FF, "Limit pickupów został już wyczerpany.");
- if (pCreate[creating]) return SendClientMessage (playerid, 0xFF0000FF, "Obecnie już ktoś jest w procesie dodawania pickupa");
- if (isnull (params)) return SendClientMessage (playerid, 0xFF0000FF, "Nie podano opisu!");
- if (!(3 <= strlen (params) <= 32)) return SendClientMessage (playerid, 0xFF0000FF, "Opis jest zbyt długi lub krótki.");
- mysql_real_escape_string (params, pCreate[cdesc]);
- GetPlayerPos (playerid, pCreate[cvector][0], pCreate[cvector][1], pCreate[cvector][2]);
- pCreate[creating] = true;
- return !SendClientMessage (playerid, 0xFF8000FF, "Okej, a teraz idź do miejsca gdzie ma teleportować gracza i wpisz: /zatwierdz.");
- }
- CMD:zatwierdz(playerid,params[]) {
- if (!IsPlayerAdmin (playerid)) return SendClientMessage (playerid, 0xFF0000FF, "Brak uprawnień");
- if (!pCreate[creating]) return SendClientMessage (playerid, 0xFF0000FF, "Musisz wrocić do poprzedniego kroku: /dodajtp.");
- new buf[200];
- GetPlayerPos (playerid, pCreate[ctpvector][0], pCreate[ctpvector][1], pCreate[ctpvector][2]), GetPlayerFacingAngle (playerid, pCreate[ctpvector][3]);
- new id = searchFreeSlot ();
- pickup[id][pvector][0] = pCreate[cvector][0]; // x
- pickup[id][pvector][1] = pCreate[cvector][1]; // y
- pickup[id][pvector][2] = pCreate[cvector][2]; // z
- pickup[id][tpvector][0] = pCreate[ctpvector][0]; // tp x
- pickup[id][tpvector][1] = pCreate[ctpvector][1]; // tp y
- pickup[id][tpvector][2] = pCreate[ctpvector][2]; // tp z
- pickup[id][tpvector][3] = pCreate[ctpvector][3]; // tp rot
- format(buf, sizeof (buf), "insert into tp_pickups set fX = '%4.3f', fY = '%4.3f', fZ = '%3.2f', ftpX = '%4.3f', ftpY = '%4.3f', ftpZ = '%3.2f', ftpA = '%2.2f', pdesc = '%s';",
- pickup[id][pvector][0],
- pickup[id][pvector][1],
- pickup[id][pvector][2],
- pickup[id][tpvector][0],
- pickup[id][tpvector][1],
- pickup[id][tpvector][2],
- pickup[id][tpvector][3],
- pCreate[cdesc]);
- mysql_query (buf);
- #if DEBUG == true
- format (pCreate[cdesc], sizeof (pCreate[cdesc]), "%s (id: %d)\ntpX: %4.1f, tpY: %4.1f, tpZ: %4.1f", pCreate[cdesc], mysql_insert_id (), pickup[id][tpvector][0], pickup[id][tpvector][1], pickup[id][tpvector][2]);
- Create3DTextLabel (pCreate[cdesc], 0x008080FF, pickup[id][pvector][0], pickup[id][pvector][1], pickup[id][pvector][2] + 0.75, 100.0, 0, 0);
- #else
- Create3DTextLabel (pCreate[cdesc], 0x008080FF, pickup[id][pvector][0], pickup[id][pvector][1], pickup[id][pvector][2] + 0.75, 100.0, 0, 0);
- #endif
- pickup[id][pick] = CreatePickup (TYPE_PIC, 1, pickup[id][pvector][0], pickup[id][pvector][1], pickup[id][pvector][2]);
- format(buf, sizeof (buf), "Dodano pickup id: %d, opis: %d", mysql_insert_id (), pCreate[cdesc]);
- pCreate[creating] = false;
- return !SendClientMessage (playerid, 0x008000FF, buf);
- }
- searchFreeSlot () {
- for (new i = 0; i < MAX_DYN_PIC; ++i) {
- if (pickup[i][pid] < 0) return i;
- }
- return -1;
- }
- loadPickups () {
- new buf[200], desc[80], i = 0;
- mysql_query ("select fX, fY, fZ, ftpX, ftpY, ftpZ, ftpA, pdesc from tp_pickups limit #MAX_DYN_PIC");
- mysql_store_result ();
- while (mysql_fetch_row (buf, "|")) {
- #if DEBUG == true
- if (sscanf (buf, "p<|>fffffffs[80]",
- #else
- if (sscanf (buf, "p<|>fffffffs[32]",
- #endif
- pickup[i][pvector][0],
- pickup[i][pvector][1],
- pickup[i][pvector][2],
- pickup[i][tpvector][0],
- pickup[i][tpvector][1],
- pickup[i][tpvector][2],
- pickup[i][tpvector][3],
- desc)) continue;
- pickup[i][pick] = CreatePickup (TYPE_PIC, 1, pickup[i][pvector][0], pickup[i][pvector][1], pickup[i][pvector][2]);
- #if DEBUG == true
- format (desc, sizeof (desc), "%s (id: %d)\ntpX: %4.1f, tpY: %4.1f, tpZ: %4.1f", desc, i, pickup[i][tpvector][0], pickup[i][tpvector][1], pickup[i][tpvector][2]);
- Create3DTextLabel (desc, 0x008080FF, pickup[i][pvector][0], pickup[i][pvector][1], pickup[i][pvector][2] + 0.75, 100.0, 0, 0);
- #else
- Create3DTextLabel (desc, 0x008080FF, pickup[i][pvector][0], pickup[i][pvector][1], pickup[i][pvector][2] + 0.75, 100.0, 0, 0);
- #endif
- pickup[i][pid] = i;
- i++;
- }
- }
- countPickups () {
- mysql_query ("select count(*) from tp_pickups;");
- mysql_store_result ();
- new result = mysql_fetch_int ();
- mysql_free_result ();
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment