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



Не найдено.

13 posts in this topic

Всем привет!

Как сделать команду /sos? При вводе команды игрок(который ее написал) отмечается у всех сотрудников полиции на карте. Допустим, игрок находится в г.Южном на координатах 2550.0535,-2188.1401,21.9676, вводит команду /sos и он отображается у всех сотрудников на карте ( как в /gps ), минут через 10 эта метка пропадает

Share this post


Link to post
Share on other sites
new timer_sos_id[MAX_PLAYERS] = 0;

forward TimerSOS(playerid,iconid);  
public TimerSOS(playerid,iconid)
{
	RemovePlayerMapIcon(playerid, iconid);
}  
cmd:sos(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new iconid = 1000+playerid;
	for(new id; id <= GetPlayerPoolSize(); id++)
	{
		if(PlayerInfo[id][pMember] == 1) continue; // тут замени на свои переменные и айди фракции
		SetPlayerMapIcon(playerid, iconid, x, y, z, 52, 0, MAPICON_GLOBAL);
		timer_sos_id[id] = SetTimerEx("TimerSOS", 600000, 0, "dd", id, iconid);  
	}
    SendClientMessage(playerid, -1, "метка поставлена");
	return true;
}

public OnPlayerDisconnect(playerid, reason)
{
	//cod
	if(timer_sos_id[playerid])
	{
		KillTimer(timer_sos_id[playerid]); 
	}
}

 

Edited by legendabrn

Share this post


Link to post
Share on other sites

upd:

по моему мнению, вместо иконки на карте, лучше использовать чекпоинт, ибо в сампе лимит айди меток 99

в моем коде выше ошибка в переменной iconid, я не учел лимиты сампа, так что тебе нужно заменить iconid на не занятый айди иконки

если будут использовать два игрока команду /sos, то когда закончится таймер у полиции первого игрока, удалится иконка с местом нахождения и первого, и второго

 

ты можешь сделать лимиты, что всего 5 раз можно вызывать, когда таймер закончится, отнимай лимит на одно значение

Edited by legendabrn

Share this post


Link to post
Share on other sites

@legendabrn Ошибки :(

error 017: undefined symbol "GetPlayerPoolSize"
error 029: invalid expression, assumed zero
error 017: undefined symbol "GetPlayerPoolSize"
error 029: invalid expression, assumed zero
warning 215: expression has no effect
error 017: undefined symbol "GetPlayerPoolSize"

 

Share this post


Link to post
Share on other sites

@Nicholson Scaletta этой функции нет в 0.3e версии, замените либо на константу MAX_PLAYERS, либо на итератор для игроков. 

Share this post


Link to post
Share on other sites

@DEST , @legendabrn, Ошибок нет, но чет не пашет хах. В игре пишет тип метка поставлена, но я ее не вижу. Может я что-то не так сделал?

cmd:sos(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new iconid = 1000+playerid;
	for(new id; id <= MAX_PLAYERS; id++)
	{
		if(PI[4][pMember] == 1) continue; // тут замени на свои переменные и айди фракции
		SetPlayerMapIcon(playerid, iconid, x, y, z, 52, 0, MAPICON_GLOBAL);
		timer_sos_id[4] = SetTimerEx("TimerSOS", 600000, 0, "dd", id, iconid);
	}
    SendClientMessage(playerid, -1, "метка поставлена");
	return true;
}

 

ID фракции - 4

Edited by Nicholson Scaletta

Share this post


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

PI[4][pMember]

вы заменили id, который пробегал в цикле по всем игрокам на 4, из-за чего и не работает. 

Share this post


Link to post
Share on other sites
7 часов назад, Nicholson Scaletta сказал:

@DEST , @legendabrn, Ошибок нет, но чет не пашет хах. В игре пишет тип метка поставлена, но я ее не вижу. Может я что-то не так сделал?


cmd:sos(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new iconid = 1000+playerid;
	for(new id; id <= MAX_PLAYERS; id++)
	{
		if(PI[4][pMember] == 1) continue; // тут замени на свои переменные и айди фракции
		SetPlayerMapIcon(playerid, iconid, x, y, z, 52, 0, MAPICON_GLOBAL);
		timer_sos_id[4] = SetTimerEx("TimerSOS", 600000, 0, "dd", id, iconid);
	}
    SendClientMessage(playerid, -1, "метка поставлена");
	return true;
}

 

ID фракции - 4

cmd:sos(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new iconid = random(50)+10;
	for(new id; id <= MAX_PLAYERS; id++)
	{
		if(PI[id][pMember] == 4) continue; // тут замени на свои переменные и айди фракции
		SetPlayerMapIcon(playerid, iconid, x, y, z, 52, 0, MAPICON_GLOBAL);
		timer_sos_id[4] = SetTimerEx("TimerSOS", 600000, 0, "dd", id, iconid);
	}
    SendClientMessage(playerid, -1, "метка поставлена");
	return true;
}

плюсом у вас не будет метки, iconid превышал лимиты сампа

Share this post


Link to post
Share on other sites

@legendabrn Данный код всавлять куда?,если мод самповский

Edited by Senya Kolymbijskij

Share this post


Link to post
Share on other sites

 

@Senya Kolymbijskij 

Ко всем "new"

new timer_sos_id[MAX_PLAYERS] = 0;

В OnPlayerDisconnect

	if(timer_sos_id[playerid])
	{
		KillTimer(timer_sos_id[playerid]); 
	}

Ко всем командам

cmd:sos(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new iconid = 1000+playerid;
	for(new id; id <= GetPlayerPoolSize(); id++)
	{
		if(PlayerInfo[id][pMember] == 1) continue; // тут замени на свои переменные и айди фракции
		SetPlayerMapIcon(playerid, iconid, x, y, z, 52, 0, MAPICON_GLOBAL);
		timer_sos_id[id] = SetTimerEx("TimerSOS", 600000, 0, "dd", id, iconid);  
	}
    SendClientMessage(playerid, -1, "метка поставлена");
	return true;
}

 

@legendabrn Спасибо большое. Возможно, я плохо объяснил, но нужна была просто круглая красная метка ( как в /gps )

Share this post


Link to post
Share on other sites

@Nicholson Scaletta а какие переменный и айди фракции типо какая она по щету,или типо тот айди который вводится при  /templeader?

Edited by Senya Kolymbijskij

Share this post


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

@Nicholson Scaletta а какие переменный и айди фракции типо какая она по щету,или типо тот айди который вводится при  /templeader?

Введи /templeader и посмотри ID фракции

Share this post


Link to post
Share on other sites

C:\gamemodes\new.pwn(21067) : warning 219: local variable "id" shadows a variable at a preceding level
C:\gamemodes\new.pwn(21067) : warning 213: tag mismatch: expected tag "_pinfo", but found none ("_")
C:\gamemodes\new.pwn(21067) : error 022: must be lvalue (non-constant)
C:\gamemodes\new.pwn(21069) : error 017: undefined symbol "PlayerInfo"
C:\gamemodes\new.pwn(21069) : warning 215: expression has no effect
C:\gamemodes\new.pwn(21069) : error 001: expected token: ";", but found "]"
C:\gamemodes\new.pwn(21069) : error 029: invalid expression, assumed zero
C:\gamemodes\new.pwn(21069) : fatal error 107: too many error messages on one line

такие ошибки

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

    • Романтик228
      By Романтик228
      можно играть как и в мобаил так и на пк.Есть охота, семейный отель, рейтинг семьи, крафты,бд идёт вместе с модом,фракции и банды все присутствует в моде. 
    • Романтик228
      By Романтик228


      Просмотр файла Мод samp
      можно играть как и в мобаил так и на пк.Есть охота, семейный отель, рейтинг семьи, крафты,бд идёт вместе с модом,фракции и банды все присутствует в моде. 
      Добавил Романтик228 Добавлено 20.10.2021 Категория Моды Автор Roman  
    • danko
      By danko
      Выдает вот такую ошибку и всё по нулям, базу нормально установил