Менюшка)
| |
Tokami
|
Дата: Четверг, 23.01.2014, 20:46:27 | Сообщение # 1 |
|
Сообщений: 238
Репутация: 19 [ +/- ]
|
|
Вот мой типо новый плагин)) как сделать чтоб могли открыть только кт?) И как до делать всетаки аптечку исход аптечки по ниже Код #include <cstrike> #include <sdktools> #include <sdkhooks> #include <sourcemod>
#define HEALTHKIT_SOUND "items/medshot4.wav" #define HEALTHKIT_MODEL "models/items/healthkit.mdl"
public Plugin:myinfo = { name = "CTmenu", author = "Tokami", description = "CTmenu", url = "criminaljail.clan.su" }; public OnPluginStart() { RegConsoleCmd("sm_ct", test); }
public Action:test(client, args) { if (client > 0 && args < 1) ShowMyPanel(client); return Plugin_Handled; }
ShowMyPanel(client) { new Handle:panel = CreatePanel(); SetPanelTitle(panel, "Меню CT:\n \n"); DrawPanelItem(panel, "Аптечка"); DrawPanelItem(panel, "Разработка"); DrawPanelItem(panel, "Разработка"); DrawPanelItem(panel, "Разработка"); DrawPanelItem(panel, "Разработка"); DrawPanelText(panel, "\n "); DrawPanelItem(panel, "Выход"); SendPanelToClient(panel, client, Select_Panel, 0); CloseHandle(panel); ClientCommand(client, "playgamesound items/nvg_off.wav"); }
// Создания меню
public Select_Panel(Handle:panel, MenuAction:action, client, option) { if (action == MenuAction_Select) { PrintToChat(client, "Выбрана опция: %d", option); if (option < 5) ShowMyPanel(client); } } Аптечка Код #include <sourcemod> #include <sdktools> #include <sdkhooks>
#define VERSION "1.0"
#define TEAM_T 2 #define TEAM_CT 3
#define HEALTHKIT_SOUND "items/medshot4.wav" #define HEALTHKIT_MODEL "models/items/healthkit.mdl"
//Cvars new Handle:g_hMedKitCount = INVALID_HANDLE; new Handle:g_hMedKitLifeTime = INVALID_HANDLE; new Handle:g_hMedKitRegenTime = INVALID_HANDLE;
//Client variables new g_iMedKitCount[MAXPLAYERS+1];
//Timers new Handle:g_hMedKitTimer[2048]; new Handle:g_hClientRegenKits[MAXPLAYERS+1];
//Offset new g_iCollision = -1; new g_iSolidFlags = -1;
public Plugin:myinfo = { name = "JailMedKit", author = "s1dex", description = "CT can throw medkits", version = VERSION, url = "http://adminexe.ru/showthread.php?t=773" };
public OnPluginStart() { g_hMedKitCount = CreateConVar("sm_jailmedkit_count", "2", "Максимальное количетсво аптечек на руках у CT"); g_hMedKitLifeTime = CreateConVar("sm_jailmedkit_lifetime", "15", "Время \"жизни\" аптечек"); g_hMedKitRegenTime = CreateConVar("sm_jailmedkit_regentime", "10", "Время регенерации аптечек"); RegConsoleCmd("hl", CmdThrowMedKit); HookEvent("player_spawn", EventPlayerSpawn); if((g_iCollision = FindSendPropOffs("CBaseEntity", "m_Collision")) == -1) LogError("Could not find offset for CBaseEntity::m_Collision"); if((g_iSolidFlags = FindSendPropOffs("CBaseEntity", "m_usSolidFlags")) == -1) LogError("Could not find offset for CBaseEntity::m_usSolidFlags"); AutoExecConfig(true, "jailmedkit"); }
public OnClientPutInServer(client) { if (g_hClientRegenKits[client] != INVALID_HANDLE) CloseHandle(g_hClientRegenKits[client]); g_hClientRegenKits[client] = CreateTimer(GetConVarFloat(g_hMedKitRegenTime), TimerRegen, client, TIMER_REPEAT); }
public OnClientDisconnect(client) { if (g_hClientRegenKits[client] != INVALID_HANDLE) CloseHandle(g_hClientRegenKits[client]); g_hClientRegenKits[client] = INVALID_HANDLE; }
public OnMapStart() { PrecacheModel(HEALTHKIT_MODEL, true); PrecacheSound(HEALTHKIT_SOUND, true); }
public Action:OnTouch(medkit, entity) { if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) { return; } SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth")); new Float:origin[3]; EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0); AcceptEntityInput(medkit, "Kill"); if (g_hMedKitTimer[medkit] != INVALID_HANDLE) CloseHandle(g_hMedKitTimer[medkit]); g_hMedKitTimer[medkit] = INVALID_HANDLE; }
public Action:CmdThrowMedKit(client, args) { if (GetClientTeam(client) != TEAM_CT) { PrintToChat(client, "\x03[Аптечка] \x01Данную команду могут использовать только CT"); return Plugin_Handled; } if (!IsPlayerAlive(client)) { PrintToChat(client, "\x03[Аптечка] \x01Вы мертвы"); return Plugin_Handled; } if (!g_iMedKitCount[client]) { PrintToChat(client, "\x03[Аптечка] \x01У Вас нет доступных аптечек"); return Plugin_Handled; } CreateMedKit(client); g_iMedKitCount[client]--; return Plugin_Handled; }
public Action:EventPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); g_iMedKitCount[client] = GetConVarInt(g_hMedKitCount); //Advert if (GetClientTeam(client) == 3) PrintToChat(client, "\x03[Аптечка] \x01Вы можете кинуть аптечку командой !hl"); }
public Action:TimerRegen(Handle:timer, any:client) { if (IsClientInGame(client) && g_iMedKitCount[client] < GetConVarInt(g_hMedKitCount)) g_iMedKitCount[client]++; return Plugin_Continue; }
public Action:TimerDissolve(Handle:timer, any:entity) { if (IsValidEntity(entity)) { decl String:dname[16]; Format(dname, sizeof(dname), "dis_%d", entity); DispatchKeyValue(entity, "targetname", dname); new diss = CreateEntityByName("env_entity_dissolver"); DispatchKeyValue(diss, "dissolvetype", "3"); DispatchKeyValue(diss, "target", dname); AcceptEntityInput(diss, "Dissolve"); AcceptEntityInput(diss, "kill"); } g_hMedKitTimer[entity] = INVALID_HANDLE; }
stock CreateMedKit(client) { new entity = CreateEntityByName("prop_physics"); new Float:vecPos[3], Float:vecVel[3], Float:clAngles[3], Float:fwd[3]; GetClientEyePosition(client, vecPos); SetEntityModel(entity, HEALTHKIT_MODEL); SetEntProp(entity, Prop_Data, "m_CollisionGroup", 4); SetEntProp(entity, Prop_Data, "m_MoveCollide", 0); SetSolidFlags(entity, 152); SetEntProp(entity, Prop_Send, "m_PredictableID", client); SetEntityMoveType(entity, MOVETYPE_VPHYSICS); GetClientAbsAngles(client, clAngles); GetAngleVectors(clAngles, fwd, NULL_VECTOR, NULL_VECTOR); NormalizeVector(fwd, vecVel); ScaleVector(vecVel, 150.0); TeleportEntity(entity, vecPos, NULL_VECTOR, NULL_VECTOR); DispatchSpawn(entity); TeleportEntity(entity, NULL_VECTOR, NULL_VECTOR, vecVel); SDKHook(entity, SDKHook_StartTouchPost, OnTouch); g_hMedKitTimer[entity] = CreateTimer(GetConVarFloat(g_hMedKitLifeTime), TimerDissolve, entity); }
SetSolidFlags(iEntity, iFlags) { if(g_iCollision == -1 || g_iSolidFlags == -1) return; SetEntData(iEntity, g_iCollision + g_iSolidFlags, iFlags, 2, true); }
|
|
| |
Darkeneez
|
Дата: Пятница, 24.01.2014, 05:30:14 | Сообщение # 2 |
|
Сообщений: 221
Репутация: 18 [ +/- ]
|
|
if (GetClientTeam(client) != TEAM_CT) { PrintToChat(client, "\x03[Аптечка] \x01Данную команду могут использовать только CT"); return Plugin_Handled; }
|
|
| |
Naykon
|
Дата: Пятница, 24.01.2014, 09:47:45 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
public Action:test(client, args) { if (client > 0 && args < 1 && GetClientTeam(client) == 3) ShowMyPanel(client); return Plugin_Handled; //Зачем? На засоряй код ненужной фигней }
Сообщение отредактировал Naykon - Пятница, 24.01.2014, 09:49:32 |
|
| |
Tokami
|
Дата: Пятница, 24.01.2014, 17:37:39 | Сообщение # 4 |
|
Сообщений: 238
Репутация: 19 [ +/- ]
|
|
Naykon, Смешно выходит то что ты помогаешь тем более мне) но спасибо большое))Добавлено (24.01.2014, 17:37:39) --------------------------------------------- Сделал работает но только ошибка когда CT пишет команду меню открывается но ему в чат пишет Данную команду могут использовать только CT
Код PrintToChat(client, "\x03[Аптечка] \x01Данную команду могут использовать только CT");
|
|
| |
Jon4ik
|
Дата: Вторник, 04.02.2014, 14:34:59 | Сообщение # 5 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
а как сделать несколько команд например !hl и !uw
|
|
| |
Vor4uN
|
Дата: Суббота, 22.02.2014, 17:40:37 | Сообщение # 6 |
|
Сообщений: 49
Репутация: 3 [ +/- ]
|
|
Цитата Jon4ik ( ) а как сделать несколько команд например !hl и !uw
Посмотри как тут реализовано, по моему самый правильный способ.
Код #include <sourcemod> #include <sdktools>
#pragma semicolon 1
#define PLUGIN_VERSION "1.0" #define PLUGIN_AUTHOR "LegenD"
#define SOUND_FILE "misc/medic.wav"
new Handle:gPluginEnabled = INVALID_HANDLE; new Handle:gHealthAmount = INVALID_HANDLE; new Handle:gMinHealth = INVALID_HANDLE; new Handle:gMedicCost = INVALID_HANDLE; new Handle:gShowInChat = INVALID_HANDLE; new Handle:gMaxTimeUse = INVALID_HANDLE;
new gPlayerMoney; new gUsedMedic[ 33 ];
public Plugin:myinfo = { name = "CSS Medic", author = PLUGIN_AUTHOR, description = "You can call a medic.", version = PLUGIN_VERSION, url = "www.funservers.ru" }; public OnPluginStart() { HookEvent( "player_spawn", Event_PlayerSpawn ); RegConsoleCmd( "say", Command_Medic ); RegConsoleCmd( "say_team", Command_Medic );
CreateConVar( "cssmedic_version", PLUGIN_VERSION, "CSS Medic Version", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );
gPluginEnabled = CreateConVar( "css_medic", "1" ); gMinHealth = CreateConVar( "css_medic_minhealth", "98" ); gHealthAmount = CreateConVar( "css_medic_healhealth", "100" ); gMedicCost = CreateConVar( "css_medic_cost", "1000" ); gShowInChat = CreateConVar( "css_medic_showcall", "1" ); gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3" ); gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" ); } public OnClientConnected( id ) { gUsedMedic[ id ] = 0; } public OnClientDisconnect( id ) { gUsedMedic[ id ] = 0; } public OnMapStart() { decl String:MedicSound[ 100 ]; FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE ); if( FileExists( MedicSound ) ) { AddFileToDownloadsTable( MedicSound ); PrecacheSound( SOUND_FILE, true ); } } public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast ) { if( GetConVarInt( gPluginEnabled ) == 1 ) { new id = GetClientOfUserId( GetEventInt( event, "userid" ) );
gUsedMedic[ id ] = 0; } } public Action:Command_Medic( id, args ) { decl String:Said[ 128 ];
GetCmdArgString( Said, sizeof( Said ) - 1 ); StripQuotes( Said ); TrimString( Said ); if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) || StrEqual( Said, "медик" ) || StrEqual( Said, "vtl" ) || StrEqual( Said, "мед" ) ) { if( GetConVarInt( gPluginEnabled ) == 0 ) { PrintToChat( id, " \x01Извенни, ты не можешь вызвать\x04медика!" ); return Plugin_Continue; } if( !IsPlayerAlive( id ) ) { PrintToChat( id, " \x01Ты не можешь вызвать\x04медика! \x01Ты дохлый!" ); return Plugin_Continue; } new maxtime = GetConVarInt( gMaxTimeUse );
if( gUsedMedic[ id ] >= maxtime ) { PrintToChat( id, " \x01Ты не смог вызвать \x04медика,\x01так как больше \x03%d \x01 раза нельзя!", maxtime ); return Plugin_Continue; } new money = GetClientMoney( id ); new cost = GetConVarInt( gMedicCost ); if( money < cost ) { PrintToChat( id, " \x01У тебя нет денег для вызова \x04медика\x01 ! Нужно %d$", cost ); return Plugin_Continue; } if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) ) { PrintToChat( id, " \x01Тебе не нужен \x04медик!!!\x01! Вперед за фрагами!" ); return Plugin_Continue; } gUsedMedic[ id ]++;
SetEntProp( id, Prop_Data, "m_iHealth", GetConVarInt( gHealthAmount ) ); SetClientMoney( id, money - cost ); PrintToChat( id, " \x01Сейчас подлечим!\x01Не ссы." ); if( GetConVarInt( gShowInChat ) != 0 ) { decl String:Name[ 32 ]; GetClientName( id, Name, sizeof( Name ) - 1 );
PrintToChatAll( "\x03%s \x01Зовет\x04медика!", Name ); } new Float:fOrigin[ 3 ]; GetClientAbsOrigin( id, Float:fOrigin ); EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO ); AttachClientIcon( id ); } return Plugin_Continue; } stock SetClientMoney( index, money ) { if( gPlayerMoney != -1 ) { SetEntData( index, gPlayerMoney, money ); } } stock GetClientMoney( index ) { if( gPlayerMoney != -1 ) { return GetEntData( index, gPlayerMoney ); } return 0; } stock AttachClientIcon( index ) { TE_Start( "RadioIcon" ); TE_WriteNum( "m_iAttachToClient", index ); TE_SendToAll(); }
Сообщение отредактировал Vor4uN - Суббота, 22.02.2014, 17:43:00 |
|
| |
|