PDA

Просмотр полной версии : [Вопрос] По AddPlayerClass.



Zeror_Dalglish
09.06.2014, 02:19
Сделал выбор скинов на ТД, но не знаю как сделать проверку в OnGameModeinit - AddPlayerClass. Например у грув скины, 105,106,107,108. И нажал на скин как проверить это все?

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

Вот так делаю, все нормально будет если что?


if(playertextid == skingrove[playerid][1])
{
AddPlayerClass(105, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
PlayerTextDrawHide(playerid, skingrove[playerid][0]);
PlayerTextDrawHide(playerid, skingrove[playerid][1]);
PlayerTextDrawHide(playerid, skingrove[playerid][2]);
PlayerTextDrawHide(playerid, skingrove[playerid][3]);
PlayerTextDrawHide(playerid, skingrove[playerid][4]);
PlayerTextDrawHide(playerid, skingrove[playerid][5]);
PlayerTextDrawHide(playerid, skingrove[playerid][6]);
PlayerTextDrawHide(playerid, skingrove[playerid][7]);
PlayerTextDrawHide(playerid, skingrove[playerid][8]);
PlayerTextDrawHide(playerid, skingrove[playerid][9]);
SpawnPlayer(playerid);
CancelSelectTextDraw(playerid);
}

Или так но не работает:


if(playertextid == skingrove[playerid][1])
{
//AddPlayerClass(105, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
Clothes[playerid] = SetPlayerSkin(playerid, 105);
PlayerTextDrawHide(playerid, skingrove[playerid][0]);
PlayerTextDrawHide(playerid, skingrove[playerid][1]);
PlayerTextDrawHide(playerid, skingrove[playerid][2]);
PlayerTextDrawHide(playerid, skingrove[playerid][3]);
PlayerTextDrawHide(playerid, skingrove[playerid][4]);
PlayerTextDrawHide(playerid, skingrove[playerid][5]);
PlayerTextDrawHide(playerid, skingrove[playerid][6]);
PlayerTextDrawHide(playerid, skingrove[playerid][7]);
PlayerTextDrawHide(playerid, skingrove[playerid][8]);
PlayerTextDrawHide(playerid, skingrove[playerid][9]);
SpawnPlayer(playerid);
CancelSelectTextDraw(playerid);
}

и в onplayerspawn


public OnPlayerSpawn(playerid)
{
Clothes[playerid] = SetPlayerSkin(playerid, Clothes[playerid]);
SetPlayerPos(playerid,-1421.8978,-291.1276,14.1484);
return 1;
}

DeimoS
09.06.2014, 07:51
http://wiki.sa-mp.com/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_deathmatch

Только вам надо проверять ID выдаваемого скина с теми ID, что относятся к определённой банде.
То, что вы делаете с массивами - полная несуразица

Zeror_Dalglish
09.06.2014, 08:08
http://wiki.sa-mp.com/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_deathmatch

Только вам надо проверять ID выдаваемого скина с теми ID, что относятся к определённой банде.
То, что вы делаете с массивами - полная несуразица

На WIKI, Я не увидел выбор скина...

DeimoS
09.06.2014, 08:53
На WIKI, Я не увидел выбор скина...

Смотрите на принцип разделения скинов по бандам. Естественно там не будет готового кода под вас. Там есть лишь идея, которую нужно чуть переделать

Zeror_Dalglish
09.06.2014, 09:07
Смотрите на принцип разделения скинов по бандам. Естественно там не будет готового кода под вас. Там есть лишь идея, которую нужно чуть переделать
Я и не наделся на готовый код, идей я не увидил.

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


http://wiki.sa-mp.com/wiki/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_deathmatch

Только вам надо проверять ID выдаваемого скина с теми ID, что относятся к определённой банде.
То, что вы делаете с массивами - полная несуразица
И что, с массивами не так? - почему бы 2 вариант не использовать? (Но, он не работает почему то)

DeimoS
09.06.2014, 09:18
Clothes[playerid] = SetPlayerSkin(playerid, Clothes[playerid]);
Вы выдаёте скин и после перезаписываете данные в переменной на 1 или 0 (зависит от результата работы функции). Где смысл?

Покажите полный код, а не только кусок и тогда можно будет давать советы

Zeror_Dalglish
09.06.2014, 09:24
Clothes[playerid] = SetPlayerSkin(playerid, Clothes[playerid]);
Вы выдаёте скин и после перезаписываете данные в переменной на 1 или 0 (зависит от результата работы функции). Где смысл?

Покажите полный код, а не только кусок и тогда можно будет давать советы
Какой полный? Это все что есть :)
Clothes[MAX_PLAYERS];

DeimoS
09.06.2014, 09:26
Какой полный? Это все что есть :)
Clothes[MAX_PLAYERS];

Ну где-то же вы создаёте текстдравы и вставляете в них скины. Чтоб дать толковый совет, который подойдёт именно под ваш случай, нужно знать как вы создаёте, как обрабатываете и к чему желаете прийти в итоге.

Zeror_Dalglish
09.06.2014, 09:28
Ну где-то же вы создаёте текстдравы и вставляете в них скины. Чтоб дать толковый совет, который подойдёт именно под ваш случай, нужно знать как вы создаёте, как обрабатываете и к чему желаете прийти в итоге.
Мне пример на 1 Тд покажите дальше я по примеру :)

skingrove[playerid][1] = CreatePlayerTextDraw(playerid,124.000000, 125.000000, "usebox");
PlayerTextDrawFont(playerid, skingrove[playerid][1], TEXT_DRAW_FONT_MODEL_PREVIEW);
PlayerTextDrawBoxColor(playerid, skingrove[playerid][1], 0x29DE05AA);
PlayerTextDrawBackgroundColor(playerid, skingrove[playerid][1], 0x29DE05AA);
PlayerTextDrawTextSize(playerid, skingrove[playerid][1], 70.0, 110.0);
PlayerTextDrawSetPreviewModel(playerid, skingrove[playerid][1], 105);
PlayerTextDrawSetSelectable(playerid, skingrove[playerid][1], true);
Ну показ думаю не надо?

DeimoS
09.06.2014, 09:42
// Если есть какая-то переменная, отвечающая за выбор скина, можно сделать проверку на значение этой переменной
for(new id; id != 10; id++)
{
if(playertextid != skingrove[playerid][id]) continue;
for(new i; i < 10; i++) PlayerTextDrawHide(playerid, skingrove[playerid][i]);
CancelSelectTextDraw(playerid);
switch(id)
{
case 0: Clothes[playerid] = /*ID скина*/;
case 1: Clothes[playerid] = /*ID скина*/;
case 2: Clothes[playerid] = /*ID скина*/;
case 3: Clothes[playerid] = /*ID скина*/;
case 4: Clothes[playerid] = /*ID скина*/;
case 5: Clothes[playerid] = /*ID скина*/;
case 6: Clothes[playerid] = /*ID скина*/;
case 7: Clothes[playerid] = /*ID скина*/;
case 8: Clothes[playerid] = /*ID скина*/;
case 9: Clothes[playerid] = /*ID скина*/;
}
return SpawnPlayer(playerid);
}

И в OnPlayerSpawn

SetPlayerSkin(playerid, Clothes[playerid]);

Zeror_Dalglish
09.06.2014, 09:45
// Если есть какая-то переменная, отвечающая за выбор скина, можно сделать проверку на значение этой переменной
for(new id; id != 10; id++)
{
if(playertextid != skingrove[playerid][id]) continue;
for(new i; i < 10; i++) PlayerTextDrawHide(playerid, skingrove[playerid][i]);
CancelSelectTextDraw(playerid);
switch(id)
{
case 0: Clothes[playerid] = /*ID скина*/;
case 1: Clothes[playerid] = /*ID скина*/;
case 2: Clothes[playerid] = /*ID скина*/;
case 3: Clothes[playerid] = /*ID скина*/;
case 4: Clothes[playerid] = /*ID скина*/;
case 5: Clothes[playerid] = /*ID скина*/;
case 6: Clothes[playerid] = /*ID скина*/;
case 7: Clothes[playerid] = /*ID скина*/;
case 8: Clothes[playerid] = /*ID скина*/;
case 9: Clothes[playerid] = /*ID скина*/;
}
return SpawnPlayer(playerid);
}

И в OnPlayerSpawn

SetPlayerSkin(playerid, Clothes[playerid]);

Это после чего ставим?

DeimoS
09.06.2014, 09:47
Это после чего ставим?

Первый код вставляете в OnPlayerClickPlayerTextDraw
Второй в OnPlayerSpawn (туда, где надо выдавать выбранный скин)

Zeror_Dalglish
09.06.2014, 15:12
Первый код вставляете в OnPlayerClickPlayerTextDraw
Второй в OnPlayerSpawn (туда, где надо выдавать выбранный скин)


if(playertextid == skingrove[playerid][1])
{
//AddPlayerClass(105, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
Clothes[playerid] = SetPlayerSkin(playerid, 105);
PlayerTextDrawHide(playerid, skingrove[playerid][0]);
PlayerTextDrawHide(playerid, skingrove[playerid][1]);
PlayerTextDrawHide(playerid, skingrove[playerid][2]);
PlayerTextDrawHide(playerid, skingrove[playerid][3]);
PlayerTextDrawHide(playerid, skingrove[playerid][4]);
PlayerTextDrawHide(playerid, skingrove[playerid][5]);
PlayerTextDrawHide(playerid, skingrove[playerid][6]);
PlayerTextDrawHide(playerid, skingrove[playerid][7]);
PlayerTextDrawHide(playerid, skingrove[playerid][8]);
PlayerTextDrawHide(playerid, skingrove[playerid][9]);
SpawnPlayer(playerid);
CancelSelectTextDraw(playerid);
}

Вместо этого?
И зачем цикл иза одного скина запускать:\?

DeimoS
09.06.2014, 15:17
if(playertextid == skingrove[playerid][1])
{
//AddPlayerClass(105, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
Clothes[playerid] = SetPlayerSkin(playerid, 105);
PlayerTextDrawHide(playerid, skingrove[playerid][0]);
PlayerTextDrawHide(playerid, skingrove[playerid][1]);
PlayerTextDrawHide(playerid, skingrove[playerid][2]);
PlayerTextDrawHide(playerid, skingrove[playerid][3]);
PlayerTextDrawHide(playerid, skingrove[playerid][4]);
PlayerTextDrawHide(playerid, skingrove[playerid][5]);
PlayerTextDrawHide(playerid, skingrove[playerid][6]);
PlayerTextDrawHide(playerid, skingrove[playerid][7]);
PlayerTextDrawHide(playerid, skingrove[playerid][8]);
PlayerTextDrawHide(playerid, skingrove[playerid][9]);
SpawnPlayer(playerid);
CancelSelectTextDraw(playerid);
}

Вместо этого?
И зачем цикл иза одного скина запускать:\?

Попробуйте вникнуть в мой код, для начала

Zeror_Dalglish
09.06.2014, 15:22
Попробуйте вникнуть в мой код, для начала

Ну я и вижу цикл, на 10 скинов токо зачем если в if(playertextid == skingrove[playerid][1]) 1 скин.
На счёт скрытие ТД, я не чего не говорю.

Zeror_Dalglish
10.06.2014, 13:59
Сделал на pvar, разве что, дослушаю DeimoS зачем запускать цикл иза одного скина?

DeimoS
10.06.2014, 14:18
Когда тему читал, отключили свет и не смог ответить. А потом забыл...


Ну я и вижу цикл, на 10 скинов токо зачем если в if(playertextid == skingrove[playerid][1]) 1 скин.
На счёт скрытие ТД, я не чего не говорю.

А где вы видите в моём коде

if(playertextid == skingrove[playerid][1])
?

Zeror_Dalglish
10.06.2014, 14:27
Я вижу, что цикл присутствует на скины, зачем из-а одного запускать цикл?

DeimoS
10.06.2014, 15:02
Я вижу, что цикл присутствует на скины, зачем из-а одного запускать цикл?

Из-за какого "одного"? Как я понял, каждая из 10-и переменных skingrove хранит ID текстдрава с своим скином. И мой код ищет какой текстдрав выбрал игрок и, соответственно, выдаёт ему нужный скин

Zeror_Dalglish
10.06.2014, 15:38
Из-за какого "одного"? Как я понял, каждая из 10-и переменных skingrove хранит ID текстдрава с своим скином. И мой код ищет какой текстдрав выбрал игрок и, соответственно, выдаёт ему нужный скин

нет, там бокс ещё.
Ясно, тему можно закрывать.
P.S: Сделал на pVAR