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



8 posts in this topic

Добрый день помогите пожалуйста исправить вот этот код уже всю голову сломал так как в этом не силен у меня система бани когда игрок заходит в радиус определенных координат у него должна срабатывать проверка на абонемент и только тогда если он имеется должна начисляться гигиена и после достижения гигиены равную 100 абонемент должен быть использован т.е. равен 0 и вследующий раз его нужно будет бреобретать снова.В этом коде который я привел ниже сообщения в чат о том что нет абонемента вылетают со скоростью 2 сообщения в секунду и гигиена начисляется дальше даже после достигнутой отметки 100

 

        if (IsPlayerInRangeOfPoint(i, 3.5, 2496.9109,-619.2087,919.0159))
        {
        if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
                {
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
                }
        PlayerInfo[i][pHealTime] ++;
        if(PlayerInfo[i][pHealTime] >= (1+random(1)))
                {
                    GameTextForPlayer(i, "+1 XЈ", 0, 1);
                    PlayerInfo[i][pGigiena] += 1;
                }
        if(PlayerInfo[i][pGigiena] == 100)
                {
                    PlayerInfo[i][pGigiena] = 100;
                    PlayerInfo[i][pBanya] = 0;// здесь абонемент должен пропадать
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}Вы помылись и можете идти!");
                }
          PlayerInfo[i][pHealTime] = 0;// да и когда прописал вот этот код гигиена вообще перестала начисляться 
        }

 

Share this post


Link to post
Share on other sites

Вот это

 if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
                {
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
                }

замените на

if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
{
	SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
  	return 1; 
}

 

Share this post


Link to post
Share on other sites
19 минут назад, DEST сказал:

Вот это


 if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
                {
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
                }

замените на


if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
{
	SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
  	return 1; 
}

 

щас испытаем

19 минут назад, DEST сказал:

Вот это


 if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
                {
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
                }

замените на


if(PlayerInfo[i][pBanya] == 0)//проверка на абонемент
{
	SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
  	return 1; 
}

 

теперь получается варнинг 

E:\СЕРВЕРА\локальный сервер\gamemodes\mrpv1.pwn(14281) : warning 209: function "PlayerTimer" should return a value
Pawn compiler 3.10.8	 	 	Copyright (c) 1997-2006, ITB CompuPhase

Header size:          19796 bytes
Code size:          7092096 bytes
Data size:          7720504 bytes
Stack/heap size:      16384 bytes; estimated max. usage=7265 cells (29060 bytes)
Total requirements:14848780 bytes

1 Warning.

в этой строке

PlayerInfo[i][pGigiena] += 1;

 

Edited by Андрей Лазарев

Share this post


Link to post
Share on other sites

так то теперь все работает только выводится много сообщений о том что нет абонемента и когда достигает 100 гигиены сообщения снова идут что нет абонемента Как можно это остановить Помогите пожалуйста

Share this post


Link to post
Share on other sites

@Андрей Лазарев Перестаньте оставлять одно сообщение за другим. Оставили одно и ожидайте ответа. 

По поводу проблемы, то необходимо после сообщения "У вас нет абонемента" сделать телепорт игрока из этих координат (2496.9109,-619.2087,919.0159) чтобы код системы гигиены не срабатывал. 

Share this post


Link to post
Share on other sites

А без телепорта никак нельзя ? Да и тема ваша конечно интересна но вот как ее только сделать .

 

спасибо все решил тему можно закрывать

Заметка от Jawn , создано

Объединил сообщения.

Share this post


Link to post
Share on other sites

@Андрей Лазарев Если вы нашли решение самостоятельно, выложите его сюда и пометьте свое сообщение как лучший ответ с помощью галочки сбоку ответа. 

Share this post


Link to post
Share on other sites
        if (IsPlayerInRangeOfPoint(i, 3.0, 2496.9109,-619.2087,919.0159))
        {
        if(PlayerInfo[pBanya] == 0)//проверка на абонемент!
        {
            SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}У вас нет Абонемента!");
            SetPlayerPos(i, 2483.1326, -620.0078, 918.6975);
        }
        PlayerInfo[pGigienaTime] ++;
        if(PlayerInfo[pGigienaTime] >= (5))
        if(PlayerInfo[pBanya] == 1)//проверка на абонемент
                {
                    GameTextForPlayer(i, "+1 XЈ", 0, 1);
                    PlayerInfo[pGigiena] += 1;
                }

        if(PlayerInfo[pGigiena] == 100)
                {
                    PlayerInfo[pGigiena] = 100;
                    PlayerInfo[pBanya] = 0;// здесь абонемент должен пропадать
                    SendClientMessage(i,COLOR_LIGHTBLUE,"[INFO] {FFFFFF}Вы помылись и можете идти!");
                    SetPlayerPos(i, 2483.1326, -620.0078, 918.6975);
                }
        PlayerInfo[pHealTime] = 0;
        }

 

Edited by odosenok

Заметка от Jawn , создано

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Vadim Grineev
      By Vadim Grineev
      пишу /park в чате выдаёт авто припарковано когда пытаюсь заново загрузить оно припарковано возле автосалона как и после покупки
      Вот код:
      CMD:park(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в транспорте"); new vehicleid; if(GetPlayerOwnableCar(playerid) != GetPlayerVehicleID(playerid) && GetPlayerOwnablCar(playerid) != GetPlayerVehicleID(playerid)) return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в личном транспорте"); else { vehicleid = GetPlayerVehicleID(playerid); } new green_zone_id = GetPVarInt(playerid, "player_in_green_zone") - 1; if(green_zone_id != -1) { if(!g_green_zones[green_zone_id][GZ_ALLOW_PARK]) { new fmt_text[144]; format(fmt_text, sizeof fmt_text, "На территории {FFFF00}'%s' {3399FF}парковка личного транспорта запрещена. Выберите другое место для парковки", g_green_zones[green_zone_id][GZ_NAME]); SendClientMessage(playerid, 0x3399FFFF, fmt_text); return 1; } } new query[912]; new index = GetVehicleData(vehicleid, V_ACTION_ID); new Float: x, Float: y, Float: z, Float: angle; GetVehiclePos(vehicleid, x, y, z); GetVehicleZAngle(vehicleid, angle); format(query, sizeof query, "UPDATE ownable_cars SET pos_x=%f,pos_y=%f,pos_z=%f,angle=%f WHERE id=%d LIMIT 1", x, y, z, angle, GetOwnableCarData(index, OC_SQL_ID)); mysql_tquery(mysql, query, "", ""); GetVehiclePos(vehicleid, GetOwnableCarData(index, OC_POS_X), GetOwnableCarData(index, OC_POS_Y), GetOwnableCarData(index, OC_POS_Z)); GetVehicleZAngle(vehicleid, GetOwnableCarData(index, OC_ANGLE)); SaveOwnableCar(vehicleid); return SendClientMessage(playerid, 0x66CC00FF, "Транспорт припаркован"); }  
    • Guik
      By Guik
      Всем привет! Сегодня я столкнулся с проблемой выдачи rcon администратора. Я играю с телефона и не знаю как это делать. Помогите пожалуйста!!!
      Если что мод "SAMP MOBILE".