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



Не найдено.

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