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

 



 
          





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





Последние Файлы 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
Модератор форума: AXE, Weddew  
выбор человека рандомно
bama_boyДата: Среда, 17.02.2010, 14:30 | Сообщение # 1
Уверенный в себе
Группа: Продвинутые
Сообщений: 214
Награды: 2
Город: Тула
Репутация: 13
Замечания: 0%
Статус:
народ, подскажите, как рандомно выбрать игрока на сервере и задать ему переменную.
из числа находящихся в онлайне.



И я кричу - остановите пленку
Это кино я уже смотрел
Эй, режиссер заканчивай съемку
А он смеется в объектив как в прицел.

EakwarpДата: Среда, 17.02.2010, 15:52 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
new tvoyaperemennaya[MAX_PLAYERS];

new bit;
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i))bit=i;
new rand = random(bit);
tvoyaperemennaya[rand]=139128312;


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.


Сообщение отредактировал Eakwarp - Среда, 17.02.2010, 15:53
bama_boyДата: Среда, 17.02.2010, 16:24 | Сообщение # 3
Уверенный в себе
Группа: Продвинутые
Сообщений: 214
Награды: 2
Город: Тула
Репутация: 13
Замечания: 0%
Статус:
спасибо большое)
еклмн



И я кричу - остановите пленку
Это кино я уже смотрел
Эй, режиссер заканчивай съемку
А он смеется в объектив как в прицел.

stepmexДата: Среда, 17.02.2010, 22:39 | Сообщение # 4
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (Eakwarp)
new tvoyaperemennaya[MAX_PLAYERS];

new bit;
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i))bit=i;
new rand = random(bit);
tvoyaperemennaya[rand]=139128312;

не ожидал от тебя такого бреда crazy
на сервере 1 человек с ИД 24
счетчик прогоняте 100 значений, предположим прописано 100 слотов.
записывает в bit = 24
в rand записывается случайное число от 0 до 24, дальше присваеваем число игрокам которых нет на сервере!



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Dima-kunДата: Четверг, 18.02.2010, 10:46 | Сообщение # 5
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
[pwn]new maxid;

public OnPlayerConnect(playerid)
{
if(maxid<playerid)
{
maxid=pplayerid;
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
if(playerid==maxid)
{
for(new i;i<maxid;--i)
{
if(IsPlayerConnected(maxid)) {maxid--;continue;}
else
{
maxid=i;break;
}

}
}
return 1;
}
public whatewer()
{
new rand;
do
{
rand=random(maxid);
}
while(!IsPlayerConnected(rand));
}[/pwn]

можно написать функцию чтобы узнать макс ид на сервере
[pwn]new maxid;

for(new i;i<GetMaxPlayers();++i)
{
if(IsPlayerConnected(i))
{
if(i>maxid){maxid=i;continue;}
else {maxid=i;break;}
}
}

public whatewer()
{
new rand;
do
{
rand=random(maxid);
}
while(!IsPlayerConnected(rand));
}[/pwn]

2ой способ может и бред хз не проверял. а первый должен работать


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
stepmexДата: Четверг, 18.02.2010, 19:13 | Сообщение # 6
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
DizeL-ZR, а теперь объясни толково накой тебе максимальный ИД на сервере?


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
EakwarpДата: Четверг, 18.02.2010, 19:45 | Сообщение # 7
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
stepmex, ну конечно можно сделать массив в который будет загонятся переменные игроков онлайн, и это всего еще пару строк, но здесь цикл несет лишь смысл поиска максимального ида, да и я понядеялся на то что кто то сделает замечание на эту тему.

Добавлено (18.02.2010, 19:45)
---------------------------------------------
собственно

new tvoyaperemennaya[MAX_PLAYERS];

new players[MAX_PLAYERS];
new bit2;
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i)){players[bit2]=i;bit2++;}
new rand = random(bit2);
tvoyaperemennaya[players[rand]]=139128312;


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
stepmexДата: Четверг, 18.02.2010, 20:46 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Все гораздо банальнее fun
[pwn]new tvoyaperemennaya[MAX_PLAYERS],numplayers = 0;

public OnPlayerConnect(playerid)
{
...
numplayers++;
return 1;
}

public OnPlayerDisconnect(playerid,reason)
{
...
numplayers--;
return 1;
}

...
new key = random(numplayers);
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i))
{
if(key = 0){tvoyaperemennaya[i]=139128312;break;}
else key--;
}
...[/pwn]


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
EakwarpДата: Четверг, 18.02.2010, 20:51 | Сообщение # 9
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
stepmex, зачем то еще использовать глобальные переменные, фи, мой способ наиболее практичный и оптимальный.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
stepmexДата: Четверг, 18.02.2010, 21:45 | Сообщение # 10
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (Eakwarp)
зачем то еще использовать глобальные переменные
переменная с количеством игроков есть на 95% серверах
Quote (Eakwarp)
наиболее практичный
тем что каждый раз сохдается массиы на 500 слотов?
добавь, выделено красным:
Quote
public OnPlayerCommandText(...)
{
new fjksdfksd[MAX_PLAYERS][20];
...
return 1;
}
и через 15-20 команд на сервере ни чего не работает crazy
Так что уж лучше 1 ячейка глобальная, чем 500 динамических.
Quote (Eakwarp)
оптимальный.
чем?



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
EakwarpДата: Пятница, 19.02.2010, 00:48 | Сообщение # 11
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Quote (stepmex)
new fjksdfksd[MAX_PLAYERS][20];

и нахрен создавать 10 тысяч переменных?...

не утрируй элементарный код до состояния бреда.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
ZirkiNДата: Пятница, 19.02.2010, 05:24 | Сообщение # 12
Постоялец
Группа: Продвинутые
Сообщений: 326
Награды: 15
Город: Новосибирск
Репутация: 144
Замечания: 0%
Статус:
Quote (stepmex)
new key = random(numplayers);
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i))
{
if(key = 0){tvoyaperemennaya[i]=139128312;break;}
else key--;
}

А в итоге-то вот что получается:
key = random(numplayer);
if(IsPlayerConnected(key))
tvoyaperemennaya[key]=139128312;

Quote (Eakwarp)
new players[MAX_PLAYERS];
new bit2;
for(new i=0;i<GetMaxPlayers();i++)if(IsPlayerConnected(i)){players[bit2]=i;bit2++;}
new rand = random(bit2);
tvoyaperemennaya[players[rand]]=139128312;

Quote (Eakwarp)
фи, мой способ наиболее практичный и оптимальный.

Дело в том, что постоянный пересчет не может быть оптимальным решением там, где его можно избежать.

вот примерно в этом направлении можно двигаться (работоспособность не проверял - нету возможности):

Code
new plvar[MAX_PLAYERS][3]; //0 - ids, 1 - sids, 2 - var
new numplayers = 0;

public OnPlayerConnect(playerid)
{
plvar[numplayers][0]=playerid; // сохранили в номер игрока
plvar[playerid][1]=numplayers; // сохранили игроку номер
numplayers++; // приготовились к следующему
...
return 1;
}

public OnPlayerDisconnect(playerid,reason)
{
numplayers--; // обращаемся к предыдущему (он является последним заполненным в OnPlayerConnect)
if(plvar[numplayers][0] != playerid){ // если отключившийся игрок не последний в массиве
   plvar[plvar[playerid][1]][0] = plvar[numplayers][0]; // перемещаем последнего на место отключившегося
   plvar[plvar[numplayers][0]][1] = plvar[playerid][1]; // перемещаем его номер
}
...
return 1;
}

Присвоение случайному в данный момент активному игроку
...
plvar[random(numplayers)][2] = значение переменной;
...

Чтение для игрока с идом playerid
...
куда присвоить = plvar[plvar[playerid][1]][2];
...

как-то так



all:GMCC ~2%
current:GMCC.C.L0 ~49%


Сообщение отредактировал ZirkiN - Пятница, 19.02.2010, 05:49
HELKERNДата: Пятница, 19.02.2010, 08:48 | Сообщение # 13
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 767
Награды: 17
Город: Улан-Удэ
Репутация: 206
Замечания: 0%
Статус:
stepmex,

стоит ли использовать в цикле GetMaxPlayers() если у тебя есть numplayers?

Dima-kunДата: Пятница, 19.02.2010, 16:01 | Сообщение # 14
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
stepmex, чтобы вставить его в random


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
stepmexДата: Пятница, 19.02.2010, 17:11 | Сообщение # 15
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
HELKERN, количество игроков и максимальный ID зачастую различаются, и инногда второе больше первого!
Да обязательно.



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
  • Страница 1 из 1
  • 1
Поиск:





 


 


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