Question

Всем привет!

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

Share this post


Link to post

12 answers to this question

  • 0
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
  • 0

upd:

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

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

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

 

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

Edited by legendabrn

Share this post


Link to post
  • 0

@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
  • 0

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

Share this post


Link to post
  • 0

@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
  • 0
39 минут назад, Nicholson Scaletta сказал:

PI[4][pMember]

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

Share this post


Link to post
  • 0
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
  • 0

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

Edited by Senya Kolymbijskij

Share this post


Link to post
  • 0

 

@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
  • 0

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

Edited by Senya Kolymbijskij

Share this post


Link to post
  • 0
4 минуты назад, Senya Kolymbijskij сказал:

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

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

Share this post


Link to post
  • 0

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
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

    • про Cadillac
      By про Cadillac
      Кто может помочь с проблемой? Не могу найти где и как поменять цену и название на авто в салоне. В pwn лазил, нету кода на цену авто.там стоят цены самповских машин, я их менял но в игре цены не менялись. Лазил в handling.cfg, там также не работает.