Перейти к содержанию
Авторизация  
Basis

кликабельные текстдравы

Рекомендуемые сообщения

Basis

Всем привет,недавно начал делать магазин одежды,и вот проблема с кликабельными текстдравами

if(playertextid == clothes[playerid][0])
    {
        if(Player[playerid][pSex] == 1)
        {
			if(GetPVarInt(playerid,"clothes") == 1)SetPlayerSkin(playerid,20),SetPVarInt(playerid,"clothes",2);
			else if(GetPVarInt(playerid,"clothes") == 2)SetPlayerSkin(playerid,21),SetPVarInt(playerid,"clothes",1);
		}
		if(Player[playerid][pSex] == 2)
		{
			if(GetPVarInt(playerid,"clothes") == 1)SetPlayerSkin(playerid,90),SetPVarInt(playerid,"clothes",2);
			else if(GetPVarInt(playerid,"clothes") == 2)SetPlayerSkin(playerid,40),SetPVarInt(playerid,"clothes",1);
		}
		return 1;
	}
	else if(playertextid == clothes[playerid][1])
    {
    if(Player[playerid][pMoney] < BizzInfo[OldVirtualWorld[playerid]][bPrice][GetPVarInt(playerid,"clothes")])
	{
    SetPlayerPos(playerid,1976.6362,-849.8705,598.8444);
	SetPlayerFacingAngle(playerid,270.4941);
	SetPlayerVirtualWorld(playerid,OldVirtualWorld[playerid]);
 	SetCameraBehindPlayer(playerid);
	SetPlayerSkin(playerid,OldSkins[playerid]);
	TogglePlayerControllable(playerid,1);
	DeletePVar(playerid,"clothes");
	PlayerTextDrawHide(playerid, clothes[playerid][0]);
	PlayerTextDrawHide(playerid, clothes[playerid][1]);
	PlayerTextDrawHide(playerid, clothes[playerid][2]);
   	CancelSelectTextDraw(playerid);
	SendClientMessage(playerid,COLOR_GREEN,"У вас недостаточно денег на покупку данной одежды");
	return 1;
	}
	if(BizzInfo[OldVirtualWorld[playerid]][bOwned] != 0 && BizzInfo[OldVirtualWorld[playerid]][bProduct] == 0)
	{
	SetPlayerPos(playerid,1976.6362,-849.8705,598.8444);
	SetPlayerFacingAngle(playerid,270.4941);
	SetPlayerVirtualWorld(playerid,OldVirtualWorld[playerid]);
 	SetCameraBehindPlayer(playerid);
	SetPlayerSkin(playerid,OldSkins[playerid]);
	TogglePlayerControllable(playerid,1);
	DeletePVar(playerid,"clothes");
	PlayerTextDrawHide(playerid, clothes[playerid][0]);
	PlayerTextDrawHide(playerid, clothes[playerid][1]);
	PlayerTextDrawHide(playerid, clothes[playerid][2]);
   	CancelSelectTextDraw(playerid);
	SendClientMessage(playerid,COLOR_GREEN,"В данном бизнесе закончилась одежда");
	return 1;
	}
	SetPlayerPos(playerid,1976.6362,-849.8705,598.8444);
	SetPlayerFacingAngle(playerid,270.4941);
	SetPlayerVirtualWorld(playerid,OldVirtualWorld[playerid]);
 	SetCameraBehindPlayer(playerid);
 	if(BizzInfo[OldVirtualWorld[playerid]][bOwned] != 0) BizzInfo[OldVirtualWorld[playerid]][bProduct] -= 1;
	SetPlayerSkin(playerid,GetPlayerSkin(playerid));
	Player[playerid][pChar] = GetPlayerSkin(playerid);
	TogglePlayerControllable(playerid,1);
	SetMoney(playerid,BizzInfo[OldVirtualWorld[playerid]][bPrice][GetPVarInt(playerid,"clothes")]);
	DeletePVar(playerid,"clothes");
	SendClientMessage(playerid,COLOR_GREEN,"Поздравляем с покупкой одежды");
 	PlayerTextDrawHide(playerid, clothes[playerid][0]);
	PlayerTextDrawHide(playerid, clothes[playerid][1]);
	PlayerTextDrawHide(playerid, clothes[playerid][2]);
   	CancelSelectTextDraw(playerid);
   	return 1;
    }
	else if(playertextid == clothes[playerid][2])
	{
	    SetPlayerPos(playerid,1976.6362,-849.8705,598.8444);
		SetPlayerFacingAngle(playerid,270.4941);
		SetPlayerVirtualWorld(playerid,OldVirtualWorld[playerid]);
 		SetCameraBehindPlayer(playerid);
		SetPlayerSkin(playerid,OldSkins[playerid]);
		TogglePlayerControllable(playerid,1);
		DeletePVar(playerid,"clothes");
		PlayerTextDrawHide(playerid, clothes[playerid][0]);
  		PlayerTextDrawHide(playerid, clothes[playerid][1]);
  		PlayerTextDrawHide(playerid, clothes[playerid][2]);
   		CancelSelectTextDraw(playerid);
   		return 1;
	}

всего 3 кнопки (Next/Select/Cancel),но при этом если я навожу на Next(clothes[0]) то  подсвечивается действие Select(clothes[1]),а если нажимаю Cancel(clothes[2]) то подсвечивается все 3 действия,а должно на каждый текстдрав своё действие,в чём может быть проблема?заранее благодарен

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rustyk

Точно такая же проблема... Уже месяц ищу решение)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Basis

подниму тему,так как не одному мне это нужно.Ещё есть вопрос про NPC,хочу поставить бота который должен просто стоять(можно ли через CreateObject,а если обязательно подключать NPC,то возможно чтобы он не занимал слот на сервере?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Basis

всё ещё ищу ответ и возникла ещё одна ошибочка,в общем сделал я бан по минутам

if(strcmp(cmd, "/ban", true) == 0)
	{
	    if(Player[playerid][pAdmin] <= 2)return SendClientMessage(playerid,COLOR_RED,"У вас нет прав");
	    tmp = strcharsplit(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "{3399FF}[Подсказка]:{FFFFFF} /ban [playerid] [число] [причина]");
        giveplayerid = strval(tmp);
        tmp = strcharsplit(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "{3399FF}[Подсказка]:{FFFFFF} /ban [playerid] [число] [причина]");
        new banday = strval(tmp);
        if(giveplayerid != INVALID_PLAYER_ID)
            {
                new length = strlen(cmdtext);
                while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
                new offset = idx;
                new result[64];
                while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                {
                    result[idx - offset] = cmdtext[idx];
                    idx++;
                }
                result[idx - offset] = EOS;
                if(!strlen(result)) return SendClientMessage(playerid, 0xFFFFFFFF, "{3399FF}[Подсказка]:{FFFFFF} /ban [playerid] [число] [причина]");
                format(string, sizeof(string), "%s забанил %s на %d(минут) с причиной %s", GN(playerid),GN(giveplayerid),banday,result);
                SendClientMessageToAll(COLOR_WHITE,string);
                Player[giveplayerid][pBannedTime] = gettime() + (banday*60);
                format(str,sizeof(str),"Здравствуйте, %s!\nВаш аккаунт только что заблокировали на сервере Basis RolePlay!\
				\nВас заблокировал администратор %s по причине: %s.\nКоличество минут: %d\
				\n\n\n\tС уважением, администрация проекта.",GN(giveplayerid), GN(playerid),result,banday);
				ShowPlayerDialog(playerid,77, DIALOG_STYLE_MSGBOX, "Информация",str,"Выйти","");
				Kick(giveplayerid);
			}
		return 1;
	}

и сделал проверку при коннекте
 

if(Player[playerid][pBannedTime] < gettime())
	{
        SendClientMessage(playerid, COLOR_WHITE,"Проверка блокировки");
        Kick(playerid);
        return 1;
	}

и при коннекте сервер просто перезагружается и ничего не происходит
перед этими строками только высвечивается

format(string,sizeof(string),"Гражданин(ка)[ID: %d] %s прибыл(а) в город",playerid,GN(playerid));
SendClientMessageToAll(COLOR_WHITE,string);

ниже авторизация/регистрация,в чём может быть проблема?

Изменено пользователем Basis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

В OnPlayerConnect не работает кик.

Юзайте SetPVarInt(playerid, "KICK", 1);

И в односекундный таймер if(GetPVarInt(playerid, "KICK") == 1) DeletePVar(playerid, "KICK"), Kick(playerid);

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Basis

@Max_Eitzen,впервые слышу,что Kick в OnPlayerConnect не используется,решил проблему,поставив таймер на кик,тем самым информация успевает выдаваться игроку

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.