Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Бонусы на пропс сервере
М9сНиК Дата: Четверг, 10.05.2012, 16:37:00 | Сообщение # 1
Сообщений: 61
Репутация: 0 [ +/- ]
Доброго времени суток. Недавно пытался переделать меню бонусов на пропсе, но у меня не получилось и возникло несколько вопросов. как сделать за убийство чтобы давался 1 бонус (бонусы могли накапливатся), потом за эти бонусы можно было покупать бонусы. Не подскажите как сделать?


Сообщение отредактировал М9сНиК - Четверг, 10.05.2012, 16:41:59
 
_wS_ Дата: Четверг, 10.05.2012, 16:48:35 | Сообщение # 2
Это должно помочь.
Если надо сохранять статистику, то Keyvalues или mysql.
 
М9сНиК Дата: Суббота, 12.05.2012, 13:22:10 | Сообщение # 3
Сообщений: 61
Репутация: 0 [ +/- ]
Спасибо большое. Очень нравится ресурс, много чего интересного и полезного и отзывчивый админ, который всегда поможет если что-то не получается gut

Добавлено (12.05.2012, 13:22:10)
---------------------------------------------
Всё работает но есть 1 минус, только сегодня заметил. При использовании бонуса сами бонусы не вычитаются

Code

ShowRedBonusMenu(i)
{
  decl Handle:p;
  if ((p = CreatePanel()) == INVALID_HANDLE)
  {
   PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Не удалось \x05создать \x01меню");
   return;
  }
  DrawPanelText(p, "[ FreeDom ] Магазин\n \n");
  decl String:f[100];
  Format(f, sizeof(f), "Скорость %d сек (%d бонусов)", props_featureSEC, props_cash_speed);
  if (Kills[i] < props_cash_speed || SpeedTimer[i] != INVALID_HANDLE) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  Format(f, sizeof(f), "Невидимость %d сек (%d бонусов)", props_featureSEC, props_cash_invis);
  if (Kills[i] < props_cash_invis || InvisTimer[i] != INVALID_HANDLE) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  Format(f, sizeof(f), "Оздоровление (%d бонусов)", props_cash_regen);
  if (Kills[i] < props_cash_regen || props_on) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  Format(f, sizeof(f), "Узнать где враги (%d бонусов)", props_cash_where);
  if (Kills[i] < props_cash_where || WhereTimer[i] != INVALID_HANDLE) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  Format(f, sizeof(f), "Просветить предмет (%d бонусов)", props_cash_invpr);
  if (Kills[i] < props_cash_invpr || props_on) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  Format(f, sizeof(f), "Удалить предмет (%d бонусов)\n \n", props_cash_delpr);
  if (Kills[i] < props_cash_delpr || props_on) DrawPanelItem(p, f, ITEMDRAW_DISABLED);
  else DrawPanelItem(p, f);
  DrawPanelItem(p, "Выход");
  SendPanelToClient(p, i, Select_RedBonusMenu, 0);
  CloseHandle(p);
}

public Select_RedBonusMenu(Handle:menu, MenuAction:action, i, option)
{
  if (action != MenuAction_Select || option > 6 || GetClientTeam(i) != 2)
  {
   return;
  }
  if (option == 1)
  {
   if (Kills[i] < props_cash_speed)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (SpeedTimer[i] != INVALID_HANDLE)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Скорость \x05УЖЕ \x01прокачана");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_speed);
   SetEntPropFloat(i, Prop_Send, "m_flLaggedMovementValue", 3.0);
   SpeedTimer[i] = CreateTimer(float(props_featureSEC), StopSpeed_Func, i, TIMER_FLAG_NO_MAPCHANGE);
   PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Скорость \x04активирована");
   ClientCommand(i, "playgamesound weapons/flashbang/flashbang_explode1.wav");
  }
  else if (option == 2)
  {
   if (Kills[i] < props_cash_invis)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (InvisTimer[i] != INVALID_HANDLE)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Невидимость \x05УЖЕ \x01прокачана");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_invis);
   SetColor(i, 255, 255, 255, 25);
   InvisTimer[i] = CreateTimer(float(props_featureSEC), StopInvis_Func, i, TIMER_FLAG_NO_MAPCHANGE);
   PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Невидимость \x04активирована");
   ClientCommand(i, "playgamesound weapons/elite/elite_deploy.wav");
  }
  else if (option == 3)
  {
   if (Kills[i] < props_cash_regen)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (GetEntProp(i, Prop_Send, "m_iHealth") > 99)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Вы и так \x05здоровы");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_regen);
   SetEntProp(i, Prop_Send, "m_iHealth", 100);
   PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Здоровье \x04восстановлено");
   Vertical_Effect(i, {0,255,0,255});
   ClientCommand(i, "playgamesound ui/freeze_cam.wav");
  }
  else if (option == 4)
  {
   if (Kills[i] < props_cash_where)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (WhereTimer[i] != INVALID_HANDLE)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Ждите \x0510 \x01секунд");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_where);
   decl Float:MyPos[3], Float:TargetPos[3];
   GetClientAbsOrigin(i, MyPos);
   MyPos[2] += 500.0;
   new targets = 0;
   for (new x = 1; x <= MaxClients; x++)
   {
    if (IsClientInGame(x) && IsPlayerAlive(x) && GetClientTeam(x) == 3)
    {
     GetClientAbsOrigin(x, TargetPos);
     TE_SetupBeamPoints(MyPos, TargetPos, PrecH, PrecH, 0, 0, 5.0, 25.0, 1.0, 0, 0.0, {255,0,0,255}, 50);
     TE_SendToClient(i);
     targets += 1;
    }
   }
   PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Найдено врагов: \x05%d", targets);
   ClientCommand(i, "playgamesound ambient/office/button1.wav");
   WhereTimer[i] = CreateTimer(10.0, StopWhere_Func, i, TIMER_FLAG_NO_MAPCHANGE);
  }
  else if (option == 5)
  {
   if (Kills[i] < props_cash_invpr)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (props_on)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Ждите \x05окончания \x01строительства");
    return;
   }
   new Prop_Index = wS_GetLookPropIndex(i);
   if (Prop_Index < 1)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Вы должны \x05смотреть \x01на предмет");
    return;
   }
   if (GetEntProp(Prop_Index, Prop_Send, "m_clrRender") == 436207615)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Этот предмет \x05уже \x01просвещен");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_invpr);
   SetColor(Prop_Index, 255, 255, 255, 25);
   CreateTimer(5.0, StopInvpr_Func, Prop_Index, TIMER_FLAG_NO_MAPCHANGE);
   ClientCommand(i, "playgamesound physics/plastic/plastic_box_strain2.wav");
  }
  else if (option == 6)
  {
   if (Kills[i] < props_cash_delpr)
   {
    ErrorMsgNoCash(i);
    return;
   }
   if (props_on)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Ждите \x05окончания \x01строительства");
    return;
   }
   new Prop_Index = wS_GetLookPropIndex(i);
   if (Prop_Index < 1)
   {
    PrintToChat(i, "\x01[ \x03FreeDom\x01 ] Вы должны \x05смотреть \x01на предмет");
    return;
   }
   SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_delpr);
   new vladelec_i = GetEntPropEnt(Prop_Index, Prop_Send, "m_PredictableID");
   if (vladelec_i > 0 && IsClientInGame(vladelec_i) && IsPlayerAlive(vladelec_i))
   {
    PrintCenterText(vladelec_i, "ВНИМАНИЕ! %N удалил ваш проп!", i);
   }
   SetEntPropEnt(Prop_Index, Prop_Send, "m_PredictableID", 0);
   DispatchKeyValue(Prop_Index, "targetname", "t_dis_prop");
   Dissolve("t_dis_prop", "1");
   props_num -= 1;
   ClientCommand(i, "playgamesound physics/cardboard/cardboard_box_break1.wav");
  }
  ShowRedBonusMenu(i);
}

ErrorMsgNoCash(i)
{
  PrintToChat(i, "\x01[ \x03FreeDom\x01 ] У вас \x05недостаточно \x01бонусов");
  ClientCommand(i, "playgamesound resource/warning.wav");
}

Vertical_Effect(i, Color[4])
{
  decl Float:Pos1[3], Float:wS_Pos2[3];
  GetClientAbsOrigin(i, Pos1);
  wS_Pos2[0] = Pos1[0];
  wS_Pos2[1] = Pos1[1];
  wS_Pos2[2] = Pos1[2] + 70.0;
  TE_SetupBeamPoints(Pos1, wS_Pos2, PrecH, PrecH, 0, 0, 0.2, 50.0, 90.0, 0, 0.0, Color, 50);
  TE_SendToAll();
}

SetColor(i, r, g, b, a)
{
  SetEntityRenderMode(i, RENDER_TRANSCOLOR);
  SetEntityRenderColor(i, r, g, b, a);
}


как сделать чтобы бонусы вычитались?
 
_wS_ Дата: Суббота, 12.05.2012, 13:32:01 | Сообщение # 4
Попробуй не так:
SetEntProp(i, Prop_Send, "m_iAccount", Kills[i] - props_cash_speed);

А так:
Kills[i] -= props_cash_speed;
SetEntProp(i, Prop_Send, "m_iAccount", Kills[i]);
 
М9сНиК Дата: Суббота, 12.05.2012, 13:33:10 | Сообщение # 5
Сообщений: 61
Репутация: 0 [ +/- ]
Бонусы брал из wS_Props

Добавлено (12.05.2012, 13:33:10)
---------------------------------------------
спасибо. Сейчас попробую

 
  • Страница 1 из 1
  • 1
Поиск: