hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 13:47



Jelenlévő felhasználók

Jelenleg 322 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 320 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Player Spawn Utility - Fordítás
HozzászólásElküldve:2012.07.01. 17:00 
Offline
Minden6ó
Avatar

Csatlakozott:2011.01.19. 12:14
Hozzászólások:4294
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 289 alkalommal
Valaki le tudná fordítani még ma? FONTOS!
Kód:
  1. /*      =============================================

  2. *       - NAME:

  3. *         + Player Spawn Utility

  4. *

  5. *       - DESCRIPTION:

  6. *         + This plugin lets you easily add more player spawn points to any map at the position you are standing.

  7. *         + In the menu it will let you know how many spawns are recommended for your server size (# of slots).

  8. *         + After adding spawns you can save them and they will auto load on map start.

  9. *         + Use the sv_spawneditor cvar to see where other spawns are so you know where to add new ones.

  10. *

  11. *         + NOTE: I made this because Hawks spawn creater was making spawns in bad places (outside of the map).

  12. *

  13. *       - USAGE:

  14. *         + In your addons/amxmodx/configs directory make a new folder called "spawns".

  15. *         + Now go in your server and turn the "sv_spawneditor" to "1".

  16. *         + Restart the map. Now you will see where the current spawn points are.

  17. *         + Type "amx_spawnmenu" in the console to load the spawn editor menu.

  18. *         + Press "1" to add a Terrorist spawn, and "2" for a CT spawn. Press "3" to save spawns you made.

  19. *         + Now turn the "sv_spawneditor" cvar back to "0", restart the map.

  20. *

  21. *       - CREDITS:

  22. *         + Hawk552's Spawn Creater for ideas.

  23. *

  24. *       ---------------

  25. *       Admin Commands:

  26. *       ---------------

  27. *       - Type in console 'amx_spawnmenu' to show the spawn editor menu.

  28. *

  29. *       -------------

  30. *       Server cvars:

  31. *       -------------

  32. *       - sv_spawneditor <0/1>

  33. *        + Setting to 0 will turn the spawn editor off.

  34. *        + Setting to 1 will turn the spawn editor on (while on you can see all the spawn points).

  35. *      

  36. *       ----------

  37. *       Changelog:

  38. *       ----------

  39. *       Version 1.0 (02-03-2008)

  40. *       -- First version made and works.

  41. */

  42.  

  43. #include <amxmodx>

  44. #include <amxmisc>

  45. #include <fakemeta>

  46.  

  47. #define PLUGIN "Spawn Utility"

  48. #define VERSION "1.0"

  49. #define AUTHOR "hlstriker"

  50.  

  51. // Load variables

  52. new g_filename[256];

  53. new bool:g_customsCreated;

  54.  

  55. // Save variables

  56. new sTeams[64];

  57. new Float:sOrigins[64][3];

  58. new Float:sAngles[64][3];

  59. new sEntId;

  60.  

  61. // Regular variables

  62. new sv_spawneditor;

  63. new g_spawnMenu;

  64. new bool:g_hasSpawned[33];

  65. new g_maxPlayerSlots;

  66. new g_tSpawns;

  67. new g_ctSpawns;

  68. new Float:angle;

  69.  

  70. public plugin_init()

  71. {

  72.         register_plugin(PLUGIN, VERSION, AUTHOR);

  73.         g_maxPlayerSlots = get_maxplayers();

  74.         register_clcmd("amx_spawnmenu", "spawnMenu", ADMIN_RCON, "- the spawn utility menu");

  75.         register_event("ResetHUD", "hook_ResetHUD", "be");

  76. }

  77.  

  78. public plugin_precache()

  79. {

  80.         new confFolder[32];

  81.         get_mapname(g_filename, 255);

  82.         get_configsdir(confFolder, 31);

  83.         format(g_filename, 255, "%s/spawns/%s.ini", confFolder, g_filename);

  84.        

  85.         sv_spawneditor = register_cvar("sv_spawneditor", "0");

  86.         register_forward(FM_Spawn, "fwd_Spawn", 1);

  87. }

  88.  

  89. public client_authorized(id)

  90.         g_hasSpawned[id] = false;

  91.  

  92. public hook_ResetHUD(id)

  93. {

  94.         if(is_user_admin(id) && !g_hasSpawned[id])

  95.         {

  96.                 g_hasSpawned[id] = true;

  97.                

  98.                 if(g_maxPlayerSlots >= g_tSpawns * 2 || g_maxPlayerSlots >= g_tSpawns * 2)

  99.                 {

  100.                         static recT, recCT;

  101.                         recT = g_maxPlayerSlots / 2 - g_tSpawns + 3;

  102.                         recCT = g_maxPlayerSlots / 2 - g_ctSpawns + 3;

  103.                         client_print(id, print_chat, "WARNING: This map does not have enough spawns [%i T] [%i CT].", g_tSpawns, g_ctSpawns);

  104.                         client_print(id, print_chat, "WARNING: Notify the server owner to add a recommended of [%i T] and [%i CT] spawns.", recT, recCT);

  105.                 }

  106.         }

  107. }

  108.  

  109. public spawnMenu(id, level, cid)

  110. {

  111.         if(cmd_access(id, level, cid, 1))

  112.                 create_menu(id);

  113.        

  114.         return FMRES_HANDLED;

  115. }

  116.  

  117. public create_menu(id)

  118. {

  119.         static text[128], recT, recCT;

  120.         recT = g_maxPlayerSlots / 2 + 3;

  121.         recCT = g_maxPlayerSlots / 2 + 3;

  122.         format(text, 127, "Total Spawns:^n[%i T-Spawns]  [%i CT-Spawns]^n^nRecommended Spawns:^n[%i T-Spawns]  [%i CT-Spawns]", g_tSpawns, g_ctSpawns, recT, recCT);

  123.        

  124.         g_spawnMenu = menu_create(text, "spawnMenu_handle");

  125.        

  126.         menu_additem(g_spawnMenu, "Create T Spawn");

  127.         menu_additem(g_spawnMenu, "Create CT Spawn");

  128.         menu_additem(g_spawnMenu, "Save Created Spawns");

  129.        

  130.         menu_setprop(g_spawnMenu, MPROP_PERPAGE, 3);

  131.        

  132.         menu_display(id, g_spawnMenu, 0);

  133. }

  134.  

  135. public spawnMenu_handle(id, menu, key)

  136. {

  137.         // If they press the exit key, return

  138.         if(key == MENU_EXIT)

  139.                 return FMRES_HANDLED;

  140.        

  141.         switch(key)

  142.         {

  143.                 case 0:

  144.                 {

  145.                         // Key 1 - Create T Spawn

  146.                         sTeams[sEntId] = 1;

  147.                         pev(id, pev_origin, sOrigins[sEntId]);

  148.                         pev(id, pev_angles, sAngles[sEntId]);

  149.                         sAngles[sEntId][0] = angle;

  150.                         sOrigins[sEntId][2] += 9.0;

  151.                        

  152.                         new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_player_deathmatch"));

  153.                         engfunc(EngFunc_SetOrigin, ent, sOrigins[sEntId]);

  154.                         if(get_pcvar_num(sv_spawneditor) == 1)

  155.                                 engfunc(EngFunc_SetModel, ent, "models/player/terror/terror.mdl");

  156.                         set_pev(ent, pev_fixangle, 1);

  157.                         set_pev(ent, pev_angles, sAngles[sEntId]);

  158.                         set_pev(ent, pev_iuser1, 1);

  159.                        

  160.                         dllfunc(DLLFunc_Spawn, ent);

  161.                        

  162.                         sEntId +=1;

  163.                         g_tSpawns += 1;

  164.                        

  165.                         client_print(id, print_chat, "[Spawn Utility] You have created a T spawn [%i].", g_tSpawns);

  166.                 }

  167.                 case 1:

  168.                 {

  169.                         // Key 2 - Create CT Spawn

  170.                         sTeams[sEntId] = 2;

  171.                         pev(id, pev_origin, sOrigins[sEntId]);

  172.                         pev(id, pev_angles, sAngles[sEntId]);

  173.                         sAngles[sEntId][0] = angle;

  174.                         sOrigins[sEntId][2] += 9.0;

  175.                        

  176.                         new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_player_start"));

  177.                         engfunc(EngFunc_SetOrigin, ent, sOrigins[sEntId]);

  178.                         if(get_pcvar_num(sv_spawneditor) == 1)

  179.                                 engfunc(EngFunc_SetModel, ent, "models/player/vip/vip.mdl");

  180.                         set_pev(ent, pev_fixangle, 1);

  181.                         set_pev(ent, pev_angles, sAngles[sEntId]);

  182.                         set_pev(ent, pev_iuser1, 1);

  183.                        

  184.                         dllfunc(DLLFunc_Spawn, ent);

  185.                        

  186.                         sEntId +=1;

  187.                         g_ctSpawns += 1;

  188.                        

  189.                         client_print(id, print_chat, "[Spawn Utility] You have created a CT spawn [%i].", g_ctSpawns);

  190.                 }

  191.                 case 2:

  192.                 {

  193.                         // Key 3 - Save Spawns

  194.                         new text[3072], ln;

  195.                         ln = 0;

  196.                        

  197.                         for(new i=0; i<=sEntId; i++)

  198.                         {

  199.                                 if(sTeams[i] > 0)

  200.                                         ln += format(text[ln], 3071-ln, "%i^n%f^n%f^n%f^n%f^n%f^n%f^n", sTeams[i], sOrigins[i][0], sOrigins[i][1], sOrigins[i][2], sAngles[i][0], sAngles[i][1], sAngles[i][2]);

  201.                                 else break;

  202.                         }

  203.                        

  204.                         new filepointer;

  205.                         filepointer = fopen(g_filename, "w+");

  206.                         if(filepointer)

  207.                         {

  208.                                 fprintf(filepointer, text);

  209.                                 fclose(filepointer);

  210.                                

  211.                                 client_print(id, print_chat, "[Spawn Utility] You have saved the spawns, they will auto load from now on.");

  212.                         }

  213.                        

  214.                         return FMRES_HANDLED;

  215.                 }

  216.         }

  217.        

  218.         create_menu(id);

  219.        

  220.         return FMRES_HANDLED;

  221. }

  222.  

  223. public fwd_Spawn(entId)

  224. {

  225.         if(!pev_valid(entId))

  226.                 return FMRES_IGNORED;

  227.        

  228.         static className[64];

  229.         pev(entId, pev_classname, className, 63);

  230.        

  231.         if(equali(className, "info_player_start"))

  232.         {

  233.                 static Float:angles[3];

  234.                 pev(entId, pev_angles, angles);

  235.                 angle = angles[0];

  236.                

  237.                 if(get_pcvar_num(sv_spawneditor) == 1)

  238.                 {

  239.                         static Float:origin[3], Float:angles[3];

  240.                         pev(entId, pev_origin, origin);

  241.                         pev(entId, pev_angles, angles);

  242.                        

  243.                         new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

  244.                         engfunc(EngFunc_SetOrigin, ent, origin);

  245.                         engfunc(EngFunc_SetModel, ent, "models/player/vip/vip.mdl");

  246.                         engfunc(EngFunc_SetSize, ent, Float:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,36.0});

  247.                         set_pev(ent, pev_angles, angles);

  248.                         dllfunc(DLLFunc_Spawn, ent);

  249.                 }

  250.                

  251.                 g_ctSpawns += 1;

  252.         }

  253.         else if(equali(className, "info_player_deathmatch"))

  254.         {

  255.                 if(get_pcvar_num(sv_spawneditor) == 1)

  256.                 {

  257.                         static Float:origin[3], Float:angles[3];

  258.                         pev(entId, pev_origin, origin);

  259.                         pev(entId, pev_angles, angles);

  260.                        

  261.                         new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

  262.                         engfunc(EngFunc_SetOrigin, ent, origin);

  263.                         engfunc(EngFunc_SetModel, ent, "models/player/terror/terror.mdl");

  264.                         engfunc(EngFunc_SetSize, ent, Float:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,36.0});

  265.                         set_pev(ent, pev_angles, angles);

  266.                         dllfunc(DLLFunc_Spawn, ent);

  267.                 }

  268.                

  269.                 g_tSpawns += 1;

  270.         }

  271.        

  272.         if(!g_customsCreated)

  273.         {

  274.                 g_customsCreated = true;

  275.                 new cTeams[64], Float:cOrigins[64][3], Float:cAngles[64][3], entNum, i;

  276.                

  277.                 // Get all the custom spawns and save to arrays

  278.                 new file;

  279.                 file = fopen(g_filename, "r");

  280.                 if(file)

  281.                 {

  282.                         // File exists

  283.                         new data[3072], type;

  284.                         while(!feof(file))

  285.                         {

  286.                                 fgets(file, data, 3071);

  287.                                 switch(type)

  288.                                 {

  289.                                         case 0:

  290.                                         {

  291.                                                 // Load the team

  292.                                                 cTeams[entNum] = str_to_num(data);

  293.                                                 type = 1;

  294.                                         }

  295.                                         case 1:

  296.                                         {

  297.                                                 // Load Origin[0]

  298.                                                 cOrigins[entNum][0] = str_to_float(data);

  299.                                                 type = 2;

  300.                                         }

  301.                                         case 2:

  302.                                         {

  303.                                                 // Load Origin[1]

  304.                                                 cOrigins[entNum][1] = str_to_float(data);

  305.                                                 type = 3;

  306.                                         }

  307.                                         case 3:

  308.                                         {

  309.                                                 // Load Origin[2]

  310.                                                 cOrigins[entNum][2] = str_to_float(data);

  311.                                                 type = 4;

  312.                                         }

  313.                                         case 4:

  314.                                         {

  315.                                                 // Load Angles[0]

  316.                                                 cAngles[entNum][0] = str_to_float(data);

  317.                                                 type = 5;

  318.                                         }

  319.                                         case 5:

  320.                                         {

  321.                                                 // Load Angles[1]

  322.                                                 cAngles[entNum][1] = str_to_float(data);

  323.                                                 type = 6;

  324.                                         }

  325.                                         case 6:

  326.                                         {

  327.                                                 // Load Angles[2]

  328.                                                 cAngles[entNum][2] = str_to_float(data);

  329.                                                 type = 0;

  330.                                                 entNum += 1;

  331.                                         }

  332.                                 }

  333.                                 i++;

  334.                         }

  335.                         fclose(file);

  336.                 }

  337.                

  338.                 // Now load all the custom spawns from the arrays

  339.                 new cEnt;

  340.                 for(i=0; i<=entNum; i++)

  341.                 {

  342.                         if(cTeams[i] > 0)

  343.                         {

  344.                                 if(cTeams[i] == 1)

  345.                                 {

  346.                                         cEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_player_deathmatch"));

  347.                                         g_tSpawns += 1;

  348.                                 }

  349.                                 else if(cTeams[i] == 2)

  350.                                 {

  351.                                         cEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_player_start"));

  352.                                         g_ctSpawns += 1;

  353.                                 }

  354.                                 engfunc(EngFunc_SetOrigin, cEnt, cOrigins[i]);

  355.                                 if(get_pcvar_num(sv_spawneditor) == 1)

  356.                                 {

  357.                                         if(cTeams[i] == 1)

  358.                                                 engfunc(EngFunc_SetModel, cEnt, "models/player/terror/terror.mdl");

  359.                                         else if(cTeams[i] == 2)

  360.                                                 engfunc(EngFunc_SetModel, cEnt, "models/player/vip/vip.mdl");

  361.                                 }

  362.                                 set_pev(cEnt, pev_fixangle, 1);

  363.                                 set_pev(cEnt, pev_angles, cAngles[i]);

  364.                                 set_pev(cEnt, pev_iuser1, 1);

  365.                                

  366.                                 dllfunc(DLLFunc_Spawn, cEnt);

  367.                         }

  368.                         else break;

  369.                 }

  370.         }

  371.        

  372.         return FMRES_HANDLED;

  373. }

  374.  

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole