Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Работа проститутки

Статус
В этой теме нельзя размещать новые ответы.

KatranLife

Изучающий
Пользователь
Регистрация
15 Июл 2014
Сообщения
900
Лучшие ответы
0
Репутация
284
Всем привет, вот решил написать работу проститутки.
Ну что ж.. Начнем

Добавляем к вашему основному енуму, обычно он pInfo
PHP:
pWhore, pAmountSex, bool:pDisease
В загрузку аккаунта
PHP:
PlayerInfo[playerid][pWhore] = cache_get_field_content_int(0, "pWhore", connects);
PlayerInfo[playerid][pDisease] = bool:cache_get_field_content_int(0, "pDisease", connects);
PlayerInfo[playerid][pAmountSex] = cache_get_field_content_int(0, "pAmountSex", connects);
В OnPlayerConnect
PHP:
SetPVarInt(playerid, #SexOffer, 999);
Основные кмд для проституток
PHP:
CMD:sex(playerid, params[])
{
    if(PlayerInfo[playerid][pWhore] != 1) return SCM(playerid, COLOR_WHITE, "Можно только проститутке");
    if(GetPVarInt(playerid, "FloodWhore") > gettime()) return SCM(playerid, -1, "• {AC0000}[Ошибка] {ffffff}Использовать эту команду можно раз в 10 секунд.");
    if(sscanf(params, "dd",params[0], params[1])) return SCM(playerid , -1, "• {FFC800}[Подсказка] {ffffff}Используйте /sex [id] [цена]");
	if(!ProxDetectorS(2.0, playerid, params[0])) return SCM(playerid, COLOR_WHITE, "Вы слишком далеко!");
	if(playerid == params[0]) return true;
	new string[128];
	format(string, 128, "%s[%d] предложил(-а) Вам заняться сексом за %i$. Вы согласны?", PlayerInfo[playerid][pNames], playerid, params[1]);
	SPD(params[0], 9195, DIALOG_STYLE_MSGBOX, "{FF6F00}Интимное предложение", string, "Принять", "Отмена");
	SetPVarInt(params[0], "SexOffer", playerid);
	PlayerInfo[playerid][pCash] += params[1];
	PlayerInfo[params[0]][pCash] -= params[1];
	SetPVarInt(playerid, "FloodWhore",gettime()+10);
	return 1;
}
Case для секаса
PHP:
		case 9195:
	    {
	        if(!response) return 1;
	        SCMF(GetPVarInt(playerid, "SexOffer"), COLOR_WHITE, "%s cогласился на секс с Вами.", PlayerInfo[GetPVarInt(playerid, "SexOffer")][pNames]);
			ApplyAnimation(GetPVarInt(playerid, "SexOffer"),"SNM","SPANKINGW",4.1,0,0,0,0,0,1);
			ApplyAnimation(playerid,"SNM","SPANKEDW",4.1,0,0,0,0,0,1);
			PlayerInfo[GetPVarInt(playerid, "SexOffer")][pAmountSex] += 1;
			UpdatePlayerData(GetPVarInt(playerid, "SexOffer"), "pAmountSex", PlayerInfo[GetPVarInt(playerid, "SexOffer")][pAmountSex]);
			if(PlayerInfo[GetPVarInt(playerid, "SexOffer")][pAmountSex] >= 20) SendClientMessage(playerid, COLOR_ORANGE, "Вы занялись сексом с опытной девочкой."), SCMF(playerid, COLOR_ORANGE, "Вы заболели %s", (random(2)?("Сифилисом"):("Спидом"))), PlayerInfo[playerid][pDisease] = true, UpdatePlayerData(playerid, "pDisease", PlayerInfo[playerid][pDisease]);
			else SendClientMessage(playerid, COLOR_ORANGE, "Вы занялись сексом с девушкой.");
		}
Case для работы теперь
PHP:
	case 9232:
	    {
	    	if(!response) return 1;
			switch(listitem)
			{
            case 0:
			{
			    if(PlayerInfo[playerid][pSex] == 1) return SCM(playerid, COLOR_WHITE, "{FFFFFF}Сутенёр: вали отсюда, еблан.");
				SCM(playerid, COLOR_WHITE, "{FFFFFF}Сутенёр: оуу, какая хорошенькая. Мы берём тебя!");
				SetActorChatBubble(Actor[0], "{FFFFFF}Сутенёр: оуу, какая хорошенькая. Мы берём тебя!", COLOR_WHITE, 10.0, 4);
				ApplyActorAnimation(Actor[0],"PED","IDLE_CHAT",4.1,0,0,0,0,0);
				SetTimerEx("AnimClearActor", 1500, 0, "d", Actor[0]);
                           	PlayerInfo[playerid][pWhore] = 1;
	                        UpdatePlayerData(playerid, "pWhore", PlayerInfo[playerid][pWhore]);//Надеюсь у всех есть, если будут ошибки пишите в коменты.
			}
 			case 1:
			{
			    ShowPlayerDialog(playerid, 9353, DIALOG_STYLE_LIST, "Выбор девочки", "Девочки онлайн\nЦена на девочку", "Выбрать", "Назад");
			}
		}
	}
		case 9353:
        {
            if(!response) return 1;
            switch(listitem)
            {
	            case 0:
	                {
	                    new string[560];
					    foreach(new i: Player)
					    {
					        if(IsPlayerNPC(i) || !PlayerInfo[i][pWhore]) continue;
					        format(string, sizeof(string), "%sПроститутка %s [ID: {FF8C00}%d{FFFFFF}] Кол-во парней %d\n", string, PlayerInfo[i][pNames],i, PlayerInfo[i][pAmountSex]);
					    }
					    if(!strlen(string)) strcat(string, "{FFFFFF}Никого нет.");
					    SPD(playerid, 1019, DIALOG_STYLE_MSGBOX, "{26A0C9}Девочки онлайн:", string, "Окей", "");
	                }
	            case 1: return SCM(playerid, COLOR_WHITE, "Цена за одну девочку - 500 RUB");
            }
        }
Создадим актёра и 3Д текст в OnGameModeInit
PHP:
Actor[0] = CreateActor(249, 1210.8491,4.1315,1000.9219,179.6907); //BORDEL
ApplyActorAnimation(Actor[0], "DEALER","Dealer_idle", 4.1, 1, 0, 0, 1, 0);
CreateDynamic3DTextLabel("{ffffff}Взаимодействие: {ff6f00}''space''",COLOR_WHITE,1210.8491,4.1315,1000.9219,25.0);//BORDEL
CreateDynamic3DTextLabel("{ffffff}Сутенёр",COLOR_WHITE,1210.8491,4.1315,1000.9219+1,25.0);//BORDEL
В OnPlayerKeyStateChange
PHP:
	if(PRESSED(KEY_SPRINT))//BORDEL
	{
		if(IsPlayerInRangeOfPoint(playerid,2.5,1210.8491,4.1315,1000.9219))
		{
			SCM(playerid, COLOR_WHITE, "{FFFFFF}Сутенёр: эй, че тебе нужно?");
			SetActorChatBubble(Actor[0], "Сутенёр: эй, че тебе нужно?", COLOR_WHITE, 10.0, 4);
			ApplyActorAnimation(Actor[0],"PED","IDLE_CHAT",4.1,0,0,0,0,0);
			SetTimerEx("AnimClearActor", 1500, 0, "d", Actor[0]);
			SetTimerEx("dialogbordel",1500,false,"i",playerid);
		}
	}
В конец мода
PHP:
forward dialogbordel(playerid);
public dialogbordel(playerid)
{
    ShowPlayerDialog(playerid, 9232, DIALOG_STYLE_LIST, "Выбирите свой ответ:", "Здравствуйте, я пришла на работу\nМне нужна девочка.", "Выбрать", "Назад");
	return 1;
}
Так, теперь разберемся как попасть в бордель..
Создаем переменную.
PHP:
new pickupbordel[2];
Далее создаем пикапы в OnGameModeInit.
PHP:
pickupbordel[0] = CreatePickup(1318, 23, 2070.6270,-1793.8417,13.5469);
pickupbordel[1] = CreatePickup(1318, 23, 1204.7283,-13.8523,1000.9219, 2);
Далее в OnPlayerPickUpPickup
PHP:
	else if(pickupid == pickupbordel[0])
	{
		SetPlayerInterior(playerid,2);
        SetPlayerVirtualWorld(playerid, 0);
		SetPlayerPos(playerid,1204.7283,-13.8523,1000.9219);
		return 1;
	}
	else if(pickupid == pickupbordel[1])
	{
		SetPlayerInterior(playerid,0);
		SetPlayerVirtualWorld(playerid, 0);
		SetPlayerPos(playerid,2070.6270,-1793.8417,13.5469);
		return 1;
	}
Сбив анимки у актёра в конец мода добавьте это:
PHP:
forward AnimClearActor(actorka);
public AnimClearActor(actorka) return ApplyActorAnimation(actorka,"CARRY","crry_prtial",4.0,0,0,0,0,1);
Теперь перейдем к SetActorChatBubble
Ко всем new
PHP:
enum actor_info
{
    Text3D:ActorsText,
    aTimer
}
new
     Actor[1], ActorInfo[100][actor_info]
;
Далее
PHP:
stock SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime)
{
    new Float:aPos[3];
    GetActorPos(actorid, aPos[0],aPos[1],aPos[2]);
    Delete3DTextLabel(ActorInfo[actorid][ActorsText]), KillTimer(ActorInfo[actorid][aTimer]);
    ActorInfo[actorid][ActorsText] = Create3DTextLabel(text, color, aPos[0],aPos[1],aPos[2]+1.1, drawdistance, 0);
    ActorInfo[actorid][aTimer] = SetTimerEx("ClearActorChatBubble", expiretime * 1000, false, "d", actorid);
}
forward ClearActorChatBubble(actorid);
public ClearActorChatBubble(actorid) Delete3DTextLabel(ActorInfo[actorid][ActorsText]), KillTimer(ActorInfo[actorid][aTimer]);
Функция ProxDetectorS
PHP:
stock ProxDetectorS(Float:radi, playerid, targetid)
{
	if(IsPlayerConnected(playerid) && IsPlayerConnected(targetid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		GetPlayerPos(targetid, posx, posy, posz);
		tempposx = (oldposx -posx);
		tempposy = (oldposy -posy);
		tempposz = (oldposz -posz);
		if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) return 1;
	}
	return 0;
}
Потом добавляем в бд pWhore, pAmountSex, pDisease

Ну вот и все, о коде не задумывался так как писал для паблика и только что. Удачи всем!!
Будут проблемы пишите в коменты, помогу.​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу