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

 



 
          





Рекомендуем:





Последние Файлы 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
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
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
  • Страница 1 из 1
  • 1
Модератор форума: Alcoholik  
Несколько вопросов.
_Rage_Дата: Среда, 02.04.2008, 16:46 | Сообщение # 1
Новенький
Группа: Пользователи
Сообщений: 61
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
Вообщем до этого момента особых проблем небыло, если что-то было нужно, делал по примеру других скриптов. Но тут я непонял ((. Вообщем хочется научится писать команды, и уметь выводить значения в функции скрипта..(Надеюсь ясно выразился)..Вот несколько вопросов..

Для начала самый главный ))

Вот FS временного бана.

Хотел я сделать команду для GF, на подобии /ban, только с применением этого FS, тоесть /tempban, никак немогу понять где в команде написанно например про причину, что необходимо ввести её, и как сделать так чтобы необходимо было ввести время и он всё это вместе взятое( id игрока, дни и причину) отправлял бы в

Code
CallRemoteFunction("SetPlayerBan", "dfs", playerid, time, reason).
(кстати что за "dfs"?). Вот что получается у меня:

Code

  if(strcmp(cmd, "/tempban", true) == 0)
  {
      if(IsPlayerConnected(playerid))
      {
       tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
     SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /tempban [playerid/PartOfName] [days] [reason]");
     return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 3)
    {
        if(IsPlayerConnected(giveplayerid))
        {
            if(giveplayerid != INVALID_PLAYER_ID)
            {
          GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
       GetPlayerName(playerid, sendername, sizeof(sendername));
       new length = strlen(cmdtext);
       while ((idx < length) && (cmdtext[idx] <= ' '))
       {
        idx++;
       }
       new offset = idx;
       new Float:time = floatstr(tmp);
       new result[64];
       while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
       {
        result[idx - offset] = cmdtext[idx];
        idx++;
       }
       result[idx - offset] = EOS;
       if(!strlen(result))
       {
        SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /tempban [playerid/PartOfName] [days] [reason]");
        return 1;
       }
       new year, month,day;
       getdate(year, month, day);
       format(string, sizeof(string), "AdmCmd: %s áûë çàáàíåí %s íà %s ñóòîê, ïðè÷èíà: %s (%d-%d-%d)", giveplayer, time, sendername, (result),month,day,year);
       BanLog(string);
       format(string, sizeof(string), "AdmCmd: %s áûë çàáàíåí %s, ïðè÷èíà: %s", giveplayer, time, sendername, (result));
       SendClientMessageToAll(COLOR_LIGHTRED, string);
       CallLocalFunction("SetPlayerBan", "dfs", giveplayerid, time, (result));
       return 1;
      }
     }
    }
    else
    {
     format(string, sizeof(string), "   %d Òàêîãî èãðîêà íåòó.", giveplayerid);
     SendClientMessage(playerid, COLOR_GRAD1, string);
    }
   }
   return 1;
  }

Что нетак? Я правда не вставлял дефайны, ибо непонимает что такое TIME, а когда пытаешся объяснить, вообще в моде черти что тварится ).

2. Второй вопрос.

Сделал 2 объекта, хотел сделать так чтобы когда первый раз набираеш команду, закрывался, второй открывался, и т.д. Думал всё просто, делаем глобальную переменную, при наборе команды ставим проверку на значение её, если 1 открываем и ставим на 0 значение, и наоборот. а нет, чтото неработает, объясните мне, что тут может не работать? ))

Code

new Object1;
new Object2;

new Obj1 = 0;
new Obj2 = 0;

     Object1 = CreateObject(968,-950.795288,-1056.372925,96.453481,0.000000,0.000000,-135.000000);
     Object2 = CreateObject(968,-950.924768,-1053.554932,96.453481,0.000000,0.000000,-315.000000);

     if (strcmp(cmdtext, "/object1", true)==0)
     {
       if(IsPlayerConnected(playerid))
       {
          if (gTeam[playerid] == 2 || IsACop(playerid) && (Obj1))
          {
              Obj1 = 1;
              SetObjectRot(Object1,0.000000,-90.000000,-135.000000);
          }
          else if (gTeam[playerid] == 2 || IsACop(playerid) && (!Obj1))
          {
              Obj1 == 0;
             SetObjectRot(Object1,0.000000,0.000000,-135.000000);
          }
          else
          {
              SendClientMessage(playerid, COLOR_GREY, " Вы не Коп / Агент FBI / Национальный гвардеец !");
       }
   }
   return 1;
     }
      

     if (strcmp(cmdtext, "/object2", true)==0)
     {
       if(IsPlayerConnected(playerid))
         {
          if (gTeam[playerid] == 2 || IsACop(playerid) && (Obj2))
          {
              Obj2 = 1;
        SetObjectRot(Object2,0.000000,-90.000000,-315.000000);
          }
          else if (gTeam[playerid] == 2 || IsACop(playerid) && (!Obj2))
       {
         Obj2 = 0;
              SetObjectRot(Object2,0.000000,0.000000,-315.000000);
          }
          else
          {
              SendClientMessage(playerid, COLOR_GREY, " Вы не Коп / Агент FBI / Национальный гвардеец !");
          }
       }
       return 1;
     }

new Obj1 = 0;
new Obj2 = 0;

Эти переменные были вставлены в начало мода, за пределами пабликов.
Всё нормально компилится, но когда пишеш /object1, он закрывает, а второй раз пишеш игнор, вообще ничего не делает. Тоже самое и со второй командой. Подскажите чему тут не работать?

3. Небольшые вопросы.

Чем отличается %s и %d и прочие такие "штучки" при форматировании строки?
Чем отличается return 1; от return 0;, или того хуже return [Название функции]; к примеру return MyCommand;?
Что такое strtok?

Вообщем вопросов много ), пока хватит, за помощь наделю плюсом желающих.

Добавлено (02.04.2008, 16:37)
---------------------------------------------
Ну мою тему как бы и незаметили, UP

Добавлено (02.04.2008, 16:46)
---------------------------------------------
Ну хотябы помогите со вторым вопросом, ну можно еще и ответы на 3 дать, на gtascript не помогли..((

XAOCДата: Среда, 02.04.2008, 16:59 | Сообщение # 2
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
wiki.sa-mp.com
_Rage_Дата: Среда, 02.04.2008, 17:25 | Сообщение # 3
Новенький
Группа: Пользователи
Сообщений: 61
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
На вики нету описания return, %s и %d, и уж темболее strtok ).
Насчет первого вопроса, ну кто поможет спасибо большое ну и +..
А второй вопрос мне вообще непонятен, вроде всё правильно, неработать там нечего, может кто видит ошибку.

Прошу помочь кто чем сможет..Хотяб 2 вопрос.. sorry

XAOCДата: Среда, 02.04.2008, 17:47 | Сообщение # 4
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
серьезно чтоли ?, или может ты просто поиском не учился пользоваться ?

Code
        %b представлет число в двоичном корне.
  %c представлет символ.
  %d представлет двойное (или нормальное) целое число.
  %f представлет вещественно число.
  %i представлет целое число.
  %s представлет строку.
  %x представлет число в шестнадцатиричном формате.

Strtok

_Rage_Дата: Среда, 02.04.2008, 17:56 | Сообщение # 5
Новенький
Группа: Пользователи
Сообщений: 61
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
Нехочу тут спорить, но:

Quote (XAOC)

%s , %d , итд

There is currently no text in this page, you can search for this page title in other pages or edit this page.
Нету странички..

Quote (XAOC)

Strtok

Этоже просто функция которую можно скопировать и в мод вставить..Разве там описание к ней?
Тем более русские странички на wiki.sa-mp.com, мною давно по 5 раз перечитаны, а английский читать не могу.. mda

XAOCДата: Среда, 02.04.2008, 17:57 | Сообщение # 6
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
_Rage_, смотри пост заного
_Rage_Дата: Среда, 02.04.2008, 17:58 | Сообщение # 7
Новенький
Группа: Пользователи
Сообщений: 61
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
Во спасибо, уже прояснятся начинает, с меня плюс cool
Если бы посмотрел что нитак со вторым вопросом вообще бы было супер cool

AlekseyДата: Среда, 02.04.2008, 18:08 | Сообщение # 8
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
else if (gTeam[playerid] == 2 || IsACop(playerid) && (!Obj1))

он выбирает одно из двух
чисто на выбор сервера

можешь таймер заюзать и указать сколько ты хочешь секунд


вааааааааааййй..// :(0
_Rage_Дата: Среда, 02.04.2008, 18:11 | Сообщение # 9
Новенький
Группа: Пользователи
Сообщений: 61
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
Вроде понял, а работоспособности отпишу позже, а пока лови плюс )
XAOCДата: Среда, 02.04.2008, 18:12 | Сообщение # 10
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
Quote
strtok( const string[], &index, const seperator[] = " " )
{
new
index2,
result[ 30 ];//задаём переменные

index2 = strfind(string, seperator, false, index); //ищем в переменной string, то что задано в seperator, дальше идёт синтаксис который ты можеш найти на вики


if(index2 == -1) //если переменная равна -1 то выполняем
{
if(strlen(string) > index) // если длинна строки переменной string больше index то выполняем далее
{
strmid(result, string, index, strlen(string), 30); // помещаем в переменную result то что в string, начальная позиция вставки равна index, конечная strlen(string) , максимальная длинна 30 символов
index = strlen(string); //приравниваем index к strlen(string)
}
return result; // Возвращаем то что у нас в result
}
if(index2 > (index + 29)) // Если index2 больше index + 29 то выполняем
{
index2 = index + 29; // приравниваем index2 к index + 29
strmid(result, string, index, index2, 30); // Оптьже производим действия со вставкой строк
index = index2; // index приравниваем index2
return result; // Возвращаем то что у нас в result
}
strmid(result, string, index, index2, 30); // Опять-же вставка строк
index = index2 + 1; // index приравниваем к index2 + 1
return result;// Возвращаем то что у нас в result
}

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





 


 


 
Хостинг от uCoz samp.at.ua