| Привязка по IP | 
|  | 
| 
| 4atty | Дата: Пятница, 11.09.2015, 23:29:04 | Сообщение # 1 |  |   
|  |  | Сообщений: 21 Репутация: 0 [ +/- ]
 |  | Всем привет, подскажите пожалуйста, как сделать привязку именно по IP адресу без порта. Чтобы плагин работал только на этом IP 11.111.11.111 на всех портах, на 22.222.22.222 чтобы не работал) |  |  |  |  | 
| 
| pro-health | Дата: Суббота, 12.09.2015, 07:10:04 | Сообщение # 2 |  |   
|  |  | Сообщений: 188 Репутация: 5 [ +/- ]
 |  | http://world-source.ru/forum/102-2275-1 |  |  |  |  | 
| 
| BarD | Дата: Суббота, 12.09.2015, 12:46:33 | Сообщение # 3 |  |   
|  |  | Сообщений: 943 Репутация: 137 [ +/- ]
 |  | Код public OnPluginStart()  {
 ////////////////////////////////////////////////////////
 
 // на каком должен работать
 new const String:IP_SERVER[] = "1.2.3.4";
 
 /////////
 
 new Handle:h_IP = FindConVar("hostip");
 
 if (h_IP == INVALID_HANDLE)
 {
 SetFailState("h_IP == INVALID_HANDLE");
 return;
 }
 
 new hostip = GetConVarInt(h_IP);
 new ip1 = hostip >>> 24 & 255;
 new ip2 = hostip >>> 16 & 255;
 new ip3 = hostip >>> 8 & 255;
 new ip4 = hostip & 255;
 
 decl String:current_ip[75];
 Format(current_ip, 75, "%d.%d.%d.%d", ip1, ip2, ip3, ip4);
 if (strcmp(current_ip, IP_SERVER, false) != 0)
 {
 SetFailState("\nYour server: %s. Plugin for: %s", current_ip_port, IP_PORT);
 }
 
 ////////////////////////////////////////////////////////
 }
Держи. Переделал код wS'а.
 |  |  |  |  | 
| 
| Jon4ik | Дата: Суббота, 12.09.2015, 14:49:57 | Сообщение # 4 |  |   
|  |  | Сообщений: 278 Репутация: 7 [ +/- ]
 |  | 4atty, 
 SetFailState("\nYour server: %s. Plugin for: %s", current_ip_port, IP_PORT); поправь на current_ip
 
 и IP_PORT вроде на IP_SERVER надо изменить
 
 
 Сообщение отредактировал Jon4ik - Суббота, 12.09.2015, 14:50:53 |  |  |  |  | 
| 
| 4atty | Дата: Суббота, 12.09.2015, 16:34:30 | Сообщение # 5 |  |   
|  |  | Сообщений: 21 Репутация: 0 [ +/- ]
 |  | Jon4ik, спасибо. Все получилось) |  |  |  |  | 
| 
| BarD | Дата: Воскресенье, 13.09.2015, 08:35:24 | Сообщение # 6 |  |   
|  |  | Сообщений: 943 Репутация: 137 [ +/- ]
 |  | Цитата 4atty (  ) Проверил, выдает ошибку при компиляции, вот скрин
 
 Цитата Jon4ik (  ) поправь на current_ip и IP_PORT вроде на IP_SERVER надо изменить
 Да, не заметил) Извините :)
 |  |  |  |  | 
| 
| Jon4ik | Дата: Воскресенье, 13.09.2015, 11:50:57 | Сообщение # 7 |  |   
|  |  | Сообщений: 278 Репутация: 7 [ +/- ]
 |  | Мне кажется лучше делать вообще так: 
 
 Код  #define plugin "myplugin"
 public OnPluginStart()
 {
 ////////////////////////////////////////////////////////
 
 // на каком должен работать
 new const String:IP_SERVER[] = "1.2.3.4";
 
 /////////
 
 new Handle:h_IP = FindConVar("hostip");
 
 if (h_IP == INVALID_HANDLE)
 {
 SetFailState("h_IP == INVALID_HANDLE");
 return;
 }
 
 new hostip = GetConVarInt(h_IP);
 new ip1 = hostip >>> 24 & 255;
 new ip2 = hostip >>> 16 & 255;
 new ip3 = hostip >>> 8 & 255;
 new ip4 = hostip & 255;
 
 decl String:current_ip[75];
 Format(current_ip, 75, "%d.%d.%d.%d", ip1, ip2, ip3, ip4);
 if (strcmp(current_ip, IP_SERVER, false) != 0)
 {
 LogError("\nYour server: %s. Plugin for: %s", current_ip, IP_SERVER);
 ServerCommand("sm plugin unload %s",plugin);
 }
 
 ////////////////////////////////////////////////////////
 }
 
т.к SetFailState выдает ошибки в логи какие то, а так в еррор логах будет только: Your server: 123456. Plugin for: 1259
 
 
 Сообщение отредактировал Jon4ik - Воскресенье, 13.09.2015, 11:51:41 |  |  |  |  | 
| 
| BarD | Дата: Воскресенье, 13.09.2015, 12:04:39 | Сообщение # 8 |  |   
|  |  | Сообщений: 943 Репутация: 137 [ +/- ]
 |  | Jon4ik, ну, можно и так. 
 
 Сообщение отредактировал BarD - Воскресенье, 13.09.2015, 12:05:17 |  |  |  |  | 
| 
| TEIN | Дата: Воскресенье, 13.09.2015, 15:47:12 | Сообщение # 9 |  |   
|  |  | Сообщений: 563 Репутация: 78 [ +/- ]
 |  | выгружать по имени плагина - плохой способ, т.к. его можно изменить банально, ну а на счет ошибок - так это не проблема, сервер, которому предназначен данный плагине увидит ошибок 
 
 Сообщение отредактировал TEIN - Воскресенье, 13.09.2015, 15:48:00 |  |  |  |  | 
| 
| Jon4ik | Дата: Воскресенье, 13.09.2015, 16:07:11 | Сообщение # 10 |  |   
|  |  | Сообщений: 278 Репутация: 7 [ +/- ]
 |  | TEIN, вроде где то писали если сделать так 
 #define plugin "myplugin"
 
 и потом так ServerCommand("sm plugin unload %s",plugin);
 
 изменение имени не поможет
 
 
 Сообщение отредактировал Jon4ik - Воскресенье, 13.09.2015, 16:07:27 |  |  |  |  | 
| 
| Scarface_slv | Дата: Воскресенье, 13.09.2015, 16:30:28 | Сообщение # 11 |  |   
|  |  | Сообщений: 737 Репутация: 61 [ +/- ]
 |  | Jon4ik, а не так? 
 Код  decl String:text[45];
 GetPluginFilename(GetMyHandle(), text, 45);
 ServerCommand("sm plugin unload %s", text);
 
 |  |  |  |  | 
| 
| Jon4ik | Дата: Понедельник, 14.09.2015, 20:36:02 | Сообщение # 12 |  |   
|  |  | Сообщений: 278 Репутация: 7 [ +/- ]
 |  | Scarface_slv, Можно и так наверное) |  |  |  |  |