15:45
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
        
Подвиcание SA-MP (2)
Max 20.02.2017 21:57
MYSQL Донат (2)
JasonGordon 08.02.2017 10:39
Зацените (12)
JasonGordon 26.01.2017 18:36
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 101 из 151«1299100101102103150151»
Модератор форума: AXE, Weddew 
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Вопросы и ответы по GTA SAMP [от 19.03.2013]
Вопросы и ответы по GTA SAMP [от 19.03.2013]
WeddewДата: Вторник, 19.03.2013, 15:11 | Сообщение # 1
Группа: Ангел Хранитель
Сообщений: 1237
Награды: 19
Город: Казань
Репутация: 1245
Замечания: 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Дата: Воскресенье, 25.08.2013, 22:33 | Сообщение # 1501
Группа: Ангел Хранитель
Сообщений: 1237
Награды: 19
Город: Казань
Репутация: 1245
Замечания: 0%
Статус:
_BigSm0ke_, кодировка таблицы, кодировка полей таблицы, кодировка базы данных - это все разные понятия. Приравняйте все эти кодировки к одной.

Добавлено (25.08.2013, 22:33)
---------------------------------------------

Цитата (HakeRbesT)
По идее этот код должен убирать ники у всех игроков, однако когда я захожу двумя игроками, то у id 0 видно ник, а у id 1 нет. Почему у нулевого id не скрылся ник?

Не проще ли воспользоваться этой функцией ShowNameTags, чем изобретать велосипед?




www.weddew-shop.ru
_BigSm0ke_Дата: Воскресенье, 25.08.2013, 23:08 | Сообщение # 1502
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
Цитата (Weddew)
_BigSm0ke_, кодировка таблицы, кодировка полей таблицы, кодировка базы данных - это все разные понятия. Приравняйте все эти кодировки к одной.


так вот в том то и дело что кодировка полей, кодировка бд, кодировка таблиц бд - cp1251_general_ci, а в моде вылезает вообще DATABASE CHAR SET:latin1 откуда не возьмись...



LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут
WeddewДата: Понедельник, 26.08.2013, 07:18 | Сообщение # 1503
Группа: Ангел Хранитель
Сообщений: 1237
Награды: 19
Город: Казань
Репутация: 1245
Замечания: 0%
Статус:
Цитата (_BigSm0ke_)
так вот в том то и дело что кодировка полей, кодировка бд, кодировка таблиц бд - cp1251_general_ci, а в моде вылезает вообще DATABASE CHAR SET:latin1 откуда не возьмись...

Где именно?




www.weddew-shop.ru
HakeRbesTДата: Понедельник, 26.08.2013, 07:20 | Сообщение # 1504
Новенький
Группа: Пользователи
Сообщений: 72
Награды: 0
Город: Новокузнецк
Репутация: 2
Замечания: 0%
Статус:
Цитата (Weddew)
Не проще ли воспользоваться этой функцией ShowNameTags, чем изобретать велосипед?

Спасибо, работает, но только в gamemode, в filterscript,е не работает

WeddewДата: Понедельник, 26.08.2013, 07:24 | Сообщение # 1505
Группа: Ангел Хранитель
Сообщений: 1237
Награды: 19
Город: Казань
Репутация: 1245
Замечания: 0%
Статус:
HakeRbesT, примечание на Wiki.sa-mp.com

[srt]Important Note: This function can only be used in OnGameModeInit. For use of a similar function like this in the whole gamemode, check out the ShowPlayerNameTagForPlayer function.[/srt]




www.weddew-shop.ru
HakeRbesTДата: Понедельник, 26.08.2013, 07:29 | Сообщение # 1506
Новенький
Группа: Пользователи
Сообщений: 72
Награды: 0
Город: Новокузнецк
Репутация: 2
Замечания: 0%
Статус:
Цитата (Weddew)
HakeRbesT, примечание на Wiki.sa-mp.com

Спасибо большое :)
И ещё один вопрос. Как лучше делать частое обновление, текстдрава со скоростью например или 3D теста, со здоровьем игрока? Запускать таймер в 10 мс. или делать обновление в OnPlayerUpdate?

DemonoloGДата: Понедельник, 26.08.2013, 09:13 | Сообщение # 1507
Постоялец
Группа: Продвинутые
Сообщений: 313
Награды: 2
Репутация: 178
Замечания: 0%
Статус:
HakeRbesT, таймеры это плохо, нагрузка лишняя, лучше OnPlayerUpdate
HakeRbesTДата: Понедельник, 26.08.2013, 12:32 | Сообщение # 1508
Новенький
Группа: Пользователи
Сообщений: 72
Награды: 0
Город: Новокузнецк
Репутация: 2
Замечания: 0%
Статус:
Цитата (DemonoloG)
HakeRbesT, таймеры это плохо, нагрузка лишняя, лучше OnPlayerUpdate

Спасибо, сразу же следующий вопрос. Функция Create3DTextLabel возвращает переменную типа Text3D, мне нужно её сохранить с помощью pVar, но там нет такого типа переменной, как быть?

Добавлено (26.08.2013, 12:32)
---------------------------------------------
Ещё прошу помочь по коду:

Код

public PlayerConnect(step, playerid){
     SendClientMessage(playerid, -1, "PlayerConnect");//@
     if(step == 0){
         SendClientMessage(playerid, -1, "PlayerConnect step 0");//@
         new query[80], playername[MAX_PLAYER_NAME];
         GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
         format(query, 80, "SELECT * FROM `players` WHERE `name` = %s", playername);
         return mysql_function_query(handle, query, true, "PlayerConnect", "ii", 1, playerid);
     }
     if(step == 1){
         SendClientMessage(playerid, -1, "PlayerConnect step 1");//@
         new rows, fields;
         cache_get_data(rows, fields, handle);
         if(!rows){
             SendClientMessage(playerid, -1, "Вы не зарегистрированы!");
             return GKick(playerid, 0);
         }
     }
     return 0;
}

Строки вроде этой:
Код
SendClientMessage(playerid, -1, "PlayerConnect");//@

[b]добавлены, чтобы отследить какой кусок кода выполняется.
В общем выполняется только step == 0, а строка SendClientMessage(playerid, -1, "PlayerConnect");//@ выполняется только один раз.
Вопрос: почему не выполняется второй кусок кода где step == 1?

WeddewДата: Понедельник, 26.08.2013, 16:06 | Сообщение # 1509
Группа: Ангел Хранитель
Сообщений: 1237
Награды: 19
Город: Казань
Репутация: 1245
Замечания: 0%
Статус:
Цитата (HakeRbesT)
Вопрос: почему не выполняется второй кусок кода где step == 1?

Не выполняется он по причине того, что во время вызова PlayerConnect значение параметра step равен 0.
Для того, чтобы выполнилось условие if(step == 1), необходимо вызвать PlayerConnect c step = 1
Пример:
[pwn]PlayerConnect(1, playerid);[/pwn]




www.weddew-shop.ru
KlebitДата: Понедельник, 26.08.2013, 17:51 | Сообщение # 1510
Уверенный в себе
Группа: Пользователи
Сообщений: 265
Награды: 0
Город: None
Репутация: -31
Замечания: 60%
Статус:
Цитата (DemonoloG)
HakeRbesT, таймеры это плохо, нагрузка лишняя, лучше OnPlayerUpdate

идиот?

HakeRbesTДата: Понедельник, 26.08.2013, 19:13 | Сообщение # 1511
Новенький
Группа: Пользователи
Сообщений: 72
Награды: 0
Город: Новокузнецк
Репутация: 2
Замечания: 0%
Статус:
Цитата (Klebit)
идиот?

Зачем же оскорбления?
А как вы считаете нужно?

ExCo4Дата: Вторник, 27.08.2013, 09:28 | Сообщение # 1512
Новенький
Группа: Пользователи
Сообщений: 7
Награды: 0
Город: Belogorsk
Репутация: 0
Замечания: 0%
Статус:
Подскажите как сделать , чтобы когда игрок садился в опр. транспорт ему давался бонус. Я так понимаю через
Код
If(IsPlayerInVehicle (playerid,1242))
?

Добавлено (27.08.2013, 09:28)
---------------------------------------------
Излажу по-подробнее чего я хочу.
Есть код:

Код

EndMap()
{
print("EndMap");
  if(IsOnePlayer)
  {
      if(Winner != -1)
      {
       new string[256];
       GivePlayerMoney(Winner,5000);
       format(string, 256, "~y~~h~%s~n~~r~~h~ one on the map", name_encode(PlayerName(Winner), 2)); // когда игрок 1 на сервере победа не засчитывается
       TextDrawSetString(WinnerText, string);
       Winner = -1;
   }
  }
  else
  {
   if(PlayersOnMap == 1)
   {
       if(Winner != -1)
       {
        new string[256];
        GivePlayerMoney(Winner,5000);
        SetPlayerScore(Winner, GetPlayerScore(Winner)+1);
        format(string, 256, "{ffff00}* Игрок {ffffff}%s{ffff00} Победил! Он получает 5.000$ денег и +1 point к репутации!",name_encode(PlayerName(Winner), 2)); // когда игроки онлайн и один выживает ему дают бонус за победу
        SendClientMessageToAll(COLOR_RED,string);
        format(string, 256, "~y~~h~%s~n~~r~~h~won on the round.", name_encode(PlayerName(Winner), 2));
        TextDrawSetString(WinnerText, string);
        Winner = -1;
    }
   }
  }

  if(BeforeVoteTimerID == -1 && VoteTimerID == -1 && CountDownTimerID == -1 && !IsMapStarts)
  {
   BeforeVoteCount = 5;
   BeforeVoteTimerID = SetTimer("CountDownBeforeVoting", 1000, true);
  }
  return 1;
}

нужно добавить, когда игрок садиться в hunter ему давали бонусы..



Exclusive DM.
GeryyДата: Вторник, 27.08.2013, 11:14 | Сообщение # 1513
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
В колбэках которые определяют посадку в авто или в таймер добавить условие:
if(GetPlayerVehicleID(playerid) == 425)
{
бонус
}



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.

Сообщение отредактировал Geryy - Вторник, 27.08.2013, 11:15
nurahmat007Дата: Вторник, 27.08.2013, 22:43 | Сообщение # 1514
Новенький
Группа: Пользователи
Сообщений: 14
Награды: 0
Город: Казань
Репутация: 49
Замечания: 0%
Статус:
пример:
[pwn]public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
if(GetPlayerVehicleID(playerid) == 579)
{
GivePlayerMoney(playerid, 5000);//дадим бонус $5000
SendClientMessage(playerid, 0xFFFF00FF, "Вы нашли секретно авто и получили бонус {00FF00}$5000");//напишем ему сообщение в чат
}
}
} [/pwn]

_BigSm0ke_Дата: Вторник, 27.08.2013, 23:35 | Сообщение # 1515
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
Цитата (Weddew)
Где именно?


вот тут:
[pwn]mysql_function_query(dbHandle, "SET NAMES cp1251;", false, "", "");
mysql_function_query(dbHandle, "SET SESSION character_set_server=cp1251;", false, "", "");
new charset[24]; mysql_get_charset(charset, dbHandle, 24);
printf("DATABASE CHAR SET: %s",charset); [/pwn]



LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Вопросы и ответы по GTA SAMP [от 19.03.2013]
Страница 101 из 151«1299100101102103150151»
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM