Guest User

PORTAL system (McLuhan) for pawno ru

a guest
Aug 6th, 2013
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.93 KB | None | 0 0
  1. /*
  2. ========== Translate by Google ==========
  3. Developer: McLuhan
  4.  
  5. PORTAL system (enter / exit) - MySQL R8 r32
  6.  
  7. To create a portal (enter / exit), you first need to install the entry point command / makepickupen
  8. Then you need to set the output point, the command / makepickupex
  9. Then you need to set parameters portal (only then it will be created), it is a team / makepickupend
  10. / makepickupend [0 - no, 1 - enter, 2 - exit] [3D Text] [virtual world output]
  11. 1 argument is set, the input or output it, or not to write anything (because of the 3D text is written, the input is or output)
  12. 2 argument: enter the name of a portal that is where teleport portal (instead of spaces to use "_", then the system changes them to spaces)
  13. 3 argument: ID introduce the virtual world, which is established by teleporting.
  14.  
  15. Note: When writing text to 3D instead of spaces to use "_"
  16.  
  17. portal - http://imgdepo.ru/show/4490045
  18. */
  19.  
  20. #include <a_samp>
  21. main();
  22. #include <sscanf2>
  23. #include <YSI\y_commands>
  24. #include <a_mysql>
  25. #include <streamer>
  26. #include <foreach>
  27.  
  28. #define m_host " " // write in
  29. #define m_user " " // write in
  30. #define m_base " " // write in
  31. #define m_pass " " // write in
  32. #define MTN    (-1)
  33. #define table_pickups   "pickups"
  34. #define SPVI        SetPVarInt
  35. #define GPVI        GetPVarInt
  36. #define SPVF        SetPVarFloat
  37. #define GPVF        GetPVarFloat
  38. #define SCM         SendClientMessage
  39. #define cWhite      0xffffffaa
  40. #define cYellow     0xffff00aa
  41. #define ccWhite     "{ffffff}"
  42. #define MSGUSE      "{75a3ff}[Use] {ffffff}"
  43. #define MSGPERF     "{01dfa5}[Achieved] {ffffff}"
  44. #define MSGHELP     "{ffcc33}[Help] {ffffff}"
  45. #define MSGERROR    "{cc0000}[Error] {ffffff}"
  46. #define MAX_PICKUP  100 // max value - portal
  47.  
  48. enum pickupsEnum { Float: pickupPos[3], Float: tpPos[4], pickupVw, tpVw, pickupInt, tpInt, pickup, Text3D: text3D, pType };
  49. new
  50.     allpickups = 0,
  51.     pickupText[MAX_PICKUP][50],
  52.     pInfo[MAX_PICKUP][pickupsEnum], // 100
  53.     cmID,
  54.     cmdstr[144],
  55.     PLN[MAX_PLAYERS][MAX_PLAYER_NAME];
  56.  
  57. public OnFilterScriptInit()
  58. {
  59.     mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG, LOG_TYPE_TEXT);
  60.     cmID = mysql_connect(m_host, m_user, m_base, m_pass);
  61.     mysql_function_query(cmID, "SET NAMES cp1251;", false, "", "");
  62.     mysql_function_query(cmID, "SET SESSION character_set_server = cp1251;", false, "", "");
  63.     new query[31+1];
  64.     format(query, sizeof query, "SELECT * FROM `"table_pickups"`"), mysql_function_query(cmID, query, true, "mysqlquery_loadPickups", "");
  65.     return 1;
  66. }
  67.  
  68. public OnFilterScriptExit()
  69. {
  70.     mysql_close(cmID);
  71.     return 1;
  72. }
  73.  
  74. public OnPlayerConnect(playerid)
  75. {
  76.     GetPlayerName(playerid, PLN[playerid], MAX_PLAYER_NAME);
  77.     return 1;
  78. }
  79.  
  80. public OnPlayerDisconnect(playerid, reason)
  81. {
  82.     return 1;
  83. }
  84.  
  85. public OnPlayerPickUpDynamicPickup(playerid, pickupid)
  86. {
  87.     for(new i = 0; i < allpickups; i++)
  88.     {
  89.         if(pickupid == pInfo[i][pickup])
  90.         {
  91.             SetPlayerPos(playerid, pInfo[i][tpPos][0], pInfo[i][tpPos][1], pInfo[i][tpPos][2]), SetPlayerFacingAngle(playerid, pInfo[i][tpPos][3]);
  92.             SetPlayerVirtualWorld(playerid, pInfo[i][tpVw]), SetPlayerInterior(playerid, pInfo[i][tpInt]), SetCameraBehindPlayer(playerid);
  93.         }
  94.     }
  95.     return 1;
  96. }
  97.  
  98. public OnPlayerCommandText(playerid, cmdtext[])
  99. {
  100.     return 1;
  101. }
  102.  
  103. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  104. {
  105.     return 1;
  106. }
  107.  
  108. forward mysqlquery_loadPickups();
  109. public mysqlquery_loadPickups()
  110. {
  111.     new rowsfield[2];
  112.     cache_get_data(rowsfield[0], rowsfield[1]);
  113.     if(rowsfield[0])
  114.     {
  115.         for(new i = 0; i < rowsfield[0]; i++)
  116.         {
  117.             new _pickupPos[100], _tpPos[111], _text[1+34+50+37];
  118.             cache_get_field_content(i, "pickupPos", _pickupPos, cmID);
  119.             cache_get_field_content(i, "tpPos", _tpPos, cmID);
  120.             sscanf(_pickupPos, "p<,>fff", pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2]);
  121.             sscanf(_tpPos, "p<,>ffff", pInfo[allpickups][tpPos][0], pInfo[allpickups][tpPos][1], pInfo[allpickups][tpPos][2], pInfo[allpickups][tpPos][3]);
  122.             pInfo[allpickups][pickupVw] = cache_get_field_content_int(i, "pickupVw", cmID);
  123.             pInfo[allpickups][tpVw] = cache_get_field_content_int(i, "tpVw", cmID);
  124.             pInfo[allpickups][pickupInt] = cache_get_field_content_int(i, "pickupInt", cmID);
  125.             pInfo[allpickups][tpInt] = cache_get_field_content_int(i, "tpInt", cmID);
  126.             pInfo[allpickups][pType] = cache_get_field_content_int(i, "type", cmID);
  127.             new _type[37+1];
  128.             if(pInfo[allpickups][pType] == 1) _type = "{0b615e}>> {ceecf5}Enter {0b615e}<<\n";
  129.             else if(pInfo[allpickups][pType] == 2) _type = "{0b615e}>> {ceecf5}Exit {0b615e}<<\n";
  130.             else _type = " ";
  131.             cache_get_field_content(i, "text", pickupText[allpickups], cmID), format(_text, sizeof _text, "%s"ccWhite"[ {0489b1}%s "ccWhite"]", _type, pickupText[allpickups]);
  132.             pInfo[allpickups][pickup] = CreateDynamicPickup(19134, 23, pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2], pInfo[allpickups][pickupVw], pInfo[allpickups][pickupInt], -1, 40.0);
  133.             pInfo[allpickups][text3D] = CreateDynamic3DTextLabel(_text, cWhite, pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2]+0.1, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, pInfo[allpickups][pickupVw], pInfo[allpickups][pickupInt], -1, 20.0);
  134.             allpickups++;
  135.         }
  136.     }
  137.     printf("~ Load Pickups [ %i ]: loaded.", allpickups);
  138.     return 1;
  139. }
  140.  
  141. stock SCMADM(adml, string[])
  142. {
  143.     new outstring[144];
  144.     foreach(new i : Player) if(GPVI(i, "pld_admin") >= adml) format(outstring, sizeof outstring, "[ADMMSG] "ccWhite"%s", string), SCM(i, cYellow, outstring);
  145.     // GPVI(i, "pld_admin") - replaced by a PVar/solid admin level playerа
  146.     return 1;
  147. }
  148.  
  149. YCMD:makepickupen(playerid, params[], help)
  150. {
  151.     // if: administrator if you
  152.     new Float: pos[3];
  153.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  154.     SPVI(playerid, "makepickup_pickupInt", GetPlayerInterior(playerid)), SPVI(playerid, "makepickup_pickupVw", GetPlayerVirtualWorld(playerid));
  155.     SPVI(playerid, "makepickup_step", 1), SPVF(playerid, "makepickupen_x", pos[0]), SPVF(playerid, "makepickupen_y", pos[1]), SPVF(playerid, "makepickupen_z", pos[2]);
  156.     SCM(playerid, -1, ""MSGPERF"You have specified the location of the coordinate pickup.");
  157.     SCM(playerid, -1, ""MSGHELP"To specify an end point teleport, enter / makepickupex.");
  158.     return 1;
  159. }
  160.  
  161. YCMD:makepickupex(playerid, params[], help)
  162. {
  163.     // if: administrator if you
  164.     if(GPVI(playerid, "makepickup_step") < 1) return SCM(playerid, -1, ""MSGERROR"To indicate the end point teleport, you need to pass the first stage of creation.");
  165.     new Float: pos[4];
  166.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]), GetPlayerFacingAngle(playerid, pos[3]);
  167.     SPVI(playerid, "makepickup_tpInt", GetPlayerInterior(playerid));
  168.     SPVI(playerid, "makepickup_step", 2), SPVF(playerid, "makepickupex_x", pos[0]), SPVF(playerid, "makepickupex_y", pos[1]), SPVF(playerid, "makepickupex_z", pos[2]), SPVF(playerid, "makepickupex_a", pos[3]);
  169.     SCM(playerid, -1, ""MSGPERF"You specified end point of teleporting.");
  170.     SCM(playerid, -1, ""MSGHELP"To complete the creation of a pickup truck, enter / makepickupend.");
  171.     return 1;
  172. }
  173.  
  174. YCMD:makepickupend(playerid, params[], help)
  175. {
  176.     // if: administrator if you
  177.     if(GPVI(playerid, "makepickup_step") < 2) return SCM(playerid, -1, ""MSGERROR"To complete the creation of a pickup truck, you need to go through the second stage of creation.");
  178.     new _3dtext[50];
  179.     if(sscanf(params, "is[50]i", params[0], _3dtext, params[2])) return SCM(playerid, -1, ""MSGUSE"/makepickupend [0 - none, 1 - enter, 2 - exit] [3D text] [virtual world output]");
  180.     for(new i; i != strlen(_3dtext); i++) if(_3dtext[i] == '_') _3dtext[i] = ' ';
  181.     pInfo[allpickups][pickupPos][0] = GetPVarFloat(playerid, "makepickupen_x"), pInfo[allpickups][pickupPos][1] = GetPVarFloat(playerid, "makepickupen_y"), pInfo[allpickups][pickupPos][2] = GetPVarFloat(playerid, "makepickupen_z");
  182.     pInfo[allpickups][tpPos][0] = GetPVarFloat(playerid, "makepickupex_x"), pInfo[allpickups][tpPos][1] = GetPVarFloat(playerid, "makepickupex_y"), pInfo[allpickups][tpPos][2] = GetPVarFloat(playerid, "makepickupex_z"), pInfo[allpickups][tpPos][3] = GetPVarFloat(playerid, "makepickupex_a");
  183.     pInfo[allpickups][pickupVw] = GPVI(playerid, "makepickup_pickupVw"), pInfo[allpickups][tpVw] = params[2];
  184.     pInfo[allpickups][pickupInt] = GPVI(playerid, "makepickup_pickupInt"), pInfo[allpickups][tpInt] = GPVI(playerid, "makepickup_tpInt");
  185.     pInfo[allpickups][pType] = params[0];
  186.     new _text[1+34+50+37];
  187.     new _type[37+1];
  188.     if(pInfo[allpickups][pType] == 1) _type = "{0b615e}>> {ceecf5}Enter {0b615e}<<\n";
  189.     else if(pInfo[allpickups][pType] == 2) _type = "{0b615e}>> {ceecf5}Exit {0b615e}<<\n";
  190.     else _type = " ";
  191.     format(_text, sizeof _text, "%s"ccWhite"[ {0489b1}%s "ccWhite"]", _type, _3dtext);
  192.     pickupText[allpickups] = _3dtext;
  193.     pInfo[allpickups][pickup] = CreateDynamicPickup(19134, 23, pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2], pInfo[allpickups][pickupVw], pInfo[allpickups][pickupInt], -1, 40.0);
  194.     pInfo[allpickups][text3D] = CreateDynamic3DTextLabel(_text, cWhite, pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2]+1, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, pInfo[allpickups][pickupVw], pInfo[allpickups][pickupInt], -1, 20.0);
  195.     format(cmdstr, sizeof cmdstr, "Administrator (%i) %s created the pick-up (enter OR exit). (\"%s\")", playerid, PLN[playerid], _3dtext), SCMADM(1, cmdstr);
  196.     new query[1+159+100+100+11+11+11+11+50+15];
  197.     format(query, sizeof query, "INSERT INTO `"table_pickups"` (`pickupPos`, `tpPos`, `pickupVw`, `tpVw`, `pickupInt`, `tpInt`, `text`, `type`) VALUES ('%f,%f,%f', '%f,%f,%f,%f', '%i', '%i', '%i', '%i', '%s', '%i')"
  198.     , pInfo[allpickups][pickupPos][0], pInfo[allpickups][pickupPos][1], pInfo[allpickups][pickupPos][2], pInfo[allpickups][tpPos][0], pInfo[allpickups][tpPos][1], pInfo[allpickups][tpPos][2], pInfo[allpickups][tpPos][3], pInfo[allpickups][pickupVw], pInfo[allpickups][tpVw], pInfo[allpickups][pickupInt], pInfo[allpickups][tpInt], pickupText[allpickups], pInfo[allpickups][pType]);
  199.     mysql_function_query(cmID, query, false, "", "");
  200.     allpickups++;
  201.     SPVI(playerid, "makepickup_step", 0);
  202.     return 1;
  203. }
  204.  
  205. YCMD:gotopickup(playerid, params[], help)
  206. {
  207.     // if: administrator if you
  208.     if(sscanf(params, "i", params[0])) return format(cmdstr, sizeof cmdstr, ""MSGUSE"/gotopickup [portal number] (0-%i)", allpickups-1), SCM(playerid, -1, cmdstr);
  209.     if(params[0] < 0 || params[0] > allpickups-1) return format(cmdstr, sizeof cmdstr, ""MSGERROR"Number pick-up must be within 0-%i.", allpickups-1), SCM(playerid, -1, cmdstr);
  210.     SetPlayerPos(playerid, pInfo[params[0]][pickupPos][0], pInfo[params[0]][pickupPos][1], pInfo[params[0]][pickupPos][2]);
  211.     SetPlayerInterior(playerid, pInfo[params[0]][pickupInt]), SetPlayerVirtualWorld(playerid, pInfo[params[0]][pickupVw]);
  212.     format(cmdstr, sizeof cmdstr, ""MSGPERF"You are teleported to the portal (№%i), \"%s\".", params[0], pickupText[params[0]]), SCM(playerid, -1, cmdstr);
  213.     return 1;
  214. }
Advertisement
Add Comment
Please, Sign In to add comment