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



Не найдено.

12 posts in this topic

Не имею понятия как написать команду /find, помогите пожалуйста..
дравствуйте всем! Помогите , пожалуйста, написать команду /find для мода..
Вот тут все что надо: 
 

Спойлер

enum pInfo
{
pID,
/*pGigiena,
pTualet,
pZhazhda,
pHYGIENE,*/
aKey,
pHouse,
pPassword[32],
pSecurityCode,
pCheckCode,
pInputCode,
pMail[64],
pMailConfirmed,
pIP[16],
pLastIP[16],
pRegIP[16],
pRegData[15],
pVhData[15],
pLevel,
pMemberWarn,
pCash,
pFines,
pSumm_All_Fines,
pBanya,
pBank,
pAdmin,
pModel,
pMemberSkin,
pSex,
pAge,
pExp,
pMuted,
pGovMute,
pWarn,
pGuncheater,
pCarWarn,
pLics[16],
pLic[4],
pGun[13],
pAmmo[13],
pGunSkill[8],
pSkill[8],
pLeader,
pTempLeader,
pRank,
pVoennik,
pMember,
pPick,
pCheckTime,
pNews,
Float:cX[2],
Float:cY[2],
Float:cZ[2],
Float:cA[2],
Float: POS_X,
Float: POS_Y,
Float: POS_Z,
pP_USE_ANIM_TYPE,
Float: POS_A,
POS_WORLD,
POS_INT,
pPhoneBalance,
pPhoneNumber,
pText[4],
pTexts[20],
pJail,
pJailTime,
pOffWarns,
pfWarn,
pAWARN,
pOffWarnsReason,
pRECIPE_9MM,
pRECIPE_SDPISTOL,
pRECIPE_DEAGLE,
pRECIPE_TEK9,
pRECIPE_UZY,
pRECIPE_MP5,
pRECIPE_SHOTGUN,
pRECIPE_BLEED,
pRECIPE_COMBAT_SHOTGUN,
pRECIPE_AK47,
pRECIPE_M4,
pRECIPE_COUNTRY_RIFLE,
pRECIPE_SNIPER_RIFLE,
pRECIPE_SMOKE_GRENADE,
pRECIPE_COCTAIL_MOLOTOV,
pRECIPE_GRENADE,
pOffWarnsAdm,
pWanted,
pWantedTime,
pWantedWho[MAX_PLAYER_NAME],
pWantedReason[32],
pChar[6],
Float:pHeal,
pDrugs,
pCBAN,
pCJAIL,
pCKICK,
pCMUTE,
pCSLAP,
pCREPORT,
pCVEH,
pMWarn,
pPatron,
pGunAmount,
pCrimes,
pJob,
pColor,
pMarried,
pWhoMarried[MAX_PLAYER_NAME],
pReferal[MAX_PLAYER_NAME],
pRefMoney,
pPayCheck,
pAntiDm,
pVip,
WORK,
pVipTime,
pTime,
pBusTime,
pFightStyle,
pCredits,
pTotalCredits,
pSkin[3],
pSpawnChange,
pHunger,
Float:pHealthS,
pSportExp,
pOnline,
pZakon,
pCity,
pRepcars[16],
pRepcar[2],
pImproves[32],
pImprove[4],
pBed,
pWatch,
pCiggare,
pSprunk,
pCHIPS,
pRepairCar,
pAptechka,
pMusic,
pMask,
pTruckSkill,
pTaxiSkill,
pWorkSalary,
SKILL_SD_PISTOL,
SKILL_DEAGLE,
SKILL_SHOTGUN,
SKILL_MP5,
SKILL_AK47,
SKILL_M4,
// ??????
aCarid,
cModel[2],
cClass[2],
cFuel[2],
cColor[2],
cColor1[2],
cLock[2],
cCost[2],
cVehcoms[14],
cVehcom[64],
cVehcom1[64],
cVehcoms1[14],
cVirtual[2],
cPaintjob[2],
Float:cProbeg,
pVehicleKey[2],
//------------
SalonCarID,
GruzCarID,
TruckerCarID,
TaxiCarID,
BusCarID,
MechanicCarID,
PlayerCarID[2],
//-------------
Float:pPos[3],
pCharity,
pName[MAX_PLAYER_NAME],
pSendername[MAX_PLAYER_NAME],
pSettings,
pNumberVehicle[30],
pNumberVehicle1[64],
pRegVehicle,
pCarA,
pCarB,
pCarC,
pCarD,
ACCheck,
Spectating[2],
PlayerText:SpecTxt,
pAFK,
Float:PosX,
Float:PosY,
Float:PosZ,
pInt,
pWorld,
pTruckLevel,
P_IN_ENTRANCE,
P_IN_ROOM,
P_ENTRANCE,
P_ROOM
/*pFamily,
pFamilySozd,
pFamilyZam*/
}; 

 


заранее спасибо 

Edited by DEST

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

Большое количество кода нужно брать под спойлер и тег "Код", подробнее см. тут.

Share this post


Link to post
Share on other sites
CMD:find(playerid, params[]) 
{
	// код команды... 
  	return 1; 
}

В принципе, готово. 

Share this post


Link to post
Share on other sites
12 часов назад, DEST сказал:

CMD:find(playerid, params[]) 
{
	// код команды... 
  	return 1; 
}

В принципе, готово. 

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

Share this post


Link to post
Share on other sites

@Skidson

Спойлер

CMD:find(playerid, params[]) {
	new targetid;
	if (sscanf(params, "u", targetid))
		return SendClientMessage(playerid, -1, "Используйте /find [ID игрока]") & 0;
	if (targetid == INVALID_PLAYER_ID)
		return SendClientMessage(playerid, -1, "Игрок с указанным ID/именем не найден на сервере") & 0;
	
	new Float:x, Float:y, Float:z;
	GetPlayerPos(targetid, x, y, z);
	SetPlayerCheckpoint(playerid, x, y, z, 5.0);
	SendClientMessage(playerid, -1, "Игрок отмечен на карте");
	return 1;
}

 

 

Share this post


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

@Skidson


CMD:find(playerid, params[]) {
	new targetid;
	if (sscanf(params, "u", targetid))
		return SendClientMessage(playerid, -1, "Используйте /find [ID игрока]") & 0;
	if (targetid == INVALID_PLAYER_ID)
		return SendClientMessage(playerid, -1, "Игрок с указанным ID/именем не найден на сервере") & 0;
	
	new Float:x, Float:y, Float:z;
	GetPlayerPos(targetid, x, y, z);
	SetPlayerCheckpoint(playerid, x, y, z, 5.0);
	SendClientMessage(playerid, -1, "Игрок отмечен на карте");
	return 1;
}

 

/find организации , я имел ввиду

Share this post


Link to post
Share on other sites

@Skidson,

Спойлер

enum e_FRACTION_POSITIONS {
	name[32],
	Float:posX,
	Float:posY,
	Float:posZ
}; 

new Float:fractionPositions[][] = {
	{"Организация №1", 0.0, 0.0, 0.0}, // название, координаты (позиция)
	{"Организация №2", 0.0, 0.0, 0.0},
	// и так сколько требуется
}
const MAX_FRACTIONS = sizeof fractionPositions;
const DLG_FRACTION_POSITION = 13589; // если это число уже есть в моде, замените каким-нибудь другим

CMD:find(playerid, params[]) {
	new string[MAX_FRACTIONS*40];
	for (new i = 0; i < MAX_FRACTIONS; i++) {
		format(string, sizeof string, "%s%d. %s\n", string, i+1, fractionPositions[i][name]); 
	}
	
	ShowPlayerDialog(playerid, DLG_FRACTION_POSITION, DIALOG_STYLE_LIST, "Выберите организацию", string, "Выбрать", "Закрыть");
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
	switch (dialogid) {
		case DLG_FRACTION_POSITION: {
			if (!response) return 1;
			SetPlayerCheckpoint(playerid, fractionPositions[listitem][posX], fractionPositions[listitem][posY], fractionPositions[listitem][posZ]);
			SendClientMessage(playerid, -1, "Выбранная вами организация отмечена на карте");
			return 1;
		}
	}
	
	return 0;
}

 

 

Share this post


Link to post
Share on other sites

@odosenok все фигня, миша, давай по новой!) 

Он скорее всего имел ввиду /find список членов организации, поэтому мое решение все-таки более универсальное :draznilka:

@Skidson прежде чем задавать вопрос, нужно четко обозначить цель - результат того, что должно получится 

Share this post


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

@odosenok все фигня, миша, давай по новой!) 

Он скорее всего имел ввиду /find список членов организации, поэтому мое решение все-таки более универсальное :draznilka:

@Skidson прежде чем задавать вопрос, нужно четко обозначить цель - результат того, что должно получится 

Извините, да я имел это ввиду, а так что на месте "код" надо вставить?

Share this post


Link to post
Share on other sites

Извините у меня такой код

CMD:find(playerid)
{
	if(PI[playerid][pMember] == 0) return SendClientMessage(playerid, COLOR_RED, "Вам недоступна данная функция");
	new full, string[150], string_dialogue[2048], text[20];
    strcat(string_dialogue, "{FFCC00}ID\tУровень\tТелефон\tРанг\tИмя\n\n");
	foreach(new i: Player)
	{
		if(PlayerLogged[i] == false || PI[i][pAdmin]) continue;
		if(PI[i][pMember] == PI[playerid][pMember])
		{
		    if(PI[i][pPhoneNumber] <= 1) format(text, sizeof(text), "None\t\t");
			else format(text, sizeof(text), "%i\t\t", PI[i][pPhoneNumber]);
		    format(string, sizeof(string),"{FFFFFF}%i\t%i\t\t%s%i\t%s\n", i, PI[i][pLevel], text, PI[i][pRank], GetName(i));
			strcat(string_dialogue, string);
			full++;
		}
	}
	ShowPlayerDialog(playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{FFCC00}Члены организации онлайн", string_dialogue, "Çàêðûòü", "");
	return 1;
}

, но в игре выдает ошибку вот такую при /find ошибка /find *кликабельно*

Share this post


Link to post
Share on other sites

@Skidson не увидел я на скриншоте никакой ошибки, если Вы про то, что никто не отображается, то это из-за проверки 

28 минут назад, Skidson сказал:

if(PlayerLogged == false || PI[pAdmin]) continue;

в таблице не будут отображаться пользователи, которые не авторизовались или которые являются администраторами 

Share this post


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

@Skidson не увидел я на скриншоте никакой ошибки, если Вы про то, что никто не отображается, то это из-за проверки 

в таблице не будут отображаться пользователи, которые не авторизовались или которые являются администраторами 

хорошо спасибо а можно сделать так чтобы например я выдал себе лидерку фсб , но в /leaders меня не показывало? 

Share this post


Link to post
Share on other sites

@Skidson можно, для этого нужно добавить соответствующее условие в то место, где происходит перебор всех игроков, подобно тому, как сделано в команде /find 

if (PI[i][pAdmin]) continue;

Согласно правилам форума, для каждого нового вопроса создавайте новую тему в соответствующем разделе. 

В этой теме ответ был дан, поэтому она закрывается. 

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

    • youngblaste
      By youngblaste
      Привет. Не нужно писать что команда заезженная - просто выйди с темы.
      И так, постараюсь объяснить как всё работает в этой команде
      Погнали, хлопци!:
      CMD:makeadmin(playerid, params[]){ /* Здесь начинается наша команда */ if(p_info[playerid][pAdmin] < 7) /* Идёт проверка на админку, если наш уровень администратора ниже 7 то ничего не произойдёт (можно сменить на свой уровень) */ return true; /* возвращаем 1 - или же не на ельфийском, то просто ничего не пройзойдёт и команда не продолжит работу */ new name[MAX_PLAYER_NAME], player[MAX_PLAYER_NAME], targetid, admlvl, string[250]; /* Создаем переменные для команды (targetid - кому выдавать будем админку, admlvl - это какой лвл админки будем выдавать), string - ну это стринг :D */ if(sscanf(params, "ud", targetid, admlvl)) /* Делаем проверку на правильное написание команды */ return SendClientMessage(playerid, -1, "{84cd5c}[Подсказка] {ffffff} Используйте команду: /makeadmin [id игрока] [lvl админ-прав]"); /* Если мы ввели не верно команду, то нам возвращает сообщение в чат с подсказкой как ввести команду */ GetPlayerName(playerid, name, MAX_PLAYER_NAME); /* Тут мы получаем наш ник */ GetPlayerName(targetid, player, MAX_PLAYER_NAME); /* А тут мы получаем ник игрока которому выдаем админку */ if(!IsPlayerConnected(targetid)) /* Делаем проверку на то находится ли игрок на сервере, вообще у меня в команде здесь есть проверка на Авторизован ли игрок и она вместе с проверкой на есть ли такой игрок на сервере, но увы, я убрал потому что скорее всего не у всех есть такая фича, это не очень важно но если ты хоть немного шаришь то и сам добавишь проверку */ return SendClientMessage(playerid, -1, "{c23838}[Ошибка] {ffffff} Игрок ещё не вступил в игру"); /* Возвращаем сообщение о том что игрок ещё не вступил в игру - ну вообще должно быть "Игрока с таким ID нету на сервере", но если ты решишь добавить проверку на авторизацию то это будет немного лучше */ if(admlvl < 0 || admlvl > 6) /* Делаем проверку на какой лвл мы хотим поставить игрока, то есть мы не можем выдать лвл адм ниже 0 или выше 6, меняйте на своё если так нужно))) */ return SendClientMessage(playerid, -1, "{c23838}[Ошибка] {ffffff} Увы, нельзя выдавать меньше 0 или выше 6 уровня администратора"); /* Возвращаем сообщение о том что мы не можем выдавать меньше 0 или выше 6 лвл адм */ p_info[targetid][pAdmin] = admlvl; /* И так... p_info у вас может быть разное: PlayerInfo, pInfo, PI, PlayerInformation, p_Info, P_I и т.п., pAdmin так же может быть другим, хотя обычно такое, например: Admin, PlayerAdmin, Player_Admin, Adminka и т.п. */ format(string, sizeof(string), "{b33d3d}{A} Администратор %s[%d] назначил администратором игрока %s[%d]", name, playerid, player, targetid); /* И так, тут мы форматируем string и после отпрам в админ чат))) */ AdmChat(-1, string); /* Ниже вы увидите сток с AdmChat, крч просто отправляем в адм чат */ format(string, sizeof(string), "{ffffff}Администратор %s[%d] назначил Вас администратором %d-го уровня.", name, playerid, admlvl); /* Форматируем опять стринг и потом игроку отправим */ SendClientMessage(targetid, -1, string); /* Устал описовать команду, ну да ладно... Теперь отправляем игроку string */ return true; /* Возвращаем 1, чтобы небыло еррора))) */ } /* Здесь заканчивается наша команда */ /* vk.com/youngblaste - люbлю сkpuптuнг */ А теперь сток AdmChat, добавьте возле своих стоков ну или под командой:
      stock AdmChat(color, const text[]) /* тут не буду много объяснять */ { foreach(new i: Player) if(p_info[i][pAdmin] > 0) SendClientMessage(i, color, text); /* Обычно используют для админ чата... Ну и как всегда... p_info у вас может быть разное: PlayerInfo, pInfo, PI, PlayerInformation, p_Info, P_I и т.п., pAdmin так же может быть другим, хотя обычно такое, например: Admin, PlayerAdmin, Player_Admin, Adminka и т.п. */ } Если Вы заметили какую-то ошибку, пожалуйста отпишите. Надеюсь Вам понравился этот мини-урок, ну а точнее команда /makeadmin.
      Удачи, юные скриптеры