Вообщем до этого момента особых проблем небыло, если что-то было нужно, делал по примеру других скриптов. Но тут я непонял ((. Вообщем хочется научится писать команды, и уметь выводить значения в функции скрипта..(Надеюсь ясно выразился)..Вот несколько вопросов..
Хотел я сделать команду для GF, на подобии /ban, только с применением этого FS, тоесть /tempban, никак немогу понять где в команде написанно например про причину, что необходимо ввести её, и как сделать так чтобы необходимо было ввести время и он всё это вместе взятое( id игрока, дни и причину) отправлял бы в
Code
CallRemoteFunction("SetPlayerBan", "dfs", playerid, time, reason).
(кстати что за "dfs"?). Вот что получается у меня:
Что нетак? Я правда не вставлял дефайны, ибо непонимает что такое TIME, а когда пытаешся объяснить, вообще в моде черти что тварится ).
2. Второй вопрос.
Сделал 2 объекта, хотел сделать так чтобы когда первый раз набираеш команду, закрывался, второй открывался, и т.д. Думал всё просто, делаем глобальную переменную, при наборе команды ставим проверку на значение её, если 1 открываем и ставим на 0 значение, и наоборот. а нет, чтото неработает, объясните мне, что тут может не работать? ))
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 не помогли..((
На вики нету описания return, %s и %d, и уж темболее strtok ). Насчет первого вопроса, ну кто поможет спасибо большое ну и +.. А второй вопрос мне вообще непонятен, вроде всё правильно, неработать там нечего, может кто видит ошибку.
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 раз перечитаны, а английский читать не могу..
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 }