PDA

Просмотр полной версии : [Вопрос] Как сократить название функции ?



BaBuIIIkaDrifteR
21.02.2015, 21:43
Мы имеем функцию GetPlayerColor и SetPlayerColor.
Как и сократить название функций.
Я знаю как то так ? Или надо еще stock создавать?
#define GetPlayerColor GPC
#define SetPlayerColor SPC

L0ndl3m
21.02.2015, 22:09
Очень не рекомендую этого делать.

BaBuIIIkaDrifteR
21.02.2015, 22:46
Очень не рекомендую этого делать.

Почему?

[ForD]
21.02.2015, 22:49
#define GetPlayerColor(%0) GPC(%0)
#define SetPlayerColor(%0,%1) SPC(%0,%1)
что то типо того

Spectrum
21.02.2015, 23:10
зачем сток то?

BaBuIIIkaDrifteR
22.02.2015, 00:48
И еще вопрос?
Как узнать сколько человек в виртуальном мире?


new World = strval(tmp);
SetPlayerVirtualWorld(playerid,World);
format(tmp,64,"Ваш виртуальный мир %d, в нем %d человек.",World,Что тут дополнить?);
SCM(playerid,-1,World);

L0ndl3m
22.02.2015, 01:32
Создайте переменную i для счётчика. Циклом пройдитесь по всем подключенным игрокам, одновременно проверяя их мир, если мир совпадает с миром игрока, то увеличивайте значение переменной i на единицу.

BaBuIIIkaDrifteR
22.02.2015, 01:52
Создайте переменную i для счётчика. Циклом пройдитесь по всем подключенным игрокам, одновременно проверяя их мир, если мир совпадает с миром игрока, то увеличивайте значение переменной i на единицу.

Вот так должно получиться?

for(new i; i < MAX_PLAYERS, world; i++)
if(IsPlayerConnected(i))
{
new world = strval(tmp);
SetPlayerVirtualWorld(i,world);
format(tmp,64,"Ваш виртуальный мир %d, в нем %d человек.",world,i);
SCM(i,-1,tmp);
}

Mazzilla
22.02.2015, 10:28
new world = strval(tmp), count;
SetPlayerVirtualWorld(playerid, world);
for(new i; i < MAX_PLAYERS; i++)
if(GetPlayerVirtualWorld(i) == world && playerid != i)
count++;
format(tmp,64,"Ваш виртуальный мир %d, в нем %d человек.",world,count);
SCM(playerid, -1, tmp);

BaBuIIIkaDrifteR
22.02.2015, 12:34
new world = strval(tmp), count;
SetPlayerVirtualWorld(playerid, world);
for(new i; i < MAX_PLAYERS; i++)
if(GetPlayerVirtualWorld(i) == world && playerid != i)
count++;
format(tmp,64,"Ваш виртуальный мир %d, в нем %d человек.",world,count);
SCM(playerid, -1, tmp);

Спасибо

- - - Добавлено - - -

Пишу виртуальный мир 0, пишет в нем 49 человек

L0ndl3m
22.02.2015, 13:18
Небось вместо %d используете %s?

BaBuIIIkaDrifteR
22.02.2015, 20:49
Небось вместо %d используете %s?

Нет я что дурак ? )))
А если захожу в виртуальный мир №1, пишет "Ваш виртуальный мир 1, в нем 0 человек."
Можно сделать что бы писало "Ваш виртуальный мир 1, вы в нем один", если в нем нету людей. ? А если есть писать кол-во людей.

new world = strval(tmp), worlds;
SetPlayerVirtualWorld(playerid, world);
for(new i; i < MAX_PLAYERS; i++)
if(GetPlayerVirtualWorld(i) == world && playerid != i)
worlds++;
format(tmp,144,"Ваш виртуальный мир %d, в нем %d человек.",world,worlds);
SCM(playerid,-1,tmp);

L0ndl3m
22.02.2015, 21:32
Кстати, только сейчас сообразил почему 49. Добавьте в цикл проверку на подключенность игрока с помощью IsPlayerConnected и проблема решится.

BaBuIIIkaDrifteR
22.02.2015, 22:12
Кстати, только сейчас сообразил почему 49. Добавьте в цикл проверку на подключенность игрока с помощью IsPlayerConnected и проблема решится.

Тогда придеться foreach добавлять?

new world = strval(tmp), worlds;
SetPlayerVirtualWorld(playerid, world);
for(new i; i < MAX_PLAYERS; i++)
if(!IsPlayerConnected(i)) return 1;
if(GetPlayerVirtualWorld(i) == world && playerid != i)
worlds++;
format(tmp,144,"Ваш виртуальный мир %d, в нем %d человек.",world,worlds);
SCM(playerid,-1,tmp);

L0ndl3m
22.02.2015, 22:28
if(!IsPlayerConnected(i)) return 1;
if(GetPlayerVirtualWorld(i) == world && playerid != i)

на


if(IsPlayerConnected(i) && GetPlayerVirtualWorld(i) == world && playerid != i)

BaBuIIIkaDrifteR
23.02.2015, 00:23
Спасибо

BaBuIIIkaDrifteR
23.02.2015, 22:29
Можно сделать что бы писало "Ваш виртуальный мир 1, вы в нем один", если в нем нету людей. ? А если есть писать кол-во людей.

Пельмень
23.02.2015, 22:59
Можно сделать что бы писало "Ваш виртуальный мир 1, вы в нем один", если в нем нету людей. ? А если есть писать кол-во людей.


if (0 == worlds)
{
format....
}

BaBuIIIkaDrifteR
24.02.2015, 00:10
if (0 == worlds)
{
format....
}


new world = strval(tmp), worlds;
SetPlayerVirtualWorld(playerid, world);
for(new i; i < MAX_PLAYERS; i++)
if(IsPlayerConnected(i) && GetPlayerVirtualWorld(i) == world && playerid != i)
worlds++;
if(0 == worlds) format(tmp,144,"Ваш виртуальный мир %d, в нем вы один.",world);
else format(tmp,144,"Ваш виртуальный мир %d, в нем %d человек.",world,worlds);
SCM(playerid,-1,tmp);
Правильно я код сделал?

L0ndl3m
24.02.2015, 00:23
Верно.