shape1
shape2
shape3
shape4
shape7
shape8

Команда /count как на FGRP


Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Думаю все знают что эта за команда, но для тех кто не знает напишу. Команда для обратного отсчета времени, хорошо подходит для старта гонок и т.д

Ко всем new добавляем:

new countrobit;
new countnew = 0;

В public OnPlayerCommandText вставляем:

if(strcmp("/count", cmdtext, true, 10) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
if(countrobit) return SCM(playerid, -1, "Таймер уже работает, дождись окончания!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, -1, "/count [от 3 до 10]");
if(strval(tmp) < 3 || strval(tmp) > 10) return SendClientMessage(playerid, -1, "От 3 до 10");
SetPVarInt(playerid, "COUNT", strval(tmp));
countrobit = true;
strval(tmp) += countnew;
return 1;
}

В секундный таймер вставляем:

if(GetPVarInt(i,"COUNT") > 0)
{
if(GetPVarInt(i,"COUNT") == countnew)
{
GameTextForAll("~h~~g~GO GO GO", 1000, 4);
DeletePVar(i,"COUNT");
countrobit = false;
countnew = 0;
}
else
{
new string[10];
format(string, sizeof(string), "~g~%d", GetPVarInt(i,"COUNT") - countnew);
GameTextForAll(string, 1500, 4);
countnew += 1;
return 1;
}
}

Вот и всё, буду проблемы - пишите.

Автор кода: Amfy

 
Последнее редактирование модератором:
A

Amfy

Гость
Гость
SetPVarInt(playerid, "COUNT", params[0]);

Замените на:

Код:
SetPVarInt(playerid, "COUNT", strval(tmp));
 

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Oops! Точно, спасибо.

 

arzuman

Новичок
Пользователь
28.07.2015
2
0
0
,Ругался на эту строчку:

strval(tmp) += countnew;

Код:
error 022: must be lvalue (non-constant)
присвоил переменную

new time = strval(tmp);

time += countnew;[/php]

Всё скомпилировалось удачно, только вот реакции никакой от команды. Если прописать просто /count, то да, выдает

SendClientMessage(playerid, -1, "/count [от 3 до 10]");

но вот если прописать к примеру /count 5, то совершенно ничего не происходит.

вот мой код:

начало

Код:
new countrobit;
Код:
new countnew = 0;
public OnPlayerCommandText

Код:
if(strcmp("/count", cmdtext, true, 10) == 0)
{
    if(!IsPlayerConnected(playerid)) return 1;
    if(countrobit) return SCM(playerid, -1, "Таймер уже работает, дождись окончания!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, -1, "/count [от 3 до 10]");
    if(strval(tmp) < 3 || strval(tmp) > 10) return SendClientMessage(playerid, -1, "От 3 до 10");
    SetPVarInt(playerid, "COUNT", strval(tmp));
    countrobit = true;
    strval(tmp) += countnew;
    return 1;
}
public OnGameModeInit
 
Код:
SetTimer("Timer", 1000, false);
конец кода
 
Код:
forward Timer2(i);
public Timer2(i)
{
    if(GetPVarInt(i,"COUNT") > 0)
{
    if(GetPVarInt(i,"COUNT") == countnew)
    {
    GameTextForAll("~h~~g~GO GO GO", 1000, 4);
    DeletePVar(i,"COUNT");
    countrobit = false;
    countnew = 0;
    }
    else
    {
     new string[10];
    format(string, sizeof(string), "~g~%d", GetPVarInt(i,"COUNT") - countnew);
    GameTextForAll(string, 1500, 4);
    countnew += 1;
        return 1;
    }
}
 return 1;
}

 
Последнее редактирование модератором: