| 
|  | 
 |  |  
| 
 |  
 
 
|  |   
|  | Последние Файлы GTA 4 | Последние Файлы GTA-MP | Реклама |   
|  |  |  | 
	
		
		
			| Вопросы и ответы по GTA SAMP [от 19.03.2013] |  |  |  | 
| Weddew | Дата: Вторник, 19.03.2013, 15:11 | Сообщение # 1 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | В этой теме вы сможете получить ответы, на многие ваши вопросы по PAWN. 
 Новичкам:
 
 
  
  Внятно объясняйте Вашу проблему, если Вы получили ошибку, обязательно выкладывайте строки, на которые "ругается" компилятор. 
 Задавайте вопросы исключительно по коду, а не по системам, которые имеются у Вас в моде. 
 Помощь идет только по желанию пользователя, если человек помог Вам только частично, не нужно начинать поливать его грязью. 
 Возможно тип Вашей проблемы уже обсуждался на форуме, воспользуйтесь поиском. 
 В этой теме пользователи лишь оказывают помощь в написании кода, а не пишут его за Вас.  
 Если Вы хотите отблагодарить пользователя, жмите на кнопку  . (Только для продвинутых, и выше) 
 Если Вы уже задавали вопрос и не получили на него ответа, то лучше написать в ЛС одному из участников группы  , чем засорять тему. 
 Если Вы сами решили свою проблему, то напишите, как Вы ее решили. 
 Если Вас просят выложить код функций, то используйте для этого сервис pastebin.com 
 
 Скриптерам:
 
  
  Не оскорблять новичков. 
 Не засорять тему сообщениями, подобные этому: "Закрой PAWNO и иди делай уроки". 
 Не посылать в поиск. Пользователь итак уже пришёл сюда из поиска. Если решение проблемы уже было опубликовано, то указать в какой теме 
 Как можно понятней объяснять решение той, или иной проблемы, по возможности приводить примеры. 
 
 
 Инструкции:
 
  
 [cut noguest=Краткая инструкция для вшивания FS в мод] 1) Все из callback OnFilterScriptInit вставляем в конец callback OnGameModeInit перед словом return.
 2) Все из callback OnFilterScriptExit вставляем в конец callback OnGameModeExit перед словом return.
 3) Все объявления переменных (new ...) и констант (const ...; #define ... ...) в начало мода.
 4) Все прототипы (forward ...(...) ) ко всем прототипам.
 5) Все описания нестандартных функций (public ...(...); stock ...(...); ...(...){...} ), которых нет в моде, вставляем в конец мода.
 
 P.S. Данный мануал не гарантирует, что после копирования все будет работать, так как еще потребуется подгонять одни системы под другие.
 P.P.S Если в одном из callback`ов Вы не обнаружили кода, то переходите к следующему пункту инструкции.
 [/cut]
 
[cut noguest=Защита от ботов] В OnPlayerConnect
 [pwn]if(GetPlayersSameIp(playerid) > 3) Kick(playerid);[/pwn]
 В конец мода
 [pwn]stock GetPlayersSameIp(playerid)
 {//by Weddew
 //Возвращает количество подключенных игроков с таким же IP как у playerid
 new count = 0, p_ip[16], i_ip[16];
 GetPlayerIp(playerid, p_ip, sizeof(p_ip));
 for(new i = 0; i < MAX_PLAYERS; i++)
 {
 GetPlayerIp(playerid, i_ip, sizeof(i_ip));
 if(i != playerid)
 {
 if(!strcmp(p_ip, i_ip, false)) count++;
 }
 }
 return count;
 }[/pwn]
 [/cut]
 
[cut noguest=Проверка на Role Play ник] В конец мода:
 [pwn]
 stock IsARPNickname(playerid)
 {
 //by Weddew
 new p_n[MAX_PLAYER_NAME], dcount = 0;
 GetPlayerName(playerid, p_n, sizeof(p_n))
 for(i = 0; i < strlen(p_n); i++)
 {
 if(p_n[i] == '_') dcount++;
 }
 if(dcount != 1 || p_n[0] == '_' || p_n[strlen(p_n)-1] == '_') return false;
 return true;
 }[/pwn]
 
 В OnPlayerConnect
 
 [pwn]
 if(!IsARPNickname(playerid)) Kick(playerid);[/pwn]
 
 P.S.:
 Не пропустит: _Nick_Name_, _Nick_Name, NickName_
 Пропустит: Nick_Name, NICK_NAME, NiCk_name, nick_name[/cut]
 
 
   
 
   www.weddew-shop.ru
 
 
 Сообщение отредактировал Weddew - Среда, 23.10.2013, 21:45 |  |  |  |  
  |  | 
| Weddew | Дата: Вторник, 19.03.2013, 15:11 | Сообщение # 2 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | В этой теме вы сможете получить ответы, на многие ваши вопросы по PAWN. 
 Новичкам:
 
 
  
  Внятно объясняйте Вашу проблему, если Вы получили ошибку, обязательно выкладывайте строки, на которые "ругается" компилятор. 
 Задавайте вопросы исключительно по коду, а не по системам, которые имеются у Вас в моде. 
 Помощь идет только по желанию пользователя, если человек помог Вам только частично, не нужно начинать поливать его грязью. 
 Возможно тип Вашей проблемы уже обсуждался на форуме, воспользуйтесь поиском. 
 В этой теме пользователи лишь оказывают помощь в написании кода, а не пишут его за Вас.  
 Если Вы хотите отблагодарить пользователя, жмите на кнопку  . (Только для продвинутых, и выше) 
 Если Вы уже задавали вопрос и не получили на него ответа, то лучше написать в ЛС одному из участников группы  , чем засорять тему. 
 Если Вы сами решили свою проблему, то напишите, как Вы ее решили. 
 Если Вас просят выложить код функций, то используйте для этого сервис pastebin.com 
 
 Скриптерам:
 
  
  Не оскорблять новичков. 
 Не засорять тему сообщениями, подобные этому: "Закрой PAWNO и иди делай уроки". 
 Не посылать в поиск. Пользователь итак уже пришёл сюда из поиска. Если решение проблемы уже было опубликовано, то указать в какой теме 
 Как можно понятней объяснять решение той, или иной проблемы, по возможности приводить примеры. 
 
 
 Инструкции:
 
  
 [cut noguest=Краткая инструкция для вшивания FS в мод] 1) Все из callback OnFilterScriptInit вставляем в конец callback OnGameModeInit перед словом return.
 2) Все из callback OnFilterScriptExit вставляем в конец callback OnGameModeExit перед словом return.
 3) Все объявления переменных (new ...) и констант (const ...; #define ... ...) в начало мода.
 4) Все прототипы (forward ...(...) ) ко всем прототипам.
 5) Все описания нестандартных функций (public ...(...); stock ...(...); ...(...){...} ), которых нет в моде, вставляем в конец мода.
 
 P.S. Данный мануал не гарантирует, что после копирования все будет работать, так как еще потребуется подгонять одни системы под другие.
 P.P.S Если в одном из callback`ов Вы не обнаружили кода, то переходите к следующему пункту инструкции.
 [/cut]
 
[cut noguest=Защита от ботов] В OnPlayerConnect
 [pwn]if(GetPlayersSameIp(playerid) > 3) Kick(playerid);[/pwn]
 В конец мода
 [pwn]stock GetPlayersSameIp(playerid)
 {//by Weddew
 //Возвращает количество подключенных игроков с таким же IP как у playerid
 new count = 0, p_ip[16], i_ip[16];
 GetPlayerIp(playerid, p_ip, sizeof(p_ip));
 for(new i = 0; i < MAX_PLAYERS; i++)
 {
 GetPlayerIp(playerid, i_ip, sizeof(i_ip));
 if(i != playerid)
 {
 if(!strcmp(p_ip, i_ip, false)) count++;
 }
 }
 return count;
 }[/pwn]
 [/cut]
 
[cut noguest=Проверка на Role Play ник] В конец мода:
 [pwn]
 stock IsARPNickname(playerid)
 {
 //by Weddew
 new p_n[MAX_PLAYER_NAME], dcount = 0;
 GetPlayerName(playerid, p_n, sizeof(p_n))
 for(i = 0; i < strlen(p_n); i++)
 {
 if(p_n[i] == '_') dcount++;
 }
 if(dcount != 1 || p_n[0] == '_' || p_n[strlen(p_n)-1] == '_') return false;
 return true;
 }[/pwn]
 
 В OnPlayerConnect
 
 [pwn]
 if(!IsARPNickname(playerid)) Kick(playerid);[/pwn]
 
 P.S.:
 Не пропустит: _Nick_Name_, _Nick_Name, NickName_
 Пропустит: Nick_Name, NICK_NAME, NiCk_name, nick_name[/cut]
 
 
   
 
   www.weddew-shop.ru
 
 
 Сообщение отредактировал Weddew - Среда, 23.10.2013, 21:45 |  |  |  |  |  | 
| Anthony | Дата: Вторник, 19.03.2013, 15:25 | Сообщение # 3 |  | Уверенный в себе Группа:
Publishers Сообщений: 211 Награды: 4 Замечания: 0% Статус:   | хм.. Ув.пользователи скажите почему меня кикает когда я пытаюсь подключиться к серверу МТА.
 пишет например такое "You were kicked (#AC4)" как то так и еще подругому.
 Это может быть связано с тем что установлен собейт и некоторые моды?
 
   
 
   
   |  |  |  |  |  | 
| Weddew | Дата: Вторник, 19.03.2013, 15:28 | Сообщение # 4 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | Цитата (Vsevolod) хм.. Ув.пользователи скажите почему меня кикает когда я пытаюсь подключиться к серверу МТА.
 пишет например такое "You were kicked (#AC4)" как то так и еще подругому.
 Это может быть связано с тем что установлен собейт и некоторые моды?
Правильно, на стороне сервера стоит античит и кикает он Вас по причине установленного собейта.
 
   
 
   www.weddew-shop.ru
 
 
 Сообщение отредактировал Weddew - Вторник, 19.03.2013, 22:20 |  |  |  |  |  | 
| Geryy | Дата: Среда, 20.03.2013, 03:06 | Сообщение # 5 |  | Советчик Группа:
Ангел Хранитель Сообщений: 1187 Награды: 24 Город: Москва  Репутация: 785 Замечания: 0% Статус:   | Цитата (Vsevolod) пишет например такое "You were kicked (#AC4)" как то так и еще подругому. Это может быть связано с тем что установлен собейт и некоторые моды?
 Удали свои читы/клео, а лучше переустонови гта и мта чтобы не осталось лишнего мусора.
 
   
 Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
 |  |  |  |  |  | 
| Anthony | Дата: Среда, 20.03.2013, 16:24 | Сообщение # 6 |  | Уверенный в себе Группа:
Publishers Сообщений: 211 Награды: 4 Замечания: 0% Статус:   | Цитата (Weddew) Правильно, на стороне сервера стоит античит и кикает он Вас по причине установленного собейта. 
 Цитата (Geryy) Удали свои читы/клео, а лучше переустонови гта и мта чтобы не осталось лишнего мусора. Спасибо! Стоило удалить только собейт
 
   
 
   
   |  |  |  |  |  | 
| Weddew | Дата: Среда, 20.03.2013, 18:58 | Сообщение # 7 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | Цитата (Vsevolod) Спасибо! Стоило удалить только собейтМожно было и не удалять, достаточно было переименовать файл d3d9.dll в папке с игрой.
 
   
 
   www.weddew-shop.ru
 |  |  |  |  |  | 
| Saibot | Дата: Среда, 20.03.2013, 19:30 | Сообщение # 8 |  | Освоившийся Группа:
Продвинутые Сообщений: 112 Награды: 0 Репутация: 34 Замечания: 0% Статус:   | Такая проблема,создал спранк поставил проверку на ХП (100) спранк даёт (health + 25),но когда у игрока 98хп и он выпел то у него уже 123хп. Как зделать чтоб больше 100хп не давало?
 [pwn]if(strcmp(cmd, "/spranks", true) == 0)
 {
 if(IsPlayerConnected(playerid))
 {
 if(PlayerToPoint(1.0,playerid,1165.6802,1353.3733,10.9219))
 {
 new Float:health;
 GetPlayerHealth(playerid, health);//проверка на хп
 if(health>=100)
 {
 SendClientMessage(playerid, COLOR_GREY, "Вы уже достаточно выпели.");//сообщение игрок
 return 1;
 }
 SetPlayerHealth(playerid, health + 25);
 SetTimerEx("DeletePlayerBurger", false, 5000, "i", playerid);
 ApplyAnimation(playerid,"GANGS","drnkbr_prtl",3.0, 0, 0, 0, 0, 0);
 PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
 GivePlayerMoney(playerid, - 30);
 GameTextForPlayer(playerid, "~r~ - 25 $", 5000, 1);
 return 1;
 }
 }
 }[/pwn]
 
   |  |  |  |  |  | 
| sehrget | Дата: Среда, 20.03.2013, 20:27 | Сообщение # 9 |  | Постоялец Группа:
Продвинутые Сообщений: 393 Награды: 2 Город: Украина\Черкассы  Замечания: 40% Статус:   | В форварды: 
 Код forward Check100HP(playerid);
 В конец мода [pwn]public Check100HP(playerid)
 {
 new Float:health;
 GetPlayerHealth(playerid,health);
 if (health > 100.0)
 {
 SetPlayerHealth(playerid, 100)
 }
 return 1;
 }[/pwn]
 Это все в любой таймер( Check100HP(playerid); )
 
   
 
 Сообщение отредактировал sehrget - Среда, 20.03.2013, 20:31 |  |  |  |  |  | 
| Weddew | Дата: Среда, 20.03.2013, 21:01 | Сообщение # 10 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | Saibot, Держите:
 [pwn]if(strcmp(cmd, "/spranks", true) == 0)
 {
 if(IsPlayerConnected(playerid))
 {
 if(PlayerToPoint(1.0,playerid,1165.6802,1353.3733,10.9219))
 {
 new Float:health;
 GetPlayerHealth(playerid, health);//проверка на хп
 if(health >= 100)
 {
 SendClientMessage(playerid, COLOR_GREY, "Вы уже достаточно выпели.");//сообщение игрок
 return 1;
 }
 else if(health+25 > 100.0) SetPlayerHealth(playerid, 100.0);
 else SetPlayerHealth(playerid, health+25);
 SetTimerEx("DeletePlayerBurger", false, 5000, "i", playerid);
 ApplyAnimation(playerid,"GANGS","drnkbr_prtl",3.0, 0, 0, 0, 0, 0);
 PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
 GivePlayerMoney(playerid, - 30);
 GameTextForPlayer(playerid, "~r~ - 25 $", 5000, 1);
 return 1;
 }
 }
 }[/pwn]
 Добавлено (20.03.2013, 21:01)---------------------------------------------
 
 Цитата (sehrget) В форварды: 
 Код
 forward Check100HP(playerid);
 
 В конец мода
 
 [pwn]public Check100HP(playerid)
 {
 new Float:health;
 GetPlayerHealth(playerid,health);
 if (health > 100.0)
 {
 SetPlayerHealth(playerid, 100)
 }
 return 1;
 }[/pwn]
 Это все в любой таймер( Check100HP(playerid); )
 
Зачем перегружать функции, когда можно добавить одну проверку в команду?
 
   
 
   www.weddew-shop.ru
 |  |  |  |  |  | 
| Saibot | Дата: Среда, 20.03.2013, 21:13 | Сообщение # 11 |  | Освоившийся Группа:
Продвинутые Сообщений: 112 Награды: 0 Репутация: 34 Замечания: 0% Статус:   | Weddew, Спасибо 
   |  |  |  |  |  | 
| Mr_Fust | Дата: Среда, 20.03.2013, 21:34 | Сообщение # 12 |  | Постоялец Группа:
I'm V.I.P. Сообщений: 445 Награды: 4 Город: Sorry, I don't know  Замечания: 0% Статус:   | Saibot, Код SendClientMessage(playerid, COLOR_GREY, "Вы уже достаточно выпили.");Ибо, от слова "пить", а не "петь"
 
   
 Я на СРК уже...
 
   |  |  |  |  |  | 
| sehrget | Дата: Среда, 20.03.2013, 21:43 | Сообщение # 13 |  | Постоялец Группа:
Продвинутые Сообщений: 393 Награды: 2 Город: Украина\Черкассы  Замечания: 40% Статус:   | Цитата (Weddew) Зачем перегружать функции, когда можно добавить одну проверку в команду? Есть сервера, где таких(или подобных) багов куча(диамонд с системой /mak и тд.) .
 
 
 
 Не могу создать NPS: 
 В OnGameModeInit: 
 Код ConnectNPC("MyFirstNPC","mynpc");
 В OnPlayerSpawn: [pwn]	if(IsPlayerNPC(playerid))
 {
 new npcname[MAX_PLAYER_NAME];
 GetPlayerName(playerid, npcname, sizeof(npcname));
 if(!strcmp(npcname, "MyFirstNPC", true))
 {
 PlayerInfo[playerid][pInt] = 3;
 SetPlayerVirtualWorld(playerid,1);
 SetPlayerPos(playerid, 356.2970,168.9697,1008.3762);
 SetPlayerSkin(playerid, 76);
 }
 return 1;
 }[/pwn]
 Ошибок нету!
 
   |  |  |  |  |  | 
| Weddew | Дата: Среда, 20.03.2013, 21:50 | Сообщение # 14 |  | Группа:
Ангел Хранитель Сообщений: 1251 Награды: 19 Город: Казань  Репутация: 1740 Замечания: 0% Статус:   | Mr_Fust, [off]тогда уж не выпЕли, а спели  [/off] Добавлено (20.03.2013, 21:49)---------------------------------------------
 sehrget, ботов необходимо спавнить вручную, функцией SpawnPlayer(playerid).
 Пример:
 [pwn]public OnPlayerConnect(playerid)
 {
 new npcname[MAX_PLAYER_NAME];
 GetPlayerName(playerid, npcname, sizeof(npcname));
 if(!strcmp(npcname, "MyFirstNPC", true)) SpawnPlayer(playerid);
 /*
 ...
 */
 return true;
 }[/pwn]
 Добавлено (20.03.2013, 21:50)---------------------------------------------
 
 Цитата (sehrget) Есть сервера, где таких(или подобных) багов куча(диамонд с системой /mak и тд.) . И? Что с этого то? Это не повод писать новые функции, когда можно обойтись условием в 1 строку.
 
   
 
   www.weddew-shop.ru
 |  |  |  |  |  | 
| Geryy | Дата: Четверг, 21.03.2013, 03:03 | Сообщение # 15 |  | Советчик Группа:
Ангел Хранитель Сообщений: 1187 Награды: 24 Город: Москва  Репутация: 785 Замечания: 0% Статус:   | Цитата (Weddew) когда можно обойтись условием в 1 строку. Тогда можно и условие убрать, пусть пьют сколько влезет
   
 [pwn]
 new Float:health;
 GetPlayerHealth(playerid, health);
 health = (health <= 75.0) ? health + 25.0 : 100.0;
 SetPlayerHealth(playerid, health);
 [/pwn]
 
   
 Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
 |  |  |  |  |  
 |  
|  | 
 |  |  |  
| 
 
 
 |  |  |